|
// +----------------------------------------------------------------------+
//
// $Id: class.hw_vgal.php,v 1.00 2005/01/25 21:27:16 mansion Exp $
/**
* hw_vgal
*
* This class allows for building an Gallery from given Folder.
* The class is highly customizable by an Array of common Parameters
* The HTML Output is not yet based on Templates
*
* @author Marian Feiler
* @package hw_vgal
*/
class portrait{
/* PageIteraor */
/**
* Standard PageNumber
* Ex: 1 or 5
* @var int
*/
var $pageNo = 1;
/**
* Standard Folders per Page
* Ex: 5 or 10
* @var int
*/
var $perPage = 1;
/**
* Maximum Pagenumbers to display
* Ex: 5 or 10
* @var int
*/
var $pageLinks = 0;
/* POST und GET Daten */
/**
* The fetched Data from the $_GET - Variable
* @var string
*/
var $gdata = array();
/* Verzeichnisse */
/**
* Folder to begin the Search for other Folders with contents
* Ex: ../gallery or gallery
* @var string
*/
var $startverzeichnis = portraitPATH;
/**
* Folders that should not be displayed
* Ex: array("Folder1", "Folder2");
* @var string
*/
var $ausgeschlossene_verzeichnisse = array();
/**
* Max Number of shown Pics per Line
* Ex: 2 or 3
* @var int
*/
var $bilder_in_Zeile = 4;
/**
* Suffix of Picturefiles
* Ex: jpg or png or gif
* @var string
*/
var $bild_endung = "jpg";
/**
* possible suffix for videofiles
* Ex: array("mpg", "wmv", "mpeg");
* @var string
*/
var $video_endungen = array("mpg", "wmv", "mpeg");
/**
* Whether to show empty folders
* Ex: true or false
* @var boolean
*/
var $leere_anzeigen = false;
/**
* Whether to show Debugmessages
* Ex: true or false
* @var boolean
*/
var $debug = false;
/**
* Used for Pagebreak
* @var object
*/
var $paginator;
/**
* Used for Pagebreak
* @var object
*/
var $html;
var $t;
var $admin = 0;
var $g;
var $lang;
var $bereich = "portrait";
/**
* Constructor
* fetches the given Params, the $_GET-Data
* and updates the perPage and pageNo variables
*
* @param array $param Parameter für die Klasse
* $params = array("bild_endung" => "jpg",
* "video_endungen" => array("wmv", "mpeg"),
* "bilder_in_zeile" => 2,
* "leere_anzeigen" => false,
* "pageNo" => 1,
* "perPage" => 5,
* "pageLinks" => 10,
* "startverzeichnis" => "../portrait/",
* "ausgeschlossene_verzeichnisse" => array("Test Galerie 2","Test Galerie 7")
* );
* bild_endung = der Suffix der Bilddateien in den Ordnern
* video_endungen = die erlaubten Videosuffixe als Array
* bilder_in_zeile = Anzahl Bilder einer Zeile bei Galerie eines Ordners
* leere_anzeigen = Leere Ordner anzeigen? Boolsche Werte true und false
* pageNo = Welche Seite soll als erste angezeigt werden? 1 oder 2 oder ?
* perPage = Wieviele Ordner auf einer Seite? 5 oder 10 oder 20 oder ?
* pageLinks = Wieviele Seitenzahlen auf einmal? 5 oder 10 oder ?
* startverzeichnis = in welchem Verzeichnis sind die Ordner?
* ausgeschlossene_verzeichnisse = nicht anzeigen als Array
*
* @access public
* @return bool
*/
function portrait($params = array()){
global $_GET, $_SESS;
foreach($params as $key => $val){
$this->$key = $val;
}
$this->gdata = $_REQUEST;
$this->g = $_REQUEST;
if($this->gdata['perPage'] != "") $this->perPage = $this->gdata['perPage'];
if($this->gdata['pageNo'] != "") $this->pageNo = $this->gdata['pageNo'];
if($this->g[mode] != ""){
$this->save();
}
$this->t = new Template;
if($_SESS[user_name]) $this->admin = 1;
if($this->g['do'] == "delpic"){
$res = @mysql_query("SELECT gal_id FROM portrait_pics WHERE id='".$this->g[pic]."'");
$out = @mysql_fetch_object($res);
@mysql_query("DELETE FROM portrait_pics WHERE id='".$this->g[pic]."'");
@unlink(portraitPATH.$out->gal_id."/".$this->g[id].".jpg");
@unlink(portraitPATH.$out->gal_id."/thumbs/".$this->g[id].".jpg");
@unlink(portraitPATH.$out->gal_id."/mobile/".$this->g[id].".jpg");
}
$this->html = "";
//echo $this->startverzeichnis;
return true;
}
function start(){
global $lplus;
if($this->admin == 1){
$lplus->ub .= "g[catid]."&art=".$this->g[art]."&pljob=editSerie\">neue Bilderserie";
$res = mysql_query("SELECT * FROM portrait_galleries ORDER BY galdate DESC");
$nums = mysql_num_rows($res);
if($nums < 1){
$this->format = 1;
return "Es gibt noch keine Bilderserien.";
}else{
for($i = 0; $i < $nums; $i++){
$out = mysql_fetch_object($res);
$ret .= "g[catid]."&art=".$this->g[art]."&pljob=showPics&serie=".$out->galid."\">".$out->galname_dt." g[catid]."&art=".$this->g[art]."&pljob=editSerie&serie=".$out->galid."\">

";
}
}
return $ret;
$this->t->prepare("portrait_admin.html");
$this->t->set("CONTENT", $ret);
}else{
if($this->g[serie] == ""){
$res = mysql_query("SELECT galid, galname_dt FROM portrait_galleries ORDER BY galdate DESC limit 0,1") or die(mysql_error());
$out = mysql_fetch_object($res);
//echo $out->galid;
$gal = $out->galid;
$res = mysql_query("SELECT id, firstpic, picpos, format FROM portrait_pics WHERE firstpic='yes' AND gal_id='".$out->galid."'") or die(mysql_error());
}else{
$res = mysql_query("SELECT galid, galname_dt FROM portrait_galleries WHERE galid='".$this->g[serie]."' ORDER BY galdate DESC limit 0,1") or die(mysql_error());
$out = mysql_fetch_object($res);
$gal = $out->galid;
if($this->g[pic] != ""){
$res = mysql_query("SELECT id, firstpic, picpos, format FROM portrait_pics WHERE id='".$this->g[pic]."' AND gal_id='".$this->g[serie]."'") or die(mysql_error());
}else{
$res = mysql_query("SELECT id, firstpic, picpos, format FROM portrait_pics WHERE firstpic='yes' AND gal_id='".$this->g[serie]."'") or die(mysql_error());
}
}
$thenav = $this->nav($out->galid);
$out = mysql_fetch_object($res);
//echo $out->id;
if($out->format == "hoch"){
$this->t->prepare("portrait,bild,hoch.html");
}else{
$this->t->prepare("portrait,bild,quer.html");
}
echo $out->id;
$this->t->set("BPIC", "
id.".jpg\">");
if($this->g[pic] != ""){
$res = mysql_query("SELECT id, firstpic, picpos, format FROM portrait_pics WHERE id!='".$this->g[pic]."' AND gal_id='".$this->g[serie]."'") or die(mysql_error());
}else{
$res = mysql_query("SELECT id, firstpic, picpos, format FROM portrait_pics WHERE firstpic!='yes' AND gal_id='".$gal."'") or die(mysql_error());
}
$nums = mysql_num_rows($res);
for($i = 0; $i < 4; $i++){
$out = @mysql_fetch_object($res);
if($out->id != ""){
$ret = "
g[catid]."&art=".$this->g[art]."&serie=".$gal."&pic=".$out->id."';\" title=\"".$out->bild_name."\" align=\"center\" valign=\"middle\" class=\"img\" onmouseover=\"this.id='overIMG'; this.style.cursor='pointer'\" onmouseout=\"this.id='IMG'; this.style.cursor='default'\"> id.".jpg\" title=\"".$out->bildname."\" alt=\"".$out->bildname."\" border=\"0\" /> |
";
//$this->t->set("BILD".($i+1), "g[catid]."&art=".$this->g[art]."&serie=".$gal."&pic=".$out->id."\">
id.".jpg\" border=\"0\">");
$this->t->set("BILD".($i+1), $ret);
}else{
$this->t->set("BILD".($i+1), "
");
}
}
}
$this->t->set("BUTTONS", $thenav);
return $this->t->tpl;
}
function nav($act){
global $front_url, $left_nav_aktiv, $left_nav_passiv, $right_nav_aktiv, $right_nav_passiv, $ueber_nav_aktiv, $ueber_nav_hover, $right_nav_hover, $left_nav_hover;
$navl = new Template;
$res = mysql_query("SELECT galid FROM portrait_galleries ORDER BY galdate DESC");
$nums = mysql_num_rows($res);
for($i = 0; $i < $nums; $i++){
$out = mysql_fetch_object($res);
$id[] = $out->galid;
$out->galid == $act ? $act_i = $i : '';
}
if($act == $id[0]){
$nav[left] = "javascript:void(0);";
$nav[left] = "
";
}else{
$link = "start.php?catid=".$this->g[catid]."&art=".$this->g[art]."&serie=".$id[($act_i-1)];
$nav[left] = "start.php?catid=".$this->g[catid]."&art=".$this->g[art]."&serie=".$id[($act_i-1)];
$nav[left] = "
";
}
if($act == $id[($nums-1)]){
$nav[right] = "javascript:void(0);";
$nav[right] = "
";
}else{
$link = "start.php?catid=".$this->g[catid]."&art=".$this->g[art]."&serie=".$id[($act_i+1)];
$nav[right] = "start.php?catid=".$this->g[catid]."&art=".$this->g[art]."&serie=".$id[($act_i+1)];
$nav[right] = "
";
}
$link = $front_url."?x=bilder";
//$nav[ueber] = "".$bild."";
$nav[ueber] = "";
//echo $nums;
$navi = $this->t;
$navi->prepare("portrait,button,backforward.html");
$navi->set("BACKWARD", $nav[left]);
$navi->set("FORWARD", $nav[right]);
return $navi->tpl;
}
function showPics(){
global $lplus;
$lplus->ub .= "g[art]."&catid=".$this->g[catid]."&serie=".$this->g[serie]."&pljob=newgalpics\">neue Bilder hochladen";
return $this->create_gal($this->g[serie]);
}
function newgalpics(){
if($this->admin == 1 && $this->g[serie] != ""){
$this->html .= "";
}else{
$this->html = "You are not an Admin of this site!";
}
return $this->html;
}
function editSerie(){
if($this->admin == 1){
if($this->g[serie] == ""){
$this->html .= "";
}else{
$res = mysql_query("SELECT * FROM portrait_galleries WHERE galid='".$this->g[serie]."'");
$out = mysql_fetch_object($res);
$this->html .= "";
}
}
return $this->html;
}
function save(){
if($this->g[mode] == "newgalnamesave"){
$res = mysql_query("INSERT INTO portrait_galleries SET galname_dt='".urldecode(addslashes($this->g[galname_dt]))."', galname_en='".urldecode(addslashes($this->g[galname_en]))."', galname_fr='".urldecode(addslashes($this->g[galname_fr]))."', galdate=now(), cat='".$this->g[catid]."', art='".$this->g[art]."'") or die ( mysql_error() ) ;
}elseif($this->g[mode] == "editgalnamesave"){
$res = mysql_query("UPDATE portrait_galleries SET galname_dt='".urldecode(addslashes($this->g[galname_dt]))."', galname_en='".urldecode(addslashes($this->g[galname_en]))."', galname_fr='".urldecode(addslashes($this->g[galname_fr]))."', galactive='".$this->g[galactive]."', galdate=now() WHERE galid='".$this->g[serie]."'");
}elseif($this->g[mode] == "newgalpicssave"){
require_once("../classes/class.thumbs.php");
if(!file_exists(portraitPATH.$this->g[serie])){
mkdir(portraitPATH.$this->g[serie], 0777);
}
if(!file_exists(portraitPATH.$this->g[serie]."/thumbs")){
mkdir(portraitPATH.$this->g[serie]."/thumbs", 0777);
}
if(!file_exists(portraitPATH.$this->g[serie]."/mobile")){
mkdir(portraitPATH."/".$this->g[serie]."/mobile", 0777);
}
for( $i = 0; $i < count( $_FILES[photo][name] ); $i++ ){
if( $_FILES[photo][name][ $i ] != "" && $_FILES[photo][name][ $i ] != "none"){
if( $_FILES[photo][size][ $i ] > 2048000 ) error( "Invalid image size" );
if( $_FILES[photo][type][ $i ] == "image/pjpeg" || $_FILES[photo][type][ $i ] == "image/jpeg" ){
$newphoto[] = $_FILES[photo][tmp_name][ $i ];
}else{
die( "Invalid image type, JPEG only" );
}
}
}
echo count($newphoto);
for( $i = 0; $i < count( $newphoto ); $i++ ){
//echo $ad_id;
$im = ImageCreateFromJPEG( $newphoto[$i] );
$piW = ImageSX( $im );
$piH = ImageSY( $im );
if($piW > $piH) $format = "quer";
if($piW < $piH) $format = "hoch";
if($piW == $piH) $format = "quer";
mysql_query( "INSERT INTO portrait_pics ( picname, name, vorname, beruf, location, ort, datumzeit, format, gal_id, bereich ) VALUES ( '".$this->g[photoname_dt][$i]."', '".$this->g[name][$i]."', '".$this->g[vorname][$i]."', '".$this->g[beruf][$i]."', '".$this->g[location][$i]."', '".$this->g[ort][$i]."', '".$this->g[datumzeit][$i]."', '".$format."', '".$this->g[serie]."', '".$this->g[bereich][$i]."' )" ) or die("photo insert". mysql_error() );
$photoid = mysql_insert_id();
//copy( $newphoto[ $i ], "tmp/".$photoid.".jpg" );
copy( $newphoto[ $i ], portraitPATH.$this->g[serie]."/mobile/".$photoid.".jpg" );
$imginfo = @getimagesize($newphoto[$i]);
if ($imginfo != NULL){
$breite = $imginfo[0];
$hoehe = $imginfo[1];
}
if($breite >= 500 || $hoehe >= 500){
$tb_gr = new thumbs(500,500, portraitPATH.$this->g[serie]."/mobile/".$photoid.".jpg", portraitPATH.$this->g[serie]."/".$photoid.".jpg");
$tb_gr->create_thumb();
//thumbs::addWatermark(portraitPATH.$this->g[serie]."/".$photoid.".jpg");
}else{
copy( portraitPATH.$this->g[serie]."/mobile/".$photoid.".jpg", portraitPATH.$this->g[serie]."/".$photoid.".jpg" );
//thumbs::addWatermark(portraitPATH.$this->g[serie]."/".$photoid.".jpg");
}
$tb_kl = new thumbs(87,87, portraitPATH.$this->g[serie]."/mobile/".$photoid.".jpg", portraitPATH.$this->g[serie]."/thumbs/".$photoid.".jpg");
$tb_kl->create_thumb();
//copy( $newthumb[ $i ], "../images/thumb/{$photoid}.jpg" );
unlink( $newphoto[ $i ] );
$this->html .= "
Bilder eingetragen
";
}
}elseif($this->g[mode] == "setFirstPic"){
@mysql_query("UPDATE portrait_pics SET firstpic='no' WHERE gal_id='".$this->g[serie]."'");
@mysql_query("UPDATE portrait_pics SET firstpic='yes' WHERE id='".$this->g[pic]."'");
}
return $this->html;
}
/**
* creates the Output
*
* @access public
* @return bool
*/
function _start(){
if($this->admin == 1 && $this->g[mode] == "newgalpics" && $this->g[galid] != ""){
$this->html .= "";
}else{
$data = $this->galnames2array();
//print_r($data);
//echo $this->pageNo;
//echo $this->perPage;
$this->html .= $this->pagit($data, 0);
//echo 'VIDEOCLIPS
';
$this->html .= '';
if($this->admin == 1 && $this->g[mode] != "editgalname"){
$this->html .= "
";
}
while($this->paginator->hasNextElement()){
$ndx = $this->paginator->nextElement();
//echo $ndx;
//echo $this->lang." - ".$data[$ndx]["galname_".$this->lang]."
";
if(!is_file($data[$ndx][ub])){
if($this->admin != 1){
$this->html .= "
 |
| ".$data[$ndx]["galname_".$this->lang]." |
 |
 |
 |
";
}
if($this->admin == 1){
if($this->g[mode] == "editgalname" && $data[$ndx][galid] == $this->g[galid]){
$this->html .= "";
}else{
$this->html .= '
'.$data[$ndx]["galname_".$this->lang].' ';
if($data[$ndx][galactive] == "yes"){
$this->html .= " aktiv ";
}else{
$this->html .= " inaktiv ";
}
$this->html .= '';
$this->html .= "
g[art]."&catid=".$this->g[catid]."&galid=".$data[$ndx][galid]."&mode=newgalpics\">neue Bilder hochladen";
}
}
$this->html .= '';
}
//print_r($this->getfoldercontent($data[$ndx][ub]));
if(is_array($this->getgalcontent($data[$ndx][galid]))){
$this->html .= '';
$this->html .= $this->create_gal($data[$ndx][galid],$this->getgalcontent($data[$ndx][galid]));
$this->html .= '';
}
}
$this->html .= '
';
$this->html .= $this->pagit($data);
}
return true;
}
/**
* Returns HTML
*
* @access public
* @return string
*/
function getHTML(){
echo $this->html;
}
/**
* Creates an Array of Contents of the given Folder
*
* @param string $folder actual Folder to be read in
* @access private
* @return array
*/
function getfoldercontent($folder){
//echo $this->startverzeichnis.$folder;
$handle = opendir($this->startverzeichnis.$folder);
$i = 0;
while($file = readdir($handle)){
if($file != "." && $file != ".."){
$tmp = split("\.", $file);
//echo $tmp[0]." ".$tmp[1];
if($tmp[1] == $this->bild_endung){
$arr[bild_name][] = $tmp[0];
$arr[bild_dateiname][] = $file;
reset($this->video_endungen);
while(list($key,$vid) = each($this->video_endungen)){
//echo $vid;
//echo $this->startverzeichnis.$folder."/".$tmp[0].".".$vid;
if(file_exists($this->startverzeichnis.$folder."/".$tmp[0].".".$vid)){
$arr[video_dateiname][] = $tmp[0].".".$vid;
}
}
}
}
$i++;
}
return $arr;
}
function getgalcontent($galid){
//echo $this->startverzeichnis.$folder;
$res = mysql_query("SELECT * FROM portrait_pics where gal_id='".$galid."'");
$nums = mysql_num_rows($res);
$handle = opendir($this->startverzeichnis.$folder);
for($i = 0; $i < $nums; $i++){
$out = mysql_fetch_object($res);
$arr[bild_name][] = $out->{"picname_".$this->lang};
$arr[bild_dateiname][] = $out->id;
}
return $arr;
}
/**
* Creates an Array of the dirnames within the startfolder
*
* @access private
* @return array
*/
function dirnames2array(){
if(!is_dir($this->startverzeichnis))
die("FATAL ERROR: Das angegebene Verzeichnis ist nicht vorhanden");
$handle = opendir($this->startverzeichnis);
while($file = readdir($handle)){
if($file != "." && $file != ".." && is_dir($this->startverzeichnis.$file)){
if($this->leere_anzeigen == true){
if($this->in_dir($file, $this->video_endungen)){
if(!in_array($file, $this->ausgeschlossene_verzeichnisse)){
$alldirs[][ub] = $file;
}
}else{
if(!in_array($file, $this->ausgeschlossene_verzeichnisse)){
$alldirs[][ub] = $file;
}
}
}else{
if($this->in_dir($file, $this->video_endungen)){
if(!in_array($file, $this->ausgeschlossene_verzeichnisse)){
$alldirs[][ub] = $file;
}
}
}
//echo $file;
}
}
//print_r($alldirs);
return $alldirs;
}
function galnames2array(){
if($this->admin != 1){
$where = "WHERE galactive='yes'";
if($this->g[art] != ""){
$where .= " AND art='".$this->g[art]."'";
}else{
$where .= " AND cat='".$this->g[catid]."'";
}
if(MULTILANG == "on"){
if($this->lang == "dt"){
$where .= " AND galname_dt != ''";
}elseif($this->lang == "en"){
$where .= " AND galname_en != ''";
}elseif($this->lang == "fr"){
$where .= " AND galname_fr != ''";
}
}
}else{
if($this->g[art] != ""){
$where .= "WHERE art='".$this->g[art]."'";
}else{
$where .= "WHERE cat='".$this->g[catid]."'";
}
}
$res = mysql_query("SELECT * from portrait_galleries ".$where." ORDER BY galdate DESC");
$nums = mysql_num_rows($res);
if($nums >= 1){
while($out = mysql_fetch_array($res)){
$gals[] = $out;
}
}
return $gals;
}
/**
* checks whether allowed Videofiles are in folder
*
* @param string $file folder to be checked
* @param string $sufarray suffixes to be checked
* @access private
* @return bool
*/
function in_dir($file, $sufarray){
$handle = opendir($this->startverzeichnis.$file);
while($test = readdir($handle)){
if($test != "." && $test != ".." && is_file($this->startverzeichnis.$file."/".$test)){
$tmp = split("\.", $test);
if(in_array($tmp[(count($tmp)-1)], $sufarray)){
return true;
}
}
}
return false;
}
/**
* Creates the picture gallery itself
*
* @param string $d_dir actual Folder to workin (used for links)
* @param array $d_data Array of the picture and videodata
* @access private
* @return string containing the gallery of the dir
*/
function create_gal($serie){
//print_r($d_data);
//$ret = "";
$this->startverzeichnis = portraitPATH;
$d_dir = $serie;
$res = mysql_query("SELECT * FROM portrait_pics WHERE gal_id='".$serie."'");
$nums = mysql_num_rows($res);
echo $nums;
$cpl = $this->bilder_in_zeile+4;
$rows = 1;
$k = 1;
$line = ceil($nums/$cpl);
for($i = 0; $i < $nums; $i++){
$out = mysql_fetch_object($res);
if($k == 1) $ret .= "
";
$img = ImageCreateFromJpeg($this->startverzeichnis.$d_dir."/".$out->id.".jpg");
$heigth = ImageSY($img);
$width = ImageSX($img);
$ret .= " | ";
if($k == $nums) $ret .= "
";
$k++;
}
return $ret;
}
/**
* Creates the Navigation, to navigate through the pages
*
* @param string $data to count $data
* @param int $pnons whether to show Page x of y
* @access private
* @return string contains HTML for the Navi
*/
function pagit($data, $pnons = 0){
$ret = "";
if($data){
$this->paginator = new PageIterator(sizeof($data), $this->pageNo, $this->perPage, $this->pageLinks, $d);
$this->pageNo = $this->paginator->getCurrentPageNumber(); // $data may cause $this->pageNo to change
}else{
$this->paginator = new PageIterator(sizeof($data), $this->pageNo, $this->perPage, $this->pageLinks);
}
if($pnons == 1){
$ret .= '';
$ret .= ''.PAGE.' ' . $this->pageNo . ' '.POF.' ' . $this->paginator->getPageCount();
$ret .= '
';
//echo $_SERVER['QUERY_STRING'];
$qs = "&".$_SERVER['QUERY_STRING'];
$qs = $this->RemoveArgFromURL($qs, 'pageNo');
$qs = $this->RemoveArgFromURL($qs,'perPage');
$qs = $this->RemoveArgFromURL($qs,'pageLinks');
if($qs != "") $qs = $qs;
$ret .= '';
// Print page links like << < [1] [2] [3] ... [n] > >>
if($this->paginator->getPageCount() > 1){
if ($this->pageNo == 1){
$ret .= '<< < ';
}else{
$ret .= '<< ';
$ret .= '< ';
}
while($this->paginator->hasNextPage()){
$ndx = $this->paginator->nextPage();
if($ndx == $this->pageNo){
$ret .= "$ndx ";
}else{
$ret .= '';
$ret .= '[' . $ndx . '] ';
}
}
if($this->pageNo == $this->paginator->getPageCount()){
$ret .= '> >> ';
}else{
$ret .= '> ';
$ret .= '>> ';
}
}
$ret .= '
';
}
return $ret;
}
function RemoveArgFromURL($URL,$Arg){
while($Pos = strpos($URL,"$Arg=")){
if($Pos){
if($URL[$Pos-1] == "&"){
$Pos--;
}
$nMax = strlen($URL);
$nEndPos = strpos($URL,"&",$Pos+1);
if($nEndPos === false){
$URL = substr($URL,0,$Pos);
}else{
$URL = str_replace(substr($URL,$Pos,$nEndPos-$Pos),'',$URL);
}
}
}
return $URL;
}
};
?>