1<?php 2/* 3 +-----------------------------------------------------------------------------+ 4 | ILIAS open source | 5 +-----------------------------------------------------------------------------+ 6 | Copyright (c) 1998-2006 ILIAS open source, University of Cologne | 7 | | 8 | This program is free software; you can redistribute it and/or | 9 | modify it under the terms of the GNU General Public License | 10 | as published by the Free Software Foundation; either version 2 | 11 | of the License, or (at your option) any later version. | 12 | | 13 | This program is distributed in the hope that it will be useful, | 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 16 | GNU General Public License for more details. | 17 | | 18 | You should have received a copy of the GNU General Public License | 19 | along with this program; if not, write to the Free Software | 20 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | 21 +-----------------------------------------------------------------------------+ 22*/ 23 24/** 25* 26* @author Stefan Meyer <meyer@leifos.com> 27* @version $Id$ 28* 29* 30* @ingroup ServicesWebServicesECS 31*/ 32class ilECSParticipantSetting 33{ 34 const AUTH_VERSION_4 = 1; 35 const AUTH_VERSION_5 = 2; 36 37 const PERSON_EPPN = 1; 38 const PERSON_LUID = 2; 39 const PERSON_LOGIN = 3; 40 const PERSON_UID = 4; 41 42 protected static $instances = array(); 43 44 45 // :TODO: what types are needed? 46 const IMPORT_UNCHANGED = 0; 47 const IMPORT_RCRS = 1; 48 const IMPORT_CRS = 2; 49 const IMPORT_CMS = 3; 50 51 private $server_id = 0; 52 private $mid = 0; 53 private $export = false; 54 private $import = false; 55 private $import_type = 1; 56 private $title = ''; 57 private $cname = ''; 58 private $token = true; 59 private $dtoken = true; 60 61 private $auth_version = self::AUTH_VERSION_4; 62 private $person_type = self::PERSON_UID; 63 64 65 private $export_types = array(); 66 private $import_types = array(); 67 68 private $exists = false; 69 70 71 /** 72 * Constructor 73 * 74 * @access private 75 * 76 */ 77 public function __construct($a_server_id, $mid) 78 { 79 $this->server_id = $a_server_id; 80 $this->mid = $mid; 81 $this->read(); 82 } 83 84 /** 85 * Get instance by server id and mid 86 * @param type $a_server_id 87 * @param type $mid 88 * @return ilECSParticipantSetting 89 */ 90 public static function getInstance($a_server_id, $mid) 91 { 92 if (self::$instances[$a_server_id . '_' . $mid]) { 93 return self::$instances[$a_server_id . '_' . $mid]; 94 } 95 return self::$instances[$a_server_id . '_' . $mid] = new self($a_server_id, $mid); 96 } 97 98 99 /** 100 * Get server id 101 * @return int 102 */ 103 public function getServerId() 104 { 105 return $this->server_id; 106 } 107 108 public function setMid($a_mid) 109 { 110 $this->mid = $a_mid; 111 } 112 113 public function getMid() 114 { 115 return $this->mid; 116 } 117 118 public function enableExport($a_status) 119 { 120 $this->export = $a_status; 121 } 122 123 public function isExportEnabled() 124 { 125 return (bool) $this->export; 126 } 127 128 public function enableImport($a_status) 129 { 130 $this->import = $a_status; 131 } 132 133 public function isImportEnabled() 134 { 135 return $this->import; 136 } 137 138 public function setImportType($a_type) 139 { 140 if ($a_type != self::IMPORT_UNCHANGED) { 141 $this->import_type = $a_type; 142 } 143 } 144 145 public function getImportType() 146 { 147 return $this->import_type; 148 } 149 150 public function setTitle($a_title) 151 { 152 $this->title = $a_title; 153 } 154 155 public function getTitle() 156 { 157 return $this->title; 158 } 159 160 public function getCommunityName() 161 { 162 return $this->cname; 163 } 164 165 public function setCommunityName($a_name) 166 { 167 $this->cname = $a_name; 168 } 169 170 public function isTokenEnabled() 171 { 172 return (bool) $this->token; 173 } 174 175 public function enableToken($a_stat) 176 { 177 $this->token = $a_stat; 178 } 179 180 public function setExportTypes($a_types) 181 { 182 $this->export_types = $a_types; 183 } 184 185 public function getExportTypes() 186 { 187 return $this->export_types; 188 } 189 190 public function setImportTypes($a_types) 191 { 192 $this->import_types = $a_types; 193 } 194 195 public function isDeprecatedTokenEnabled() 196 { 197 return (bool) $this->dtoken; 198 } 199 200 public function enableDeprecatedToken($a_stat) 201 { 202 $this->dtoken = $a_stat; 203 } 204 205 public function getImportTypes() 206 { 207 return $this->import_types; 208 } 209 210 private function exists() 211 { 212 return $this->exists; 213 } 214 215 /** 216 * Update 217 * Calls create automatically when no entry exists 218 */ 219 public function update() 220 { 221 global $DIC; 222 223 $ilDB = $DIC['ilDB']; 224 225 if (!$this->exists()) { 226 return $this->create(); 227 } 228 $query = 'UPDATE ecs_part_settings ' . 229 'SET ' . 230 'sid = ' . $ilDB->quote((int) $this->getServerId(), 'integer') . ', ' . 231 'mid = ' . $ilDB->quote((int) $this->getMid(), 'integer') . ', ' . 232 'export = ' . $ilDB->quote((int) $this->isExportEnabled(), 'integer') . ', ' . 233 'import = ' . $ilDB->quote((int) $this->isImportEnabled(), 'integer') . ', ' . 234 'import_type = ' . $ilDB->quote((int) $this->getImportType(), 'integer') . ', ' . 235 'title = ' . $ilDB->quote($this->getTitle(), 'text') . ', ' . 236 'cname = ' . $ilDB->quote($this->getCommunityName(), 'text') . ', ' . 237 'token = ' . $ilDB->quote($this->isTokenEnabled(), 'integer') . ', ' . 238 'dtoken = ' . $ilDB->quote($this->isDeprecatedTokenEnabled(), 'integer') . ', ' . 239 'export_types = ' . $ilDB->quote(serialize($this->getExportTypes()), 'text') . ', ' . 240 'import_types = ' . $ilDB->quote(serialize($this->getImportTypes()), 'text') . ' ' . 241 'WHERE sid = ' . $ilDB->quote((int) $this->getServerId(), 'integer') . ' ' . 242 'AND mid = ' . $ilDB->quote((int) $this->getMid(), 'integer'); 243 $aff = $ilDB->manipulate($query); 244 return true; 245 } 246 247 private function create() 248 { 249 global $DIC; 250 251 $ilDB = $DIC['ilDB']; 252 253 $query = 'INSERT INTO ecs_part_settings ' . 254 '(sid,mid,export,import,import_type,title,cname,token,dtoken,export_types, import_types) ' . 255 'VALUES( ' . 256 $ilDB->quote($this->getServerId(), 'integer') . ', ' . 257 $ilDB->quote($this->getMid(), 'integer') . ', ' . 258 $ilDB->quote((int) $this->isExportEnabled(), 'integer') . ', ' . 259 $ilDB->quote((int) $this->isImportEnabled(), 'integer') . ', ' . 260 $ilDB->quote((int) $this->getImportType(), 'integer') . ', ' . 261 $ilDB->quote($this->getTitle(), 'text') . ', ' . 262 $ilDB->quote($this->getCommunityName(), 'text') . ', ' . 263 $ilDB->quote($this->isTokenEnabled(), 'integer') . ', ' . 264 $ilDB->quote($this->isDeprecatedTokenEnabled(), 'integer') . ', ' . 265 $ilDB->quote(serialize($this->getExportTypes()), 'text') . ', ' . 266 $ilDB->quote(serialize($this->getImportTypes()), 'text') . ' ' . 267 ')'; 268 $aff = $ilDB->manipulate($query); 269 return true; 270 } 271 272 /** 273 * Delete one participant entry 274 * @global <type> $ilDB 275 * @return <type> 276 */ 277 public function delete() 278 { 279 global $DIC; 280 281 $ilDB = $DIC['ilDB']; 282 283 $query = 'DELETE FROM ecs_part_settings ' . 284 'WHERE sid = ' . $ilDB->quote($this->getServerId(), 'integer') . ' ' . 285 'AND mid = ' . $ilDB->quote($this->getMid(), 'integer'); 286 $ilDB->manipulate($query); 287 return true; 288 } 289 290 /** 291 * Read stored entry 292 * @return <type> 293 */ 294 public function read() 295 { 296 global $DIC; 297 298 $ilDB = $DIC['ilDB']; 299 300 $query = 'SELECT * FROM ecs_part_settings ' . 301 'WHERE sid = ' . $ilDB->quote($this->getServerId(), 'integer') . ' ' . 302 'AND mid = ' . $ilDB->quote($this->getMid(), 'integer'); 303 304 $res = $ilDB->query($query); 305 306 $this->exists = ($res->numRows() ? true : false); 307 308 while ($row = $res->fetchRow(ilDBConstants::FETCHMODE_OBJECT)) { 309 $this->enableExport($row->export); 310 $this->enableImport($row->import); 311 $this->setImportType($row->import_type); 312 $this->setTitle($row->title); 313 $this->setCommunityName($row->cname); 314 $this->enableToken($row->token); 315 $this->enableDeprecatedToken($row->dtoken); 316 317 $this->setExportTypes((array) unserialize($row->export_types)); 318 $this->setImportTypes((array) unserialize($row->import_types)); 319 } 320 return true; 321 } 322 323 public static function deleteByServerId($a_server_id) 324 { 325 global $DIC; 326 327 $ilDB = $DIC['ilDB']; 328 329 $query = 'DELETE FROM ecs_events' . 330 ' WHERE server_id = ' . $ilDB->quote($a_server_id, 'integer'); 331 $ilDB->manipulate($query); 332 return true; 333 } 334} 335