19 declare(strict_types=1);
    41     protected \ilDBInterface 
$db;
    53         return [self::TABLE_NAME, self::TABLE_NAME_REL];
    59         $stakeholder_id = $s->getId();
    60         $stakeholder_class_name = $s->getFullyQualifiedClassName();
    62         if (\strlen($stakeholder_id) > 64) {
    63             throw new \InvalidArgumentException(
'stakeholder ids MUST be shorter or equal to than 64 characters');
    65         if (\strlen($stakeholder_class_name) > 250) {
    66             throw new \InvalidArgumentException(
    67                 'stakeholder classnames MUST be shorter or equal to than 250 characters'    74                 self::IDENTIFICATION => [
'text', $identification],
    75                 'stakeholder_id' => [
'text', $stakeholder_id],
    83                 'id' => [
'text', $stakeholder_id]
    86                 'class_name' => [
'text', $stakeholder_class_name]
    90         $this->cache[$identification][$stakeholder_id] = $s;
    97         $this->db->manipulateF(
    98             "DELETE FROM " . self::TABLE_NAME . 
" WHERE " . self::IDENTIFICATION . 
" = %s AND stakeholder_id = %s",
   113         if (isset($this->cache[$rid]) && \is_array($this->cache[$rid])) {
   114             return $this->cache[$rid];
   117         $r = $this->db->queryF(
   118             "SELECT class_name, stakeholder_id FROM " . self::TABLE_NAME . 
"    119             JOIN " . self::TABLE_NAME_REL . 
" ON stakeholder_id = id   120             WHERE " . self::IDENTIFICATION . 
" = %s",
   124         while (
$d = $this->db->fetchAssoc(
$r)) {
   128         return $this->cache[$rid] ?? [];
   131     public function preload(array $identification_strings): void
   133         $r = $this->db->query(
   134             "SELECT rid, class_name, stakeholder_id FROM " . self::TABLE_NAME
   135             . 
" JOIN " . self::TABLE_NAME_REL . 
" ON stakeholder_id = id    136             WHERE " . $this->db->in(
   137                 self::IDENTIFICATION,
   138                 $identification_strings,
   143         while (
$d = $this->db->fetchAssoc(
$r)) {
   150         $class_name = $data[
'class_name'];
   152         if (class_exists($class_name)) {
   153             $stakeholder = 
new $class_name();
   154             $this->cache[$data[
'rid']][$data[
'stakeholder_id']] = $stakeholder;
 
Interface StakeholderDBRepository. 
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
__construct(\ilDBInterface $db)
 
populateFromArray(array $data)
 
getStakeholders(ResourceIdentification $i)
 
Interface StakeholderRepository. 
 
Class ResourceIdentification. 
 
deregister(ResourceIdentification $i, ResourceStakeholder $s)
 
preload(array $identification_strings)
 
Interface ResourceStakeholder.