/**
  * @param Open_Gallery_Model_Item $item
  * @param Mage_Adminhtml_Controller_Action $controller
  * @return $this|Open_Gallery_Helper_Item_Interface
  * @throws Exception
  * @throws Mage_Core_Exception
  * @throws Open_Gallery_Exception
  */
 public function prepareItemSave(Open_Gallery_Model_Item $item, Mage_Adminhtml_Controller_Action $controller)
 {
     parent::prepareItemSave($item, $controller);
     $data = $controller->getRequest()->getPost('item');
     if (isset($data['value'], $data['value']['delete']) && !empty($data['value']['delete'])) {
         $item->deleteValueFile();
     } else {
         if (isset($_FILES['item']['tmp_name']['value']) && $_FILES['item']['tmp_name']['value']) {
             try {
                 $savedFilePath = $this->_saveFile('item[value]', array('jpg', 'jpeg', 'png', 'gif'), 'image');
                 $item->setData('value', $savedFilePath);
             } catch (Mage_Core_Exception $e) {
                 throw $e;
             } catch (Exception $e) {
                 Mage::logException($e);
                 throw new Open_Gallery_Exception($this->__("Can't save image."));
             }
         }
     }
     return $this;
 }
 /**
  * @param Open_Gallery_Model_Item $item
  * @param Mage_Adminhtml_Controller_Action $controller
  * @return $this|Open_Gallery_Helper_Item_Interface
  * @throws Exception
  * @throws Mage_Core_Exception
  * @throws Open_Gallery_Exception
  */
 public function prepareItemSave(Open_Gallery_Model_Item $item, Mage_Adminhtml_Controller_Action $controller)
 {
     parent::prepareItemSave($item, $controller);
     $data = $controller->getRequest()->getPost('item');
     $additional = isset($data['additional']) && is_array($data['additional']) ? $data['additional'] : array();
     switch ($additional['type']) {
         case self::VIDEO_TYPE_FILE:
             if (isset($data['additional_value_file'], $data['additional_value_file'], $data['additional_value_file']['delete']) && !empty($data['additional_value_file']['delete'])) {
                 $item->deleteValueFile();
             } else {
                 if (isset($_FILES['item']['tmp_name']['additional_value_file']) && $_FILES['item']['tmp_name']['additional_value_file']) {
                     $savedFilePath = $this->_saveFile('item[additional_value_file]', $item->getAllowedFormats(), 'video');
                     $additional['value_file'] = $savedFilePath;
                     $item->setData('value', $savedFilePath);
                 }
             }
             break;
         case self::VIDEO_TYPE_EMBEDDED:
             if (array_key_exists('value_embedded', $additional)) {
                 $item->setData('value', $additional['value_embedded']);
             }
             break;
         case self::VIDEO_TYPE_YOUTUBE:
             if (array_key_exists('value_youtube', $additional)) {
                 $item->setData('value', $additional['value_youtube']);
             }
             if (!$item->getData('thumbnail')) {
                 if ($thumbnail = $this->getYouTubeImage($item->getData('value'))) {
                     $item->setData('thumbnail', $thumbnail);
                 }
             }
             break;
     }
     $item->setData('additional', $additional);
     return $this;
 }