ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
class.ilLearningSequenceActivationDB.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
11 {
12  const TABLE_NAME = 'lso_activation';
13 
17  protected $database;
18 
20  {
21  $this->database = $database;
22  }
23 
24  public function getActivationForRefId(int $ref_id) : ilLearningSequenceActivation
25  {
26  $data = $this->select($ref_id);
27  if (count($data) == 0) {
28  $settings = $this->buildActivationSettings($ref_id);
29  $this->insert($settings);
30  } else {
31  if ($data['activation_start_ts']) {
32  $start = new \DateTime();
33  $start->setTimestamp((int) $data['activation_start_ts']);
34  } else {
35  $start = null;
36  }
37 
38  if ($data['activation_end_ts']) {
39  $end = new \DateTime();
40  $end->setTimestamp((int) $data['activation_end_ts']);
41  } else {
42  $end = null;
43  }
44 
45  $settings = $this->buildActivationSettings(
46  (int) $data['ref_id'],
47  (bool) $data['online'],
48  (bool) $data['effective_online'],
49  $start,
50  $end
51  );
52  }
53 
54  return $settings;
55  }
56 
57  public function deleteForRefId(int $ref_id)
58  {
59  $query = "DELETE FROM " . static::TABLE_NAME . PHP_EOL
60  . "WHERE ref_id = " . $this->database->quote($ref_id, "integer") . PHP_EOL
61  ;
62  $this->database->manipulate($query);
63  }
64 
65  public function store(ilLearningSequenceActivation $settings)
66  {
67  $where = array(
68  "ref_id" => array("integer", $settings->getRefId())
69  );
70 
71  $start = $settings->getActivationStart();
72  $end = $settings->getActivationEnd();
73 
74  if ($start) {
75  $start = $start->getTimestamp();
76  }
77  if ($end) {
78  $end = $end->getTimestamp();
79  }
80  $values = array(
81  "online" => array("integer", $settings->getIsOnline()),
82  "activation_start_ts" => array("integer", $start),
83  "activation_end_ts" => array("integer", $end)
84  );
85  $this->database->update(static::TABLE_NAME, $values, $where);
86  }
87 
88  protected function insert(ilLearningSequenceActivation $settings)
89  {
90  $start = $settings->getActivationStart();
91  $end = $settings->getActivationEnd();
92  if ($start) {
93  $start = $start->getTimestamp();
94  }
95  if ($end) {
96  $end = $end->getTimestamp();
97  }
98  $values = array(
99  "ref_id" => array("integer", $settings->getRefId()),
100  "online" => array("integer", $settings->getIsOnline()),
101  "effective_online" => array("integer", $settings->getEffectiveOnlineStatus()),
102  "activation_start_ts" => array("integer", $start),
103  "activation_end_ts" => array("integer", $end)
104  );
105  $this->database->insert(static::TABLE_NAME, $values);
106  }
107 
108  protected function select(int $ref_id) : array
109  {
110  $ret = [];
111  $query =
112  "SELECT ref_id, online, effective_online, activation_start_ts, activation_end_ts" . PHP_EOL
113  . "FROM " . static::TABLE_NAME . PHP_EOL
114  . "WHERE ref_id = " . $this->database->quote($ref_id, "integer") . PHP_EOL
115  ;
116 
117  $result = $this->database->query($query);
118 
119  if ($result->numRows() !== 0) {
120  $ret = $this->database->fetchAssoc($result);
121  }
122 
123  return $ret;
124  }
125 
126  protected function buildActivationSettings(
127  int $ref_id,
128  bool $online = false,
129  bool $effective_online = false,
130  \DateTime $activation_start = null,
131  \DateTime $activation_end = null
133  return new ilLearningSequenceActivation(
134  $ref_id,
135  $online,
136  $effective_online,
137  $activation_start,
138  $activation_end
139  );
140  }
141 
142  public function setEffectiveOnlineStatus(int $ref_id, bool $status)
143  {
144  $where = array(
145  "ref_id" => array("integer", $ref_id)
146  );
147 
148  $values = array(
149  "effective_online" => array("integer", $status),
150  );
151 
152  $this->database->update(static::TABLE_NAME, $values, $where);
153  }
154 }
$result
store(ilLearningSequenceActivation $settings)
PHP_EOL
Definition: complexTest.php:5
buildActivationSettings(int $ref_id, bool $online=false, bool $effective_online=false, \DateTime $activation_start=null, \DateTime $activation_end=null)
$start
Definition: bench.php:8
$values
$query
$ret
Definition: parser.php:6
Persistence for online/activation period.
insert(ilLearningSequenceActivation $settings)
$data
Definition: bench.php:6