' . ts('A new permission, "%1", has been added. This permission is now used to control access to the Manage Tags screen.', array(1 => ts('manage tags'))) . '

'; // } if ($rev == '5.23.alpha1' && version_compare($currentVer, '4.7', '>=')) { if ($this->hasConfigBackendData()) { $preUpgradeMessage .= '
' . ts("WARNING: The column \"civicrm_domain.config_backend\" is flagged for removal. However, the upgrader has detected data in this copy of \"civicrm_domain.config_backend\". Please report anything you can about the usage of this column. In the mean-time, the data will be preserved.", [ 1 => 'https://civicrm.org/bug-reporting', 2 => 'https://lab.civicrm.org/dev/core/issues/1387', ]); } } } /** * Compute any messages which should be displayed after upgrade. * * @param string $postUpgradeMessage * alterable. * @param string $rev * an intermediate version; note that setPostUpgradeMessage is called repeatedly with different $revs. */ public function setPostUpgradeMessage(&$postUpgradeMessage, $rev) { // Example: Generate a post-upgrade message. // if ($rev == '5.12.34') { // $postUpgradeMessage .= '

' . ts("By default, CiviCRM now disables the ability to import directly from SQL. To use this feature, you must explicitly grant permission 'import SQL datasource'."); // } } /* * Important! All upgrade functions MUST add a 'runSql' task. * Uncomment and use the following template for a new upgrade version * (change the x in the function name): */ // /** // * Upgrade function. // * // * @param string $rev // */ // public function upgrade_5_0_x($rev) { // $this->addTask(ts('Upgrade DB to %1: SQL', [1 => $rev]), 'runSql', $rev); // $this->addTask('Do the foo change', 'taskFoo', ...); // // Additional tasks here... // // Note: do not use ts() in the addTask description because it adds unnecessary strings to transifex. // // The above is an exception because 'Upgrade DB to %1: SQL' is generic & reusable. // } /** * Upgrade function. * * @param string $rev */ public function upgrade_5_23_alpha1($rev) { $this->addTask(ts('Upgrade DB to %1: SQL', [1 => $rev]), 'runSql', $rev); $this->addTask('Remove Google + location option', 'removeGooglePlusOption'); $this->addTask('dev/mailing#59 Add in IMAP_XOAUTH2 protocol option for mailbox access', 'addXoauth2ProtocolOption'); $this->addTask('dev/translation#34 Fix contact-reference option for Postal Code', 'fixContactRefOptionPostalCode'); // (dev/core#1387) This column was dropped in 4.7.alpha1, but it was still created on new installs. if (!$this->hasConfigBackendData()) { $this->addTask('Drop column "civicrm_domain.config_backend"', 'dropColumn', 'civicrm_domain', 'config_backend'); } } /** * Add in the IMAP XOAUTH2 mailing protocol option */ public static function addXoauth2ProtocolOption(CRM_Queue_TaskContext $ctx) { CRM_Core_BAO_OptionValue::ensureOptionValueExists([ 'option_group_id' => 'mail_protocol', 'name' => 'IMAP_XOAUTH2', 'label' => 'IMAP XOAUTH2', 'is_active' => FALSE, ]); return TRUE; } /** * Remove Google + option value option for website type * only if there is no websites using it */ public static function removeGooglePlusOption(CRM_Queue_TaskContext $ctx) { $googlePlusValue = CRM_Core_PseudoConstant::getKey('CRM_Core_BAO_Website', 'website_type_id', 'Google_'); if ($googlePlusValue) { $values = CRM_Core_DAO::executeQuery("SELECT * FROM civicrm_website WHERE website_type_id = %1", [1 => [$googlePlusValue, 'Positive']])->fetchAll(); if (empty($values)) { $optionGroup = CRM_Core_DAO::singleValueQuery("SELECT id FROM civicrm_option_group WHERE name = 'website_type'"); \Civi\Api4\OptionValue::delete() ->addWhere('value', '=', $googlePlusValue) ->addWhere('option_group_id', '=', $optionGroup) ->setCheckPermissions(FALSE) ->execute(); } } return TRUE; } /** * Fix the Contact Reference 'Postal Code' option. */ public static function fixContactRefOptionPostalCode(CRM_Queue_TaskContext $ctx) { $optionGroup = \Civi\Api4\OptionGroup::get() ->setSelect(['id']) ->addWhere('name', '=', 'contact_reference_options') ->setCheckPermissions(FALSE) ->execute() ->first(); if (!$optionGroup) { return TRUE; } $optionValue = \Civi\Api4\OptionValue::get() ->setSelect(['id', 'name']) ->addWhere('option_group_id', '=', $optionGroup['id']) ->addWhere('label', '=', ts('Postal Code')) ->setCheckPermissions(FALSE) ->execute() ->first(); if (!$optionValue || $optionValue['name'] == 'postal_code') { return TRUE; } \Civi\Api4\OptionValue::update() ->addWhere('id', '=', $optionValue['id']) ->addValue('name', 'postal_code') ->setCheckPermissions(FALSE) ->execute(); return TRUE; } /** * @return bool */ private function hasConfigBackendData() { return CRM_Core_BAO_SchemaHandler::checkIfFieldExists('civicrm_domain', 'config_backend') && CRM_Core_DAO::singleValueQuery('SELECT count(*) c FROM `civicrm_domain` WHERE config_backend IS NOT NULL') > 0; } }