示例#1
0
function tag_url_handler(&$sm, $url_array)
{
    $um =& $sm->get_url_manager();
    $params = array('url_module' => 'tag');
    if (VIVVO_MODULES_TAGS == 1) {
        array_shift($url_array);
        $last_chunk = end($url_array);
        $url_count = count($_url_array);
        if (preg_match('/index\\.(\\d+)?.*' . $um->list['output_type'] . '?/i', $last_chunk, $filename)) {
            if (!empty($filename[1])) {
                $params['pg'] = $filename[1];
            }
            array_pop($url_array);
            $last_chunk = end($url_array);
        }
        if ($last_chunk) {
            require_once VIVVO_FS_INSTALL_ROOT . 'lib/vivvo/core/Tags.class.php';
            $tag_list = new Tags_list($sm);
            $tag = $tag_list->get_tag_by_sefriendly(urldecode($last_chunk));
            if ($tag) {
                $params['search_tag_id'] = $tag->id;
            } else {
                go_404();
            }
        } else {
            // show tags main page
            $params['show_tags'] = 1;
        }
        return $params;
    } else {
        go_404();
    }
}
示例#2
0
function topic_content_handler(&$sm)
{
    $template = $sm->get_template();
    $header = $sm->get_header_manager();
    $um = $sm->get_url_manager();
    if (!$um->isset_param('search_tid')) {
        go_404();
    }
    require_once VIVVO_FS_INSTALL_ROOT . 'lib/vivvo/core/TagsGroups.class.php';
    $tags_groups_list = new TagsGroups_list($sm);
    $tags_group = $tags_groups_list->get_group_by_id($um->get_param('search_tid'));
    if (!$tags_group) {
        go_404();
    }
    $tag = false;
    if ($um->isset_param('search_lid')) {
        require_once VIVVO_FS_INSTALL_ROOT . 'lib/vivvo/core/Tags.class.php';
        $tags_list = new Tags_list($sm);
        $tag = $tags_list->get_tag_by_id($um->get_param('search_lid'));
        if (!$tag) {
            go_404();
        }
        $tag->set_group_url($tags_group->get_href());
        $tag->set_group_name($tags_group->get_name());
    }
    $template->assign('topic', $tags_group);
    $template->assign('tag', $tag);
    $template->assign('label', $tag);
    // @deprecated
    if ($um->isset_param('pg')) {
        $template->assign('pg', $um->get_param('pg'));
    }
    if ($tag) {
        $dir = 'label/';
        $file = $tags_group->get_tag_template();
    } else {
        $dir = 'topic/';
        $file = $tags_group->get_template();
    }
    $base = VIVVO_FS_TEMPLATE_ROOT . VIVVO_TEMPLATE_DIR;
    if (!is_file($tpl = $base . $dir . $file)) {
        $tpl = $base . $dir . 'default.tpl';
    }
    $template->set_template_file($tpl);
}
 /**
  * Tags list (tags in topic, search results)
  */
 public function _tag_list()
 {
     $sm = vivvo_lite_site::get_instance();
     $um = $sm->get_url_manager();
     $list_template = $this->load_template($this->_template_root . 'tag_list.xml');
     $params = Tags_list::get_search_params_from_url($sm);
     $params['search_advanced_mode'] = 1;
     if ($um->isset_param('topic_id')) {
         $topic = TagsGroups_list::factory()->get_group_by_id($um->get_param('topic_id'));
         $params['search_topic_id'] = $topic->get_id();
         $list_template->assign('topic', $topic);
     }
     $list_template->assign('tag_list_params', $params);
     $search_sort_by = $params['search_sort_by'] . '.' . $params['search_order'];
     $list_template->assign('search_sort_by', $search_sort_by);
     $list_template->assign('search_limit', $params['search_limit']);
     return $list_template;
 }
