コード例 #1
0
ファイル: StoredFile.php プロジェクト: Konstnantin/zf-app
 /**
  * установка пути к фалу и имени файла по его id
  * @param int $val
  * @return bool
  */
 protected function _setFile($val)
 {
     $storage = new Z_File_Storage();
     $file = $storage->getFile((int) $val);
     if (!$file) {
         unset($this->_options['value']);
         return false;
     }
     $this->_file = $file;
     //		$this->_filePath = $file->getSitePath();
     //		$this->_fileName = $file->getName();
     //		$this->_fileSiteName = $file->getSiteName();
     return true;
 }
コード例 #2
0
ファイル: Preview.php プロジェクト: Konstnantin/zf-app
 public function z_preview($id, $param = array(), $cropped = false)
 {
     try {
         if (is_numeric($id)) {
             $storage = new Z_File_Storage();
             $file = $storage->getFile($id);
             if (!$file) {
                 throw new Exception();
             }
             $filename = $file->getFullName();
             unset($storage);
         } elseif (is_string($id)) {
             $filename = $id;
         } else {
             throw new Exception('Идентификатор файла не является чистом или строкой');
         }
         if (isset($param['mark']) && is_numeric($param['mark'])) {
             $storage = new Z_File_Storage();
             $file = $storage->getFile($param['mark']);
             if (!$file) {
                 throw new Exception();
             }
             $param['mark'] = $file->getFullName();
             unset($storage);
         }
         $tn = new Z_File_Image_Thumbnail($filename);
         $fileSitename = str_replace(SITE_PATH, '', $filename);
         //превращаем полный путь к файлу в относительный путь в бразуере
         $preResult = false;
         if ($cropped) {
             $preResult = $tn->getCroppedPreview($param);
             //метод ищет в папке картинки вручную обрезанную версию картинки и выдает путь к ней
         }
         if (!$preResult) {
             if ($tn->isPreviewActual($param)) {
                 $preResult = $tn->getPreviewName($param);
             } else {
                 $param['file'] = $fileSitename;
                 $preResult = '/sys/generatepreview.php?' . http_build_query($param, false);
                 //внешний запрос генерирующий превью в автоматическом режиме, в ручном режиме превью генерируется только в админке
             }
         }
     } catch (Exception $e) {
         return '';
     }
     return str_replace(SITE_PATH, '', $preResult);
 }
コード例 #3
0
 public function z_preview($id, $param = array())
 {
     try {
         if (is_numeric($id)) {
             $storage = new Z_File_Storage();
             $file = $storage->getFile($id);
             if (!$file) {
                 throw new Exception();
             }
             $filename = $file->getFullName();
             unset($storage);
         } elseif (is_string($id)) {
             $filename = $id;
         } else {
             throw new Exception('Идентификатор файла не является чистом или строкой');
         }
         if (isset($param['mark']) && is_numeric($param['mark'])) {
             $storage = new Z_File_Storage();
             $file = $storage->getFile($param['mark']);
             if (!$file) {
                 throw new Exception();
             }
             $param['mark'] = $file->getFullName();
             unset($storage);
         }
         $tn = new Z_File_Image_Thumbnail($filename);
         $fileSitename = str_replace(SITE_PATH, '', $filename);
         if ($tn->isPreviewActual($param)) {
             $preResult = $tn->getPreviewName($param);
         } else {
             $param['file'] = $fileSitename;
             $preResult = '/sys/generatepreview.php?' . http_build_query($param, false);
         }
     } catch (Exception $e) {
         return '';
     }
     return str_replace(SITE_PATH, '', $preResult);
 }
コード例 #4
0
ファイル: Http.php プロジェクト: Konstnantin/zf-app
 /**
  * Receive the file from the client (Upload)
  *
  * @param  string|array $files (Optional) Files to receive
  * @return bool
  */
 public function receive($files = null, $storedId = null)
 {
     if (!$this->isValid($files)) {
         return false;
     }
     $_processedFiles = array();
     $check = $this->_getFiles($files);
     foreach ($check as $file => $content) {
         if (!$content['received']) {
             $directory = '';
             $destination = $this->getDestination($file);
             if ($destination !== null) {
                 $directory = $destination . DIRECTORY_SEPARATOR;
             }
             $filename = $directory . $content['name'];
             $rename = $this->getFilter('Rename');
             $storage = new Z_File_Storage();
             if ($rename !== null) {
                 $tmp = $rename->getNewName($content['tmp_name']);
                 if ($tmp != $content['tmp_name']) {
                     $filename = $tmp;
                 }
                 if (dirname($filename) == '.') {
                     $filename = $directory . $filename;
                 }
                 $key = array_search(get_class($rename), $this->_files[$file]['filters']);
                 unset($this->_files[$file]['filters'][$key]);
             } elseif ($storedId == null) {
                 $tmp = $storage->getNewFolderName();
                 if (!$tmp) {
                     throw new Exception("Не удалось выбрать имя для папки.<br>Попробуйте использовать более длинное имя или увеличьте количество попыток для подбора");
                 }
                 $filename = $tmp;
             }
             // Should never return false when it's tested by the upload validator
             $lid = $storedId == null ? $storage->create($content['tmp_name'], array('filename' => $filename, 'realname' => $content['name'])) : $storage->replace($storedId, $content['tmp_name'], $content['name']);
             if (!$lid) {
                 if ($content['options']['ignoreNoFile']) {
                     $this->_files[$file]['received'] = true;
                     $this->_files[$file]['filtered'] = true;
                     continue;
                 }
                 $this->_files[$file]['received'] = false;
                 return false;
             }
             $this->_processedFiles[$file] = $storedId == null ? $lid : $storedId;
             if ($rename !== null) {
                 $this->_files[$file]['destination'] = dirname($filename);
                 $this->_files[$file]['name'] = basename($filename);
             }
             $this->_files[$file]['tmp_name'] = $filename;
             $this->_files[$file]['received'] = true;
         }
         if (!$content['filtered']) {
             if (!$this->_filter($file)) {
                 $this->_files[$file]['filtered'] = false;
                 return false;
             }
             $this->_files[$file]['filtered'] = true;
         }
     }
     return true;
 }
