芝麻web文件管理V1.00
编辑当前文件:/home/asmplong/www/ancien-site-2019/site/administrator/components/com_installer/models/update.php
setState('message',$app->getUserState('com_installer.message')); $this->setState('extension_message',$app->getUserState('com_installer.extension_message')); $app->setUserState('com_installer.message',''); $app->setUserState('com_installer.extension_message',''); parent::populateState('name', 'asc'); } /** * Method to get the database query * * @return JDatabaseQuery The database query * @since 1.6 */ protected function getListQuery() { $db = $this->getDbo(); $query = $db->getQuery(true); // grab updates ignoring new installs $query->select('*')->from('#__updates')->where('extension_id != 0'); $query->order($this->getState('list.ordering').' '.$this->getState('list.direction')); return $query; } /** * Finds updates for an extension. * * @param int Extension identifier to look for * @return boolean Result * @since 1.6 */ public function findUpdates($eid=0) { $updater = JUpdater::getInstance(); $results = $updater->findUpdates($eid); return true; } /** * Removes all of the updates from the table. * * @return boolean result of operation * @since 1.6 */ public function purge() { $db = JFactory::getDBO(); // Note: TRUNCATE is a DDL operation // This may or may not mean depending on your database $db->setQuery('TRUNCATE TABLE #__updates'); if ($db->Query()) { $this->_message = JText::_('COM_INSTALLER_PURGED_UPDATES'); return true; } else { $this->_message = JText::_('COM_INSTALLER_FAILED_TO_PURGE_UPDATES'); return false; } } /** * Enables any disabled rows in #__update_sites table * * @return boolean result of operation * @since 1.6 */ public function enableSites() { $db = JFactory::getDBO(); $db->setQuery('UPDATE #__update_sites SET enabled = 1 WHERE enabled = 0'); if ($db->Query()) { if ($rows = $db->getAffectedRows()) { $this->_message .= JText::plural('COM_INSTALLER_ENABLED_UPDATES', $rows); } return true; } else { $this->_message .= JText::_('COM_INSTALLER_FAILED_TO_ENABLE_UPDATES'); return false; } } /** * Update function. * * Sets the "result" state with the result of the operation. * * @param Array[int] List of updates to apply * @since 1.6 */ public function update($uids) { $result = true; foreach($uids as $uid) { $update = new JUpdate(); $instance = JTable::getInstance('update'); $instance->load($uid); $update->loadFromXML($instance->detailsurl); // install sets state and enqueues messages $res = $this->install($update); if ($res) { $this->purge(); } $result = $res & $result; } // Set the final state $this->setState('result', $result); } /** * Handles the actual update installation. * * @param JUpdate An update definition * @return boolean Result of install * @since 1.6 */ private function install($update) { $app = JFactory::getApplication(); if (isset($update->get('downloadurl')->_data)) { $url = $update->downloadurl->_data; } else { JError::raiseWarning('', JText::_('COM_INSTALLER_INVALID_EXTENSION_UPDATE')); return false; } jimport('joomla.installer.helper'); $p_file = JInstallerHelper::downloadPackage($url); // Was the package downloaded? if (!$p_file) { JError::raiseWarning('', JText::sprintf('COM_INSTALLER_PACKAGE_DOWNLOAD_FAILED', $url)); return false; } $config = JFactory::getConfig(); $tmp_dest = $config->get('tmp_path'); // Unpack the downloaded package file $package = JInstallerHelper::unpack($tmp_dest . '/' . $p_file); // Get an installer instance $installer = JInstaller::getInstance(); $update->set('type', $package['type']); // Install the package if (!$installer->update($package['dir'])) { // There was an error updating the package $msg = JText::sprintf('COM_INSTALLER_MSG_UPDATE_ERROR', JText::_('COM_INSTALLER_TYPE_TYPE_'.strtoupper($package['type']))); $result = false; } else { // Package updated successfully $msg = JText::sprintf('COM_INSTALLER_MSG_UPDATE_SUCCESS', JText::_('COM_INSTALLER_TYPE_TYPE_'.strtoupper($package['type']))); $result = true; } // Quick change $this->type = $package['type']; // Set some model state values $app->enqueueMessage($msg); // TODO: Reconfigure this code when you have more battery life left $this->setState('name', $installer->get('name')); $this->setState('result', $result); $app->setUserState('com_installer.message', $installer->message); $app->setUserState('com_installer.extension_message', $installer->get('extension_message')); // Cleanup the install files if (!is_file($package['packagefile'])) { $config = JFactory::getConfig(); $package['packagefile'] = $config->get('tmp_path') . '/' . $package['packagefile']; } JInstallerHelper::cleanupInstall($package['packagefile'], $package['extractdir']); return $result; } }