alert(' [$errno] , $errstr, $errfile, $errline ');"; } //set_error_handler("errorHandler"); //***** comment out to send errors to error.log session_start(); //======================= global vars ============================ //---- domain vars ---- $gROOTDOMAIN="optic.com"; $domain=$_SERVER["SERVER_NAME"]; $domainid=_rep($domain,"www.",""); $subdomain=getSubdomain($domain); $subdomains=getSubdomains($domain); $domain=strtolower($domain); $TLD=getTLD($domain); $gRoot="http://".$domain."/"; $gExePath="_pvt/"; $gPage=$_SERVER["PHP_SELF"]; $gContent="Content/".$TLD; $gPath="../".$gContent."/"; //alert("path=".$gPath); //=============================== NEW DOMAIN? ======================================== //--- check the ROOT DOMAIN folder exists - if not then copy it from _pvt/_bak_default //--- check the ROOT folder for the ROOT DOMAIN exists if(!file_exists("../Content/".$gROOTDOMAIN)){ mkdir("../Content/".$gROOTDOMAIN, 0755); if($d=@opendir("../_pvt/_bak_default")){ while(($file=readdir($d))!==false){ if($file!=".." && $file!="."){ copy("../_pvt/_bak_default/".$file, "../Content/".$gROOTDOMAIN."/".$file); } } closedir($d); repFileTxt("../Content/".$gROOTDOMAIN."/"."Home.ixi", "_default/", ""); } } //--- check the _DEFAULT folder for the ROOT DOMAIN exists if(!file_exists("../Content/".$gROOTDOMAIN."/_default")){ mkdir("../Content/".$gROOTDOMAIN."/_default", 0755); if($d=@opendir("../_pvt/_bak_default")){ while(($file=readdir($d))!==false){ if($file!=".." && $file!="."){ copy("../_pvt/_bak_default/".$file, "../Content/".$gROOTDOMAIN."/_default/".$file); } } closedir($d); } } //--- check the root folder for this domain exists if(!file_exists($gPath)){ myMkDir("",1); // defaults to gPath if($d=@opendir("../Content/".$gROOTDOMAIN."/_default")){ while(($file=readdir($d))!==false){ if($file!=".." && $file!="."){ copy("../Content/".$gROOTDOMAIN."/_default/".$file, $gPath.$file); } } closedir($d); repFileTxt($gPath."Home.ixi", $gROOTDOMAIN, $TLD); repFileTxt($gPath."Home.ixi", "_default/", ""); repFileTxt($gPath."domain.htm", $gROOTDOMAIN, $TLD); } } //--- check the _default folder for this domain exists if(!file_exists($gPath."/_default")){ myMkDir("_default",1); if($d=@opendir("../Content/".$gROOTDOMAIN."/_default")){ while(($file=readdir($d))!==false){ if($file!=".." && $file!="." && $file!="_pvt__hTjID.txt"){ copy("../Content/".$gROOTDOMAIN."/_default/".$file, $gPath."_default/".$file); } } closedir($d); repFileTxt($gPath."_default/Home.ixi", $gROOTDOMAIN, $TLD); repFileTxt($gPath."_default/domain.htm", $gROOTDOMAIN, $TLD); } } function repFileTxt($f,$x1,$x2){ if(file_exists($f)){ $fh=fopen($f,'r'); $txt=fread($fh,10000); fclose($fh); $txt=_rep($txt,$x1, $x2); $fh=fopen($f,'w'); fwrite($fh,$txt); fclose($fh); }} //=========================================================================== // buffer output so we set cookies in newutil if(basename($_SERVER['PHP_SELF'])=="_newutil.php")ob_start(); //---- "no" login used by takepic.php ---- $login=myGet("login"); $login="no"; $gAutoLogin=0; //------- path and dir vars --------- $dir=rqst("dir"); if($dir==$gContent)$dir=""; $dir=str_replace($gContent."/","",$dir); $dir=str_replace("%20"," ",$dir); if(myGet('goback')==1)$dir=getPath($dir); $dirpath=$gPath.$dir; $dirlink=getDir($dir); //same as dirpath? $gInNFTs=(_in($dir,"NFTs"))?1:0; if(!empty($dirlink))$dirlink=$dirlink."/"; $path=getDir($dir); if(!empty($path))$path=$path."/"; $dirtail=getTail($dir); $dirdisplay="/".$dirtail; $shortdirdisplay=getShortName($dirdisplay,16); //------- login/account vars ---------- $gID =mySession('id'); $gLoginPath =mySession('loginpath'); $gLoginDir=""; $gLoginDirLink=""; //exit("debug... ID:$gID, PATH:$gLoginPath, DIR:$dir"); if(!$gID){ $gID=myCookie('id'); $gLoginPath=myCookie('path'); $_SESSION['id']=$gID; $_SESSION['loginpath']=$gLoginPath; } if($gID && !$dir && myGet("firsttime") && $gID!=$domainid)$dir=$gID; //if firsttime and logged in go to user's folder $gAdmin=($gID==$domainid)?1:0; $gROOTadmin=($gAdmin && $domainid==$gROOTDOMAIN)?1:0; if($gID){ $gLoginDirLink=_rep($gLoginPath,"../",""); //the 'active' logged in dir //this code is also in index.php and toolbar.php in getgDir() if($dir && (_ix($dirlink,$gLoginDirLink)==0 || _ix($gLoginDirLink,$dirlink)==0) && $dirlink!=$gLoginDirLink)$gLoginDirLink=$dirlink; $gLoginDir=$gLoginDirLink; $gLoginDir=substr($gLoginDir,0,strlen($gLoginDir)-1); //strip off trailing "/" } //--- see hasDirRights() in _inc_header --- ("hasRights" and "gLoggedIn" currently play the same role) $gLoggedIn =($gID && ( (_rep($gLoginPath,$gPath.$dir."/","")=="") // the login is the current dir || (_in($gPath.$dir."/",$gLoginPath)) // the login is a higher dir ) )?1:0; $gAcctAdmin =($gAdmin || ($gLoggedIn && _in($gPath.$dir."/" , $gLoginPath)))?1:0; /* wrtb("gID=".$gID); wrtb("gLoginDir=".$gLoginDir); wrtb("gLoginPath=".$gLoginPath); wrtb("gLoggedIn=".$gLoggedIn); */ //---- other vars ---- $pixiextension=".ixi"; $nftextension=".iki"; $fileid="_pvt__hTjID.txt"; $templatefile="_pvt_template.txt"; $fimgfile="_pvt_images.txt"; $videofile="_pvt_videos.txt"; $linkfile="_pvt_links.txt"; if(_in($gPage,"?")){$tmp=_split($gPage,"?");$gPage=$tmp[0];} $browser=strtolower($_SERVER['HTTP_USER_AGENT']); $gIE=$gFX=$gCHROME=0; if(strpos($browser,'msie'))$gIE=1; else{ if(strpos($browser,'firefox'))$gFX=1; else{ if(strpos($browser,'chrome'))$gCHROME=1; }} $movers="onmouseover='_hilite(this)' onmouseout='_lolite(this)'"; $menumovers="onmouseover='_menuHilite(this)' onmouseout='_menuLolite(this)'"; $lnkmovers="onmouseover='_lnkHilite(this)' onmouseout='_lnkLolite(this)'"; $roundedcorners="-moz-border-radius: 6px; -webkit-border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px;"; $noroundedcorners="-moz-border-radius: 0px; -webkit-border-radius: 0px; -moz-border-radius: 0px; -webkit-border-radius: 0px;"; $roundedcorners2="-moz-border-radius: 2px; -webkit-border-radius: 2px; -moz-border-radius: 2px; -webkit-border-radius: 2px;"; $imgexts =",.svg,.gif,.jpeg,.jpg,.bmp,.png,.SVG,.GIF,.JPEG,.JPG,.BMP,.PNG,"; $btncoloroff='#999'; $btnbgoff='#ccc'; $btnbdroff='#999'; $useFlash=0; //html5 iframe mode fucks up when clicking "next" as of May, 2014 (some API change - effects grooze as well) //------------------------ default template vars ----------------------- //---- variables set in options.php ----- $fontfamily='Arial,Helvetica,sans-serif'; $fontsize='19'; $fgcolor='#000000'; $lkcolor='#000000'; $selcolor='#cccccc'; $hicolor='#0dbddf'; $scrollbgcolor='#bbddff'; $scrollfgcolor='#0ea7e9'; $popupbgcolor='moccasin'; $popupfgcolor='#555555'; $popupbdrcolor='#aaaaaa'; $popupbdrwidth='0'; $titlecolor='#000000'; $bordercolor=''; $btnbordercolor='#666666'; $btnbgcolor='#78c4ff'; $btnhicolor='#b5dfff'; $btncolor='#000000'; $homepage=''; $popupwindowpadding='10'; //--- slideshow variables --- $ssfullsize='no'; $ssnaturalsize='yes'; $controls='yes'; $ssthumbs='no'; $delay='6000'; $randomize='yes'; $ssbgcolor='#000000'; $sshicolor='#ffffff'; $ssbtnbordercolor='#555555'; $ssbtnbgcolor='#ffffff'; $ssbtnhicolor='#dddddd'; $ssbtncolor='#000000'; $fade='yesno'; $fadetoolbar='yes'; $ssshowthumbbdrs='yes'; $toolbaralign='bottom'; //----------------- override default options? (domain Admin only - overrides for ALL users) ------------------- $vartxt=myReadFile($gPath.$templatefile); //alert("vartxt=".$vartxt); eval($vartxt); //----- variables not set in options.php (only here) --- $optonlyimages='no'; $ssusepixi='no'; $bgcolor='#ffffff'; $toolbarbgcolor='#ffffff'; $desktopbgcolor='#ffffff'; $chromeless='no'; $fadewinbtns='no'; $thumbbdrcolor='#000000'; $ssthumbbdrcolor='#000000'; $ssborder=''; $ssbgwidth='1'; $ssfgcolor='#ffffff'; $width='70%'; $height='80%'; $showthumbs='yes'; $showactions=1; $ssthumbsalign='right'; $ssitems='images'; $mouseovermenus='yes'; $showcamerabtn='yes'; $loginbtn='yes'; $optshowpixis1='yes'; $optshowpixis2='no'; $optshowfilters1='yes'; $optshowfilters2='no'; $optshownfts1='yes'; $optshownfts2='no'; $loggedouttemplate='none'; $collapsebtn='contract.gif'; $expandbtn='expand.gif'; $usemenubtns='yes'; $homepage="Home.ixi"; $showactions =1; $showmenu =1; $showfilters =1; $showtoolbar =1; $showfolders =1; $showfiles =1; $showpixis =1; $shownfts =1; $showpics =1; $showvids =1; $showlinks =1; $showupload =1; $shownewfolder =1; $shownewfile =1; $shownewlink =1; $shownewfimg =1; $shownewsvg =1; $shownewvid =1; $showorgfolders =1; $showupdsettings=1; $showfimgs =0; $showpopupmenu =1; $btnh ="30"; $btnfontsize ="22px"; $btnw ="12"; $mode=""; $pixibordercolor="#cccccc"; //set to white to turn off all borders $pixiborder ="solid 1px ".$pixibordercolor.";"; //set to 0px to turn off main box border //====================== GLOBAL PHP FUNCTIONS ====================={ function sanitizeFileName($filename) { $filename = _rep($filename,"/NFTs",""); // Remove any path information (slashes, etc.) and ensure the filename is valid $filename = basename($filename); // Replace any non-alphanumeric characters (except dots, hyphens, and underscores) with an underscore $filename = preg_replace('/[^a-zA-Z0-9._-]/', '_', $filename); // Optionally, limit the length of the filename to prevent excessively long names $filename = substr($filename, 0, 100); return $filename; } function isValidFileName($filename) { // Check for forbidden characters or patterns to ensure it's a safe filename // Here we're excluding `..`, PHP code tags, and control characters // Disallow double dots (can indicate directory traversal) if (strpos($filename, '..') !== false) { return false; } // Check for embedded PHP code in the filename if (preg_match('/<\?php|<\?/', $filename)) { return false; } // Disallow control characters if (preg_match('/[\x00-\x1F\x7F]/', $filename)) { return false; } return true; } function popupMsg($x,$timeout=0){ echo(""); } //----- get the full path for an ID ----- function getLoginPath($dir,$id){ global $gRoot,$domainid,$gPath; if(!$dir){ if($id==$domainid)return $gPath; // login to the root else return $gPath.$id."/"; }else{ $path=$gPath.$dir."/"; $a=_split($dir,"/"); if(getTail($dir)==$id)return $path; // login to the current dir return $path.$id."/"; // login to a sub-directory }} //----- clean string ----------- function okString($q,$okchars){ $validchars="abcdefghijklmnopqrstuvwxyz 0123456789-_"; if(!$okchars)$okchars=""; $okchars.=$validchars; $x=strtolower($q); $x=trim($x); for($i=0;$i2){ $sub=$a[0]; if(strtolower($sub)=="www")$sub=""; } return $sub;} function getTLD($domain) { $a = explode(".", $domain); $count = count($a); $tld = $a[$count - 2] . "." . $a[$count - 1]; return $tld; } function getSubdomains($domain){ $subs=""; $a=explode(".",$domain); if(count($a)>2){ for($i=0;$i<(count($a)-2);$i++){ $sub=$a[$i]; if(strtolower($sub)!="www"){ if($i>0)$subs.="."; $subs.=$sub; }}} return $subs;} function isSvg($u){ if(isImage($u) && _in(strtolower($u),".svg"))return 1; return 0; } function myFileType($s){ //$$$$ $ext=get_ext($s); $name=getName($s); if($s=="."||$s==".."|| $s=="error_log"||$s=="cgi-bin"||$name=="index")return ""; if(isFilter($s))return "filter"; if(isPixi($s))return "pixi"; if(isNFT($s))return "nft"; if(isImage($s))return "image"; if(_in($s,"@vid@"))return "video"; if(_in($s,"@lnk@"))return "link"; if($ext==".htm")return "file"; if($ext=="")return "folder"; return ""; } function isFilter($s){ $s=get_ext($s); //for($i=0;$i1)$tail=$tail[count($tail)-2]; else $tail=""; //wrtb(" (tail=".$tail.") "); return $tail;} //------------ get the file name --------------- function getFile($d){ $tmp=$d; $tmp=_split($tmp,"/"); $f=$tmp[count($tmp)-1]; if(_in($f,"."))return $f; return "";} //------------ get a shortened name --------------- function getShortName($d,$len){ if(strlen($d)<$len)return $d; $tmp=_split($d,","); $d=$tmp[0]; if(strlen($d)<$len)return $d; $tmp=_split($d," "); $d=$tmp[0]; if(strlen($d)<$len){ //try to get 2 words (eg. st nbr + street) if(count($tmp)>1)$d=$d." ".$tmp[1]; if(strlen($d)>$len)$d=$tmp[0]; //too long so just get first } if(strlen($d)<$len)return $d; return substr($d,0,$len); } function thumbName($f){ if(_in($f,"_tn."))return $f; $a=_split($f,"."); $x=""; for($i=0;$i<(count($a)-1);$i++){ if($i)$x.="."; $x.=$a[$i]; } $x.="_tn.".$a[count($a)-1]; return $x; } function getNewName($user,$n){ //$n=strtolower($n); //$n=str_replace("%20","_",$n); //$n=str_replace("index","indx",$n); //$a=_split($n return $n;} //========================== file handling ===================================== //---- check if update is allowed --- function hasRights($dirpath){ global $gAcctAdmin,$gID,$gLoggedIn; if($gAcctAdmin)return 1; if(!$gID)return 0; if(!$gLoggedIn){ // if in root folder (not home folder) then check dirpath if(!_in($dirpath, "/".$gID."/"))return 0; } return 1; } //---- check if a dir/file exists (if not create it, else return contents) function chkExists($dirpath,$file,$txt){ if(!hasRights($dirpath))return; if(_in($dirpath,"NFTs")){ alert("Invalid name. It cannot contain NFTs"); exit(); } if(substr($dirpath,0,1)=="/")$dirpath=substr($dirpath,1); if($dirpath!=""){ if(!file_exists($dirpath)){ myMkDir($dirpath); if($file)myWriteFile($dirpath."/".$file,$txt); return ","; }} if($file){ $dirpath=getDirSlash($dirpath); if(!file_exists($dirpath.$file)){ myWriteFile($dirpath.$file,$txt); return $txt; }else{ return myReadFile($dirpath.$file); }} return ""; } function myReadFile($f){ global $gPath; if(_ix($f,$gPath)!=0)$f=$gPath.$f; if(!file_exists($f))return ""; $fh=fopen($f,'r'); $theData=fread($fh,10000); fclose($fh); return $theData;} function myWriteFile($f,$txt){ global $gPath; global $gLoggedIn; //wrtb("f=".$f); if(!hasRights($gPath.$f)){ echo("myWriteFile not logged in!"); exit(); } if(_ix($f,$gPath)!=0)$f=$gPath.$f; if(_in($f,"NFTs")){ alert("Cannot save to the NFTs folder"); exit(); } $fh=fopen($f,'w'); fwrite($fh,$txt); fclose($fh); } function myDeleteFile($f){ global $gPath,$dirlink; if(!hasRights($gPath.$f)){ echo("myDeleteFile not logged in!"); exit(); } //wrt("f=$f
"); $f=_rep($f,$gPath,""); $f=$dirlink.$f; //wrt("f1=$f
"); if(_in($f,"/NFTs")){ alert("Invalid action"); exit(); } $ext=get_ext($f); if(isImage($f) && !_in($f,"_tn."))$f=_rep($f,$ext,"_tn".$ext); //wrt("f2=$f
ext=$ext
"); if(_ix($f,$gPath)!=0)$f=$gPath.$f; //exit("deleting ".$f.", "._ix($f,$gPath).", path=".$gPath.", dirlink=".$dirlink); //wrt("f3=$f
"); if(file_exists($f))unlink($f); if(strpos($f,"_tn.")){ $f=str_replace("_tn.",".",$f); //wrt("f4=$f
"); if(file_exists($f))unlink($f); }} function myDeleteDir($d, $DeleteMe){ //deletes all files first then the dir (if deleteme is true) global $gPath; if(!hasRights($gPath.$d)){ echo("myDeleteDir not logged in!"); exit(); } if(_in($gPath.$d,"/NFTs")){ alert("Invalid action"); exit(); } $origdir=$d; if(_ix($d,$gPath)!=0)$d=$gPath.$d; if(!$dh = @opendir($d)) return; while (($obj = readdir($dh))) { if($obj=='.' || $obj=='..') continue; //wrtb("deleting ".$d.'/'.$obj);; if (!@unlink($d.'/'.$obj))myDeleteDir($origdir.'/'.$obj, true); } if($DeleteMe){ closedir($dh); @rmdir($d); }} function myDeleteFolders($d){ //deletes all folders global $gPath,$dir; if(!hasRights($gPath.$d)){ echo("myDeleteFolders not logged in!"); exit(); } $origdir=$d; $d=$gPath.$d; if(_in($d,"/NFTs")){ alert("Invalid action"); exit(); } if(!$dh = @opendir($d)) return; while (($obj = readdir($dh))) { if(myFileType($obj)=="folder"){ //@unlink($d.'/'.$obj); delete_folder($d.'/'.$obj); }}} function delete_folder($dir) { if (!is_dir($dir)) { return false; // directory does not exist } $objects = scandir($dir); foreach ($objects as $object) { if ($object == "." || $object == "..") { continue; // skip . and .. } $full_path = $dir . "/" . $object; if (is_dir($full_path)) { delete_folder($full_path); // recursive call } else { unlink($full_path); // delete file } } reset($objects); rmdir($dir); // delete empty directory return true; } function myDeleteFiles($d,$typ="file"){ //deletes all files (web pages and text files etc.) global $gPath,$dir; if(!hasRights($gPath.$d)){ echo("myDeleteFiles not logged in!"); exit(); } $origdir=$d; $d=$gPath.$d; if(!$dh = @opendir($d)) return; while (($obj = readdir($dh))) { if(myFileType($obj)==$typ)@unlink($d.'/'.$obj); }} function myDeleteActions($d){ //deletes all files (web pages and text files etc.) global $gPath,$dir; $origdir=$d; //echo("gPath=".$gPath.", dir=".$dir.", d=".$d); $d=$gPath.$d; if(!$dh = @opendir($d)) return; while (($obj = readdir($dh))) { if(myFileType($obj)=="nft")@unlink($d.'/'.$obj); }} function myDeletePixis($d){ //deletes all files (web pages and text files etc.) global $gPath,$dir; if(!hasRights($gPath.$d)){ echo("myDeletePixis not logged in!"); exit(); } $origdir=$d; //echo("gPath=".$gPath.", dir=".$dir.", d=".$d); $d=$gPath.$d; if(!$dh = @opendir($d)) return; while (($obj = readdir($dh))) { if(myFileType($obj)=="pixi")@unlink($d.'/'.$obj); }} function myDeleteImages($d){ //deletes all images but NOT the _pvt_images.txt global $gPath; if(!hasRights($gPath.$d)){ echo("myDeleteImages not logged in!"); exit(); } $origdir=$d; $d=$gPath.$d; if(!$dh = @opendir($d)) return; while (($obj = readdir($dh))) { if(myFileType($obj)=="image")@unlink($d.'/'.$obj); }} //----rename file or dir and/or create new path if necessary --- function myRename($dir,$newdir){ global $gPath; if(_in($newdir,"NFTs")){ alert("Invalid action - name contains NFTs"); exit(); } $path=getPath($newdir); if(!hasRights($path)){ echo("myRename not logged in!"); exit(); } if($path!="")myMkdir($path); //wrtb("path=".$path.", renaming ".$gPath.$dir." to ".$gPath.$newdir);; $result=rename($gPath.$dir,$gPath.$newdir); return $result;} //------- copy file and create new path if necessary -------- function myCopyFile($dir,$newdir){ global $gPath; if(_in($newdir,"NFTs")){ alert("Invalid action - name contains NFTs"); exit(); } $path=getPath($newdir); if(!hasRights($path)){ echo("myCopyFile not logged in!"); exit(); } if($path!="")myMkdir($path); if(_ix($dir,$gPath)!=0)$dir=$gPath.$dir; if(_ix($newdir,$gPath)!=0)$newdir=$gPath.$newdir; //wrtb("copy ".$dir." to ".$newdir); $result=copy($dir,$newdir); return $result;} //------- copy a file from the root to the user's root folder -------- function myForceCopyFile($dir,$newdir){ global $gPath; $path=getPath($newdir); //wrtb("dir=".$gPath.$path); if(_in($path,"/"))$v=@mkdir($gPath.$path, 0755); if(_ix($dir,$gPath)!=0)$dir=$gPath.$dir; if(_ix($newdir,$gPath)!=0)$newdir=$gPath.$newdir; //wrtb("copy ".$dir." to ".$newdir); $result=copy($dir,$newdir); return $result;} //------- copy dir and create new path if necessary -------- function myCopyDir($dir,$newdir){ global $gPath,$dirlink; if(_in($newdir,"NFTs")){ alert("Invalid action - name contains NFTs"); exit(); } myMkdir($newdir); if(_ix($dir,$gPath)!=0)$dir=$gPath.$dir; if(_ix($newdir,$gPath)!=0)$newdir=$gPath.$newdir; if($d=@opendir($dir)){ while(($file=readdir($d))!==false){ if($file!=".." && $file!="."){ copy($gPath.$dirlink.$file,$newdir."/".$file); }} closedir($d); }} function myMkdir($path,$noLoginOk=0){ global $gPath; if(_in($path,"NFTs")){ alert("Invalid action - name contains NFTs"); exit(); } $path=$gPath.$path; if(!hasRights($path) && !$noLoginOk){ echo("myMkDir not logged in!"); exit(); } $xmode = 0755; /****** THIS CREATES MULTIPLE FOLDERS (THE WHOLE PATH) - NOT A GOOD IDEA? ******** $path = rtrim(preg_replace(array("/\\\\/", "/\/{2,}/"), "/", $path), "/"); $e = explode("/", ltrim($path, "/")); if(substr($path, 0, 1) == "/") { $e[0] = "/".$e[0]; } $c = count($e); $cp = $e[0]; for($i = 1; $i < $c; $i++) { //wrtb("cp=".$cp); @mkdir($cp,$xmode); //if(!is_dir($cp) && !@mkdir($cp, $xmode))return false; $cp .= "/".$e[$i]; } */ $v=@mkdir($path, $xmode); return $v; } //-------------------------------- VIDEOS -------------------------------------- function myAddVideo($tid,$tit){ global $dirlink,$videofile,$dir,$gLoggedIn,$gID; if(!$gID)exit("not logged in"); if(!$gLoggedIn){ // not in acct folder so default to home dir $tmpdir=$gID."/"; }else{ $tmpdir=$dirlink; } $tit=_rep($tit,";",""); $tit=_rep($tit,",",""); $tit=_rep($tit,"~!@","'"); $txt=myReadFile($tmpdir.$videofile); if($txt=="")$txt=","; //wrt("alert('tid=".$tid.", file=".$dirlink.$videofile.", txt=".$txt."');"); if(!_in($tid,"@vid@"))$tid="@vid@".$tid; $tmp=$tid.";".$tit; if(!_in($txt,$tmp)){ //$txt.=$tid.";".$tit.","; $txt=",".$tid.";".$tit.$txt; myWriteFile($tmpdir.$videofile,$txt); } } function myDeleteVideo($f){ global $dir,$dirlink; myDeleteVid($dirlink,$f); //if($dir)myDeleteVid(getDir(""),$f); //myDeleteGroozeVid(getTail($f)); return true; } function myDeleteVid($dirlnk,$f){ global $gPath,$videofile,$gLoggedIn; if(!$gLoggedIn)exit("alert('not logged in');"); $tit=""; $found=0; $newtxt=","; $video=getTail($f); if(!_in($video,"@vid@"))$video="@vid@".$video; $txt=myReadFile($dirlnk.$videofile); $a=_split($txt,","); for($i=0;$i
".$dirlink.$videofile.",

