' .
ts('This webserver is running an outdated version of PHP (%1). The recommended version is %2 or later.', array(
1 => phpversion(),
2 => self::MIN_RECOMMENDED_PHP_VER,
)) .
'
' .
ts('You may proceed with the upgrade and CiviCRM %1 will continue working normally, but future releases will require PHP %2.', array(
1 => $latestVer,
2 => self::MIN_RECOMMENDED_PHP_VER,
));
}
// http://issues.civicrm.org/jira/browse/CRM-13572
// Depending on how the code was upgraded, some sites may still have copies of old
// source files left behind. This is often a forgivable offense, but it's quite
// dangerous for CIVI-SA-2013-001.
global $civicrm_root;
$ofcFile = "$civicrm_root/packages/OpenFlashChart/php-ofc-library/ofc_upload_image.php";
if (file_exists($ofcFile)) {
if (@unlink($ofcFile)) {
$preUpgradeMessage .= '
' . ts('This system included an outdated, insecure script (%1). The file was automatically deleted.', array(
1 => $ofcFile,
));
}
else {
$preUpgradeMessage .= '
' . ts('This system includes an outdated, insecure script (%1). Please delete it.', array(
1 => $ofcFile,
));
}
}
if (CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::SEARCH_PREFERENCES_NAME, 'enable_innodb_fts', NULL, FALSE)) {
// The FTS indexing feature dynamically manipulates the schema which could
// cause conflicts with other layers that manipulate the schema. The
// simplest thing is to turn it off and back on.
// It may not always be necessary to do this -- but I doubt we're going to test
// systematically in future releases. When it is necessary, one could probably
// ignore the matter and simply run CRM_Core_InnoDBIndexer::fixSchemaDifferences
// after the upgrade. But that's speculative. For now, we'll leave this
// advanced feature in the hands of the sysadmin.
$preUpgradeMessage .= '
' . ts('This database uses InnoDB Full Text Search for optimized searching. The upgrade procedure has not been tested with this feature. You should disable (and later re-enable) the feature by navigating to "Administer => System Settings => Miscellaneous".');
}
}
/**
* @param $message
* @param $latestVer
* @param $currentVer
*/
public static function checkMessageTemplate(&$message, $latestVer, $currentVer) {
$sql = "SELECT orig.workflow_id as workflow_id,
orig.msg_title as title
FROM civicrm_msg_template diverted JOIN civicrm_msg_template orig ON (
diverted.workflow_id = orig.workflow_id AND
orig.is_reserved = 1 AND (
diverted.msg_subject != orig.msg_subject OR
diverted.msg_text != orig.msg_text OR
diverted.msg_html != orig.msg_html
)
)";
$dao = CRM_Core_DAO::executeQuery($sql);
while ($dao->fetch()) {
$workflows[$dao->workflow_id] = $dao->title;
}
if (empty($workflows)) {
return;
}
$html = NULL;
$pathName = dirname(dirname(__FILE__));
$flag = FALSE;
foreach ($workflows as $workflow => $title) {
$name = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionValue',
$workflow,
'name',
'id'
);
// check if file exists locally
$textFileName = implode(DIRECTORY_SEPARATOR,
array(
$pathName,
"{$latestVer}.msg_template",
'message_templates',
"{$name}_text.tpl",
)
);
$htmlFileName = implode(DIRECTORY_SEPARATOR,
array(
$pathName,
"{$latestVer}.msg_template",
'message_templates',
"{$name}_html.tpl",
)
);
if (file_exists($textFileName) ||
file_exists($htmlFileName)
) {
$flag = TRUE;
$html .= "