2 //support functions for NP_gallery
\r
4 function generateLink($type,$vars = 'date') {
\r
5 global $manager,$CONF,$NPG_CONF;
\r
6 $base = 'action.php?action=plugin&name=gallery&type=';
\r
9 $extra['sort'] = $vars;
\r
10 $link = NP_Gallery::makelink('list',$extra);
\r
13 case 'finaldeletepicture':
\r
14 $link = NP_Gallery::makelink($type);
\r
17 $link = $CONF['PluginURL'].'gallery/index.php?action=album&id='.$vars;
\r
21 $extra['sort'] = $NPG_CONF['defaultorder'];
\r
22 $link = NP_Gallery::makelink('album',$extra);
\r
23 case 'editPictureF':
\r
24 case 'deletePictureF':
\r
25 $extra['id'] = $vars;
\r
26 $link = NP_Gallery::makelink($type,$extra);
\r
28 case 'addPictF': $link = $CONF['PluginURL'].'gallery/add_picture.php?type=firststage&id='.$vars;
\r
30 case 'batchaddPictF': $link = $CONF['PluginURL'].'gallery/add_picture.php?type=firststage';
\r
32 default: //$link = $base.$type;
\r
39 function resizeImage($orig_filename, $target_w, $target_h, $target_filename) {
\r
40 global $NPG_CONF, $DIR_NUCLEUS;
\r
42 $abs_dir = substr($DIR_NUCLEUS,0,strlen($DIR_NUCLEUS) - 8);
\r
45 $NPG_CONF = getNPGConfig();
\r
46 echo 'NPG_CONF not defined in resizeImage<br />';
\r
49 if($NPG_CONF['graphics_library'] == 'gd') {
\r
51 $src_image = imagecreatefromjpeg($abs_dir.$orig_filename);
\r
53 $old_x=imageSX($src_image);
\r
54 $old_y=imageSY($src_image);
\r
56 //return original image if original image is smaller than resized dimensions
\r
57 if ($old_x <= $target_w && $old_y <= $target_h) return $orig_filename;
\r
60 if ($old_x > $old_y) {
\r
62 $thumb_h=$old_y*($target_w/$old_x);
\r
63 if($thumb_h > $target_h) {
\r
64 $thumb_w=$old_x*($target_h/$old_y);
\r
68 if ($old_x < $old_y) {
\r
69 $thumb_w=$old_x*($target_h/$old_y);
\r
71 if($thumb_w > $target_w) {
\r
73 $thumb_h=$old_y*($target_w/$old_x);
\r
76 if ($old_x == $old_y) {
\r
77 if($target_w > $target_h) {
\r
78 $thumb_w=$old_x*($target_w/$old_y);
\r
82 $thumb_h=$old_y*($target_h/$old_x);
\r
86 $dst_image=ImageCreateTrueColor($thumb_w,$thumb_h);
\r
87 imagecopyresampled($dst_image,$src_image,0,0,0,0,$thumb_w,$thumb_h,$old_x,$old_y);
\r
89 if(!imagejpeg($dst_image,$abs_dir.$target_filename,90)) return NULL;
\r
91 imagedestroy($dst_image);
\r
92 imagedestroy($src_image);
\r
94 return $target_filename;
\r
96 } elseif ($NPG_CONF['graphics_library'] == 'im') {
\r
98 //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
99 $imgFile = escapeshellarg($abs_dir.$orig_filename);
\r
101 $target_file_esc = escapeshellarg($abs_dir.$target_filename);
\r
103 if (eregi("win",$_ENV['OS'])) {
\r
104 $imgFile = str_replace("'","\"" ,$imgFile );
\r
105 $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
106 exec ("\"$cmd\"", $output, $retval);
\r
108 $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
109 exec ($cmd, $output, $retval);
\r
112 //todo: check for errors
\r
113 return $target_filename;
\r
120 function allowedTemplateTags($template) {
\r
121 switch ($template) {
\r
122 case 'LIST_HEADER':
\r
123 case 'LIST_FOOTER':
\r
124 $tags='Allowed tags: breadcrumb, sortbytitle, sortbydescription, sortbyowner, sortbymodified, '
\r
125 .'sortbynumber, addalbumlink, addpicturelink. Allowed condition(if) tags: canaddalbum, canaddpicture';
\r
128 $tags='Allowed tags: albumlink, description, ownername, modified(date format), numberofimages';
\r
130 case 'ALBUM_HEADER':
\r
131 case 'ALBUM_FOOTER':
\r
132 $tags='Allowed tags: breadcrumb, editalbumlink, addpicturelink. Allowed condition(if) tags: caneditalbum, canaddpicture';
\r
135 $tags='Allowed tags: picturelink, thumbnail, picturetitle, centeredtopmargin(height,offset), pictureviews';
\r
137 case 'ITEM_HEADER':
\r
138 case 'ITEM_FOOTER':
\r
140 $tags='Allowed tags: breadcrumb, nextlink, previouslink, fullsizelink, width, height, intermediatepicture, owner, date(format), editpicturelink, deletepicturelink, tooltips, id. Allowed condition(if) tags: caneditpicture';
\r
147 function getNPGConfig() {
\r
148 $result = mysql_query('select * from '.sql_table('plug_gallery_config') );
\r
150 while ($row = mysql_fetch_assoc($result)) {
\r
151 $npg_config[$row['oname']] = $row['ovalue'];
\r
154 return $npg_config;
\r
157 function setNPGoption($oname, $ovalue) {
\r
158 $oname=addslashes($oname);
\r
159 $ovalue=addslashes($ovalue);
\r
160 $result = mysql_query("select * from ".sql_table('plug_gallery_config')." where oname='$oname'" );
\r
161 if(@ mysql_num_rows($result)) {
\r
162 sql_query("update ".sql_table('plug_gallery_config')." set ovalue='$ovalue' where oname='$oname'");
\r
164 sql_query("insert into ".sql_table('plug_gallery_config')." values ('$oname', '$ovalue' )");
\r
168 function database_cleanup() {
\r
169 //check numberofimages for each album
\r
170 $result = mysql_query("select count(*) as noi, albumid from ".sql_table('plug_gallery_picture')." group by albumid" );
\r
172 while ($row = mysql_fetch_assoc($result)) {
\r
173 $result2 = mysql_query("select numberofimages from ".sql_table('plug_gallery_album')." where albumid = ".intval($row['albumid']));
\r
174 $row2 = mysql_fetch_assoc($result2);
\r
175 if($row2['numberofimages'] <> $row['noi']) {
\r
176 sql_query("update ".sql_table('plug_gallery_album')." set numberofimages=".intval($row['noi'])." where albumid = ".intval($row['albumid']));
\r
181 //if picture is not in database, either give choice for deleting it or adding it to the database
\r
185 function rethumb($id=0) {
\r
186 global $DIR_NUCLEUS,$NPG_CONF;
\r
188 $abs_dir = $DIR_NUCLEUS.'../';
\r
189 $abs_dir = substr($DIR_NUCLEUS,0,strlen($DIR_NUCLEUS) - 8);
\r
191 //redo the thumbnails and intermediate images
\r
192 if($id) $album = ' where albumid='.invtal($id);
\r
193 $query = 'select * from '.sql_table('plug_gallery_picture').$album;
\r
194 $result = sql_query($query);
\r
196 echo 'Resizing images . . . ';
\r
197 $timestart = microtime();
\r
198 while($row=mysql_fetch_object($result)) {
\r
199 //check if file exists:
\r
201 if(is_file($abs_dir.$row->filename)) {
\r
202 //make new thumbnail
\r
203 if($new_thumb = resizeImage($row->filename, $NPG_CONF['thumbwidth'], $NPG_CONF['thumbheight'], $row->thumb_filename)) {
\r
204 sql_query('update '.sql_table('plug_gallery_picture').' set thumb_filename=\''.addslashes($new_thumb).'\' where pictureid='.intval($row->pictureid));
\r
206 else echo '<br/>file: '.$abs_dir.$row->thumb_filename.' could not be resized<br/>';
\r
207 //make new intermediate picture
\r
208 if($new_thumb = resizeImage($row->filename, $NPG_CONF['maxwidth'], $NPG_CONF['maxheight'], $row->int_filename)) {
\r
209 sql_query('update '.sql_table('plug_gallery_picture').' set int_filename=\''.addslashes($new_thumb).'\' where pictureid='.intval($row->pictureid));
\r
212 else echo '<br/>file: '.$abs_dir.$row->int_filename.' could not be resized<br/>';
\r
213 } else echo '<br/>file: '.$abs_dir.$row->filename.' does not exist -- no action taken<br/>';
\r
216 $timeend = microtime();
\r
217 $diff = number_format(((substr($timeend,0,9)) + (substr($timeend,-10)) - (substr($timestart,0,9)) - (substr($timestart,-10))),4);
\r
218 echo "Execution time: $diff s <br/>";
\r
220 function GDisPresent() {
\r
221 if(function_exists('ImageCreateTrueColor')) return true;
\r
224 function IMisPresent() {
\r
227 $cmd = "{$NPG_CONF['im_path']}convert -version";
\r
228 exec ($cmd, $output, $retval);
\r
229 if($retval == 0) return true;
\r
233 function getIMversion() {
\r
236 $cmd = "{$NPG_CONF['im_path']}convert -version";
\r
237 exec ($cmd, $output, $retval);
\r
239 $pieces = explode(" ", $output[0]);
\r
240 $imversion = $pieces[2];
\r
246 function checkgalleryconfig() {
\r
247 global $NP_BASE_DIR,$NPG_CONF;
\r
251 if((GDispresent() && $NPG_CONF['graphics_library'] == 'gd') || (IMisPresent() && $NPG_CONF['graphics_library'] == 'im')) {
\r
252 $status['configured'] = true;
\r
254 $status['message'] = 'Graphics engine not configured!<br/>';
\r
257 //check for presence of NPGallery skin
\r
258 $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
260 $status['message'] .= 'mysql error checking for NPGallery skin: '.mysql_error().'<br/>';
\r
262 else if(!mysql_num_rows($res)) {
\r
263 $status['message'] .= 'NPGallery skin was not found<br/>';
\r
266 $row = mysql_fetch_object($res);
\r
267 $haystack = stripslashes($row->scontent);
\r
268 $s = stristr($haystack,'<%gallery');
\r
270 $status['message'] .= '<%gallery%> tag not found in NPGallery skin<br/>';
\r
274 //check for directory and directory permissions
\r
275 $mediadir = $NP_BASE_DIR.$NPG_CONF['galleryDir'];
\r
276 if (!@is_dir($mediadir)) {
\r
277 $error = 'Gallery directory not found<br/>';
\r
278 $oldumask = umask(0000);
\r
279 if (!@mkdir($mediadir, 0777)) {
\r
280 $error = 'Cannot create gallery directory<br/>';
\r
286 $status['message'] .= $error;
\r
289 if (!is_writeable($mediadir))
\r
290 $status['message'] = 'Gallery directory: '.$mediadir.' not writable';
\r
293 if($status['message']) $status['configured'] = false; else $status['configured'] = true;
\r
299 function converttimestamp($d) {
\r
300 if(strlen($d) > 14) list($year, $month, $day, $hour, $minute, $second) = sscanf($d, "%4u-%2u-%2u %2u:%2u:%2u");
\r
301 else list($year, $month, $day, $hour, $minute, $second) = sscanf($d, "%4u%2u%2u%2u%2u%2u");
\r
302 $rd = mktime(intval($hour), intval($minute), intval($second), intval($month), intval($day), intval($year));
\r