".$newtxt); myWriteFile($dirlnk.$videofile,$newtxt); } function getVideoTitle($f){ global $gPath,$dirlink,$videofile; $video=getTail($f); if(!_in($video,"@vid@"))$video="@vid@".$video; $txt=myReadFile($dirlink.$videofile); $a=_split($txt,","); for($i=0;$i1)return $b[1]; }} return getVideoId($video); } function getVideoId($f){ $video=getTail($f); return _rep($video,"@vid@",""); } //-----------------------------------crop()---------------------------------------------- function crop($name,$filename,$x,$y,$w,$h,$ext){ if(!hasRights($filename)){ echo("crop not logged in! file=".$filename); exit(); } $ok="no"; if(preg_match("/png|PNG/",$ext)){ $src_img=imagecreatefrompng($name); $ok="png";} if(preg_match("/gif|GIF/",$ext)){ $src_img=imagecreatefromgif($name); $ok="gif";} if($ok=="no"){$src_img=imagecreatefromjpeg($name); $ok="jpg";} //default to jpg if($src_img && $ok!="no"){ $src_w=imageSX($src_img); $src_h=imageSY($src_img); //echo("src_w=".$src_w.", src_h=".$src_h."
"); $dst_img=ImageCreateTrueColor($w,$h); //imagecopyresampled() ($dst_image,$src_image ,$dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h ) //This will take a rectangular area from src_image of width src_w and height src_h //at position (src_x,src_y) and place it in a rectangular area of dst_image of width dst_w and height dst_h //at position (dst_x,dst_y). imagecopyresampled($dst_img,$src_img,0,0,$x,$y,$w,$h,$w,$h); if($ok=="png")imagepng($dst_img,$filename); if($ok=="gif")imagegif($dst_img,$filename); if($ok=="jpg")imagejpeg($dst_img,$filename); imagedestroy($dst_img); imagedestroy($src_img); return 1; } return 0; } function resize($name, $filename, $new_x, $new_y, $ext) { global $gPath; // Adjust file paths if needed if (!_in($name, $gPath)) { if (!_in(strtolower($name), "http")) $name = $gPath . $name; } if (!_in($filename, $gPath)) $filename = $gPath . $filename; // Check permissions if (!hasRights($filename)) { echo("resizeThumb not logged in! file=" . $filename); return 0; // Changed to return 0 for consistency with function return type } $ok = "no"; if (preg_match("/png|PNG/", $ext)) { $src_img = imagecreatefrompng($name); $ok = "png"; } elseif (preg_match("/gif|GIF/", $ext)) { $src_img = imagecreatefromgif($name); $ok = "gif"; } else { $src_img = imagecreatefromjpeg($name); $ok = "jpg"; // default to jpg } if ($src_img && $ok != "no") { $old_x = imagesx($src_img); // Fixed typo: imageSX -> imagesx $old_y = imagesy($src_img); // Fixed typo: imageSY -> imagesy // Handle zero values for new dimensions if ($new_x == 0) $new_x = $old_x; if ($new_y == 0) $new_y = $old_y; // Calculate thumbnail dimensions while maintaining aspect ratio if ($old_x > $old_y) { $thumb_x = $new_x; $thumb_y = $old_y * ($new_x / $old_x); } elseif ($old_x < $old_y) { $thumb_x = $old_x * ($new_y / $old_y); $thumb_y = $new_y; } else { $thumb_x = $new_x; $thumb_y = $new_y; } // Create destination image with integer dimensions $dst_img = imagecreatetruecolor((int)$thumb_x, (int)$thumb_y); // Preserve transparency for PNG if ($ok == "png") { imagealphablending($dst_img, false); imagesavealpha($dst_img, true); // Ensure source transparency is respected imagealphablending($src_img, false); imagesavealpha($src_img, true); } // Preserve GIF transparency if ($ok == "gif") { $transparent = imagecolortransparent($src_img); if ($transparent >= 0) { $transparent_color = imagecolorsforindex($src_img, $transparent); $trans_color = imagecolorallocate($dst_img, $transparent_color['red'], $transparent_color['green'], $transparent_color['blue']); imagefill($dst_img, 0, 0, $trans_color); imagecolortransparent($dst_img, $trans_color); } } // Resize the image imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, (int)$thumb_x, (int)$thumb_y, $old_x, $old_y); // Save the output if ($ok == "png") { imagepng($dst_img, $filename); } elseif ($ok == "gif") { imagegif($dst_img, $filename); } elseif ($ok == "jpg") { imagejpeg($dst_img, $filename); } // Clean up imagedestroy($dst_img); imagedestroy($src_img); return 1; } return 0; } //=============================== utilities ==================================== function str_replace_once($str_pattern, $str_replacement, $string){ if (strpos($string, $str_pattern) !== false){ $occurrence = strpos($string, $str_pattern); return substr_replace($string, $str_replacement, strpos($string, $str_pattern), strlen($str_pattern)); } return $string; } function reloadMenu($dir,$goback,$noreload,$loggingout){ echo(""); } function refreshMenu(){ ?> 0)$x=_left($x,$length); $x=_rep($x,"'",""); $x=_rep($x,"\"",""); $x=_rep($x,"<",""); } } return $x; } function winSuccessMsg($msg){ global $movers; echo("
Success"); if($msg)echo("

