/**
  * 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);
 }
Beispiel #3
0
 /**
  * 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);
 }
Beispiel #4
0
 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');
     }
 }