예제 #1
0
 public function indexAction()
 {
     $this->disableRenderView();
     Z_Fs::recursive_remove_directory(APPLICATION_PATH . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . 'session');
     Z_Fs::create_folder(APPLICATION_PATH . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . 'session');
     Z_FlashMessenger::addMessage('Сессия очищена');
 }
예제 #2
0
파일: Fs.php 프로젝트: Konstnantin/zf-app
 public static function create_file($filename, $content = "", $rewrite = false, $rights = 0777)
 {
     global $m;
     $fileparts = explode(DIRECTORY_SEPARATOR, rtrim($filename, DIRECTORY_SEPARATOR));
     $pathparts = $fileparts;
     unset($pathparts[count($pathparts) - 1]);
     $path = rtrim(implode(DIRECTORY_SEPARATOR, $pathparts), DIRECTORY_SEPARATOR);
     if (Z_Fs::create_folder($path)) {
         if (file_exists($filename) && !$rewrite) {
             return false;
         } else {
             file_put_contents($filename, $content);
             chmod($filename, $rights);
         }
     } else {
         return false;
     }
     /*
         $i=0;
         $fileparts_count = count($fileparts);
         foreach ($fileparts as $part)
         {
           $i++;
           if ($i<$fileparts_count)
           {
     if (file_exists($curdir.$part))
     {
     }
     else
     {
       if (is_writable($curdir))
       {
         mkdir($curdir.$part);
         chmod($curdir.$part,$rights);
       }
       else
       {
         return false;
       }
     }
           }
           $curdir .= $part.DIRECTORY_SEPARATOR;
         }
         $curdir = rtrim($curdir,DIRECTORY_SEPARATOR);
         if (file_exists($curdir) && !$rewrite)
         {
           return false;
         }
         else
         {
           file_put_contents($curdir,$content);
           chmod($curdir,$rights);
         }
     */
     return true;
 }
예제 #3
0
 public function addSuccess($param)
 {
     if ($param['resourceId'] && $param['model']) {
         $nameExploded = explode('_', $param['resourceId']);
         $nameExploded = array_map('ucfirst', $nameExploded);
         $controllerName = $nameExploded[count($nameExploded) - 1];
         unset($nameExploded[count($nameExploded) - 1]);
         $ds = DIRECTORY_SEPARATOR;
         $path = APPLICATION_PATH . $ds . 'modules' . $ds . $this->getRequest()->getModuleName() . $ds . 'controllers' . (($pathAdd = implode($ds, $nameExploded)) ? $ds . $pathAdd : '');
         $fileName = $controllerName . 'Controller.php';
         $controllerName = ucfirst($this->getRequest()->getModuleName()) . '_' . (($filePrefix = implode('_', $nameExploded)) ? $filePrefix . '_' : '') . $controllerName . 'Controller';
         $class_file = new Zend_CodeGenerator_Php_Class(array('name' => $controllerName, 'extendedclass' => 'Z_Admin_Controller_Datacontrol_Abstract'));
         Z_Fs::create_file($path . $ds . $fileName, "<?\n" . $class_file->generate());
     }
 }
예제 #4
0
 public function indexAction()
 {
     $this->_helper->viewRenderer->setNoRender(true);
     Zend_Layout::getMvcInstance()->disableLayout();
     $data = array('error' => '1', 'errorcode' => '1', 'preview' => '', 'path' => '', 'filename' => '', 'type' => '');
     if (Z_Auth::getInstance()->getUser()->getLogin() == 'guest') {
         $this->_forward('index', 'index');
         return;
     }
     if (empty($_FILES['Filedata']['name']) || $_FILES['Filedata']['size'] <= 0) {
         $data['errorcode'] = '2';
         echo Zend_Json::encode($data);
         return;
     }
     $options = array('jpg', 'jpeg', 'png', 'gif');
     $validator = new Z_Validate_File_Extension($options);
     if (!$validator->isValid($_FILES['Filedata']['name'])) {
         $data['errorcode'] = '3';
         echo Zend_Json::encode($data);
         return;
     }
     $save_path = SITE_PATH . DIRECTORY_SEPARATOR . 'upload' . DIRECTORY_SEPARATOR . 'tmpajdoqODU1';
     Z_Fs::create_folder($save_path);
     $filename = Z_Transliterator::translateCyr($_FILES['Filedata']['name']);
     $aim = $save_path . DIRECTORY_SEPARATOR . $filename;
     if (!@move_uploaded_file($_FILES['Filedata']['tmp_name'], $aim)) {
         $data['errorcode'] = '4';
         echo Zend_Json::encode($data);
         return;
     }
     //     $storage = new Z_File_Storage();
     //$debuginfo = $_FILES['Filedata']['tmp_name'] . '---' . $_FILES['Filedata']['name'];
     //$debuginfo = $_FILES['Filedata']['tmp_name'] . '---' . $_FILES['Filedata']['name'];
     //        $pf = $storage->create($_FILES['Filedata']['tmp_name'], array(
     //          'realname' => $_FILES['Filedata']['name']));
     $prevurl = $this->view->z_Preview($aim, array('w' => 200, 'h' => 170));
     $fileurl = '/upload/tmpajdoqODU1/' . $filename;
     $data = array('error' => '0', 'errorcode' => '0', 'preview' => $prevurl, 'path' => $fileurl, 'filename' => $filename, 'type' => 'pic');
     echo Zend_Json::encode($data);
     //            foreach($_FILES as $key=>$file)
     //		{
     //			$new_name = $file['tmp_name'].'_new';
     //			move_uploaded_file($file['tmp_name'],$new_name);
     //			$_FILES[$key]['tmp_name'] = $new_name;
     //		}
     //		$nameSpace = new Zend_Session_Namespace('Z-File-Uploader');
     //		$nameSpace->files = $_FILES;
 }
