Merge pull request #3239 from eileenmcnaughton/whitespace-fixes
[civicrm-core.git] / CRM / Upgrade / Incremental / php / FourFive.php
CommitLineData
296342b1
OB
1<?php
2/*
3 +--------------------------------------------------------------------+
06b69b18 4 | CiviCRM version 4.5 |
296342b1 5 +--------------------------------------------------------------------+
06b69b18 6 | Copyright CiviCRM LLC (c) 2004-2014 |
296342b1
OB
7 +--------------------------------------------------------------------+
8 | This file is a part of CiviCRM. |
9 | |
10 | CiviCRM is free software; you can copy, modify, and distribute it |
11 | under the terms of the GNU Affero General Public License |
12 | Version 3, 19 November 2007. |
13 | |
14 | CiviCRM is distributed in the hope that it will be useful, but |
15 | WITHOUT ANY WARRANTY; without even the implied warranty of |
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
17 | See the GNU Affero General Public License for more details. |
18 | |
19 | You should have received a copy of the GNU Affero General Public |
20 | License along with this program; if not, contact CiviCRM LLC |
21 | at info[AT]civicrm[DOT]org. If you have questions about the |
22 | GNU Affero General Public License or the licensing of CiviCRM, |
23 | see the CiviCRM license FAQ at http://civicrm.org/licensing |
24 +--------------------------------------------------------------------+
25*/
26
27/**
28 *
29 * @package CRM
06b69b18 30 * @copyright CiviCRM LLC (c) 2004-2014
296342b1
OB
31 * $Id$
32 *
33 */
34class CRM_Upgrade_Incremental_php_FourFive {
35 const BATCH_SIZE = 5000;
36
37 function verifyPreDBstate(&$errors) {
38 return TRUE;
39 }
40
41 /**
42 * Compute any messages which should be displayed beforeupgrade
43 *
44 * Note: This function is called iteratively for each upcoming
45 * revision to the database.
46 *
d0f74b53 47 * @param $preUpgradeMessage
296342b1 48 * @param $rev string, a version number, e.g. '4.4.alpha1', '4.4.beta3', '4.4.0'
d0f74b53
EM
49 * @param null $currentVer
50 *
51 * @internal param string $postUpgradeMessage , alterable
296342b1
OB
52 * @return void
53 */
54 function setPreUpgradeMessage(&$preUpgradeMessage, $rev, $currentVer = NULL) {
55 }
56
57 /**
58 * Compute any messages which should be displayed after upgrade
59 *
60 * @param $postUpgradeMessage string, alterable
61 * @param $rev string, an intermediate version; note that setPostUpgradeMessage is called repeatedly with different $revs
62 * @return void
63 */
64 function setPostUpgradeMessage(&$postUpgradeMessage, $rev) {
1421174e 65 if ($rev == '4.5.alpha1') {
66 $postUpgradeMessage .= '<br /><br />' . ts('Default versions of the following System Workflow Message Templates have been modified to handle new functionality: <ul><li>Contributions - Receipt (off-line)</li><li>Contributions - Receipt (on-line)</li><li>Memberships - Receipt (on-line)</li><li>Pledges - Acknowledgement</li></ul> If you have modified these templates, please review the new default versions and implement updates as needed to your copies (Administer > Communications > Message Templates > System Workflow Messages).');
b05a0fb6 67 $postUpgradeMessage .= '<br /><br />' . ts('This release allows you to view and edit multiple-record custom field sets in a table format which will be more usable in some cases. You can try out the format by navigating to Administer > Custom Data & Screens > Custom Fields. Click Settings for a custom field set and change Display Style to "Tab with Tables".');
03390e26 68 $postUpgradeMessage .= '<br /><br />' . ts('This release changes the way that anonymous event registrations match participants with existing contacts. By default, all event participants will be matched with existing individuals using the Unsupervised rule, even if multiple registrations with the same email address are allowed. However, you can now select a different matching rule to use for each event. Please review your events to make sure you choose the appropriate matching rule and collect sufficient information for it to match contacts.');
1421174e 69 }
296342b1
OB
70 }
71
72 function upgrade_4_5_alpha1($rev) {
73 // task to process sql
74 $this->addTask(ts('Upgrade DB to 4.5.alpha1: SQL'), 'task_4_5_x_runSql', $rev);
75
8b49cb50
OB
76 $this->addTask(ts('Set default for Individual name fields configuration'), 'addNameFieldOptions');
77
78 return TRUE;
79 }
80
81 /**
82 * Add defaults for the newly introduced name fields configuration in 'contact_edit_options' setting
83 *
d0f74b53
EM
84 * @param CRM_Queue_TaskContext $ctx
85 *
8b49cb50
OB
86 * @return bool TRUE for success
87 */
88 static function addNameFieldOptions(CRM_Queue_TaskContext $ctx) {
89 $query = "SELECT `value` FROM `civicrm_setting` WHERE `group_name` = 'CiviCRM Preferences' AND `name` = 'contact_edit_options'";
90 $dao = CRM_Core_DAO::executeQuery($query);
91 $dao->fetch();
92 $oldValue = unserialize($dao->value);
93
94 $newValue = $oldValue . '12\ 114\ 115\ 116\ 117\ 1';
95
96 $query = "UPDATE `civicrm_setting` SET `value` = %1 WHERE `group_name` = 'CiviCRM Preferences' AND `name` = 'contact_edit_options'";
97 $params = array(1 => array(serialize($newValue), 'String'));
98 CRM_Core_DAO::executeQuery($query, $params);
99
296342b1
OB
100 return TRUE;
101 }
102
103 /**
104 * (Queue Task Callback)
105 */
106 static function task_4_5_x_runSql(CRM_Queue_TaskContext $ctx, $rev) {
107 $upgrade = new CRM_Upgrade_Form();
108 $upgrade->processSQL($rev);
109
110 return TRUE;
111 }
112
113 /**
d0f74b53 114 * Syntactic sugar for adding a task which (a) is in this class and (b) has
296342b1
OB
115 * a high priority.
116 *
117 * After passing the $funcName, you can also pass parameters that will go to
118 * the function. Note that all params must be serializable.
119 */
120 protected function addTask($title, $funcName) {
121 $queue = CRM_Queue_Service::singleton()->load(array(
122 'type' => 'Sql',
123 'name' => CRM_Upgrade_Form::QUEUE_NAME,
124 ));
125
126 $args = func_get_args();
127 $title = array_shift($args);
128 $funcName = array_shift($args);
129 $task = new CRM_Queue_Task(
130 array(get_class($this), $funcName),
131 $args,
132 $title
133 );
134 $queue->createItem($task, array('weight' => -1));
135 }
136}