19 declare(strict_types=1);
37 protected ?
int $id = null;
104 return self::TABLE_NAME;
126 $this->fetchAllCriterionAssignments();
131 $document = parent::buildFromArray($array);
133 $this->fetchAllCriterionAssignments();
140 $this->setCreationTs(time());
144 foreach ($this->
criteria as $criterionAssignment) {
145 $criterionAssignment->setDocId($this->
getId());
146 $criterionAssignment->store();
154 $this->setModificationTs(time());
156 foreach ($this->
criteria as $criterionAssignment) {
157 $criterionAssignment->setDocId($this->
getId());
158 $criterionAssignment->store();
161 foreach ($this->initialPersistedCriteria as $criterionAssignment) {
162 $found = array_filter(
167 return $criterionToMatch->getId() === $criterionAssignment->getId();
171 if (0 ===
count($found)) {
172 $criterionAssignment->delete();
181 public function delete():
void 183 foreach ($this->initialPersistedCriteria as $criterionAssignment) {
184 $criterionAssignment->delete();
187 $this->initialPersistedCriteria = $this->
criteria = [];
203 foreach ($this->
criteria as $currentAssignment) {
204 if ($currentAssignment->equals($criterionAssignment)) {
206 'Cannot attach duplicate criterion with criterion typeIdent %s and value: %s',
213 $this->
criteria[] = $criterionAssignment;
229 return !$currentAssignment->
equals($criterionAssignment);
235 if ($numCriteriaAfterRemoval === $numCriteriaBeforeRemoval) {
237 'Could not find any criterion with criterion typeIdent %s and value: %s',
244 public function fetchAllCriterionAssignments():
void 246 if (!$this->criteriaFetched) {
247 $this->criteriaFetched =
true;
249 $this->initialPersistedCriteria = [];
253 foreach ($criteria as $criterionAssignment) {
255 $this->
criteria[] = $criterionAssignment;
array $initialPersistedCriteria
buildFromArray(array $array)
detachCriterion(ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment)
Class ilTermsOfServiceDuplicateCriterionAssignmentException.
static where($where, $operator=null)
Class ilTermsOfServiceDocumentCriterionAssignment.
int $last_modified_usr_id
Class ilTermsOfServiceDocument.
attachCriterion(ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment)
static returnDbTableName()
Interface ilTermsOfServiceSignableDocument.