コード例 #5
0
ファイル: Storagefile.php プロジェクト: Konstnantin/zf-app
 public function z_storagefile($id)
 {
     $stor = new Z_File_Storage();
     return $stor->getFile($id);
 }
コード例 #6
0
ファイル: Abstract.php プロジェクト: Konstnantin/zf-app
    public function deleteAction()
    {
        $this->setViewPathes();
        $this->disableRenderView();
        //отключение вывода
        //проверка на возможность удаления
        if (!$this->z_can_delete) {
            Z_FlashMessenger::addMessage('Удаление запрещено!');
            return;
        }
        //получение списка удаляемых элементов
        if (!$this->_getParam('id')) {
            $ids = $this->_getParam('ids');
        } else {
            $ids = array($this->_getParam('id'));
        }
        //если есть подтверждение на удаление или оно не требуется, то удаляем
        if ($this->z_delete_confirm && $this->_getParam('confirmed') || !$this->z_delete_confirm) {
            //получение списка полей, с файлами на удаление
            $modelForm = new Z_Model_Resourceforms();
            $formFileitems = $modelForm->fetchAll(array('resourceid=?' => $this->getResourceInfo()->id, 'is_file=?' => 1));
            $storage = new Z_File_Storage();
            $deletedItemsCount = 0;
            foreach ($ids as $id) {
                $item = $this->z_model->fetchRow(array('id=?' => $id));
                $itemArray = $item->toArray();
                if (!$this->deleteCheck($itemArray)) {
                    Z_FlashMessenger::addMessage('Удаление записи "' . $itemArray[$this->z_default_field] . '" Запрещено!');
                    continue;
                }
                //проверка на наличие подразделов в каталоге
                $haveSubcat = false;
                if ($this->z_datatype == 'catalog') {
                    $subCatCount = $this->z_model->select(true)->reset('columns')->columns('count(*)')->where('parentid=?', $item->id)->query()->fetchColumn();
                    if ($subCatCount > 0) {
                        $haveSubcat = true;
                        Z_FlashMessenger::addMessage('Раздел "' . $itemArray[$this->z_default_field] . '" имеет подразделы');
                    }
                }
                //проверка на наличие дочерних элементов
                $haveChild = false;
                if ($this->z_child_resources) {
                    foreach ($this->z_child_resources as $resource) {
                        $childModel = new $resource['model']();
                        $childItem = $childModel->fetchRow(array($resource['parent_field'] . '=?' => $item->id));
                        if ($childItem) {
                            $haveChild = true;
                            Z_FlashMessenger::addMessage('"' . $itemArray[$this->z_default_field] . '" имеет подчиненные "' . $resource['title'] . '"');
                        }
                    }
                }
                //проверка на возможность удаления элемента
                if ((!isset($itemArray['z_can_delete']) || isset($itemArray['z_can_delete']) && $itemArray['z_can_delete']) && (!$haveChild || $this->z_delete_on_have_child) && !$haveSubcat) {
                    //удаление связей многие ко многим
                    if (!empty($this->z_refers)) {
                        foreach ($this->z_refers as $referName => $refer) {
                            $referModel = new $refer['model']();
                            $referModel->delete(array($refer['field1'] . '=?' => $item->id));
                        }
                    }
                    $delData = $item->toArray();
                    $item->delete();
                    if (count($formFileitems)) {
                        foreach ($formFileitems as $formFileitem) {
                            $storage->removeFileDir($delData[$formFileitem->field]);
                        }
                    }
                    //ech('1');
                    $this->deleteSuccess($delData);
                    $this->deleteFromIndex($delData['id']);
                    $deletedItemsCount++;
                } else {
                    Z_FlashMessenger::addMessage('Удаление записи "' . $itemArray[$this->z_default_field] . '" Запрещено!');
                }
            }
            if ($deletedItemsCount > 0) {
                $this->ajaxGo($this->view->url(array('action' => $this->z_defaultAction, 'id' => NULL, 'confirmed' => NULL)));
            }
        } elseif ($this->z_delete_confirm) {
            //требуем подтверждения на удаление
            jQuery::evalScript('
	    		if (confirm("Удалить?"))
	    		{
	    			z_ajax_go("' . $this->view->url() . '",{confirmed:1,ids:[' . implode(',', $ids) . ']});
	    		}
	    	');
        }
    }
コード例 #7
0
ファイル: File.php プロジェクト: Konstnantin/zf-app
 /**
  * Удаление файла, id которого хранится в декораторе
  * @param <type> $id
  * @return <type>
  */
 protected function _deleteStoredFile()
 {
     $storage = new Z_File_Storage();
     return $storage->removeFileDir($this->_storedFileId);
 }
コード例 #8
0
ファイル: File.php プロジェクト: Konstnantin/zf-app
 /**
  * Сохранить информацию о файле в базу
  * @param Z_File_Storage $storage
  * @return bool
  */
 public function save(Z_File_Storage $storage)
 {
     return $storage->save($this);
 }