/** * Replacing toaster method. * @param string $source * @param string $dest * @return true - All went well. * @return false - Something went wrong. */ protected function _copyToaster($source, $dest) { foreach ($iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source, RecursiveDirectoryIterator::SKIP_DOTS), RecursiveIteratorIterator::SELF_FIRST) as $item) { if ($item->isDir()) { @mkdir($dest . $iterator->getSubPathName()); } else { copy($item, $dest . $iterator->getSubPathName()); unlink($item->getPathName()); } } Tools_Filesystem_Tools::deleteDir($source); return true; }
private function _uploadPlugin() { $this->_uploadHandler->addValidator('Extension', false, 'zip'); if ($this->_checkMime) { $this->_uploadHandler->addValidator(new Validators_MimeType(array('application/zip')), false); } $pluginArchive = $this->_uploadHandler->getFileInfo(); if (!$this->_uploadHandler->isValid()) { return array('error' => true); } $destination = $this->_uploadHandler->getDestination(); $zip = new ZipArchive(); $zip->open($pluginArchive['file']['tmp_name']); $unzipped = $zip->extractTo($destination); if ($unzipped !== true) { return array('name' => $pluginArchive['file']['name'], 'error' => 'Can\'t extract zip file to tmp directory'); } $pluginName = str_replace('.zip', '', $pluginArchive['file']['name']); $validateMessage = $this->_validatePlugin($pluginName); $miscConfig = Zend_Registry::get('misc'); if ($validateMessage === true) { $destinationDir = $this->_websiteConfig['path'] . $miscConfig['pluginsPath']; if (is_dir($destinationDir . $pluginName)) { Tools_Filesystem_Tools::deleteDir($destinationDir . $pluginName); } $res = $zip->extractTo($destinationDir); $zip->close(); Tools_Filesystem_Tools::deleteDir($destination . '/' . $pluginName); } else { $zip->close(); return array('name' => $pluginArchive['file']['name'], 'error' => $validateMessage); } return array('error' => false, 'name' => $pluginArchive['file']['name'], 'type' => $pluginArchive['file']['type'], 'size' => $pluginArchive['file']['size'], 'pluginname' => $pluginName); }
/** * Delete theme * @return bool */ public function deleteAction() { $themeName = filter_var($this->_request->getParam('name'), FILTER_SANITIZE_STRING); if ($this->_configHelper->getConfig('currentTheme') == $themeName) { $this->_error('Current theme cannot be removed!', self::REST_STATUS_FORBIDDEN); } return Tools_Filesystem_Tools::deleteDir($this->_websiteHelper->getPath() . $this->_themesConfig['path'] . $themeName); }
public static function removeIndex() { $websiteHelper = Zend_Controller_Action_HelperBroker::getStaticHelper('website'); $searchIndexFolder = $websiteHelper->getPath() . 'cache/' . Widgets_Search_Search::INDEX_FOLDER; if (!is_dir($searchIndexFolder)) { return false; } Tools_Filesystem_Tools::deleteDir($searchIndexFolder); }
/** * Action used for removing images/files from media catalog * for AJAX request * @return JSON */ public function removefileAction() { if ($this->getRequest()->isPost()) { $folderName = $this->getRequest()->getParam('folder'); if (empty($folderName)) { $this->view->errorMsg = $this->_translator->translate('No folder specified'); return false; } $removeImages = $this->getRequest()->getParam('removeImages'); $removeFiles = $this->getRequest()->getParam('removeFiles'); $errorList = array(); $folderPath = realpath($this->_websiteConfig['path'] . $this->_websiteConfig['media'] . $folderName); if (!isset($removeFiles) && !isset($removeImages)) { $this->view->errorMsg = $this->_translator->translate('Nothing to remove'); } if (!$folderPath || !is_dir($folderPath)) { $this->view->errorMsg = $this->_translator->translate('No such folder'); return false; } //list of removed files $deleted = array(); //processing images if (isset($removeImages) && is_array($removeImages)) { foreach ($removeImages as $imageName) { //checking if this image in any container $pages = $this->_checkFileInContent($folderName . '%' . $imageName); if (!empty($pages)) { array_push($errorList, array('name' => $imageName, 'errors' => $pages)); } else { // going to remove image try { $result = Tools_Image_Tools::removeImageFromFilesystem($imageName, $folderName); if ($result !== true) { array_push($errorList, array('name' => $imageName, 'errors' => $result)); } else { //cleaning out the images related widgets $this->_helper->cache->clean(null, null, array('Widgets_Gal_Gal')); array_push($deleted, $imageName); } } catch (Exceptions_SeotoasterException $e) { error_log($e->getMessage() . PHP_EOL . $e->getTraceAsString()); } } } } //processing files if (isset($removeFiles) && is_array($removeFiles)) { foreach ($removeFiles as $fileName) { if (!is_file($folderPath . DIRECTORY_SEPARATOR . $fileName)) { $errorList[$fileName] = $this->_translator->translate($folderPath . DIRECTORY_SEPARATOR . $fileName . ': file not found'); } //checking if this image in any container $pages = $this->_checkFileInContent($fileName); if (!empty($pages)) { array_push($errorList, array('name' => $fileName, 'errors' => $pages)); } try { $result = Tools_Filesystem_Tools::deleteFile($folderPath . DIRECTORY_SEPARATOR . $fileName); if ($result !== true) { array_push($errorList, array('name' => $fileName, 'errors' => $this->_translator->translate("Can't remove file. Permission denied"))); } else { array_push($deleted, $fileName); } } catch (Exception $e) { error_log($e->getMessage() . PHP_EOL . $e->getTraceAsString()); } } } if (!empty($deleted)) { $folderContent = Tools_Filesystem_Tools::scanDirectory($folderPath, false, true); if (empty($folderContent)) { try { $this->view->folderRemoved = Tools_Filesystem_Tools::deleteDir($folderPath); } catch (Exception $e) { error_log($e->getMessage()); } } } $this->view->errors = empty($errorList) ? false : $errorList; $this->view->deleted = $deleted; } else { $this->_redirect($this->_helper->website->getUrl(), array('exit' => true)); } }
public function deleteAction() { if ($this->getRequest()->isPost()) { $plugin = Tools_Plugins_Tools::findPluginByName($this->getRequest()->getParam('id')); $plugin->registerObserver(new Tools_Plugins_GarbageCollector(array('action' => Tools_System_GarbageCollector::CLEAN_ONDELETE))); $miscData = Zend_Registry::get('misc'); $sqlFilePath = $this->_helper->website->getPath() . $miscData['pluginsPath'] . $plugin->getName() . '/system/' . Application_Model_Models_Plugin::UNINSTALL_FILE_NAME; if (file_exists($sqlFilePath)) { $sqlFileContent = Tools_Filesystem_Tools::getFile($sqlFilePath); if (strlen($sqlFileContent)) { $queries = Tools_System_SqlSplitter::split($sqlFileContent); } } $delete = Tools_Filesystem_Tools::deleteDir($this->_helper->website->getPath() . 'plugins/' . $plugin->getName()); if (!$delete) { $this->_helper->response->fail('Can\'t remove plugin\'s directory (not enough permissions). Plugin was uninstalled.'); exit; } if (is_array($queries) && !empty($queries)) { $dbAdapter = Zend_Registry::get('dbAdapter'); try { array_walk($queries, function ($query, $key, $adapter) { if (strlen(trim($query))) { $adapter->query($query); } }, $dbAdapter); Application_Model_Mappers_PluginMapper::getInstance()->delete($plugin); } catch (Exception $e) { error_log($e->getMessage()); $this->_helper->response->fail($e->getMessage()); } } $this->_helper->cache->clean(null, null, array('plugins')); $this->_helper->cache->clean('admin_addmenu', $this->_helper->session->getCurrentUser()->getRoleId()); $this->_helper->response->success('Removed'); } }