public function run()
 {
     $queue = CRM_Extension_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
 }
Ejemplo n.º 2
0
/**
 * Upgrade an extension - runs upgrade_N hooks and system.flush.
 *
 * @return array
 *   API result
 */
function civicrm_api3_extension_upgrade()
{
    CRM_Core_Invoke::rebuildMenuAndCaches(TRUE);
    $queue = CRM_Extension_Upgrades::createQueue();
    $runner = new CRM_Queue_Runner(array('title' => 'Extension Upgrades', 'queue' => $queue, 'errorMode' => CRM_Queue_Runner::ERROR_ABORT));
    try {
        $result = $runner->runAll();
    } catch (CRM_Extension_Exception $e) {
        return civicrm_api3_create_error($e->getMessage());
    }
    if ($result === TRUE) {
        return civicrm_api3_create_success();
    } else {
        return $result;
    }
}
Ejemplo n.º 3
0
 /**
  * Browse all options.
  *
  *
  * @return void
  */
 public function browse()
 {
     $mapper = CRM_Extension_System::singleton()->getMapper();
     $manager = CRM_Extension_System::singleton()->getManager();
     // build announcements at the top of the page
     $this->assign('extAddNewEnabled', CRM_Extension_System::singleton()->getBrowser()->isEnabled());
     $reqs = CRM_Extension_System::singleton()->getDownloader()->checkRequirements();
     if (empty($reqs)) {
         $reqs = CRM_Extension_System::singleton()->getBrowser()->checkRequirements();
     }
     if (empty($reqs)) {
         $reqs = CRM_Extension_System::singleton()->getDefaultContainer()->checkRequirements();
     }
     $this->assign('extAddNewReqs', $reqs);
     $this->assign('extDbUpgrades', CRM_Extension_Upgrades::hasPending());
     $this->assign('extDbUpgradeUrl', CRM_Utils_System::url('civicrm/admin/extensions/upgrade', 'reset=1'));
     // TODO: Debate whether to immediately detect changes in underlying source tree
     // $manager->refresh();
     // build list of local extensions
     $localExtensionRows = array();
     // array($pseudo_id => extended_CRM_Extension_Info)
     $keys = array_keys($manager->getStatuses());
     sort($keys);
     foreach ($keys as $key) {
         try {
             $obj = $mapper->keyToInfo($key);
         } catch (CRM_Extension_Exception $ex) {
             CRM_Core_Session::setStatus(ts('Failed to read extension (%1). Please refresh the extension list.', array(1 => $key)));
             continue;
         }
         $row = self::createExtendedInfo($obj);
         $row['id'] = $obj->key;
         // assign actions
         $action = 0;
         switch ($row['status']) {
             case CRM_Extension_Manager::STATUS_UNINSTALLED:
                 $action += CRM_Core_Action::ADD;
                 break;
             case CRM_Extension_Manager::STATUS_DISABLED:
                 $action += CRM_Core_Action::ENABLE;
                 $action += CRM_Core_Action::DELETE;
                 break;
             case CRM_Extension_Manager::STATUS_DISABLED_MISSING:
                 $action += CRM_Core_Action::DELETE;
                 break;
             case CRM_Extension_Manager::STATUS_INSTALLED:
             case CRM_Extension_Manager::STATUS_INSTALLED_MISSING:
                 $action += CRM_Core_Action::DISABLE;
                 break;
             default:
         }
         // TODO if extbrowser is enabled and extbrowser has newer version than extcontainer,
         // then $action += CRM_Core_Action::UPDATE
         $row['action'] = CRM_Core_Action::formLink(self::links(), $action, array('id' => $row['id'], 'key' => $obj->key), ts('more'), FALSE, 'extension.local.action', 'Extension', $row['id']);
         // Key would be better to send, but it's not an integer.  Moreover, sending the
         // values to hook_civicrm_links means that you can still get at the key
         $localExtensionRows[$row['id']] = $row;
     }
     $this->assign('localExtensionRows', $localExtensionRows);
     // build list of available downloads
     $remoteExtensionRows = array();
     foreach (CRM_Extension_System::singleton()->getBrowser()->getExtensions() as $info) {
         $row = (array) $info;
         $row['id'] = $info->key;
         $action = CRM_Core_Action::UPDATE;
         $row['action'] = CRM_Core_Action::formLink(self::links(), $action, array('id' => $row['id'], 'key' => $row['key']), ts('more'), FALSE, 'extension.remote.action', 'Extension', $row['id']);
         if (isset($localExtensionRows[$info->key])) {
             if (version_compare($localExtensionRows[$info->key]['version'], $info->version, '<')) {
                 $row['is_upgradeable'] = TRUE;
             }
         }
         $remoteExtensionRows[$row['id']] = $row;
     }
     $this->assign('remoteExtensionRows', $remoteExtensionRows);
 }
Ejemplo n.º 4
0
 /**
  * Checks if extensions are set up properly
  * @return array
  */
 public function checkExtensionUpgrades()
 {
     $messages = array();
     if (CRM_Extension_Upgrades::hasPending()) {
         $messages[] = new CRM_Utils_Check_Message(__FUNCTION__, ts('Extension upgrades are pending.  Please visit <a href="%1">the upgrade page</a> to run them.', array(1 => CRM_Utils_System::url('civicrm/admin/extensions/upgrade', 'reset=1'))), ts('Run Extension Upgrades'), \Psr\Log\LogLevel::ERROR, 'fa-plug');
     }
     return $messages;
 }