PluginProbe
CSS & JavaScript Toolbox / 7.2
CSS & JavaScript Toolbox v7.2
trunk 0.3 0.8 10 10.1 11 11.2 11.3 11.4 11.5 11.6 11.7 11.8 11.9 11.9.1 12 12.0 12.0.1 12.0.3 12.0.4 12.0.5 12.0.6 12.0.7 6.0 6.0.11 All 60 releases
← All changes | models/installer.php +51 -18 6.07.2 View file →
@@ -75,35 +75,43 @@
75 75 * put your comment there...
76 76 *
77 77 */
78 78 public function getInternalVersionName() {
79 - return str_replace('.', '', $this->installedDbVersion);
79 + return str_replace(array('.', '-'), '', $this->installedDbVersion);
80 80 }
81 -
81 +
82 82 /**
83 - * put your comment there...
83 + * Get installer operations for current CJT version!
84 84 *
85 + * @return array Operations list metadata.
85 86 */
86 87 public function getOperations() {
87 - // If installation is didn't never run before thise would be unset!
88 - if (!($operations = get_option(self::INSTALLATION_STATE))) {
88 + // Read all install/upgrade operations for all versions!
89 + $operations = get_option(self::INSTALLATION_STATE);
90 + $operations = is_array($operations) ? $operations : array();
91 + // Check if cached: Use only installer cache for 'current' CJT version.
92 + if (!isset($operations[CJTPlugin::DB_VERSION])) {
89 93 // Import installer reflection!
90 94 cssJSToolbox::import('framework:installer:reflection.class.php');
91 95 // Get Installer operations.
92 96 cssJSToolbox::import('includes:installer:installer:installer.class.php');
93 - $operations['operations']['install'] = CJTInstallerReflection::getInstance('CJTInstaller', 'CJTInstaller')->getOperations();
97 + $operations[CJTPlugin::DB_VERSION]['operations']['install'] = CJTInstallerReflection::getInstance('CJTInstaller', 'CJTInstaller')->getOperations();
94 98 if ($this->isUpgrade()) {
95 99 // Get upgrade operations , Also cache upgrader info for later use!
96 - $operations['upgrader'] = $upgrader = $this->getUpgrader();
100 + $operations[CJTPlugin::DB_VERSION]['upgrader'] = $upgrader = $this->getUpgrader();
101 + // Check if upgrader exists!
102 + if (!file_exists(cssJSToolbox::resolvePath($upgrader['file']))) {
103 + throw new Exception("Could not find upgrade/downgrade agent for installer '{$this->installedDbVersion}'! Incompatible version numbers! Upgrader/Downgrwader is no being supported by current versions!!");
104 + }
105 + // Import upgrader + reflect its operations!
97 106 cssJSToolbox::import($upgrader['file']);
98 - $operations['operations']['upgrade'] = CJTInstallerReflection::getInstance($upgrader['class'], 'CJTUpgradeNonTabledVersions')->getOperations();
107 + $operations[CJTPlugin::DB_VERSION]['operations']['upgrade'] = CJTInstallerReflection::getInstance($upgrader['class'], 'CJTUpgradeNonTabledVersions')->getOperations();
99 108 }
100 - // Cache operations!
101 - update_option(self::INSTALLATION_STATE, $operations);
109 + update_option(self::INSTALLATION_STATE, $operations);
102 110 }
103 - return $operations;
111 + return $operations[CJTPlugin::DB_VERSION];
104 112 }
105 -
113 +
106 114 /**
107 115 * put your comment there...
108 116 *
109 117 */
@@ -122,21 +130,24 @@
122 130 *
123 131 * @return void
124 132 */
125 133 public function install() {
134 + // Initialize.
135 + $result = FALSE;
126 136 // Read input!
127 137 $rOperation = $this->input['operation'];
128 138 $type = $rOperation['type'];
129 - // Get allowed operations with thier state!
139 + // Get allowed operations with their state!
130 140 $operations = (array) get_option(self::INSTALLATION_STATE);
141 + $vOperations =& $operations[CJTPlugin::DB_VERSION];
131 142 // Invalid operation!
132 - if (!isset($operations['operations'][$type][$rOperation['name']])) {
143 + if (!isset($vOperations['operations'][$type][$rOperation['name']])) {
133 144 throw new Exception('Invalid operation');
134 145 }
135 146 else {
136 147 // Install only if not installed!
137 - $operation =& $operations['operations'][$type][$rOperation['name']];
138 - if ($operation['state'] != self::OPERATION_STATE_INSTALLED) {
148 + $operation =& $vOperations['operations'][$type][$rOperation['name']];
149 + if ((!isset($operation['state'])) || ($operation['state'] != self::OPERATION_STATE_INSTALLED)) {
139 150 // Import installer and get installer object!
140 151 switch ($type) {
141 152 case 'install':
142 153 cssJSToolbox::import('includes:installer:installer:installer.class.php');
@@ -142,9 +153,9 @@
142 153 cssJSToolbox::import('includes:installer:installer:installer.class.php');
143 154 $installer = CJTInstaller::getInstance();
144 155 break;
145 156 case 'upgrade':
146 - $upgrader = $operations['upgrader'];
157 + $upgrader = $vOperations['upgrader'];
147 158 cssJSToolbox::import($upgrader['file']);
148 159 $installer = new $upgrader['class']();
149 160 break;
150 161 }
@@ -153,14 +164,36 @@
153 164 $operation['state'] = self::OPERATION_STATE_INSTALLED;
154 165 // Update operations cache to reflect the new state!
155 166 update_option(self::INSTALLATION_STATE, $operations);
156 167 // Say OK!
157 - $this->response = array('state' => self::OPERATION_STATE_INSTALLED);
168 + $result = array('state' => self::OPERATION_STATE_INSTALLED);
158 169 }
159 170 }
160 171 }
172 + return $result;
161 173 }
162 174
175 + /**
176 + * put your comment there...
177 + *
178 + */
179 + public function isCommonRelease() {
180 + // Check weather the current installed version is in the same
181 + // release with the running version.
182 + // Get instaleled version components.
183 + $ivComponent = explode('.', str_replace('-', '.', $this->getInstalledDbVersion()));
184 + $nvComponent = explode('.', str_replace('-', '.', CJTPlugin::DB_VERSION));
185 + // Use PE-Edition sign if not sign used!
186 + if (!isset($ivComponent[2])) {
187 + $ivComponent[2] = 'PE';
188 + }
189 + if (!isset($nvComponent[2])) {
190 + $nvComponent[2] = 'PE';
191 + }
192 + // TRUE if same, FALSE otherwise.
193 + return (($ivComponent[0] == $nvComponent[0]) && ($ivComponent[2] == $nvComponent[2]));
194 + }
195 +
163 196 /**
164 197 * put your comment there...
165 198 *
166 199 */