Exemplo n.º 1
0
 /**
  * Add new page
  *
  * @param	array	$in_page
  * @return	boolean	true on success or false on fail
  */
 function add_page($in_page)
 {
     if (!$this->check_token()) {
         return false;
     }
     $sm = vivvo_lite_site::get_instance();
     if ($sm->user && $sm->user->can('MANAGE_PLUGIN', 'pages')) {
         $page_list = new Pages_list();
         $new_order_num = $page_list->get_max('order_number');
         $in_page['title'] = htmlspecialchars($in_page['title'], ENT_QUOTES, 'UTF-8');
         if ($new_order_num) {
             $in_page['order_number'] = $new_order_num + 1;
         } else {
             $in_page['order_number'] = 1;
         }
         if (empty($in_page['sefriendly']) or !strlen(trim($in_page['sefriendly']))) {
             $in_page['sefriendly'] = $in_page['title'];
         }
         $sefriendly_url = strtolower(preg_replace('/[^a-z\\d_]/i', '-', $in_page['sefriendly']));
         $sefriendly_url = preg_replace('/-+/', '-', $sefriendly_url);
         $sefriendly_url = trim($sefriendly_url, '-');
         $in_page['sefriendly'] = $sefriendly_url;
         if ($sm->is_registered_url($in_page['sefriendly'] . '.html')) {
             $this->set_error_code(2601);
             return false;
         }
         $page = new Pages();
         if ($page->populate($in_page, true) === false) {
             return false;
         }
         $um = $sm->get_url_manager();
         $um->register_url($in_page['sefriendly'] . '.html', 'plugins/pages/page_url_handler.php', 'page_url_handler', 'page_content_handler');
         $this->_post_master->set_data_object($page);
         if ($this->_post_master->sql_insert()) {
             $um->set_param('search_pid', $this->_post_master->get_work_id());
             return true;
         } else {
             $this->set_error_code(2602);
             return false;
         }
     } else {
         $this->set_error_code(2603);
         return false;
     }
 }