clipbucket/upload/includes/classes/cbfeeds.class.php
2017-05-30 17:35:43 +05:00

423 lines
No EOL
11 KiB
PHP

<?php
/**
* This file is used
* to create user feeds
* probably, identicaly to, F*CBOOK :D
*/
class cbfeeds
{
/**
* Function used to create a user feed
* @param array
* uid => userid
* udetails => array of user details
* limit => timelimit of feeds (1 day, 2 days and so)
*/
function createFeed($array)
{
global $userquery;
$uid = $array['uid'];
if(!$uid)
e(lang("please_provide_valid_userid"));
elseif(!is_array($user))
{
$user = $userquery->get_user_details($uid);
}
}
/**
* Function used to add feed in user feed file
* @param array
* action => upload,joined,comment,created
* object => video, photo, group
* object_id => id of object
* object_details => details of object
* uid => user id
* udetails => user details array
*/
function addFeed($feed)
{
if(!isSectionEnabled('feeds'))
return false;
global $userquery;
$uid = $feed['uid'];
if(!$uid)
return false;
$ufeed = array();
//Verifying feed action and object
$action = $this->action($feed['action']);
$object = $this->getObject($feed['object']);
if(!$action || !$object)
return false;
//Setting user feed array
$ufeed['action'] = $action;
$ufeed['object'] = $object;
$ufeed['object_id'] = $feed['object_id'];
$ufeed['userid'] = $uid;
$ufeed['time'] = time();
//Unsetting feed array
unset($feed);
//Getting user feed file
$feedFile = $this->getFeedFile($uid);
//Convering feed using json
$feed = json_encode($ufeed);
//Creating unique md5 of feed
$feedmd5 = md5($feed);
$ufeed['md5'] = $feedmd5;
//Recreating Feed
$feed = json_encode($ufeed);
//Appending feed in a file
$file = fopen($feedFile,'a+');
fwrite($file,$feed);
fclose($file);
//Tada <{^-^}>
}
/**
* Function used to get action of feed
* it will verify weather actio is valid or not
*/
function action($action)
{
$objects = array
('signup','upload_video','upload_photo','create_group',
'join_group','add_friend','add_collection','add_playlist',
'add_comment','add_favorite');
if(!in_array($action,$objects))
return false;
else
return $action;
}
/**
* Function used to get object of feed
* it will verify weather actio is valid or not
*/
function getObject($object)
{
$objects = array
('signup','video','photo','group',
'user','friend','collection','post');
if(!in_array($object,$objects))
return false;
else
return $object;
}
/**
* Function used to get feed file
*/
function getFeedFile($uid)
{
$time = time();
$ufeedDir = USER_FEEDS_DIR.'/'.$uid;
//checking user feed folder exists or not
if(!file_exists($ufeedDir))
mkdir($ufeedDir);
$file = $ufeedDir.'/'.$time.'.feed';
return $file;
}
/**
* Function used to get user feed files
*/
function getUserFeedsFiles($uid=NULL)
{
if(!$uid)
$uid = userid();
$feeds = array();
$ufeedDir = USER_FEEDS_DIR.'/'.$uid;
if(file_exists($ufeedDir))
{
$time = time();
$time = substr($timem,0,strlen($time)-3);
$files = glob($ufeedDir.'/'.$time.'*.feed');
rsort($files);
foreach($files as $file)
{
$feed['content'] = file_get_contents($file);
$feed['file'] = $file;
$feeds[] = $feed;
}
return $feeds;
}
return false;
}
/**
* Function used to get user feed
*/
function getUserFeeds($user)
{
global $cbphoto,$userquery,$cbvid,$cbgroup,$cbcollection;
$allowed_feeds = USER_ACTIVITY_FEEDS_LIMIT;
$uid = $user['userid'];
$feeds = $this->getUserFeedsFiles($uid);
if(!$feeds)
return false;
$newFeeds = array();
$coutn = 0;
foreach($feeds as $feed)
{
$count++;
if($count>$allowed_feeds)
break;
$feedArray = json_decode($feed['content'],true);
if($feed && count($feedArray>0))
{
$remove_feed = false;
$farr = $feedArray;
$action = $farr['action'];
$object = $farr['object'];
$object_id = $farr['object_id'];
$farr['user'] = $user;
$farr['file'] = getName($feed['file']);
$farr['datetime'] = nicetime($farr['time'],true);
$userlink = '<a href="'.$userquery->profile_link($user).'">'.$user['username'].'</a>';
//Creating Links
switch($action)
{
case "upload_photo":
{
$photo = $cbphoto->get_photo($object_id);
//If photo does not exists, simply remove the feed
if(!$photo)
{
$this->deleteFeed($uid,$feed['file']);
$remove_feed = true;
}else
{
$objectArr['details'] = $photo;
$objectArr['size'] = 't';
$objectArr['output'] = 'non_html';
$objectArr['alt'] = $photo['photo_title'];
$farr['thumb'] = $cbphoto->getFileSmarty($objectArr);
$farr['link'] = $cbphoto->photo_links($photo,'view_item');
//Content Title
$farr['title'] = $photo['photo_title'];
$farr['action_title']
= sprintf(lang('user_has_uploaded_new_photo'),$userlink);
$farr['links'][] = array('link'=>($cbphoto->photo_links($photo,'view_item')),'text'=>lang('view_photo'));
$farr['icon'] = 'images.png';
}
}
break;
case "upload_video":
case "add_favorite":
{
$video = $cbvid->get_video($object_id);
//If photo does not exists, simply remove the feed
if(!$video)
{
$this->deleteFeed($uid,$feed['file']);
$remove_feed = true;
}elseif(!video_playable($video))
{
$remove_feed = true;
}else{
//Content Title
$farr['title'] = $video['title'];
if($action=='upload_video')
$farr['action_title'] = sprintf(lang('user_has_uploaded_new_video'),$userlink);
if($action=='add_favorite')
$farr['action_title'] = sprintf(lang('user_has_favorited_video'),$userlink);
$farr['link'] = videoLink($video);
$farr['object_content'] = $video['description'];
$farr['thumb'] = get_thumb($video);
$farr['links'][] = array('link'=>videoLink($video),'text'=>lang('watch_video'));
$farr['icon'] = 'video.png';
if($action=='add_favorite')
$farr['icon'] = 'heart.png';
}
}
break;
case "create_group":
case "join_group":
{
$group = $cbgroup->get_group($object_id);
//If photo does not exists, simply remove the feed
if(!$group)
{
$this->deleteFeed($uid,$feed['file']);
$remove_feed = true;
}elseif(!$cbgroup->is_viewable($group))
{
$remove_feed = true;
}else{
//Content Title
$farr['title'] = $group['group_name'];
if($action=='create_group')
$farr['action_title'] = sprintf(lang('user_has_created_new_group'),$userlink);
if($action=='join_group')
$farr['action_title'] = sprintf(lang('user_has_joined_group'),$userlink);
$farr['link'] = group_link(array('details'=>$group));
$farr['object_content'] =
$group['group_description']."<br>".
lang('total_members')." : ".$group['total_members']."<br>".
lang('total_videos')." : ".$group['total_videos']."<br>".
lang('total_topics')." : ".$group['total_topics']."<br>";
$farr['thumb'] = $cbgroup->get_group_thumb($group);
$farr['icon'] = 'group.png';
$joinlink = $cbgroup->group_opt_link($group,'join');
if($joinlink)
{
if(SEO=="yes")
$joinlink = group_link(array('details'=>$group)).'?join=yes"';
else
$joinlink = group_link(array('details'=>$group)).'&join=yes"';
$farr['links'][] = array('link'=>$joinlink,'text'=>lang('join'));
}
}
}
break;
case "signup":
{
$farr['action_title'] = sprintf(lang("user_joined_us"),$userlink,TITLE,$userlink);
$farr['icon'] = 'user.png';
}
break;
case "add_friend":
{
$friend = $userquery->get_user_details($object_id);
if(!$friend)
{
$this->deleteFeed($uid,$feed['file']);
$remove_feed = true;
}else
{
$friendlink = '<a href="'.$userquery->profile_link($friend).'">'.$friend['username'].'</a>';
$farr['action_title'] = sprintf(lang("user_is_now_friend_with_other")
,$userlink,$friendlink);
$farr['icon'] = 'user_add.png';
}
}
break;
case "add_collection":
{
$collection = $cbcollection->get_collection($object_id);
if(!$collection)
{
$this->deleteFeed($uid,$feed['file']);
$remove_feed = true;
}else
{
$farr['action_title'] = sprintf(lang('user_has_created_new_collection'),$userlink);
$farr['thumb'] = $cbcollection->get_thumb($collection,'small');
$farr['title'] = $collection['collection_name'];
$collection_link = $cbcollection->collection_links($collection,'view');
$farr['link'] = $collection_link;
$farr['object_content'] =
$collection['collection_description'].'<br>'.
$collection['total_objects']." ".$collection['type'];
$farr['icon'] = 'photos.png';
$farr['links'][] = array('link'=>$collection_link,'text'=>lang('view_collection'));
}
}
break;
case "add_comment":
{
global $myquery;
$comment = $myquery->get_comment($object_id);
//If photo does not exists, simply remove the feed
if(!$comment)
{
$this->deleteFeed($uid,$feed['file']);
$remove_feed = true;
}else{
//Content Title
$farr['title'] = $comment['title'];
$farr['action_title'] = $userlink." ".lang('commented on a post');
$farr['link'] = videoLink($video);
$farr['object_content'] = $video['description'];
$farr['thumb'] = get_thumb($video);
$farr['links'][] = array('link'=>videoLink($video),'text'=>lang('watch_video'));
$farr['icon'] = 'video.png';
if($action=='add_favorite')
$farr['icon'] = 'heart.png';
}
}
break;
}
if(!$remove_feed)
$newFeeds[$feedArray['time']] = $farr;
}
}
return $newFeeds;
}
/**
* Function used to delete feed
*/
function deleteFeed($uid,$feedid)
{
$ufeedDir = USER_FEEDS_DIR.'/'.$uid.'/'.getName($feedid).'.feed';
if(file_exists($ufeedDir))
unlink($ufeedDir);
}
}