Code Search for Developers
 
 
  

ul.php from guliverkli at Krugle


Show ul.php syntax highlighted

<?php

session_start();

require '../include/MySmarty.class.php';
require '../include/DataBase.php';
require '../include/isolang.inc';
require '../include/imdb.php';

//

$maxtitles = 4;
$maxsubs = 8;

//

if(isset($_GET['clearimdb']))
{
	unset($_SESSION['imdb_id']);
	unset($_SESSION['imdb_titles']);
	RedirAndExit($_SERVER['PHP_SELF']);
}

if(!empty($_GET))
{
	session_unset();
	$_SESSION['POST'] = $_GET;
	
	$_SESSION['file'] = array();
	for($i = 0; !empty($_GET['name'][$i]) 
		&& !empty($_GET['hash'][$i]) && ereg('[0-9a-fA-F]{16}', $_GET['hash'][$i]) 
		&& !empty($_GET['size'][$i]) && ereg('[0-9a-fA-F]{16}', $_GET['size'][$i]);
		$i++)
	{
		$file['name'] = $_GET['name'][$i];
		$file['hash'] = $_GET['hash'][$i];
		$file['size'] = $_GET['size'][$i];
		sscanf($_GET['size'][$i], "%x", $file['intsize']);
		$_SESSION['file'][$i+1] = $file;
		
		if(!isset($_SESSION['POST']['guessedtitle']))
			$_SESSION['POST']['guessedtitle'] = $file['name'];
	
		// TODO: search imdb on name || size || hash -> imdb
	}
		
	global $maxsubs;
	for($i = 0; $i < $maxsubs; $i++)
		$_SESSION['POST']['file_sel'][$i] = $i < count($_SESSION['file']) ? $i+1 : 0;
	
	RedirAndExit($_SERVER['PHP_SELF']);
}

//

function mergeTitles($a, $b)
{
	$ret = array();
	foreach(array_merge($a, $b) as $title)
	{
		$skip = false;
		foreach($ret as $i => $title0)
		{
			if(stristr($title, $title0) !== false) {$ret[$i] = $title; $skip = true;}
			else if(stristr($title0, $title) !== false) $skip = true;
		}
		if(!$skip) $ret[] = $title;
	}
	return $ret;
}

if(isset($_POST['update']) || isset($_POST['submit']))
{
	$_SESSION['POST'] = $_POST;
	
	// validation

	unset($_SESSION['err']);
	
	$titles = array();
	for($i = 0; $i < $maxtitles; $i++)
		if($title = trim(strip_tags(getParam('title', $i))))
			$titles[] = $title;
	$imdb_url = trim(getParam('imdb_url'));
	$nick = strip_tags(getParam('nick'));
	$email = strip_tags(getParam('email'));

	if(!empty($imdb_url))
	{
		$imdb_titles = array();
		
		if(eregi('/title/tt([0-9]+)', $imdb_url, $regs))
		{
			$imdb_id = intval($regs[1]);

			if(empty($imdb_titles))
			{
				if(isset($_SESSION['imdb_id']) && $_SESSION['imdb_id'] == $imdb_id)
					$_SESSION['imdb_titles'] = $imdb_titles;
			}

			if(empty($imdb_titles))
			{
				$db->query("select title from title where movie_id in (select id from movie where imdb = $imdb_id)");
				while($row = $db->fetchRow()) $imdb_titles[] = $row['title'];
				$_SESSION['imdb_id'] = $imdb_id;
				$_SESSION['imdb_titles'] = $imdb_titles;
			}

			if(empty($imdb_titles))
			{
				$imdb_titles = getIMDbTitles($imdb_url);
				$_SESSION['imdb_id'] = $imdb_id;
				$_SESSION['imdb_titles'] = $imdb_titles;
				storeMovie($imdb_id, $imdb_titles);
			}
		}

		$titles = mergeTitles($imdb_titles, $titles);

		if(empty($imdb_titles))
			$_SESSION['err']['imdb_url'] = true;
	}
	else
	{
		$imdb_id = 0;
	}
	
	if(empty($titles)) $_SESSION['err']['title'][0] = true;

	$_SESSION['err']['nosub'] = true;

	for($i = 0; $i < $maxsubs; $i++)
	{
		if(empty($_FILES['sub']['tmp_name'][$i])) continue;

		$format_sel = getParam('format_sel', $i);
		$isolang_sel = getParam('isolang_sel', $i);
		$discs = intval(getParam('discs', $i));
		$disc_no = intval(getParam('disc_no', $i));
		$file_sel = intval(getParam('file_sel', $i));
			
		if(empty($format_sel)) $_SESSION['err']['format_sel'][$i] = true;
		if(empty($isolang_sel)) $_SESSION['err']['isolang_sel'][$i] = true;
		if($discs < 1 || $discs > 127 || $disc_no < 1 || $disc_no > 127 || $disc_no > $discs) $_SESSION['err']['disc_no'][$i] = true;
		if(!empty($_SESSION['file']) && empty($_SESSION['file'][$file_sel])) $_SESSION['err']['file_sel'][$i] = true;
	
		if(!isset($_SESSION['err']['format_sel'][$i])
		&& !isset($_SESSION['err']['isolang_sel'][$i])
		&& !isset($_SESSION['err']['disc_no'][$i])
		&& !isset($_SESSION['err']['file_sel'][$i]))
		{
			unset($_SESSION['err']['nosub']);
		}	
	}

	if(!empty($_SESSION['err']) || isset($_POST['update']))
	{
		RedirAndExit($_SERVER['PHP_SELF']);
	}

	//
	
	$db->begin();

	$movie_id = storeMovie($imdb_id, $titles);
	$files = array();
	
	for($i = 0; $i < $maxsubs; $i++)
	{
		if(empty($_FILES['sub']['tmp_name'][$i])) continue;
		
		$sub = @file_get_contents($_FILES['sub']['tmp_name'][$i]);
		$db_sub = addslashes(gzcompress($sub, 9));
		$db_name = addslashes(basename(stripslashes($_FILES['sub']['name'][$i])));
		$db_hash = md5($sub);
		$db_mime = addslashes($_FILES['sub']['type'][$i]);
		$format_sel = getParam('format_sel', $i); // TODO: verify this
		$isolang_sel = getParam('isolang_sel', $i); // TODO: verify this
		$discs = intval(getParam('discs', $i));
		$disc_no = intval(getParam('disc_no', $i));
		$file_sel = intval(getParam('file_sel', $i));
		$db_notes = addslashes(strip_tags(getParam('notes', $i)));

		$db->query("select id from subtitle where hash = '$db_hash'");

		if($row = $db->fetchRow())
		{
			$subtitle_id = $row[0];
		}
		else
		{
			$db->query(
				"insert into subtitle (discs, disc_no, sub, hash, mime) ".
				"values ($discs, $disc_no, '$db_sub', '$db_hash', '$db_mime')");
				
			$subtitle_id = $db->fetchLastInsertId();
		}

		chkerr();

		if($db->count("movie_subtitle where movie_id = $movie_id && subtitle_id = $subtitle_id") == 0)
			$db->query(
				"insert into movie_subtitle (movie_id, subtitle_id, name, userid, date, notes, format, iso639_2) ".
				"values($movie_id, $subtitle_id, '$db_name', {$db->userid}, NOW(), '$db_notes', '$format_sel', '$isolang_sel') ");

		chkerr();
		
		if(isset($_SESSION['file'][$file_sel]))
		{
			$file = $_SESSION['file'][$file_sel];
			
			$hash = $file['hash'];
			$size = $file['size'];

			$db->query("select * from file where hash = '$hash' && size = '$size'");
			if($row = $db->fetchRow()) $file_id = $row['id'];
			else {$db->query("insert into file (hash, size) values ('$hash', '$size')"); $file_id = $db->fetchLastInsertId();}
			
			chkerr();

			if($db->count("file_subtitle where file_id = $file_id && subtitle_id = $subtitle_id") == 0)
				$db->query("insert into file_subtitle (file_id, subtitle_id) values($file_id, $subtitle_id)");
	
			chkerr();
			
			$files[] = $_SESSION['file'][$file_sel];
		}
	}
	
	if(!empty($email) && !empty($nick))
	{
		$db->query("update subtitle set nick = '$db_nick' where email = '$db_email'");
	}
	
	$redir = 'index.php?text='.urlencode($titles[0]);
	
	if(!empty($files))
	{
		$args = array();
		foreach($files as $i => $file)
			foreach($file as $param => $value)
				$args[] .= "{$param}[$i]=".urlencode($value);
		$redir = 'index.php?'.implode('&', $args);
	}

	// TODO: move all these under one struct
	unset($_SESSION['POST']);
	unset($_SESSION['file']);
	unset($_SESSION['imdb_id']);
	unset($_SESSION['imdb_titles']);	

	$db->commit();
	
	RedirAndExit($redir);
}