예제 #5
0
 public function listAction()
 {
     $path = APPLICATION_PATH . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . 'backups' . DIRECTORY_SEPARATOR;
     if (file_exists($path)) {
         $filesIn = Z_Fs::rscandir($path);
         $result = null;
         foreach ($filesIn as $fileIn) {
             $pi = pathinfo($fileIn);
             //backup_" . date("m-d-Y_H-i") . ".tar")
             if (isset($pi['extension']) && $pi['extension'] == 'tar' && isset($pi['basename'])) {
                 $pattern = "#backup\\_(\\d+\\-\\d+\\-\\d{2,4}\\_\\d+\\-\\d+)#";
                 $matches = array();
                 preg_match($pattern, $pi['basename'], $matches);
                 if (isset($matches[1])) {
                     $name = base64_encode($pi['basename']);
                     $date = new Zend_Date($matches[1], 'MM-dd-yyyy_h-m');
                     $result[] = array('name' => $name, 'date' => $date->get(Zend_Date::DATETIME_MEDIUM), 'size' => Z_Fs::getFormattedFileSize($fileIn));
                 }
             }
         }
         $this->view->backups = $result;
     }
 }
예제 #6
0
 /**
  * Генерирует класс модели
  * @param string $className
  * Название класса (без префикса)
  * @param string $tableName
  * Название таблицы в БД
  * @param array $params
  * Параметры для переопределения настроек по умолчанию
  * @return string
  */
 public static function generate($className, $tableName = NULL, $params = array())
 {
     if (strpos($className, 'z_') === 0 && Z_Auth::getInstance()->getUser()->getRole() == 'root') {
         $path_prefix = APPLICATION_PATH . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'library' . DIRECTORY_SEPARATOR . 'Z' . DIRECTORY_SEPARATOR . 'Model';
         self::$_classPrefix = isset($params['prefixz']) ? $params['prefixz'] : self::$_classPrefixZ;
     } else {
         $path_prefix = APPLICATION_PATH . DIRECTORY_SEPARATOR . 'models';
         self::$_classPrefix = isset($params['prefix']) ? $params['prefix'] : self::$_classPrefix;
     }
     if ($tableName == NULL) {
         $tableName = strtolower($className);
     }
     $className = explode('_', $className);
     $className = array_map('ucfirst', $className);
     $path = $className;
     unset($path[count($path) - 1]);
     $path = implode(DIRECTORY_SEPARATOR, $path);
     $filename = $className[count($className) - 1] . '.php';
     $className = implode('_', $className);
     $filepath = $path_prefix . DIRECTORY_SEPARATOR . $path;
     $generator = new Zend_CodeGenerator_Php_Class();
     $generator->setName(self::$_classPrefix . $className)->setExtendedClass(self::$_extendedClass)->setProperty(array('name' => '_name', 'visibility' => 'protected', 'defaultValue' => $tableName));
     Z_Fs::create_file($filepath . DIRECTORY_SEPARATOR . $filename, "<?\n" . $generator->generate());
 }
