define('TEXT_PAYPAL_FOR_SALE', 'Sales information'); define('TEXT_PAYPAL_PRICE', 'Price (USD)'); define('TEXT_PAYPAL_NO_PRICE', 'No price yet'); define('TEXT_PAYPAL_IN_STOCK', 'In stock'); define('TEXT_PAYPAL_OUT_OF_STOCK', 'Out of stock'); define('TEXT_PAYPAL_ITEM_ID', 'Item ID'); define('TEXT_PAYPAL_BUY', 'Buy this item'); define('TEXT_PAYPAL_OUT_BACK', 'Item is no longer in stock. Please click back and refresh the page to update inventory.'); define('TEXT_PAYPAL_PLEASE_WAIT', 'Redirecting to PayPal. Please wait... (Can take a few seconds)');
define('TEXT_GALLERY_NAME', 'Photo Gallery'); define('TEXT_BANNER', ''); define('TEXT_HOME', 'Home'); define('TEXT_CLOSE_IMG_VIEW', 'Close Image'); define('TEXT_ACTUAL_SIZE', 'Actual Size'); define('TEXT_FULLRES', 'Full resolution'); define('TEXT_PREVIOUS', '<< Previous'); define('TEXT_NEXT', 'Next >>'); define('TEXT_INFO', 'Information'); define('TEXT_DOWNLOAD', 'Download full-size image'); define('TEXT_SLIDESHOW', 'Slideshow'); define('TEXT_NO_IMAGES', 'No Images in gallery'); define('TEXT_DATE', 'Date'); define('TEXT_FILESIZE', 'File size'); define('TEXT_IMAGESIZE', 'Full Image'); define('TEXT_DISPLAYED_IMAGE', 'Displayed Image'); define('TEXT_DIR_NAME', 'Gallery Name'); define('TEXT_IMAGE_NAME', 'Image Name'); define('TEXT_FILE_NAME', 'File Name'); define('TEXT_DIRS', 'Directories'); define('TEXT_IMAGES', 'Images'); define('TEXT_IMAGE_NUMBER', 'Image number'); define('TEXT_FILES', 'Files'); define('TEXT_DESCRIPTION', 'Description'); define('TEXT_DIRECT_LINK_GALLERY', 'Direct link to Gallery'); define('TEXT_DIRECT_LINK_IMAGE', 'Direct link to Image'); define('TEXT_NO_PREVIEW_FILE', 'No Preview for file'); define('TEXT_IMAGE_LOADING', 'Image Loading '); define('TEXT_LINKS', 'Links'); define('TEXT_NOT_SCALED', 'Not Scaled'); define('TEXT_LINK_BACK', 'Back to my site'); define('TEXT_THIS_IS_FULL', 'Full'); define('TEXT_THIS_IS_PREVIEW', 'Preview'); define('TEXT_SCALED_TO', 'Scaled to'); define('TEXT_YES', 'Yes'); define('TEXT_NO', 'No'); define('TEXT_FIRST_VIEW', 'This is first view of this image. Refresh page to get information.');
define('TEXT_LOGIN', 'Login'); define('TEXT_LOGOUT', 'Logout'); define('TEXT_ADMIN', 'Admin'); define('TEXT_OK', 'OK'); define('TEXT_CANCEL', 'Cancel'); define('TEXT_DELETE', 'Delete'); define('TEXT_RENAME', 'Rename'); define('TEXT_MOVE', 'Move'); define('TEXT_MOVE_TO', 'Move to'); define('TEXT_MKDIR', 'Create Directory'); define('TEXT_UPLOAD', 'Upload'); define('TEXT_NOTHING', 'Nothing Selected'); define('TEXT_ONLY_ONE', 'Select only one element to use this function'); define('TEXT_ONE_IMAGE', 'Select only one image to use this function');
var actualSize = false; var fullImgLoaded = false; var imageLargerThanViewport = false; var naviOk = true; var index = false; var preloadImg = new Image(); var preloaded = -1; var preloadedFull = -1;
var viewportWidth; var viewportHeight; var imgFullWidth; var imgFullHeight; var selectedDirs = []; var selectedImages = []; var selectedFiles = []; var selecting = false; var itd = isTouchDevice();
"; if (KEYBOARD_NAVIGATION) { echo" function keyNavigate(key) { if (!selecting) { var k = (window.event) ? event.keyCode : key.keyCode; if (index) { if (k==33 || k==38 || k==37) /// Page up, Arrow up, Arrow left { cycleImg(-1); return false; } else if (k==32 || k==34 || k==39 || k==40) /// Space, Page down, Arrow right, Arrow down { cycleImg(1); return false; } else if (k==27) /// Esc { closeImageView(); return false; } } else { if (k==27 && navLink.length>2) /// Esc { document.location=phpSelf+'?sfpg='+navLink[navLink.length-3]+(showInfo?'&info=1':''); return false; } } } } document.onkeyup = keyNavigate; "; } echo"
function gebi(id) { return document.getElementById(id); }
function isTouchDevice() { var userAgent = window.navigator.userAgent; if ((userAgent.match(/iPad/i) || userAgent.match(/iPhone/i))) { return true; } return false; }
function setOpacity(id, opacity) { var element = gebi(id).style; element.opacity = (opacity / 100); /// std element.MozOpacity = (opacity / 100); /// firefox element.filter = 'alpha(opacity=' + opacity + ')'; /// IE element.KhtmlOpacity = (opacity / 100); /// Mac }
function fadeOpacity(id, opacityStart, opacityEnd, msToFade) { var element = gebi(id); var currentTime = new Date().getTime(); element.opacityStart = opacityStart; element.opacityEnd = opacityEnd; element.timeStart = currentTime; element.timeEnd = currentTime + msToFade; fadeLoop(id, currentTime); }
function fadeLoop(id, timeStarted) { var element = gebi(id); if (timeStarted != element.timeStart) { return; } var currentTime = new Date().getTime(); var frac = (currentTime - element.timeStart) / (element.timeEnd - element.timeStart); if (frac >= 1) { setOpacity(id, element.opacityEnd); if (element.opacityEnd == 0) { element.style.visibility='hidden'; } return; } setOpacity(id, ((element.opacityEnd - element.opacityStart) * frac) + element.opacityStart); setTimeout(\"fadeLoop('\" + id + \"', \" + timeStarted + \")\", 50); }
function thumbDisplayName(name) { dispName = name.substring(0,".THUMB_CHARS_MAX."); if (name.length > ".THUMB_CHARS_MAX.") { dispName += '...'; } return dispName; }
"; if (ADMIN===TRUE) { echo"
function toggleSelect() { if (selecting) { selecting = false; showMenu(); selectedDirs = []; selectedImages = []; selectedFiles = []; for (i = 1; i < dirLink.length; i++) { mouseOut(gebi('dir'+i), 'dir', i); } for (i = 1; i < imgLink.length; i++) { mouseOut(gebi('img'+i), 'img', i); } for (i = 1; i < fileLink.length; i++) { mouseOut(gebi('file'+i), 'file', i); } } else { selecting = true; showMenu(); } }
function admDelete() { var sel=selectedDirs.length + selectedImages.length + selectedFiles.length; if (sel==0) { alert('".sts(TEXT_NOTHING)."'); } else { if (confirm('".sts(TEXT_DELETE)." '+(selectedDirs.length?'\\n'+selectedDirs.length+' ".sts(TEXT_DIRS)."':'')+(selectedImages.length?'\\n'+selectedImages.length+' ".sts(TEXT_IMAGES)."':'')+(selectedFiles.length?'\\n'+selectedFiles.length+' ".sts(TEXT_FILES)."':'')+'?') == true) { var form = makeForm(); form.appendChild(makeInput('func','delete')); formAddSelected(form); submitForm(form); } } }
function formAddSelected(form) { for (i=0; i<selectedDirs.length; i++) { form.appendChild(makeInput('elems[]',dirLink[selectedDirs[i]])); } for (i=0; i<selectedImages.length; i++) { form.appendChild(makeInput('elems[]',imgLink[selectedImages[i]])); } for (i=0; i<selectedFiles.length; i++) { form.appendChild(makeInput('elems[]',fileLink[selectedFiles[i]])); } }
function admRename() { var sel=selectedDirs.length + selectedImages.length + selectedFiles.length; if (sel>1) { alert('".sts(TEXT_ONLY_ONE)."'); } else if (sel<1) { alert('".sts(TEXT_NOTHING)."'); } else { if (selectedDirs.length>0) { oldName = dirName[selectedDirs[0]]; oldEle = dirLink[selectedDirs[0]]; } if (selectedImages.length>0) { oldName = imgName[selectedImages[0]]; oldEle = imgLink[selectedImages[0]]; } if (selectedFiles.length>0) { oldName = fileName[selectedFiles[0]]; oldEle = fileLink[selectedFiles[0]]; } var newName = prompt('".sts(TEXT_RENAME)."', oldName); if (newName != null) { var form = makeForm(); form.appendChild(makeInput('func','rename')); form.appendChild(makeInput('eleToRen',oldEle)); form.appendChild(makeInput('newName',newName)); submitForm(form); } } }
function admMove(dir) { var sel=selectedDirs.length + selectedImages.length + selectedFiles.length; if (sel<1) { alert('".sts(TEXT_NOTHING)."'); } else { var ifrm = document.createElement('iframe'); ifrm.setAttribute('src', phpSelf+'?cmd=dirs&sfpg='+dir); var ele=gebi('box_data'); ele.innerHTML=''; ele.appendChild(ifrm); } }
function admMovePost(toFolder,toName) { var ele=gebi('box_admin'); ele.style.visibility='hidden'; ele.innerHTML=''; if ((toFolder!==false) && (toName!==false)) { if (confirm('".sts(TEXT_MOVE)." '+(selectedDirs.length?'\\n'+selectedDirs.length+' ".sts(TEXT_DIRS)."':'')+(selectedImages.length?'\\n'+selectedImages.length+' ".sts(TEXT_IMAGES)."':'')+(selectedFiles.length?'\\n'+selectedFiles.length+' ".sts(TEXT_FILES)."':'')+'\\n-> '+toName+'?') == true) { var form = makeForm(); form.appendChild(makeInput('func','move')); form.appendChild(makeInput('toFolder',toFolder)); formAddSelected(form); submitForm(form); } } }
function admSell() { var sel=selectedDirs.length + selectedImages.length + selectedFiles.length; if (sel<1) { alert('".sts(TEXT_NOTHING)."'); } else if ((sel>1)||(selectedImages.length!=1)) { alert('".sts(TEXT_ONE_IMAGE)."'); } else { eName = imgName[selectedImages[0]]; eLink = imgLink[selectedImages[0]]; if (typeof imgSell[selectedImages[0]]!='undefined') { var sellSplint = imgSell[selectedImages[0]].split('|'); var ePrice = (((typeof sellSplint[0]!='undefined')&&(sellSplint[0]!=''))?sellSplint[0]:0.0); var eAmount = (((typeof sellSplint[1]!='undefined')&&(sellSplint[1]!=''))?sellSplint[1]:0); var eIdent = (((typeof sellSplint[2]!='undefined')&&(sellSplint[2]!=''))?sellSplint[2]:''); } else { var ePrice = 0; var eAmount = 0; var eIdent = ''; } var boxForm = '<strong>".sts(TEXT_PAYPAL_FOR_SALE)."</strong>: '+eName+'<br><br>'+ '<span class=\"sfpg_button\" onclick=\"admSellPost(\''+eLink+'\', \''+eName+'\', \'ok\')\">".TEXT_OK."</span>'+ '<span class=\"sfpg_button\" onclick=\"admSellPost(\''+eLink+'\', \''+eName+'\',\'del\')\">".TEXT_DELETE."</span>'+ '<span class=\"sfpg_button\" onclick=\"admSellPost(0,0,\'cancel\')\">".TEXT_CANCEL."</span><br><br>'+ '".sts(TEXT_PAYPAL_PRICE).": <input type=\"text\" value=\"'+ePrice+'\" id=\"ePrice\"><br>'+ '".sts(TEXT_PAYPAL_IN_STOCK).": <input type=\"text\" value=\"'+eAmount+'\" id=\"eAmount\"><br>'+ '".sts(TEXT_PAYPAL_ITEM_ID).": <input type=\"text\" value=\"'+eIdent+'\" id=\"eIdent\">'; var ele=gebi('box_admin'); ele.innerHTML=boxForm; ele.style.visibility='visible'; } }
function admSellPost(link, name, action) { var ePrice = gebi('ePrice').value; var eAmount = gebi('eAmount').value; var eIdent = gebi('eIdent').value; var ele=gebi('box_admin'); ele.style.visibility='hidden'; ele.innerHTML=''; if (action=='del') { if (confirm('".sts(TEXT_DELETE.' '.TEXT_PAYPAL_FOR_SALE).": '+name+'?') == true) { var form = makeForm(); form.appendChild(makeInput('func','sell')); form.appendChild(makeInput('action','del')); form.appendChild(makeInput('ele',link)); submitForm(form); } } if (action=='ok') { var form = makeForm(); form.appendChild(makeInput('func','sell')); form.appendChild(makeInput('action','save')); form.appendChild(makeInput('ePrice',ePrice)); form.appendChild(makeInput('eAmount',eAmount)); form.appendChild(makeInput('eIdent',eIdent)); form.appendChild(makeInput('ele',link)); submitForm(form); } }
function admDesc() { var sel=selectedDirs.length + selectedImages.length + selectedFiles.length; if (sel>1) { alert('".sts(TEXT_ONLY_ONE)."'); } else { var eName; var eLink; var eDesc; if (selectedDirs.length>0) { eName = dirName[selectedDirs[0]]; eLink = dirLink[selectedDirs[0]]; var splint = dirInfo[selectedDirs[0]].split('|'); eDesc = splint[4]; } else if (selectedImages.length>0) { eName = imgName[selectedImages[0]]; eLink = imgLink[selectedImages[0]]; var splint = imgInfo[selectedImages[0]].split('|'); eDesc = splint[29]; } else if (selectedFiles.length>0) { eName = fileName[selectedFiles[0]]; eLink = fileLink[selectedFiles[0]]; var splint = fileInfo[selectedFiles[0]].split('|'); eDesc = splint[2]; } else { eName = dirName[0]; eLink = dirLink[0]; var splint = dirInfo[0].split('|'); eDesc = splint[4]; } var boxForm = '".sts(TEXT_DESCRIPTION).": '+eName+'<br><br>'+ '<span class=\"sfpg_button\" onclick=\"admDescPost(\''+eLink+'\', \''+eName+'\', \'ok\')\">".sts(TEXT_OK)."</span>'+ '<span class=\"sfpg_button\" onclick=\"admDescPost(\''+eLink+'\', \''+eName+'\',\'del\')\">".sts(TEXT_DELETE)."</span>'+ '<span class=\"sfpg_button\" onclick=\"admDescPost(0,0,\'cancel\')\">".sts(TEXT_CANCEL)."</span><br><br>'+ '<textarea id=\"desctxt\" rows=\"20\" cols=\"100\">'+eDesc.replace(/<br>/gi,'<br>\\n')+'</textarea>'; var ele=gebi('box_admin'); ele.innerHTML=boxForm; ele.style.visibility='visible'; } }
function admDescPost(link, name, action) { var text=gebi('desctxt').value; var ele=gebi('box_admin'); ele.style.visibility='hidden'; ele.innerHTML=''; if (action=='del') { if (confirm('".sts(TEXT_DELETE." ".TEXT_DESCRIPTION).": '+name+'?') == true) { var form = makeForm(); form.appendChild(makeInput('func','desc')); form.appendChild(makeInput('action','del')); form.appendChild(makeInput('ele',link)); submitForm(form); } } if (action=='ok') { var form = makeForm(); form.appendChild(makeInput('func','desc')); form.appendChild(makeInput('action','save')); form.appendChild(makeInput('text',text)); form.appendChild(makeInput('ele',link)); submitForm(form); } }
function sendData(data) { var ele=gebi('box_admin'); ele.innerHTML=data; ele.style.visibility='visible'; }
function admMakeDir() { var newDir = prompt('".sts(TEXT_MKDIR)."'); if (newDir) { var form = makeForm(); form.appendChild(makeInput('func','makedir')); form.appendChild(makeInput('dir',newDir)); form.appendChild(makeInput('path',dirLink[0])); submitForm(form); } }
function makeInput(name,value) { var inp = document.createElement('input'); inp.setAttribute('type','hidden'); inp.setAttribute('name',name); inp.setAttribute('value',value); return inp; }
function makeForm() { var selectForm = document.createElement('form'); selectForm.setAttribute('method','post'); selectForm.setAttribute('id','selectForm'); selectForm.setAttribute('action', phpSelf+'?sfpg='+dirLink[0]+(showInfo?'&info=1':'')); return selectForm; }
function submitForm(form) { document.getElementsByTagName('body')[0].appendChild(form); gebi('selectForm').submit(); }
function selectElement(that, arr, nr) { var ele = arr.indexOf(nr); if (ele == -1) { arr.push(nr); } else { arr.splice(ele, 1); } } "; } echo "
function isSelected(type, nr) { if (type == 'dir') { var ele = selectedDirs.indexOf(nr); } else if (type == 'img') { var ele = selectedImages.indexOf(nr); } else if (type == 'file') { var ele = selectedFiles.indexOf(nr); } if (ele == -1) { return false; } else { return true; } }
function mouseOver(that, type, nr) { fillInfo(type, nr); if (isSelected(type, nr)) { that.className='innerbox_marked'; } else if (type=='dir') { that.className='innerboxdir_hover'; } else if (type=='img') { that.className='innerboximg_hover'; } else if (type=='file') { that.className='innerboxfile_hover'; } }
function mouseOut(that, type, nr) { fillInfo('dir', 0); if (isSelected(type, nr)) { that.className='innerbox_marked'; } else if (type=='dir') { that.className='innerboxdir'; } else if (type=='img') { that.className='innerboximg'; } else if (type=='file') { that.className='innerboxfile'; } }
function mouseClick(that, type, nr) { if (selecting) { if (type == 'dir') { selectElement(that, selectedDirs, nr); that.className=(isSelected(type, nr)?'innerbox_marked':'innerboxdir'); } else if (type == 'img') { selectElement(that, selectedImages, nr); that.className=(isSelected(type, nr)?'innerbox_marked':'innerboximg'); } else if (type == 'file') { selectElement(that, selectedFiles, nr); that.className=(isSelected(type, nr)?'innerbox_marked':'innerboxfile'); } } else { if (type == 'dir') { openGallery(nr); } else if (type == 'img') { openImageView(nr, false); } else if (type == 'file') { openFile(nr); } } }
if (SECURITY_PHRASE=='') { if ($sc=@file_get_contents($_SERVER['SCRIPT_FILENAME'])) { $phrase=sfpg_random(30); $nr_replace=0; $sc=str_replace("define('SECURITY"."_PHRASE', '');","define('SECURITY_PHRASE', '".$phrase."');",$sc,$nr_replace); if ($nr_replace === 1) { if (file_put_contents($_SERVER['SCRIPT_FILENAME'],$sc)) { header('Location: '.$_SERVER['PHP_SELF']); exit; } } } echo 'You have to set the SECURITY_PHRASE in the top of the script! See readme.txt for description.'; exit; }
if (PASSWORD!=='') { session_start(); if (isset($_GET['cmd']) and ($_GET['cmd']=='logout')) { session_unset(); header('Location: '.$_SERVER['PHP_SELF']); exit; } if (($_SESSION['sfpg_access']!==TRUE) or ($_SESSION['sfpg_self']!==$_SERVER['PHP_SELF'])) { if (isset($_POST['pw']) and ($_POST['pw']===PASSWORD)) { $_SESSION['sfpg_access']=TRUE; $_SESSION['sfpg_self']=$_SERVER['PHP_SELF']; } else { header('Content-Type: text/html; charset="'.CHARSET.'"'); echo '<!DOCTYPE html><html><head><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"><meta charset="'.CHARSET.'"><title></title></head><body>'. '<form name="pf" action="'.$_SERVER['REQUEST_URI'].'" method="post">'. '<input type="password" name="pw" id="pw" autofocus>'. '<input type="submit" name="su" value="'.TEXT_LOGIN.'">'. '</form></body></html>'; session_write_close(); exit; } } session_write_close(); }
$get_set = FALSE; if (isset($_GET['sfpg'])) { $get = sfpg_url_decode($_GET['sfpg']); if ($get) { define('GALLERY', $get[0]); define('IMAGE', $get[1]); $get_set = TRUE; } } if (!$get_set) { define('GALLERY', ''); define('IMAGE', ''); }
if (isset($_GET['cmd'])) { if ($get_set) { if ($_GET['cmd'] == 'thumb') { sfpg_image(GALLERY, IMAGE, 'thumb'); exit; }
if ($_GET['cmd'] == 'image') { sfpg_image(GALLERY, IMAGE, 'image'); exit; }
if ($_GET['cmd'] == 'preview') { if (USE_PREVIEW) { sfpg_image(GALLERY, IMAGE, 'preview'); } exit; }
if (($_GET['cmd'] == 'dl') and TEXT_DOWNLOAD!='') { sfpg_image(GALLERY, IMAGE, 'image', TRUE); exit; }