ILIAS  Release_4_0_x_branch Revision 61816
 All Data Structures Namespaces Files Functions Variables Groups Pages
class.ilPluginSlot.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2009 ILIAS open source, Extended GPL, see docs/LICENSE */
3 
4 
5 include_once("./Services/Component/classes/class.ilPlugin.php");
6 
20 {
21 
25  function __construct($a_c_type, $a_c_name, $a_slot_id)
26  {
27  $this->setComponentType($a_c_type);
28  $this->setComponentName($a_c_name);
29  $this->setSlotId($a_slot_id);
30 
31  if ($a_slot_id != "")
32  {
33  $this->read();
34  }
35  }
36 
40  function read()
41  {
42  global $ilDB;
43 
44  $q = "SELECT * FROM il_pluginslot WHERE component = ".
45  $ilDB->quote($this->getComponentType()."/".$this->getComponentName(), "text").
46  " AND id = ".$ilDB->quote($this->getSlotId(), "text");
47  $set = $ilDB->query($q);
48  $rec = $ilDB->fetchAssoc($set);
49  $this->setSlotName($rec["name"]);
50  }
51 
57  function setComponentType($a_componenttype)
58  {
59  $this->componenttype = $a_componenttype;
60  }
61 
67  function getComponentType()
68  {
69  return $this->componenttype;
70  }
71 
77  function setComponentName($a_componentname)
78  {
79  $this->componentname = $a_componentname;
80  }
81 
87  function getComponentName()
88  {
89  return $this->componentname;
90  }
91 
97  function setSlotId($a_slotid)
98  {
99  $this->slotid = $a_slotid;
100  }
101 
107  function getSlotId()
108  {
109  return $this->slotid;
110  }
111 
117  function setSlotName($a_slotname)
118  {
119  $this->slotname = $a_slotname;
120  }
121 
127  function getSlotName()
128  {
129  return $this->slotname;
130  }
131 
136  {
137  return "./Customizing/global/plugins/".$this->getComponentType().
138  "/".$this->getComponentName()."/".$this->getSlotName();
139  }
140 
144  function _getPluginsDirectory($a_ctype, $a_cname, $a_slot_id)
145  {
146  return "./Customizing/global/plugins/".$a_ctype.
147  "/".$a_cname."/".ilPluginSlot::lookupSlotName($a_ctype, $a_cname, $a_slot_id);
148  }
149 
150 
154  function getPluginPhpFileName($a_plugin_name)
155  {
156  return $this->getPluginsDirectory()."/".
157  $a_plugin_name."/plugin.php";
158  }
159 
163  function checkPluginPhpFileAvailability($a_plugin_name)
164  {
165  if (@is_file($this->getPluginPhpFileName($a_plugin_name)))
166  {
167  return true;
168  }
169 
170  return false;
171  }
172 
176  function getPluginClassFileName($a_plugin_name)
177  {
178  return $this->getPluginsDirectory()."/".
179  $a_plugin_name."/classes/class.il".$a_plugin_name."Plugin.php";
180  }
181 
185  function checkClassFileAvailability($a_plugin_name)
186  {
187  if (@is_file($this->getPluginClassFileName($a_plugin_name)))
188  {
189  return true;
190  }
191 
192  return false;
193  }
194 
199  function getPrefix()
200  {
201  if ($this->prefix == "")
202  {
203  $this->prefix =
205  $this->getComponentName())."_".$this->getSlotId();
206  }
207 
208  return $this->prefix;
209  }
210 
215  {
216  global $ilPluginAdmin;
217 
218  // read plugins directory
219  $pl_dir = $this->getPluginsDirectory();
220 
221  if (!@is_dir($pl_dir))
222  {
223  return array();
224  }
225 
226  $dir = opendir($pl_dir);
227 
228  $plugins = array();
229  while($file = readdir($dir))
230  {
231  if ($file != "." and
232  $file != "..")
233  {
234  // directories
235  if (@is_dir($pl_dir."/".$file))
236  {
237  $plugin = array();
238 
239  $plugin = ilPlugin::lookupStoredData($this->getComponentType(),
240  $this->getComponentName(), $this->getSlotId(), $file);
241 
242  $pdata = $ilPluginAdmin->getAllData($this->getComponentType(),
243  $this->getComponentName(), $this->getSlotId(), $file);
244 
245  $plugin["version"] = $pdata["version"];
246  $plugin["id"] = $pdata["id"];
247  $plugin["is_active"] = $pdata["is_active"];
248  $plugin["inactive_reason"] = $pdata["inactive_reason"];
249  $plugin["needs_update"] = $pdata["needs_update"];
250  $plugin["ilias_min_version"] = $pdata["ilias_min_version"];
251  $plugin["ilias_max_version"] = $pdata["ilias_max_version"];
252  $plugin["activation_possible"] = $pdata["activation_possible"];
253  $plugin["responsible"] = $pdata["responsible"];
254  $plugin["responsible_mail"] = $pdata["responsible_mail"];
255 
256  $plugin["name"] = $file;
257  $plugin["plugin_php_file_status"] = $this->checkPluginPhpFileAvailability($file);
258  $plugin["class_file_status"] = $this->checkClassFileAvailability($file);
259  $plugin["class_file"] = "class.il".$plugin["name"]."Plugin.php";
260 
261  $plugins[] = $plugin;
262  }
263  }
264  }
265 
266  return $plugins;
267  }
268 
272  static function lookupSlotId($a_ctype, $a_cname, $a_slot_name)
273  {
274  global $ilDB;
275 
276  $q = "SELECT * FROM il_pluginslot WHERE component = ".
277  $ilDB->quote($a_ctype."/".$a_cname, "text").
278  " AND name = ".$ilDB->quote($a_slot_name, "text");
279  $set = $ilDB->query($q);
280  $rec = $ilDB->fetchAssoc($set);
281  return $rec["id"];
282  }
283 
287  static function lookupSlotName($a_ctype, $a_cname, $a_slot_id)
288  {
289  global $ilDB;
290 
291  $q = "SELECT * FROM il_pluginslot WHERE component = ".
292  $ilDB->quote($a_ctype."/".$a_cname, "text").
293  " AND id = ".$ilDB->quote($a_slot_id, "text");
294  $set = $ilDB->query($q);
295  $rec = $ilDB->fetchAssoc($set);
296  return $rec["name"];
297  }
298 
302  function getActivePlugins()
303  {
304  global $ilPluginAdmin;
305 
306  return $ilPluginAdmin->getActivePluginsForSlot($this->getComponentType(),
307  $this->getComponentName(), $this->getSlotId());
308  }
309 
310 
314  static function getAllSlots()
315  {
316  global $ilDB;
317 
318  $set = $ilDB->query("SELECT * FROM il_pluginslot ");
319  $slots = array();
320  while ($rec = $ilDB->fetchAssoc($set))
321  {
322  $pos = strpos($rec["component"], "/");
323  $slots[] = array(
324  "component_type" => substr($rec["component"], 0, $pos),
325  "component_name" => substr($rec["component"], $pos + 1),
326  "slot_id" => $rec["id"],
327  "slot_name" => $rec["name"]
328  );
329  }
330 
331  return $slots;
332  }
333 
334 }
335 ?>