<?php
/* functions_vbseo_ui.php dosyası. Parça 1/2 */
/************************************************************************************
* vBSEO 3.6.0 for vBulletin v3.x & v4.x by Crawlability, Inc.                       *
*                                                                                   *
* Copyright © 2011, Crawlability, Inc. All rights reserved.                         *
* You may not redistribute this file or its derivatives without written permission. *
*                                                                                   *
* Sales Email: sales@crawlability.com                                               *
*                                                                                   *
*----------------------------vBSEO IS NOT FREE SOFTWARE-----------------------------*
* http://www.crawlability.com/vbseo/license/                                        *
************************************************************************************/

define(VBSEO_UI_THREAD, 1);
define(VBSEO_UI_BLOG,   2);
define(VBSEO_UI_CMS,    3);
define(VBSEO_UI_CID_TOP,-1);
class vBSEO_UI
{
private static $ginfo    = array();
private static $page_ids = array();
private static $shortlist= 3;
private static $toplist= 10;
private static $longlist = 100;
private static $default_top_tree = true;
public static function head_hook()
{
$container_class = "&#039;postbody&#039;,&#039;blogbit&#039;,&#039;content&#039;,&#039;postcontainer&#039;,&#039;vbseo_like_postbit&#039;";
$vbseoui_options = &#039;"&#039;.addslashes(VBSEO_VB_EXT).&#039;",&#039;.(VBSEO_LIKE_LINK_VISIBLE ? 1 : 0);
eval(vbseo_eval_template(&#039;vbseo_ui_headinc&#039;, &#039;$ls_js&#039;));
if(THIS_SCRIPT==&#039;vbcms&#039; || !VBSEO_VB4)
vbseo_insert_code($ls_js, &#039;head_end&#039;);
else
{
global $headinclude_bottom;
$headinclude_bottom.=$ls_js;
}
}
public static function parse_tpl_hook()
{
global $template_hook;
if(THIS_SCRIPT == &#039;member&#039;)
{
$menuitem = vbseo_fetch_tpl(&#039;vbseo_profile_menu&#039;);
if(VBSEO_VB4)
vbseo_modify_template(&#039;MEMBERINFO&#039;, 
&#039;#(\<ul[^>]*"usermenu".*?)(</ul>)#s&#039;, &#039;$1&#039;.$menuitem.&#039;$2&#039;);
else
vbseo_modify_template(&#039;memberinfo_block_ministats&#039;, 
&#039;#(\[posts\]</dd>)#is&#039;, &#039;$1&#039;.$menuitem);
}
$template_hook[&#039;custom_css_list&#039;] .= ($template_hook[&#039;custom_css_list&#039;] ? "," : "").
"vbseo_buttons.css" . ((THIS_SCRIPT == &#039;showthread&#039;) ? ",vbseo_buttons_fix.css" : "");
$tplpostbit = vbseo_get_postbit_tpl();
vbseo_modify_template($tplpostbit, $sf =&#039;|| $post[\&#039;signature\&#039;]&#039;, $sf . &#039; || 1&#039;);
if(!VBSEO_VB4)
vbseo_modify_template($tplpostbit, $sf=&#039;class=\"tborder&#039;, $sf . &#039; vbseo_like_postbit&#039;);
}
public static function postbit_hook(&$post, &$template_hook)
{
global $show, $thread, $vboptions, $vbseo_gcache; 
$is_public = vbseo_forum_is_public($GLOBALS[&#039;forum&#039;], $GLOBALS[&#039;foruminfo&#039;], false, true);
if (THIS_SCRIPT != &#039;showthread&#039;)
return false;
if($fi = $GLOBALS[&#039;forum&#039;])
if(!$fi[&#039;vbseo_enable_likes&#039;])
return;
if ($is_public && VBSEO_BOOKMARK_POST && ($bmlist = vbseo_get_bookmarks()))
{
$book_t = urlencode($thread[&#039;title&#039;]);
$vbseo_url_t = urlencode($vboptions[&#039;bburl2&#039;] . &#039;/&#039; . 
vbseo_thread_url($thread[&#039;threadid&#039;], $_GET[&#039;page&#039;]) . &#039;#post&#039;) . $post[&#039;postid&#039;];
$bookmarks = array();
foreach($bmlist as $bm)
{
$url = str_replace(&#039;%url%&#039;, $vbseo_url_t, str_replace(&#039;%title%&#039;, $book_t, str_replace(&#039;&amp;&#039;, &#039;&&#039;, $bm[0])));
$bookmarks[] = array(
&#039;url&#039; => $url,
&#039;image&#039; => $bm[1],
&#039;text&#039;  => $bm[3]
);
}
}else $bookmarks = &#039;&#039;;
$vbseo_likeshare = self::likeshare_bit(VBSEO_UI_THREAD, 
$post[&#039;threadid&#039;], $post[&#039;postid&#039;], $post[&#039;userid&#039;], $bookmarks);
if($vbseo_likeshare)
{
vbseo_modify_template34(&#039;SHOWTHREAD&#039;, &#039;#(&#039;.$sfor.&#039;)#s&#039;, &#039;$1&#039;.$liketree,
0, &#039;<!--VBSEO_LIKE_TREE-->&#039;);
$template_hook[&#039;postbit_signature_start&#039;] .= $vbseo_likeshare;
}
}
public static function thread_hook()
{
global $thread, $vbseo_gcache;
if($fi = $GLOBALS[&#039;forum&#039;])
if(!$fi[&#039;vbseo_enable_likes&#039;])
return;
$tpage = count(self::$ginfo[VBSEO_UI_THREAD][$thread[&#039;threadid&#039;]]);
if(self::$default_top_tree && (vbseo_page_size(true) <= $thread[&#039;replycount&#039;]))
{
self::$ginfo = array();
}
$liketree = self::liketree_bit(VBSEO_UI_THREAD, 
$thread[&#039;threadid&#039;], 
$thread[&#039;vbseo_likes&#039;],
$tpage
);
if($liketree)
{
$sfor = VBSEO_VB4 ?
&#039;<div id="pagetitle".*?>&#039; :
&#039;id=\\\\"poststop\\\\".*?</a>&#039;;
vbseo_modify_template34(&#039;SHOWTHREAD&#039;, &#039;#(&#039;.$sfor.&#039;)#s&#039;, &#039;$1&#039;.$liketree,
0, &#039;<!--VBSEO_LIKE_TREE-->&#039;);
}
}
public static function liketree_bit($ctype, $cgroup, $like_total, $like_page = 0)
{
global $vbseo_gcache, $vbphrase;
$alikes = array();
$agr = self::lcache_get($ctype, $cgroup);
if(is_array($agr))
foreach($agr as $cid=>$gc)
{
$al = array();
if($ctype == VBSEO_UI_THREAD)
{
$al = $vbseo_gcache[&#039;post&#039;][$cid];
if(!$al) 
$al = $vbseo_gcache[&#039;post&#039;][$cid] = array(
&#039;postid&#039; => $cid, 
&#039;threadid&#039; => $cgroup
);
}
$al = array_merge($gc, $al);
$al[&#039;postno&#039;] = $gc[&#039;preposts&#039;];
$alikes[] = $al;
}
if($like_total)
{
self::prerender_likes($alikes);
$ret = vbseo_vbtemplate_render_any(&#039;vbseo_like_tree&#039;, array(
&#039;page_ids&#039; => implode(&#039;,&#039;,self::$page_ids),
&#039;alikes&#039; => $alikes,
&#039;ctype&#039; => $ctype,
&#039;cgroup&#039; => $cgroup,
&#039;like_total&#039; => $like_total,
&#039;like_page&#039; => $like_page)
);
}
return $ret.&#039; &#039;;
}
public static function blog_comment_hook($bresponse)
{
if(!is_object($bresponse) || !$bresponse->response )
return;
$vbseo_likeshare = self::likeshare_bit(VBSEO_UI_BLOG, 
$bresponse->response[&#039;blogid&#039;], 
$bresponse->response[&#039;blogtextid&#039;],
$bresponse->response[&#039;userid&#039;]
);
if($vbseo_likeshare)
vbseo_modify_template(&#039;blog_comment&#039;, &#039;#(<div class="vbseo_buttons.*</div>\s*)?(<div class="commentfoot)#is&#039;, $vbseo_likeshare.&#039;$2&#039;);
}
public static function blog_entry_hook(&$blog)
{
global $show, $vboptions; 
if (!in_array(THIS_SCRIPT, array(&#039;entry&#039;,&#039;blog&#039;)))
return false;
self::extract_likes_page(VBSEO_UI_BLOG, $blog[&#039;blogid&#039;], -1);
if (VBSEO_BOOKMARK_BLOG)
{         
$vbseo_url_b = vbseo_http_s_url(&#039;http://&#039; . $_SERVER[&#039;HTTP_HOST&#039;] . $_SERVER[&#039;VBSEO_URI&#039;]);
$book_t = urlencode($blog[&#039;title&#039;]);
$bmlist = vbseo_get_bookmarks();
$bookmarks = array();
foreach($bmlist as $bm)
{
$url = str_replace(&#039;%url%&#039;, urlencode($vbseo_url_b), str_replace(&#039;%title%&#039;, $book_t, $bm[0]));
$bookmarks[] = array(
&#039;url&#039; => $url,
&#039;image&#039; => $bm[1],
&#039;text&#039;  => $bm[4]
);
}
}
$vbseo_likeshare = self::likeshare_bit(VBSEO_UI_BLOG, 
$blog[&#039;blogid&#039;], $blog[&#039;firstblogtextid&#039;], $blog[&#039;userid&#039;],
$bookmarks);
if($vbseo_likeshare)
{
vbseo_modify_template34(&#039;blog_show_entry&#039;, &#039;#(<div id=\\\\?"(?:entry_text|blog_message).*?</div>)#is&#039;, 
&#039;$1&#039;.$vbseo_likeshare, 0, &#039;<!--VBSEO_LIKE_SHARE-->&#039;);
if(!VBSEO_VB4)
vbseo_modify_template34(&#039;blog_show_entry&#039;, &#039;#(<div class=\\\\")([^>]*?id=\\\\?"entry)#is&#039;, 
&#039;$01vbseo_like_postbit $2&#039;);
}
}
public static function cms_hook(&$view)
{
global $show, $vboptions; 
if(!is_object($view))return;
$cid = $view->node;
self::extract_likes_page(VBSEO_UI_CMS, $cid, VBSEO_UI_CID_TOP);
if (VBSEO_BOOKMARK_CMS)
{         
$vbseo_url_b = vbseo_http_s_url(&#039;http://&#039; . $_SERVER[&#039;HTTP_HOST&#039;] . $_SERVER[&#039;VBSEO_URI&#039;]);
$book_t = urlencode($view->title);
$bmlist = vbseo_get_bookmarks();
$bookmarks = array();
foreach($bmlist as $bm)
{
$url = str_replace(&#039;%url%&#039;, urlencode($vbseo_url_b), str_replace(&#039;%title%&#039;, $book_t, $bm[0]));
$bookmarks[] = array(
&#039;url&#039; => $url,
&#039;image&#039; => $bm[1],
&#039;text&#039;  => $bm[4]
);
}
}
$vbseo_likeshare = self::likeshare_bit(VBSEO_UI_CMS, $cid, VBSEO_UI_CID_TOP, $view->userid, $bookmarks);
if($vbseo_likeshare)
$view->pagetext .= $vbseo_likeshare;
}
public static function likeshare_bit($contenttype, $contentgroup, $contentid, $duserid, $bookmarks = array())
{
global $show, $vboptions, $vbphrase;
if(!$contenttype || !$contentgroup || !$contentid)
return &#039;&#039;;
self::$page_ids[] = $contentid;
$vbseo_liked = self::get_liked_info($contenttype, $contentgroup, $contentid);
$own_liked   = self::lcache_get($contenttype, $contentgroup, $contentid, &#039;ownlike&#039;);
$own_content = ($duserid == vbseo_vb_userid());
$like_link_visible = VBSEO_LIKE_LINK_VISIBLE;
eval(vbseo_eval_template(&#039;vbseo_likeshare&#039;, &#039;$vbseo_likeshare&#039;));
return $vbseo_likeshare;
}
public static function ajax_hook()
{
global $vbulletin, $vbseo_gcache;
$response = array();
$cid = intval($_POST[&#039;contentid&#039;]);
$ctype = intval($_POST[&#039;contenttype&#039;]);
$cgroup = intval($_POST[&#039;contentgroup&#039;]);
$cduser = intval($_POST[&#039;duserid&#039;]);
if($ctype == VBSEO_UI_THREAD)
{
$pinfo = vbseo_get_post_info($cid);
if($pinfo)
{
$cgroup = $pinfo[&#039;threadid&#039;];
$cduser = $pinfo[&#039;userid&#039;];
}
$tinfos= vbseo_get_thread_info($cgroup);
$flist = vbseo_allowed_forums();
if(!in_array($tinfos[$cgroup][&#039;forumid&#039;], $flist))
{
$err = &#039;Access denied&#039;;
}
}else
if($ctype == VBSEO_UI_BLOG)
{
$pinfo = vbseo_get_blog_info($cid, true, true);
if($pinfo)
{
$cgroup = $pinfo[&#039;blogid&#039;];
$cduser = $pinfo[&#039;userid&#039;];
if(!vbseo_allowed_blog($pinfo))
{
$err = &#039;Access denied&#039;;
}
}else
$err = &#039;Content not found&#039;;
}else
if($ctype == VBSEO_UI_CMS)
{
vbseo_get_object_info(&#039;cmscont&#039;, array($cgroup));
$pinfo = $vbseo_gcache[&#039;cmscont&#039;][$cgroup];
if($pinfo[&#039;tyid&#039;])$pinfo[&#039;nodeid&#039;] = $pinfo[&#039;tyid&#039;];
if($pinfo)
{
$cduser = $pinfo[&#039;userid&#039;];
$cid = VBSEO_UI_CID_TOP;
if(!vbseo_allowed_cms($pinfo))
{
$err = &#039;Access denied&#039;;
}
}else
$err = &#039;Content not found&#039;;
}else
{
$err = &#039;Unrecognized content type&#039;;
}
if(!$err)
switch($act = $_POST[&#039;action&#039;])
{
case &#039;like&#039;:
case &#039;others&#039;:
if(!vbseo_vb_userid())
$err = &#039;Not logged in&#039;;
if(!$pinfo)
$err = &#039;Content not found&#039;;
if(!$err)
{
$li = self::get_like($cid, $cgroup, $ctype);
if($act == &#039;like&#039;)
{
if($cduser == vbseo_vb_userid())
$err = &#039;Access denied&#039;;
else
{
if($li)
$res = self::remove_like($cid, $ctype, $cgroup, 0, $cduser);
else
$res = self::add_like($cid, $ctype, $cgroup, 0, $cduser);
if(!$res)
$err = &#039;Error processing request&#039;;
$li = !$li;
}
}else
if($act == &#039;others&#039;)
{
self::$shortlist = 200;
}
global $vbphrase;
$response[&#039;contentid&#039;] = $cid;
$response[&#039;contenttype&#039;] = $ctype;
$response[&#039;contentgroup&#039;] = $cgroup;
$response[&#039;self&#039;] = $vbphrase[$li ? &#039;vbseo_unlike&#039; : &#039;vbseo_like&#039;];
self::extract_likes_page($ctype, $cgroup, $cid);
$ll = self::get_liked_info($ctype, $cgroup, $cid);
$response[&#039;likelist&#039;] = $ll ? $ll : &#039;.&#039;;
}
break;
case &#039;treetab&#039;:
$atabs = array(&#039;top&#039;, &#039;all&#039;, &#039;page&#039;);
$tt = $atabs[$_POST[&#039;tab&#039;]];
if($tt)
{
self::$page_ids = explode(&#039;,&#039;, $_POST[&#039;cids&#039;]) ;
vbseo_int_var(self::$page_ids);
$cids = ($tt == &#039;page&#039;) ? self::$page_ids : array();
self::extract_likes_bygroup($ctype, $cgroup, 0, $cids, $tt);
$liketree = self::liketree_bit($ctype,  $cgroup, $tinfos[$cgroup][&#039;vbseo_likes&#039;]);
$liketree = preg_replace(&#039;#^.*class="vbseo-likes-list.*?>(.*?)</ul>.*$#is&#039;, &#039;$1&#039;, $liketree);
$response[&#039;ltree&#039;] = $liketree;
}
break;
}
if($err)
$response[&#039;error&#039;] = $err;
$xml = new vB_AJAX_XML_Builder($vbulletin, &#039;text/xml&#039;);
$xml->add_group(&#039;vbseo&#039;);
foreach($response as $k=>$v)
{
$xml->add_tag($k, $v);
}
$xml->close_group();
$xml->print_xml();
exit;
}
private static function get_like($cid, $cgroup, $ctype, $userid = 0)
{
if(!$userid && (!$userid = vbseo_vb_userid()))
return false;
$db = vbseo_get_db();
$larr = $db->vbseodb_query_first("
SELECT *
FROM " . vbseo_tbl_prefix(&#039;vbseo_likes&#039;) . " 
WHERE l_contentid = " . intval($cid) . " AND l_cgroup = ".intval($cgroup)." AND l_ctype = " . intval($ctype) . " 
AND l_from_userid = ".intval($userid)."
LIMIT 1
");
return $larr;
}
public static function delete_likes($cid, $cgroup, $ctype)
{
if(!$cgroup && !$cid)return 0;
$whr = $cid ? "l_contentid=".intval($cid) : "l_cgroup=".intval($cgroup);
$whr.= " AND l_ctype=".intval($ctype);
$db = vbseo_get_db();
$gq = $db->vbseodb_query("SELECT * FROM " . vbseo_tbl_prefix(&#039;vbseo_likes&#039;) . " WHERE  $whr");
$lrems = array();
while($li = $db->vbseodb_fetch_assoc($gq))
{
$lrems[$li[&#039;l_cgroup&#039;]]++;
self::like_counter_user($li[&#039;l_from_userid&#039;], $li[&#039;l_dest_userid&#039;], -1);
}
$db->vbseodb_query("DELETE FROM " . vbseo_tbl_prefix(&#039;vbseo_likes&#039;) . " WHERE  $whr");
foreach($lrems as $gid=>$lrem)
self::like_counter_type($ctype, $gid, -$lrem);
return true;
}
public static function move_likes($cgroup, $destgroup, $ctype)
{

Add a code snippet to your website: www.paste.org