. namespace core_ai\cache; use cache_definition; /** * Cache class for AI policy. * * @package core_ai * @copyright 2024 Matt Porritt * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class policy implements \cache_data_source { /** @var policy|null the singleton instance of this class. */ protected static ?policy $instance = null; #[\Override] public static function get_instance_for_cache(cache_definition $definition): policy { if (is_null(self::$instance)) { self::$instance = new self(); } return self::$instance; } #[\Override] public function load_for_cache($key) { global $DB; return $DB->record_exists('ai_policy_register', ['userid' => $key]); } #[\Override] public function load_many_for_cache(array $keys): array { global $DB; $return = []; [$insql, $inparams] = $DB->get_in_or_equal($keys); $sql = "SELECT userid FROM {ai_policy_register} WHERE userid " . $insql; $results = $DB->get_fieldset_sql($sql, $inparams); foreach ($keys as $key) { $return[$key] = in_array($key, $results); } return $return; } }