/** * установка пути к фалу и имени файла по его 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; }
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); }
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); }
/** * 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; }
public function z_storagefile($id) { $stor = new Z_File_Storage(); return $stor->getFile($id); }
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) . ']}); } '); } }
/** * Удаление файла, id которого хранится в декораторе * @param <type> $id * @return <type> */ protected function _deleteStoredFile() { $storage = new Z_File_Storage(); return $storage->removeFileDir($this->_storedFileId); }
/** * Сохранить информацию о файле в базу * @param Z_File_Storage $storage * @return bool */ public function save(Z_File_Storage $storage) { return $storage->save($this); }