KLanding/movielib/function.php
2015-12-12 10:00:06 +00:00

780 lines
28 KiB
PHP

<?PHP
/* #########
* # CLASS #
*/#########
class Teamplate {
function __construct($file, $setting, $lang) {
$this->file = 'templates/' . $setting['theme'] . '/' . $file;
$this->set = $setting;
$this->lang = $lang;
$this->tpl = array();
$this->show = array();
}
function tpl($title, $val) {
$this->tpl[$title] = $val;
}
function show($title, $val) {
$this->show[$title] = $val;
}
function init() {
$cont = file_get_contents($this->file);
foreach ($this->tpl as $key => $val) {
$cont = str_replace('{' . $key . '}', $val, $cont);
}
foreach ($this->lang as $key => $val) {
$cont = str_replace('{LANG.' . $key . '}', $val, $cont);
}
foreach ($this->set as $key => $val) {
$cont = str_replace('{SET.' . $key . '}', $val, $cont);
}
foreach ($this->show as $key => $val) {
if ($val == 0) {
$cont = preg_replace('|{SHOW\.' . $key . '}.*?{/SHOW\.' . $key . '}|s', '', $cont);
}
}
$cont = preg_replace('|{.?SHOW\.[^}]+}|s', '', $cont);
return $cont;
}
}
/* #############
* # FUNCTIONS #
*/#############
/* ###############
* # MYSQL query #
*/###############
function mysql_q($query) {
$time = microtime(true);
$result = mysql_query($query);
if (!$result) {
echo $query . '<br>';
die ('ERROR: MySQL - ' . mysql_error());
} else {
if (isset($_GET['debug'])) {
echo $query . ' - ' . (microtime(true) - $time) . '<br>';
}
return $result;
}
}
/* ########################
* # Connect to databaase #
*/########################
function connect($mysql_ml) {
$conn_ml = @mysql_connect($mysql_ml[0] . ':' . $mysql_ml[1], $mysql_ml[2], $mysql_ml[3]);
if (!$conn_ml) {
die(mysql_error());
}
$sel_ml = @mysql_select_db($mysql_ml[4]);
if (!$sel_ml) {
die(mysql_error());
}
// Sets utf8 connections
mysql_q('SET CHARACTER SET utf8');
mysql_q('SET NAMES utf8');
}
/* ##############################
* # Get settings from database #
*/##############################
function get_settings() {
// if settings in session not exists get it from database
if (!isset($_SESSION) or count($_SESSION) < 10) {
$set_sql = 'SELECT * FROM `config`';
$set_res = mysql_q($set_sql);
$get_set = mysql_fetch_assoc($set_res);
foreach($get_set as $key => $val) {
$_SESSION[$key] = $val;
}
}
return $_SESSION;
}
/* ###########################
* # Create and check tables #
*/###########################
function create_table($mysql_tables, $mysql_indexes, $lang, $version, $drop) {
// drop tables
if ($drop == 1) {
foreach ($mysql_tables as $table => $table_val) {
$drop_table_sql = 'DROP TABLE IF EXISTS `' . $table . '`';
$drop_table_res = mysql_q($drop_table_sql);
}
}
$tables_array = array();
$tables_sql = 'SHOW TABLES';
$tables_result = mysql_q($tables_sql);
while ($tables_db = mysql_fetch_array($tables_result)) {
$tables_array[] = $tables_db[0];
}
// all tables
foreach ($mysql_tables as $table => $table_val) {
if (!in_array($table, $tables_array)) {
$create_sql_array = array();
foreach($table_val as $key => $val) {
$create_sql_array[] = '`' . $key . '` ' . $val;
}
$create_sql = 'CREATE TABLE IF NOT EXISTS `' . $table . '` (' . implode(', ', $create_sql_array) . ') DEFAULT CHARSET=utf8';
$create_res = mysql_q($create_sql);
}
}
// insert config
$sel = 'SELECT * FROM config';
$res = mysql_q($sel);
if (mysql_num_rows($res) == 0) {
$insert_config_sql = 'INSERT INTO `config` () VALUES ()';
$insert_config_res = mysql_q($insert_config_sql);
}
// insert users
$sel = 'SELECT * FROM users';
$res = mysql_q($sel);
if (mysql_num_rows($res) == 0) {
$insert_users_sql = 'INSERT INTO `users` (`id`, `login`, `password`) VALUES (1, "admin", "21232f297a57a5a743894a0e4a801fc3"), (2, "user", "ee11cbb19052e40b07aac0ca060c23ee")';
$insert_users_res = mysql_q($insert_users_sql);
}
// insert hash
$sel = 'SELECT * FROM hash';
$res = mysql_q($sel);
if (mysql_num_rows($res) == 0) {
$insert_hash_sql = 'INSERT INTO `hash` () VALUES ()';
$insert_hash_res = mysql_q ($insert_hash_sql);
}
// check columns
$columns_db_array = array();
foreach ($mysql_tables as $table => $table_val) {
$columns_sql = 'SHOW COLUMNS FROM `' . $table . '`';
$columns_result = mysql_q($columns_sql);
while($columns = mysql_fetch_assoc($columns_result)) {
$columns_db_array[$table][] = $columns['Field'];
}
}
foreach ($mysql_tables as $table => $tables_val) {
$alter = array();
foreach($tables_val as $col_key => $col_type) {
if (!in_array($col_key, $columns_db_array[$table])) {
$alter[] = 'ADD `' . $col_key . '` ' . $col_type;
} else {
if ($col_key !== 'id') {
$alter[] = 'CHANGE `' . $col_key . '` `' . $col_key . '` ' . $col_type;
}
}
}
foreach ($columns_db_array[$table] as $col) {
if (!array_key_exists($col, $mysql_tables[$table])) {
$alter[] = 'DROP COLUMN `' . $col . '`';
}
}
$alter_sql = 'ALTER TABLE `' . $table . '` ' . implode(', ', $alter);
mysql_q($alter_sql);
}
// check indexes
$index_db_array = array();
foreach ($mysql_indexes as $table => $index_val) {
$index_sql = 'SHOW INDEX FROM `' . $table . '`';
$index_res = mysql_q($index_sql);
while($index = mysql_fetch_assoc($index_res)) {
if ($index['Key_name'] !== 'PRIMARY') {
$index_db_array[$table][] = $index['Key_name'];
}
}
}
foreach ($mysql_indexes as $table => $index_val) {
if (in_array($table, array_keys($index_db_array))) {
foreach (array_unique($index_db_array[$table]) as $index) {
$alter_sql = 'DROP INDEX `' . $index . '` ON `' . $table . '`';
mysql_q($alter_sql);
}
}
foreach($index_val as $index_name) {
$alter_sql = 'CREATE INDEX `' . $index_name . '` ON `' . $table . '` (`' . substr($index_name, 3) . '`)';
mysql_q($alter_sql);
}
}
// update version
$update_v_sql = 'UPDATE `config` SET `version` = "' . $version . '" WHERE `version` LIKE "%"';
mysql_q($update_v_sql);
$output_create_table = $lang['a_tables_updated'] . '<br>';
return $output_create_table;
}
/* #############################
* # SYNC - show video from db #
*/#############################
function show($cols, $table) {
$show_sql = 'SELECT `' . implode('`, `', $cols) . '` FROM `' . $table . '`';
$show_result = mysql_q($show_sql);
$output = array();
while ($d = mysql_fetch_row($show_result)) {
$output[$d[0]] = $d[1];
}
if (count($output) > 0) {
echo json_encode($output);
} else {
echo '{}';
}
}
/* ######################
* # SYNC - show images #
*/######################
function show_images() {
$types = array(
'movies' => array(
'poster' => '^movies_([0-9]+)\.jpg$',
'fanart' => '^movies_([0-9]+)_f\.jpg$',
'exthumb' => '^movies_([0-9]+)_t([0-9])\.jpg$'
),
'tvshows' => array(
'poster' => '^tvshows_([0-9]+)\.jpg$',
'fanart' => '^tvshows_([0-9]+)_f\.jpg$',
'exthumb' => '^tvshows_([0-9]+)_t([0-9])\.jpg$'
),
'episodes' => array(
'poster' => '^episodes_([0-9]+)\.jpg$'
),
'actors' => array(
'thumb' => '^([^_]{10})\.jpg$'
)
);
$files = scandir('cache');
$files_a = scandir('cache/actors');
$output = array(
'movies' => array('poster' => array(), 'fanart' => array(), 'exthumb' => array()),
'tvshows' => array('poster' => array(), 'fanart' => array(), 'exthumb' => array()),
'episodes' => array('poster' => array()),
'actors' => array('thumb' => array())
);
foreach ($types as $type => $img_type) {
$thumb_temp = array();
foreach ($img_type as $img => $regexp) {
if ($type == 'actors') {
foreach ($files_a as $file) {
preg_match('|' . $regexp . '|', $file, $match);
if (count($match) > 1) {
$output[$type][$img][] = $match[1];
}
}
} else {
foreach ($files as $file) {
preg_match('|' . $regexp . '|', $file, $match);
if (count($match) > 1) {
if ($img == 'exthumb') {
$output[$type]['exthumb'][] = $match[1] . '_t' . $match[2];
} else {
$output[$type][$img][] = (int)$match[1];
}
}
}
}
}
}
if (count($output) > 0) {
echo json_encode($output);
} else {
echo '{}';
}
}
/* #####################
* # SYNC - add images #
*/#####################
function add_images($data) {
// create img
$name = $data['name'];
$img_thumb = base64_decode($data['img']);
if (!file_exists('cache/' . $name) && $img_thumb !== '') {
$fp = fopen('cache/' . $name, 'wb');
fwrite($fp, $img_thumb);
fclose($fp);
if (preg_match('|^([^_]+_[0-9]+_t[0-9]).jpg|', $name, $t)) {
gd_convert('cache/' . $t[1] . 'm.jpg', 'cache/' . $name, 100, 54);
}
}
}
/* #######################
* # SYNC - remove images #
*/########################
function remove_images($data) {
foreach ($data as $name) {
if (file_exists('cache/' . $name)) {
unlink('cache/' . $name);
}
}
reset_hash();
}
/* ##########################
* # SYNC - add Video to DB #
*/##########################
function sync_add($mysql_tables) {
$insert_array = array();
// add actors, genres, countries
$panels = array('actor', 'genre', 'country', 'studio', 'director', 'stream');
foreach ($panels as $panel) {
if (isset($_POST[$panel])) {
$values = array();
foreach ($_POST[$panel] as $key => $val) {
// add stream
if ($panel == 'stream') {
$cols = array_keys($mysql_tables['movies_stream']);
$str = explode(';', $val);
foreach ($str as $k => $s) {
if (substr($mysql_tables['movies_stream'][$cols[$k+1]], 0, 3) == 'int') {
$str[$k] = ($s == '' ? 'NULL' : $s);
} else {
$str[$k] = '"' . $s . '"';
}
}
$values[] = '("' . $_POST['id'] . '", ' . implode(', ', $str) . ')';
} else {
// check if panel exist
$sql_id = 'SELECT `id` FROM `' . $panel . '` WHERE `' . $panel . '` = "' . add_slash($val) . '"';
$res_id = mysql_q($sql_id);
if (!mysql_num_rows($res_id)) {
$sql_ins = 'INSERT INTO `' . $panel . '` (`' . $panel . '`) VALUES ("' . add_slash($val) . '")';
mysql_q($sql_ins);
$id = mysql_insert_id();
}
else {
$row = mysql_fetch_assoc($res_id);
$id = $row['id'];
}
// add panels info
if($panel == 'actor') {
$cols = array('id', $panel . 'id', 'order');
$values[] = '("' . $_POST['id'] . '", "' . $id . '", "' . $key . '")';
} else {
$cols = array('id', $panel . 'id');
$values[] = '("' . $_POST['id'] . '", "' . $id . '")';
}
}
}
$insert_sql = 'INSERT INTO `' . $_POST['table'] . '_' . $panel . '` (`' . implode('`, `', $cols) . '`) VALUES ' . implode(', ', $values);
$result = mysql_q($insert_sql);
unset($_POST[$panel]);
}
}
# insert values
foreach($mysql_tables[$_POST['table']] as $key => $val) {
if (isset($_POST[$key]) && strlen($_POST[$key]) > 0) {
if (substr($val, 0, 3) == 'int' or substr($val, 0, 5) == 'float') {
$insert_array['`' . $key . '`'] = add_slash($_POST[$key]);
} else {
$insert_array['`' . $key . '`'] = '"' . add_slash($_POST[$key]) . '"';
}
}
}
$insert_sql = 'INSERT INTO `' . $_POST['table'] . '` (' . implode(', ', array_keys($insert_array)) . ') VALUES (' . implode(', ', $insert_array) . ')';
$insert = mysql_q($insert_sql);
}
/* ###############################
* # SYNC - delete Video from DB #
*/###############################
function sync_delete($id, $table) {
$del_array = array($table);
if ($table == 'movies') {
array_push($del_array, $table . '_actor', $table . '_genre', $table . '_country', $table . '_studio', $table . '_director', $table . '_stream');
}
if ($table == 'tvshows') {
array_push($del_array, $table . '_actor', $table . '_genre');
}
if ($table == 'episodes') {
array_push($del_array, $table . '_stream');
}
foreach ($del_array as $t) {
$delete_sql = 'DELETE FROM `' . $t . '` WHERE `id` IN ("' . implode('", "', $id) . '")';
$delete = mysql_q($delete_sql);
}
# delete images
$files_to_remove = array();
$files = scandir('cache/');
foreach ($id as $i) {
foreach($files as $file) {
$match = preg_match('/^' . $table . '_' . $i . '[_\.]/', $file);
if ($match == 1) {
$files_to_remove[] = $file;
}
}
}
remove_images($files_to_remove);
}
/* ##################
* # Clean database #
*/##################
function clean_db() {
$clean_array = array('movies_actor', 'movies_country', 'movies_director', 'movies_genre', 'movies_studio', 'movies_stream', 'tvshows_actor', 'tvshows_genre', 'episodes_stream');
foreach ($clean_array as $table) {
$split = explode('_', $table);
$video = $split[0];
$panel = $split[1];
# delete from video_panel not existing id in movies or tvshow table
$clean_sql = 'DELETE FROM `' . $table . '` WHERE `id` NOT IN (SELECT `' . $video . '`.`id` FROM `' . $video . '`)';
mysql_q($clean_sql);
# delete from video_panel not existing id in panel table
if ($panel != 'stream') {
$clean_sql = 'DELETE FROM `' . $table . '` WHERE `' . $panel . 'id` NOT IN (SELECT `' . $panel . '`.`id` FROM `' . $panel . '`)';
mysql_q($clean_sql);
}
# delete from panel not existing id in video_panel table
if ($video == 'movies' && $panel != 'stream') {
$clean_sql = 'DELETE FROM `' . $panel . '` WHERE `id` NOT IN (SELECT `movies_' . $panel . '`.`' . $panel . 'id` FROM `movies_' . $panel . '`)';
if ($panel == 'actor' or $panel == 'genre') {
$clean_sql.= ' AND `id` NOT IN (SELECT `tvshows_' . $panel . '`.`' . $panel . 'id` FROM `tvshows_' . $panel . '`)';
}
mysql_q($clean_sql);
}
}
}
/* ##############
* # Reset hash #
*/##############
function reset_hash() {
$reset_sql = 'UPDATE `hash` SET `movies` = "", `tvshows` = "", `episodes` = "", `images` = ""';
mysql_q($reset_sql);
}
/* ################
* # Change Token #
*/################
function change_token() {
$array = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',0,1,2,3,4,5,6,7,8,9);
$new_token = '';
for ($i = 1; $i <= 6; $i++) {
$new_token.= $array[array_rand($array)];
}
$update_sql = 'UPDATE `config` SET `token` = "' . $new_token . '"';
$update = mysql_q($update_sql);
$_SESSION['token'] = $new_token;
return $new_token;
}
/* #################
* # GD conversion #
*/#################
function gd_convert($cache_path, $img_link, $new_width, $new_height) {
if (!file_exists($cache_path) and !empty($img_link)) {
$img = @imagecreatefromjpeg($img_link);
if (!$img) {
$curl_opt = array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true
);
$c = curl_init($img_link);
curl_setopt_array($c, $curl_opt);
curl_exec($c);
$redirect = curl_getinfo($c);
curl_close($c);
$img = @imagecreatefromjpeg($redirect['redirect_url']);
}
if ($img) {
$width = imagesx($img);
$height = imagesy($img);
$img_temp = imagecreatetruecolor($new_width, $new_height);
imagecopyresampled($img_temp, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagejpeg($img_temp, $cache_path, 80);
}
}
}
/* ###############
* # ADD SLASHES #
*/###############
function add_slash($string){
if (get_magic_quotes_gpc()) {
return $string;
} else {
return addslashes($string);
}
}
/* ####################
* # ARRAYS FOR PANEL #
*/####################
function panels_array($columns, $table) {
$sep_tab = array('actor', 'genre', 'country', 'studio', 'director');
$panels_array = array();
foreach ($columns as $val) {
if (in_array($val, $sep_tab)) {
$sel = 'SELECT DISTINCT ' . $val . '.id, ' . $val . '.' . $val . ' FROM `' . $val . '`, `' . $table . '_' . $val . '` WHERE ' . $val . '.id=' . $table . '_' . $val . '.' . $val . 'id ORDER BY ' . $val . '.' . $val;
$res = mysql_q($sel);
while ($r = mysql_fetch_assoc($res)) {
$panels_array[$val][$r['id']] = $r[$val];
}
} else {
$sel = 'SELECT DISTINCT `' . $val . '` FROM `' . $table . '` WHERE `hide` = 0 ORDER BY `' . $val . '`';
$res = mysql_q($sel);
if (mysql_num_rows($res) > 0) {
while ($r = mysql_fetch_assoc($res)) {
if ($r[$val] != '') {
$panels_array[$val][] = $r[$val];
}
}
}
}
}
if (isset($panels_array['year'])) { rsort($panels_array['year']); }
return $panels_array;
}
/* ##############
* # CREATE URL #
*/##############
function create_url($setting, $urls) {
if ($setting['mod_rewrite'] == 1 && array_key_exists('HTTP_MOD_REWRITE', $_SERVER)) {
$index = 'index,';
$p = '-';
$c = ',';
$end = '.html';
} else {
$index = 'index.php?';
$p = '=';
$c = '&';
$end = '';
}
$pair = array();
foreach ($urls as $k => $v) {
if (strlen($v) > 0) {
$pair[] = $k . $p . $v;
}
}
return $index . implode($c, $pair) . $end;
}
/* ######################
* # AUTO CONFIG REMOTE #
*/######################
function auto_conf_remote($s) {
$ip = $_SERVER['REMOTE_ADDR'];
$xbmc_update_sql = 'UPDATE `config` SET
`xbmc_host` = "' . $ip . '",
`xbmc_port` = "' . $s['webserverport'] . '",
`xbmc_login` = "' . $s['webserverusername'] . '",
`xbmc_pass` = "' . $s['webserverpassword'] . '"';
mysql_q($xbmc_update_sql);
$_SESSION = array();
}
/* #################
* # CREATE BANNER #
*/#################
function create_banner($lang, $file, $data) {
$movie_sql = 'SELECT `id`, `title`, `originaltitle`, `rating`, `runtime`, `year`, `last_played` FROM `movies` ORDER BY `last_played` DESC LIMIT 0, 1';
$movie_result = mysql_q($movie_sql);
$movie = mysql_fetch_assoc($movie_result);
$episode_sql = 'SELECT `episode`, `season`, `tvshow`, `title`, `last_played` FROM `episodes` ORDER BY `last_played` DESC LIMIT 0, 1';
$episode_result = mysql_q($episode_sql);
$episode = mysql_fetch_assoc($episode_result);
$episode['e_title'] = $episode['title'];
unset($episode['title']);
if (isset($episode['last_played']) && $episode['last_played'] > $movie['last_played']) {
$tvshow_sql = 'SELECT `id`, `title`, `originaltitle`, `rating`, `last_played` FROM `tvshows` WHERE `id` = ' . $episode['tvshow'];
$tvshow_result = mysql_q($tvshow_sql);
$tvshow = mysql_fetch_assoc($tvshow_result);
$ban = array_merge($tvshow, $episode);
$table = 'tvshows';
$panels_array = array('genre');
} else {
$ban = $movie;
$table = 'movies';
$panels_array = array('genre', 'country');
}
if(isset($ban['id'])) {
foreach ($panels_array as $val) {
$sel_sql = 'SELECT ' . $val . '.' . $val . ' FROM ' . $val . ', ' . $table . '_' . $val . ' WHERE ' . $val . '.id = ' . $table . '_' . $val . '.' . $val . 'id AND ' . $table . '_' . $val . '.id = "' . $ban['id'] . '"';
$sel_res = mysql_q($sel_sql);
$out = array();
while ($s = mysql_fetch_row($sel_res)) {
$out[] = $s[0];
}
$ban[$val] = implode(' / ', $out);
}
}
$b = array();
$b['w'] = 400; // banner width
$b['h'] = 70; // banner height
$b['bg_c'] = '141414'; // background color
$b['lw_c'] = 'FFFFFF'; // last watched color
$b['lw_s'] = 10; // last watched font size
$b['lw_x'] = 130; // last watched pos. x
$b['lw_y'] = 20; // last watched pos. y
$b['t_c'] = 'FFFFFF'; // title color
$b['t_s'] = 8; // title font size
$b['t_x'] = 136; // title pos. x
$b['t_y'] = 36; // title pos. y
$b['o_c'] = 'AAAAAA'; // title color
$b['o_s'] = 8; // title font size
$b['o_x'] = 136; // title pos. x
$b['o_y'] = 51; // title pos. y
$b['i_c'] = '808080'; // info color
$b['i_s'] = 6; // info font size
$b['i_x'] = 130; // info pos. x
$b['i_y'] = 63; // info pos. y
$b['st_c'] = '000000'; // stroke color
$b['b_c'] = 'FFFFFF'; // border color
if ($data !== '0') {
$banner_array = explode(';', $data);
$banner = array();
foreach ($banner_array as $val) {
$i = explode(':', $val);
$banner[$i[0]] = $i[1];
}
$b = $banner;
}
$bg_c = hex2rgb($b['bg_c']);
$lw_c = hex2rgb($b['lw_c']);
$t_c = hex2rgb($b['t_c']);
$o_c = hex2rgb($b['o_c']);
$i_c = hex2rgb($b['i_c']);
$st_c = hex2rgb($b['st_c']);
$b_c = hex2rgb($b['b_c']);
$font = 'admin/css/font/archivonarrow.ttf';
// background
$banner = imagecreatetruecolor($b['w'], $b['h']);
$bg_color = imagecolorallocate($banner, $bg_c['r'], $bg_c['g'], $bg_c['b']);
imagefill($banner, 0, 0, $bg_color);
// get poster and copy
if (file_exists('cache/' . $table . '_' . $ban['id'] . '_f.jpg')) {
$post = imagecreatefromjpeg('cache/' . $table . '_' . $ban['id'] . '_f.jpg');
} elseif (file_exists('cache/' . $table . '_' . $ban['id'] . '.jpg')) {
$post = imagecreatefromjpeg('cache/' . $table . '_' . $ban['id'] . '.jpg');
} else {
$post = imagecreatefromjpeg('templates/default/img/d_poster.jpg');
}
$width = imagesx($post);
$height = imagesy($post);
$new_height = $b['h'];
$new_width = $width / ($height / $new_height);
imagecopyresampled($banner, $post, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
// add gradient
$width = $b['h'];
$gradient = imagecreatetruecolor($width, $b['h']);
$gradient_color = imagecolorallocatealpha($gradient, $bg_c['r'], $bg_c['g'], $bg_c['b'], 127);
imagefill($gradient, 0, 0, $gradient_color);
for ($x=0; $x < $width; ++$x) {
$alpha = 127 - $x*(127/$width);
$gradient_color = imagecolorallocatealpha($gradient, $bg_c['r'], $bg_c['g'], $bg_c['b'], $alpha);
imageline($gradient, $x, 0, $x, $b['h'], $gradient_color);
}
imagecopyresampled($banner, $gradient, $new_width-$width, 0, 0, 0, $width, $b['h'], $width, $b['h']);
// add text
$last_watched_color = imagecolorallocate($banner, $lw_c['r'], $lw_c['g'], $lw_c['b']);
$title_color = imagecolorallocate($banner, $t_c['r'], $t_c['g'], $t_c['b']);
$o_title_color = imagecolorallocate($banner, $o_c['r'], $o_c['g'], $o_c['b']);
$info_color = imagecolorallocate($banner, $i_c['r'], $i_c['g'], $i_c['b']);
$stroke_color = imagecolorallocate($banner, $st_c['r'], $st_c['g'], $st_c['b']);
imagettfstroketext($banner, $b['lw_s'], 0, $b['lw_x'], $b['lw_y'], $last_watched_color, $stroke_color, $font, $lang['i_last_played'], 1);
imagettfstroketext($banner, $b['t_s'], 0, $b['t_x'], $b['t_y'], $title_color, $stroke_color, $font,
(isset($ban['title']) ? $ban['title'] : '') .
(isset($ban['season']) ? ' - ' . $ban['season'] . 'x' : '') .
(isset($ban['episode']) ? $ban['episode'] . ' ' : '') .
(isset($ban['e_title']) ? $ban['e_title'] : '')
, 1);
imagettfstroketext($banner, $b['o_s'], 0, $b['o_x'], $b['o_y'], $o_title_color, $stroke_color, $font, (isset($ban['originaltitle']) ? $ban['originaltitle'] : ''), 1);
imagettfstroketext($banner, $b['i_s'], 0, $b['i_x'], $b['i_y'], $info_color, $stroke_color, $font,
(isset($ban['year']) ? $ban['year'] : '') . ' | ' .
(isset($ban['rating']) ? $ban['rating'] : '') . ' | ' .
(isset($ban['runtime']) ? $ban['runtime'] . ' ' . $lang['i_minute'] : '') . ' | ' .
(isset($ban['genre']) ? $ban['genre'] : '') . ' | ' .
(isset($ban['country']) ? $ban['country'] : '')
, 1);
// icon
$icon = imagecreatefrompng('admin/img/' . $table . '.png');
imagecopy($banner, $icon, $b['w']-26, 6, 0, 0, 18, 18);
// border
$border_color = imagecolorallocate($banner, $b_c['r'], $b_c['g'], $b_c['b']);
imageline($banner, 0, 0, $b['w']-1, 0, $border_color);
imageline($banner, $b['w']-1, 0, $b['w']-1, $b['h']-1, $border_color);
imageline($banner, 0, $b['h']-1, $b['w']-1, $b['h']-1, $border_color);
imageline($banner, 0, 0, 0, $b['h']-1, $border_color);
// save as file
imagejpeg($banner, 'cache/' . $file, 100);
return $b;
}
/* ################
* # BANNER 2 STR #
*/################
function banner2str($array) {
$banner = '';
foreach ($array as $key => $val) {
$banner.= $key . ':' . strtoupper($val) . ';';
}
return substr($banner, 0, -1);
}
/* #############
* # HEX 2 RGB #
*/#############
function hex2rgb($hex) {
$match = preg_match('/^[0-9abcdefABCDEF]{6}$/', $hex);
if ($match == true) {
$rgb = str_split($hex, 2);
$rgb = array('r' => hexdec($rgb[0]), 'g' => hexdec($rgb[1]), 'b' => hexdec($rgb[2]));
return $rgb;
} else {
return False;
}
}
/* ##########################
* # STROKE FOR BANNER TEXT #
*/##########################
function imagettfstroketext(&$image, $size, $angle, $x, $y, &$textcolor, &$strokecolor, $fontfile, $text, $px) {
for($c1 = ($x-abs($px)); $c1 <= ($x+abs($px)); $c1++)
for($c2 = ($y-abs($px)); $c2 <= ($y+abs($px)); $c2++)
$banner = imagettftext($image, $size, $angle, $c1, $c2, $strokecolor, $fontfile, $text);
return imagettftext($image, $size, $angle, $x, $y, $textcolor, $fontfile, $text);
}
/* #################
* # ADD 0 TO LEFT #
*/#################
function zero($dig) {
return str_pad($dig, 2, 0, STR_PAD_LEFT);
}
/* #################
* # LANGUAGE FLAG #
*/#################
function check_flag($f, $iso_lang) {
foreach ($iso_lang as $k => $v) {
if (in_array($f, $v)) {
return $k;
}
}
}
?>