ILIAS  trunk Revision v11.0_alpha-1713-gd8962da2f67
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
ilStudyProgrammeAutoMembershipsDBRepository Class Reference

Class ilStudyProgrammeAutoMembershipsDBRepository. More...

+ Inheritance diagram for ilStudyProgrammeAutoMembershipsDBRepository:
+ Collaboration diagram for ilStudyProgrammeAutoMembershipsDBRepository:

Public Member Functions

 __construct (ilDBInterface $db, int $current_usr_id)
 
 getFor (int $prg_obj_id)
 Read auto-membership sources of programme.
Returns
ilStudyProgrammeAutoMembershipSource[]
More...
 
 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)
 
 update (ilStudyProgrammeAutoMembershipSource $ams)
 Update an auto-membership source. More...
 
 delete (int $prg_obj_id, string $source_type, int $source_id)
 Delete a single source-setting. More...
 
 deleteFor (int $prg_obj_id)
 Delete all auto-membership sources of a programme. More...
 
- Public Member Functions inherited from ilStudyProgrammeAutoMembershipsRepository
 create (int $prg_obj_id, string $source_type, int $source_id, bool $enabled, ?int $last_edited_usr_id=null, ?DateTimeImmutable $last_edited=null)
 Build an auto-membership source. More...
 

Static Public Member Functions

static getProgrammesFor (string $source_type, int $source_id)
 Get all programmes' obj_ids monitoring the given source.
Returns
int[]
More...
 

Protected Attributes

ilDBInterface $db
 
int $current_usr_id
 

Private Attributes

const TABLE = 'prg_auto_membership'
 
const FIELD_PRG_OBJ_ID = 'prg_obj_id'
 
const FIELD_SOURCE_TYPE = 'source_type'
 
const FIELD_SOURCE_ID = 'source_id'
 
const FIELD_ENABLED = 'enabled'
 
const FIELD_EDITOR_ID = 'last_usr_id'
 
const FIELD_LAST_EDITED = 'last_edited'
 
const FIELD_SEARCH_RECURSIVE = 'search_recursive'
 

Detailed Description

Constructor & Destructor Documentation

◆ __construct()

ilStudyProgrammeAutoMembershipsDBRepository::__construct ( ilDBInterface  $db,
int  $current_usr_id 
)

Member Function Documentation

◆ create()

ilStudyProgrammeAutoMembershipsDBRepository::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 
)

Definition at line 78 of file class.ilStudyProgrammeAutoMembershipsDBRepository.php.

References $current_usr_id.

Referenced by getFor().

87  if (is_null($last_edited_usr_id)) {
88  $last_edited_usr_id = $this->current_usr_id;
89  }
90  if (is_null($last_edited)) {
91  $last_edited = new DateTimeImmutable();
92  }
94  $prg_obj_id,
95  $source_type,
96  $source_id,
97  $enabled,
98  $last_edited_usr_id,
99  $last_edited,
100  $search_recursive
101  );
102  }
+ Here is the caller graph for this function:

◆ delete()

ilStudyProgrammeAutoMembershipsDBRepository::delete ( int  $prg_obj_id,
string  $source_type,
int  $source_id 
)

Delete a single source-setting.

Implements ilStudyProgrammeAutoMembershipsRepository.

Definition at line 141 of file class.ilStudyProgrammeAutoMembershipsDBRepository.php.

141  : void
142  {
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');
147 
148  $this->db->manipulate($query);
149  }

◆ deleteFor()

ilStudyProgrammeAutoMembershipsDBRepository::deleteFor ( int  $prg_obj_id)

Delete all auto-membership sources of a programme.

Implements ilStudyProgrammeAutoMembershipsRepository.

Definition at line 154 of file class.ilStudyProgrammeAutoMembershipsDBRepository.php.

154  : void
155  {
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);
159  }

◆ getFor()

ilStudyProgrammeAutoMembershipsDBRepository::getFor ( int  $prg_obj_id)

Read auto-membership sources of programme.

Returns
ilStudyProgrammeAutoMembershipSource[]

Implements ilStudyProgrammeAutoMembershipsRepository.

Definition at line 49 of file class.ilStudyProgrammeAutoMembershipsDBRepository.php.

References $res, and create().

49  : array
50  {
51  $query = 'SELECT '
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);
63  $ret = [];
64  while ($rec = $this->db->fetchAssoc($res)) {
65  $ret[] = $this->create(
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],
71  new DateTimeImmutable($rec[self::FIELD_LAST_EDITED]),
72  (bool) $rec[self::FIELD_SEARCH_RECURSIVE]
73  );
74  }
75  return $ret;
76  }
$res
Definition: ltiservices.php:66
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)
+ Here is the call graph for this function:

◆ getProgrammesFor()

static ilStudyProgrammeAutoMembershipsDBRepository::getProgrammesFor ( string  $source_type,
int  $source_id 
)
static

Get all programmes' obj_ids monitoring the given source.

Returns
int[]

Implements ilStudyProgrammeAutoMembershipsRepository.

Definition at line 164 of file class.ilStudyProgrammeAutoMembershipsDBRepository.php.