示例#4
0
 /**
  * Returns list of all tags applied to this article
  *
  * @return	array
  */
 public function get_tag_links()
 {
     if ($this->tag_links === false) {
         $this->tag_links = array();
         class_exists('TagsGroups') or (require VIVVO_FS_INSTALL_ROOT . 'lib/vivvo/core/TagsGroups.class.php');
         class_exists('Tags') or (require VIVVO_FS_INSTALL_ROOT . 'lib/vivvo/core/Tags.class.php');
         $this->topics = TagsGroups_list::factory()->get_groups_by_article_id($this->id, 1);
         $tag_list = Tags_list::factory();
         foreach ($this->topics as $topic) {
             $topic->set_article_tags($tags = $tag_list->get_tags_by_article_topic($this, $topic, true));
             $this->tag_links = array_merge($this->tag_links, $tags);
         }
     }
     return $this->tag_links;
 }
示例#5
0
 /**
  * Gets tags from this group
  *
  * @return array
  */
 public function get_tags()
 {
     if (!is_array($this->tags)) {
         require_once dirname(__FILE__) . '/Tags.class.php';
         $tags_list = new Tags_list();
         $this->tags = $tags_list->get_tags_by_group_id($this->id);
         if (!is_array($this->tags)) {
             $this->tags = array();
         }
     }
     return $this->tags;
 }
示例#6
0
 /**
  * Add tag to tag group
  *
  * @param	int		$tag_id
  * @param	int		$group_id
  */
 public function add_tag_to_group($tag_id, $group_id, $article_id = 0)
 {
     if (!vivvo_hooks_manager::call('tag_addTagToGroup', array(&$tag_id, &$group_id, &$article_id))) {
         return vivvo_hooks_manager::get_status();
     }
     $user = vivvo_lite_site::get_instance()->user;
     if ($user && $user->can('MANAGE_TAGS')) {
         $tag_group_list = new TagsGroups_list();
         $tag_group = $tag_group_list->get_group_by_id($group_id);
         $tag_list = new Tags_list();
         $tag = $tag_list->get_tag_by_id($tag_id);
         if ($tag_group && $tag) {
             $tg_list = new TagsToTagsGroups_list();
             if (!$tg_list->get_rel($tag_id, $group_id)) {
                 $tag_group_rel = new TagsToTagsGroups();
                 $tag_group_rel->set_tag_id($tag_id);
                 $tag_group_rel->set_tags_group_id($group_id);
                 $this->_post_master->set_data_object($tag_group_rel);
                 if (!$this->_post_master->sql_insert()) {
                     $this->set_error_code(2415);
                     return false;
                 }
             }
             if ($article_id > 0) {
                 $tg_list = new ArticlesTags_list();
                 if (!$tg_list->search(array('search_tag_id' => $tag_id, 'search_tags_group_id' => $group_id, 'search_article_id' => $article_id))) {
                     $tag_link = new ArticlesTags();
                     $tag_link->set_article_id($article_id);
                     $tag_link->set_tag_id($tag_id);
                     $tag_link->set_tags_group_id($group_id);
                     $tag_link->set_user_id($user->get_id());
                     $this->_post_master->set_data_object($tag_link);
                     if (!$this->_post_master->sql_insert()) {
                         $this->set_error_code(2415);
                         return false;
                     }
                 }
             }
             return true;
         }
         $this->set_error_code(2415);
         return false;
     }
     $this->set_error_code(2410);
     return false;
 }
 function web_statistics()
 {
     $content_template = $this->load_template($this->_template_root . 'web_statistics.xml');
     $sm = vivvo_lite_site::get_instance();
     $db =& $sm->get_db();
     require_once VIVVO_FS_INSTALL_ROOT . 'lib/vivvo/core/Categories.class.php';
     $cat_list = new Categories_list();
     $content_template->assign('website_categories', strval($cat_list->get_count()));
     require_once VIVVO_FS_INSTALL_ROOT . 'lib/vivvo/core/Tags.class.php';
     $tag_list = new Tags_list();
     $content_template->assign('website_tags', strval($tag_list->get_count()));
     require_once VIVVO_FS_INSTALL_ROOT . 'lib/vivvo/core/Articles.class.php';
     $articles_list = new Articles_list();
     $content_template->assign('website_articles', strval($articles_list->get_count()));
     $content_template->assign('website_articles_active', strval($articles_list->get_count(array('search_status' => 1))));
     $res = $db->query('SELECT sum(times_read) as times_view FROM ' . VIVVO_DB_PREFIX . 'articles_stats');
     if (!PEAR::isError($res)) {
         if ($row = $res->fetchRow(MDB2_FETCHMODE_ASSOC)) {
             $times_view = $row['times_view'];
         }
     }
     $content_template->assign('website_articles_view', intval($times_view));
     require_once VIVVO_FS_INSTALL_ROOT . 'lib/vivvo/core/Comments.class.php';
     $comments_list = new Comments_list();
     $content_template->assign('website_comments', strval($comments_list->get_count()));
     $user_mng = $sm->get_user_manager();
     $user_list = $user_mng->get_user_list();
     $content_template->assign('system_staff', strval($user_list->get_count(array('search_user_type' => 'staff'))));
     return $content_template->get_output();
 }
