public function editpostAction() { if ($datas = $this->getRequest()->getPost()) { $html = ''; try { // Test s'il y a un value_id if (empty($datas['value_id'])) { throw new Exception($this->_('An error occurred while saving')); } // Récupère l'option_value en cours $option_value = new Application_Model_Option_Value(); $option_value->find($datas['value_id']); if (empty($datas['url'])) { throw new Exception($this->_('Please enter a valid url')); } // Récupère le Wordpress en cours et met à jour son url $wordpress = $option_value->getObject(); $wordpress->setUrl($datas['url']); // Appelle le Wordpress (Vérifie si l'url passée en paramètre est OK) $wordpress->checkModule(); if (!$wordpress->getId()) { $wordpress->setValueId($datas['value_id'])->setUrl($datas['url'])->save(); } // Sauvegarde le Wordpress $wordpress->save(); // Récupère les catégory_ids déjà en base $category_ids = $wordpress->getCategoryIds(); // Récupère les category_ids passés en post $datas['category_ids'] = !empty($datas['category_ids']) ? $datas['category_ids'] : array(); // Filtre les catégories à supprimer $category_ids_to_delete = array_diff($category_ids, $datas['category_ids']); // Supprime les catégories décochées if (!empty($category_ids_to_delete)) { $category = new Wordpress_Model_Wordpress_Category(); $categories = $category->findAll(array('wp_id' => $wordpress->getId(), 'wp_category_id IN (?)' => $category_ids_to_delete)); foreach ($categories as $category) { $category->delete(); } } // Filtre les nouvelles catégories $category_ids_to_save = array_diff($datas['category_ids'], $category_ids); // Insert en base les nouvelles catégories foreach ($category_ids_to_save as $category_id) { $category = new Wordpress_Model_Wordpress_Category(); $category->setData(array('wp_id' => $wordpress->getId(), 'wp_category_id' => $category_id))->save(); } // Vide la cache Zend_Registry::get('cache')->remove('wordpress_cache_' . sha1($wordpress->getId())); // Retourne le message de success $html = array('success' => 1, 'success_message' => $this->_('Categories successfully saved'), 'message_timeout' => 2, 'message_button' => 0, 'message_loader' => 0); } catch (Exception $e) { $html = array('message' => $e->getMessage(), 'message_button' => 1, 'message_loader' => 1); } $this->getLayout()->setHtml(Zend_Json::encode($html)); } }
public function getCategoryIds() { if (!$this->_category_ids) { $this->_category_ids = array(); if ($this->getId()) { $category = new Wordpress_Model_Wordpress_Category(); $categories = $category->findAll(array('wp_id' => $this->getId())); foreach ($categories as $category) { $this->_category_ids[] = $category->getWpCategoryId(); } } } return $this->_category_ids; }
public function copyTo($option) { $old_wp_id = $this->getId(); $this->setId(null)->setValueId($option->getId())->save(); $category = new Wordpress_Model_Wordpress_Category(); $categories = $category->findAll(array('wp_id' => $old_wp_id)); foreach ($categories as $category) { $category->setId(null)->setWpId($this->getId())->save(); } return $this; }