Commit | Line | Data |
---|---|---|
b129ca70 C |
1 | <?php |
2 | /* | |
3 | +--------------------------------------------------------------------+ | |
4 | | Copyright CiviCRM LLC. All rights reserved. | | |
5 | | | | |
6 | | This work is published under the GNU AGPLv3 license with some | | |
7 | | permitted exceptions and without any warranty. For full license | | |
8 | | and copyright information, see https://civicrm.org/licensing | | |
9 | +--------------------------------------------------------------------+ | |
10 | */ | |
11 | ||
12 | /** | |
13 | * Upgrade logic for FiveThirty */ | |
14 | class CRM_Upgrade_Incremental_php_FiveThirty extends CRM_Upgrade_Incremental_Base { | |
15 | ||
16 | /** | |
17 | * Compute any messages which should be displayed beforeupgrade. | |
18 | * | |
19 | * Note: This function is called iteratively for each upcoming | |
20 | * revision to the database. | |
21 | * | |
22 | * @param string $preUpgradeMessage | |
23 | * @param string $rev | |
24 | * a version number, e.g. '4.4.alpha1', '4.4.beta3', '4.4.0'. | |
25 | * @param null $currentVer | |
26 | */ | |
27 | public function setPreUpgradeMessage(&$preUpgradeMessage, $rev, $currentVer = NULL) { | |
28 | // Example: Generate a pre-upgrade message. | |
29 | // if ($rev == '5.12.34') { | |
30 | // $preUpgradeMessage .= '<p>' . 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'))) . '</p>'; | |
31 | // } | |
32 | } | |
33 | ||
34 | /** | |
35 | * Compute any messages which should be displayed after upgrade. | |
36 | * | |
37 | * @param string $postUpgradeMessage | |
38 | * alterable. | |
39 | * @param string $rev | |
40 | * an intermediate version; note that setPostUpgradeMessage is called repeatedly with different $revs. | |
41 | */ | |
42 | public function setPostUpgradeMessage(&$postUpgradeMessage, $rev) { | |
43 | // Example: Generate a post-upgrade message. | |
44 | // if ($rev == '5.12.34') { | |
45 | // $postUpgradeMessage .= '<br /><br />' . 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'."); | |
46 | // } | |
47 | } | |
48 | ||
49 | /* | |
50 | * Important! All upgrade functions MUST add a 'runSql' task. | |
51 | * Uncomment and use the following template for a new upgrade version | |
52 | * (change the x in the function name): | |
53 | */ | |
54 | ||
55 | // /** | |
56 | // * Upgrade function. | |
57 | // * | |
58 | // * @param string $rev | |
59 | // */ | |
60 | // public function upgrade_5_0_x($rev) { | |
61 | // $this->addTask(ts('Upgrade DB to %1: SQL', [1 => $rev]), 'runSql', $rev); | |
62 | // $this->addTask('Do the foo change', 'taskFoo', ...); | |
63 | // // Additional tasks here... | |
64 | // // Note: do not use ts() in the addTask description because it adds unnecessary strings to transifex. | |
65 | // // The above is an exception because 'Upgrade DB to %1: SQL' is generic & reusable. | |
66 | // } | |
67 | ||
e7339d59 | 68 | /** |
69 | * Upgrade function. | |
70 | * | |
71 | * @param string $rev | |
72 | */ | |
73 | public function upgrade_5_30_alpha1($rev) { | |
74 | $this->addTask(ts('Upgrade DB to %1: SQL', [1 => $rev]), 'runSql', $rev); | |
75 | $this->addTask('Add core (required) extension Financial ACLs', 'installFinancialAcls'); | |
76 | } | |
77 | ||
b129ca70 C |
78 | // public static function taskFoo(CRM_Queue_TaskContext $ctx, ...) { |
79 | // return TRUE; | |
80 | // } | |
81 | ||
e7339d59 | 82 | /** |
83 | * Install financialacls extension. | |
84 | * | |
85 | * This feature is restructured as a core extension - which is primarily a code cleanup step. | |
86 | * | |
87 | * @param \CRM_Queue_TaskContext $ctx | |
88 | * | |
89 | * @return bool | |
90 | * | |
91 | * @throws \CiviCRM_API3_Exception | |
92 | * @throws \CRM_Core_Exception | |
93 | */ | |
94 | public static function installFinancialAcls(CRM_Queue_TaskContext $ctx) { | |
95 | // Install via direct SQL manipulation. Note that: | |
96 | // (1) This extension has no activation logic. | |
97 | // (2) On new installs, the extension is activated purely via default SQL INSERT. | |
98 | // (3) Caches are flushed at the end of the upgrade. | |
99 | // ($) Over long term, upgrade steps are more reliable in SQL. API/BAO sometimes don't work mid-upgrade. | |
100 | $insert = CRM_Utils_SQL_Insert::into('civicrm_extension')->row([ | |
101 | 'type' => 'module', | |
102 | 'full_name' => 'financialacls', | |
103 | 'name' => 'financialacls', | |
104 | 'label' => 'Financial ACLs', | |
105 | 'file' => 'financialacls', | |
106 | 'schema_version' => NULL, | |
107 | 'is_active' => 1, | |
108 | ]); | |
109 | CRM_Core_DAO::executeQuery($insert->usingReplace()->toSQL()); | |
110 | ||
111 | return TRUE; | |
112 | } | |
113 | ||
b129ca70 | 114 | } |