ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
class.arConnectorSession.php
Go to the documentation of this file.
1 <?php
2 require_once('class.arConnector.php');
3 require_once(dirname(__FILE__) . '/../Exception/class.arException.php');
4 
12 {
13  const AR_CONNECTOR_SESSION = 'arConnectorSession';
14 
15 
16  public static function resetSession()
17  {
18  $_SESSION[self::AR_CONNECTOR_SESSION] = array();
19  }
20 
21 
25  public static function getSession()
26  {
27  if (!$_SESSION[self::AR_CONNECTOR_SESSION]) {
28  self::resetSession();
29  }
30 
31  return $_SESSION[self::AR_CONNECTOR_SESSION];
32  }
33 
34 
40  public static function getSessionForActiveRecord(ActiveRecord $ar)
41  {
42  $session = self::getSession();
43  $ar_session = $session[$ar::returnDbTableName()];
44  if (!is_array($ar_session)) {
45  $ar_session = array();
46  }
47 
48  return $ar_session;
49  }
50 
51 
57  public function checkConnection(ActiveRecord $ar)
58  {
59  return is_array(self::getSession());
60  }
61 
62 
68  public function nextID(ActiveRecord $ar)
69  {
70  return count(self::getSessionForActiveRecord($ar)) + 1;
71  }
72 
73 
80  public function installDatabase(ActiveRecord $ar, $fields)
81  {
82  return self::resetDatabase($ar);
83  }
84 
85 
91  public function updateDatabase(ActiveRecord $ar)
92  {
93  return true;
94  }
95 
96 
102  public function resetDatabase(ActiveRecord $ar)
103  {
104  $_SESSION[self::AR_CONNECTOR_SESSION][$ar::returnDbTableName()] = array();
105 
106  return true;
107  }
108 
109 
115  public function truncateDatabase(ActiveRecord $ar)
116  {
117  return self::resetDatabase($ar);
118  }
119 
120 
126  public function checkTableExists(ActiveRecord $ar)
127  {
128  return is_array(self::getSessionForActiveRecord($ar));
129  }
130 
131 
138  public function checkFieldExists(ActiveRecord $ar, $field_name)
139  {
140  $session = self::getSessionForActiveRecord($ar);
141 
142  return array_key_exists($field_name, $session[0]);
143  }
144 
145 
153  public function removeField(ActiveRecord $ar, $field_name)
154  {
155  return true;
156  }
157 
158 
167  public function renameField(ActiveRecord $ar, $old_name, $new_name)
168  {
169  return true;
170  }
171 
172 
176  public function create(ActiveRecord $ar)
177  {
178  $_SESSION[self::AR_CONNECTOR_SESSION][$ar::returnDbTableName()][$ar->getPrimaryFieldValue()] = $ar->__asStdClass();
179  }
180 
181 
187  public function read(ActiveRecord $ar)
188  {
189  $session = self::getSessionForActiveRecord($ar);
190 
191  return array( $session[$ar->getPrimaryFieldValue()] );
192  }
193 
194 
198  public function update(ActiveRecord $ar)
199  {
200  self::create($ar);
201  }
202 
203 
207  public function delete(ActiveRecord $ar)
208  {
209  unset($_SESSION[self::AR_CONNECTOR_SESSION][$ar::returnDbTableName()][$ar->getPrimaryFieldValue()]);
210  }
211 
212 
220  public function readSet(ActiveRecordList $arl)
221  {
222  $session = self::getSessionForActiveRecord($arl->getAR());
223  foreach ($session as $i => $s) {
224  $session[$i] = (array) $s;
225  }
226  foreach ($arl->getArWhereCollection()->getWheres() as $w) {
227  $fieldname = $w->getFieldname();
228  $v = $w->getValue();
229  $operator = $w->getOperator();
230 
231  foreach ($session as $i => $s) {
232  $session[$i] = (array) $s;
233  switch ($operator) {
234  case '=':
235  if ($s[$fieldname] != $v) {
236  unset($session[$i]);
237  }
238  break;
239  }
240  }
241  }
242 
243  return $session;
244  }
245 
246 
252  public function affectedRows(ActiveRecordList $arl)
253  {
254  return count($this->readSet($arl));
255  }
256 
257 
264  public function quote($value, $type)
265  {
266  return $value;
267  }
268 
269 
273  public function updateIndices(ActiveRecord $ar)
274  {
275  // TODO: Implement updateIndices() method.
276  }
277 }
affectedRows(ActiveRecordList $arl)
truncateDatabase(ActiveRecord $ar)
$_SESSION["AccountId"]
$type
readSet(ActiveRecordList $arl)
Class ActiveRecord.
updateIndices(ActiveRecord $ar)
Class ActiveRecordList.
$session
Class arConnector.
$s
Definition: pwgen.php:45
removeField(ActiveRecord $ar, $field_name)
checkFieldExists(ActiveRecord $ar, $field_name)
$w
checkTableExists(ActiveRecord $ar)
renameField(ActiveRecord $ar, $old_name, $new_name)
static getSessionForActiveRecord(ActiveRecord $ar)
checkConnection(ActiveRecord $ar)
updateDatabase(ActiveRecord $ar)
installDatabase(ActiveRecord $ar, $fields)
$i
Definition: disco.tpl.php:19
Class arConnectorSession.
resetDatabase(ActiveRecord $ar)