19 declare(strict_types=1);
    28     private const TABLE = 
'prg_auto_membership';
    49     public function getFor(
int $prg_obj_id): array
    52             . self::FIELD_PRG_OBJ_ID . 
','    53             . self::FIELD_SOURCE_TYPE . 
','    54             . self::FIELD_SOURCE_ID . 
','    55             . self::FIELD_ENABLED . 
','    56             . self::FIELD_EDITOR_ID . 
','    57             . self::FIELD_LAST_EDITED . 
','    58             . self::FIELD_SEARCH_RECURSIVE
    59             . PHP_EOL . 
'FROM ' . self::TABLE
    60             . PHP_EOL . 
'WHERE ' . self::FIELD_PRG_OBJ_ID . 
' = '    61             . $this->db->quote($prg_obj_id, 
'integer');
    62         $res = $this->db->query($query);
    64         while ($rec = $this->db->fetchAssoc(
$res)) {
    66                 (
int) $rec[self::FIELD_PRG_OBJ_ID],
    67                 $rec[self::FIELD_SOURCE_TYPE],
    68                 (
int) $rec[self::FIELD_SOURCE_ID],
    69                 (
bool) $rec[self::FIELD_ENABLED],
    70                 (
int) $rec[self::FIELD_EDITOR_ID],
    72                 (
bool) $rec[self::FIELD_SEARCH_RECURSIVE]
    83         int $last_edited_usr_id = null,
    85         bool $search_recursive = 
false    87         if (is_null($last_edited_usr_id)) {
    90         if (is_null($last_edited)) {
   109         $ilAtomQuery = $this->db->buildAtomQuery();
   110         $ilAtomQuery->addTableLock(self::TABLE);
   112         $ilAtomQuery->addQueryCallable(
   114                 $query = 
'DELETE FROM ' . self::TABLE
   115                     . PHP_EOL . 
'WHERE prg_obj_id = ' . $ams->
getPrgObjId()
   116                     . PHP_EOL . 
'AND ' . self::FIELD_SOURCE_TYPE . 
' = ' . $this->db->quote($ams->
getSourceType(), 
'string')
   117                     . PHP_EOL . 
'AND ' . self::FIELD_SOURCE_ID . 
' = ' . $ams->
getSourceId();
   120                 $now = $now->format(
'Y-m-d H:i:s');
   124                         self::FIELD_PRG_OBJ_ID => [
'integer', $ams->
getPrgObjId()],
   126                         self::FIELD_SOURCE_ID => [
'integer', $ams->
getSourceId()],
   127                         self::FIELD_ENABLED => [
'integer', $ams->
isEnabled()],
   129                         self::FIELD_LAST_EDITED => [
'timestamp', $now],
   141     public function delete(
int $prg_obj_id, 
string $source_type, 
int $source_id): 
void   143         $query = 
'DELETE FROM ' . self::TABLE
   144             . PHP_EOL . 
'WHERE prg_obj_id = ' . $this->db->quote($prg_obj_id, 
'integer')
   145             . PHP_EOL . 
'AND ' . self::FIELD_SOURCE_TYPE . 
' = ' . $this->db->quote($source_type, 
'string')
   146             . PHP_EOL . 
'AND ' . self::FIELD_SOURCE_ID . 
' = ' . $this->db->quote($source_id, 
'integer');
   148         $this->db->manipulate($query);
   156         $query = 
'DELETE FROM ' . self::TABLE
   157             . PHP_EOL . 
'WHERE prg_obj_id = ' . $this->db->quote($prg_obj_id, 
'integer');
   158         $this->db->manipulate($query);
   169         $q = 
"SELECT path FROM tree WHERE child = " . $db->
quote($source_id, 
"integer");
   172         $path = explode(
".", $row[
"path"] ?? 
"");
   174         $query = 
'SELECT ' . self::FIELD_PRG_OBJ_ID . PHP_EOL
   175             . 
'FROM ' . self::TABLE . 
' prgs' . PHP_EOL
   176             . 
'INNER JOIN object_reference oref ON ' . PHP_EOL
   177             . 
'prgs.' . self::FIELD_PRG_OBJ_ID . 
' =  oref.obj_id' . PHP_EOL
   179             . self::FIELD_SOURCE_ID . 
' = ' . $db->
quote($source_id, 
'integer') . PHP_EOL
   180             . 
' OR (' . $db->
in(self::FIELD_SOURCE_ID, 
$path, 
false, 
'integer') . 
' AND search_recursive = 1)' . PHP_EOL
   182             . 
'AND ' . self::FIELD_ENABLED . 
' = 1' . PHP_EOL
   183             . 
'AND ' . self::FIELD_SOURCE_TYPE . 
' = ' . $db->
quote($source_type, 
'text') . PHP_EOL
   184             . 
'AND oref.deleted IS NULL';
 const FIELD_SEARCH_RECURSIVE
 
insert(string $table_name, array $values)
 
fetchAssoc(ilDBStatement $statement)
 
fetchAll(ilDBStatement $statement, int $fetch_mode=ilDBConstants::FETCHMODE_ASSOC)
 
quote($value, string $type)
 
static getProgrammesFor(string $source_type, int $source_id)
Get all programmes' obj_ids monitoring the given source.int[] 
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
deleteFor(int $prg_obj_id)
Delete all auto-membership sources of a programme. 
 
Class ilStudyProgrammeAutoMembershipSource. 
 
query(string $query)
Run a (read-only) Query on the database. 
 
in(string $field, array $values, bool $negate=false, string $type="")
 
__construct(ilDBInterface $db, int $current_usr_id)
 
manipulate(string $query)
Run a (write) Query on the database. 
 
getFor(int $prg_obj_id)
Read auto-membership sources of programme.ilStudyProgrammeAutoMembershipSource[] 
 
update(ilStudyProgrammeAutoMembershipSource $ams)
Update an auto-membership source. 
 
create(int $prg_obj_id, string $source_type, int $source_id, bool $enabled, int $last_edited_usr_id=null, DateTimeImmutable $last_edited=null, bool $search_recursive=false)
 
Class ilStudyProgrammeAutoMembershipsDBRepository.