ecom
E-commerce cms
 All Data Structures Namespaces Files Functions Variables Pages
Public Member Functions | Private Member Functions | Private Attributes
ModuleManager Class Reference

Public Member Functions

 __construct (&$context)
 
 listAvailableModules ()
 
 getModuleFromId ($id)
 
 __get ($key)
 

Private Member Functions

 loadModule ($path, $module)
 

Private Attributes

 $context
 
 $modules = array()
 

Detailed Description

Container all modules. Allow module managment

Definition at line 9 of file ModuleManager.php.

Constructor & Destructor Documentation

__construct ( $context)
Parameters
\Tool\Context$contextLoad all active modules from database. Enable hooks for these modules Disable them if the module cannot be loaded

Definition at line 38 of file ModuleManager.php.

39  {
40  $this->context = $context;
41  $modulesRoot = $context->router->modulesPath;
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  }
static getActivated()
Definition: Module.php:22
loadModule($path, $module)

Member Function Documentation

__get (   $key)

Getter

Definition at line 119 of file ModuleManager.php.

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  }
getModuleFromId (   $id)
Parameters
int$id
Returns
AModule on success, FALSE on failure (no such ID / module not loaded) Get the module identified with id ID

Definition at line 106 of file ModuleManager.php.

107  {
108  foreach ($this->modules as $i)
109  {
110  if ($i->entity->id == $id)
111  return $i;
112  }
113  return FALSE;
114  }
listAvailableModules ( )

Definition at line 87 of file ModuleManager.php.

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  }
loadModule($path, $module)
loadModule (   $path,
  $module 
)
private
Parameters
string$pathpath to module's main file
\Entity\Module$modulemodule's database object to load /core/models/Module.php
Returns
TRUE on success Will try to load module located at $path. This function will include the main.php file located in the module's directory The file MUST return an AModule object to be considered as successfull /core/tools/AModule.php

Definition at line 71 of file ModuleManager.php.

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  }

Field Documentation

Tools Context $context
private

/core/tools/Context.php Contains website's informations

Definition at line 16 of file ModuleManager.php.

$modules = array()
private

Definition at line 24 of file ModuleManager.php.


The documentation for this class was generated from the following file: