container = $container; } /** * Execute the post-upgrade actions */ public function execute() { if ($this->container->segment->get('insideCMS', false)) { if (defined('WPINC')) { $this->_WordPressActions(); } if (defined('_JEXEC')) { $this->_JoomlaActions(); } } // Remove obsolete files $this->processRemoveFiles(); // Remove obsolete folders $this->processRemoveFolders(); } /** * Removes obsolete files, depending on the edition (core or pro) */ protected function processRemoveFiles() { $removeFiles = $this->removeFilesAllVersions; if (defined('AKEEBA_PRO') && AKEEBA_PRO) { $removeFiles = array_merge($removeFiles, $this->removeFilesPro); } else { $removeFiles = array_merge($removeFiles, $this->removeFilesCore); } $this->_removeFiles($removeFiles); } /** * Removes obsolete folders, depending on the edition (core or pro) */ protected function processRemoveFolders() { $removeFolders = $this->removeFoldersAllVersions; if (defined('AKEEBA_PRO') && AKEEBA_PRO) { $removeFolders = array_merge($removeFolders, $this->removeFoldersPro); } else { $removeFolders = array_merge($removeFolders, $this->removeFoldersCore); } $this->_removeFolders($removeFolders); } /** * Specific actions to execute when we are running inside WordPress */ private function _WordPressActions() { $this->_WordPressRemoveFolders(); } /** * Remove obsolete folders from the WordPress installation * * @return void */ private function _WordPressRemoveFolders() { $removeFolders = array( // Obsolete folders after the introduction of Akeeba Engine 2 'helpers/platform/solowp', ); $fsBase = rtrim($this->container->filesystemBase, '/' . DIRECTORY_SEPARATOR) . '/../'; $fs = $this->container->fileSystem; foreach($removeFolders as $folder) { $fs->rmdir($fsBase . $folder, true); } } /** * Specific actions to execute when we are running inside Joomla */ private function _JoomlaActions() { } /** * Removes obsolete files given on a list * * @param array $removeFiles List of files to remove * * @return void */ private function _removeFiles(array $removeFiles) { if (empty($removeFiles)) { return; } $fsBase = rtrim($this->container->filesystemBase, '/' . DIRECTORY_SEPARATOR) . '/'; $fs = $this->container->fileSystem; foreach($removeFiles as $file) { $fs->delete($fsBase . $file); } } /** * Removes obsolete folders given on a list * * @param array $removeFolders List of folders to remove * * @return void */ private function _removeFolders(array $removeFolders) { if (empty($removeFolders)) { return; } $fsBase = rtrim($this->container->filesystemBase, '/' . DIRECTORY_SEPARATOR) . '/'; $fs = $this->container->fileSystem; foreach($removeFolders as $folder) { $fs->rmdir($fsBase . $folder, true); } } }