__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; } }; ?>