diff --git a/classes/form/rights_config_filter_form.php b/classes/form/rights_config_filter_form.php index 4920627..05164d1 100644 --- a/classes/form/rights_config_filter_form.php +++ b/classes/form/rights_config_filter_form.php @@ -27,15 +27,6 @@ namespace local_ai_manager\form; -use core_plugin_manager; -use local_ai_manager\base_connector; -use local_ai_manager\base_purpose; -use local_ai_manager\local\tenant; -use local_ai_manager\local\userinfo; -use local_ai_manager\manager; -use local_bycsauth\idmgroup; -use local_bycsauth\school; - defined('MOODLE_INTERNAL') || die; global $CFG; diff --git a/classes/hook/userinfo_extend.php b/classes/hook/userinfo_extend.php index af884d1..ebf6205 100644 --- a/classes/hook/userinfo_extend.php +++ b/classes/hook/userinfo_extend.php @@ -16,7 +16,7 @@ namespace local_ai_manager\hook; -use core\exception\coding_exception; +use coding_exception; use local_ai_manager\local\userinfo; /** diff --git a/classes/local/rights_config_table.php b/classes/local/rights_config_table.php index 7d99fe3..d503f35 100644 --- a/classes/local/rights_config_table.php +++ b/classes/local/rights_config_table.php @@ -72,7 +72,7 @@ public function __construct( $from = '{user} u LEFT JOIN {local_ai_manager_userinfo} ui ON u.id = ui.userid'; $where = 'u.deleted != 1 AND u.suspended != 1 AND ' . $tenantfield . ' = :tenant'; - $params = ['tenant' => $tenant->get_identifier()]; + $params = ['tenant' => $tenant->get_sql_identifier()]; $usertableextend = new usertable_extend($tenant, $columns, $headers, $filterids, $fields, $from, $where, $params); \core\di::get(\core\hook\manager::class)->dispatch($usertableextend); @@ -86,7 +86,7 @@ public function __construct( $this->set_count_sql( "SELECT COUNT(DISTINCT id) FROM {user} WHERE " . $tenantfield . " = :tenant", - ['tenant' => $tenant->get_identifier()] + ['tenant' => $tenant->get_sql_identifier()] ); $this->set_sql($usertableextend->get_fields(), $usertableextend->get_from(), diff --git a/classes/local/statistics_overview_table.php b/classes/local/statistics_overview_table.php index ea888ca..5d4872e 100644 --- a/classes/local/statistics_overview_table.php +++ b/classes/local/statistics_overview_table.php @@ -61,10 +61,15 @@ public function __construct( $this->collapsible(false); $fields = 'model, modelinfo, COUNT(modelinfo) AS requestcount, SUM(value) AS userusage'; - $from = '{local_ai_manager_request_log}'; - $where = '1=1 GROUP BY modelinfo'; - $this->set_sql($fields, $from, $where); - $this->set_count_sql('SELECT COUNT(DISTINCT modelinfo) FROM {local_ai_manager_request_log}'); + $from = '{local_ai_manager_request_log} rl JOIN {user} u ON rl.userid = u.id'; + $tenantfield = get_config('local_ai_manager', 'tenantcolumn'); + $tenant = \core\di::get(tenant::class); + $where = 'u.' . $tenantfield . ' = :tenant GROUP BY modelinfo'; + $params = ['tenant' => $tenant->get_sql_identifier()]; + $this->set_sql($fields, $from, $where, $params); + $this->set_count_sql('SELECT COUNT(DISTINCT modelinfo) FROM {local_ai_manager_request_log} rl' + . ' JOIN {user} u ON rl.userid = u.id WHERE u.' . $tenantfield . ' = :tenant', + $params); parent::setup(); } diff --git a/classes/local/tenant.php b/classes/local/tenant.php index a50ac96..6827d83 100644 --- a/classes/local/tenant.php +++ b/classes/local/tenant.php @@ -60,6 +60,15 @@ public function get_identifier(): string { return $this->identifier; } + /** + * Returns the identifier which needs to be used in SQL statements. + * + * @return string the tenant identifier for SQL statements + */ + public function get_sql_identifier(): string { + return $this->is_default_tenant() ? '' : $this->identifier; + } + /** * Returns if the current tenant of this object is the default tenant. * diff --git a/classes/local/userinfo.php b/classes/local/userinfo.php index 69ffadd..43c6988 100644 --- a/classes/local/userinfo.php +++ b/classes/local/userinfo.php @@ -17,7 +17,6 @@ namespace local_ai_manager\local; use local_ai_manager\hook\userinfo_extend; -use local_bycsauth\school; use stdClass; /** diff --git a/classes/local/userstats_table.php b/classes/local/userstats_table.php index 79c26de..33fa190 100644 --- a/classes/local/userstats_table.php +++ b/classes/local/userstats_table.php @@ -94,21 +94,24 @@ public function __construct( $from = '{local_ai_manager_request_log} rl LEFT JOIN {local_ai_manager_userinfo} ui ON rl.userid = ui.userid' . ' JOIN {user} u ON u.id = rl.userid'; $where = $tenantfield . ' = :tenant AND purpose = :purpose GROUP BY u.id'; - $params = ['tenant' => $tenant->get_identifier(), 'purpose' => $purpose]; + $params = [ + 'tenant' => $tenant->get_sql_identifier(), + 'purpose' => $purpose, + ]; $this->set_count_sql( "SELECT COUNT(DISTINCT userid) FROM {local_ai_manager_request_log} rl JOIN {user} u ON rl.userid = u.id " . "WHERE " . $tenantfield . " = :tenant AND purpose = :purpose", - ['tenant' => $tenant->get_identifier(), 'purpose' => $purpose] + $params ); } else { $fields = 'u.id as id, lastname, firstname, COUNT(value) AS requestcount'; $from = - '{user} u LEFT JOIN {local_ai_manager_request_log} rl ON u.id = rl.userid'; - $where = $tenantfield . ' = :tenant GROUP BY u.id'; - $params = ['tenant' => $tenant->get_identifier()]; + '{local_ai_manager_request_log} rl LEFT JOIN {user} u ON rl.userid = u.id'; + $where = 'u.' . $tenantfield . ' = :tenant GROUP BY u.id'; + $params = ['tenant' => $tenant->get_sql_identifier()]; $this->set_count_sql( "SELECT COUNT(DISTINCT id) FROM {user} WHERE " . $tenantfield . " = :tenant", - ['tenant' => $tenant->get_identifier()] + $params ); } $this->set_sql($fields, $from, $where, $params); diff --git a/lang/de/local_ai_manager.php b/lang/de/local_ai_manager.php index 9319204..21e5710 100644 --- a/lang/de/local_ai_manager.php +++ b/lang/de/local_ai_manager.php @@ -51,7 +51,7 @@ $string['assignpurposes'] = 'Einsatzzwecke festlegen'; $string['assignrole'] = 'Rolle zuweisen'; $string['basicsettings'] = 'Grundeinstellungen'; -$string['basicsettingsdesc'] = 'Grundeinstellungn des AI-Managers konfigurieren'; +$string['basicsettingsdesc'] = 'Grundeinstellungen des AI-Managers konfigurieren'; $string['configure_instance'] = 'KI-Tool-Instanzen konfigurieren'; $string['configureaitool'] = 'KI-Tool konfigurieren'; $string['configurepurposes'] = 'Einsatzzwecke konfigurieren'; diff --git a/purpose_statistics.php b/purpose_statistics.php index 91365dd..a7d30fe 100644 --- a/purpose_statistics.php +++ b/purpose_statistics.php @@ -56,7 +56,7 @@ $tenantfield = get_config('local_ai_manager', 'tenantcolumn'); $recordscountsql = "SELECT COUNT(*) FROM {local_ai_manager_request_log} rl JOIN {user} u ON rl.userid = u.id" . " WHERE u." . $tenantfield . " = :tenant AND rl.purpose = :purpose"; -$recordscountparams = ['tenant' => $tenant->get_identifier(), 'purpose' => $purpose]; +$recordscountparams = ['tenant' => $tenant->get_sql_identifier(), 'purpose' => $purpose]; $recordscount = $DB->count_records_sql($recordscountsql, $recordscountparams); if ($recordscount !== 0) { diff --git a/rights_config.php b/rights_config.php index 4041e10..ae38e68 100644 --- a/rights_config.php +++ b/rights_config.php @@ -25,7 +25,6 @@ use local_ai_manager\local\userinfo; use local_ai_manager\output\tenantnavbar; -use local_bycsauth\idmgroup; require_once(dirname(__FILE__) . '/../../config.php'); require_login(); diff --git a/user_statistics.php b/user_statistics.php index 6cf5ddb..ceff384 100644 --- a/user_statistics.php +++ b/user_statistics.php @@ -51,12 +51,12 @@ $recordscount = $DB->count_records_sql("SELECT COUNT(*) FROM {local_ai_manager_request_log} rl JOIN {user} u ON rl.userid = u.id" . " WHERE u." . $tenantfield . " = :tenant", - ['tenant' => $tenant->get_identifier()]); + ['tenant' => $tenant->get_sql_identifier()]); if ($recordscount !== 0) { $uniqid = 'statistics-table-users-all-purposes'; - $baseurl = new moodle_url('/local/ai_manager/user_statistics.php', ['tenant' => $tenant->get_identifier()]); + $baseurl = new moodle_url('/local/ai_manager/user_statistics.php', ['tenant' => $tenant->get_sql_identifier()]); $table = new \local_ai_manager\local\userstats_table($uniqid, '', $tenant, $baseurl); $table->out(5, false); } else {