19declare(strict_types=1);
 
   41    protected \ilDBInterface 
$db;
 
   58        $identification = 
$i->serialize();
 
   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' 
   71        $r = $this->db->queryF(
 
   72            "SELECT " . self::IDENTIFICATION . 
" FROM " . self::TABLE_NAME . 
" WHERE " . self::IDENTIFICATION . 
" = %s AND stakeholder_id = %s",
 
   74            [$identification, $stakeholder_id]
 
   77        if ($r->numRows() === 0) {
 
   82                    self::IDENTIFICATION => [
'text', $identification],
 
   83                    'stakeholder_id' => [
'text', $stakeholder_id],
 
   88        $r = $this->db->queryF(
 
   89            "SELECT id FROM " . self::TABLE_NAME_REL . 
" WHERE id = %s",
 
   93        if ($r->numRows() === 0) {
 
   97                    'id' => [
'text', $stakeholder_id],
 
   98                    'class_name' => [
'text', $stakeholder_class_name],
 
  103        $this->cache[$identification][$stakeholder_id] = $s;
 
  110        $this->db->manipulateF(
 
  111            "DELETE FROM " . self::TABLE_NAME . 
" WHERE " . self::IDENTIFICATION . 
" = %s AND stakeholder_id = %s",
 
  115        unset($this->cache[
$i->serialize()][$s->
getId()]);
 
  125        $rid = 
$i->serialize();
 
  126        if (isset($this->cache[$rid]) && is_array($this->cache[$rid])) {
 
  127            return $this->cache[$rid];
 
  130        $r = $this->db->queryF(
 
  131            "SELECT class_name, stakeholder_id FROM " . self::TABLE_NAME . 
"  
  132            JOIN " . self::TABLE_NAME_REL . 
" ON stakeholder_id = id 
  133            WHERE " . self::IDENTIFICATION . 
" = %s",
 
  137        while (
$d = $this->db->fetchAssoc($r)) {
 
  141        return $this->cache[$rid] ?? [];
 
  144    public function preload(array $identification_strings): void
 
  146        $r = $this->db->query(
 
  147            "SELECT rid, class_name, stakeholder_id FROM " . self::TABLE_NAME
 
  148            . 
" JOIN " . self::TABLE_NAME_REL . 
" ON stakeholder_id = id  
  149            WHERE " . $this->db->in(
 
  150                self::IDENTIFICATION,
 
  151                $identification_strings,
 
  156        while (
$d = $this->db->fetchAssoc($r)) {
 
  164        $class_name = 
$data[
'class_name'];
 
  165        $stakeholder = 
new $class_name();
 
  166        $stakeholders[] = $stakeholder;
 
  167        $this->cache[
$data[
'rid']][
$data[
'stakeholder_id']] = $stakeholder;
 
Class ResourceIdentification.
 
Interface StakeholderDBRepository.
 
deregister(ResourceIdentification $i, ResourceStakeholder $s)
 
getStakeholders(ResourceIdentification $i)
@inheritDoc
 
__construct(\ilDBInterface $db)
 
populateFromArray(array $data)
 
preload(array $identification_strings)
 
for( $i=6;$i< 13;$i++) for($i=1; $i< 13; $i++) $d
 
Interface StakeholderRepository.
 
Interface ResourceStakeholder.
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...