XOOPS 2.5.6  Final
 All Classes Namespaces Files Functions Variables Pages
preload.php
Go to the documentation of this file.
1 <?php
26 defined('XOOPS_ROOT_PATH') or die('Restricted access');
27 
28 XoopsLoad::load('XoopsLists');
29 XoopsLoad::load('XoopsCache');
30 
41 {
45  var $_preloads = array();
46 
50  var $_events = array();
51 
57  function XoopsPreload()
58  {
59  $this->setPreloads();
60  $this->setEvents();
61  }
62 
68  static function &getInstance()
69  {
70  static $instance = false;
71  if (!$instance) {
72  $instance = new XoopsPreload();
73  }
74  return $instance;
75  }
76 
82  function setPreloads()
83  {
84  //$modules_list = XoopsLists::getDirListAsArray(XOOPS_ROOT_PATH . "/modules/");
85  if ($modules_list = XoopsCache::read('system_modules_active')) {
86  $i = 0;
87  foreach ($modules_list as $module) {
88  if (is_dir($dir = XOOPS_ROOT_PATH . "/modules/{$module}/preloads/")) {
89  $file_list = XoopsLists::getFileListAsArray($dir);
90  foreach ($file_list as $file) {
91  if (preg_match('/(\.php)$/i', $file)) {
92  $file = substr($file, 0, -4);
93  $this->_preloads[$i]['module'] = $module;
94  $this->_preloads[$i]['file'] = $file;
95  $i++;
96  }
97  }
98  }
99  }
100  }
101  }
102 
108  function setEvents()
109  {
110  foreach ($this->_preloads as $preload) {
111  include_once XOOPS_ROOT_PATH . '/modules/' . $preload['module'] . '/preloads/' . $preload['file']. '.php';
112  $class_name = ucfirst($preload['module']) . ucfirst($preload['file']) . 'Preload' ;
113  if (!class_exists($class_name)) {
114  continue;
115  }
116  $class_methods = get_class_methods($class_name);
117  foreach ($class_methods as $method) {
118  if (strpos($method, 'event') === 0) {
119  $event_name = strtolower(str_replace('event', '', $method));
120  $event= array('class_name' => $class_name, 'method' => $method);
121  $this->_events[$event_name][] = $event;
122  }
123  }
124  }
125  }
126 
135  function triggerEvent($event_name, $args = array())
136  {
137  $event_name = strtolower(str_replace('.', '', $event_name));
138  if (isset($this->_events[$event_name])) {
139  foreach ($this->_events[$event_name] as $event) {
140  call_user_func(array($event['class_name'], $event['method']), $args);
141  }
142  }
143  }
144 
145 }
146 
159 {
160  function XoopsPreloadItem()
161  {
162  }
163 }
164 
165 ?>