rendered paste body<?
class video
{
private
$db,
$__maxFileLength,
$__scrDir,
$__vidDir;
public
$__pageLimit;
////////////////////////////////////////
public function __construct(&$dbl, $mfl)
{
// config
$this->__scrDir = __dirMain.'/web/files/vpicture/';
$this->__vidDir = __dirMain.'/web/files/video/';
$this->__maxFileLength = $mfl*1024;
$this->__pageLimit = 20;
// db
$this->db = $dbl;
}
public function __destruct() {}
////////////////////////////////////////
public function __create()
{
$this->db->Query('
CREATE TABLE `'.__prefix.'video` (
`id` int(11) unsigned not null primary key auto_increment,
`cid` int(11) unsigned not null default "0",
`uid` int(11) unsigned not null,
`is_allowed` enum("0","1") default "1",
`filename` varchar(128) not null,
`title` varchar(255) not null,
`hits` int(11) unsigned not null default "0",
`rating` int(11) not null default "0",
INDEX(`id`), INDEX(`uid`)
) type=MyISAM default charset=utf8;
');
$this->db->Query('
CREATE TABLE `'.__prefix.'video_selected` (
`uid` int(11) unsigned,
`vid` int(11) unsigned,
INDEX(`uid`), INDEX(`vid`)
) type=MyISAM default charset=utf8;
');
$this->db->Query('
CREATE TABLE `'.__prefix.'video_votes` (
`vid` int(11) unsigned not null,
`ip` varchar(15) not null,
`time` varchar(15) not null,
INDEX(`vid`), INDEX(`ip`)
) type=MyISAM default charset=utf8;
');
}
//////////////////////////////////////// VIDEO vote
public function __voteAdd($val, $vid, $ip, $user_id = 0)
{
if($val != '+')
$val = '-';
$vid = (int)$vid;
$ip = $this->db->mRes($ip);
if(($this->__getInfo($vid) != false) && (strlen($ip) >= 7))
{
if((!$this->__isVoted($vid, $ip)) && (!$this->__isMyVideo($user_id, $vid)))
{
$this->db->Query('INSERT INTO `'.__prefix.'video_votes` SET `vid`="'.$vid.'", `ip`="'.$ip.'"');
$this->db->Query('UPDATE `'.__prefix.'video` SET `rating`=`rating`'.$val.'1 WHERE `id`="'.$vid.'"');
return true;
}
}
return false;
}
public function __isVoted($vid, $ip)
{
return ((int)$this->db->Result('SELECT `vid` FROM `'.__prefix.'video_votes` WHERE `vid`="'.(int)$vid.'" AND `ip`="'.$this->db->mRes($ip).'"') > 0);
}
//////////////////////////////////////// VIDEO fav
public function __selectedDel($uid, $vid)
{
$uid = (int)$uid;
$vid = (int)$vid;
if($this->__isSelected($uid, $vid))
{
$this->db->Query('DELETE FROM `'.__prefix.'video_selected` WHERE `vid`="'.$vid.'" AND `uid`="'.$uid.'"');
return true;
}
return false;
}
public function __selectedAdd($uid, $vid)
{
$uid = (int)$uid;
$vid = (int)$vid;
if(!$this->__isSelected($uid, $vid))
{
if((!$this->__isMyVideo($uid, $vid)) && ($this->__getInfo($vid) != false) && ($uid > 0))
{
$this->db->Query('INSERT INTO `'.__prefix.'video_selected` SET `vid`="'.$vid.'", `uid`="'.$uid.'"');
return true;
}
}
return false;
}
public function __isSelected($uid, $vid)
{
return ((int)$this->db->Result('SELECT `vid` FROM `'.__prefix.'video_selected` WHERE `uid`="'.(int)$uid.'" AND `vid`="'.(int)$vid.'" LIMIT 1') > 0);
}
public function __selectedGet($limit = 10, $uid, $page = 0)
{
if($page > 0)
{
$page = (int)$page;
$npage = $page;
$page = $page-1;
$last = 'ORDER BY `vs`.`vid` DESC LIMIT '.$page*$this->__pageLimit.', '.$this->__pageLimit.' ';
} else {
$last = 'ORDER BY `vs`.`vid` DESC LIMIT '.(int)$limit;
}
return $this->db->Assoc('
SELECT
`vs`.`uid`,
`v`.`id`,
`v`.`filename`,
`v`.`title`,
`v`.`hits`,
`v`.`rating`,
`u`.`username`
FROM `'.__prefix.'video_selected` AS `vs`
LEFT JOIN `'.__prefix.'video` AS `v`
ON `vs`.`vid`=`v`.`id`
LEFT JOIN `'.__prefix.'users` AS `u`
ON `vs`.`uid`=`v`.`id`
WHERE `vs`.`uid`="'.(int)$uid.'"
'.$last.'
');
}
public function __selectedCount($uid)
{
return (int)$this->db->Result('SELECT COUNT(`vid`) FROM `'.__prefix.'video_selected` WHERE `uid`="'.(int)$uid.'"');
}
//////////////////////////////////////// VIDEO
public function __add($uid, &$farr, $title)
{
$title = $this->db->mRes($title);
if(((int)$uid > 0) && (strlen($title) > 0) && (is_array($farr)) && ($farr['error'] == 0)) // global check
{
if
(
($farr['type'] == 'video/x-ms-wmv') ||
($farr['type'] == 'video/avi') ||
($farr['type'] == 'video/x-msvideo') ||
($farr['type'] == 'video/msvideo') ||
($farr['type'] == 'application/x-troff-msvideo') ||
($farr['type'] == 'video/mpeg')
)
{
// mv file in tmp directory
$f_tmp = __dirMain.'/userfiles/'.$farr['tmp_name'];
move_uploaded_file($farr['tmp_name'], $f_tmp);
// add record
$this->db->Query('INSERT INTO `'.__prefix.'video` SET `uid`="'.(int)$uid.'", `title`="'.strip_tags($title).'"');
$lstid = $this->db->LastID();
$fname = $lstid.'.'.time();
shell_exec('ffmpeg -i '.$f_tmp.' -b 700k -r 25 -s 320x240 -ar 22050 -ab 64 -f flv '.$this->__vidDir.$fname.'.flv');
shell_exec('ffmpeg -i '.$f_tmp.' -an -ss 00:00:03 -t 00:00:01 -r 1 -y -s 160x120 -f mjpeg '.$this->__scrDir.$fname.'.jpg');
$this->db->Query('UPDATE `'.__prefix.'video` SET `filename`="'.$fname.'" WHERE `id`="'.$this->db->LastID().'"');
return $lstid;
}
}
return FALSE;
}
public function __del($mid)
{
$id = $this->__getFilename($mid);
@unlink($this->__vidDir.$id.'.flv');
@unlink($this->__scrDir.$id.'.jpg');
$this->db->Query('DELETE FROM `'.__prefix.'video` WHERE `id`="'.(int)$mid.'"');
$this->db->Query('DELETE FROM `'.__prefix.'cSourceComments` WHERE `module`="video" AND `fid`="'.(int)$mid.'"');
$this->db->Query('DELETE FROM `'.__prefix.'video_selected` WHERE `vid`="'.(int)$mid.'"');
return TRUE;
}
public function __getr($limit = 10, $uid = 0, $page = 0)
{
$where = ((int)$uid > 0) ? 'WHERE `t1`.`uid`="'.(int)$uid.'" ' : '';
if($page > 0)
{
$page = (int)$page;
$npage = $page;
$page = $page-1;
$last = 'ORDER BY `t1`.`id` DESC LIMIT '.$page*$this->__pageLimit.', '.$this->__pageLimit.' ';
} else {
$last = 'ORDER BY `t1`.`id` DESC LIMIT '.(int)$limit;
}
return $this->db->Assoc('
SELECT
`t1`.`id`,
`t1`.`uid`,
`t1`.`filename`,
`t1`.`title`,
`t1`.`hits`,
`t1`.`rating`,
`t2`.`username`
FROM `'.__prefix.'video` AS `t1`
LEFT JOIN `'.__prefix.'users` AS `t2` ON `t1`.`uid`=`t2`.`id`
'.$where.'
'.$last.'
');
}
public function __countVideo($uid = 0)
{
$uid = (int)$uid;
$where = '';
if($uid > 0) $where = 'WHERE `uid`="'.$uid.'"';
return (int)$this->db->Result('SELECT COUNT(`id`) FROM `'.__prefix.'video` '.$where);
}
public function __getFilename($id)
{
return $this->db->Result('SELECT `filename` FROM `'.__prefix.'video` WHERE `id`="'.(int)$id.'" LIMIT 1');
}
public function __getInfo($id)
{
return $this->db->Assoc('
SELECT
`t1`.`id`,
`t1`.`uid`,
`t1`.`filename`,
`t1`.`title`,
`t1`.`hits`,
`t1`.`rating`,
`t2`.`username`
FROM `'.__prefix.'video` AS `t1`
LEFT JOIN `'.__prefix.'users` AS `t2` ON `t1`.`uid`=`t2`.`id`
WHERE
`t1`.`id`="'.$id.'"
LIMIT 1
');
}
public function __isMyVideo($uid, $vid)
{
return ((int)$this->db->Result('SELECT `id` FROM `'.__prefix.'video` WHERE `uid`="'.(int)$uid.'" AND `id`="'.(int)$vid.'" LIMIT 1') > 0);
}
public function __updateHits($vid)
{
$this->db->Query('UPDATE `'.__prefix.'video` SET `hits`=`hits`+1 WHERE `id`="'.(int)$vid.'"');
return TRUE;
}
public function __getNextPrevVideo($curVideoID, $uID = 0)
{
$a = array();
$curVideoID = (int)$curVideoID;
$uID = (int)$uID;
$additional = '';
// for current user
if($uID > 0) $additional = ' AND `uid`="'.$uID.'" ';
// for all videos
$a['next'] = (int)$this->db->Result('SELECT `id` FROM `'.__prefix.'video` WHERE `id`>"'.$curVideoID.'" '.$additional.' ORDER BY `id` ASC LIMIT 1');
$a['prev'] = (int)$this->db->Result('SELECT `id` FROM `'.__prefix.'video` WHERE `id`<"'.$curVideoID.'" '.$additional.' ORDER BY `id` DESC LIMIT 1');
return $a;
}
};
?>