Newscoop\Service\Template::replaceItem PHP Метод

replaceItem() публичный Метод

Replace item
public replaceItem ( string $key, Zend_Form_Element_File $file ) : void
$key string
$file Zend_Form_Element_File
Результат void
    public function replaceItem($key, \Zend_Form_Element_File $file)
    {
        $oldMime = current(explode(';', $this->storage->getMimeType($key)));
        $newMime = current(explode(';', $file->getMimeType()));
        if ($oldMime != $newMime && !(in_array($oldMime, self::$equivalentMimeTypes) && in_array($newMime, self::$equivalentMimeTypes))) {
            throw new \InvalidArgumentException(sprintf('You can only replace a file with a file of the same type.  The original file is of type "%s", and the file you uploaded was of type "%s".', $oldMime, $newMime));
        }
        $this->storage->storeItem($key, file_get_contents($file->getFileName()));
    }

Usage Example

Пример #1
0
 public function editAction()
 {
     $translator = \Zend_Registry::get('container')->getService('translator');
     $key = $this->getKey();
     $item = $this->service->fetchMetadata($key);
     $this->view->item = $item;
     $this->view->placeholder('title')->set($translator->trans("Edit template: \$1", array('$1' => $item->name), 'themes'));
     switch ($item->type) {
         case 'jpg':
         case 'png':
         case 'gif':
             $this->_forward('edit-image');
             break;
         case 'css':
         case 'txt':
         case 'html':
         case 'js':
         case 'tpl':
             $this->_forward('edit-template');
             break;
         default:
             $this->_forward('edit-other');
             break;
     }
     $form = new Admin_Form_ReplaceTemplate();
     $form->setMethod('post')->setAttrib('enctype', 'multipart/form-data');
     $request = $this->getRequest();
     if ($request->isPost() && $request->getParam('file', false) && $form->isValid($request->getPost())) {
         try {
             $form->getValues();
             // upload
             $this->service->replaceItem($key, $form->file);
             $this->_helper->flashMessenger($translator->trans("File \$1 was replaced.", array('$1' => basename($key)), 'themes'));
         } catch (\InvalidArgumentException $e) {
             $this->_helper->flashMessenger(array('error', $e->getMessage()));
         }
         $this->_helper->redirector('edit', 'template', 'admin', array('path' => $this->_getParam('path'), 'file' => $this->_getParam('file'), 'next' => urlencode($this->_getParam('next')), 'id' => $this->_getParam('id')));
     }
     $this->view->replaceForm = $form;
 }