References $DIC, $path, $q, $res, ilDBInterface\fetchAll(), ilDBInterface\fetchAssoc(), ilDBInterface\in(), ilDBInterface\query(), and ilDBInterface\quote().

164  : array
165  {
166  global $DIC;
167  $db = $DIC["ilDB"];
168 
169  $q = "SELECT path FROM tree WHERE child = " . $db->quote($source_id, "integer");
170  $res = $db->query($q);
171  $row = $db->fetchAssoc($res);
172  $path = explode(".", $row["path"] ?? "");
173 
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
178  . 'WHERE ('
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
181  . ')' . 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';
185 
186  $res = $db->query($query);
187  return $db->fetchAll($res);
188  }
$res
Definition: ltiservices.php:66
fetchAssoc(ilDBStatement $statement)
fetchAll(ilDBStatement $statement, int $fetch_mode=ilDBConstants::FETCHMODE_ASSOC)
quote($value, string $type)
$path
Definition: ltiservices.php:29
global $DIC
Definition: shib_login.php:22
query(string $query)
Run a (read-only) Query on the database.
in(string $field, array $values, bool $negate=false, string $type="")
$q
Definition: shib_logout.php:21
+ Here is the call graph for this function:

◆ update()

ilStudyProgrammeAutoMembershipsDBRepository::update ( ilStudyProgrammeAutoMembershipSource  $ams)

Update an auto-membership source.

Implements ilStudyProgrammeAutoMembershipsRepository.

Definition at line 107 of file class.ilStudyProgrammeAutoMembershipsDBRepository.php.

References $current_usr_id, ilStudyProgrammeAutoMembershipSource\getPrgObjId(), ilStudyProgrammeAutoMembershipSource\getSourceId(), ilStudyProgrammeAutoMembershipSource\getSourceType(), ilDBInterface\insert(), ilStudyProgrammeAutoMembershipSource\isEnabled(), ilStudyProgrammeAutoMembershipSource\isSearchRecursive(), and ilDBInterface\manipulate().

107  : void
108  {
109  $ilAtomQuery = $this->db->buildAtomQuery();
110  $ilAtomQuery->addTableLock(self::TABLE);
112  $ilAtomQuery->addQueryCallable(
113  function (ilDBInterface $db) use ($ams, $current_usr_id) {
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();
118  $db->manipulate($query);
119  $now = new DateTimeImmutable();
120  $now = $now->format('Y-m-d H:i:s');
121  $db->insert(
122  self::TABLE,
123  [
124  self::FIELD_PRG_OBJ_ID => ['integer', $ams->getPrgObjId()],
125  self::FIELD_SOURCE_TYPE => ['text', $ams->getSourceType()],
126  self::FIELD_SOURCE_ID => ['integer', $ams->getSourceId()],
127  self::FIELD_ENABLED => ['integer', $ams->isEnabled()],
128  self::FIELD_EDITOR_ID => ['integer', $current_usr_id],
129  self::FIELD_LAST_EDITED => ['timestamp', $now],
130  self::FIELD_SEARCH_RECURSIVE => ['integer', $ams->isSearchRecursive()]
131  ]
132  );
133  }
134  );
135  $ilAtomQuery->run();
136  }
insert(string $table_name, array $values)
manipulate(string $query)
Run a (write) Query on the database.
+ Here is the call graph for this function:

Field Documentation

◆ $current_usr_id

int ilStudyProgrammeAutoMembershipsDBRepository::$current_usr_id
protected

◆ $db

ilDBInterface ilStudyProgrammeAutoMembershipsDBRepository::$db
protected

Definition at line 37 of file class.ilStudyProgrammeAutoMembershipsDBRepository.php.

Referenced by __construct().

◆ FIELD_EDITOR_ID

const ilStudyProgrammeAutoMembershipsDBRepository::FIELD_EDITOR_ID = 'last_usr_id'
private

◆ FIELD_ENABLED

const ilStudyProgrammeAutoMembershipsDBRepository::FIELD_ENABLED = 'enabled'
private

◆ FIELD_LAST_EDITED

const ilStudyProgrammeAutoMembershipsDBRepository::FIELD_LAST_EDITED = 'last_edited'
private

◆ FIELD_PRG_OBJ_ID

const ilStudyProgrammeAutoMembershipsDBRepository::FIELD_PRG_OBJ_ID = 'prg_obj_id'
private

◆ FIELD_SEARCH_RECURSIVE

const ilStudyProgrammeAutoMembershipsDBRepository::FIELD_SEARCH_RECURSIVE = 'search_recursive'
private

◆ FIELD_SOURCE_ID

const ilStudyProgrammeAutoMembershipsDBRepository::FIELD_SOURCE_ID = 'source_id'
private

◆ FIELD_SOURCE_TYPE

const ilStudyProgrammeAutoMembershipsDBRepository::FIELD_SOURCE_TYPE = 'source_type'
private

◆ TABLE

const ilStudyProgrammeAutoMembershipsDBRepository::TABLE = 'prg_auto_membership'
private

The documentation for this class was generated from the following file: