
Public Member Functions | |
| makeModuleFromExtension ($extension) | |
| countModules ($position, $isAdmin) | |
| getModules ($position, $isAdmin) | |
| getModuleByID ($id) | |
| getModuleByFormalName ($formalname) | |
| getSelectedModules ($position='', $formalname='', $search='', $admin=false) | |
| getModulesByPosition ($admin) | |
| getMenus ($module_id) | |
| getDistinctNames () | |
| deleteModules ($ids) | |
| publishModules ($ids, $new_publish) | |
| changeOrder ($id, $direction) | |
| updateOrdering ($orders) | |
Static Public Member Functions | |
| static | getInstance () |
Protected Member Functions | |
| __construct () | |
Protected Attributes | |
| $extensiondir = '/modules/' | |
Static Protected Attributes | |
| static | $instance = __CLASS__ |
Private Member Functions | |
| getVisibleKeys ($position, $isAdmin) | |
Private Attributes | |
| $allModules = array() | |
| $keyToSubscript = array() | |
| $user_area_links = array() | |
| $admin_area_links = array() | |
| $allMenusByModule = array() | |
| $allModulesByMenu = array() | |
| $distinct_user_side = array() | |
| $visibleKeys = array() | |
| $modulesByFormalName = array() | |
Definition at line 74 of file aliroModule.php.
| aliroModuleHandler::__construct | ( | ) | [protected] |
Definition at line 89 of file aliroModule.php.
References $distinct_user_side, aliroCoreDatabase::getInstance(), published(), and T_().
00089 { 00090 $query = "SELECT m1.*, (CASE WHEN m2.menuid = 0 THEN 'All' WHEN m2.menuid IS NULL THEN 'None' ELSE 'Varies' END) pages" 00091 ." FROM `#__modules` m1 LEFT JOIN `#__modules_menu` m2 ON m1.id = m2.moduleid" 00092 ." GROUP BY m1.id ORDER BY m1.position, m1.ordering"; 00093 $database = aliroCoreDatabase::getInstance(); 00094 if ($result = $database->doSQLget($query, 'aliroModule')) $this->allModules = $result; 00095 $translatePages = array ('All' => T_('All'), 'None' => T_('None'), 'Varies' => T_('Varies')); 00096 foreach ($this->allModules as $sub=>&$module) { 00097 $this->keyToSubscript[$module->id] = $sub; 00098 $this->modulesByFormalName[$module->module] = $sub; 00099 $module->pages = $translatePages[$module->pages]; 00100 if ($module->published) { 00101 if ($module->admin & 1) $this->user_area_links[$module->position][] = $module->id; 00102 if ($module->admin & 2) $this->admin_area_links[$module->position][] = $module->id; 00103 } 00104 if ($module->admin & 1) $distinct_user_side[$module->module] = 1; 00105 } 00106 if (isset($distinct_user_side)) { 00107 $this->distinct_user_side = array_keys($distinct_user_side); 00108 sort($this->distinct_user_side); 00109 } 00110 $database->setQuery ("SELECT * FROM #__modules_menu"); 00111 if ($menus = $database->loadObjectList()) foreach ($menus as $menu) { 00112 $this->allMenusByModule[$menu->moduleid][] = $menu->menuid; 00113 } 00114 $database->setQuery("SELECT m1.menuid, m2.moduleid FROM `#__modules_menu` m1" 00115 ." INNER JOIN `#__modules_menu` m2 ON m1.menuid = m2.menuid OR m2.menuid =0" 00116 ." GROUP BY m1.menuid, m2.moduleid"); 00117 if ($menus = $database->loadObjectList()) foreach ($menus as $menu) { 00118 $this->allModulesByMenu[$menu->menuid][] = $menu->moduleid; 00119 } 00120 }
| static aliroModuleHandler::getInstance | ( | ) | [static] |
Definition at line 123 of file aliroModule.php.
Referenced by aliroAdminScreenArea::countModules(), aliroUserScreenArea::countModules(), aliroAdminScreenArea::loadModules(), and aliroUserScreenArea::loadModules().
00123 { 00124 return is_object(self::$instance) ? self::$instance : (self::$instance = parent::getCachedSingleton(self::$instance)); 00125 }
| aliroModuleHandler::makeModuleFromExtension | ( | $ | extension | ) |
Definition at line 127 of file aliroModule.php.
References aliroModule, and T_().
00127 { 00128 $newmodule = new aliroModule(); 00129 $newmodule->title = T_('Please select a title'); 00130 // Can't set ordering until we know position 00131 $newmodule->published = 1; 00132 $newmodule->module = $extension->formalname; 00133 $newmodule->showtitle = 1; 00134 $newmodule->admin = $extension->admin; 00135 $newmodule->class = $extension->class; 00136 $newmodule->adminclass = $extension->adminclass; 00137 return $newmodule; 00138 }
| aliroModuleHandler::getVisibleKeys | ( | $ | position, | |
| $ | isAdmin | |||
| ) | [private] |
Definition at line 140 of file aliroModule.php.
References aliroAuthoriser::getInstance(), and aliroRequest::getInstance().
Referenced by countModules(), and getModules().
00140 { 00141 if (isset($this->visibleKeys[$position][$isAdmin])) return $this->visibleKeys[$position][$isAdmin]; 00142 $result = array(); 00143 if ($isAdmin) $elements = isset($this->admin_area_links[$position]) ? $this->admin_area_links[$position] : array(); 00144 else $elements = isset($this->user_area_links[$position]) ? $this->user_area_links[$position] : array(); 00145 $currentmenu = aliroRequest::getInstance()->getItemid(); 00146 if (!isset($this->allModulesByMenu[$currentmenu])) $currentmenu = 0; 00147 if (isset($this->allModulesByMenu[$currentmenu])) { 00148 $elements = array_intersect($elements, $this->allModulesByMenu[$currentmenu]); 00149 $authoriser = aliroAuthoriser::getInstance(); 00150 foreach ($elements as $element) if ($authoriser->checkUserPermission ('view', 'aliroModule', $element)) $result[] = $element; 00151 } 00152 $this->visibleKeys[$position][$isAdmin] = $result; 00153 return $result; 00154 }
| aliroModuleHandler::countModules | ( | $ | position, | |
| $ | isAdmin | |||
| ) |
Definition at line 156 of file aliroModule.php.
References getVisibleKeys().
00156 { 00157 return count($this->getVisibleKeys ($position, $isAdmin)); 00158 }
| aliroModuleHandler::getModules | ( | $ | position, | |
| $ | isAdmin | |||
| ) |
Definition at line 160 of file aliroModule.php.
References getVisibleKeys().
00160 { 00161 $result = array(); 00162 $keys = $this->getVisibleKeys ($position, $isAdmin); 00163 foreach ($keys as $key) $result[] = $this->allModules[$this->keyToSubscript[$key]]; 00164 return $result; 00165 }
| aliroModuleHandler::getModuleByID | ( | $ | id | ) |
Definition at line 167 of file aliroModule.php.
00167 { 00168 return isset($this->allModules[$this->keyToSubscript[$id]]) ? $this->allModules[$this->keyToSubscript[$id]] : null; 00169 }
| aliroModuleHandler::getModuleByFormalName | ( | $ | formalname | ) |
Definition at line 171 of file aliroModule.php.
00171 { 00172 return isset($this->modulesByFormalName[$formalname]) ? $this->allModules[$this->modulesByFormalName[$formalname]] : null; 00173 }
| aliroModuleHandler::getSelectedModules | ( | $ | position = '', |
|
| $ | formalname = '', |
|||
| $ | search = '', |
|||
| $ | admin = false | |||
| ) |
Definition at line 175 of file aliroModule.php.
00175 { 00176 $results = array(); 00177 foreach ($this->allModules as $module) { 00178 if ($admin) { 00179 if (!($module->admin & 2)) continue; 00180 } 00181 elseif (!($module->admin & 1)) continue; 00182 if ($position AND $module->position != $position) continue; 00183 if ($formalname AND $module->module != $formalname) continue; 00184 if ($search AND strpos(strtolower($module->title), $search) === false) continue; 00185 $results[] = $module; 00186 } 00187 return $results; 00188 }
| aliroModuleHandler::getModulesByPosition | ( | $ | admin | ) |
Definition at line 190 of file aliroModule.php.
00190 { 00191 $results = array(); 00192 $check = $admin ? 2 : 1; 00193 foreach ($this->allModules as $module) { 00194 if ($module->admin & $check) $results[$module->position][] = $module; 00195 } 00196 return $results; 00197 }
| aliroModuleHandler::getMenus | ( | $ | module_id | ) |
Definition at line 199 of file aliroModule.php.
00199 { 00200 return isset($this->allMenusByModule[$module_id]) ? $this->allMenusByModule[$module_id] : array(); 00201 }
| aliroModuleHandler::getDistinctNames | ( | ) |
| aliroModuleHandler::deleteModules | ( | $ | ids | ) |
Definition at line 207 of file aliroModule.php.
References aliroCommonExtHandler::clearCache(), and aliroCoreDatabase::getInstance().
00207 { 00208 foreach ($ids as &$id) $id = intval($id); 00209 $idlist = implode (',', $ids); 00210 $database = aliroCoreDatabase::getInstance(); 00211 $database->doSQL ("DELETE FROM #__modules WHERE id IN ('$idlist')"); 00212 $database->doSQL ("DELETE FROM #__modules_menu WHERE moduleid IN ('$idlist')"); 00213 $this->clearCache(); 00214 }
| aliroModuleHandler::publishModules | ( | $ | ids, | |
| $ | new_publish | |||
| ) |
Definition at line 216 of file aliroModule.php.
References aliroCommonExtHandler::clearCache(), and aliroCoreDatabase::getInstance().
00216 { 00217 foreach ($ids as &$id) $id = intval($id); 00218 $new_publish = intval($new_publish); 00219 $idlist = implode (',', $ids); 00220 $database = aliroCoreDatabase::getInstance(); 00221 $database->doSQL ("UPDATE #__modules SET published = $new_publish WHERE id IN ($idlist)"); 00222 $this->clearCache(); 00223 }
| aliroModuleHandler::changeOrder | ( | $ | id, | |
| $ | direction | |||
| ) |
Definition at line 225 of file aliroModule.php.
References updateOrdering().
00225 { 00226 $module = $this->allModules[$this->keyToSubscript[$id]]; 00227 $movement = 'down' == $direction ? 15 : -15; 00228 $this->updateOrdering (array($id => $module->ordering + $movement)); 00229 }
| aliroModuleHandler::updateOrdering | ( | $ | orders | ) |
Definition at line 231 of file aliroModule.php.
References aliroCommonExtHandler::clearCache(), and aliroCoreDatabase::getInstance().
Referenced by changeOrder().
00231 { 00232 foreach ($orders as $id=>$order) { 00233 $module = $this->allModules[$this->keyToSubscript[$id]]; 00234 if ($module->ordering != $order) $changes[$id] = $order; 00235 } 00236 foreach ($this->allModules as $module) { 00237 $ordering = isset($changes[$module->id]) ? $changes[$module->id] : $module->ordering; 00238 $allmodules[$module->position][$ordering] = $module->id; 00239 } 00240 $changed = false; 00241 $query = "UPDATE #__modules SET ordering = CASE "; 00242 foreach ($allmodules as $position=>$orderings) { 00243 $order = 10; 00244 ksort($orderings); 00245 foreach ($orderings as $ordering=>$id) { 00246 $module = $this->allModules[$this->keyToSubscript[$id]]; 00247 if ($order != $module->ordering) { 00248 $query .= "WHEN id = $id THEN $order "; 00249 $changed = true; 00250 } 00251 $order += 10; 00252 } 00253 } 00254 if ($changed) { 00255 $query .= 'ELSE ordering END'; 00256 aliroCoreDatabase::getInstance()->doSQL ($query); 00257 $this->clearCache(); 00258 } 00259 }
aliroModuleHandler::$instance = __CLASS__ [static, protected] |
Definition at line 75 of file aliroModule.php.
aliroModuleHandler::$allModules = array() [private] |
Definition at line 77 of file aliroModule.php.
aliroModuleHandler::$keyToSubscript = array() [private] |
Definition at line 78 of file aliroModule.php.
aliroModuleHandler::$user_area_links = array() [private] |
Definition at line 79 of file aliroModule.php.
aliroModuleHandler::$admin_area_links = array() [private] |
Definition at line 80 of file aliroModule.php.
aliroModuleHandler::$allMenusByModule = array() [private] |
Definition at line 81 of file aliroModule.php.
aliroModuleHandler::$allModulesByMenu = array() [private] |
Definition at line 82 of file aliroModule.php.
aliroModuleHandler::$distinct_user_side = array() [private] |
aliroModuleHandler::$visibleKeys = array() [private] |
Definition at line 84 of file aliroModule.php.
aliroModuleHandler::$modulesByFormalName = array() [private] |
Definition at line 85 of file aliroModule.php.
aliroModuleHandler::$extensiondir = '/modules/' [protected] |
Definition at line 87 of file aliroModule.php.
1.5.5