Файл: InstantSocial/uploud/plugins/p_like/like.class.php
Строк: 121
<?php
if(!defined('VALID_CMS')) { die('ACCESS DENIED'); }
class Like{
public static function getLikeCount($id,$target){
$inDB=cmsDatabase::getInstance();
$count=$inDB->rows_count('cms_like_item',"item_id='$id' AND target_id='$target'");
return $count?$count:'nan';
}
public static function getUserLikeCount($uid){
if(!$uid){return false;}
$inDB=cmsDatabase::getInstance();
$count=$inDB->rows_count('cms_like_item',"user_id=$uid");
return $count?$count:false;
}
public static function addLike($item,$target,$title,$href,$dep,$user_id){
$inDB=cmsDatabase::getInstance();
if(!preg_match('/(^article$|^blogpost$|^wallrecord$|^photo$)/',$target)){return false;}
if(self::isLike($item,$user_id,$target)){
$inDB->query("DELETE FROM cms_like_item WHERE item_id='$item' AND user_id='$user_id' AND target_id='$target'");
return true;
}
$title=iconv("utf-8","windows-1251",$title);
$title=$inDB->escape_string(stripslashes(str_replace(array('r', 'n'), ' ', $title)));
$href = preg_replace ('/[^a-z0-9_./-]/i', '', $href);
if($item<=0 || $target=="" || $title=="" || $href==""){return false;}
if($target=='wallrecord'){
if($dep=='user'){
$user=$inDB->get_fields('cms_users',"id='$title'",'login , nickname');
if(!$user){return false;};
$title='Запись на стене пользователя: '.$user['nickname'];
$href='users/'.$user['login'];
}elseif($dep=='club'){
$club=$inDB->get_field('cms_clubs',"id='$title'",'title');
if(!$club){return false;}
$href='clubs/'.$title;
$title='Запись на стене клуба: '.$club;
}else {return false;}
}elseif($target=='blogpost'){
$bloglink=$inDB->get_field('cms_blogs',"id='$dep'",'seolink');
if(!$bloglink){return false;}
$href='blogs/'.$bloglink.'/'.$href.'.html';
}
$sql="INSERT INTO cms_like_item (item_id,target_id,user_id,date_time,title,href)
VALUES ('{$item}','{$target}','{$user_id}',NOW(),'{$title}','{$href}')";
$inDB->query($sql,true);
return true;
}
public static function getLikePrev($item,$target,$page=false){
$inDB=cmsDatabase::getInstance();
$users=array();
$s_sql="";
if($page){$s_sql="LIMIT ".(($page-1)*30).", 30";}else{$s_sql='LIMIT 6';}
if(!preg_match('/(^article$|^blogpost$|^wallrecord$|^photo$)/',$target)){return false;}
$sql="SELECT u.id as id, u.login as login ,u.nickname as nickname, p.imageurl as avatar, u.is_deleted as is_deleted
FROM cms_like_item li
LEFT JOIN cms_users u ON u.id = li.user_id
LEFT JOIN cms_user_profiles p ON p.user_id = li.user_id
WHERE item_id='$item' AND target_id='$target' ORDER BY li.date_time DESC $s_sql ";
$result=$inDB->query($sql);
if ($inDB->num_rows($result)){
if (!function_exists('usrImageNOdb')){
include_once($_SERVER['DOCUMENT_ROOT'].'/components/users/includes/usercore.php');
}
while($user = $inDB->fetch_assoc($result)){
$user['url']=cmsUser::getProfileURL($user['login']);
$user['avatar']=usrImageNOdb($user['id'], 'small', $user['avatar'], $user['is_deleted']);
$users[]=$user;
}
}
return $users;
}
public static function getUserLike($uid,$page=1){ //no fixed bug (wall id clubs&users ident)
if(!$uid){return false;}
if(!$page){$page=1;}
$records=array();
$inDB=cmsDatabase::getInstance();
$sql="SELECT *
FROM cms_like_item
WHERE user_id='$uid' ORDER BY date_time DESC LIMIT ".(($page-1)*15).", 15";
$result=$inDB->query($sql);
if ($inDB->num_rows($result)){
while($record = $inDB->fetch_assoc($result)){
if($record['target_id']=='wallrecord'){
$record['data']=$inDB->get_field('cms_user_wall',"id='$record[item_id]'",'content');
if(!$record['data']){$record['data']="<b>Запись не найдена</b>";}
}
if($record['target_id']=='photo'){
$photo_url=$inDB->get_field('cms_photo_files',"id='$record[item_id]'",'file');
if($photo_url){$record['data']='<img class="like_photo" src="/images/photos/small/'.$photo_url.'">';
}else{
$record['data']="<b>Изображение не найдено</b>";
}
}
$records[]=$record;
}
}
return $records;
}
public static function deleteMyLike($uid,$item,$target){
$inDB=cmsDatabase::getInstance();
if(!preg_match('/(^article$|^blogpost$|^wallrecord$|^photo$)/',$target)){return false;}
if($item<=0){return false;}
$sql="DELETE FROM cms_like_item WHERE user_id='$uid' AND item_id='$item' AND target_id='$target'";
$inDB->query($sql);
return true;
}
private static function isLike($item_id,$user_id,$target){
$inDB=cmsDatabase::getInstance();
$result=$inDB->rows_count('cms_like_item',"item_id='$item_id' AND user_id='$user_id' AND target_id='$target'");
return $result?true:false;
}
}
?>