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));
     }
 }
Пример #2
0
 protected function _parseCategories($datas)
 {
     $category = new Wordpress_Model_Wordpress_Category();
     $is_selected = in_array($datas['id'], $this->getCategoryIds());
     $picture = "";
     // Gestion des enfants
     if (!empty($datas['children'])) {
         $children = array();
         foreach ($datas['children'] as $child_datas) {
             $child = $this->_parseCategories($child_datas);
             $children[] = $child;
         }
         current($children)->setIsFirst(true);
         end($children);
         current($children)->setIsLast(true);
         reset($children);
         $category->setChildren($children);
         $datas['is_last_level'] = false;
         unset($datas['children']);
     } else {
         $datas['is_last_level'] = true;
     }
     if (!empty($datas['post_ids'])) {
         $category->setPostIds($datas['post_ids']);
         unset($datas['post_ids']);
     }
     $datas['is_selected'] = $is_selected;
     $datas['picture'] = $picture;
     $category->addData($datas);
     return $category;
 }