function run()
 {
     $queue = CRM_Core_Extensions_Upgrades::createQueue();
     $runner = new CRM_Queue_Runner(array('title' => ts('Database Upgrades'), 'queue' => $queue, 'errorMode' => CRM_Queue_Runner::ERROR_ABORT, 'onEnd' => array('CRM_Admin_Page_ExtensionsUpgrade', 'onEnd'), 'onEndUrl' => CRM_Utils_System::url(self::END_URL, self::END_PARAMS)));
     CRM_Core_Error::debug_log_message('CRM_Admin_Page_ExtensionsUpgrade: Start upgrades');
     $runner->runAllViaWeb();
     // does not return
 }
 /**
  * Browse all options
  *
  *
  * @return void
  * @access public
  * @static
  */
 function browse()
 {
     $this->assign('extEnabled', FALSE);
     if (self::$_extensions !== NULL) {
         $this->assign('extEnabled', TRUE);
     } else {
         return;
     }
     $this->assign('extDbUpgrades', CRM_Core_Extensions_Upgrades::hasPending());
     $this->assign('extDbUpgradeUrl', CRM_Utils_System::url('civicrm/admin/extensions/upgrade', 'reset=1'));
     $extensionRows = array();
     $em = self::$_extensions;
     $fid = 1;
     foreach ($em as $key => $obj) {
         // for extensions which aren't installed, create a
         // dummy/placeholder id
         if (isset($obj->id)) {
             $id = $obj->id;
         } else {
             $id = 'x' . $fid++;
         }
         $extensionRows[$id] = (array) $obj;
         // assign actions
         if ($obj->status == CRM_Core_Extensions_Extension::STATUS_INSTALLED || $obj->status == CRM_Core_Extensions_Extension::STATUS_MISSING) {
             if ($obj->is_active) {
                 $action = CRM_Core_Action::DISABLE;
                 if ($obj->upgradable) {
                     $action += CRM_Core_Action::UPDATE;
                 }
             } else {
                 $action = array_sum(array_keys($this->links()));
                 $action -= CRM_Core_Action::DISABLE;
                 $action -= CRM_Core_Action::ADD;
                 if (!$obj->upgradable) {
                     $action -= CRM_Core_Action::UPDATE;
                 }
                 if ($obj->status == CRM_Core_Extensions_Extension::STATUS_MISSING) {
                     // do not allow Enable for a MISSING status extension
                     $action -= CRM_Core_Action::ENABLE;
                 }
             }
             $extensionRows[$id]['action'] = CRM_Core_Action::formLink(self::links(), $action, array('id' => $id, 'key' => $obj->key));
         } else {
             $action = array_sum(array_keys($this->links()));
             $action -= CRM_Core_Action::DISABLE;
             $action -= CRM_Core_Action::ENABLE;
             $action -= CRM_Core_Action::DELETE;
             $action -= CRM_Core_Action::UPDATE;
             $extensionRows[$id]['action'] = CRM_Core_Action::formLink(self::links(), $action, array('id' => $id, 'key' => $obj->key));
         }
     }
     $this->assign('extensionRows', $extensionRows);
 }