[ Index ]

PHP Cross Reference of Joomla 2.5.4 DE

title

Body

[close]

/administrator/components/com_admin/ -> script.php (source)

   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  }


Generated: Tue Apr 3 11:40:28 2012 Cross-referenced by PHPXref 0.7.1