".$msg.""); echo("

"); } function successMsg($msg,$left=550,$top=10){ // this used to be used to do closeUtil() global $movers; echo("
Success!"); if($msg)echo("
".$msg."
"); echo(""); //echo("

"); } function errorMsg($msg,$left=550,$top=10){ echo("
Error
".$msg."
"); } function reload(){ //echo(""); echo(""); } function myGet($x){ if(isset($_GET[$x]))$v=$_GET[$x]; else $v=""; return $v;} function myPost($x){ if(isset($_POST[$x]))$v=$_POST[$x]; else $v=""; return $v;} function rqst($x){$v=myGet($x);if($v=="")$v=myPost($x);return $v;} function rqstq($x){return myGet($x);} function getIF($x){$v=myGet($x); if(!empty($v))return "\$".$x."='".$v."';"; return ""; } function mySession($x){ if(isset($_SESSION[$x])) $v=$_SESSION[$x]; else $v=""; return $v; } function myCookie($x){ if(isset($_COOKIE[$x])) $v=$_COOKIE[$x]; else $v=""; return $v; } function opacityTxt($i){ $i=_rep($i,"%",""); return "filter:alpha(opacity = ".$i."); moz-opacity:".($i/100)."; opacity:".($i/100).";";} function reloadSlideshow(){echo("");exit();} function reloadMsg($msg,$dir){echo("");} function wrt($s){echo($s);} function wrtb($s){echo($s."
");} function _in($txt,$v){if(empty($txt) || empty($v))return 0; //wrtb("

