aliroModuleHandler Class Reference

Inheritance diagram for aliroModuleHandler:

aliroCommonExtHandler cachedSingleton

List of all members.

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()


Detailed Description

Definition at line 74 of file aliroModule.php.


Constructor & Destructor Documentation

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     }


Member Function Documentation

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 (  ) 

Definition at line 203 of file aliroModule.php.

00203                                         {
00204         return $this->distinct_user_side;
00205     }

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     }


Member Data Documentation

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]

Definition at line 83 of file aliroModule.php.

Referenced by __construct().

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.


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

Generated on Thu Apr 17 13:03:30 2008 for ALIRO by  doxygen 1.5.5