AutorÃa | Ultima modificación | Ver Log |
<?php// This file is part of Moodle - http://moodle.org///// Moodle is free software: you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation, either version 3 of the License, or// (at your option) any later version.//// Moodle is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.//// You should have received a copy of the GNU General Public License// along with Moodle. If not, see <http://www.gnu.org/licenses/>.namespace core_ai\reportbuilder\local\systemreports;use core_reportbuilder\system_report;use core_ai\reportbuilder\local\entities\ai_action_register;use core\reportbuilder\local\entities\context;use core_reportbuilder\local\entities\user;/*** AI usage system report.** @package core_ai* @copyright 2024 David Woloszyn <david.woloszyn@moodle.com>* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/class usage extends system_report {#[\Override]protected function initialise(): void {$entitymain = new ai_action_register();$entitymainalias = $entitymain->get_table_alias('ai_action_register');$this->set_main_table('ai_action_register', $entitymainalias);$this->add_entity($entitymain);// Join the 'user' entity to our main entity.$entityuser = new user();$entituseralias = $entityuser->get_table_alias('user');$this->add_entity($entityuser->add_join("LEFT JOIN {user} {$entituseralias} ON {$entituseralias}.id = {$entitymainalias}.userid"));// Join the 'context' entity to our main entity.$entitycontext = new context();$entitycontextalias = $entitycontext->get_table_alias('context');$this->add_entity($entitycontext->add_join("LEFT JOIN {context} {$entitycontextalias} ON {$entitycontextalias}.id = {$entitymainalias}.contextid"));// Now we can call our helper methods to add the content we want to include in the report.$this->add_columns();$this->add_filters();// Set if report can be downloaded.$this->set_downloadable(true, get_string('aiusage', 'core_ai'));}#[\Override]protected function can_view(): bool {return has_capability('moodle/ai:viewaiusagereport', $this->get_context());}#[\Override]public static function get_name(): string {return get_string('aiusage', 'core_ai');}/*** Adds the columns we want to display in the report.** They are all provided by the entities we previously added in the {@see initialise} method, referencing each by their* unique identifier.*/public function add_columns(): void {$this->add_columns_from_entities(['ai_action_register:provider','ai_action_register:actionname','ai_action_register:timecreated','ai_action_register:prompttokens','ai_action_register:completiontokens','ai_action_register:success','context:name','user:fullnamewithlink',]);// It's possible to set a default initial sort direction for one column.$this->set_initial_sort_column('ai_action_register:timecreated', SORT_DESC);}/*** Adds the filters we want to display in the report.** They are all provided by the entities we previously added in the {@see initialise} method, referencing each by their* unique identifier.*/protected function add_filters(): void {$this->add_filters_from_entities(['ai_action_register:actionname','ai_action_register:provider','ai_action_register:timecreated','ai_action_register:prompttokens','ai_action_register:completiontokens','ai_action_register:success','context:level','user:fullname',]);}}