示例#1
0
文件: Move.php 项目: sinfocol/gwf3
 private function onMove($modulename)
 {
     $modules = GWF_Module::getModules();
     usort($modules, array(__CLASS__, 'sortByPriority'));
     $mode = $this->getMoveMode();
     if (false === ($current = GWF_Module::getModule($modulename))) {
         return $this->module->error('err_mod_not_installed');
     }
     $order = array('first' => false, 'prev' => false, 'curr' => $current, 'next' => false, 'last' => false);
     $curr = $current;
     $prev = $current;
     $realprev = false;
     $priority = 1;
     foreach ($modules as $m) {
         if ($order['first'] === false) {
             $order['first'] = $m;
         }
         $prev = $curr;
         $curr = $m;
         if ($curr->getName() == $modulename) {
             $realprev = $prev;
         }
         if ($prev->getName() === $modulename) {
             $order['next'] = $m;
         }
         $m->saveVar('module_priority', $priority++);
     }
     $order['prev'] = $prev;
     $order['last'] = $curr;
     switch ($mode) {
         case self::$MOVE_UP:
             $exchange = $order['prev'];
             break;
         case self::$MOVE_DOWN:
             $exchange = $order['next'];
             break;
         case self::$MOVE_FIRST:
             $exchange = $order['first'];
             break;
         case self::$MOVE_LAST:
             $exchange = $order['last'];
             break;
         default:
             die('F****D UP!');
     }
     $this->switchPriority($current, $exchange);
     $_GET['by'] = 'module_priority';
     $_GET['dir'] = 'ASC';
     return $this->module->requestMethodB('Modules');
 }