ecom
E-commerce cms
 All Data Structures Namespaces Files Functions Variables Pages
ModuleManager.php
Go to the documentation of this file.
1 <?php
2 
3 namespace Tools;
4 
10 {
16  private $context;
17 
24  private $modules = array();
25 
38  public function __construct(&$context)
39  {
40  $this->context = $context;
41  $modulesRoot = $context->router->modulesPath;
42  $modules = \Entity\Module::getActivated();
43  $ids = array();
44  foreach ($modules as $i)
45  {
46  $modulePath = "{$modulesRoot}{$i->directory}/main.php";
47  if (file_exists($modulePath) && $this->loadModule($modulePath, $i))
48  {
49  $ids[] = $i->id;
50  }
51  else
52  {
53  die ("out");
54  $i->active = false;
55  $i->save();
56  }
57  }
58  $context->hookManager->loadHooks(\Entity\ModuleHook::getModules($ids));
59  }
60 
71  private function loadModule($path, $module)
72  {
73  $mod = include_once($path);
74  if (!$mod || !($mod instanceof \Tools\AModule))
75  return false;
76  $mod->setContext($this->context);
77  $mod->setEntity($module);
78  $this->modules[] = $mod;
79  return true;
80  }
81 
82  /*
83  * TODO revoir tout
84  * @return array(AModule)
85  * Will load every modules, and return them.
86  **/
87  public function listAvailableModules()
88  {
89  $modulesRoot = $context->router->modulesPath;
90  $result = array();
91  $modules = scandir($modulesRoot, SCANDIR_SORT_NONE);
92  foreach ($modules as $i)
93  {
94  $path = $modulesRoot.$i;
95  if ($i == '.' || $i == '..' || !is_dir($path))
96  continue;
97  $this->loadModule($path);
98  }
99  }
100 
106  public function getModuleFromId($id)
107  {
108  foreach ($this->modules as $i)
109  {
110  if ($i->entity->id == $id)
111  return $i;
112  }
113  return FALSE;
114  }
115 
119  public function __get($key)
120  {
121  switch ($key)
122  {
123  case "modules":
124  return $this->modules; break;
125  }
126  if (substr($key, 0, 4) == "_id_")
127  return $this->getModuleFromId((int) substr($key, 4));
128  throw new \Exception("Cannot access attribute {$key}");
129  }
130 }
131 
static getActivated()
Definition: Module.php:22
loadModule($path, $module)
__construct(&$context)