clipbucket/upload/includes/classes/video.class.php
2017-07-14 16:38:19 +05:00

2212 lines
No EOL
56 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* Author : Arslan Hassan
* Script : ClipBucket v2
* License : Attribution Assurance License -- http://www.opensource.org/licenses/attribution.php
*
*
* Class : Video
* Used to perform function swith videos
* -- history
* all function that were in my_query
* has been transfered here
* however thhey will still work from there
* too
*/
define("QUICK_LIST_SESS","quick_list");
class CBvideo extends CBCategory
{
var $embed_func_list = array(); //Function list that are applied while asking for video embed code
var $embed_src_func_list = array(); //Function list that are applied while asking for video embed src
var $action = ''; // variable used to call action class
var $collection = '';
var $email_template_vars = array();
var $dbtbl = array('video'=>'video');
var $video_manager_links = array();
var $video_manager_funcs = array();
var $video_delete_functions = array(); //Holds all delete functions of video
private $basic_fields = array();
private $extra_fields = array();
/**
* __Constructor of CBVideo
*/
function init()
{
global $Cbucket, $cb_columns;
$this->cat_tbl = 'video_categories';
$this->section_tbl = 'video';
$this->use_sub_cats = TRUE;
$this->init_actions();
$this->init_collections();
if(config('vid_cat_height'));
$this->cat_thumb_height = config('vid_cat_height');
if(config('vid_cat_width'));
$this->cat_thumb_width = config('vid_cat_width');
if(isSectionEnabled('videos'))
$Cbucket->search_types['videos'] = "cbvid";
$Cbucket->clipbucket_footer[] = 'check_cbvideo';
$this->video_delete_functions[] = 'delete_video_from_collection';
$basic_fields = array(
'videoid', 'videokey', 'userid', 'title','server_ip', 'description', 'tags', 'category','file_directory',
'active', 'date_added', 'broadcast', 'rating', 'file_server_path', 'files_thumbs_path',
'file_thumbs_count', 'duration', 'has_hq', 'has_mobile', 'views', 'file_name', 'rated_by',
'default_thumb', 'comments_count', 'last_viewed', 'featured', 'featured_date', 'status','re_conv_status','conv_progress','embed_code'
);
$cb_columns->object( 'videos' )->register_columns( $basic_fields );
#$this->basic_fields_setup();
}
/**
* @return array
*/
function get_basic_fields() {
return $this->basic_fields;
}
function set_basic_fields( $fields = array() ) {
return $this->basic_fields = $fields;
}
function basic_fields_setup() {
# Set basic video fields
$basic_fields = array(
'videoid', 'videokey', 'userid', 'title', 'description', 'tags', 'category',
'active', 'date_added', 'broadcast', 'rating', 'file_server_path', 'files_thumbs_path',
'file_thumbs_count', 'duration', 'has_hq', 'has_mobile', 'views', 'file_name', 'rated_by',
'default_thumb', 'comments_count', 'last_viewed'
);
return $this->set_basic_fields( $basic_fields );
}
function get_extra_fields() {
return $this->extra_fields;
}
function set_extra_fields( $fields = array() ) {
return $this->extra_fields = $fields;
}
function get_video_fields( $extra_fields = array() ) {
$fields = $this->get_basic_fields();
$extra = $this->get_extra_fields();
if ( empty( $fields ) ) {
$fields = $this->basic_fields_setup();
}
if ( !empty( $extra ) ) {
$fields = array_merge( $fields, $extra );
}
if ( !empty( $extra_fields ) ) {
if ( is_array( $extra_fields ) ) {
$fields = array_merge( $fields, $extra_fields );
} else {
$fields[] = $extra_fields;
}
}
# Do make array unqiue, otherwise we might get duplicate
# fields
$fields = array_unique( $fields );
return $fields;
}
function add_video_field( $field ) {
$extra_fields = $this->get_extra_fields();
if ( is_array( $field ) ) {
$extra_fields = array_merge( $extra_fields, $field );
} else {
$extra_fields[] = $field;
}
return $this->set_extra_fields( $extra_fields );
}
/**
* Initiating Collections
*/
function init_collections()
{
$this->collection = new Collections();
$this->collection->objType = "v";
$this->collection->objClass = "cbvideo";
$this->collection->objTable = "video";
$this->collection->objName = "Video";
$this->collection->objFunction = "video_exists";
$this->collection->objFieldID = "videoid";
}
/**
* Function used to check weather video exists or not
* @param VID or VKEY
*/
function video_exists($vid)
{
global $db;
if(is_numeric($vid))
return $db->count(tbl("video"),"videoid"," videoid='$vid' ");
else
return $db->count(tbl("video"),"videoid"," videokey='$vid' ");
//return $this->get_video($vid);
}
function exists($vid){return $this->video_exists($vid);}
function videoexists($vid){return $this->video_exists($vid);}
/**
* Function used to get video data
*/
function get_video( $vid, $file=false, $basic = false )
{
global $db, $cb_columns;
$userFields = get_user_fields();
$videoFields = array( 'video' => '*' );
if ( $basic === true ) {
$videoFields = get_video_fields();
}
$fields = array(
'video' => $videoFields,
'users' => $userFields
);
$cond = ( ( $file ) ? 'video.file_name' : ( is_numeric( $vid ) ? 'video.videoid' : 'video.videokey' ) )." = '%s' ";
$query = "SELECT ".tbl_fields( $fields )." FROM ".cb_sql_table( 'video' );
$query .= " LEFT JOIN ".cb_sql_table( 'users' )." ON video.userid = users.userid";
if ( $cond ) {
$query .= " WHERE ".sprintf( $cond, $vid );
}
$query .= 'LIMIT 1';
$query_id = cb_query_id ( $query );
$data = cb_do_action( 'select_video', array( 'query_id' => $query_id, 'videoid' => $vid ) );
if ( $data ) {
return $data;
}
//pr($query,true);
$result = select( $query );
if ( $result ) {
$result = apply_filters( $result[ 0 ], 'get_video' );
cb_do_action( 'return_video', array(
'query_id' => $query_id,
'results' => $result,
'object_id' => $vid,
'videoid' => $vid
) );
return $result;
} else {
return false;
}
}
function getvideo($vid){return $this->get_video($vid);}
function get_video_data($vid){return $this->get_video($vid);}
function getvideodata($vid){return $this->get_video($vid);}
function get_video_details($vid){return $this->get_video($vid);}
function getvideodetails($vid){return $this->get_video($vid);}
function get_basic_video_details( $vid ){ return $this->get_video( $vid, false, true ); }
/**
* Function used to perform several actions with a video
*/
function action($case,$vid)
{
global $db,$eh;
$video = $this->get_video_details( $vid );
if(!$video)
return false;
//Lets just check weathter video exists or not
switch($case)
{
//Activating a video
case 'activate':
case 'av':
case 'a':
{
$db->update(tbl("video"),array('active'),array('yes')," videoid='$vid' OR videokey = '$vid' ");
e(lang("class_vdo_act_msg"),'m');
if(SEND_VID_APPROVE_EMAIL=='yes')
{
//Sending Email
global $cbemail,$userquery;
$tpl = $cbemail->get_template('video_activation_email');
#$user_fields = $userquery->get_user_field($video['userid'],"username,email");
$more_var = array
('{username}' => $video['username'],
'{video_link}' => videoLink($video)
);
if(!is_array($var))
$var = array();
$var = array_merge($more_var,$var);
$subj = $cbemail->replace($tpl['email_template_subject'],$var);
$msg = nl2br($cbemail->replace($tpl['email_template'],$var));
//Now Finally Sending Email
cbmail(array('to'=>$video['email'],'from'=>WEBSITE_EMAIL,'subject'=>$subj,'content'=>$msg));
}
if(($video['broadcast']=='public' || $video['broadcast'] =="logged")
&& $video['subscription_email']=='pending')
{
//Sending Subscription email in background
if (stristr(PHP_OS, 'WIN'))
{
exec(php_path()." -q ".BASEDIR."/actions/send_subscription_email.php $vid ");
} else {
exec(php_path()." -q ".BASEDIR."/actions/send_subscription_email.php $vid &> /dev/null &");
}
}
}
break;
//Deactivating a video
case "deactivate":
case "dav":
case "d":
{
$db->update(tbl("video"),array('active'),array('no')," videoid='$vid' OR videokey = '$vid' ");
e(lang("class_vdo_act_msg1"),'m');
}
break;
//Featuring Video
case "feature":
case "featured":
case "f":
{
$db->update(tbl("video"),array('featured','featured_date'),array('yes',now())," videoid='$vid' OR videokey = '$vid' ");
e(lang("class_vdo_fr_msg"),'m');
return "featured";
}
break;
//Unfeatured video
case "unfeature":
case "unfeatured":
case "uf":
{
$db->update(tbl("video"),array('featured'),array('no')," videoid='$vid' OR videokey = '$vid' ");
e(lang("class_fr_msg1"),'m');
}
break;
}
}
/**
* Function used to update video
*/
function update_video($array=NULL)
{
global $eh,$Cbucket,$db,$Upload;
$Upload->validate_video_upload_form(NULL,TRUE);
if(empty($eh->error_list))
{
$required_fields = $Upload->loadRequiredFields($array);
$location_fields = $Upload->loadLocationFields($array);
$option_fields = $Upload->loadOptionFields($array);
$upload_fields = array_merge($required_fields,$location_fields,$option_fields);
//Adding Custom Upload Fields
if (function_exists('custom_fields_list')) {
$custom_flds = $Upload->load_custom_form_fields($array,true);
#pr($custom_flds,true);
$upload_fields = array_merge($upload_fields,$custom_flds);
}
/*//Adding Custom Form Fields
if(count($Upload->custom_form_fields)>0)
$upload_fields = array_merge($upload_fields,$Upload->custom_form_fields);
//Adding custom fields from group
if(count($Upload->custom_form_fields_groups)>0)
{
$custom_fields_from_group_fields = array();
$custom_fields_from_group = $Upload->custom_form_fields_groups;
foreach($custom_fields_from_group as $cffg)
{
$custom_fields_from_group_fields = array_merge($custom_fields_from_group_fields,$cffg['fields']);
}
$upload_fields = array_merge($upload_fields,$custom_fields_from_group_fields);
}*/
if(!$array)
$array = $_POST;
#pr($array,true);
$vid = $array['videoid'];
if(is_array($_FILES))
$array = array_merge($array,$_FILES);
foreach($upload_fields as $field)
{
$name = formObj::rmBrackets($field['name']);
$val = $array[$name];
if(empty($val) && $field['use_if_value'])
{
}else
{
if($field['use_func_val'])
$val = $field['validate_function']($val);
if(!empty($field['db_field']))
$query_field[] = $field['db_field'];
if(is_array($val))
{
$new_val = '';
foreach($val as $v)
{
$new_val .= "#".$v."# ";
}
$val = $new_val;
}
if(!$field['clean_func'] || (!apply_func($field['clean_func'],$val) && !is_array($field['clean_func'])))
$val = ($val);
else
$val = apply_func($field['clean_func'],sql_free('|no_mc|'.$val));
if(!empty($field['db_field']))
$query_val[] = $val;
}
}
#$query = "INSERT INTO video (";
$total_fields = count($query_field);
/*for($key=0;$key<$total_fields;$key++)
{
$query .= query_field[$key]." = '".$query_val[$key]."'" ;
if($key<$total_fields-1)
$query .= ',';
}*/
if(has_access('admin_access',TRUE))
{
if(!empty($array['status']))
{
$query_field[] = 'status';
$query_val[] = $array['status'];
}
if(!empty($array['duration']) && is_numeric($array['duration']) && $array['duration']>0)
{
$query_field[] = 'duration';
$query_val[] = $array['duration'];
}
if(!empty($array['views']))
{
$query_field[] = 'views';
$query_val[] = $array['views'];
}
if(!empty($array['video_users']))
{
$query_field[] = 'video_users';
$query_val[] = $array['video_users'];
}
if(!empty($array['rating']))
{
$query_field[] = 'rating';
$rating = $array['rating'];
if(!is_numeric($rating) || $rating<0 || $rating>10)
$rating = 1;
$query_val[] = $rating;
}
if(!empty($array['rated_by']))
{
$query_field[] = 'rated_by';
$query_val[] = $array['rated_by'];
}
if (!empty($array['embed_code']))
{
$query_field[] = 'embed_code';
$query_val[] = $array['embed_code'];
}
}
//changes made
//title index
$query_val[0] = str_replace('&lt;!--', '', $query_val[0]);
$query_val[0] = str_replace("'", "", $query_val[0]);
//description index
$query_val[1] = str_replace('&lt;!--', '', $query_val[1]);
$query_val[1] = str_replace("'", "", $query_val[1]);
//Tag index
$query_val[3] = strtolower($query_val[3]);
// $query_val[3] = str_replace("'", "", $query_val[3]);
//changes made
if(!userid())
{
e(lang("you_dont_have_permission_to_update_this_video"));
}elseif(!$this->video_exists($vid)){
e(lang("class_vdo_del_err"));
}elseif(!$this->is_video_owner($vid,userid()) && !has_access('admin_access',TRUE))
{
e(lang("no_edit_video"));
}elseif(strlen($array['title']) > 100){
e(lang("Title exceeds max length of 100 characters"));
}else{
//pr($upload_fields);
#pr($query_field,true);
$db->update(tbl('video'),$query_field,$query_val," videoid='$vid'");
cb_do_action( 'update_video', array(
'object_id' => $vid,
'results' => $array
));
//echo $db->db_query;
e(lang("class_vdo_update_msg"),'m');
// condition for Clip press plugin
if ( function_exists('post_to_wp_upload_culr') )
{
post_to_wp_upload_culr ( $vid );
}
}
}
}
/**
* Function used to delete a video
*/
function delete_video($vid)
{
global $db;
if($this->video_exists($vid))
{
$vdetails = $this->get_video($vid);
if($this->is_video_owner($vid,userid()) || has_access('admin_access',TRUE))
{
#THIS SHOULD NOT BE REMOVED :O
//list of functions to perform while deleting a video
$del_vid_funcs = $this->video_delete_functions;
if(is_array($del_vid_funcs))
{
foreach($del_vid_funcs as $func)
{
if(function_exists($func))
{
$func($vdetails);
}
}
}
//Finally Removing Database entry of video
$db->execute("DELETE FROM ".tbl("video")." WHERE videoid='$vid'");
//Removing Video From Playlist
$db->execute("DELETE FROM ".tbl("playlist_items")." WHERE object_id='$vid' AND playlist_item_type='v'");
$db->update(tbl("users"),array("total_videos"),array("|f|total_videos-1")," userid='".$vdetails['userid']."'");
//Removing video Comments
$db->delete(tbl("comments"),array("type","type_id"),array("v",$vdetails['videoid']));
//Removing video From Favortes
$db->delete(tbl("favorites"),array("type","id"),array("v",$vdetails['videoid']));
e(lang("class_vdo_del_msg"),'m');
}else{
e(lang("You cannot delete this video"));
}
}else{
e(lang("class_vdo_del_err"));
}
}
/**
* Function used to remove video thumbs
*/
function remove_thumbs($vdetails)
{
//First lets get list of all thumbs
$thumbs = get_thumb($vdetails,1,true,false,false,true,false);
if(!is_default_thumb($thumbs))
{
if(is_array($thumbs))
{
foreach($thumbs as $thumb)
{
if (strstr($thumb,'timthumb'))
$thumb = $this->convert_tim_thumb_url_to_file($thumb,$file_name=false);
if (!empty($vdetails['file_directory'])){
$file = THUMBS_DIR.'/'.$vdetails['file_directory'].'/'.$thumb;
}else{
$file = THUMBS_DIR.'/'.$thumb;
}
if(file_exists($file) && is_file($file)){
unlink($file);
}
}
}
else
{
if (strstr($thumbs,'timthumb'))
$thumbs_ = $this->convert_tim_thumb_url_to_file($thumbs,$file_name=false);
else
$thumbs_ = substr($thumbs, 0, -6);
$file = THUMBS_DIR.'/'.$thumbs_;
if(file_exists($file) && is_file($file))
unlink($file);
if (strstr($thumbs,'timthumb'))
$fn = $this->convert_tim_thumb_url_to_file($thumbs,$file_name=true);
else
$fn = substr($thumbs, 0, -6);
$result = db_select("SELECT * FROM ".tbl("video")." WHERE file_name = '$fn'");
if($result)
{
foreach($result as $result1)
{
$str = '/'.$result1['file_directory'].'/';
$file1 = THUMBS_DIR.$str.$thumbs;
if(file_exists($file1) && is_file($file1))
{
unlink($file1);
}
}
}
}
e(lang("vid_thumb_removed_msg"),'m');
}
}
/**
* Function used to remove video log
*/
function remove_log($vdetails)
{
global $db;
$src = $vdetails['videoid'];
$file = LOGS_DIR.'/'.$vdetails['file_name'].'.log';
$db->execute("DELETE FROM ".tbl("video_file")." WHERE src_name = '$src'");
if(file_exists($file))
unlink($file);
$fn = $vdetails['file_name'];
$result = db_select("SELECT * FROM ".tbl("video")." WHERE file_name = '$fn'");
if($result)
{
foreach($result as $result1)
{
$str = '/'.$result1['file_directory'].'/';
$file1 = LOGS_DIR.$str.$vdetails['file_name'].'.log';
if(file_exists($file1) && is_file($file1))
unlink($file1);
}
}
e(lang("vid_log_delete_msg"),'m');
}
/**
* Function used to remove video files
*/
function remove_files($vdetails)
{
//Return nothing incase there is no input
if(!$vdetails)
{
e("No input details specified");
return false;
}
//Callign Video Delete Functions
call_delete_video_function($vdetails);
//Getting list of files
$files = get_video_file($vdetails,false,false,true);
if(is_array($files))
{
foreach($files as $file)
{
if(file_exists(VIDEOS_DIR.'/'.$file) && is_file(VIDEOS_DIR.'/'.$file))
unlink(VIDEOS_DIR.'/'.$file);
//Extracting File Name for Video File
$fn = explode('-', $file);
$fn = $fn[0];
$result = db_select("SELECT * FROM ".tbl("video")." WHERE file_name = '$fn'");
if($result)
{
foreach($result as $result1)
{
$str = '/'.$result1['file_directory'].'/';
if(file_exists(VIDEOS_DIR.$str.$file) && is_file(VIDEOS_DIR.$str.$file))
unlink(VIDEOS_DIR.$str.$file);
}
}
}
}
else
{
if(file_exists(VIDEOS_DIR.'/'.$files) && is_file(VIDEOS_DIR.'/'.$files))
unlink(VIDEOS_DIR.'/'.$files);
$fn = substr($files, 0, -7);
$result = db_select("SELECT * FROM ".tbl("video")." WHERE file_name = '$fn'");
if($result)
{
foreach($result as $result1)
{
$str = '/'.$result1['file_directory'].'/';
if(file_exists(VIDEOS_DIR.$str.$files) && is_file(VIDEOS_DIR.$str.$files))
unlink(VIDEOS_DIR.$str.$files);
}
}
}
e(lang("vid_files_removed_msg"),'m');
}
/**
* Function used to get videos
* this function has all options
* that you need to fetch videos
* please see docs.clip-bucket.com for more details
*/
function get_videos($params)
{
global $db, $cb_columns;
$limit = $params['limit'];
$order = $params['order'];
$cond = "";
$superCond = "";
if( !has_access('admin_access',TRUE) )
{
$superCond = " ".("video.status")."='Successful' AND
".("video.active")."='yes' AND ".("video.broadcast")." !='unlisted' ";
}
else
{
if($params['active'])
$cond .= " ".("video.active")."='".$params['active']."'";
if($params['status'])
{
if($cond!='')
$cond .=" AND ";
$cond .= " ".("video.status")."='".$params['status']."'";
}
if($params['broadcast'])
{
if($cond!='')
$cond .=" AND ";
$cond .= " ".("video.broadcast")."='".$params['broadcast']."'";
}
}
//Setting Category Condition
$all = false;
if(!is_array($params['category']))
if(strtolower($params['category'])=='all')
$all = true;
if($params['category'] && !$all)
{
if($cond!='')
$cond .= ' AND ';
$cond .= " (";
if(!is_array($params['category']))
{
$cats = explode(',',$params['category']);
}else
$cats = $params['category'];
$count = 0;
foreach($cats as $cat_params)
{
$count ++;
if($count>1)
$cond .=" OR ";
$cond .= " ".("video.category")." LIKE '%#$cat_params#%' ";
}
$cond .= ")";
}
//date span
if($params['date_span'])
{
if($cond!='')
$cond .= ' AND ';
if($params['date_span_column'])
$column = $params['date_span_column'];
else
$column = 'date_added';
$cond .= " ".cbsearch::date_margin($column,$params['date_span']);
}
//uid
if($params['user'])
{
if(!is_array($params['user']))
{
if($cond!='')
$cond .= ' AND ';
$cond .= " ".("video.userid")."='".$params['user']."'";
}else
{
if($cond!='')
$cond .= ' AND (';
$uQu = 0;
foreach($params['user'] as $user)
{
if($uQu>0)
$cond .= ' OR ';
$cond .= " ".("video.userid")."='".$user."'";
$uQu++;
}
$cond .=" ) ";
}
}
//non-uid to exclude user videos from related
if($params['nonuser'])
{
if($cond!='')
$cond .= ' AND ';
$cond .= " ".("video.userid")." <> '".$params['nonuser']."' ";
}
if($params['editor_pick'])
{
if($cond!='')
$cond .= ' AND ';
$cond .= " ".("in_editor_pick")." = '".$params['editor_pick']."' ";
}
//padding videos in mass_embed pllugin
if($params['mass_embed_status'])
{
if($cond!='')
$cond .= ' AND ';
$cond .= " ".("video.mass_embed_status")." = '".$params['mass_embed_status']."' ";
}
$tag_n_title='';
//Tags
if($params['tags'])
{
//checking for commas ;)
$tags = explode(",",$params['tags']);
if(count($tags)>0)
{
if($tag_n_title!='')
$tag_n_title .= ' OR ';
$total = count($tags);
$loop = 1;
foreach($tags as $tag)
{
$tag_n_title .= " ".('video.tags')." LIKE '%".$tag."%'";
if($loop<$total)
$tag_n_title .= " OR ";
$loop++;
}
}else
{
if($tag_n_title!='')
$tag_n_title .= ' OR ';
$tag_n_title .= " ".('video.tags')." LIKE '%".$params['tags']."%'";
}
}
//TITLE
if($params['title'])
{
if($tag_n_title!='')
$tag_n_title .= ' OR ';
$tag_n_title .= " ".('video.title')." LIKE '%".$params['title']."%'";
}
if($tag_n_title)
{
if($cond!='')
$cond .= ' AND ';
$cond .= " ($tag_n_title) ";
}
//FEATURED
if($params['featured'])
{
if($cond!='')
$cond .= ' AND ';
$cond .= " ".("video.featured")." = '".$params['featured']."' ";
}
//VIDEO ID
if($params['videoid'])
{
if($cond!='')
$cond .= ' AND ';
$cond .= " ".("video.videoid")." = '".$params['videoid']."' ";
}
//VIDEO ID
if($params['videoids'])
{
if(is_array($params['videoids']))
{
if($cond!='')
$cond .= ' AND ';
$cond .= ' ( ';
$curVid = 0;
foreach($params['videoids'] as $vid)
{
if(is_numeric($vid))
{
if($curVid>0)
$cond .= " OR ";
$cond .= " ".("video.videoid")." = '".$vid."' ";
}
$curVid++;
}
$cond .= ' ) ';
}
}
//VIDEO KEY
if($params['videokey'])
{
if(!is_array($params['videokey']))
{
if($cond!='')
$cond .= ' AND ';
$cond .= " ".tbl("video.videokey")." = '".$params['videokey']."' ";
}else
{
if($cond!='')
$cond .= ' AND (';
$vkeyQue = 0;
foreach($params['videokey'] as $videokey)
{
if($vkeyQue>0)
$cond .= ' OR ';
$cond .= " ".tbl("video.videokey")." = '".$videokey."' ";
$vkeyQue++;
}
$cond .=" ) ";
}
}
//Exclude Vids
if($params['exclude'])
{
if(!is_array($params['exclude']))
{
if($cond!='')
$cond .= ' AND ';
$cond .= " ".('video.videoid')." <> '".$params['exclude']."' ";
}else
{
foreach($params['exclude'] as $exclude)
{
if($cond!='')
$cond .= ' AND ';
$cond .= " ".('video.videoid')." <> '".$exclude."' ";
}
}
}
//Duration
if($params['duration'])
{
$duration_op = $params['duration_op'];
if(!$duration_op) $duration_op = "=";
if($cond!='')
$cond .= ' AND ';
$cond .= " ".('video.duration')." ".$duration_op." '".$params['duration']."' ";
}
//Filename
if($params['filename'])
{
if(!is_array($params['filename']))
{
if($cond!='')
$cond .= ' AND ';
$cond .= " ".('video.file_name')." <> '".$params['filename']."' ";
}else
{
if($cond!='')
$cond .= ' AND (';
$fileNameQue = 0;
foreach($params['filename'] as $filename)
{
if($fileNameQue>0)
$cond .= ' OR ';
$cond .= " ".("video.file_name")." = '".$filename."' ";
$fileNameQue++;
}
$cond .=" ) ";
}
}
if($params['cond'])
{
if($params['cond_and'])
if($cond!='')
$cond .= ' AND ';
$cond .= " ".$params['cond'];
}
$functions = cb_get_functions('get_videos');
if($functions)
{
foreach($functions as $func)
{
$array = array('params'=>$params,'cond'=>$cond);
if(function_exists($func['func']))
{
$returned = $func['func']($array);
if($returned)
$cond = $returned;
}
}
}
$fields = array(
'video' => get_video_fields(),
// 'users' => get_user_fields()
'users' => $cb_columns->object('users')->temp_change('featured','user_featured')->get_columns()
);
if (!isset($fields['video_users'])) {
$fields[] = 'video_users';
}
$fields = tbl_fields( $fields );
if(!$params['count_only'] && !$params['show_related'])
{
$query = "SELECT $fields FROM ".cb_sql_table( 'video' );
$query .= " LEFT JOIN ".cb_sql_table( 'users' )." ON video.userid = users.userid";
if(!empty($superCond))
{
if ($cond !=="")
{
$cond .= " AND ".$superCond;
}
else
{
$cond .= $superCond;
}
}
if( $cond ) {
$query .= " WHERE ".$cond;
}
$query .= $order ? " ORDER BY ".$order : false;
$query .= $limit ? " LIMIT ".$limit : false;
#pr( $query, true );
$result = select( $query );
#if(!empty($cond))
# $cond .= " AND ";
#$result = $db->select(tbl('video,users'),tbl('video.*,users.userid,users.username'),$cond." ".tbl("video.userid")." = ".tbl("users.userid"),$limit,$order);
//echo $db->db_query;
}
global $cbsearch;
if($params['show_related'])
{
$cond = "";
if($superCond)
$cond = $superCond." AND ";
$cond .= "MATCH(".("video.title,video.tags").")
AGAINST ('".$params['title']."' IN BOOLEAN MODE) ";
if($params['exclude'])
{
if($cond!='')
$cond .= ' AND ';
$cond .= " ".('video.videoid')." <> '".$params['exclude']."' ";
}
$query = " SELECT ".$fields." FROM ".cb_sql_table('video');
$query .= " LEFT JOIN ".cb_sql_table('users');
$query .= " ON video.userid = users.userid ";
if( $cond ) {
$query .= " WHERE ".$cond;
}
$query .= $order ? " ORDER BY ".$order : false;
$query .= $limit ? " LIMIT ".$limit : false;
$result = select( $query );
#$result = $db->select(tbl('video,users'),tbl('video.*,users.userid,users.username'),
#$cond." AND ".tbl("video.userid")." = ".tbl("users.userid"),$limit,$order);
if($db->num_rows == 0)
{
$cond = "";
if($superCond)
$cond = $superCond." AND ";
//Try Finding videos via tags
$cond .= "MATCH(".("video.title,video.tags").")
AGAINST ('".($params['tags'])."' IN BOOLEAN MODE) ";
if($params['exclude'])
{
if($cond!='')
$cond .= ' AND ';
$cond .= " ".('video.videoid')." <> '".$params['exclude']."' ";
}
$query = " SELECT ".$fields." FROM ".cb_sql_table('video');
$query .= " LEFT JOIN ".cb_sql_table('users');
$query .= " ON video.userid = users.userid ";
if( $cond ) {
$query .= " WHERE ".$cond;
}
$query .= $order ? " ORDER BY ".$order : false;
$query .= $limit ? " LIMIT ".$limit : false;
$result = select( $query );
#$result = $db->select(tbl('video,users'),tbl('video.*,users.userid,users.username'),
#$cond." AND ".tbl("video.userid")." = ".tbl("users.userid"),$limit,$order);
}
assign($params['assign'],$result);
}
if($params['pr']) pr($result,true);
if($params['count_only']){
if (!empty($superCond)){
if (!empty($cond)){
$cond .= " AND ";
}
$cond .= $superCond;
}
return $result = $db->count( cb_sql_table('video') , 'videoid' ,$cond );
}
if($params['assign'])
assign($params['assign'], apply_filters( $result, 'get_video' ) );
else
return apply_filters( $result, 'get_video' );
}
/**
* Function used to count total video comments
*/
function count_video_comments($id)
{
global $db;
$total_comments = $db->count(tbl('comments'),"comment_id","type='v' AND type_id='$id' AND parent_id='0'");
return $total_comments;
}
/**
* Function used to update video comments count
*/
function update_comments_count($id)
{
global $db;
$total_comments = $this->count_video_comments($id);
$db->update(tbl("video"),array("comments_count","last_commented"),array($total_comments,now())," videoid='$id'");
}
/**
* Function used to add video comment
*/
function add_comment($comment,$obj_id,$reply_to=NULL,$force_name_email=false)
{
global $myquery,$db;
$video = $this->get_video_details($obj_id);
if(!$video)
e(lang("class_vdo_del_err"));
else
{
//Getting Owner Id
$owner_id = $this->get_video_owner($obj_id,true);
$add_comment = $myquery->add_comment($comment,$obj_id,$reply_to,'v',$owner_id,videoLink($video),$force_name_email);
if($add_comment)
{
//Loggin Comment
$log_array = array
(
'success'=>'yes',
'details'=> "comment on a video",
'action_obj_id' => $obj_id,
'action_done_id' => $add_comment,
);
insert_log('video_comment',$log_array);
//Updating Number of comments of video if comment is not a reply
if ($reply_to < 1)
$this->update_comments_count($obj_id);
}
return $add_comment;
}
}
/**
* Function used to remove video comment
*/
function delete_comment($cid,$is_reply=FALSE)
{
global $myquery,$db;
$remove_comment = $myquery->delete_comment($cid,'v',$is_reply);
if($remove_comment)
{
//Updating Number of comments of video
$this->update_comments_count($obj_id);
}
return $remove_comment;
}
/**
* Function used to generate Embed Code
*/
function embed_code($vdetails,$type='embed_object')
{
//Checking for video details
if(!is_array($vdetails))
{
$vdetails = $this->get_video($vdetails);
}
$embed_code = false;
$funcs = $this->embed_func_list;
if(is_array($funcs))
{
foreach($funcs as $func)
{
if(@function_exists($func))
$embed_code = $func($vdetails);
if($embed_code)
break;
}
}
if($type=='iframe')
{
$embed_code = '<iframe width="'.config('embed_player_width').'" height="'.config('embed_player_height').'" ';
$embed_code .= 'src="'.BASEURL.'/player/embed_player.php?vid='.$vdetails['videoid'].'&width='.
config('embed_player_width').'&height='.config('embed_player_height').
'&autoplay='.config('autoplay_embed').'" frameborder="0" allowfullscreen></iframe>';
}
if(!$embed_code)
{
//Default ClipBucket Embed Code
if(function_exists('default_embed_code'))
{
$embed_code = default_embed_code($vdetails);
}else
{
//return new Embed Code
$vid_file = get_video_file($vdetails,false,false);
if($vid_file)
{
$code = '';
$code .= '<object width="'.EMBED_VDO_WIDTH.'" height="'.EMBED_VDO_HEIGHT.'">';
$code .= '<param name="movie" value="'.PLAYER_URL.'/embed_player.php?vid='.$vdetails['videoid'].'"></param>';
$code .= '<param name="allowFullScreen" value="true"></param>';
$code .= '<param name="allowscriptaccess" value="always"></param>';
$code .= '<embed src="'.PLAYER_URL.'/embed_player.php?vid='.$vdetails['videoid'].'"';
$code .= 'type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="300" height="250"></embed>';
return $code .= '</object>';
}else
{
return embeded_code($vdetails);
}
}
}
return $embed_code;
}
/**
* Function used to initialize action class
* in order to call actions.class.php to
* work with Video section, this function will be called first
*/
function init_actions()
{
$this->action = new cbactions();
$this->action->init();
$this->action->type = 'v';
$this->action->name = 'video';
$this->action->obj_class = 'cbvideo';
$this->action->check_func = 'video_exists';
$this->action->type_tbl = $this->dbtbl['video'];
$this->action->type_id_field = 'videoid';
}
/**
* Function used to create value array for email templates
* @param video_details ARRAY
*/
function set_share_email($details)
{
$this->email_template_vars = array
('{video_title}' => $details['title'],
'{video_description}' => $details['description'],
'{video_tags}' => $details['tags'],
'{video_date}' => cbdate(DATE_FORMAT,strtotime($details['date_added'])),
'{video_link}' => video_link($details),
'{video_thumb}'=> GetThumb($details)
);
$this->action->share_template_name = 'share_video_template';
$this->action->val_array = $this->email_template_vars;
}
/**
* Function used to use to initialize search object for video section
* op=>operator (AND OR)
*/
function init_search()
{
$this->search = new cbsearch;
$this->search->db_tbl = "video";
$this->search->columns =array(
array('field'=>'title','type'=>'LIKE','var'=>'%{KEY}%'),
array('field'=>'tags','type'=>'LIKE','var'=>'%{KEY}%','op'=>'OR'),
array('field'=>'broadcast','type'=>'!=','var'=>'unlisted','op'=>'AND','value'=>'static'),
array('field'=>'status','type'=>'=','var'=>'Successful','op'=>'AND','value'=>'static')
);
//commit this line so that videos search can be applied to %like% instead of whole word search
//$this->search->use_match_method = true;
$this->search->match_fields = array("title","tags");
$this->search->cat_tbl = $this->cat_tbl;
$this->search->display_template = LAYOUT.'/blocks/video.html';
$this->search->template_var = 'video';
$this->search->has_user_id = true;
/**
* Setting up the sorting thing
*/
$sorting = array(
'date_added'=> lang("date_added"),
'views' => lang("views"),
'comments' => lang("comments"),
'rating' => lang("rating"),
'favorites' => lang("favorites")
);
$this->search->sorting = array(
'date_added'=> " date_added DESC",
'views' => " views DESC",
'comments' => " comments_count DESC ",
'rating' => " rating DESC",
'favorites' => " favorites DeSC"
);
/**
* Setting Up The Search Fields
*/
$default = $_GET;
if(is_array($default['category']))
$cat_array = array($default['category']);
$uploaded = $default['datemargin'];
$sort = $default['sort'];
$this->search->search_type['videos'] = array('title'=>lang('videos'));
$this->search->results_per_page = config('videos_items_search_page');
$fields = array(
'query' => array(
'title'=> lang('keywords'),
'type'=> 'textfield',
'name'=> 'query',
'id'=> 'query',
'value'=>cleanForm($default['query'])
),
'category' => array(
'title' => lang('vdo_cat'),
'type' => 'checkbox',
'name' => 'category[]',
'id' => 'category',
'value' => array('category',$cat_array),
),
'uploaded' => array(
'title' => lang('uploaded'),
'type' => 'dropdown',
'name' => 'datemargin',
'id' => 'datemargin',
'value' => $this->search->date_margins(),
'checked' => $uploaded,
),
'sort' => array(
'title' => lang('sort_by'),
'type' => 'dropdown',
'name' => 'sort',
'value' => $sorting,
'checked' => $sort
)
);
$this->search->search_type['videos']['fields'] = $fields;
}
/*
* Function used to update video and set a thumb as default
* @param VID
* @param THUMB NUM
*/
function set_default_thumb($vid,$thumb)
{
global $db,$LANG;
$num = get_thumb_num($thumb);
$file = THUMBS_DIR.'/'.$thumb;
//if(file_exists($file))
//{
$db->update(tbl("video"),array("default_thumb"),array($num)," videoid='$vid'");
e(lang('vid_thumb_changed'),'m');
//}else{
// e(lang('vid_thumb_change_err'));
//}
}
/**
* Function used to get video owner
*/
function get_video_owner($vid,$idonly=false)
{
global $db;
if($idonly)
{
$results = $db->select(tbl("video"),"userid"," videoid='$vid' ",1);
if($db->num_rows>0)
return $results[0]['userid'];
else
return false;
}else{
$results = $db->select(tbl("video"),"*"," videoid='$vid' ",1);
if($db->num_rows>0)
return $results[0];
else
return false;
}
}
/**
* Function used to check weather current user is video owner or not
*/
function is_video_owner($vid,$uid)
{
global $db;
$result = $db->count(tbl($this->dbtbl['video']),'videoid',"videoid='$vid' AND userid='$uid' ");
if($result>0)
return true;
else
return false;
}
/**
* Function used to display video manger link
*/
function video_manager_link($link,$vid)
{
if(function_exists($link) && !is_array($link))
{
return $link($vid);
}else
{
if(!empty($link['title']) && !empty($link['link']))
{
return '<a href="'.$link['link'].'">'.$link['title'].'</a>';
}
}
}
/**
* Function used to display video manger link temporay
*/
function video_manager_link_new($link,$vid)
{
if(function_exists($link) && !is_array($link))
{
return $link($vid);
}else
{
if(!empty($link['title']) && !empty($link['link']))
{
return '<a href="'.$link['link'].'">'.$link['title'].'</a>';
}
}
}
/**
* Function used to display video categories manger link temporay
*/
function video_categories_manager_link($link,$vid)
{
if(function_exists($link) && !is_array($link))
{
return $link($vid);
}else
{
if(!empty($link['title']) && !empty($link['link']))
{
return '<a href="'.$link['link'].'">'.$link['title'].'</a>';
}
}
}
/**
* Function used to get video rating details
*/
function get_video_rating($id)
{
global $db;
if(is_numeric($id))
{
$results = $db->select(tbl("video"),"userid,allow_rating,rating,rated_by,voter_ids"," videoid='$id'");
}else
$results = $db->select(tbl("video"),"userid,allow_rating,rating,rated_by,voter_ids"," videokey='$id'");
if($db->num_rows>0)
return $results[0];
else
return false;
}
/**
* Function used to display rating option for videos
* this is an OLD TYPICAL RATING SYSTEM
* and yes, still with AJAX
*/
function show_video_rating($params)
{
$rating = $params['rating'];
$ratings = $params['ratings'];
$total = $params['total'];
$id = $params['id'];
$type = $params['type'];
$data_only = $params['data_only'];
if (empty($ratings)) {
$ratings = $params['rated_by'];
}
//Checking Percent
{
if($total<=10)
$total = 10;
$perc = $rating*100/$total;
$perc = round($perc);
$disperc = 100 - $perc;
if($ratings <= 0 && $disperc == 100)
$disperc = 0;
}
$perc = $perc.'%';
$disperc = $disperc.'%';
$likes = round($ratings*$perc/100); // get lowest integer
if($params['is_rating'])
{
if(error())
{
$rating_msg = error();
$rating_msg = '<span class="error">'.$rating_msg[0].'</span>';
}
if(msg())
{
$rating_msg = msg();
$rating_msg = '<span class="msg">'.$rating_msg[0].'</span>';
}
}
if($data_only){
$data = array(
'perc'=>$perc,
'disperc'=>$disperc,
'id'=>$id,
'type'=>$type,
'id'=>$id,
'rating_msg'=>$rating_msg,
'likes'=>$likes,
'dislikes'=>($ratings-$likes),
'disable'=>$params['disable']
);
return $data;
}
assign('perc',$perc);
assign('disperc',$disperc);
assign('id',$id);
assign('type',$type);
assign('id',$id);
assign('rating_msg',$rating_msg);
assign("likes",$likes);
assign("dislikes",($ratings-$likes));
assign('disable',$params['disable']);
if(SMARTY_VERSION>2)
Template('blocks/common/rating.html');
else
Template('blocks/rating.html');
}
/**
* Calculate rating and likes
*
* @param Arrray $video
* @return Array $rating
*/
function get_video_likes($video)
{
$ratings = $video['rated_by'];
$rating = $video['rating'];
$perc = $rating * 10;
$likes = round(($perc * $ratings / 100) );
return array('likes' => $likes, 'dislikes' => $ratings - $likes);
}
/**
* Function used to rate video
*/
function rate_video($id,$rating)
{
global $db;
if(!is_numeric($rating) || $rating <= 9)
$rating = 0;
if($rating >= 10)
$rating = 10;
$rating_details = $this->get_video_rating($id);
$voter_id = $rating_details['voter_ids'];
$new_by = $rating_details['rated_by'];
$newrate = $rating_details['rating'];
if(phpversion < '5.2.0')
global $json; $js = $json;
$Oldvoters = explode('|',$voter_id);
if(is_array($Oldvoters) && count($Oldvoters)>2)
{
foreach($Oldvoters as $voter)
{
if($voter)
{
$voters[$voter] = array(
"userid" => $voter,
"time" => now(),
"method" => 'old',
);
}
}
}else
{
if(!empty($js))
$voters = $js->json_decode($voter_id,TRUE);
else
$voters = json_decode($voter_id,TRUE);
}
if(!empty($voters))
$already_voted = array_key_exists(userid(),$voters);
if(!userid())
e(lang("please_login_to_rate"));
elseif(userid()==$rating_details['userid'] && !config('own_video_rating'))
e(lang("you_cant_rate_own_video"));
elseif(!empty($already_voted))
e(lang("you_hv_already_rated_vdo"));
elseif(!config('video_rating') || $rating_details['allow_rating'] !='yes' )
e(lang("vid_rate_disabled"));
else
{
$voters[userid()] = array(
"userid" => userid(),
"username" => username(),
"time" => now(),
"rating" => $rating
);
$total_voters = count($voters);
if(!empty($js))
$voters = $js->json_encode($voters);
else
$voters = json_encode($voters);
$t = $rating_details['rated_by'] * $rating_details['rating'];
//$new_by = $rating_details['rated_by'] + 1;
$new_by = $total_voters;
$newrate = ($t + $rating) / $new_by;
if($newrate>10)
$newrate = 10;
$db->update(tbl($this->dbtbl['video']),array("rating","rated_by","voter_ids"),array($newrate,$new_by,"|no_mc|$voters")," videoid='$id'");
$userDetails = array(
"object_id" => $id,
"type" => "video",
"time" => now(),
"rating" => $rating,
"userid" => userid(),
"username" => username()
);
/* Updating user details */
update_user_voted($userDetails);
e(lang("thnx_for_voting"),"m");
}
$result = array('rating'=>$newrate,'ratings'=>$new_by,'total'=>10,'id'=>$id,'type'=>'video','disable'=>'disabled');
return $result;
/*
Following code is unused
$niddle = "|";
$niddle .= userid();
$niddle .= "|";
$flag = strstr($voter_id, $niddle);
//checking if raings are allowed or not
$vid_rating = config('video_rating');
if(!userid())
e(lang("please_login_to_rate"));
elseif(userid()==$rating_details['userid'] && !config('own_video_rating'))
e(lang("you_cant_rate_own_video"));
elseif(!empty($flag))
e(lang("you_hv_already_rated_vdo"));
elseif(!config('video_rating') || $rating_details['allow_rating'] !='yes' )
e(lang("vid_rate_disabled"));
else
{
if(empty($voter_id))
$voter_id .= "|";
$voter_id .= userid();
$voter_id .= "|";
$t = $rating_details['rated_by'] * $rating_details['rating'];
$new_by = $rating_details['rated_by'] + 1;
$newrate = ($t + $rating) / $new_by;
$db->update(tbl($this->dbtbl['video']),array("rating","rated_by","voter_ids"),array($newrate,$new_by,$voter_id)," videoid='$id'");
e(lang("thnx_for_voting"),"m");
}
$result = array('rating'=>$newrate,'ratings'=>$new_by,'total'=>10,'id'=>$id,'type'=>'video','disable'=>'disabled');
return $result;
*/
}
/**
* Function used to get playlist items
*/
function get_playlist_items( $playlist_id, $order = null, $limit = 10 )
{
global $db, $cb_columns;
$fields = array(
'playlist_items' => $cb_columns->object( 'playlist_items' )->temp_change( 'date_added', 'item_added' )->get_columns(),
'playlists' => $cb_columns->object( 'playlists' )->temp_remove( 'first_item,cover' )->temp_change( 'date_added,description,tags,category', 'playlist_added,playlist_description,playlist_tags,playlist_category' )->get_columns(),
'video' => $cb_columns->object( 'videos' )->get_columns()
);
$query = "SELECT ".table_fields( $fields )." FROM ".table( 'playlist_items' );
$query .= " LEFT JOIN ".table( 'playlists' )." ON playlist_items.playlist_id = playlists.playlist_id";
$query .= " LEFT JOIN ".table( 'video' )." ON playlist_items.object_id = video.videoid";
$query .= " WHERE playlist_items.playlist_id = '".$playlist_id."' ";
if ( !is_null( $order ) ) {
$query .= "ORDER BY ".$order;
}
if ( $limit > 0 ) {
$query .= " LIMIT ".$limit;
}
$query_id = cb_query_id( $query );
$data = cb_do_action( 'select_playlist_items', array( 'query_id' => $query_id, 'playlist_id' => $playlist_id ) );
if ( $data ) {
return $data;
}
$data = select( $query );
if ( $data ) {
cb_do_action( 'return_playlist_items', array(
'query_id' => $query_id,
'results' => $data
) );
return $data;
}
return false;
}
/**
* Function used to add video in quicklist
*/
function add_to_quicklist($id)
{
global $json, $sess, $userquery;
if($this->exists($id))
{
if(phpversion() < '5.2.0')
{
$list = $json->decode($sess->get_cookie(QUICK_LIST_SESS), true);
}
else
{
$list = json_decode($sess->get_cookie(QUICK_LIST_SESS), true);
}
$list[] = $id;
$new_list = array_unique($list);
/*//Getting list of videos
$vids = $this->get_videos(array('videoids'=>$new_list));
$newlist = array();
//setting up the list
if($vids)
foreach($vids as $vid)
{
$newlist[$vid['videoid']] =
array(
'title' => $vid['title'],
'description' => $vid['description'],
'duration' => SetTime($vid['duration']),
'thumb' => get_thumb($vid),
'url' => video_link($video),
'owner' => $vid['username'],
'ownner_url' => $userquery->profile_link($vid),
'date_added' => $vid['date_added'],
'views' => $vid['views'],
);
}*/
if(phpversion() < '5.2.0')
{
$sess->set_cookie(QUICK_LIST_SESS,$json->encode($new_list));
}
else
{
$sess->set_cookie(QUICK_LIST_SESS,json_encode($new_list));
}
return true;
}else
return false;
}
/**
* Removing video from quicklist
*/
function remove_from_quicklist($id)
{
global $json, $sess;
if(phpversion() < '5.2.0')
{
$list = $json->decode($sess->get_cookie(QUICK_LIST_SESS), true);
}
else
{
$list = json_decode($sess->get_cookie(QUICK_LIST_SESS), true);
}
$key = array_search($id,$list);
unset($list[$key]);
if(phpversion() < '5.2.0')
{
$sess->set_cookie(QUICK_LIST_SESS,$json->encode($list));
}
else
{
$sess->set_cookie(QUICK_LIST_SESS,json_encode($list));
}
return true;
}
/**
* function used to count num of quicklist
*/
function total_quicklist()
{
global $json, $sess;
$total = $sess->get_cookie(QUICK_LIST_SESS);
if(phpversion() < '5.2.0')
{
$total = $json->decode($total, true);
}
else
{
$total = json_decode($total, true);
}
return count($total);
}
/**
* Function used to get quicklist
*/
function get_quicklist()
{
global $json, $sess;
if(phpversion() < '5.2.0')
{
return $json->decode($sess->get_cookie(QUICK_LIST_SESS), true);
}
else
{
return json_decode($sess->get_cookie(QUICK_LIST_SESS), true);
}
}
/**
* Function used to remove all items of quicklist
*/
function clear_quicklist()
{
global $sess;
$sess->set_cookie(QUICK_LIST_SESS,'');
}
/**
* Function used to check weather video is downloadable or not
*/
function downloadable($vdo)
{
$file = get_video_file($vdo,false);
if($file)
return true;
else
return false;
}
/**
* Function used get comments of videos
*/
function get_comments($params=NULL)
{
global $db;
$comtbl = tbl("comments");
$limit = $params['limit'];
$order = $params['order'];
$type = $params['type'];
if($type)
$cond = " $comtbl.type = '$type'";
else
$cond = '';
switch($type) {
case 'v':
{
$sectbl = tbl('video');
$sectblName = 'video';
$secfields = $sectbl.".videokey,".$sectbl.".videoid,".$sectbl.".file_name,".$sectbl.".title";
if($cond) {
$cond .= " AND";
}
$cond .= " $comtbl.type_id = $sectbl.videoid";
}
break;
case 't':
{
$sectbl = tbl('group_topics');
$sectblName = 'group_topics';
$secfields = $sectbl.".topic_title,".$sectbl.".topic_id,".$sectbl.".topic_title";
if($cond) {
$cond .= " AND";
}
$cond .= " $comtbl.type_id = $sectbl.topic_id";
}
break;
case 'c':
{
$sectbl = tbl('users');
$sectblName = 'users';
$secfields = $sectbl.".username,".$sectbl.".userid";
if($cond) {
$cond .= " AND";
}
$cond .= " $comtbl.type_id = $sectbl.userid";
}
break;
default:
{
$sectbl = tbl('video');
$sectblName = 'video';
$secfields = $sectbl.".videokey,".$sectbl.".videoid,".$sectbl.".file_name,".$sectbl.".title";
if($cond) {
$cond .= " AND";
}
$cond .= " $comtbl.type_id = $sectbl.videoid";
}
}
if($params['cond'])
$cond .= " ".$params['cond'];
if(!$params['count_only']) {
$result = $db->select(tbl("comments,".$sectblName.""),
"$comtbl.*,$secfields",
$cond,$limit,$order);
// echo $db->db_query;
}
if($params['count_only'])
return $result = $db->count(tbl("comments,video"),"*",$cond);
else
return $result;
}
/**
* Function used get single comment
*/
function get_comment($cid) {
global $db;
$result = $db->select(tbl("comments"),"*", " comment_id = $cid");
if($result)
return $result[0];
else
return false;
}
/**
* Function used get single comment
*/
function send_notifications() {
// Put your device token here (without spaces):
$deviceToken = '610b18964b4ec3ccb8157ff22cb917fe0f6b9c1673cd4229674d87eb9aa0e5b1';
// Put your private key's passphrase here:
$passphrase = 'janjua';
// Put your alert message here:
$message = 'Jeevay Pakistan!';
////////////////////////////////////////////////////////////////////////////////
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);
// Open a connection to the APNS server
$fp = stream_socket_client(
'ssl://gateway.sandbox.push.apple.com:2195', $err,
$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
if (!$fp)
exit("Failed to connect: $err $errstr" . PHP_EOL);
echo 'Connected to APNS' . PHP_EOL;
// Create the payload body
$body['aps'] = array(
'alert' => $message,
'sound' => 'default'
);
// Encode the payload as JSON
$payload = json_encode($body);
// Build the binary notification
$msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload;
// Send it to the server
$result = fwrite($fp, $msg, strlen($msg));
if (!$result)
echo 'Message not delivered' . PHP_EOL;
else
echo 'Message successfully delivered' . PHP_EOL;
// Close the connection to the server
fclose($fp);
}
/**
* Function used to convert timthumb url to filename and file
* @param : url, flag
* @date : 6/2/2015
* @author : Fahad Abbas
* @reason : to delete the thumb from server forcefully
*/
function convert_tim_thumb_url_to_file($url,$file_name=false)
{
$thumb = explode('src=',$url);
if ($file_name)
$thumb = explode('-', $thumb[1]);
else
$thumb = explode('&', $thumb[1]);
$fn = $thumb[0];
return $fn;
}
/**
* Function used update comment
*/
// function update_comment($cid,$comment) {
// global $db;
// if(!$comment) {
// e(lang('usr_cmt_err1'),e);
// } else {
// $db->update(tbl("comments"),array("comment"),array($comment)," comment_id = $cid");
// e(lang("Comment Updated"),m);
// }
// }
}
?>