1<?php 2/* 3 +-----------------------------------------------------------------------------+ 4 | ILIAS open source | 5 +-----------------------------------------------------------------------------+ 6 | Copyright (c) 1998-2001 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* Meta Data class (element requirement) 27* 28* @package ilias-core 29* @version $Id$ 30*/ 31include_once 'class.ilMD5295Base.php'; 32 33class ilMD5295Requirement extends ilMD5295Base 34{ 35 // SET/GET 36 public function setOrCompositeId($a_or_composite_id) 37 { 38 $this->or_composite_id = (int) $a_or_composite_id; 39 } 40 public function getOrCompositeId() 41 { 42 return (int) $this->or_composite_id; 43 } 44 45 46 public function setOperatingSystemName($a_val) 47 { 48 switch ($a_val) { 49 case 'PC-DOS': 50 case 'MS-Windows': 51 case 'MacOS': 52 case 'Unix': 53 case 'Multi-OS': 54 case 'None': 55 $this->operating_system_name = $a_val; 56 return true; 57 58 default: 59 return false; 60 } 61 } 62 public function getOperatingSystemName() 63 { 64 return $this->operating_system_name; 65 } 66 public function setOperatingSystemMinimumVersion($a_val) 67 { 68 $this->operating_system_minimum_version = $a_val; 69 } 70 public function getOperatingSystemMinimumVersion() 71 { 72 return $this->operating_system_minimum_version; 73 } 74 public function setOperatingSystemMaximumVersion($a_val) 75 { 76 $this->operating_system_maximum_version = $a_val; 77 } 78 public function getOperatingSystemMaximumVersion() 79 { 80 return $this->operating_system_maximum_version; 81 } 82 public function setBrowserName($a_val) 83 { 84 switch ($a_val) { 85 case 'Any': 86 case 'NetscapeCommunicator': 87 case 'MS-InternetExplorer': 88 case 'Opera': 89 case 'Amaya': 90 case 'Mozilla': 91 $this->browser_name = $a_val; 92 return true; 93 94 default: 95 return false; 96 } 97 } 98 public function getBrowserName() 99 { 100 return $this->browser_name; 101 } 102 public function setBrowserMinimumVersion($a_val) 103 { 104 $this->browser_minimum_version = $a_val; 105 } 106 public function getBrowserMinimumVersion() 107 { 108 return $this->browser_minimum_version; 109 } 110 public function setBrowserMaximumVersion($a_val) 111 { 112 $this->browser_maximum_version = $a_val; 113 } 114 public function getBrowserMaximumVersion() 115 { 116 return $this->browser_maximum_version; 117 } 118 119 public function save() 120 { 121 global $DIC; 122 123 $ilDB = $DIC['ilDB']; 124 125 $fields = $this->__getFields(); 126 $fields['meta_requirement_id'] = array('integer',$next_id = $ilDB->nextId('il_meta_requirement')); 127 128 if ($this->db->insert('il_meta_requirement', $fields)) { 129 $this->setMetaId($next_id); 130 return $this->getMetaId(); 131 } 132 return false; 133 } 134 135 public function update() 136 { 137 global $DIC; 138 139 $ilDB = $DIC['ilDB']; 140 141 if ($this->getMetaId()) { 142 if ($this->db->update( 143 'il_meta_requirement', 144 $this->__getFields(), 145 array("meta_requirement_id" => array('integer',$this->getMetaId())) 146 )) { 147 return true; 148 } 149 } 150 return false; 151 } 152 153 public function delete() 154 { 155 global $DIC; 156 157 $ilDB = $DIC['ilDB']; 158 159 if ($this->getMetaId()) { 160 $query = "DELETE FROM il_meta_requirement " . 161 "WHERE meta_requirement_id = " . $ilDB->quote($this->getMetaId(), 'integer'); 162 $res = $ilDB->manipulate($query); 163 return true; 164 } 165 return false; 166 } 167 168 169 public function __getFields() 170 { 171 return array('rbac_id' => array('integer',$this->getRBACId()), 172 'obj_id' => array('integer',$this->getObjId()), 173 'obj_type' => array('text',$this->getObjType()), 174 'parent_type' => array('text',$this->getParentType()), 175 'parent_id' => array('integer',$this->getParentId()), 176 'operating_system_name' => array('text',$this->getOperatingSystemName()), 177 'os_min_version' => array('text',$this->getOperatingSystemMinimumVersion()), 178 'os_max_version' => array('text',$this->getOperatingSystemMaximumVersion()), 179 'browser_name' => array('text',$this->getBrowserName()), 180 'browser_minimum_version' => array('text',$this->getBrowserMinimumVersion()), 181 'browser_maximum_version' => array('text',$this->getBrowserMaximumVersion()), 182 'or_composite_id' => array('integer',$this->getOrCompositeId())); 183 } 184 185 public function read() 186 { 187 global $DIC; 188 189 $ilDB = $DIC['ilDB']; 190 191 include_once 'Services/Migration/DBUpdate_5295/classes/class.ilMD5295LanguageItem.php'; 192 193 if ($this->getMetaId()) { 194 $query = "SELECT * FROM il_meta_requirement " . 195 "WHERE meta_requirement_id = " . $ilDB->quote($this->getMetaId(), 'integer'); 196 197 $res = $this->db->query($query); 198 while ($row = $res->fetchRow(ilDBConstants::FETCHMODE_OBJECT)) { 199 $this->setRBACId($row->rbac_id); 200 $this->setObjId($row->obj_id); 201 $this->setObjType($row->obj_type); 202 $this->setParentId($row->parent_id); 203 $this->setParentType($row->parent_type); 204 $this->setOperatingSystemName($row->operating_system_name); 205 $this->setOperatingSystemMinimumVersion($row->os_min_version); 206 $this->setOperatingSystemMaximumVersion($row->os_max_version); 207 $this->setBrowserName($row->browser_name); 208 $this->setBrowserMinimumVersion($row->browser_minimum_version); 209 $this->setBrowserMaximumVersion($row->browser_maximum_version); 210 $this->setOrCompositeId($row->or_composite_id); 211 } 212 } 213 return true; 214 } 215 216 /* 217 * XML Export of all meta data 218 * @param object (xml writer) see class.ilMD52952XML.php 219 * 220 */ 221 public function toXML(&$writer) 222 { 223 $writer->xmlStartTag('Requirement'); 224 $writer->xmlStartTag('Type'); 225 226 if (strlen($this->getOperatingSystemName())) { 227 $writer->xmlElement('OperatingSystem', array('Name' => $this->getOperatingSystemName() 228 ? $this->getOperatingSystemName() 229 : 'None', 230 'MinimumVersion' => $this->getOperatingSystemMinimumVersion(), 231 'MaximumVersion' => $this->getOperatingSystemMaximumVersion())); 232 } 233 if (strlen($this->getBrowserName())) { 234 $writer->xmlElement('Browser', array('Name' => $this->getBrowserName() 235 ? $this->getBrowserName() 236 : 'Any', 237 'MinimumVersion' => $this->getBrowserMinimumVersion(), 238 'MaximumVersion' => $this->getBrowserMaximumVersion())); 239 } 240 $writer->xmlEndTag('Type'); 241 $writer->xmlEndTag('Requirement'); 242 } 243 244 245 // STATIC 246 public static function _getIds($a_rbac_id, $a_obj_id, $a_parent_id, $a_parent_type, $a_or_composite_id = 0) 247 { 248 global $DIC; 249 250 $ilDB = $DIC['ilDB']; 251 252 $query = "SELECT meta_requirement_id FROM il_meta_requirement " . 253 "WHERE rbac_id = " . $ilDB->quote($a_rbac_id, 'integer') . " " . 254 "AND obj_id = " . $ilDB->quote($a_obj_id, 'integer') . " " . 255 "AND parent_id = " . $ilDB->quote($a_parent_id, 'integer') . " " . 256 "AND parent_type = " . $ilDB->quote($a_parent_type, 'text') . " " . 257 "AND or_composite_id = " . $ilDB->quote($a_or_composite_id, 'integer'); 258 259 $res = $ilDB->query($query); 260 while ($row = $res->fetchRow(ilDBConstants::FETCHMODE_OBJECT)) { 261 $ids[] = $row->meta_requirement_id; 262 } 263 return $ids ? $ids : array(); 264 } 265} 266