コード例 #1
0
ファイル: article.php プロジェクト: rockylo/ionize
 /**
  * Link an article to a page
  * Called by XHR : ION.linkArticleToPage()
  * Slightly the same as add_parent() but callbacks are different.
  *
  *
  */
 public function link_to_page()
 {
     if (!Authority::can('move', 'admin/article')) {
         $this->error(lang('permission_denied'));
     }
     $id_page = $this->input->post('id_page');
     $id_article = $this->input->post('id_article');
     $id_page_origin = $this->input->post('id_page_origin');
     $copy = $this->input->post('copy');
     if (!empty($id_page) && !empty($id_article)) {
         // Get the original context
         $original_context = $this->article_model->get_context($id_article, $id_page_origin);
         // Clean of context : On copy
         if ($copy) {
             $original_context['online'] = '0';
             $original_context['main_parent'] = '0';
         }
         // Ordering : last position
         $original_context['ordering'] = $this->_get_ordering('last', $id_page);
         if ($this->article_model->link_to_page($id_page, $id_article, $original_context) === TRUE) {
             // Clear the cache
             Cache()->clear_cache();
             // Get the page, menu and articles details for the JSON answer
             $page = $this->page_model->get_by_id($id_page, Settings::get_lang('default'));
             $page['id_article'] = $id_article;
             $menu = $this->menu_model->get_from_page($id_page);
             // Articles
             $articles = $this->article_model->get_lang_list(array('id_article' => $id_article, 'id_page' => $id_page), Settings::get_lang('default'));
             // Context : To get the inserted context
             $inserted_context = $this->article_model->get_context($id_article, $id_page, Settings::get_lang('default'));
             // Set the article
             $article = array();
             if (!empty($articles)) {
                 $article = $articles[0];
                 $article['title'] = htmlspecialchars_decode($article['title'], ENT_QUOTES);
                 // Correct online information
                 $article['online'] = $inserted_context['online'];
                 // Used by JS Tree to detect if article is inserted in tree or not
                 $article['inserted'] = TRUE;
             }
             $this->callback = array(array('fn' => 'ION.addPageToArticleParentListDOM', 'args' => $page), array('fn' => $menu['name'] . 'Tree.insertElement', 'args' => array($article, 'article')), array('fn' => 'ION.reloadPageArticleList', 'args' => $id_page), array('fn' => 'ION.removeArticleFromOrphan', 'args' => $article));
             // Article moved ?
             if ($copy == FALSE && $id_page_origin != FALSE) {
                 // Check and correct content of other articles if they refers to this one from their content
                 $this->article_model->correct_internal_links($id_article, $id_page_origin, $id_page);
                 // Unlink from first parent : Corrects also the main parent
                 $affected_rows = $this->article_model->unlink($id_article, $id_page_origin);
                 $ordering = $this->article_model->get_articles_ordering($id_page_origin);
                 $this->article_model->save_ordering($ordering, 'page', $id_page_origin);
                 $this->callback[] = array('fn' => 'ION.unlinkArticleFromPageDOM', 'args' => array('id_page' => $id_page_origin, 'id_article' => $id_article));
                 $this->callback[] = array('fn' => 'ION.notification', 'args' => array('success', lang('ionize_message_article_moved')));
             } else {
                 $this->callback[] = array('fn' => 'ION.notification', 'args' => array('success', lang('ionize_message_article_linked_to_page')));
             }
             // Context update
             $this->update_contexts($id_article);
             $this->response();
         }
     }
 }