ynorth-projects / openy_pef_gxp_sync
同步Groupex排程到PEF。
Requires
- drupal/core: >=10.0.0
- ycloudyusa/yusaopeny: *
This package is auto-updated.
Last update: 2024-08-30 01:14:48 UTC
README
同步GroupEx排程到PEF。
快速开始
启用模块
- 以管理员身份登录
- 转到扩展(
/admin/modules
) - 安装
OpenY PEF GXP Sync
和Open Y Mappings Feature
,然后按照下一步的要求启用所有依赖项。
配置OpenY GXP模块
-
转到:Open Y -> 集成 -> GroupEx Pro -> GroupEx Pro设置(
/admin/openy/integrations/groupex-pro/gxp
)。 -
设置您的GroupExPro客户端ID(您可以从GroupEx PRO支持中获取)。
-
提供父活动ID。它应在“健身”下的“Group Exercises”中列出。
-
输入活动
Group Exercise Classes
(从自动完成中选择类型为活动的节点)。如果这是默认演示内容,则ID可能为94。 -
按照以下格式输入位置映射
202,West YMCA 204,Downtown YMCA 203,East YMCA 3718,South YMCA
-
保存配置。
-
转到:配置 -> 系统 -> YMCA同步设置(
/admin/config/system/ymca-sync
) -
启用名为
openy_pef_gxp_sync
的复选框并保存。应在您的系统中启用openy_pef_gxp_sync
模块。 -
转到:Open Y -> 设置 -> 映射 -> 映射列表(
/admin/openy/settings/mappings/mapping
) -
为要同步的每个分支机构添加映射
- 输入映射名称,以便在将来轻松识别。例如,
West YMCA GXP同步映射
。 - 作者 - 保持不变
- 位置 - 选择分支机构
- GroupEx ID - 输入分支的GroupEx ID
- 保存
- 输入映射名称,以便在将来轻松识别。例如,
-
转到
admin/openy/settings/groupex-enabled-locations
并启用您想要同步的位置。 -
运行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命令。
同步器的工作原理
同步器包括以下步骤
- 获取器 - 从GroupEx API获取数据。
- 包装器 - 处理数据以保存(映射位置ID,修复标题编码问题等)。
- 包装器 - 按类别ID和位置ID分组所有项目,计算哈希值。
- 包装器 - 准备要删除的数据(数据库中的额外项或更改的哈希值)。
- 包装器 - 准备要创建的数据(新项目+更改的哈希值)。
- 清理器 - 删除要删除的数据。
- 保存器 - 创建要创建的数据。
同步器的工作原理(针对开发者)
添加和删除位置
- 如果API中删除了位置,则应在数据库中删除。
- 如果API中添加了位置,则应在数据库中添加(带有类别)。
- 如果API中删除了类别,则应在数据库中删除(带有所有类别项);
- 如果API中添加了类别,则应在数据库中添加(带有所有类别项);
更新类别
- 每个GroupEx类别可以有多个类别项(具有相同的类别ID)。
- 我们比较未处理数据中的位置ID + 类别ID + 所有类别项的哈希值。
- 如果哈希值发生变化,我们应该删除属于该哈希的所有项并重新创建。
如何调试
- 要模拟API数据,请使用
FetcherDebuggerClass
。只需将@openy_pef_gxp_sync.fetcher
替换为@openy_pef_gxp_sync.fetcher_debugger
以模拟API响应。 - 在类中使用
DEBUG_MODE
常量来调试特定服务。
同步中的已知问题。
- 如果一个类在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数组。