Moodle 缓存用户配置文件字段是否用于 activity 限制?

Does Moodle cache User Profile Field for activity restriction?

我正在尝试根据用户个人资料字段限制对 Moodle 课程活动的访问。个人资料字段根据其他标准跟踪资格,例如他们是否填写了有关其业务的某些重要信息。

该字段是必填字段,已锁定并设置为默认值,尽管将其设置为未锁定没有任何区别。它使用 CSS 在用户配置文件和注册屏幕中隐藏(因为 Moodle 用户配置文件字段未显示在注册屏幕中,不会在用户创建时创建 mdl_user_info_data 行创建 - 但这是另一个问题)。当用户提交我创建的表单时,mdl_user_info_data 中的相关行会更新。这部分工作绝对正常,除了用户仍然需要注销并重新登录才能将更改滴入课程页面(即他们能够访问课程活动)。

当用户登录时,用户配置文件字段似乎正在缓存,并且没有更新。有谁知道这是不是这样?显而易见的后续问题是 - 我可以强制更新此缓存吗?如果可以,我将如何触发它?

我正在使用 Moodle 2.7.3。

数据缓存在$USER->profile 字段中的$USER 全局对象(它本身缓存在会话数据上)。您应该能够更新那里的值或调用一个函数来重新加载它(我不记得我脑海中的那个函数,但它会在 user/profile/lib.php 中)。