1
0
mirror of https://github.com/e107inc/e107.git synced 2025-01-18 05:09:05 +01:00
2010-02-10 18:18:01 +00:00

596 lines
19 KiB
PHP

<?php
/*
* e107 website system
*
* Copyright (C) 2008-2009 e107 Inc (e107.org)
* Released under the terms and conditions of the
* GNU General Public License (http://www.gnu.org/licenses/gpl.txt)
*
*
*
* $Source: /cvs_backup/e107_0.8/e107_plugins/links_page/links.php,v $
* $Revision$
* $Date$
* $Author$
*/
require_once('../../class2.php');
if (!plugInstalled('links_page'))
{
header("location:".e_BASE."index.php");
exit;
}
require_once(e_HANDLER."rate_class.php");
$rater = new rater;
require_once(e_PLUGIN.'links_page/link_shortcodes.php');
require_once(e_PLUGIN.'links_page/link_defines.php');
require_once(e_HANDLER."userclass_class.php");
e107_require_once(e_HANDLER.'arraystorage_class.php');
$eArrayStorage = new ArrayData();
require_once(e_HANDLER."form_handler.php");
$rs = new form;
require_once(e_HANDLER."file_class.php");
$fl = new e_file;
require_once(e_HANDLER."comment_class.php");
$cobj = new comment;
require_once(e_PLUGIN.'links_page/link_class.php');
$lc = new linkclass();
global $tp;
$linkspage_pref = $lc -> getLinksPagePref();
$deltest = array_flip($_POST);
if(e_QUERY){
$qs = explode(".", e_QUERY);
if(is_numeric($qs[0]))
{
$from = array_shift($qs);
}
else
{
$from = "0";
}
}
include_lan(e_PLUGIN."links_page/languages/".e_LANGUAGE.".php");
$lc -> setPageTitle();
//submit comment
if (isset($_POST['commentsubmit']))
{
if (!$sql->db_Select("links_page", "link_id", "link_id = '".intval($qs[1])."' "))
{
header("location:".e_BASE."index.php");
exit;
}
else
{
$row = $sql->db_Fetch();
if ($row[0] && (ANON === TRUE || USER === TRUE))
{
$cobj->enter_comment($_POST['author_name'], $_POST['comment'], "links_page", $qs[1], $pid, $_POST['subject']);
$e107cache->clear("comment.links_page.{$qs[1]}");
}
}
}
//update refer
if (isset($qs[0]) && $qs[0] == "view" && isset($qs[1]) && is_numeric($qs[1]))
{
if($sql->db_Select("links_page", "*", "link_id='".intval($qs[1])."' AND link_class REGEXP '".e_CLASS_REGEXP."' "))
{
$row = $sql->db_Fetch();
$sql->db_Update("links_page", "link_refer=link_refer+1 WHERE link_id='".intval($qs[1])."' ");
//header("location:".$row['link_url']); exit;
js_location($row['link_url']);
}
}
require_once(HEADERF);
if (is_readable(THEME."links_template.php"))
{
require_once(THEME."links_template.php");
}
else
{
require_once(e_PLUGIN."links_page/links_template.php");
}
//submit / manage link
if (isset($_POST['add_link']))
{
if($qs[0] == "submit"){
if(check_class($linkspage_pref['link_submit_class']))
{
if(isset($linkspage_pref['link_submit_directpost']) && $linkspage_pref['link_submit_directpost'])
{
$lc -> dbLinkCreate();
}
else
{
$lc -> dbLinkCreate("submit");
}
}
else
{
js_location(e_SELF);
}
}
if($qs[0] == "manage")
{
if(check_class($linkspage_pref['link_manager_class']))
{
if(isset($qs[2]) && is_numeric($qs[2]))
{
$lc->verify_link_manage($qs[2]);
}
if(isset($linkspage_pref['link_directpost']) && $linkspage_pref['link_directpost'])
{
$lc -> dbLinkCreate();
}
else
{
$lc -> dbLinkCreate("submit");
}
}
else
{
js_location(e_SELF);
}
}
}
//message submitted link
if(isset($qs[0]) && $qs[0] == "s")
{
$lc->show_message(LAN_LINKS_29, LAN_LINKS_28);
}
$qsorder = FALSE;
if(isset($qs[0]) && substr($qs[0],0,5) == "order")
{
$qsorder = TRUE;
}
//show all categories
if((!isset($qs[0]) || $qsorder) && $linkspage_pref['link_page_categories'])
{
echo displayNavigator('cat');
displayCategory();
}
//show all categories
if(isset($qs[0]) && $qs[0] == "cat" && !isset($qs[1]) ){
echo displayNavigator('cat');
displayCategory();
}
//show all links in all categories
if( ((!isset($qs[0]) || $qsorder) && !$linkspage_pref['link_page_categories']) || (isset($qs[0]) && $qs[0] == "all") )
{
// displayNavigator('');
displayCategoryLinks();
}
//show all links in one category
if(isset($qs[0]) && $qs[0] == "cat" && isset($qs[1]) && is_numeric($qs[1]))
{
// echo displayNavigator('');
displayCategoryLinks($qs[1]);
}
//view top rated
if(isset($qs[0]) && $qs[0] == "rated")
{
echo displayNavigator('');
displayTopRated();
}
//view top refer
if(isset($qs[0]) && $qs[0] == "top"){
echo displayNavigator('');
displayTopRefer();
}
//personal link managers
if (isset($qs[0]) && $qs[0] == "manage"){
echo displayNavigator('');
displayPersonalManager();
}
//comments on links
if (isset($qs[0]) && $qs[0] == "comment" && isset($qs[1]) && is_numeric($qs[1]) ){
echo displayNavigator('');
displayLinkComment();
}
//submit link
if (isset($qs[0]) && $qs[0] == "submit")
{
if (check_class($linkspage_pref['link_submit_class']))
{
echo displayNavigator('');
displayLinkSubmit();
}
else
{
$lc->show_message(LAN_LINKS_50);
}
}
function displayTopRated(){
global $qs, $sql, $lc, $tp, $rowl, $link_shortcodes, $from, $ns, $linkspage_pref;
global $LINK_RATED_TABLE_START, $LINK_RATED_TABLE, $LINK_RATED_TABLE_END, $LINK_RATED_RATING, $LINK_RATED_APPEND;
$number = (isset($linkspage_pref["link_nextprev_number"]) && $linkspage_pref["link_nextprev_number"] ? $linkspage_pref["link_nextprev_number"] : "20");
$np = ($linkspage_pref["link_nextprev"] ? "LIMIT ".intval($from).",".intval($number) : "");
$catrate = (isset($qs[1]) && is_numeric($qs[1]) ? " AND l.link_category='".$qs[1]."' " : "");
$ratemin = (isset($linkspage_pref['link_rating_minimum']) && $linkspage_pref['link_rating_minimum'] ? $linkspage_pref['link_rating_minimum'] : "0");
$qry = "
SELECT l.*, r.*, lc.link_category_id, lc.link_category_name, (r.rate_rating / r.rate_votes) as rate_avg
FROM #rate AS r
LEFT JOIN #links_page AS l ON l.link_id = r.rate_itemid
LEFT JOIN #links_page_cat AS lc ON lc.link_category_id = l.link_category
WHERE l.link_class REGEXP '".e_CLASS_REGEXP."' ".$catrate." AND lc.link_category_class REGEXP '".e_CLASS_REGEXP."' AND r.rate_table='links_page'
ORDER BY rate_avg DESC
";
$qry2 = $qry." ".$np;
if(!is_object($sql)){ $sql = new db; }
$linktotalrated = $sql -> db_Select_gen($qry);
if (!$ratedlinks = $sql->db_Select_gen($qry2)){
$lc -> show_message(LAN_LINKS_33, LAN_LINKS_11);
}else{
$link_rated_table_string = "";
$list = $sql -> db_getList();
foreach($list as $rowl) {
if( ($rowl['rate_avg'] > $ratemin) ){
$cat = $rowl['link_category_name'];
$LINK_RATED_APPEND = $lc -> parse_link_append($rowl);
$LINK_RATED_RATING = $tp -> parseTemplate('{LINK_RATED_RATING}', FALSE, $link_shortcodes);
$link_rated_table_string .= $tp -> parseTemplate($LINK_RATED_TABLE, FALSE, $link_shortcodes);
}
}
$link_rated_table_start = $tp -> parseTemplate($LINK_RATED_TABLE_START, FALSE, $link_shortcodes);
$link_rated_table_end = $tp -> parseTemplate($LINK_RATED_TABLE_END, FALSE, $link_shortcodes);
if(isset($qs[1])){
$captioncat = " : ".LAN_LINKS_40." : ".$cat;
}
$caption = LAN_LINKS_11." ".(isset($captioncat) ? $captioncat : "");
$text = $link_rated_table_start.$link_rated_table_string.$link_rated_table_end;
$ns->tablerender($caption, $text);
$lc->ShowNextPrev($from, $number, $linktotalrated);
}
}
function displayTopRefer(){
global $qs, $sql2, $lc, $link_shortcodes, $cobj, $rowl, $from, $tp, $ns, $linkspage_pref;
global $LINK_TABLE_START, $LINK_TABLE, $LINK_TABLE_END, $LINK_APPEND;
$number = ($linkspage_pref["link_nextprev_number"] ? $linkspage_pref["link_nextprev_number"] : "20");
$np = ($linkspage_pref["link_nextprev"] ? "LIMIT ".intval($from).",".intval($number) : "");
$min = (isset($linkspage_pref['link_refer_minimum']) && $linkspage_pref['link_refer_minimum'] ? " AND l.link_refer > ".$linkspage_pref['link_refer_minimum'] : "");
$qry = "
SELECT l.*, lc.*, COUNT(c.comment_id) AS link_comment
FROM #links_page AS l
LEFT JOIN #links_page_cat AS lc ON lc.link_category_id = l.link_category
LEFT JOIN #comments as c ON c.comment_item_id=l.link_id AND comment_type='links_page'
WHERE l.link_class REGEXP '".e_CLASS_REGEXP."' ".$min."
GROUP BY l.link_id
ORDER BY l.link_refer DESC
";
$qry2 = $qry." ".$np;
if(!is_object($sql2)){ $sql2 = new db; }
$link_total = $sql2 -> db_Select_gen($qry);
if(!$sql2 -> db_Select_gen($qry2)){
$lc -> show_message(LAN_LINKS_42, LAN_LINKS_10);
}else{
$link_top_table_string = "";
$list = $sql2 -> db_getList();
foreach($list as $rowl) {
$category = $rowl['link_category_id'];
$LINK_APPEND = $lc -> parse_link_append($rowl);
$link_top_table_string .= $tp -> parseTemplate($LINK_TABLE, FALSE, $link_shortcodes);
}
$link_top_table_start = $tp -> parseTemplate($LINK_TABLE_START, FALSE, $link_shortcodes);
$link_top_table_end = $tp -> parseTemplate($LINK_TABLE_END, FALSE, $link_shortcodes);
$text = $link_top_table_start.$link_top_table_string.$link_top_table_end;
$caption = LAN_LINKS_10;
$ns->tablerender($caption, $text);
$lc->ShowNextPrev($from, $number, $link_total);
}
}
function displayPersonalManager()
{
global $qs, $sql, $sql2, $lc, $link_shortcodes, $cobj, $row, $from, $tp, $ns, $linkspage_pref;
global $LINK_TABLE_MANAGE_START, $LINK_TABLE_MANAGE, $LINK_TABLE_MANAGE_END;
if(!(isset($linkspage_pref['link_manager']) && $linkspage_pref['link_manager']))
{
js_location(e_SELF);
}
//delete link
if(isset($linkspage_pref['link_directdelete']) && $linkspage_pref['link_directdelete'])
{
if(isset($_POST['delete']))
{
$tmp = array_pop(array_flip($_POST['delete']));
list($delete, $del_id) = explode("_", $tmp);
}
if (isset($delete) && $delete == 'main')
{
$sql->db_Select("links_page", "link_category, link_order, link_author", "link_id='".intval($del_id)."'"); // Get the position of target in the order
$row = $sql->db_Fetch();
if($row['link_author'] != USERID) {
header('Location: '.SITEURL);
exit;
}
if (!is_object($sql2)){ $sql2 = new db; }
$sql->db_Select("links_page", "link_id", "link_order>'".$row['link_order']."' && link_category='".intval($row['link_category'])."'");
while ($row = $sql->db_Fetch())
{
$sql2->db_Update("links_page", "link_order=link_order-1 WHERE link_id='".$row['link_id']."'");
}
if ($sql->db_Delete("links_page", "link_id='".intval($del_id)."'"))
{
$lc->show_message(LCLAN_ADMIN_10." #".$del_id." ".LCLAN_ADMIN_11);
}
}
}
//upload link icon
if(isset($_POST['uploadlinkicon'])){
$lc -> uploadLinkIcon();
}
//show existing links
if(!(check_class($linkspage_pref['link_manager_class']))){
js_location(e_SELF);
}else{
$qry = "
SELECT l.*, lc.*
FROM #links_page AS l
LEFT JOIN #links_page_cat AS lc ON lc.link_category_id = l.link_category
WHERE l.link_author = '".USERID."'
ORDER BY l.link_name
";
$link_table_manage = "";
if(!$manager_total = $sql -> db_Select_gen($qry)){
$text = LAN_LINKS_MANAGER_4;
}else{
$link_table_manage_start = $tp -> parseTemplate($LINK_TABLE_MANAGE_START, FALSE, $link_shortcodes);
while($row = $sql -> db_Fetch()){
$link_table_manage .= $tp -> parseTemplate($LINK_TABLE_MANAGE, FALSE, $link_shortcodes);
}
$link_table_manage_end = $tp -> parseTemplate($LINK_TABLE_MANAGE_END, FALSE, $link_shortcodes);
$text = $link_table_manage_start.$link_table_manage.$link_table_manage_end;
}
$ns->tablerender(LAN_LINKS_35, $text);
//show link create
$lc->show_link_create();
}
return;
}
//comments on links
function displayLinkComment(){
global $qs, $cobj, $tp, $sql, $linkbutton_count, $lc, $rowl, $link_shortcodes, $ns, $linkspage_pref, $LINK_TABLE_START, $LINK_TABLE, $LINK_TABLE_END, $LINK_APPEND;
if(!(isset($linkspage_pref["link_comment"]) && $linkspage_pref["link_comment"])){
js_location(e_SELF);
}else{
$qry = "
SELECT l.*, lc.*, COUNT(c.comment_id) AS link_comment
FROM #links_page AS l
LEFT JOIN #links_page_cat AS lc ON lc.link_category_id = l.link_category
LEFT JOIN #comments as c ON c.comment_item_id=l.link_id AND comment_type='links_page'
WHERE l.link_id = '".intval($qs[1])."' AND lc.link_category_class REGEXP '".e_CLASS_REGEXP."' AND l.link_class REGEXP '".e_CLASS_REGEXP."'
GROUP BY l.link_id";
$link_comment_table_string = "";
if(!$linkcomment = $sql -> db_Select_gen($qry)){
js_location(e_SELF);
}else{
$rowl = $sql->db_Fetch();
$linkbutton_count = ($rowl['link_button']) ? $linkbutton_count + 1 : $linkbutton_count;
$LINK_APPEND = $lc -> parse_link_append($rowl);
$subject = $rowl['link_name'];
$text = $tp -> parseTemplate($LINK_TABLE_START, FALSE, $link_shortcodes);
$text .= $tp -> parseTemplate($LINK_TABLE, FALSE, $link_shortcodes);
$text .= $tp -> parseTemplate($LINK_TABLE_END, FALSE, $link_shortcodes);
$ns->tablerender(LAN_LINKS_36, $text);
$cobj->compose_comment("links_page", "comment", $qs[1], $width, $subject, $showrate=FALSE);
}
}
return;
}
function displayLinkSubmit(){
global $qs, $sql, $tp, $rs, $ns, $linkspage_pref, $link_shortcodes, $LINK_SUBMIT_TABLE, $LINK_SUBMIT_CAT;
if ($link_cats = $sql->db_Select("links_page_cat", "*", " link_category_class REGEXP '".e_CLASS_REGEXP."' ")) {
$LINK_SUBMIT_CAT = $rs -> form_select_open("cat_id");
while (list($cat_id, $cat_name, $cat_description) = $sql->db_Fetch()) {
$LINK_SUBMIT_CAT .= $rs -> form_option($cat_name, "0", $cat_id);
}
$LINK_SUBMIT_CAT .= $rs -> form_select_close();
}
$text = $tp -> parseTemplate($LINK_SUBMIT_TABLE, FALSE, $link_shortcodes);
$ns->tablerender(LAN_LINKS_31, $text);
return;
}
function displayCategory(){
global $sql, $sql2, $ns, $lc, $tp, $qs, $rowl, $link_shortcodes, $linkspage_pref, $total_links, $category_total, $alllinks;
global $LINK_MAIN_TABLE_END_ALL, $LINK_MAIN_TABLE, $LINK_MAIN_TABLE_START;
$order = $lc -> getOrder('cat');
$qry = "
SELECT lc.*
FROM #links_page_cat AS lc
WHERE lc.link_category_class REGEXP '".e_CLASS_REGEXP."'
".$order."
";
if(!is_object($sql)){ $sql = new db; }
if(!is_object($sql2)){ $sql2 = new db; }
if (!$category_total = $sql->db_Select_gen($qry)){
$lc -> show_message(LAN_LINKS_41, LAN_LINKS_30);
}else{
$link_main_table_string = "";
$list = $sql->db_getList();
foreach($list as $rowl) {
$rowl['total_links'] = $sql2 -> db_Count("links_page", "(*)", "WHERE link_category = '".$rowl['link_category_id']."' AND link_class REGEXP '".e_CLASS_REGEXP."' ");
if((!isset($linkspage_pref['link_cat_empty']) || $linkspage_pref['link_cat_empty'] == 0 && $rowl['total_links'] > "0") || (isset($linkspage_pref['link_cat_empty']) && $linkspage_pref['link_cat_empty'])){
$alllinks = $alllinks + $rowl['total_links'];
$link_main_table_string .= $tp -> parseTemplate($LINK_MAIN_TABLE, FALSE, $link_shortcodes);
}
}
$link_main_table_start = $tp -> parseTemplate($LINK_MAIN_TABLE_START, FALSE, $link_shortcodes);
$link_main_table_end = $tp -> parseTemplate($LINK_MAIN_TABLE_END_ALL, FALSE, $link_shortcodes);
$text = $link_main_table_start.$link_main_table_string.$link_main_table_end;
$caption = LAN_LINKS_30;
$ns->tablerender($caption, $text);
}
return;
}
function displayNavigator($mode='')
{
global $sql2, $ns, $lc, $tp, $cobj, $rowl, $qs, $linkspage_pref, $from, $link_shortcodes;
global $LINK_NAVIGATOR_TABLE, $LINK_SORTORDER, $LINK_NAVIGATOR, $LINK_NAVIGATOR_TABLE_PRE, $LINK_NAVIGATOR_TABLE_POST;
static $hasBeenShown = FALSE;
if ($hasBeenShown) return '';
$hasBeenShown = TRUE;
if($mode == "cat")
{
if(isset($linkspage_pref['link_cat_sortorder']) && $linkspage_pref['link_cat_sortorder'])
{
$LINK_SORTORDER = $lc->showLinkSort('cat');
}
}
else
{
if(isset($linkspage_pref['link_sortorder']) && $linkspage_pref['link_sortorder'])
{
$LINK_SORTORDER = $lc->showLinkSort();
}
}
$nav = $tp -> parseTemplate('{LINK_NAVIGATOR}', FALSE, $link_shortcodes);
$so = $tp -> parseTemplate('{LINK_SORTORDER}', FALSE, $link_shortcodes);
$LINK_NAVIGATOR_TABLE_PRE = FALSE;
$LINK_NAVIGATOR_TABLE_POST = FALSE;
if ($nav!="" || $so!="" ) {
$LINK_NAVIGATOR_TABLE_PRE = TRUE;
$LINK_NAVIGATOR_TABLE_POST = TRUE;
}
$text = $tp -> parseTemplate($LINK_NAVIGATOR_TABLE, FALSE, $link_shortcodes);
return $text;
}
function displayCategoryLinks($mode=''){
global $sql2, $ns, $lc, $tp, $cobj, $rowl, $qs, $linkspage_pref, $from, $link_shortcodes, $link_category_total;
global $LINK_TABLE_START,$linkbutton_count, $LINK_TABLE,$link_category_total, $LINK_TABLE_CAPTION, $LINK_TABLE_END, $LINK_APPEND;
$order = $lc -> getOrder();
$number = ($linkspage_pref["link_nextprev_number"] ? $linkspage_pref["link_nextprev_number"] : "20");
$nextprevquery = ($mode && $linkspage_pref["link_nextprev"] ? "LIMIT ".intval($from).",".intval($number) : "");
$cat = ($mode ? " AND l.link_category='".intval($mode)."' " : "");
$qry = "
SELECT l.*, lc.*, COUNT(c.comment_id) AS link_comment
FROM #links_page AS l
LEFT JOIN #links_page_cat AS lc ON lc.link_category_id = l.link_category
LEFT JOIN #comments as c ON c.comment_item_id=l.link_id AND comment_type='links_page'
WHERE l.link_class REGEXP '".e_CLASS_REGEXP."' AND lc.link_category_class REGEXP '".e_CLASS_REGEXP."' ".$cat."
GROUP BY l.link_id
".$order."
".$nextprevquery."
";
$link_table_string = "";
if(!is_object($sql2)){ $sql2 = new db; }
$link_total = $sql2 -> db_Count("links_page as l", "(*)", "WHERE l.link_class REGEXP '".e_CLASS_REGEXP."' ".$cat." ");
if (!$sql2->db_Select_gen($qry)){
$lc -> show_message(LAN_LINKS_34, LAN_LINKS_39);
}else{
$linkbutton_count = 0;
$list = $sql2 -> db_getList();
foreach($list as $rowl) {
$linkbutton_count = ($rowl['link_button']) ? $linkbutton_count + 1 : $linkbutton_count;
if($mode){
$cat_name = $rowl['link_category_name'];
$cat_desc = $rowl['link_category_description'];
$LINK_APPEND = $lc -> parse_link_append($rowl);
$link_table_string .= $tp -> parseTemplate($LINK_TABLE, FALSE, $link_shortcodes);
}else{
$arr[$rowl['link_category_id']][] = $rowl;
}
}
if($mode)
{
$link_category_total = $link_total;
$link_table_start = $tp -> parseTemplate($LINK_TABLE_START, FALSE, $link_shortcodes);
$link_table_end = $tp -> parseTemplate($LINK_TABLE_END, FALSE, $link_shortcodes);
$text = $link_table_start.$link_table_string.$link_table_end;
$caption = LAN_LINKS_32." ".$cat_name." ".($cat_desc ? " <i>[".$cat_desc."]</i>" : "");
//number of links
$caption .= " (<b title='".(ADMIN ? LAN_LINKS_2 : LAN_LINKS_1)."' >".$link_total."</b>".(ADMIN ? "/<b title='".(ADMIN ? LAN_LINKS_1 : "" )."' >".$link_total."</b>" : "").") ";
$ns->tablerender($caption, $text);
if(is_numeric($mode))
{
$lc->ShowNextPrev($from, $number, $link_total);
}
}
else
{
$text = '';
foreach($arr as $key => $value)
{
$link_table_string = "";
$linkbutton_count = 0;
$i=0;
for($i=0;$i<count($value);$i++)
{
$rowl = $value[$i];
$linkbutton_count = ($rowl['link_button']) ? $linkbutton_count + 1 : $linkbutton_count;
$cat_name = $rowl['link_category_name'];
$cat_desc = $rowl['link_category_description'];
$LINK_APPEND = $lc -> parse_link_append($rowl);
$link_table_string .= $tp -> parseTemplate($LINK_TABLE, FALSE, $link_shortcodes);
}
$link_category_total = count($value);
$link_table_caption = $tp -> parseTemplate($LINK_TABLE_CAPTION, FALSE, $link_shortcodes);
$link_table_start = $tp -> parseTemplate($LINK_TABLE_START, FALSE, $link_shortcodes);
$link_table_end = $tp -> parseTemplate($LINK_TABLE_END, FALSE, $link_shortcodes);
$text .= $link_table_start.$link_table_string.$link_table_end;
}
// $nav = $tp->parseTemplate("{NAVIGATOR}", FALSE, $link_shortcodes); Navigator now positioned in template
// $ns->tablerender($link_table_caption, $nav.$text);
$ns->tablerender($link_table_caption, $text);
}
}
return;
}
require_once(FOOTERF);
?>