ynorth-projects/openy_pef_gxp_sync

同步Groupex排程到PEF。

1.1.6 2024-01-22 10:32 UTC

README

同步GroupEx排程到PEF。

快速开始

启用模块

  1. 以管理员身份登录
  2. 转到扩展(/admin/modules
  3. 安装OpenY PEF GXP SyncOpen Y Mappings Feature,然后按照下一步的要求启用所有依赖项。

配置OpenY GXP模块

  1. 转到:Open Y -> 集成 -> GroupEx Pro -> GroupEx Pro设置(/admin/openy/integrations/groupex-pro/gxp)。

  2. 设置您的GroupExPro客户端ID(您可以从GroupEx PRO支持中获取)。

  3. 提供父活动ID。它应在“健身”下的“Group Exercises”中列出。

  4. 输入活动Group Exercise Classes(从自动完成中选择类型为活动的节点)。如果这是默认演示内容,则ID可能为94。

  5. 按照以下格式输入位置映射

    202,West YMCA
    204,Downtown YMCA
    203,East YMCA
    3718,South YMCA
    
  6. 保存配置。

  7. 转到:配置 -> 系统 -> YMCA同步设置(/admin/config/system/ymca-sync

  8. 启用名为openy_pef_gxp_sync的复选框并保存。应在您的系统中启用openy_pef_gxp_sync模块。

  9. 转到:Open Y -> 设置 -> 映射 -> 映射列表(/admin/openy/settings/mappings/mapping

  10. 为要同步的每个分支机构添加映射

    • 输入映射名称,以便在将来轻松识别。例如,West YMCA GXP同步映射
    • 作者 - 保持不变
    • 位置 - 选择分支机构
    • GroupEx ID - 输入分支的GroupEx ID
    • 保存
  11. 转到admin/openy/settings/groupex-enabled-locations并启用您想要同步的位置。

  12. 运行Drush命令从您的项目docroot同步

    • drush openy-pef-gxp-sync(Drupal 8,Drush 8)
    • drush yn-sync openy_pef_gxp_sync.syncer(Drupal 9,Drush 10)

如何将我的GroupEx数据同步到我的项目中?

请参阅上面的最后一步以获取正确的Drush命令。

同步器的工作原理

同步器包括以下步骤

  1. 获取器 - 从GroupEx API获取数据。
  2. 包装器 - 处理数据以保存(映射位置ID,修复标题编码问题等)。
  3. 包装器 - 按类别ID和位置ID分组所有项目,计算哈希值。
  4. 包装器 - 准备要删除的数据(数据库中的额外项或更改的哈希值)。
  5. 包装器 - 准备要创建的数据(新项目+更改的哈希值)。
  6. 清理器 - 删除要删除的数据。
  7. 保存器 - 创建要创建的数据。

同步器的工作原理(针对开发者)

添加和删除位置

  1. 如果API中删除了位置,则应在数据库中删除。
  2. 如果API中添加了位置,则应在数据库中添加(带有类别)。
  3. 如果API中删除了类别,则应在数据库中删除(带有所有类别项);
  4. 如果API中添加了类别,则应在数据库中添加(带有所有类别项);

更新类别

  1. 每个GroupEx类别可以有多个类别项(具有相同的类别ID)。
  2. 我们比较未处理数据中的位置ID + 类别ID + 所有类别项的哈希值。
  3. 如果哈希值发生变化,我们应该删除属于该哈希的所有项并重新创建。

如何调试

  1. 要模拟API数据,请使用FetcherDebuggerClass。只需将@openy_pef_gxp_sync.fetcher替换为@openy_pef_gxp_sync.fetcher_debugger以模拟API响应。
  2. 在类中使用DEBUG_MODE常量来调试特定服务。

同步中的已知问题。

  1. 如果一个类在GroupEx组中的类别设置为“通用”,则会存在问题 - 它将不会同步并在PEF中显示。这是GroupEX PRO API的限制。

默认同步器行为

默认情况下,同步器创建未发布的会话节点。为了让它们在日程安排应用程序中可见,您需要设置配置变量以允许未发布实体显示。

  • 配置openy_repeat.settings - 变量allow_unpublished_references: 1 - 这适用于未发布的会话、项目、项目子类别会话节点。
  • 配置openy_session_instance.settings - 变量allow_unpublished_references: 1 - 这仅适用于未发布的会话节点。

如果您想切换到发布模式,请运行以下命令。

 drush cset openy_repeat.settings allow_unpublished_references 1 -y
 drush cset openy_session_instance.settings allow_unpublished_references 1 -y

如果您想切换到未发布模式,请运行以下命令。

 drush cset openy_repeat.settings allow_unpublished_references 0 -y
 drush cset openy_session_instance.settings allow_unpublished_references 0 -y

您需要清除缓存才能使此设置生效。目前我们还没有设置这些变量的UI,因此建议使用drush cset或通过配置管理器导入配置。

启用的Groupex位置

使用配置openy_pef_gxp_sync.enabled_locations允许从GroupEx PRO同步位置。

此配置包含来自GroupEx的位置ID数组。