// subs

$subs = array();
for($i = 0; $i < $maxsubs; $i++) $subs[] = $i;
$smarty->assign('subs', $subs);

function assign($param, $limit = 0)
{
	global $smarty;
	
	if($limit > 0)
	{
		$tmp = array();
		for($i = 0; $i < $limit; $i++) $tmp[$i] = getParam($param, $i);
		$smarty->assign($param, $tmp);
	}
	else
	{
		$smarty->assign($param, $tmp = getParam($param));
	}

	return $tmp;
}

function assign_cookie($param)
{
	global $smarty;
	$value = getParam($param);
	if($value !== false) setcookie($param, $value, time()+60*60*24*30, '/');
	$smarty->assign($param, $value);
	return $value;
}

// titles, imdb

assign('title', $maxtitles);
assign('guessedtitle');
assign('imdb_url');

if(isset($_SESSION['imdb_id']) && !empty($_SESSION['imdb_titles']))
{
	$smarty->assign('imdb_id', $_SESSION['imdb_id']);
	$smarty->assign('imdb_titles', $_SESSION['imdb_titles']);
}

// subs

$smarty->assign('isolang', $isolang);
assign('isolang_sel', $maxsubs);
$smarty->assign('format', $db->enumsetValues('movie_subtitle', 'format'));
assign('format_sel', $maxsubs);
assign('discs', $maxsubs);
assign('disc_no', $maxsubs);
$smarty->assign('file', !empty($_SESSION['file']) ? $_SESSION['file'] : false);
assign('file_sel', $maxsubs);
assign('notes', $maxsubs);

// err

if(isset($_SESSION['err'])) 
	$smarty->assign('err', $_SESSION['err']);

//

$smarty->display('main.tpl');

?>



See more files for this project here

guliverkli

Home of VobSub, Media Player Classic (MPC) and other misc utils.

Project homepage: http://sourceforge.net/projects/guliverkli
Programming language(s): C,C++,PHP
License: other

  css/
    default.css
    flip.css
  img/
    bluehdrbig.gif
    bluehdrmid.gif
    bluehdrsmall.gif
    del.gif
    note.png
    redhdrbig.gif
    redhdrmid.gif
    redhdrsmall.gif
    video.gif
  script/
    flip.js
    overlib.js
    overlib_mini.js
  converter.php
  dl.php
  index.php
  mirrors.php
  signin.php
  signout.php
  test.php
  ul.php