".$txt."-contains?-".$v."

");; $r=strpos($txt,$v);if($r===false)return 0;return 1;} function _ix($txt,$v){if(empty($txt) || empty($v))return false;$r=strpos($txt,$v);if($r===false)return -1;return $r;} function _rep($txt,$v1,$v2){return str_replace($v1,$v2,$txt);} function _split($txt,$v){return explode($v,$txt);} //function split($v,$txt){return explode($v,$txt);} // removed in php 7.0.0 function _left($x,$i){return substr($x,0,$i);} function _right($x,$i){return substr($x,($i*-1));} function _len($x){return strlen($x);} function alert($x){echo("");} function getUrl($url){$url=_rep($url," ","%20"); return file_get_contents($url);} function xtml($x){return _rep($x,"<","<");} function _leftStr($txt,$v){ $r=strpos($txt,$v); if(!$r)return $txt; return _left($txt,$r); } function getDisplayStyle($show){ if($show && $show!="no")return ""; return "display:none;"; } function getDisplayStyleAND($show1,$show2){ if($show1 && $show1!="no" && $show2 && $show2!="no")return ""; return "display:none;"; } //--------------------------- GET YOUTUBE TITLE -------------------------------- function getYoutubeTitle($vid){ $json = json_decode(file_get_contents("http://gdata.youtube.com/feeds/api/videos/".$vid."?v=2&alt=jsonc")); //echo ''; return $json->data->title; } //--------------------------- getYoutubeDetails() ------------------------------ function getYoutubeDetails($v,&$tid,&$tit,&$tim,&$desc,&$views){ global $movers,$roundedcorners; $tid=fetch($v,"watch?v=","\">",0); $tmpid=_split($tid,"&"); $tid=$tmpid[0]; $tit=fetch($v,"none;\" href=\"https://www.youtube.com/watch?v=".$tid,"",0); $a=_split($tit,">"); $tit=$a[1]; $b=_split($tit,"<"); $tit=$b[0]; $tit=_rep($tit,"&#39;",""); $tit=_rep($tit,"&quot;",""); $tit=_rep($tit,"&",""); $tit=_rep($tit,";",""); $tit=_rep($tit,"'",""); $tit=_rep($tit,",",""); $tit=_rep($tit,"??","?"); $tim=fetch($v,"font-size: 11px; font-weight: bold;\">","",0); $desc=fetch($v,"3px 0px;\">","",0); $desc=_rep($desc,"&#39;","'"); $views=fetch($v,"Views:","",0); } ?> not logged in