| [ Index ] |
PHP Cross Reference of Joomla 2.5.4 DE |
[Summary view] [Print] [Text view]
1 <?php 2 3 /** 4 * @package Joomla.Administrator 5 * @subpackage com_admin 6 * @copyright Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved. 7 * @license GNU General Public License version 2 or later; see LICENSE.txt 8 */ 9 10 // no direct access 11 defined('_JEXEC') or die; 12 13 jimport('joomla.database.table'); 14 15 /** 16 * Script file of joomla CMS 17 */ 18 class joomlaInstallerScript 19 { 20 /** 21 * method to preflight the update of Joomla! 22 * 23 * @param string $route 'update' or 'install' 24 * @param JInstallerFile $installer The class calling this method 25 * 26 * @return void 27 */ 28 public function preflight($route, $installer) 29 { 30 $db = JFactory::getDbo(); 31 $query = $db->getQuery(true); 32 $query->select('version_id'); 33 $query->from('#__schemas'); 34 $query->where('extension_id=700'); 35 $db->setQuery($query); 36 if (!$db->loadResult()) 37 { 38 $query = $db->getQuery(true); 39 $query->insert('#__schemas'); 40 $query->set('extension_id=700, version_id='.$db->quote('1.6.0-2011-01-10')); 41 $db->setQuery($query); 42 $db->query(); 43 } 44 return true; 45 } 46 47 /** 48 * method to update Joomla! 49 * 50 * @param JInstallerFile $installer The class calling this method 51 * 52 * @return void 53 */ 54 function update($installer) 55 { 56 $this->deleteUnexistingFiles(); 57 $this->updateManifestCaches(); 58 $this->updateDatabase(); 59 } 60 protected function updateDatabase() 61 { 62 $db = JFactory::getDbo(); 63 if (substr($db->name, 0, 5) == 'mysql') 64 { 65 $query = 'SHOW ENGINES'; 66 $db->setQuery($query); 67 $results = $db->loadObjectList(); 68 if ($db->getErrorNum()) 69 { 70 echo JText::sprintf('JLIB_DATABASE_ERROR_FUNCTION_FAILED', $db->getErrorNum(), $db->getErrorMsg()).'<br />'; 71 return; 72 } 73 foreach ($results as $result) 74 { 75 if ($result->Support=='DEFAULT') 76 { 77 $query = 'ALTER TABLE #__update_sites_extensions ENGINE = ' . $result->Engine; 78 $db->setQuery($query); 79 $db->query(); 80 if ($db->getErrorNum()) 81 { 82 echo JText::sprintf('JLIB_DATABASE_ERROR_FUNCTION_FAILED', $db->getErrorNum(), $db->getErrorMsg()).'<br />'; 83 return; 84 } 85 break; 86 } 87 } 88 } 89 } 90 91 protected function updateManifestCaches() 92 { 93 // TODO Remove this for 2.5 94 if (!JTable::getInstance('Extension')->load(array('element'=> 'pkg_joomla', 'type'=>'package'))) { 95 // Create the package pkg_joomla 96 $db = JFactory::getDbo(); 97 $query = $db->getQuery(true); 98 $query->insert('#__extensions'); 99 $query->columns(array($db->quoteName('name'), $db->quoteName('type'), 100 $db->quoteName('element'), $db->quoteName('enabled'), $db->quoteName('access'), 101 $db->quoteName('protected'))); 102 $query->values($db->quote('joomla'). ', '. $db->quote('package').', '.$db->quote('pkg_joomla') . ', 1, 1, 1'); 103 104 $db->setQuery($query); 105 $db->query(); 106 if ($db->getErrorNum()) 107 { 108 echo JText::sprintf('JLIB_DATABASE_ERROR_FUNCTION_FAILED', $db->getErrorNum(), $db->getErrorMsg()).'<br />'; 109 return; 110 } 111 } 112 113 // TODO Remove this for 2.5 114 $table = JTable::getInstance('Extension'); 115 if ($table->load(array('element'=> 'mod_online', 'type'=>'module', 'client_id'=>1))) { 116 if (!file_exists(JPATH_ADMINISTRATOR . '/modules/mod_online')) { 117 // Delete this extension 118 if (!$table->delete()) { 119 echo $table->getError().'<br />'; 120 return; 121 } 122 } 123 else { 124 // Mark this extension as unprotected 125 $table->protected = 0; 126 if (!$table->store()) { 127 echo $table->getError().'<br />'; 128 return; 129 } 130 } 131 } 132 133 // TODO Remove this for 2.5 134 $table = JTable::getInstance('Extension'); 135 if ($table->load(array('element'=> 'mod_unread', 'type'=>'module', 'client_id'=>1))) { 136 if (!file_exists(JPATH_ADMINISTRATOR . '/modules/mod_unread')) { 137 // Delete this extension 138 if (!$table->delete()) { 139 echo $table->getError().'<br />'; 140 return; 141 } 142 } 143 else { 144 // Mark this extension as unprotected 145 $table->protected = 0; 146 if (!$table->store()) { 147 echo $table->getError().'<br />'; 148 return; 149 } 150 } 151 } 152 153 $extensions = array(); 154 // Components 155 156 //`type`, `element`, `folder`, `client_id` 157 $extensions[] = array('component', 'com_mailto', '', 0); 158 $extensions[] = array('component', 'com_wrapper', '', 0); 159 $extensions[] = array('component', 'com_admin', '', 1); 160 $extensions[] = array('component', 'com_banners', '', 1); 161 $extensions[] = array('component', 'com_cache', '', 1); 162 $extensions[] = array('component', 'com_categories', '', 1); 163 $extensions[] = array('component', 'com_checkin', '', 1); 164 $extensions[] = array('component', 'com_contact', '', 1); 165 $extensions[] = array('component', 'com_cpanel', '', 1); 166 $extensions[] = array('component', 'com_installer', '', 1); 167 $extensions[] = array('component', 'com_languages', '', 1); 168 $extensions[] = array('component', 'com_login', '', 1); 169 $extensions[] = array('component', 'com_media', '', 1); 170 $extensions[] = array('component', 'com_menus', '', 1); 171 $extensions[] = array('component', 'com_messages', '', 1); 172 $extensions[] = array('component', 'com_modules', '', 1); 173 $extensions[] = array('component', 'com_newsfeeds', '', 1); 174 $extensions[] = array('component', 'com_plugins', '', 1); 175 $extensions[] = array('component', 'com_search', '', 1); 176 $extensions[] = array('component', 'com_templates', '', 1); 177 $extensions[] = array('component', 'com_weblinks', '', 1); 178 $extensions[] = array('component', 'com_content', '', 1); 179 $extensions[] = array('component', 'com_config', '', 1); 180 $extensions[] = array('component', 'com_redirect', '', 1); 181 $extensions[] = array('component', 'com_users', '', 1); 182 183 // Libraries 184 $extensions[] = array('library', 'phpmailer', '', 0); 185 $extensions[] = array('library', 'simplepie', '', 0); 186 $extensions[] = array('library', 'phputf8', '', 0); 187 $extensions[] = array('library', 'joomla', '', 0); 188 $extensions[] = array('library', 'cms', '', 0); 189 190 // Modules site 191 // Site 192 $extensions[] = array('module', 'mod_articles_archive', '', 0); 193 $extensions[] = array('module', 'mod_articles_latest', '', 0); 194 $extensions[] = array('module', 'mod_articles_popular', '', 0); 195 $extensions[] = array('module', 'mod_banners', '', 0); 196 $extensions[] = array('module', 'mod_breadcrumbs', '', 0); 197 $extensions[] = array('module', 'mod_custom', '', 0); 198 $extensions[] = array('module', 'mod_feed', '', 0); 199 $extensions[] = array('module', 'mod_footer', '', 0); 200 $extensions[] = array('module', 'mod_login', '', 0); 201 $extensions[] = array('module', 'mod_menu', '', 0); 202 $extensions[] = array('module', 'mod_articles_news', '', 0); 203 $extensions[] = array('module', 'mod_random_image', '', 0); 204 $extensions[] = array('module', 'mod_related_items', '', 0); 205 $extensions[] = array('module', 'mod_search', '', 0); 206 $extensions[] = array('module', 'mod_stats', '', 0); 207 $extensions[] = array('module', 'mod_syndicate', '', 0); 208 $extensions[] = array('module', 'mod_users_latest', '', 0); 209 $extensions[] = array('module', 'mod_weblinks', '', 0); 210 $extensions[] = array('module', 'mod_whosonline', '', 0); 211 $extensions[] = array('module', 'mod_wrapper', '', 0); 212 $extensions[] = array('module', 'mod_articles_category', '', 0); 213 $extensions[] = array('module', 'mod_articles_categories', '', 0); 214 $extensions[] = array('module', 'mod_languages', '', 0); 215 216 // Administrator 217 $extensions[] = array('module', 'mod_custom', '', 1); 218 $extensions[] = array('module', 'mod_feed', '', 1); 219 $extensions[] = array('module', 'mod_latest', '', 1); 220 $extensions[] = array('module', 'mod_logged', '', 1); 221 $extensions[] = array('module', 'mod_login', '', 1); 222 $extensions[] = array('module', 'mod_menu', '', 1); 223 $extensions[] = array('module', 'mod_popular', '', 1); 224 $extensions[] = array('module', 'mod_quickicon', '', 1); 225 $extensions[] = array('module', 'mod_status', '', 1); 226 $extensions[] = array('module', 'mod_submenu', '', 1); 227 $extensions[] = array('module', 'mod_title', '', 1); 228 $extensions[] = array('module', 'mod_toolbar', '', 1); 229 $extensions[] = array('module', 'mod_multilangstatus', '', 1); 230 231 // Plug-ins 232 $extensions[] = array('plugin', 'gmail', 'authentication', 0); 233 $extensions[] = array('plugin', 'joomla', 'authentication', 0); 234 $extensions[] = array('plugin', 'ldap', 'authentication', 0); 235 $extensions[] = array('plugin', 'emailcloak', 'content', 0); 236 $extensions[] = array('plugin', 'geshi', 'content', 0); 237 $extensions[] = array('plugin', 'loadmodule', 'content', 0); 238 $extensions[] = array('plugin', 'pagebreak', 'content', 0); 239 $extensions[] = array('plugin', 'pagenavigation', 'content', 0); 240 $extensions[] = array('plugin', 'vote', 'content', 0); 241 $extensions[] = array('plugin', 'codemirror', 'editors', 0); 242 $extensions[] = array('plugin', 'none', 'editors', 0); 243 $extensions[] = array('plugin', 'tinymce', 'editors', 0); 244 $extensions[] = array('plugin', 'article', 'editors-xtd', 0); 245 $extensions[] = array('plugin', 'image', 'editors-xtd', 0); 246 $extensions[] = array('plugin', 'pagebreak', 'editors-xtd', 0); 247 $extensions[] = array('plugin', 'readmore', 'editors-xtd', 0); 248 $extensions[] = array('plugin', 'categories', 'search', 0); 249 $extensions[] = array('plugin', 'contacts', 'search', 0); 250 $extensions[] = array('plugin', 'content', 'search', 0); 251 $extensions[] = array('plugin', 'newsfeeds', 'search', 0); 252 $extensions[] = array('plugin', 'weblinks', 'search', 0); 253 $extensions[] = array('plugin', 'languagefilter', 'system', 0); 254 $extensions[] = array('plugin', 'p3p', 'system', 0); 255 $extensions[] = array('plugin', 'cache', 'system', 0); 256 $extensions[] = array('plugin', 'debug', 'system', 0); 257 $extensions[] = array('plugin', 'log', 'system', 0); 258 $extensions[] = array('plugin', 'redirect', 'system', 0); 259 $extensions[] = array('plugin', 'remember', 'system', 0); 260 $extensions[] = array('plugin', 'sef', 'system', 0); 261 $extensions[] = array('plugin', 'logout', 'system', 0); 262 $extensions[] = array('plugin', 'contactcreator', 'user', 0); 263 $extensions[] = array('plugin', 'joomla', 'user', 0); 264 $extensions[] = array('plugin', 'profile', 'user', 0); 265 $extensions[] = array('plugin', 'joomla', 'extension', 0); 266 $extensions[] = array('plugin', 'joomla', 'content', 0); 267 $extensions[] = array('plugin', 'languagecode', 'system', 0); 268 $extensions[] = array('plugin', 'joomlaupdate', 'quickicon', 0); 269 $extensions[] = array('plugin', 'extensionupdate', 'quickicon', 0); 270 $extensions[] = array('plugin', 'recaptcha', 'captcha', 0); 271 272 // Templates 273 274 $extensions[] = array('template', 'atomic', '', 0); 275 $extensions[] = array('template', 'bluestork', '', 1); 276 $extensions[] = array('template', 'beez_20', '', 0); 277 $extensions[] = array('template', 'hathor', '', 1); 278 $extensions[] = array('template', 'beez5', '', 0); 279 280 // Languages 281 $extensions[] = array('language', 'en-GB', '', 0); 282 $extensions[] = array('language', 'en-GB', '', 1); 283 284 // Files 285 $extensions[] = array('file', 'joomla', '', 0); 286 287 // Packages 288 $extensions[] = array('package', 'pkg_joomla', '', 0); 289 290 // Attempt to refresh manifest caches 291 $db = JFactory::getDbo(); 292 $query = $db->getQuery(true); 293 $query->select('*'); 294 $query->from('#__extensions'); 295 foreach ($extensions as $extension) { 296 $query->where('type='.$db->quote($extension[0]).' AND element='.$db->quote($extension[1]).' AND folder='.$db->quote($extension[2]).' AND client_id='.$extension[3], 'OR'); 297 } 298 $db->setQuery($query); 299 $extensions = $db->loadObjectList(); 300 $installer = new JInstaller(); 301 // Check for a database error. 302 if ($db->getErrorNum()) 303 { 304 echo JText::sprintf('JLIB_DATABASE_ERROR_FUNCTION_FAILED', $db->getErrorNum(), $db->getErrorMsg()).'<br />'; 305 return; 306 } 307 foreach ($extensions as $extension) { 308 if (!$installer->refreshManifestCache($extension->extension_id)) { 309 echo JText::sprintf('FILES_JOOMLA_ERROR_MANIFEST', $extension->type, $extension->element, $extension->name, $extension->client_id).'<br />'; 310 } 311 } 312 } 313 public function deleteUnexistingFiles() 314 { 315 $files = array( 316 '/includes/version.php', 317 '/installation/sql/mysql/joomla_update_170to171.sql', 318 '/installation/sql/mysql/joomla_update_172to173.sql', 319 '/installation/sql/mysql/joomla_update_17ga.sql', 320 '/libraries/joomla/application/applicationexception.php', 321 '/libraries/joomla/client/http.php', 322 '/libraries/joomla/filter/filterinput.php', 323 '/libraries/joomla/filter/filteroutput.php', 324 '/libraries/joomla/form/fields/templatestyle.php', 325 '/libraries/joomla/form/formfield.php', 326 '/libraries/joomla/form/formrule.php', 327 '/libraries/joomla/utilities/garbagecron.txt', 328 '/libraries/phpmailer/language/phpmailer.lang-en.php', 329 '/media/system/css/modal_msie.css', 330 '/media/system/images/modal/closebox.gif', 331 '/administrator/components/com_admin/sql/updates/sqlsrv/2.5.2-2012-03-05.sql', 332 '/administrator/components/com_admin/sql/updates/sqlsrv/2.5.3-2012-03-13.sql', 333 '/administrator/components/com_admin/sql/updates/sqlsrv/index.html', 334 '/administrator/language/en-GB/en-GB.plg_system_finder.ini', 335 '/administrator/language/en-GB/en-GB.plg_system_finder.sys.ini', 336 '/libraries/joomla/form/fields/templatestyle.php', 337 '/media/editors/tinymce/jscripts/tiny_mce/plugins/advhr/editor_plugin_src.js', 338 '/media/editors/tinymce/jscripts/tiny_mce/plugins/advimage/editor_plugin_src.js', 339 '/media/editors/tinymce/jscripts/tiny_mce/plugins/advlink/editor_plugin_src.js', 340 '/media/editors/tinymce/jscripts/tiny_mce/plugins/advlist/editor_plugin_src.js', 341 '/media/editors/tinymce/jscripts/tiny_mce/plugins/autolink/editor_plugin_src.js', 342 '/media/editors/tinymce/jscripts/tiny_mce/plugins/autoresize/editor_plugin_src.js', 343 '/media/editors/tinymce/jscripts/tiny_mce/plugins/autosave/editor_plugin_src.js', 344 '/media/editors/tinymce/jscripts/tiny_mce/plugins/bbcode/editor_plugin_src.js', 345 '/media/editors/tinymce/jscripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js', 346 '/media/editors/tinymce/jscripts/tiny_mce/plugins/directionality/editor_plugin_src.js', 347 '/media/editors/tinymce/jscripts/tiny_mce/plugins/emotions/editor_plugin_src.js', 348 '/media/editors/tinymce/jscripts/tiny_mce/plugins/fullpage/editor_plugin_src.js', 349 '/media/editors/tinymce/jscripts/tiny_mce/plugins/fullscreen/editor_plugin_src.js', 350 '/media/editors/tinymce/jscripts/tiny_mce/plugins/iespell/editor_plugin_src.js', 351 '/media/editors/tinymce/jscripts/tiny_mce/plugins/inlinepopups/editor_plugin_src.js', 352 '/media/editors/tinymce/jscripts/tiny_mce/plugins/insertdatetime/editor_plugin_src.js', 353 '/media/editors/tinymce/jscripts/tiny_mce/plugins/layer/editor_plugin_src.js', 354 '/media/editors/tinymce/jscripts/tiny_mce/plugins/lists/editor_plugin_src.js', 355 '/media/editors/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin_src.js', 356 '/media/editors/tinymce/jscripts/tiny_mce/plugins/nonbreaking/editor_plugin_src.js', 357 '/media/editors/tinymce/jscripts/tiny_mce/plugins/noneditable/editor_plugin_src.js', 358 '/media/editors/tinymce/jscripts/tiny_mce/plugins/pagebreak/editor_plugin_src.js', 359 '/media/editors/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin_src.js', 360 '/media/editors/tinymce/jscripts/tiny_mce/plugins/preview/editor_plugin_src.js', 361 '/media/editors/tinymce/jscripts/tiny_mce/plugins/print/editor_plugin_src.js', 362 '/media/editors/tinymce/jscripts/tiny_mce/plugins/save/editor_plugin_src.js', 363 '/media/editors/tinymce/jscripts/tiny_mce/plugins/searchreplace/editor_plugin_src.js', 364 '/media/editors/tinymce/jscripts/tiny_mce/plugins/spellchecker/editor_plugin_src.js', 365 '/media/editors/tinymce/jscripts/tiny_mce/plugins/style/editor_plugin_src.js', 366 '/media/editors/tinymce/jscripts/tiny_mce/plugins/tabfocus/editor_plugin_src.js', 367 '/media/editors/tinymce/jscripts/tiny_mce/plugins/table/editor_plugin_src.js', 368 '/media/editors/tinymce/jscripts/tiny_mce/plugins/template/editor_plugin_src.js', 369 '/media/editors/tinymce/jscripts/tiny_mce/plugins/visualchars/editor_plugin_src.js', 370 '/media/editors/tinymce/jscripts/tiny_mce/plugins/wordcount/editor_plugin_src.js', 371 '/media/editors/tinymce/jscripts/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js', 372 '/media/editors/tinymce/jscripts/tiny_mce/themes/advanced/editor_template_src.js', 373 '/media/editors/tinymce/jscripts/tiny_mce/themes/simple/editor_template_src.js', 374 '/media/editors/tinymce/jscripts/tiny_mce/tiny_mce_src.js', 375 ); 376 377 // TODO There is an issue while deleting folders using the ftp mode 378 $folders = array( 379 '/libraries/joomlacms', 380 '/media/editors/tinymce/jscripts/tiny_mce/plugins/media/img', 381 '/media/plg_highlight', 382 '/media/mod_finder_status', 383 '/administrator/components/com_admin/sql/updates/sqlsrv', 384 ); 385 386 foreach ($files as $file) { 387 if (JFile::exists(JPATH_ROOT . $file) && !JFile::delete(JPATH_ROOT . $file)) { 388 echo JText::sprintf('FILES_JOOMLA_ERROR_FILE_FOLDER', $file).'<br />'; 389 } 390 } 391 392 foreach ($folders as $folder) { 393 if (JFolder::exists(JPATH_ROOT . $folder) && !JFolder::delete(JPATH_ROOT . $folder)) { 394 echo JText::sprintf('FILES_JOOMLA_ERROR_FILE_FOLDER', $folder).'<br />'; 395 } 396 } 397 } 398 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Tue Apr 3 11:40:28 2012 | Cross-referenced by PHPXref 0.7.1 |