示例#8
0
 function generate_output($params)
 {
     $this->set_template($params);
     if (!empty($params['search_advanced_mode'])) {
         class_exists('Tags') or (require VIVVO_FS_INSTALL_ROOT . 'lib/vivvo/core/Tags.class.php');
         $list = new Tags_list();
         $list->search_from_params($params);
         $this->_template->assign('tags_list', $list->list);
         $this->_template->assign('tag_list', $list->list);
         $this->_template->assign('tags', $list);
     } else {
         $params['search_limit'] = intval($params['search_limit']);
         if ($params['search_limit'] == 0) {
             $params['search_limit'] = 20;
         }
         if (!isset($params['offset'])) {
             $params['offset'] = 0;
         }
         if (!isset($params['search_sort_by'])) {
             $params['search_sort_by'] = '';
         }
         if (!isset($params['search_order'])) {
             $params['search_order'] = '';
         }
         $um = vivvo_lite_site::get_instance()->get_url_manager();
         if (isset($params['search_article_id'])) {
             require_once VIVVO_FS_INSTALL_ROOT . 'lib/vivvo/core/ArticlesTags.class.php';
             $articles_tags_list = new ArticlesTags_list(null, $params['fields']);
             if (!empty($params['search_user_id'])) {
                 $articles_tags_list->get_by_article_user($params['search_article_id'], $params['search_user_id']);
             } elseif (isset($params['search_topic_id'])) {
                 $articles_tags_list->get_articles_tags_by_topic_id($params['search_article_id'], $params['search_topic_id']);
             } else {
                 $articles_tags_list->get_articles_tags_by_article($params['search_article_id']);
             }
             $this->_template->assign('tag_list', $articles_tags_list->list);
             $this->_template->assign('tags', $articles_tags_list);
         } else {
             if (isset($params['search_starting_with']) && !empty($params['search_starting_with'])) {
                 require_once VIVVO_FS_INSTALL_ROOT . 'lib/vivvo/core/Tags.class.php';
                 $tag_list = new Tags_list();
                 $tag_list->search(array('search_starting_with' => $params['search_starting_with']), $params['search_sort_by'], $params['search_order'], $params['search_limit'], $params['offset']);
                 $this->_template->assign('tag_list', $tag_list->list);
                 $this->_template->assign('tags', $tag_list);
             } else {
                 if (!empty($params['search_sort_by'])) {
                     require_once VIVVO_FS_INSTALL_ROOT . 'lib/vivvo/core/Tags.class.php';
                     $tag_list = new Tags_list();
                     $tag_list->search(array(), $params['search_sort_by'], $params['search_order'], $params['search_limit'], $params['offset']);
                     $this->_template->assign('tag_list', $tag_list->list);
                     $this->_template->assign('tags', $tag_list);
                 } else {
                     require_once VIVVO_FS_INSTALL_ROOT . 'lib/vivvo/core/Tags.class.php';
                     $tag_list = new Tags_list();
                     $tag_list->get_rated_tags($params['search_limit'], isset($params['search_topic_id']) ? $params['search_topic_id'] : 0, isset($params['search_category_id']) ? $params['search_category_id'] : -1);
                     $tag_list->set_fontsize();
                     $this->_template->assign('tag_list', $tag_list->list);
                     $this->_template->assign('tags', $tag_list);
                 }
             }
         }
     }
     if (isset($params['title'])) {
         $this->_template->assign('title', $params['title']);
     }
     $this->_template->assign('box_id', $params['box_id']);
 }