--- /dev/null
+<?php\r
+//support functions for NP_gallery\r
+\r
+function generateLink($type,$vars = 'date') {\r
+ global $manager,$CONF,$NPG_CONF;\r
+ $base = 'action.php?action=plugin&name=gallery&type=';\r
+ switch($type) {\r
+ case 'list':\r
+ $extra['sort'] = $vars;\r
+ $link = NP_Gallery::makelink('list',$extra);\r
+ break;\r
+ case 'addAlbumF':\r
+ case 'finaldeletepicture': \r
+ $link = NP_Gallery::makelink($type);\r
+ break;\r
+ case 'editAlbumF': \r
+ $link = $CONF['PluginURL'].'gallery/index.php?action=album&id='.$vars;\r
+ break;\r
+ case 'item': \r
+ case 'album': \r
+ $extra['sort'] = $NPG_CONF['defaultorder'];\r
+ $link = NP_Gallery::makelink('album',$extra);\r
+ case 'editPictureF':\r
+ case 'deletePictureF':\r
+ $extra['id'] = $vars;\r
+ $link = NP_Gallery::makelink($type,$extra);\r
+ break;\r
+ case 'addPictF': $link = $CONF['PluginURL'].'gallery/add_picture.php?type=firststage&id='.$vars;\r
+ break;\r
+ case 'batchaddPictF': $link = $CONF['PluginURL'].'gallery/add_picture.php?type=firststage';\r
+ break;\r
+ default: //$link = $base.$type;\r
+ break;\r
+ }\r
+ return $link;\r
+}\r
+\r
+\r
+function resizeImage($orig_filename, $target_w, $target_h, $target_filename) {\r
+ global $NPG_CONF, $DIR_NUCLEUS;\r
+ \r
+ $abs_dir = substr($DIR_NUCLEUS,0,strlen($DIR_NUCLEUS) - 8);\r
+ \r
+ if(!$NPG_CONF) {\r
+ $NPG_CONF = getNPGConfig();\r
+ echo 'NPG_CONF not defined in resizeImage<br />';\r
+ }\r
+ \r
+ if($NPG_CONF['graphics_library'] == 'gd') {\r
+\r
+ $src_image = imagecreatefromjpeg($abs_dir.$orig_filename);\r
+ \r
+ $old_x=imageSX($src_image);\r
+ $old_y=imageSY($src_image);\r
+ \r
+ //return original image if original image is smaller than resized dimensions\r
+ if ($old_x <= $target_w && $old_y <= $target_h) return $orig_filename;\r
+ \r
+ //resize\r
+ if ($old_x > $old_y) {\r
+ $thumb_w=$target_w;\r
+ $thumb_h=$old_y*($target_w/$old_x);\r
+ if($thumb_h > $target_h) {\r
+ $thumb_w=$old_x*($target_h/$old_y);\r
+ $thumb_h=$target_h;\r
+ }\r
+ }\r
+ if ($old_x < $old_y) {\r
+ $thumb_w=$old_x*($target_h/$old_y);\r
+ $thumb_h=$target_h;\r
+ if($thumb_w > $target_w) {\r
+ $thumb_w=$target_w;\r
+ $thumb_h=$old_y*($target_w/$old_x);\r
+ }\r
+ }\r
+ if ($old_x == $old_y) {\r
+ if($target_w > $target_h) {\r
+ $thumb_w=$old_x*($target_w/$old_y);\r
+ $thumb_h=$target_h;\r
+ } else {\r
+ $thumb_w=$target_w;\r
+ $thumb_h=$old_y*($target_h/$old_x);\r
+ }\r
+ } \r
+\r
+ $dst_image=ImageCreateTrueColor($thumb_w,$thumb_h);\r
+ imagecopyresampled($dst_image,$src_image,0,0,0,0,$thumb_w,$thumb_h,$old_x,$old_y); \r
+ \r
+ if(!imagejpeg($dst_image,$abs_dir.$target_filename,90)) return NULL;\r
+ \r
+ imagedestroy($dst_image);\r
+ imagedestroy($src_image);\r
+ \r
+ return $target_filename;\r
+ \r
+ } elseif ($NPG_CONF['graphics_library'] == 'im') {\r
+ \r
+ //code modified from coppermine photo gallery -- only the non-widows portion was tested, the windows portion was added to the coppermine code so that imagemagick would work even if installed in c:/program files\r
+ $imgFile = escapeshellarg($abs_dir.$orig_filename);\r
+ $output = array();\r
+ $target_file_esc = escapeshellarg($abs_dir.$target_filename);\r
+ \r
+ if (eregi("win",$_ENV['OS'])) {\r
+ $imgFile = str_replace("'","\"" ,$imgFile );\r
+ $cmd = "\"".str_replace("\\","/", $NPG_CONF['im_path'])."convert\" -quality {$NPG_CONF['im_quality']} {$NPG_CONF['im_options']} -resize {$target_w}x{$target_h} ".str_replace("\\","/" ,$imgFile )." ".str_replace("\\","/" ,$target_file_esc );\r
+ exec ("\"$cmd\"", $output, $retval);\r
+ } else {\r
+ $cmd = "{$NPG_CONF['im_path']}convert -quality {$NPG_CONF['im_quality']} {$NPG_CONF['im_options']} -resize {$target_w}x{$target_h} $imgFile $target_file_esc";\r
+ exec ($cmd, $output, $retval);\r
+ }\r
+ \r
+ //todo: check for errors\r
+ return $target_filename;\r
+\r
+ }\r
+ else return false;\r
+}\r
+\r
+\r
+function allowedTemplateTags($template) {\r
+ switch ($template) {\r
+ case 'LIST_HEADER':\r
+ case 'LIST_FOOTER':\r
+ $tags='Allowed tags: breadcrumb, sortbytitle, sortbydescription, sortbyowner, sortbymodified, '\r
+ .'sortbynumber, addalbumlink, addpicturelink. Allowed condition(if) tags: canaddalbum, canaddpicture';\r
+ break;\r
+ case 'LIST_BODY':\r
+ $tags='Allowed tags: albumlink, description, ownername, modified(date format), numberofimages';\r
+ break;\r
+ case 'ALBUM_HEADER':\r
+ case 'ALBUM_FOOTER':\r
+ $tags='Allowed tags: breadcrumb, editalbumlink, addpicturelink. Allowed condition(if) tags: caneditalbum, canaddpicture';\r
+ break;\r
+ case 'ALBUM_BODY':\r
+ $tags='Allowed tags: picturelink, thumbnail, picturetitle, centeredtopmargin(height,offset), pictureviews';\r
+ break;\r
+ case 'ITEM_HEADER':\r
+ case 'ITEM_FOOTER':\r
+ case 'ITEM_BODY':\r
+ $tags='Allowed tags: breadcrumb, nextlink, previouslink, fullsizelink, width, height, intermediatepicture, owner, date(format), editpicturelink, deletepicturelink, tooltips, id. Allowed condition(if) tags: caneditpicture';\r
+ break;\r
+ default:\r
+ break;\r
+ }\r
+ return $tags;\r
+}\r
+function getNPGConfig() {\r
+ $result = mysql_query('select * from '.sql_table('plug_gallery_config') );\r
+ if($result) {\r
+ while ($row = mysql_fetch_assoc($result)) {\r
+ $npg_config[$row['oname']] = $row['ovalue'];\r
+ }\r
+ }\r
+ return $npg_config;\r
+}\r
+\r
+function setNPGoption($oname, $ovalue) {\r
+ $oname=addslashes($oname);\r
+ $ovalue=addslashes($ovalue);\r
+ $result = mysql_query("select * from ".sql_table('plug_gallery_config')." where oname='$oname'" );\r
+ if(@ mysql_num_rows($result)) {\r
+ sql_query("update ".sql_table('plug_gallery_config')." set ovalue='$ovalue' where oname='$oname'");\r
+ } else {\r
+ sql_query("insert into ".sql_table('plug_gallery_config')." values ('$oname', '$ovalue' )");\r
+ }\r
+}\r
+\r
+function database_cleanup() {\r
+ //check numberofimages for each album\r
+ $result = mysql_query("select count(*) as noi, albumid from ".sql_table('plug_gallery_picture')." group by albumid" );\r
+ if($result) {\r
+ while ($row = mysql_fetch_assoc($result)) {\r
+ $result2 = mysql_query("select numberofimages from ".sql_table('plug_gallery_album')." where albumid = ".intval($row['albumid']));\r
+ $row2 = mysql_fetch_assoc($result2);\r
+ if($row2['numberofimages'] <> $row['noi']) {\r
+ sql_query("update ".sql_table('plug_gallery_album')." set numberofimages=".intval($row['noi'])." where albumid = ".intval($row['albumid']));\r
+ }\r
+ }\r
+ }\r
+ \r
+ //if picture is not in database, either give choice for deleting it or adding it to the database\r
+ \r
+}\r
+\r
+function rethumb($id=0) {\r
+ global $DIR_NUCLEUS,$NPG_CONF;\r
+ \r
+ $abs_dir = $DIR_NUCLEUS.'../';\r
+ $abs_dir = substr($DIR_NUCLEUS,0,strlen($DIR_NUCLEUS) - 8);\r
+ \r
+ //redo the thumbnails and intermediate images\r
+ if($id) $album = ' where albumid='.invtal($id);\r
+ $query = 'select * from '.sql_table('plug_gallery_picture').$album;\r
+ $result = sql_query($query);\r
+\r
+ echo 'Resizing images . . . ';\r
+ $timestart = microtime();\r
+ while($row=mysql_fetch_object($result)) {\r
+ //check if file exists:\r
+ \r
+ if(is_file($abs_dir.$row->filename)) {\r
+ //make new thumbnail\r
+ if($new_thumb = resizeImage($row->filename, $NPG_CONF['thumbwidth'], $NPG_CONF['thumbheight'], $row->thumb_filename)) {\r
+ sql_query('update '.sql_table('plug_gallery_picture').' set thumb_filename=\''.addslashes($new_thumb).'\' where pictureid='.intval($row->pictureid));\r
+ }\r
+ else echo '<br/>file: '.$abs_dir.$row->thumb_filename.' could not be resized<br/>';\r
+ //make new intermediate picture\r
+ if($new_thumb = resizeImage($row->filename, $NPG_CONF['maxwidth'], $NPG_CONF['maxheight'], $row->int_filename)) {\r
+ sql_query('update '.sql_table('plug_gallery_picture').' set int_filename=\''.addslashes($new_thumb).'\' where pictureid='.intval($row->pictureid));\r
+\r
+ }\r
+ else echo '<br/>file: '.$abs_dir.$row->int_filename.' could not be resized<br/>';\r
+ } else echo '<br/>file: '.$abs_dir.$row->filename.' does not exist -- no action taken<br/>';\r
+ }\r
+ echo 'Done<br/>';\r
+ $timeend = microtime();\r
+ $diff = number_format(((substr($timeend,0,9)) + (substr($timeend,-10)) - (substr($timestart,0,9)) - (substr($timestart,-10))),4);\r
+ echo "Execution time: $diff s <br/>";\r
+}\r
+function GDisPresent() {\r
+ if(function_exists('ImageCreateTrueColor')) return true;\r
+}\r
+\r
+function IMisPresent() {\r
+ global $NPG_CONF;\r
+ \r
+ $cmd = "{$NPG_CONF['im_path']}convert -version";\r
+ exec ($cmd, $output, $retval);\r
+ if($retval == 0) return true; \r
+ return false;\r
+}\r
+\r
+function getIMversion() {\r
+ global $NPG_CONF;\r
+ \r
+ $cmd = "{$NPG_CONF['im_path']}convert -version";\r
+ exec ($cmd, $output, $retval);\r
+ if($retval == 0) {\r
+ $pieces = explode(" ", $output[0]);\r
+ $imversion = $pieces[2];\r
+ return $imversion;\r
+ }\r
+ return false;\r
+}\r
+\r
+function checkgalleryconfig() {\r
+ global $NP_BASE_DIR,$NPG_CONF;\r
+ \r
+ $status = array();\r
+ \r
+ if((GDispresent() && $NPG_CONF['graphics_library'] == 'gd') || (IMisPresent() && $NPG_CONF['graphics_library'] == 'im')) {\r
+ $status['configured'] = true;\r
+ } else {\r
+ $status['message'] = 'Graphics engine not configured!<br/>';\r
+ }\r
+ \r
+ //check for presence of NPGallery skin\r
+ $res = sql_query('select sdname, scontent from '.sql_table('skin_desc').', '.sql_table('skin').' where sdesc=sdnumber and stype="index" and sdname="NPGallery" LIMIT 1');\r
+ if(!$res) {\r
+ $status['message'] .= 'mysql error checking for NPGallery skin: '.mysql_error().'<br/>';\r
+ }\r
+ else if(!mysql_num_rows($res)) {\r
+ $status['message'] .= 'NPGallery skin was not found<br/>';\r
+ }\r
+ else {\r
+ $row = mysql_fetch_object($res);\r
+ $haystack = stripslashes($row->scontent);\r
+ $s = stristr($haystack,'<%gallery');\r
+ if(!$s) {\r
+ $status['message'] .= '<%gallery%> tag not found in NPGallery skin<br/>';\r
+ }\r
+ }\r
+ \r
+ //check for directory and directory permissions\r
+ $mediadir = $NP_BASE_DIR.$NPG_CONF['galleryDir'];\r
+ if (!@is_dir($mediadir)) {\r
+ $error = 'Gallery directory not found<br/>';\r
+ $oldumask = umask(0000);\r
+ if (!@mkdir($mediadir, 0777)) {\r
+ $error = 'Cannot create gallery directory<br/>';\r
+ }\r
+ else {\r
+ $error = NULL;\r
+ umask($oldumask); \r
+ }\r
+ $status['message'] .= $error;\r
+ }\r
+ else {\r
+ if (!is_writeable($mediadir)) \r
+ $status['message'] = 'Gallery directory: '.$mediadir.' not writable';\r
+ }\r
+ \r
+ if($status['message']) $status['configured'] = false; else $status['configured'] = true;\r
+ \r
+ return $status;\r
+ \r
+}\r
+\r
+function converttimestamp($d) {\r
+ if(strlen($d) > 14) list($year, $month, $day, $hour, $minute, $second) = sscanf($d, "%4u-%2u-%2u %2u:%2u:%2u");\r
+ else list($year, $month, $day, $hour, $minute, $second) = sscanf($d, "%4u%2u%2u%2u%2u%2u");\r
+ $rd = mktime(intval($hour), intval($minute), intval($second), intval($month), intval($day), intval($year));\r
+ return $rd;\r
+}\r
+\r
+?>\r