예제 #7
0
 public function multiloadAction()
 {
     $this->setViewPathes();
     $this->view->recid = $this->getResourceInfo()->id;
     // $this->view->debugparams = $this->_getAllParams();
     $this->view->formaction = $this->view->url(array('id' => $this->_getParam('id'), 'action' => 'multiadd'));
     $modelForms = new Z_Model_Resourceforms();
     $elements = $modelForms->fetchAll(array('resourceid=?' => $this->z_resourceInfo->id, 'type!=?' => 'MultiImage', 'required=?' => '1'));
     //$this->view->debugparams=$elements->toArray();
     //проверка нужна чтобы убедиться что на форме где есть мультизагрузка картинок нет обязательных элементов
     //если они есть то функция загрузки голых картинок в ленту не имеет смысла, так как обязательные поля будут пустыми
     //поэтому мы скрываем эту кнопку и отфутболиваем действие загрузки голых картинок (не реализовано)
     if (count($elements)) {
         $this->view->hasReqired = true;
     } else {
         $this->view->hasReqired = false;
     }
     //1. выдача кнопки для загрузки
     //2. выдача ленты с формами или отработка полученных данных с этих форм или голых картинок,
     //при наличии обязательных параметров формы - функция загрузки голых картинок недоступна
     //очистка директории не работает для голой загрузки картинок
     $temp_path = SITE_PATH . DIRECTORY_SEPARATOR . 'upload' . DIRECTORY_SEPARATOR . 'tmpajdoqODU1';
     //папка куда кидаются все загруженные мультизагрузчиком файлы
     Z_Fs::recursive_remove_directory($temp_path);
     // $this->view->form = $form;
 }
예제 #8
0
 private function create_file($filename, $content = "", $rewrite = false, $rights = 0777)
 {
     global $m;
     try {
         $fileparts = explode(DIRECTORY_SEPARATOR, rtrim($filename, DIRECTORY_SEPARATOR));
         $pathparts = $fileparts;
         unset($pathparts[count($pathparts) - 1]);
         $path = rtrim(implode(DIRECTORY_SEPARATOR, $pathparts), DIRECTORY_SEPARATOR);
         if (Z_Fs::create_folder($path)) {
             if (file_exists($filename) && !$rewrite) {
                 return false;
             } else {
                 file_put_contents($filename, $content);
                 @chmod($filename, $rights);
             }
         } else {
             return false;
         }
         return true;
     } catch (Exception $exc) {
         return false;
     }
 }
예제 #9
0
 public function init()
 {
     // create backup directory if not exists
     $errors = array();
     $this->setFileAmount(0);
     $backup_dir = $this->getBackupDir();
     // cleanup old backups
     if (is_file($backup_dir . "/backup-dump.sql")) {
         unlink($backup_dir . "/backup-dump.sql");
     }
     // get steps
     $steps = array();
     // get available tables
     $model = new Z_Model_Config();
     $db = $model->getAdapter();
     $tables = $db->fetchAll("SHOW FULL TABLES");
     $steps[] = array("mysql-tables", null);
     // tables
     foreach ($tables as $table) {
         $name = current($table);
         $type = next($table);
         if ($type != "VIEW") {
             $steps[] = array("mysql", array("name" => $name, "type" => $type));
         }
     }
     // views
     foreach ($tables as $table) {
         reset($table);
         $name = current($table);
         $type = next($table);
         if ($type == "VIEW") {
             $steps[] = array("mysql", array("name" => $name, "type" => $type));
         }
     }
     $steps[] = array("mysql-complete", null);
     // check files
     $currentFileCount = 0;
     $currentFileSize = 0;
     $currentStepFiles = array();
     // check permissions
     $filter_dir_end_name = array('session', 'captcha', 'cache', 'backups');
     $filesIn = Z_Fs::rscandir($this->PR_ROOT, $filter_dir_end_name);
     clearstatcache();
     $filesToBackup = null;
     foreach ($filesIn as $fileIn) {
         if (!is_readable($fileIn)) {
             $errors[] = $fileIn . " is not readable.";
         }
         if ($currentFileCount > 300 || $currentFileSize > 20000000) {
             $currentFileCount = 0;
             $currentFileSize = 0;
             if (!empty($currentStepFiles)) {
                 $filesToBackup[] = $currentStepFiles;
             }
             $currentStepFiles = array();
         }
         if (file_exists($fileIn)) {
             $currentFileSize += filesize($fileIn);
             $currentFileCount++;
             $currentStepFiles[] = $fileIn;
         }
     }
     if (!empty($currentStepFiles)) {
         $filesToBackup[] = $currentStepFiles;
     }
     if (count($filesToBackup)) {
         $this->setFilesToBackup($filesToBackup);
         $fileSteps = count($filesToBackup);
         for ($i = 0; $i < $fileSteps; $i++) {
             $steps[] = array("files", array("step" => $i));
         }
         $steps[] = array("complete", null);
     }
     if (!empty($errors)) {
         $steps = null;
     }
     return array("steps" => $steps, "errors" => $errors);
 }