1 <?php declare(strict_types=1);
97 return self::TABLE_NAME;
119 public function id() : int
131 $this->fetchAllCriterionAssignments();
139 $document = parent::buildFromArray($array);
141 $this->fetchAllCriterionAssignments();
151 $this->setCreationTs(time());
155 foreach ($this->
criteria as $criterionAssignment) {
157 $criterionAssignment->setDocId($this->getId());
158 $criterionAssignment->store();
169 $this->setModificationTs(time());
171 foreach ($this->
criteria as $criterionAssignment) {
173 $criterionAssignment->setDocId($this->getId());
174 $criterionAssignment->store();
177 foreach ($this->initialPersistedCriteria as $criterionAssignment) {
179 $found = array_filter(
182 return $criterionToMatch->getId() == $criterionAssignment->getId();
186 if (0 ===
count($found)) {
187 $criterionAssignment->delete();
199 public function delete()
201 foreach ($this->initialPersistedCriteria as $criterionAssignment) {
203 $criterionAssignment->delete();
206 $this->initialPersistedCriteria = $this->
criteria = [];
225 foreach ($this->
criteria as $currentAssignment) {
227 if ($currentAssignment->equals($criterionAssignment)) {
229 "Cannot attach duplicate criterion with criterion typeIdent %s and value: %s",
236 $this->
criteria[] = $criterionAssignment;
250 return !$currentAssignment->
equals($criterionAssignment);
256 if ($numCriteriaAfterRemoval === $numCriteriaBeforeRemoval) {
257 throw new OutOfBoundsException(sprintf(
258 "Could not find any criterion with criterion typeIdent %s and value: %s",
268 public function fetchAllCriterionAssignments() :
void 270 if (!$this->criteriaFetched) {
271 $this->criteriaFetched =
true;
273 $this->initialPersistedCriteria = [];
277 foreach (
$criteria as $criterionAssignment) {
279 $this->
criteria[] = $criterionAssignment;
$initialPersistedCriteria
buildFromArray(array $array)
detachCriterion(ilTermsOfServiceDocumentCriterionAssignment $criterionAssignment)
Class ilTermsOfServiceDuplicateCriterionAssignmentException.
static where($where, $operator=null)
criteria()
ilTermsOfServiceEvaluableCriterion[]
Class ilTermsOfServiceDocumentCriterionAssignment.
Class ilTermsOfServiceDocument.
static returnDbTableName()
Interface ilTermsOfServiceSignableDocument.