clipbucket/upload/includes/functions_templates.php
Arslan Hassan 4536cc52fc Added : New Video manager
Added : New View Conversion Status
ADded : PM Api
Added : Awesome font to enhance icons for templates
2013-01-29 16:17:07 +00:00

1776 lines
No EOL
47 KiB
PHP

<?php
/**
* Fetch Smarty Template
*
* @param type $name
* @param type $inside
* @return type
*/
function Fetch($name, $layout = true)
{
if (file_exists($name) && !is_dir($name))
{
$fileName = $name;
}
elseif ($layout === true)
{
$fileName = LAYOUT . '/' . $name;
}
elseif ($layout)
{
$fileName = $layout . $name;
}
else
{
$fileName = $name;
}
$file = CBTemplate::fetch($fileName);
return $file;
}
/**
* Function used to render Smarty Template
*
* @global type $admin_area
* @param type $template
* @param type $layout
*/
function Template($template, $layout = true)
{
global $admin_area, $Cbucket;
//Getting list of variables and classes to make them global..
if ($Cbucket->templateClasses)
{
foreach ($Cbucket->templateClasses as $tClasskey)
{
global ${$tClasskey};
}
}
if ($Cbucket->template_details['php'] != 'on')
{
if ($layout)
CBTemplate::display(LAYOUT . '/' . $template);
else
CBTemplate::display($template);
}else
{
if ($layout)
$template_file = LAYOUT . '/' . $template;
else
$template_file = $template;
if (file_exists($template_file))
include($template_file);
}
}
/**
* assign smarty variable
*
* @param type $name
* @param type $value
*/
function Assign($name, $value)
{
global $Cbucket;
$CBucket->templateVars[$name] = $value;
CBTemplate::assign($name, $value);
}
/**
* Function used to add tempalte in display template list
* @param File : file of the template
* @param Folder : weather to add template folder or not
* if set to true, file will be loaded from inside the template
* such that file path will becom $templatefolder/$file
* @param follow_show_page : this param tells weather to follow ClipBucket->show_page
* variable or not, if show_page is set to false and follow is true, this template will not load
* otherwise there it WILL
*/
function template_files($file, $folder = false, $follow_show_page = true)
{
global $ClipBucket;
if (!$folder)
$ClipBucket->template_files[] = array('file' => $file, 'follow_show_page' => $follow_show_page);
else
$ClipBucket->template_files[] = array('file' => $file,
'folder' => $folder, 'follow_show_page' => $follow_show_page);
}
/**
* Function used to include file
*/
function include_template_file($params)
{
$file = $params['file'];
//Assign Vars
if ($params)
{
foreach ($params as $name => $value)
{
if ($name != 'file')
{
assign($name, $value);
}
}
}
if (file_exists(LAYOUT . '/' . $file))
{
echo '<!-- Including ' . $file . ' -->';
Template($file);
}
elseif (file_exists($file))
{
echo '<!-- Including ' . $file . ' -->';
Template($file, false);
}
elseif (file_exists(STYLES_DIR . '/global/' . $file))
{
echo '<!-- Including ' . $file . ' -->';
Template(STYLES_DIR . '/global/' . $file, false);
}
}
/**
* Function used to fetch file
*/
function fetch_template_file( $params ) {
$file = $params[ 'file' ];
if ( $params ) {
foreach ($params as $name => $value) {
if ($name != 'file') {
assign( $name, $value );
}
}
}
if ( file_exists( LAYOUT . '/' . $file ) ) {
$output = "<!-- fetching layout/$file -->";
$output .= Fetch( $file );
} else if ( file_exists( $file ) ) {
$output = "<!-- fetching $file -->";
$output .= Fetch ( $file, false );
} else if ( file_exists( STYLES_DIR . '/global/' . $file ) ) {
$output = "<!-- fetching global/$file -->";
$output .= Fetch ( STYLES_DIR . '/global/' . $file, false );
} else {
$output = "<!-- fetching $file, No file found -->";
}
return $output;
}
/**
* Function used to call display
*/
function display_it()
{
global $ClipBucket;
$dir = LAYOUT;
foreach ($ClipBucket->template_files as $file)
{
if (file_exists(LAYOUT . '/' . $file) || is_array($file))
{
if (!$ClipBucket->show_page && $file['follow_show_page'])
{
}
else
{
if (!is_array($file))
$new_list[] = $file;
else
{
if ($file['folder'] && file_exists($file['folder'] . '/' . $file['file']))
$new_list[] = $file['folder'] . '/' . $file['file'];
else
$new_list[] = $file['file'];
}
}
}
}
assign('template_files', $new_list);
Template('body.html');
footer();
}
function showpagination($total, $page, $link, $extra_params = NULL, $tag = '<a #params#>#page#</a>')
{
global $pages;
return $pages->pagination($total, $page, $link, $extra_params, $tag);
}
function smarty_lang($param)
{
if ($param['assign'] == '')
return lang($param['code'], $param['sprintf']);
else
assign($param['assign'], lang($param['code'], $param['sprintf']));
}
/**
* Function used to get player logo
*/
function website_logo()
{
$logo_file = config('player_logo_file');
if (file_exists(BASEDIR . '/images/' . $logo_file) && $logo_file)
return BASEURL . '/images/' . $logo_file;
return BASEURL . '/images/logo.png';
}
/**
* Function used to assign link
*/
function cblink($params)
{
global $ClipBucket;
$name = $params['name'];
$ref = $param['ref'];
if ($name == 'category')
{
return category_link($params['data'], $params['type']);
}
if ($name == 'sort')
{
return sort_link($params['sort'], 'sort', $params['type']);
}
if ($name == 'time')
{
return sort_link($params['sort'], 'time', $params['type']);
}
if ($name == 'tag')
{
return BASEURL . '/search_result.php?query=' . urlencode($params['tag']) . '&type=' . $params['type'];
}
if ($name == 'category_search')
{
return BASEURL . '/search_result.php?category[]=' . $params['category'] . '&type=' . $params['type'];
}
if (SEO != 'yes')
{
preg_match('/http:\/\//', $ClipBucket->links[$name][0], $matches);
if ($matches)
$link = $ClipBucket->links[$name][0];
else
$link = BASEURL . '/' . $ClipBucket->links[$name][0];
}else
{
preg_match('/http:\/\//', $ClipBucket->links[$name][1], $matches);
if ($matches)
$link = $ClipBucket->links[$name][1];
else
$link = BASEURL . '/' . $ClipBucket->links[$name][1];
}
$param_link = "";
if (!empty($params['extra_params']))
{
preg_match('/\?/', $link, $matches);
if (!empty($matches[0]))
{
$param_link = '&' . $params['extra_params'];
}
else
{
$param_link = '?' . $params['extra_params'];
}
}
if ($params['assign'])
assign($params['assign'], $link . $param_link);
else
return $link . $param_link;
}
/**
* Function used to show rating
* @inputs
* class : class used to show rating usually rating_stars
* rating : rating of video or something
* ratings : number of rating
* total : total rating or out of
*/
function show_rating($params)
{
$class = $params['class'] ? $params['class'] : 'rating_stars';
$rating = $params['rating'];
$ratings = $params['ratings'];
$total = $params['total'];
$style = $params['style'];
if (empty($style))
$style = config('rating_style');
//Checking Percent {
if ($total <= 10)
$total = 10;
$perc = $rating * 100 / $total;
$disperc = 100 - $perc;
if ($ratings <= 0 && $disperc == 100)
$disperc = 0;
$perc = $perc . '%';
$disperc = $disperc . "%";
switch ($style)
{
case "percentage": case "percent":
case "perc": default:
{
$likeClass = "UserLiked";
if (str_replace('%', '', $perc) < '50')
$likeClass = 'UserDisliked';
$ratingTemplate = '<div class="' . $class . '">
<div class="ratingContainer">
<span class="ratingText">' . $perc . '</span>';
if ($ratings > 0)
$ratingTemplate .= ' <span class="' . $likeClass . '">&nbsp;</span>';
$ratingTemplate .='</div>
</div>';
}
break;
case "bars": case "Bars": case "bar":
{
$ratingTemplate = '<div class="' . $class . '">
<div class="ratingContainer">
<div class="LikeBar" style="width:' . $perc . '"></div>
<div class="DislikeBar" style="width:' . $disperc . '"></div>
</div>
</div>';
}
break;
case "numerical": case "numbers":
case "number": case "num":
{
$likes = round($ratings * $perc / 100);
$dislikes = $ratings - $likes;
$ratingTemplate = '<div class="' . $class . '">
<div class="ratingContainer">
<div class="ratingText">
<span class="LikeText">' . $likes . ' Likes</span>
<span class="DislikeText">' . $dislikes . ' Dislikes</span>
</div>
</div>
</div>';
}
break;
case "custom": case "own_style":
{
$file = LAYOUT . "/" . $params['file'];
if (!empty($params['file']) && file_exists($file))
{
// File exists, lets start assign things
assign("perc", $perc);
assign("disperc", $disperc);
// Likes and Dislikes
$likes = floor($ratings * $perc / 100);
$dislikes = $ratings - $likes;
assign("likes", $likes);
assign("dislikes", $dislikes);
Template($file, FALSE);
}
else
{
$params['style'] = "percent";
return show_rating($params);
}
}
break;
}
/* $rating = '<div class="'.$class.'">
<div class="stars_blank">
<div class="stars_filled" style="width:'.$perc.'">&nbsp;</div>
<div class="clear"></div>
</div>
</div>'; */
return $ratingTemplate;
}
/**
* Function used to display
* Blank Screen
* if there is nothing to play or to show
* then show a blank screen
*/
function blank_screen($data)
{
global $swfobj;
$code = '<div class="blank_screen" align="center">No Player or Video File Found - Unable to Play Any Video</div>';
$swfobj->EmbedCode(unhtmlentities($code), $data['player_div']);
return $swfobj->code;
}
/**
* Adds js files in ClipBucket template.
*
* @link http://docs.clip-bucket.com/user-manual/developers-guide/functions/functions_templates/add_js
* @global type $Cbucket
* @param type $files
* @return type
* @since 2.6
*/
function add_js($files, $scope = 'global')
{
global $Cbucket;
if ($files)
{
if (is_array($scope))
{
foreach ($scope as $sc)
{
if (is_array($files))
foreach ($files as $file)
$Cbucket->JSArray[$sc][] = $file;
else
$Cbucket->JSArray[$sc][] = $files;
}
}else
{
if (is_array($files))
foreach ($files as $file)
$Cbucket->JSArray[$scope][] = $file;
else
$Cbucket->JSArray[$scope][] = $files;
}
}
return;
}
/**
* Adds CSS Files in ClipBucket template
*
* @link http://docs.clip-bucket.com/user-manual/developers-guide/functions/functions_templates/add_css
* @since 2.6
* @param STRING $file CSS FILE
* @param STRING $scope File Scope, read more about scope on http://docs.clip-bucket.com/
*/
function add_css($files, $scope)
{
global $Cbucket;
if ($files)
{
if (is_array($scope))
{
foreach ($scope as $sc)
{
if (is_array($files))
{
foreach ($files as $file)
{
$Cbucket->CSSArray[$sc][] = $file;
}
}
else
{
$Cbucket->CSSArray[$sc][] = $files;
}
}
}
else
{
if (is_array($files))
{
foreach ($files as $file)
{
$Cbucket->CSSArray[$scope][] = $file;
}
}
else
{
$Cbucket->CSSArray[$scope][] = $files;
}
}
}
return;
}
/**
* Function add_header()
* this will be used to add new files in header array
* this is basically for plugins
* for specific page array('page'=>'file')
* ie array('uploadactive'=>'datepicker.js')
*/
function add_header($files)
{
global $Cbucket;
return $Cbucket->add_header($files);
}
function add_admin_header($files)
{
global $Cbucket;
return $Cbucket->add_admin_header($files);
}
/**
* Function used to show sharing form
*/
function show_share_form($array)
{
assign('params', $array);
Template('blocks/share_form.html');
}
/**
* Function used to show flag form
*/
function show_flag_form($array)
{
assign('params', $array);
Template('blocks/flag_form.html');
}
/**
* Function used to show flag form
*/
function show_playlist_form($array)
{
global $cbvid;
assign('params', $array);
$playlists = $cbvid->action->get_playlists();
assign('playlists', $playlists);
Template('blocks/playlist_form.html');
}
/**
* Function used to show collection form
*/
function show_collection_form($params)
{
global $db, $cbcollection;
if (!userid())
$loggedIn = "not";
else
{
$collectArray = array("order" => " collection_name ASC", "type" => "videos", "user" => userid());
$collections = $cbcollection->get_collections($collectArray);
assign("collections", $collections);
}
Template("/blocks/collection_form.html");
}
/**
* Function used to check weather tempalte file exists or not
* input path to file
*/
function template_file_exists($file, $dir)
{
if (!file_exists($dir . '/' . $file) && !empty($file) && !file_exists($file))
{
echo sprintf(lang("temp_file_load_err"), $file, $dir);
return false;
}else
return true;
}
/**
* Category Link is used to return
* Category based link
*/
function category_link($data, $type)
{
switch ($type)
{
case 'video':case 'videos':case 'v':
{
if (SEO == 'yes')
return BASEURL . '/videos/' . $data['category_id'] . '/' . SEO($data['category_name']) . '/' . $_GET['sort'] . '/' . $_GET['time'] . '/';
else
return BASEURL . '/videos.php?cat=' . $data['category_id'] . '&sort=' . $_GET['sort'] . '&time=' . $_GET['time'] . '&seo_cat_name=' . $_GET['seo_cat_name'];
}
break;
case 'channels':case 'channel':case'c':case'user':
{
if (SEO == 'yes')
return BASEURL . '/channels/' . $data['category_id'] . '/' . SEO($data['category_name']) . '/' . $_GET['sort'] . '/' . $_GET['time'] . '/';
else
return BASEURL . '/channels.php?cat=' . $data['category_id'] . '&sort=' . $_GET['sort'] . '&time=' . $_GET['time'] . '&seo_cat_name=' . $_GET['seo_cat_name'];
}
break;
default:
{
if (THIS_PAGE == 'photos')
$type = 'photos';
if (defined("IN_MODULE"))
{
$url = 'cat=' . $data['category_id'] . '&sort=' . $_GET['sort'] . '&time=' . $_GET['time'] . '&page=' . $_GET['page'] . '&seo_cat_name=' . $_GET['seo_cat_name'];
global $prefix_catlink;
$url = $prefix_catlink . $url;
$rm_array = array("cat", "sort", "time", "page", "seo_cat_name");
$p = "";
if ($prefix_catlink)
$rm_array[] = 'p';
$plugURL = queryString($url, $rm_array);
return $plugURL;
}
if (SEO == 'yes')
return BASEURL . '/' . $type . '/' . $data['category_id'] . '/' . SEO($data['category_name']) . '/' . $_GET['sort'] . '/' . $_GET['time'] . '/';
else
return BASEURL . '/' . $type . '.php?cat=' . $data['category_id'] . '&sort=' . $_GET['sort'] . '&time=' . $_GET['time'] . '&seo_cat_name=' . $_GET['seo_cat_name'];
}
break;
}
}
/**
* Sorting Links is used to return
* Sorting based link
*/
function sort_link($sort, $mode = 'sort', $type)
{
switch ($type)
{
case 'video':
case 'videos':
case 'v':
{
if (!isset($_GET['cat']))
$_GET['cat'] = 'all';
if (!isset($_GET['time']))
$_GET['time'] = 'all_time';
if (!isset($_GET['sort']))
$_GET['sort'] = 'most_recent';
if (!isset($_GET['page']))
$_GET['page'] = 1;
if (!isset($_GET['seo_cat_name']))
$_GET['seo_cat_name'] = 'All';
if ($mode == 'sort')
$sorting = $sort;
else
$sorting = $_GET['sort'];
if ($mode == 'time')
$time = $sort;
else
$time = $_GET['time'];
if (SEO == 'yes')
return BASEURL . '/videos/' . $_GET['cat'] . '/' . $_GET['seo_cat_name'] . '/' . $sorting . '/' . $time . '/' . $_GET['page'];
else
return BASEURL . '/videos.php?cat=' . $_GET['cat'] . '&sort=' . $sorting . '&time=' . $time . '&page=' . $_GET['page'] . '&seo_cat_name=' . $_GET['seo_cat_name'];
}
break;
case 'channels':
case 'channel':
{
if (!isset($_GET['cat']))
$_GET['cat'] = 'all';
if (!isset($_GET['time']))
$_GET['time'] = 'all_time';
if (!isset($_GET['sort']))
$_GET['sort'] = 'most_recent';
if (!isset($_GET['page']))
$_GET['page'] = 1;
if (!isset($_GET['seo_cat_name']))
$_GET['seo_cat_name'] = 'All';
if ($mode == 'sort')
$sorting = $sort;
else
$sorting = $_GET['sort'];
if ($mode == 'time')
$time = $sort;
else
$time = $_GET['time'];
if (SEO == 'yes')
return BASEURL . '/channels/' . $_GET['cat'] . '/' . $_GET['seo_cat_name'] . '/' . $sorting . '/' . $time . '/' . $_GET['page'];
else
return BASEURL . '/channels.php?cat=' . $_GET['cat'] . '&sort=' . $sorting . '&time=' . $time . '&page=' . $_GET['page'] . '&seo_cat_name=' . $_GET['seo_cat_name'];
}
break;
default:
{
if (!isset($_GET['cat']))
$_GET['cat'] = 'all';
if (!isset($_GET['time']))
$_GET['time'] = 'all_time';
if (!isset($_GET['sort']))
$_GET['sort'] = 'most_recent';
if (!isset($_GET['page']))
$_GET['page'] = 1;
if (!isset($_GET['seo_cat_name']))
$_GET['seo_cat_name'] = 'All';
if ($mode == 'sort')
$sorting = $sort;
else
$sorting = $_GET['sort'];
if ($mode == 'time')
$time = $sort;
else
$time = $_GET['time'];
if (THIS_PAGE == 'photos')
$type = 'photos';
if (defined("IN_MODULE"))
{
$url = 'cat=' . $_GET['cat'] . '&sort=' . $sorting . '&time=' . $time . '&page=' . $_GET['page'] . '&seo_cat_name=' . $_GET['seo_cat_name'];
$plugURL = queryString($url, array("cat", "sort", "time", "page", "seo_cat_name"));
return $plugURL;
}
if (SEO == 'yes')
return BASEURL . '/' . $type . '/' . $_GET['cat'] . '/' . $_GET['seo_cat_name'] . '/' . $sorting . '/' . $time . '/' . $_GET['page'];
else
return BASEURL . '/' . $type . '.php?cat=' . $_GET['cat'] . '&sort=' . $sorting . '&time=' . $time . '&page=' . $_GET['page'] . '&seo_cat_name=' . $_GET['seo_cat_name'];
}
break;
}
}
/**
* function used to call clipbucket footers
*/
function footer()
{
$funcs = get_functions('clipbucket_footer');
if (is_array($funcs) && count($funcs) > 0)
{
foreach ($funcs as $func)
{
if (function_exists($func))
{
$func();
}
}
}
}
/**
* FUnction used to get head menu
*/
function head_menu($params = NULL)
{
global $Cbucket;
return $Cbucket->head_menu($params);
}
/**
* This function returns the provided menu. If no name is passed
* navigation menu will load automatically.
*
* @global object $Cbucket
* @param array $params
* @return string
*/
function cbMenu($params = NULL)
{
global $Cbucket;
$name = $params['name'];
if (!$name)
{
$name = 'navigation';
}
$menu = get_menu($name);
$params['show_icons'] = $params['show_icons'] ? $params['show_icons'] : 'yes';
if ($menu)
{
foreach ($menu as $item)
{
$continue = true;
if ($item['section'] && !isSectionEnabled($item['section']))
{
$continue = false;
}
if ($continue == true)
{
$selected = current_page(array('page' => $item['section']));
$icon = '';
$output .= '<li';
$output .= " id='" . SEO(strtolower($name)) . "-" . $item['id'] . "' ";
$classes = $params['class'] ? $params['class'] : '';
if ($selected)
{
$classes .= ' active';
}
$output .= " class='$classes' ";
if ($item['icon'] && $params['show_icons'] == 'yes')
{
$icon = "<i class='" . $item['icon'] . "'></i> ";
}
$output .= "" . $params['extra_params'] ? $params['extra_params'] : '' . ">";
$output .= "<a href='" . $item['link'] . "' target='" . $item['target'] . "'>" . $icon . $item['title'] . "</a>";
$output .= "</li>";
}
}
if ($params['assign'])
{
assign($params['assign'], $output);
}
else
{
return $output;
}
}
//pr( $menu , true );
//return $Cbucket->cbMenu($params);
}
/**
* FUnction used to get foot menu
*/
function foot_menu($params = NULL)
{
global $Cbucket;
return $Cbucket->foot_menu($params);
}
/**
* This function used to include headers in <head> tag
* it will check weather to include the file or not
* it will take file and its type as an array
* then compare its type with THIS_PAGE constant
* if header has TYPE of THIS_PAGE then it will be inlucded
*/
function include_header($params)
{
$file = $params['file'];
$type = $params['type'];
if ($file == 'global_header')
{
Template(BASEDIR . '/styles/global/head.html', false);
return false;
}
if ($file == 'admin_bar')
{
if (has_access('admin_access', TRUE))
Template(BASEDIR . '/styles/global/admin_bar.html', false);
return false;
}
if (!$type)
$type = "global";
if (is_includeable($type))
Template($file, false);
return false;
}
/**
* Function used to check weather to include
* given file or not
* it will take array of pages
* if array has ACTIVE PAGE or has GLOBAL value
* it will return true
* otherwise FALSE
*/
function is_includeable($array)
{
if (!is_array($array))
$array = array($array);
if (in_array(THIS_PAGE, $array) || in_array('global', $array))
{
return true;
}else
return false;
}
/**
* This function works the same way as include_header
* but the only difference is , it is used to include
* JS files only
* @deprecated v3.0
*/
$the_js_files = array();
function include_js($params)
{
global $the_js_files;
$file = $params['file'];
$type = $params['type'];
if (!in_array($file, $the_js_files))
{
$the_js_files[] = $file;
if ($type == 'global')
return '<script src="' . JS_URL . '/' . $file . '" type="text/javascript"></script>';
elseif (is_array($type))
{
foreach ($type as $t)
{
if ($t == THIS_PAGE)
return '<script src="' . JS_URL . '/' . $file . '" type="text/javascript"></script>';
}
}elseif ($type == THIS_PAGE)
return '<script src="' . JS_URL . '/' . $file . '" type="text/javascript"></script>';
}
return false;
}
/**
* function used to get theme options
* @todo Write documentation
*/
function theme_config($name)
{
global $Cbucket;
if ($Cbucket->theme_configs)
$theme_configs = $Cbucket->theme_configs;
else
$theme_configs = theme_configs();
$value = $value[$name];
}
/**
* Get them configurations
* @global type $Cbucket
* @return type
*/
function theme_configs()
{
global $Cbucket;
$value = config($Cbucket->template . '-options');
$value = json_decode($value, true);
$value = $value['options'];
return $value;
}
/**
* add link in admin area left menu
*
* Function used to add items in admin menu
* This function will insert new item in admin menu
* under given header, if the header is not available
* it will create one, ( Header means titles ie 'Plugins' 'Videos' etc)
* http://docs.clip-bucket.com/add_admin_menu-function for reference
*
* @todo Write documentation
*/
function add_admin_menu($params, $name = false, $link = false, $plug_folder = false, $is_player_file = false)
{
global $Cbucket;
if (!is_array($params))
{
$params = _add_admin_menu($params, $name, $link, $plug_folder, $is_player_file);
add_admin_sub_menu($params);
return true;
}
$defaults = array(
'title' => lang('Settings'),
'id' => 'settings',
'icon' => 'icon-gauge',
'access' => 'admin-access'
);
$params = array_merge($defaults, $params);
return $Cbucket->AdminMenu[$params['id']] = $params;
}
/**
* add multiple admin menus
*/
function add_admin_menus($menus)
{
if (is_array($menus))
{
foreach ($menus as $menu)
add_admin_menu($menu);
}
}
/**
* @todo write documentation
*/
function add_admin_sub_menu($params)
{
global $Cbucket;
$defaults = array(
'parent_id' => 'tool-box',
'access' => 'admin_access',
);
$params = array_merge($defaults, $params);
if ($params['title'])
{
$id = $params['id'];
if (!$id)
$id = SEO($params['title']);
$menu = array(
'id' => $id,
'parent_id' => $params['parent_id'],
'access' => $params['access'],
'title' => $params['title'],
'link' => $params['link'],
'icon' => $params['icon'],
);
if ($Cbucket->AdminMenu[$params['parent_id']])
{
$Cbucket->AdminMenu[$params['parent_id']]['sub_menu'][] = $menu;
}
else
{
//Add menu to misc menu
$Cbucket->AdminMenu['miscellaneous']['sub_menu'][] = $menu;
}
}
}
function add_admin_sub_menus($params)
{
if (is_array($params))
{
foreach ($params as $parent => $child)
{
foreach ($child as $ch)
{
$ch['parent_id'] = $parent;
add_admin_sub_menu($ch);
}
}
}
}
function _add_admin_menu($header = 'Tool Box', $name = false, $link = false, $plug_folder = false, $is_player_file = false)
{
global $Cbucket;
//Get Menu
$menu = $Cbucket->AdminMenu;
if ($plug_folder)
$link = 'plugin.php?folder=' . $plug_folder . '&file=' . $link;
if ($is_player_file)
$link .= '&player=true';
//Add New Menu
$menu[$header][$name] = $link;
//Add sub menu function here...
$params = array(
'title' => $name,
'parent_id' => SEO($header),
'id' => SEO('title'),
'link' => $link
);
return $params;
}
/**
* get admin menu
*
* @todo Write documentation
*/
function get_admin_menu()
{
global $Cbucket;
$array = $Cbucket->AdminMenu;
//Apply Filters
$array = apply_filters($array, 'admin_menu');
return $array;
}
/**
* get list of icons in category-icons folder
*/
function get_category_icons()
{
//Check if there is a folder
//template for category icons
if (file_exists(FRONT_TEMPLATEDIR . '/category-icons'))
{
$dir = FRONT_TEMPLATEDIR . '/category-icons';
$dir_url = FRONT_TEMPLATEURL . '/category-icons';
}
else
{
$dir = BASEDIR . '/images/category-icons';
$dir_url = BASEURL . '/images/category-icons';
}
//Blank list of images
$images = array();
if (file_exists($dir))
{
//Only get PNGs
$imgList = glob($dir . '/*.png');
if ($imgList)
{
foreach ($imgList as $img)
{
list($width, $height, $type, $attr) = getimagesize($img);
if ($width && $height)
$images[] = $img;
}
}
}
$final_images = array();
if ($images)
{
foreach ($images as $image)
{
$imagearr = explode('/', $image);
$imageName = $imagearr[count($imagearr) - 1];
$final_images[$imageName] = array('url' => $dir_url . '/' . $imageName,
'path' => $dir . '/' . $imageName);
}
}
return $final_images;
}
/**
* Loading Pointer
*
* Displays a loading image with the given ID
* we need this pointer on many places to let user know if the
* process is finised or not to improve UI
*
* @param ID String
* @return Image wraped in img tag with ID and hidden by default
*/
function loading_pointer($params)
{
$id = $params['place'] ? $params['place'] : $params['id'];
$img = TEMPLATEURL . '/images/loaders/1.gif';
return '<img src="' . $img . '" id="' . $id . '-loader" class="loading_pointer ' . $params['class'] . '">';
}
/**
* Shortify Numbers
*
* display large numbers in short forms by adding K
* and triming the rest
* 100,000 => 100K 105,2345 => 105.2K
*
* @param INT $numbers
* @return STRING $shortened
*/
function shortify($numbers)
{
if (is_numeric($numbers))
{
if ($numbers > 1000)
{
$new = round($numbers / 1000, 1);
return $new . 'K';
}
}
}
/**
* Displays the rating in the template in an ajax request
* @todo Write Documentation
*
* filters isliye lagay hain take array main radobadal ki ja skay
* cb_call_functions baad main issy array ko istemal kr k rating
* show krwa dega, is k liye pehle cb_register_function krwana
* parre ga.
*
* return isliye kuch nhin krwaya kion k cb_call_funcion b kuch return
* nhin kr ra hai wo ilsye k ye content ko format nhin krta
* balke jitne registered functions hote hain unko call krta aur bich
* me hi echo hota
*/
function showRating($rating)
{
$rating = apply_filters($rating, 'show-rating');
cb_call_functions('show_rating', $rating);
}
function get_menu($name)
{
global $Cbucket;
$menu = $Cbucket->menus[$name];
if ($menu)
{
$menu = apply_filters($menu, 'filter_menu');
return $menu;
}
else
{
return false;
}
}
function add_menu($name, $items = null)
{
global $Cbucket;
if (!get_menu($name) && !is_null($items) && is_array($items))
{
$Cbucket->menus[$name] = array();
add_menu_items($name, $items);
}
}
function add_menu_items($name, $items)
{
if (is_array($items))
{
foreach ($items as $item)
{
add_menu_item($name, $item);
}
}
}
/**
* This adds a new item in provided menu.
* @param $name STRING, Name of the menu in which item will be added
* @param $item STRING|ARRAY, If a string is provided it will be considered as item title
* it should be an array
* @param $link STRING, HTTP URL for provided title
* @param $section STRING, Name of the section
* @param $icon STRING, Add class name for icon. http://twitter.github.com/bootstrap/base-css.html#icon
* contains list of all icons that you can use
* @param $id STRING, Unique id for this item
* @param $target STRING, Set a target for current item
*/
function add_menu_item($name, $item, $link = false, $section = false, $icon = false, $id = false, $target = '_self')
{
global $Cbucket;
if (!is_array($item))
{
$item =
array(
'title' => $item,
'link' => $link,
'icon' => $icon,
'target' => $target,
'id' => $id,
'section' => $section);
}
$item['id'] = $item['id'] ? $item['id'] : SEO(strtolower($item['title']));
$Cbucket->menus[$name][$item['id']] = $item;
}
/* * *
* fetch template files as defined int he template config
* @param file
* @param type , display | fetch
*/
function get_template($file, $type = 'fetch', $layout = true)
{
$defaults = array(
'single_comment' => 'blocks/comments/comment.html',
'comments' => 'blocks/comments/comments.html',
'pagination' => 'blocks/pagination.html',
'notification_block' => 'blocks/notifications/notification_block.html',
'notifications' => 'blocks/notifications/notifications.html',
'msgs_notifications' => 'blocks/pm/notifications.html',
'msgs_notifications_block' => 'blocks/pm/notification_block.html',
'single_message'=>'blocks/pm/message.html',
'friends_notifications' => 'blocks/contacts/notifications.html',
'friends_notifications_block' => 'blocks/contacts/notification_block.html',
'topics' => 'blocks/groups/topics.html',
'share_feed_block' => 'blocks/feed_share_block.html',
'single_feed' => 'blocks/single_feed.html',
'single_topic' => 'blocks/groups/topic.html',
'group_topic' => 'blocks/groups/group_topic.html',
'group_video' => 'blocks/groups/video.html'
);
$files = config('template_files');
if ($files[$file])
{
$the_file = $files[$file];
}
else
{
$the_file = $defaults[$file];
}
if ($the_file)
{
if ($type == 'fetch')
return fetch($the_file);
if ($type == 'path')
{
$path = $the_file;
if ($layout)
$path = LAYOUT . '/' . $the_file;
return $path;
}else
template($the_file);
}
}
/**
* Loads all javascript files, previous function include_js is now
* deprecated, all js files that are added using add_js function will be
* loadded this simple function
*
* @return js files wrappded in script tag
*/
function cb_load_js()
{
global $Cbucket;
$js_array = $Cbucket->JSArray;
$js_array = apply_filters($js_array, 'js_array');
if (is_array($js_array))
{
foreach ($js_array as $scope => $js_files)
{
if ((defined('THIS_PAGE') && $scope == THIS_PAGE) OR
$scope == 'global' || !defined('THIS_PAGE'))
{
foreach ($js_files as $file)
{
if (!strstr($file, 'http'))
{
$file = JS_URL . '/' . $file;
}
echo '<script src="' . $file . '" type="text/javascript"></script>';
echo "\n";
}
}
}
}
}
/**
* Function loads ClipBucket CSS Files that are added using add_css function
* either in a plugin or a template file.
*
* @return CSS files...
*/
function cb_load_css()
{
global $Cbucket;
$css_array = $Cbucket->CSSArray;
$css_array = apply_filters($css_array, '$css_array');
if (is_array($css_array))
{
foreach ($css_array as $scope => $css_files)
{
if ((defined('THIS_PAGE') && $scope == THIS_PAGE) OR
$scope == 'global' || !defined('THIS_PAGE'))
{
foreach ($css_files as $file)
{
echo '<link rel="stylesheet" type="text/css" href="' . $file . '" /> ';
echo "\n";
}
}
}
}
}
/**
* Source: http://www.barattalo.it/2010/02/02/recursive-remove-directory-rmdir-in-php/
* @param string $path
*/
function rmdir_recurse($path)
{
$path = rtrim($path, '/') . '/';
$handle = opendir($path);
while (false !== ($file = readdir($handle)))
{
if ($file != '.' and $file != '..')
{
$fullpath = $path . $file;
if (is_dir($fullpath))
rmdir_recurse($fullpath); else
unlink($fullpath);
}
}
closedir($handle);
rmdir($path);
}
/**
* Get manager order for provided $type
*
* @todo Add alias function for different objects
* @global OBJECT $Cbucket
* @param STRING $type
* @return MIX
*/
function object_manager_orders($type = 'video')
{
global $Cbucket;
$orders = $Cbucket->manager_orders[$type];
if ($orders)
{
$orders = apply_filters($orders, 'manager_orders');
return $orders;
}
return false;
}
/**
* Adds a new order for object
*
* @todo Add alias function for different objects
* @global OBJECT $Cbucket
* @param STRING $title
* @param STRING $order
* @param STRING $type
* @param STRING $id
* @return MIX
*/
function add_object_manager_order($title, $order, $type = 'video')
{
global $Cbucket;
if (!$title || !$order || !$type)
{
return false;
}
$order_array = array(
'title' => $title,
'order' => $order,
'id' => $type . '-' . SEO(strtolower($title)) . '-' . time()
);
$Cbucket->manager_orders[trim($type)][] = $order_array;
return $Cbucket->manager_orders;
}
/**
* Displays the current order title
*
* @todo Add alias function for different objects
* @param STRING $type
* @return MIX
*/
function current_object_order($type = 'video')
{
$current = $_GET['omo'] ? mysql_clean($_GET['omo']) : (int) 0;
$orders = object_manager_orders($type);
if (!$orders[$current])
{
$current = 0;
}
if ($orders[$current])
{
return $orders[$current]['title'];
}
return false;
}
/**
* Displays the list of orders for current object. You have option to only
* display unselected orders excluding the current order. Set $display to
* 'all' to add all orders, adding CSS .active class to current one
*
* @todo Add alias function for different objects
* @param STRING $type
* @param STRING $display
* @return MIX
*/
function display_manager_orders($type = 'video', $display = 'unselected')
{
$orders = object_manager_orders($type);
$current_order = $_GET['omo'] ? mysql_clean($_GET['omo']) : (int) 0;
if (!$orders[$current_order])
{
$current_order = 0;
}
$total_order = count($orders);
if ($_SERVER['QUERY_STRING'])
{
$query_string = queryString(null, 'omo');
}
if ($orders)
{
foreach ($orders as $key => $order)
{
if ($key == $current_order && $display == 'unselected' && $total_order >= 2)
{
continue; // skip the selected one
}
$active = '';
if ($key == $current_order)
{
$active = ' class="active"';
}
$output .= '<li' . $active . '>';
$output .= '<a href="' . ($query_string ? $query_string : '?') . 'omo=' . $key . '" id="' . $order['id'] . '" data-order="' . $key . '" data-type="' . $type . '">' . $order['title'] . '</a>';
$output .= '</li>';
}
return $output;
}
return false;
}
/**
* This function returns mySQL for given type
* @param string $type
* @return string
*/
function return_object_order( $type = null ) {
if ( is_null( $type) ) {
return false;
}
$orders = object_manager_orders($type);
if ($orders)
{
$current_order = $_GET['omo'] ? mysql_clean($_GET['omo']) : (int) 0;
if (!$orders[$current_order])
{
$current_order = 0;
}
if ($orders[$current_order]['order'])
{
return $orders[$current_order]['order'];
}
}
return false;
}
/**
*
* @param array $extra
* @return array
*/
function get_template_fields( $extra = null ) {
$fields = array( 'name','author','version','released','website','dir' );
if ( is_null( $extra ) and is_array( $extra ) ) {
$fields = array_merge( $fields, $extra );
}
return $fields;
}
/**
* Display template changer for users if it is
* allowed by administrator
*
* @global $cbtpl;
*/
function display_template_changer() {
if ( ALLOW_STYLE_SELECT ) {
global $cbtpl;
$templates = $cbtpl->get_templates();
// Arrange templates according to name
// A - Z
if ( $templates ) {
ksort( $templates );
$list = '';
$fields = get_template_fields();
$active_template = get_active_template();
foreach( $templates as $template ) {
// Only get commonly used fields
foreach( $fields as $field ) {
if ( $template[ $field ] ) {
$tem[ $field ] = $template[ $field ];
}
}
$tem = apply_filters( $tem, 'template_selection' );
if ( !$tem['name'] or !$template['dir'] ) {
continue;
}
$active = ( $active_template == $template['dir'] ) ? ' active' : '';
$list .= '<li class="template-item'.$active.'" data-template="'.$template['dir'].'">';
$list .= '<a href="'.queryString( 'set_the_template='.$template['dir'].'', array('set_the_template') ).'">';
$list .= $tem['name'];
$list .= '</a>';
$list .= '</li>';
}
}
$params['file'] = 'blocks/template_changer.html';
$params['templates_list'] = $list;
return fetch_template_file( $params );
}
return false;
}
/**
* This filter template details that should be enough
* for user
*
* @param array $details
* @return array
*/
function get_template_info_for_user( $details ) {
if ( $details ) {
$fields = get_template_fields();
foreach( $fields as $field ) {
if ( $details[ $field ] ) {
$to_user[ $field ] = $details[ $field ];
}
}
if ( $to_user ) {
return $to_user;
} else {
return false;
}
}
}
/**
* Get current template
* @global type $Cbucket
* @return string
*/
function get_active_template() {
global $Cbucket;
return $Cbucket->template;
}
function get_active_template_details() {
global $Cbucket;
return $Cbucket->template_details;
}
/**
* Get template name
* @param array $tem
* @return string
*/
function get_template_name( $tem ) {
return get_template_detail( $tem, 'name' );
}
/**
* Get given detail of given template
* @global object $cbtpl
* @param array $tem
* @param string $detail
* @return string
*/
function get_template_detail( $tem, $detail = 'name' ) {
global $cbtpl;
$details = $cbtpl->get_template_details( $tem );
if ( $details ) {
$to_user_details = get_template_info_for_user( $details );
if ( $to_user_details and $to_user_details[ $detail ] ) {
return $to_user_details[ $detail ];
}
}
}
/**
* Get name of active template
* @return string
*/
function get_active_template_name() {
$active = get_active_template();
return get_template_name( $active );
}
function can_change_template() {
$is_allowed = ALLOW_STYLE_SELECT;
if ( !$is_allowed or !has_access('admin_access') ) {
return false;
}
return true;
}
?>