sortkeys[$i][0]],$b[$this->sortkeys[$i][0]]); if ($this->sortkeys[$i][1] == "DESC") $r = $r * -1; if($r==0) { $i++; if ($this->sortkeys[$i]) $r = $this->_sortcmp($a, $b, $i); } return $r; } function sort() { if(count($this->sortkeys)) { usort($this->data,array($this,"_sortcmp")); } } } function isBigger($path, $mode, $width, $height){ $img = getimagesize($path); if ($mode == "w"){ if ($img[0] > $width) return true; else return false; }else if ($mode == "h"){ if ($img[1] > $height) return true; else return false; }else if ($mode == "c"){ return true; }else if ($mode == "m"){ // landscape if ($img[0] > $img[1]){ if ($img[0] > $width) return true; else return false; // portrait }else{ if ($img[1] > $height) return true; else return false; } } } function savegals($gal, $galfile){ $fp=fopen($galfile, "w"); ksort($gal); foreach($gal as $g) fputs($fp, "$g[0]|$g[1]|$g[2]\n"); fclose($fp); } function adminloggedin($logfile) { include($logfile); $logged=false; if (count($admins)>0){ foreach ($admins as $line){ if ($line['hash']==md5($_REQUEST['mghash'])) $logged=true; } } return $logged; } function clearoldadmins($logfile, $now, $adminexpire) { include($logfile); if (count($admins)>0){ $i=0; $fp=fopen($logfile, "w"); fputs($fp, ""); fclose($fp); } } function mkthumbnail($src, $dst, $hv="w", $size=80, $quality=80){ global $gdlibv2; $info=getimagesize($src); if ($info[2]==2){ // if it's jpg if ($hv=="w"){ $nw=$size; $nh=round(($info[1]*$size)/$info[0], 0); }else if ($hv=="h"){ $nh=$size; $nw=round(($info[0]*$size)/$info[1], 0); } if($gdlibv2){ //GD version >= v2.0 $dst_p=imagecreatetruecolor($nw, $nh); $src_p=imagecreatefromjpeg($src); imagecopyresampled($dst_p, $src_p, 0,0,0,0,$nw, $nh, $info[0], $info[1]); }else{ //GD version < v2.0 $dst_p=imagecreate($nw, $nh); $src_p=imagecreatefromjpeg($src); imagecopyresized($dst_p, $src_p, 0,0,0,0,$nw, $nh, $info[0], $info[1]); } imagejpeg($dst_p, $dst, $quality); imagedestroy($src_p); imagedestroy($dst_p); return true; }else return false; } function getpics($gal, $imgdir, $pathtoscript, $thumbnails){ $dir="$imgdir$gal"; $dp=opendir($dir); $pictures= new mdasort; $i=0; while ($file=readdir($dp)){ if ($file!="." && $file!=".."){ if (strpos($file, "thumb")===false && $file!="captions.dat"){ $pictures->data[$i]['id']=substr($file, 0, strrpos($file, ".")); $pictures->data[$i]['pic']=$pathtoscript."images/$gal/$file"; if ($thumbnails) $pictures->data[$i]['thumb']=$pathtoscript."images/$gal/thumb_$file"; $i++; } } } if ($i>0){ $pictures->sortkeys = array(array('id','ASC')); $pictures->sort(); return $pictures->data; }else return false; } function getImageName($gal, $name){ global $imgdir, $pathtoscript, $thumbnails; $name = substr($name, 0, strrpos($name, ".")); $name = strtolower(preg_replace("/[^a-zA-Z0-9]/", "_", $name)).".jpg"; $images = getpics($gal, $imgdir, $pathtoscript, $thumbnails); if (is_array($images)){ foreach ($images as $img){ // if file exists rename it if ($img['id'].".jpg" == $name){ $version=1; $versionext=""; while(file_exists($imgdir.$gal."/".$name)){ $name=substr($name, 0, strrpos($name, "$versionext."))."_$version".substr($name, strrpos($name, ".")); $versionext="_$version"; $version++; } } } } return substr($name, 0, strrpos($name, "."));; } function getcaps($gal, $imgdir){ $caps=false; $cappath=$imgdir.$gal."/captions.dat"; if (file_exists($cappath)){ $stuff=file($cappath); foreach ($stuff as $line){ $cap=explode("|", rtrim($line)); $caps[$cap[0]]=$cap[1]; } } return $caps; } function nltobr($str){ return str_replace(array("\n", "\r"), array("
", ""), $str); } function brtonl($str){ return str_replace("
", "\n", $str); } function isBiggerWidth($path, $size){ if ($size!==false){ $foo=getimagesize($path); if ($foo[0]>$size) return true; else return false; }else return false; } function getTemplate($tpl, $html){ $match="/<\!\-\-$tpl\-\->(.*?)<\!\-\-$tpl\-\->/s"; preg_match($match, $html, $tmp); return $tmp[1]; } function paging( $pages, $pagevar="page", $ppv=10 ){ global $txtfirstpage,$txtprevpage,$txtnextpage,$txtlastpage; $first ="[ ".$txtfirstpage." ] "; $firsts ="[ $txtfirstpage ] "; $prev ="[ $txtprevpage ]  "; $prevs ="[ $txtprevpage ]  "; $num ="{page}"; $nums ="{page}"; $sep =" | "; $more ="[...]"; $next ="  [ $txtnextpage ]"; $nexts =" [ $txtnextpage ]"; $last =" [ $txtlastpage ]"; $lasts =" [ $txtlastpage ]"; // get URI parameters $getvars=$_SERVER['PHP_SELF']."?"; foreach ($_GET as $key => $val){ if ($key!=$pagevar){ if (isset($val) && $val!=""){ $getvars.="$key=$val&"; }else{ $getvars.="$key&"; } } } $page=(is_numeric($_GET[$pagevar])) ? $_GET[$pagevar] : 1; $page=($page>$pages) ? $pages : $page; $prevpage=($page>1) ? $page-1 : 1; $nextpage=($page < $pages) ? $page+1 : $pages; $paging=""; $_SESSION['sessionaktpage']=$page; if ($pages>1){ // first $paging.=($page>1) ? str_replace("{url}", "$getvars$pagevar=1", $first) : $firsts; // prev $paging.=($page>1) ? str_replace("{url}", "$getvars$pagevar=$prevpage", $prev) : $prevs; // pages $ppvrange=ceil($page/$ppv); $start=($ppvrange-1)*$ppv; $end=($ppvrange-1)*$ppv+$ppv; $end=($end>$pages) ? $pages : $end; $paging.=($start>1) ? str_replace("{url}", "$getvars$pagevar=".($start-1), $more).$sep : ""; for ($i=1; $i<=$pages; $i++){ if ($i>$start && $i<= $end){ $paging.=($page==$i) ? str_replace("{page}", $i, $nums).(($i<$end) ? $sep : "") : str_replace(array("{url}", "{page}"), array("$getvars$pagevar=$i", $i), $num).(($i<$end) ? $sep : ""); } } $paging.=($end<$pages) ? $sep.str_replace("{url}", "$getvars$pagevar=".($end+1), $more) : "" ; // next $paging.=($page<$pages) ? str_replace("{url}", "$getvars$pagevar=$nextpage", $next) : $nexts; // last $paging.=($page<$pages) ? str_replace("{url}", "$getvars$pagevar=$pages", $last) : $lasts; } return $paging; } // **************************** INIT ***************************** // *************************************************************** if (!isset($_REQUEST['mghash']) || $_REQUEST['mghash']=="") { srand($now); for ($i=0; $i<16 ; $i++) $secret.=chr(rand(60, 127)); $secret=md5($secret); $hash=md5($_SERVER['HTTP_USER_AGENT'].$now.$secret); }else $hash= $_REQUEST['mghash']; $getvars="?".(($phpwcmsalias!="") ? "$phpwcmsalias&" : "")."mghash=$hash"; clearoldadmins($logfile, $now, $adminexpire); // **************************** ADMIN **************************** // *************************************************************** if ($_REQUEST['mgdo']=="admin"){ // if login if ($_REQUEST['mgaction']=="login"){ if ($_REQUEST['mglogin']==$adminlogin && $_REQUEST['mgpwd']==$adminpwd){ include($logfile); $fp=fopen($logfile, "w"); fputs($fp, "0){ foreach ($admins as $line){ fputs($fp, "\$admins[$i]['time']=".$line[time]."; \$admins[$i]['hash']='".$line['hash']."';\n"); $i++; } } fputs($fp, "\$admins[$i]['time']=".$now."; \$admins[$i]['hash']='".md5($hash)."';\n?>"); fclose($fp); } } if (adminloggedin($logfile)){ // get gallery list from data file $galleries=false; if ($gals=file($galfile)){ foreach ($gals as $gal){ $gal= explode('|', rtrim($gal)); $galleries[$gal[0]] = array($gal[0], $gal[1], $gal[2]); } krsort($galleries, SORT_NUMERIC); reset($galleries); $nextindex=key($galleries)+1; }else $nextindex=1; // delete a gallery if ($_REQUEST['mgaction']=="delete" && is_numeric($_REQUEST['mgid'])){ unset($galleries[$_REQUEST['mgid']]); savegals($galleries, $galfile); $dir="$imgdir".$_REQUEST['mgid']."/"; $dp=opendir($dir); while ($file=readdir($dp)){ if ($file!="." && $file!="..") unlink($dir.$file); } closedir($dp); rmdir($dir); } // move gallery upwards or downwards if ($_REQUEST['mgaction']=="move" && is_numeric($_REQUEST['mgid']) && isset($_REQUEST['mgcmd'])){ $id=$_REQUEST['mgid']; $cmd=$_REQUEST['mgcmd']; $keys=array_keys($galleries); if ($cmd=="up") sort($keys); else if ($cmd=="down") rsort($keys); $oid=false; foreach ($keys as $key){ if ($cmd=="up"){ if ($key>$id){ $oid=$key; break; } }else{ if ($key<$id){ $oid=$key; break; } } } if ($oid!==false){ // exchanging the 2 array elements $galleries[$id][0]=$oid; $galleries[$oid][0]=$id; list ($galleries[$id], $galleries[$oid]) = array($galleries[$oid], $galleries[$id]); savegals($galleries, $galfile); $tmpdir=$imgdir.$id."_tmp"; rename($imgdir.$id, $tmpdir); rename($imgdir.$oid, $imgdir.$id); rename($tmpdir, $imgdir.$oid); } } // save edited gallery if ($_REQUEST['mgaction']=="savegal" && isset($_REQUEST['mggal'])){ if ($_REQUEST['mggallery']!=""){ $gal=$_REQUEST['mggal']; // delete pics? if (is_array($_REQUEST['mgtodel'])){ foreach ($_REQUEST['mgtodel'] as $id => $val){ // delete pic unlink($imgdir.$gal."/$id.jpg"); if ($thumbnails) unlink($imgdir.$gal."/thumb_$id.jpg"); unset($_REQUEST['mgfilename'][$id]); } } // file renaming $caps=""; foreach ($_REQUEST['mgfilename'] as $id => $newid){ $ok = true; if ($id != $newid){ $newid = getImageName($gal, $newid.".jpg"); if (rename($imgdir.$gal."/$id.jpg", $imgdir.$gal."/$newid.jpg")) $ok = true; else $ok = false; if (rename($imgdir.$gal."/thumb_$id.jpg", $imgdir.$gal."/thumb_$newid.jpg")) $ok = true; else $ok = false; } $cap = $_REQUEST['mgcap'][$id]; if ($cap!=""){ if ($ok===false) $newid=$id; $caps.="$newid|".htmlentities($cap, ENT_QUOTES)."\n"; } } $fp=fopen($imgdir.$gal."/captions.dat", "w"); fputs($fp, $caps); fclose($fp); $galleries[$gal][1]=htmlentities($_REQUEST['mggallery'], ENT_QUOTES); $galleries[$gal][2]=nltobr(htmlentities($_REQUEST['mgdescr'], ENT_QUOTES)); savegals($galleries, $galfile); $output= $txtsavedchanges; }else $output=$txtnoname; $showedit=true; } // save new or edited gallery pictures if ($_REQUEST['mgaction']=="upload"){ $error=false; if (is_numeric($_REQUEST['mggal'])){ $gal=$_REQUEST['mggal']; $showedit=true; }else $gal=false; if ($gal===false && $_REQUEST['mggallery']=="") $error=$txtnozip; if ($error===false && is_uploaded_file($_FILES['mgfile']['tmp_name']) && $_FILES['mgfile']['size']>0){ // check whether new gallery or adding pics to existing one if ($gal===false){ if (!mkdir("$imgdir$nextindex", 0777)) $error.=$txtnodir; $galleries[$nextindex]=array($nextindex, htmlentities($_REQUEST['mggallery'], ENT_QUOTES), nltobr(htmlentities($_REQUEST['mgdescr'], ENT_QUOTES))); krsort($galleries); savegals($galleries, $galfile); $i=1; }else if (is_numeric($gal)){ if ($pictures=getpics($gal, $imgdir, $pathtoscript, $thumbnails)){ foreach ($pictures as $pic){ $ids[]=$pic['id']; } rsort($ids); $i=$ids[0]+1; }else $i=1; $nextindex=$gal; } // handling single jpg upload if ($_FILES['mgfile']['type']=="image/jpeg" || $_FILES['mgfile']['type']=="image/pjpeg"){ $name = getImageName($nextindex, $_FILES['mgfile']['name']); if (move_uploaded_file($_FILES['mgfile']['tmp_name'], "$imgdir$nextindex/$name.jpg")){ chmod("$imgdir$nextindex/$name.jpg", 0777); if (isBiggerWidth("$imgdir$nextindex/$name.jpg", $originalsize)) mkthumbnail("$imgdir$nextindex/$name.jpg", "$imgdir$nextindex/$name.jpg", "w", $originalsize, $jpgquality); if ($thumbnails) mkthumbnail("$imgdir$nextindex/$name.jpg", "$imgdir$nextindex/thumb_$name.jpg", $thumbhv, $thumbsize, $jpgquality); } // handling zip uploads }else{if(strpos($_FILES['mgfile']['type'],$typezip)){ include_once ('pclzip_lib.php'); if ($zip = new PclZip($_FILES['mgfile']['tmp_name'])){ if (($list = $zip->listContent()) == 0) { die($error=$zip->errorInfo(true)); } for ($i=0; $iextract(PCLZIP_OPT_BY_NAME, $name, PCLZIP_OPT_REMOVE_ALL_PATH, PCLZIP_OPT_PATH, $mgConf['pathtoscript']."images/_tmp/"); if ($tmplist == 0) $error=$zip->errorInfo(true); if (substr($name, -1) != "/"){ $name = (strpos($name, "/") !== false) ? substr($name, strrpos($name, "/")+1) : $name; $fotoinfo=getimagesize($mgConf['pathtoscript']."images/_tmp/$name"); if ($fotoinfo[2]==2){ // if it's jpg rename($mgConf['pathtoscript']."images/_tmp/$name", $mgConf['pathtoscript']."images/$nextindex/$newname.jpg"); chmod("$imgdir$nextindex/$newname.jpg", 0777); if (isBiggerWidth("$imgdir$nextindex/$newname.jpg", $originalsize)) mkthumbnail("$imgdir$nextindex/$newname.jpg", "$imgdir$nextindex/$newname.jpg", "w", $originalsize, $jpgquality); if ($thumbnails)mkthumbnail("$imgdir$nextindex/$newname.jpg", "$imgdir$nextindex/thumb_$newname.jpg", $thumbhv, $thumbsize, $jpgquality); }else{ unlink($mgConf['pathtoscript']."images/_tmp/$name"); } } } } }else $error=$txtnozip; }// endif zip handling }else $error=$txtnofile; if ($error!==false) $output=$error; } // display admin cp header echo "\n"; echo "\n"; // if in gallery edit mode if ($showedit || $_REQUEST['mgaction']=="edit"){ $gal=$_REQUEST['mggal']; echo "\n"; // else in not edit mode }else{ // upload new gallery form echo "\n"; // show gallery list if($galleries!==false){ echo "\n"; } }// endif (not edit mode) echo "
\n"; echo "\n"; echo "\n"; echo "\n"; echo "
$txtprgname[$txtlogout]
\n"; echo "
\n"; echo "$txtediting  ".$galleries[$gal][1]."

 \n"; echo "
\n"; echo "$txtaddpicscap
$txtaddpics

\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "
$output
\n"; echo "

 \n"; $caps=getcaps($gal, $imgdir); $i=1; $pictures = getpics($gal, $imgdir, $pathtoscript, $thumbnails); if ($pictures!==false){ echo "
\n"; echo "$txtgalname
"; echo "

\n"; echo "$txtdescription
"; echo "
 \n"; echo "\n\n"; foreach ($pictures as $pic){ $img=($thumbnails) ? $pic['thumb'] : $pic['pic']; $size=getimagesize($img); $attr=($size[0]>$thumbsize) ? "width='$thumbsize' height='".($thumbsize*$size[1]/$size[0])."'" : "width='$size[0]' height='$size[1]'"; echo "\n\n"; if ($i%$thumbcols==0) echo "\n"; $i++; } echo "
\n"; echo "$txtcaption

\n"; // rename file echo "$txtfilename

\n"; echo "[]
\n"; echo "\n"; echo "
"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "
\n"; }// endif $pictures!==false echo "
\n"; echo "
\n"; echo "$txtnewgal
$txtzipdesc

\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "
$txtgalname:
$txtdescription:
 ($txtselzip)
\n"; echo "
 \n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "
\n"; echo "
$output
\n"; echo "
$txtexgals

\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; $i=1; $bgcol[0]="class='mgaltbgcol0'"; $bgcol[1]="class='mgaltbgcol1'"; krsort($galleries); //print_r($galleries); foreach($galleries as $gal){ echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; $i++; } echo "
#$txtname 
$i".stripslashes($gal[1]).""; echo "$txtup \n"; echo "$txtdown   \n"; echo "$txtedit \n"; echo "$txtdelete\n"; echo "
\n"; echo "
\n"; // if not logged in -> admin login form }else{ echo "\n"; echo "\n"; echo "\n"; echo "
$txtprgname
\n"; echo "
\n"; echo "$txtlogin \n"; echo "$txtpass \n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; echo "
\n"; } // ***************************** MAIN ***************************** // **************************************************************** // if not in admin mode }else{ // get gallery list from data file $galleries=false; if ($gals=file($galfile)){ foreach ($gals as $gal){ $gal= explode('|', rtrim($gal)); $galleries[$gal[0]] = array($gal[0], $gal[1], $gal[2]); } krsort($galleries, SORT_NUMERIC); } // show the gallery list if (!isset($_REQUEST['mggal'])){ if ($galleries!==false){ // reorganize $galleries array $foo=$galleries; $galleries=array(); foreach ($foo as $g) $galleries[]=$g; // paging $page=(is_numeric($_REQUEST['mgpage'])) ? $_REQUEST['mgpage'] : 1; $start= ($page-1) * $gpp; $numgals=count($galleries); $pages=ceil($numgals/$gpp); $paging=paging($pages, "mgpage"); // get template for gallleries list $tpl=getTemplate("GALLERIES", implode("", file($tplfile))); if ($galtype>1) $tpl="
".$tpl."
"; $tplrow=getTemplate("ROW", $tpl); $rows=""; for ($i=$start; $i<($start+$gpp); $i++){ if (is_array($galleries[$i])){ $gal=$galleries[$i]; // get random preview thumbnail $pictures = getpics($gal[0], $imgdir, $pathtoscript, $thumbnails); $c=count($pictures); $imgsrc=$pictures[0]['thumb']; if ($random){$imgsrc=$pictures[rand(0, ($c-1))]['thumb'];} $match=array("{urlthumb}", "{title}", "{description}", "{urlgallery}"); $replace=array($imgsrc, stripslashes($gal[1]), $gal[2], $me.$getvars."&mggal=".$gal[0]); $rows.=str_replace($match, $replace, $tplrow); } } $match= array("/\{paging\}/", "/<\!\-\-ROW\-\->(.*?)<\!\-\-ROW\-\->/s"); $replace= array($paging, $rows); echo preg_replace($match, $replace, $tpl); }// endif $galleries!==false) // show specific gallery }else{ $gal=$_REQUEST['mggal']; if ($pictures = getpics($gal, $imgdir, $pathtoscript, $thumbnails)){ $numpics=count($pictures); // show thumbnails page if (!isset($_REQUEST['mgid']) && $thumbnails){ // get template for this gallery $tpl=getTemplate("GALLERY", implode("", file($tplfile))); $tplpic=getTemplate("PIC", $tpl); $pictable= "\n"; $i=0; $caps=getcaps($gal, $imgdir); foreach ($pictures as $pic){ $pictable.= "\n"; if (($i+1)%$thumbcols==0) $pictable.= "\n"; $i++; } $pictable.= "
"; $match= array("{urlpicture}", "{urlthumb}", "{captionpicture}"); $replace= array("$me$getvars&mggal=$gal&mgid=$i&mgcmd=noslide", $pic['thumb'], stripslashes($caps[$pic['id']])); $pictable.= str_replace($match, $replace, $tplpic); $pictable.= "
\n"; $match=array("/\{captiongallery\}/", "/\{urlslideshow\}/", "/\{urlbacktoindex\}/", "/<\!\-\-PIC\-\->(.*?)<\!\-\-PIC\-\->/s"); $replace=array(stripslashes($galleries[$gal][1]), $me.$getvars."&mggal=$gal&mgid=0", $me.$getvars."&mgpage=".$aktgalpage, $pictable); echo preg_replace($match, $replace, $tpl); // show specific pic }else { if (!isset($_REQUEST['mgid'])) $id=0; else $id=$_REQUEST['mgid']; $backurl="$me$getvars".(($thumbnails) ? "&mggal=$gal" : ""); //$backurl="$me$getvars"."&mggal=$gal"."&mgpage="."$gal"; if ($id==($numpics-1)) $nexturl=$backurl; else $nexturl="$me$getvars&mggal=$gal&mgid=".($id+1); $prev="href='$me$getvars&mggal=$gal&mgid=".($id-1)."&mgcmd=noslide'"; if ($id==0) $prev="href='".$backurl."'"; $akturl="$me$getvars&mggal=$gal&mgid=".$id; if ($_REQUEST['mgcmd']!="noslide" && $slideshow){$akturl.="&mgcmd=noslide";} $urlfirst="$me$getvars&mggal=$gal&mgid=0&mgcmd=noslide"; $urllast="$me$getvars&mggal=$gal&mgid=".($numpics-1)."&mgcmd=noslide"; $szumtext=$numpics." képből: ".($id+1)."."; // get caps $caps=getcaps($gal, $imgdir); // get template for this picture $tpl=getTemplate("PICTURE", implode("", file($tplfile))); $match= array("{captiongallery}", "{info}", "{urlpic}", "{captionpicture}", "{urlbacktoindex}", "{urlnextpicture}", "{urlnextpictureslideshow}", "{urlbacktoindex2}", "{info2}", "{urlprevpicture}", "{info3}", "{stopslideshow}", "{slideshowtext}", "{urlfirst}", "{info4}", "{urllast}", "{info5}"); $replace= array( stripslashes($galleries[$gal][1]), $txtclickpic, $pictures[$id]['pic'], stripslashes($caps[$pictures[$id]['id']]), $backurl, $nexturl."&mgcmd=noslide", $nexturl, $me.$getvars."&mgpage=".$aktgalpage, $szumtext, $prev, $txtbackclickpic, $akturl, (($_REQUEST['mgcmd']!="noslide" && $slideshow) ? "".$txtnextslide."" : $txtslideshow), $urlfirst, $txtfirst, $urllast, $txtlast); echo str_replace($match, $replace, $tpl); if ($_REQUEST['mgcmd']!="noslide" && $slideshow) echo "\n"; } }else echo "
$txtback
"; } } echo "

custoMMade eReLverSoft $version 2010 $txtadmin

"; ?>