$rp = get_custom_friendly_url("article.php") . "?category_id=" . urlencode($category_id) . "&article_id=" . urlencode($article_id); $reviews_href = get_custom_friendly_url("articles_reviews.php") . "?category_id=" . urlencode($category_id) . "&article_id=" . urlencode($article_id); $t->set_var("rp_url", urlencode($rp)); $t->set_var("rp", htmlspecialchars($rp)); $t->set_var("reviews_href", $reviews_href); $details_fields = ",," . $details_fields . ",,"; $article_fields = array("author_name", "author_email", "author_url", "link_url", "download_url", "short_description", "full_description", "keywords", "notes"); if (!VA_Articles::check_exists($article_id)) { $t->set_var("article_item", ""); $t->set_var("NO_ARTICLE_MSG", NO_ARTICLE_MSG); $t->parse("no_article_item", false); $block_parsed = true; $t->parse("block_body", false); return; } if (!VA_Articles::check_permissions($article_id, false, VIEW_ITEMS_PERM)) { header("Location: " . get_custom_friendly_url("user_login.php") . "?type_error=2"); exit; } $is_OG_image_set = false; //Customization by Vital - Open Graph image // retrieve info for article $sql = " SELECT article_id, friendly_url, article_title, article_date, date_end, "; $sql .= " author_name, author_email, author_url, link_url, download_url, "; $sql .= " short_description, is_html, full_description, "; $sql .= " image_small, image_small_alt, image_large, image_large_alt, stream_video, stream_video_width, stream_video_height, stream_video_preview, "; $sql .= " meta_title, meta_keywords, meta_description, "; $sql .= " total_views, total_votes, total_points, allowed_rate, "; $sql .= " keywords, notes, is_remote_rss, details_remote_url "; $sql .= " FROM " . $table_prefix . "articles a "; $sql .= " WHERE article_id= " . $db->tosql($article_id, INTEGER);
function add_root_categories_to_site_map_tree($type = "products", $first_title = "", $first_url = "", $show_categories = 0, $show_items = 0, $show_subitems = 0) { global $db, $table_prefix, $settings; global $site_map_tree, $total_records; if (!$show_categories && !$show_items) { return; } $site_map_tree[$type] = array(SITEMAP_TITLE_INDEX => $first_title, SITEMAP_URL_INDEX => $first_url); $friendly_urls = get_setting_value($settings, "friendly_urls"); $friendly_extension = get_setting_value($settings, "friendly_extension"); $items_categories_ids = array(); $article_top_category_id = 0; if ($show_categories) { if ($type == "products") { $found_categories = VA_Categories::find_all("c.category_id", array("c.category_name", "c.parent_category_id", "c.friendly_url"), array("order" => " ORDER BY c.category_order, c.category_name")); $category_url_prefix = "products.php?category_id="; } elseif (strpos($type, "articles_") === 0) { $article_top_category_id = (int) substr($type, 9); $found_categories = VA_Articles_Categories::find_all("c.category_id", array("c.category_name", "c.parent_category_id", "c.friendly_url"), array("order" => " ORDER BY c.category_order, c.category_name", "where" => " c.category_path LIKE '%" . $article_top_category_id . ",%' ")); $category_url_prefix = "articles.php?category_id="; } elseif ($type == "forums") { $found_categories = VA_Forum_Categories::find_all("c.category_id", array("c.category_name", "c.friendly_url"), array("order" => " ORDER BY c.category_order, c.category_name")); $category_url_prefix = "forums.php?category_id="; } elseif ($type == "ads") { $found_categories = VA_Ads_Categories::find_all("c.category_id", array("c.category_name", "c.parent_category_id", "c.friendly_url"), array("order" => " ORDER BY c.category_order, c.category_name")); $category_url_prefix = "ads.php?category_id="; } elseif ($type == "manuals") { $found_categories = VA_Manuals_Categories::find_all("c.category_id", array("c.category_name", "c.friendly_url"), array("order" => " ORDER BY c.category_order, c.category_name")); $category_url_prefix = "manuals.php?category_id="; } if ($found_categories) { foreach ($found_categories as $cur_category_id => $cur_category) { $items_categories_ids[] = $cur_category_id; $parent_category_id = isset($cur_category["c.parent_category_id"]) ? $cur_category["c.parent_category_id"] : 0; $category_name = $cur_category["c.category_name"]; if ($cur_category["c.friendly_url"] && $friendly_urls) { $category_url = $cur_category["c.friendly_url"] . $friendly_extension; } else { $category_url = $category_url_prefix . $cur_category_id; } if ($parent_category_id <= 0 || $parent_category_id == $article_top_category_id) { $site_map_tree[$type][SITEMAP_SUBS_INDEX][] = $cur_category_id; } else { $site_map_tree[$type][$parent_category_id][SITEMAP_SUBS_INDEX][] = $cur_category_id; } $site_map_tree[$type][$cur_category_id][SITEMAP_TITLE_INDEX] = $category_name; $site_map_tree[$type][$cur_category_id][SITEMAP_URL_INDEX] = $category_url; } } } $items_ids = array(); if ($show_items) { if ($type == "products") { $item_url_prefix = "product_details.php?item_id="; $friendly_url_field = "i.friendly_url"; $item_id = "i.item_id"; $item_name_field = "i.item_name"; $category_id_field = "ic.category_id"; } elseif (strpos($type, "articles_") === 0) { $article_top_category_id = (int) substr($type, 9); $item_url_prefix = "article.php?article_id="; $friendly_url_field = "a.friendly_url"; $item_id = "a.article_id"; $item_name_field = "a.article_title"; $category_id_field = "ac.category_id"; } elseif ($type == "forums") { $item_url_prefix = "forum.php?forum_id="; $friendly_url_field = "fl.friendly_url"; $item_id = "fl.forum_id"; $item_name_field = "fl.forum_name"; $category_id_field = "fl.category_id"; } elseif ($type == "ads") { $item_url_prefix = "ads_details.php?item_id="; $friendly_url_field = "i.friendly_url"; $item_id = "i.item_id"; $item_name_field = "i.item_title"; $category_id_field = "c.category_id"; } elseif ($type == "manuals") { $item_url_prefix = "manuals_articles.php?manual_id="; $friendly_url_field = "ml.friendly_url"; $item_id = "ml.manual_id"; $item_name_field = "ml.manual_title"; $category_id_field = "c.category_id"; } $found_items = array(); if ($show_categories && $items_categories_ids) { if ($type == "forums") { $found_items = VA_Forums::find_all("", array("fl.forum_id", "fl.forum_name", "fl.friendly_url", "fl.category_id"), array("where" => " fl.category_id IN (" . $db->tosql($items_categories_ids, INTEGERS_LIST) . ")", "order" => " ORDER BY fl.forum_order, fl.forum_name")); } elseif ($type == "manuals") { $found_items = VA_Manuals::find_all("", array("ml.manual_id", "ml.manual_title", "ml.friendly_url", "c.category_id"), array("where" => " c.category_id IN (" . $db->tosql($items_categories_ids, INTEGERS_LIST) . ")", "order" => " ORDER BY ml.manual_order, ml.manual_title")); } else { array_unshift($items_categories_ids, 0); foreach ($items_categories_ids as $items_categories_id) { if ($type == "products") { $sql = " SELECT * FROM " . $table_prefix . "categories "; $sql .= " WHERE category_id=" . $db->tosql($items_categories_id, INTEGER); $db->query($sql); if ($db->next_record()) { $show_sub_products = $db->f("show_sub_products"); $category_path = $db->f("category_path") . $items_categories_id . ","; } else { $show_sub_products = false; $category_path = ""; } $sql_params = array(); $sql_fields = array(); $sql_params["brackets"] = "(("; $sql_params["join"] = " LEFT JOIN " . $table_prefix . "items_categories ic ON i.item_id=ic.item_id) "; if ($show_sub_products && $items_categories_id != 0) { $sql_params["join"] .= "LEFT JOIN " . $table_prefix . "categories c ON c.category_id = ic.category_id)"; $sql_params["where"] = " (ic.category_id = " . $db->tosql($items_categories_id, INTEGER); $sql_params["where"] .= " OR c.category_path LIKE '" . $db->tosql($category_path, TEXT, false) . "%')"; $sql_fields = array("i.item_id", "i.item_name", "i.friendly_url", $db->tosql($items_categories_id, INTEGER) . " 'ic.category_id'"); } else { $sql_params["join"] .= ")"; $sql_params["where"] = " ic.category_id = " . $db->tosql($items_categories_id, INTEGER); $sql_fields = array("i.item_id", "i.item_name", "i.friendly_url", "ic.category_id"); } $sql_params["order"] = " ORDER BY i.item_order, i.item_name"; $found_items_tmp = VA_Products::find_all("", array("i.item_id", "i.item_name", "i.friendly_url", "ic.category_id"), $sql_params); if ($show_sub_products && $items_categories_id != 0) { foreach ($found_items_tmp as $index_tmp => $items_tmp) { $found_items_tmp[$index_tmp]["ic.category_id"] = $db->tosql($items_categories_id, INTEGER); } } $found_items = array_merge($found_items, $found_items_tmp); } elseif (strpos($type, "articles_") === 0) { $found_items_tmp = VA_Articles::find_all("", array("a.article_id", "a.article_title", "a.friendly_url", "ac.category_id"), array("where" => " ac.category_id=" . $db->tosql($items_categories_id, INTEGER), "order" => " ORDER BY a.article_order, a.article_id")); $found_items = array_merge($found_items, $found_items_tmp); } elseif ($type == "ads") { $found_items_tmp = VA_Ads::find_all("", array("i.item_id", "i.item_title", "i.friendly_url", "c.category_id"), array("where" => " c.category_id=" . $db->tosql($items_categories_id, INTEGER), "order" => " ORDER BY i.item_order, i.item_title")); $found_items = array_merge($found_items, $found_items_tmp); } } } } else { // dont show categories - only items if ($type == "products") { $found_items = VA_Products::find_all("", array("i.item_id", "i.item_name", "i.friendly_url"), array("order" => " ORDER BY i.item_order, i.item_name")); } elseif (strpos($type, "articles_") === 0) { $found_items = VA_Articles::find_all("", array("a.article_id", "a.article_title", "a.friendly_url"), array("where" => " a.status_id IN ( 1, 2 ) AND ( c.category_path LIKE '0," . $db->tosql($article_top_category_id, INTEGER) . ",%' OR c.category_id=" . $db->tosql($article_top_category_id, INTEGER) . " )", "order" => " ORDER BY a.article_order, a.article_id")); } elseif ($type == "forums") { $found_items = VA_Forums::find_all("", array("fl.forum_id", "fl.forum_name", "fl.friendly_url"), array("order" => " ORDER BY fl.forum_order, fl.forum_name")); } elseif ($type == "ads") { $found_items = VA_Ads::find_all("", array("i.item_id", "i.item_title", "i.friendly_url"), array("order" => " ORDER BY i.item_order, i.item_title")); } elseif ($type == "manuals") { $found_items = VA_Manuals::find_all("", array("ml.manual_id", "ml.manual_title", "ml.friendly_url"), array("order" => " ORDER BY ml.manual_order, ml.manual_title")); } } if ($found_items) { $parent_items = array(); foreach ($found_items as $cur_item) { $cur_item_id = isset($cur_item[$item_id]) ? $cur_item[$item_id] : 0; $parent_category_id = isset($cur_item[$category_id_field]) ? $cur_item[$category_id_field] : 0; if ($cur_item[$friendly_url_field] && $friendly_urls) { $item_url = $cur_item[$friendly_url_field] . $friendly_extension; } else { $item_url = $item_url_prefix . $cur_item_id; if ($parent_category_id) { $item_url .= "&category_id=" . $parent_category_id; } } $items_ids[] = $cur_item_id; $cur_item_id = "i_" . $cur_item_id; if ($parent_category_id > 0) { $site_map_tree[$type][$parent_category_id][SITEMAP_SUBS_INDEX][] = $cur_item_id; } else { $parent_items[] = $cur_item_id; // $site_map_tree[$type][SITEMAP_SUBS_INDEX][] = $cur_item_id; } $site_map_tree[$type][$cur_item_id][SITEMAP_TITLE_INDEX] = $cur_item[$item_name_field]; $site_map_tree[$type][$cur_item_id][SITEMAP_URL_INDEX] = $item_url; } if (sizeof($parent_items)) { if (isset($site_map_tree[$type][SITEMAP_SUBS_INDEX])) { $subs = array_merge($parent_items, $site_map_tree[$type][SITEMAP_SUBS_INDEX]); } else { $subs = $parent_items; } $site_map_tree[$type][SITEMAP_SUBS_INDEX] = $subs; } } } if ($show_subitems && (!$show_items || $items_ids)) { if ($type == "manuals") { $sql_manual = " SELECT article_id, article_title, parent_article_id, friendly_url, manual_id"; $sql_manual .= " FROM " . $table_prefix . "manuals_articles "; $sql_manual .= " WHERE allowed_view=1"; if ($show_items) { $sql_manual .= " AND manual_id IN (" . $db->tosql($items_ids, INTEGERS_LIST) . ")"; } $sql_manual .= " ORDER BY article_order, article_title "; $db->query($sql_manual); while ($db->next_record()) { $article_id = $db->f("article_id"); $manual_id = $show_items ? $db->f("manual_id") : 0; $parent_article_id = $db->f("parent_article_id"); $friendly_url = $db->f("friendly_url"); if ($friendly_url && $friendly_urls) { $item_url = $friendly_url . $friendly_extension; } else { $item_url = "manuals_article_details.php?article_id=" . $article_id; } $cur_item_id = "a_" . $article_id; if ($parent_article_id > 0) { $site_map_tree[$type]["a_" . $parent_article_id][SITEMAP_SUBS_INDEX][] = $cur_item_id; } elseif ($manual_id > 0) { $site_map_tree[$type]["i_" . $manual_id][SITEMAP_SUBS_INDEX][] = $cur_item_id; } else { $site_map_tree[$type][SITEMAP_SUBS_INDEX][] = $cur_item_id; } $site_map_tree[$type][$cur_item_id][SITEMAP_TITLE_INDEX] = $db->f("article_title"); $site_map_tree[$type][$cur_item_id][SITEMAP_URL_INDEX] = $item_url; } } } $ic = count($site_map_tree[$type]); if ($ic > 3) { $total_records += $ic - 2; } else { //unset($site_map_tree[$type]); } }
$article_link = "article.php" . $query_string; $article_link .= strlen($query_string) ? "&" : "?"; $article_link .= "article_id="; $reviews_link = "articles_reviews.php" . $query_string; $reviews_link .= strlen($query_string) ? "&" : "?"; $reviews_link .= "article_id="; $t->set_var("rp_url", urlencode($rp)); $t->set_var("rp", htmlspecialchars($rp)); $t->set_var("total_records", $total_records); $t->set_var("search_string", htmlspecialchars($search_string)); $list_fields = ",," . $list_fields . ",,"; $article_fields = array("author_name", "author_email", "author_url", "link_url", "download_url", "short_description", "full_description", "keywords", "notes"); $is_OG_image_set = false; //Customization by Vital - Open Graph image if ($total_records > 0) { $allowed_articles_ids = VA_Articles::find_all_ids("a.article_id IN (" . $db->tosql($articles_ids, INTEGERS_LIST) . ")", VIEW_ITEMS_PERM); $articles_categories = array(); if ($is_search) { $sql = " SELECT a.article_id, a.category_id, c.category_name "; $sql .= " FROM (" . $table_prefix . "articles_assigned a "; $sql .= " LEFT JOIN " . $table_prefix . "articles_categories c ON c.category_id=a.category_id)"; $sql .= " WHERE a.article_id IN (" . $db->tosql($articles_ids, INTEGERS_LIST) . ") "; $sql .= " AND c.category_id IN (" . $db->tosql($categories_ids, INTEGERS_LIST) . ")"; $db->query($sql); $categories_ids = array(); $allowed_categories = array(); while ($db->next_record()) { $article_id = $db->f("article_id"); $ic_id = $db->f("category_id"); $ic_name = get_translation($db->f("category_name")); $ic_name = get_currency_message($ic_name, $currency);