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

Public Member Functions

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

Private Member Functions

 loadModuleFile ($path)
 
 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  $i->active = false;
54  $i->save();
55  }
56  }
57  $context->hookManager->loadHooks(\Entity\ModuleHook::getModules($ids));
58  }
static getActivated()
Definition: Module.php:22
loadModule($path, $module)

Member Function Documentation

__get (   $key)

Getter

Definition at line 153 of file ModuleManager.php.

154  {
155  switch ($key)
156  {
157  case "modules":
158  return $this->modules; break;
159  }
160  if (substr($key, 0, 4) == "_id_")
161  return $this->getModuleFromId((int) substr($key, 4));
162  throw new \Exception("Cannot access attribute {$key}");
163  }
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 140 of file ModuleManager.php.

141  {
142  foreach ($this->modules as $i)
143  {
144  if ($i->entity->id == $id)
145  return $i;
146  }
147  return FALSE;
148  }
install (   $modulename)
Parameters
string$modulename
Returns
|false on failure Install the module located in {modulePath}/modulename/modulename.php

Definition at line 98 of file ModuleManager.php.

99  {
100  $entity = new \Entity\Module();
101  $entity->name = $modulename;
102  $entity->directory = $modulename;
103  $entity->active = true;
104  $module = $this->loadModuleFile($this->context->router->modulesPath.$modulename.'/main.php');
105  if ($module === false)
106  return false;
107  $entity->name = $module->getName();
108  $entity->description = $module->getDescription();
109  if ($module->install() == false)
110  return false;
111  $entity->save();
112  $module->setEntity($entity);
113  return $module;
114  }
listAvailableModules ( )

Definition at line 121 of file ModuleManager.php.

122  {
123  $modulesRoot = $context->router->modulesPath;
124  $result = array();
125  $modules = scandir($modulesRoot, SCANDIR_SORT_NONE);
126  foreach ($modules as $i)
127  {
128  $path = $modulesRoot.$i;
129  if ($i == '.' || $i == '..' || !is_dir($path))
130  continue;
131  $this->loadModule($path);
132  }
133  }
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 83 of file ModuleManager.php.

84  {
85  $mod = $this->loadModuleFile($path);
86  if ($mod === false)
87  return false;
88  $mod->setEntity($module);
89  $this->modules[] = $mod;
90  return true;
91  }
loadModuleFile (   $path)
private
Parameters
string$path
Returns
loaded module (or false on error)

Definition at line 64 of file ModuleManager.php.

65  {
66  $mod = include_once($path);
67  if (!$mod || !($mod instanceof \Tools\AModule))
68  return false;
69  $mod->setContext($this->context);
70  return $mod;
71  }

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: