--- /dev/null
+<style type="text/css">\r
+<!--\r
+body,td,th {\r
+ font-family: Courier New, Courier, monospace;\r
+ font-size: 12px;\r
+ color: #000000;\r
+}\r
+body {\r
+ margin-left: 20px;\r
+ margin-top: 20px;\r
+}\r
+-->\r
+</style>\r
+<?php\r
+\r
+//add_picture.php\r
+include('../../../config.php');\r
+include_once(dirname(__FILE__).'/config.php'); //gallery config\r
+include_once($DIR_LIBS . 'ITEM.php');\r
+\r
+\r
+class NPG_PROMO_ACTIONS extends BaseActions {\r
+\r
+ var $parser;\r
+ var $thumbnails;\r
+ var $template;\r
+ var $CurrentThumb;\r
+\r
+ function NPG_PROMO_ACTIONS() {\r
+ $this->BaseActions();\r
+ }\r
+\r
+ function getdefinedActions() {\r
+ return array(\r
+ 'images',\r
+ 'thumbnail',\r
+ 'centeredtopmargin',\r
+ 'picturelink',\r
+ 'description'\r
+ ); \r
+ }\r
+ \r
+ function setTemplate(&$template) {$this->template = &$template;}\r
+ function setParser(&$parser) {$this->parser =& $parser; }\r
+ function setCurrentThumb(&$CurrentThumb) {$this->CurrentThumb = &$CurrentThumb;}\r
+ \r
+ function addimagethumbnail($thumbnails) {$this->thumbnails = $this->thumbnails . $thumbnails;}\r
+ function needtoaddpromo() {if($this->thumbnails <> '') return true; return false;}\r
+ \r
+ function parse_images() { echo $this->thumbnails; }\r
+ function parse_description() {echo $this->CurrentThumb->getdescription(); }\r
+ function parse_thumbnail() {echo $this->CurrentThumb->getthumbfilename();}\r
+ function parse_picturelink() {echo '<%gallery(link,picture,'.$this->CurrentThumb->getID().')%>';}\r
+ function parse_centeredtopmargin($height = 140,$adjustment = 0) {\r
+ $image_size = getimagesize($this->CurrentThumb->getthumbfilename());\r
+ $topmargin = ((intval($height) - intval($image_size[1])) / 2) + intval($adjustment);\r
+ echo 'margin-top: '.$topmargin.'px;';\r
+ }\r
+}\r
+\r
+//globals for add_picture.php\r
+global $NPG_CONF,$gmember,$manager,$NP_BASE_DIR;\r
+\r
+if(!$NPG_CONF['temp_table']) {\r
+ $NPG_CONF['temp_table'] = 'gallery_temp';\r
+ setNPGoption('temp_table','gallery_temp');\r
+}\r
+\r
+if(!$NPG_CONF['batch_add_num']) $NPG_CONF['batch_add_num'] = 10;\r
+\r
+//todo: display header\r
+\r
+if (!preg_match('/^([a-z0-9_]+|`[^`]+`)$/i',$NPG_CONF['temp_table'])) exit;\r
+$type = requestvar('type');\r
+switch($type) {\r
+ case 'firststage':\r
+ $exist_temp_table = mysql_query('SELECT 1 FROM '.$NPG_CONF['temp_table'].' LIMIT 0');\r
+ if ($exist_temp_table) sql_query('drop table '. $NPG_CONF['temp_table']);\r
+ if(requestVar('id')) $albumid = requestVar('id'); else $albumid = 0;\r
+ $number_of_uploads=$NPG_CONF['batch_add_num'];\r
+ addPictureForm($albumid, $number_of_uploads);\r
+ break;\r
+ case 'secondstage':\r
+ if(requestVar('id')) $albumid = requestVar('id'); else $albumid = 0;\r
+ $result = mysql_query('create table '.$NPG_CONF['temp_table']\r
+ .'(tempid int unsigned not null auto_increment PRIMARY KEY, '\r
+ .'memberid int unsigned, '\r
+ .'albumid int unsigned, '\r
+ .'filename varchar(60), '\r
+ .'intfilename varchar(60), '\r
+ .'thumbfilename varchar(60), '\r
+ .'title varchar(40), '\r
+ .'description varchar(255), '\r
+ .'promote tinyint unsigned default 0, '\r
+ .'error varchar(60) default NULL)' );\r
+\r
+ $i=0;\r
+ while ($uploadInfo = postFileInfo('uploadpicture'.$i)) {\r
+ if ($filename = $uploadInfo['name']) {\r
+ $filetype = $uploadInfo['type'];\r
+ $filesize = $uploadInfo['size'];\r
+ $filetempname = $uploadInfo['tmp_name'];\r
+ //this gets picasa captions from ITPC metadata\r
+ $size = getimagesize($filetempname, $info);\r
+ if (isset($info["APP13"])) {\r
+ $iptc = iptcparse($info["APP13"]);\r
+ $description = $iptc["2#120"][0];\r
+ }\r
+ //adds a picture to the temp table so user can add description, etc before actually adding to database\r
+ add_temp($albumid, $filename, $filetype, $filesize, $filetempname,$description);\r
+ }\r
+ $i++;\r
+ }\r
+ addTempPictureForm($albumid);\r
+ break;\r
+ case 'massupload' :\r
+ //if the referring address is not this page, drop the table.\r
+ if(!stristr($_SERVER['HTTP_REFERER'],'add_picture.php')) {\r
+ $exist_temp_table = mysql_query('SELECT 1 FROM '.$NPG_CONF['temp_table'].' LIMIT 0');\r
+ if ($exist_temp_table) sql_query('drop table '. $NPG_CONF['temp_table']);\r
+ echo 'starting a fresh massupload batch </br>';\r
+ }\r
+ else echo '...continuing a massupload batch </br>';\r
+ //create a table (if the table is already there, mysql just adds to the table)\r
+ if(requestVar('id')) $albumid = requestVar('id'); else $albumid = 0;\r
+ $result = mysql_query('create table '.$NPG_CONF['temp_table']\r
+ .'(tempid int unsigned not null auto_increment PRIMARY KEY, '\r
+ .'memberid int unsigned, '\r
+ .'albumid int unsigned, '\r
+ .'filename varchar(60), '\r
+ .'intfilename varchar(60), '\r
+ .'thumbfilename varchar(60), '\r
+ .'title varchar(40), '\r
+ .'description varchar(255), '\r
+ .'promote tinyint unsigned default 0, '\r
+ .'error varchar(60) default NULL)' );\r
+ //checks to see how many files are in the upload directory\r
+ if ($handle = opendir($NP_BASE_DIR.'upload')) {\r
+ while (false !== ($filename = readdir($handle))) {\r
+ if (stristr($filename,'jpeg') or stristr($filename,'jpg')){\r
+ $scandir[] = $filename;\r
+ }\r
+ }\r
+ closedir($handle);\r
+ $numpics = count($scandir);\r
+\r
+ echo 'there are ' . $numpics .' pictures(jpg) left in the upload directory </br>';\r
+ echo 'the massupload script will loop though '.$NPG_CONF['batch_add_num'].' pictures per time to prevent timeouts</br>';\r
+ //if there are more than 10 files, remember to refresh, \r
+ //this is to solve the incomplete database writes when scripts timeout\r
+ //have to reopen the directory so it starts from the first file again\r
+ $handle = opendir($NP_BASE_DIR.'upload');\r
+ for ( $i=0; false !==($file=readdir($handle)) and $i<=$NPG_CONF['batch_add_num']; $i++ ) {\r
+ if (stristr($file,'jpeg') or stristr($file,'jpg')){\r
+ $filename = $file;\r
+ //echo $filename . 'uploaded </br>';\r
+ $filetype = filetype($NP_BASE_DIR.'upload/' . $file);\r
+ $filesize = filesize($NP_BASE_DIR.'upload/' . $file);\r
+ $filetempname = $NP_BASE_DIR.'upload/' . $file;\r
+ $size = getimagesize($filetempname, $info);\r
+ //this gets picasa captions from ITPC metadata\r
+ if (isset($info["APP13"])) {\r
+ $iptc = iptcparse($info["APP13"]);\r
+ $description = $iptc["2#120"][0];\r
+ }\r
+ //adds a picture to the temp table so user can add description, etc before actually adding to database\r
+ echo 'creating thumbnail for ';\r
+ echo $filename;\r
+ add_temp($albumid, $filename, $filetype, $filesize, $filetempname,$description);\r
+ echo '.... done. </br>';\r
+ } \r
+ }\r
+ closedir($handle);\r
+ }\r
+ //if there were more than 10 files, refresh, else proceed.\r
+ if($numpics > $NPG_CONF['batch_add_num']){\r
+ echo "<SCRIPT LANGUAGE=\"JavaScript\">window.location=\" ".$_SERVER['SCRIPT_NAME']."?type=massupload&id=".$albumid." \";</script>";\r
+ }\r
+ addTempPictureForm($albumid);\r
+ break;\r
+ \r
+ case 'addpictures':\r
+ $i=0;\r
+ $promoallowed = postvar('promopost');\r
+ $promo_ids = array();\r
+ $setorpromo = $NPG_CONF['setorpromo'];\r
+ \r
+ if(!$NPG_CONF['template']) $NPG_CONF['template'] = 1;\r
+ $template = & new NPG_TEMPLATE($NPG_CONF['template']);\r
+ \r
+ $actions = new NPG_PROMO_ACTIONS();\r
+ $parser = new PARSER($actions->getdefinedActions(),$actions);\r
+ $actions->setparser($parser);\r
+ $actions->settemplate($template);\r
+ \r
+ while($tempid = postvar('tid'.$i)) {\r
+ $title = postvar('title'.$i);\r
+ $description = postvar('description'.$i);\r
+ $promote = postvar('promote'.$i);\r
+ $albumid = postvar('album'.$i);\r
+\r
+ $filename = $NPG_CONF['galleryDir'].'/'.postvar('filename'.$i);\r
+ $int_filename = postvar('intfilename'.$i);\r
+ $thumb_filename = postvar('thumbfilename'.$i);\r
+ $keywords = postvar('keywords'.$i);\r
+\r
+ //check permissions to add\r
+ if($gmember->canAddPicture($albumid)) {\r
+ $pict = new PICTURE(0);\r
+ $newid = $pict->add_new($albumid, $filename, $title, $description, $int_filename, $thumb_filename,$keywords);\r
+ echo "$filename added<br/>";\r
+ \r
+ //promotion post\r
+ if ($promoallowed == '1' && $promote == 'yes') {\r
+ ob_start();\r
+ $actions->setCurrentThumb($pict);\r
+ $parser->parse($template->section['PROMO_IMAGES']);\r
+ $capt = ob_get_contents();\r
+ ob_end_clean();\r
+ $actions->addimagethumbnail($capt);\r
+ array_push($promo_ids, $newid);\r
+ }\r
+ unset($pict);\r
+ \r
+ $manager->notify('NPgPostAddPicture',array('pictureid' => $newid));\r
+ }\r
+ else {\r
+ echo "$filename not added due to bad album permissions<br/>";\r
+ //delete files\r
+ if(file_exists($galleryDir.'/'.$filename)) unlink($galleryDir.'/'.$filename);\r
+ if(file_exists($int_filename)) unlink($int_filename);\r
+ if(file_exists($thumb_filename)) unlink($thumb_filename);\r
+ \r
+ }\r
+\r
+ $i++;\r
+ }\r
+\r
+ if ($promoallowed == '1' && $actions->needtoaddpromo() ) {\r
+\r
+ $today = getdate();\r
+ $hour = $today['hours'];\r
+ $minutes = $today['minutes'];\r
+ $day = $today['mday'];\r
+ $month = $today['mon'];\r
+ $year = $today['year'];\r
+ \r
+ \r
+ ob_start();\r
+ $parser->parse($template->section['PROMO_TITLE']);\r
+ $title = ob_get_contents();\r
+ ob_end_clean();\r
+ if ($setorpromo=='promo'){\r
+ ob_start();\r
+ $parser->parse($template->section['PROMO_BODY']);\r
+ $body = ob_get_contents();\r
+ ob_end_clean();\r
+ }\r
+ if ($setorpromo=='sets'){\r
+ $body = '<%gallery(keywords,'.$promokeywords.',desc)%>';\r
+ }\r
+\r
+ ?>\r
+ <br/><hr/><br/>\r
+ <form><input type="button" value="<?php echo __NPG_PROMO_FORM_CANCEL; ?>" onclick="window.close()"/></form>\r
+ <form method="post" action="add_picture.php"><div>\r
+ <input type="hidden" name="type" value="promopost" />\r
+ <input type="hidden" name="catid" value="<?php echo $NPG_CONF['blog_cat']; ?>" />\r
+ <input type="hidden" name="hour" value="<?php echo $hour; ?>" />\r
+ <input type="hidden" name="minutes" value="<?php echo $minutes; ?>" />\r
+ <input type="hidden" name="day" value="<?php echo $day; ?>" />\r
+ <input type="hidden" name="year" value="<?php echo $year; ?>" />\r
+ <input type="hidden" name="month" value="<?php echo $month; ?>" />\r
+ <input type="hidden" name="ids" value="<?php echo implode(",",$promo_ids); ?>" />\r
+ \r
+ <p><label for "title_f"><?php echo __NPG_PROMO_FORM_TITLE.'<br/>'; ?></label>\r
+ <input type="text" name="title" id="title_f" value="<?php echo $title; ?>" /></p>\r
+ \r
+ <p><label for "body_f"><?php echo __NPG_PROMO_FORM_BODY.'<br/>'; ?></label>\r
+ <textarea rows="10" cols="50" name="body" id="body_f" >\r
+ <?php echo $body; ?></textarea></p>\r
+ <input type="submit" value="<?php echo __NPG_PROMO_FORM_SUBMIT; ?>" />\r
+ <br/>\r
+ \r
+ <?php\r
+ \r
+ }\r
+ else {\r
+ echo '<br/><hr/><br/>';\r
+ echo '<form><input type="button" value="'.__NPG_PROMO_FORM_CLOSE.'" onclick="window.close()"/></form>';\r
+ }\r
+ \r
+ \r
+ $exist_temp_table = mysql_query('SELECT 1 FROM '.$NPG_CONF['temp_table'].' LIMIT 0');\r
+ if ($exist_temp_table) sql_query('drop table '. $NPG_CONF['temp_table']);\r
+\r
+ break;\r
+ \r
+ case 'promopost':\r
+ global $manager;\r
+ $ids = explode(",", postvar('ids'));\r
+ $result = ITEM::createFromRequest();\r
+ if ($result['status'] == 'error')\r
+ echo $result['message']; \r
+ else {\r
+ $j=0;\r
+ while($ids[$j]) {\r
+ $query = 'insert into '.sql_table('plug_gallery_promo').' values ('.intval($ids[$j]).', '.intval($result['itemid']).')';\r
+ sql_query($query);\r
+ $j++;\r
+ }\r
+ echo __NPG_PROMO_FORM_SUCCESS.'<br/>';\r
+ echo '<form><input type="button" value="' . __NPG_PROMO_FORM_CLOSE . '" onclick="window.close()"/></form>';\r
+ \r
+ }\r
+ break;\r
+ \r
+ case 'picasa' :\r
+ if(requestVar('id')) $albumid = requestVar('id'); else $albumid = 0;\r
+ $result = mysql_query('create temporary table '.$NPG_CONF['temp_table']\r
+ .'(tempid int unsigned not null auto_increment PRIMARY KEY, '\r
+ .'memberid int unsigned, '\r
+ .'albumid int unsigned, '\r
+ .'filename varchar(60), '\r
+ .'intfilename varchar(60), '\r
+ .'thumbfilename varchar(60), '\r
+ .'title varchar(40), '\r
+ .'description varchar(255), '\r
+ .'promote tinyint unsigned default 0, '\r
+ .'error varchar(60) default NULL)' );\r
+ //creates an xml parser and puts the xml into an array\r
+ $p = xml_parser_create();\r
+ if (!($fp = fopen($NP_BASE_DIR."upload/index.xml", "r"))) {die("unable to open XML");}\r
+ $contents = fread($fp, filesize($NP_BASE_DIR."upload/index.xml"));\r
+ xml_parse_into_struct($p,$contents,$vals,$index);\r
+ fclose($fp);\r
+ xml_parser_free($p);\r
+ //get album item count and loop through the pictures, putting filename and description into the temp database\r
+ $count = $index["ALBUMITEMCOUNT"][0];\r
+ $albumitemcount = $vals[$count]["value"];\r
+ for ($i=0; $i<$albumitemcount;$i++) {\r
+ $count = $index["ITEMNAME"][$i];\r
+ $filename = $vals[$count]["value"];\r
+ $count = $index["ITEMCAPTION"][$i];\r
+ $description = $vals[$count]["value"];\r
+ $filename = trim($filename);\r
+ $filetempname = $NP_BASE_DIR.'upload/images/' . $filename ;\r
+ $filetype = filetype($filetempname);\r
+ $filesize = filesize($filetempname);\r
+ //adds a picture to the temp table so user can add description, etc before actually adding to database\r
+ add_temp($albumid, $filename, $filetype, $filesize, $filetempname, $description);\r
+ \r
+ }\r
+ \r
+ \r
+ default:\r
+ break;\r
+}\r
+\r
+\r
+\r
+\r
+//adds a picture to the temp table so user can add description, etc before actually adding to database\r
+\r
+function add_temp($albumid = 0, $filename, $filetype, $filesize, $filetempname, $description = '') {\r
+ global $NPG_CONF, $gmember, $NP_BASE_DIR,$manager;\r
+ $memberid = $gmember->getID();\r
+ if (!preg_match('/^([a-z0-9_]+|`[^`]+`)$/i',$NPG_CONF['temp_table'])) exit;\r
+ $temp_table = $NPG_CONF['temp_table'];\r
+ $int_filename = '';\r
+ $thumb_filename = '';\r
+ $error = '';\r
+ $defaulttitle = $filename;\r
+ $NPG_CONF['randomprefix'] = 6;\r
+\r
+ //add prefix to filename -- from http://www.phpdig.net/ref/rn22re349.html\r
+ //or add current date to filename , option set in plugin admin\r
+ $dateorrandom = $NPG_CONF['dateorrandom'];\r
+\r
+ if ($dateorrandom == 'randomprefix'){\r
+ $str = "";\r
+ for ($i = 0; $i < $NPG_CONF['randomprefix']; ++$i) {\r
+ $str .= chr(rand() % 26 + 97);\r
+ }\r
+ $filename = $str . $filename;\r
+ }\r
+ if ($dateorrandom == 'dateprefix'){\r
+ $str = "";\r
+ $str = date('Y-m-d');\r
+ $filename = $str . $filename;\r
+ }\r
+ //check filesize\r
+\r
+ if ($filesize > $NPG_CONF['max_filesize']) \r
+ $error = 'FILE_TOO_BIG';\r
+ else {\r
+ //check filetype -- currently only jpeg supported \r
+ if (eregi("\.jpeg$",$filename)) $ok = 1;\r
+ if (eregi("\.jpg$",$filename)) $ok = 1;\r
+ if (!$ok) \r
+ $error='BADFILETYPE';\r
+ else {\r
+ //check if gallery directory exists, try to create if it doesn't, check write permssions\r
+ $mediadir = $NPG_CONF['galleryDir'];\r
+ if (!@is_dir($NP_BASE_DIR.$mediadir)) {\r
+ $error = 'Disallowed';\r
+ $oldumask = umask(0000);\r
+ if (!@mkdir($NP_BASE_DIR.$mediadir, 0777)) $error='Cannot create gallery directory'; \r
+ else {\r
+ $error = NULL;\r
+ umask($oldumask); \r
+ }\r
+ }\r
+ else {\r
+ if (!is_writeable($NP_BASE_DIR.$mediadir)) $error = 'Gallery directory not writable';\r
+ else {\r
+ // add trailing slash (don't add it earlier since it causes mkdir to fail on some systems)\r
+ $mediadir .= '/';\r
+ //check if file already exists -- todo:if it does, add it to the database?\r
+ if (file_exists($NP_BASE_DIR.$mediadir . $filename)) $error = 'UPLOADDUPLICATE';\r
+ else {\r
+ //move file : courtesy of Leslie Holmes www.CyberSparrow.com\r
+ if (is_file($filetempname)) {\r
+ if (@rename($filetempname,$NP_BASE_DIR. $mediadir . $filename)){\r
+ // it worked, no problems\r
+ } elseif (copy($filetempname,$NP_BASE_DIR. $mediadir . $filename)){\r
+ // rename didn't work, so we tried copy and it worked, now delete original upload file\r
+ unlink($filetempname);\r
+ } else {\r
+ // neither method worked, so report error\r
+ $error = 'ERROR_UPLOADCOPY,ERROR_UPLOADMOVE' ;\r
+ }\r
+ } \r
+ //chmod file\r
+ $oldumask = umask(0000);\r
+ @chmod($NP_BASE_DIR.$mediadir . $filename, 0644); \r
+ umask($oldumask);\r
+\r
+ if(($NPG_CONF['graphics_library']=='gd' && GDisPresent()) || ($NPG_CONF['graphics_library']=='im' && IMisPresent()) ) {\r
+ //make intermediate file and thumbnail\r
+ $int_filename = resizeImage($mediadir.$filename, $NPG_CONF['maxwidth'], $NPG_CONF['maxheight'], $mediadir.$NPG_CONF['int_prefix'].$filename);\r
+ $thumb_filename = resizeImage($mediadir.$filename, $NPG_CONF['thumbwidth'], $NPG_CONF['thumbheight'], $mediadir.$NPG_CONF['thumb_prefix'].$filename);\r
+ }\r
+ else {\r
+ $error = 'Graphics library not configured properly';\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
+\r
+ \r
+\r
+ \r
+\r
+ $query = 'insert into '\r
+ .$temp_table\r
+ .'(tempid,memberid,albumid,filename,intfilename,thumbfilename,title,description,promote,error)'\r
+ ." values (NULL, ".intval($memberid).", ".intval($albumid).", '".addslashes($filename)."', '".addslashes($int_filename)."', '".addslashes($thumb_filename)."', '".addslashes($defaulttitle)."', '".addslashes($description)."', 0, '".addslashes($error)."') ";\r
+ //echo $query.'<br/>';\r
+ $result = sql_query($query);\r
+\r
+\r
+\r
+}\r
+\r
+\r
+?>\r