public function uploadiconAction() { if ($datas = $this->getRequest()->getPost()) { try { $uploader = new Core_Model_Lib_Uploader(); $file = $uploader->savecrop($datas); if (!empty($file)) { $option_value = new Application_Model_Option_Value(); $option_value->find($datas['option_id']); $lib = new Media_Model_Library(); $lib->find($option_value->getLibraryId()); $library_name = $lib->getName(); $formated_library_name = Core_Model_Lib_String::format($library_name, true); $base_lib_path = Media_Model_Library_Image::getBaseImagePathTo($formated_library_name); $files = Core_Model_Directory::getTmpDirectory(true) . '/' . $file; $CanBeColorized = $datas['is_colorized'] == 'true' ? 1 : 0; if (!is_dir($base_lib_path)) { mkdir($base_lib_path, 0777, true); } if (!copy($files, $base_lib_path . '/' . $file)) { throw new exception($this->_('An error occurred while saving your picture. Please try againg later.')); } else { $icon_lib = new Media_Model_Library_Image(); $icon_lib->setLibraryId($option_value->getLibraryId())->setLink('/' . $formated_library_name . '/' . $file)->setOptionId($option_value->getOptionId())->setAdminId($this->getSession()->getAdmin()->getId())->setCanBeColorized($CanBeColorized)->setPosition(0)->save(); $option_value->setIcon('/' . $formated_library_name . '/' . $file)->setIconId($icon_lib->getImageId())->save(); $icon_saved = $this->setIcon($icon_lib->getImageId(), $datas['option_id']); // Charge l'option_value $option_value = new Application_Model_Option_Value(); $option_value->find($datas['option_id']); $icon_color = $this->getApplication()->getDesignBlock('tabbar')->getImageColor(); $html = array('success' => 1, 'file' => '/' . $formated_library_name . '/' . $file, 'icon_id' => $icon_lib->getImageId(), 'colorizable' => $CanBeColorized, 'icon_url' => Media_Model_Library_Image::getImagePathTo($formated_library_name . '/' . $file), 'colored_icon_url' => $this->getUrl('template/block/colorize', array('id' => $option_value->getIconId(), 'color' => str_replace('#', '', $icon_color))), 'colored_header_icon_url' => $icon_saved['colored_header_icon_url'], 'message' => '', 'message_button' => 1, 'message_loader' => 1); } } } catch (Exception $e) { $html = array('message' => $e->getMessage(), 'message_button' => 1, 'message_loader' => 1); } $this->getLayout()->setHtml(Zend_Json::encode($html)); } }
public function saveAction() { if ($data = Zend_Json::decode($this->getRequest()->getRawBody())) { try { $previews = $data["previews"]; $option_id = !empty($data["option_id"]) ? $data["option_id"] : null; $preview_id = !empty($data["preview_id"]) ? $data["preview_id"] : null; if (empty($previews)) { throw new Exception($this->_("An error occurred while saving your previews. Please try again later.")); } $preview = new Preview_Model_Preview(); if (!empty($option_id) and empty($preview_id)) { //No preview for this option yet, we create one if it doesn't exists. $preview->find($option_id, "option_id"); if ($preview->getId()) { throw new Exception($this->_("Sorry, but an existing preview for this feature has been found. Please edit existing one.")); } $preview->setData("option_id", $option_id); } else { //Existing preview if (!empty($preview_id)) { $preview->find($data["preview_id"]); } else { throw new Exception($this->_("An error occurred while saving your previews. Please try again later.")); } } $previews_language_data = array(); foreach ($previews as $language_code => $data) { $option = new Application_Model_Option(); $option->find($preview->getOptionId()); if ($preview->getId()) { $library_id = $preview->findLibraryIdByLanguageCode($language_code); } else { $library_id = null; } if (!$library_id) { $library = new Media_Model_Library(); $library->setName('preview_' . $language_code . '_' . $option->getCode())->save(); $data["library_id"] = $library->getId(); } else { $data["library_id"] = $library_id; } //IMAGES------------------------------------------------ foreach ($data["images"] as $key => $image) { $library_image = new Media_Model_Library_Image(); //We only copy new files if ($image["new"] == 1) { $old_path = Core_Model_Directory::getTmpDirectory(true); $new_path = Core_Model_Directory::getBasePathTo("images/previews/" . $language_code . "/" . $option->getCode()); $new_path_base = Core_Model_Directory::getPathTo("images/previews/" . $language_code . "/" . $option->getCode()); if (!is_dir($new_path)) { if (!@mkdir($new_path, 0777, true)) { throw new Exception($this->_("Unable to create the directory.")); } } if (!@rename($old_path . "/" . $image["filename"], $new_path . "/" . $image["filename"])) { throw new Exception($this->_("Unable to copy the file.")); } $data_image = array("library_id" => $data["library_id"], "link" => $new_path_base . "/" . $image["filename"], "can_be_colorized" => 0, "position" => $key); $library_image->setData($data_image)->save(); } else { //For existing images, we save position $library_image->find($image["id"]); if ($library_image->getImageId()) { $library_image->setPosition($key)->save(); } } //We delete images to delete if ($image["to_delete"] == 1 and $image["new"] == 0) { if (!@unlink(Core_Model_Directory::getBasePathTo($image["link"]))) { throw new Exception($this->_("Unable to delete the file.")); } $library_image = new Media_Model_Library_Image(); $library_image->find($image["id"]); $library_image->delete(); } } unset($data["images"]); //<--IMAGES------------------------------------------------ unset($data["from_database"]); $data['language_code'] = $language_code; $data['preview_id'] = $preview->getId(); $previews_language_data[] = $data; } $preview->setLanguageData($previews_language_data); $preview->save(); $data = array("success" => 1, "message" => $this->_("Preview successfully saved")); } catch (Exception $e) { $data = array("error" => 1, "message" => $e->getMessage()); } $this->_sendHtml($data); } }