OSDN Git Service

NP_gallery v0.95
authorkmorimatsu <kmorimatsu@1ca29b6e-896d-4ea0-84a5-967f57386b96>
Sat, 5 Jun 2010 23:17:05 +0000 (23:17 +0000)
committerkmorimatsu <kmorimatsu@1ca29b6e-896d-4ea0-84a5-967f57386b96>
Sat, 5 Jun 2010 23:17:05 +0000 (23:17 +0000)
git-svn-id: https://svn.sourceforge.jp/svnroot/nucleus-jp/plugin@1060 1ca29b6e-896d-4ea0-84a5-967f57386b96

40 files changed:
NP_gallery/tags/v0.95/NP_gallery.php [new file with mode: 0644]
NP_gallery/tags/v0.95/gallery/FAQ.html [new file with mode: 0644]
NP_gallery/tags/v0.95/gallery/Install notes.txt [new file with mode: 0644]
NP_gallery/tags/v0.95/gallery/NP_Gallery_Guide.rtf [new file with mode: 0644]
NP_gallery/tags/v0.95/gallery/NP_gallery.css [new file with mode: 0644]
NP_gallery/tags/v0.95/gallery/NP_gallery.js [new file with mode: 0644]
NP_gallery/tags/v0.95/gallery/add_picture.php [new file with mode: 0644]
NP_gallery/tags/v0.95/gallery/admin.php [new file with mode: 0644]
NP_gallery/tags/v0.95/gallery/album_class.php [new file with mode: 0644]
NP_gallery/tags/v0.95/gallery/comments.php [new file with mode: 0644]
NP_gallery/tags/v0.95/gallery/config.php [new file with mode: 0644]
NP_gallery/tags/v0.95/gallery/documentation/dev.html [new file with mode: 0644]
NP_gallery/tags/v0.95/gallery/documentation/manual.css [new file with mode: 0644]
NP_gallery/tags/v0.95/gallery/extra/gallery [new file with mode: 0644]
NP_gallery/tags/v0.95/gallery/forms.php [new file with mode: 0644]
NP_gallery/tags/v0.95/gallery/functions.php [new file with mode: 0644]
NP_gallery/tags/v0.95/gallery/gallery todo.txt [new file with mode: 0644]
NP_gallery/tags/v0.95/gallery/help.html [new file with mode: 0644]
NP_gallery/tags/v0.95/gallery/include/commentform-loggedin.template [new file with mode: 0644]
NP_gallery/tags/v0.95/gallery/include/commentform-notloggedin.template [new file with mode: 0644]
NP_gallery/tags/v0.95/gallery/index.php [new file with mode: 0644]
NP_gallery/tags/v0.95/gallery/language/english.php [new file with mode: 0644]
NP_gallery/tags/v0.95/gallery/list_class.php [new file with mode: 0644]
NP_gallery/tags/v0.95/gallery/member_class.php [new file with mode: 0644]
NP_gallery/tags/v0.95/gallery/picture_class.php [new file with mode: 0644]
NP_gallery/tags/v0.95/gallery/template.php [new file with mode: 0644]
NP_gallery/tags/v0.95/gallery/templatetags.html [new file with mode: 0644]
NP_gallery/tags/v0.95/gallery/update/Thumbs.db [new file with mode: 0644]
NP_gallery/tags/v0.95/gallery/update/default_templates_076.inc [new file with mode: 0644]
NP_gallery/tags/v0.95/gallery/update/default_templates_080.inc [new file with mode: 0644]
NP_gallery/tags/v0.95/gallery/update/default_templates_090.inc [new file with mode: 0644]
NP_gallery/tags/v0.95/gallery/update/default_templates_093.inc [new file with mode: 0644]
NP_gallery/tags/v0.95/gallery/update/default_templates_094.inc [new file with mode: 0644]
NP_gallery/tags/v0.95/gallery/update/np_gallery_update061.php [new file with mode: 0644]
NP_gallery/tags/v0.95/gallery/update/np_gallery_update075.php [new file with mode: 0644]
NP_gallery/tags/v0.95/gallery/update/np_gallery_update077.php [new file with mode: 0644]
NP_gallery/tags/v0.95/gallery/update/shadow.gif [new file with mode: 0644]
NP_gallery/tags/v0.95/gallery/update/shadow2.gif [new file with mode: 0644]
NP_gallery/tags/v0.95/gallery/update/shadow2.png [new file with mode: 0644]
NP_gallery/tags/v0.95/gallery/update/test.html [new file with mode: 0644]

diff --git a/NP_gallery/tags/v0.95/NP_gallery.php b/NP_gallery/tags/v0.95/NP_gallery.php
new file mode 100644 (file)
index 0000000..c206505
--- /dev/null
@@ -0,0 +1,697 @@
+<?php\r
+/*\r
+NP_Gallery\r
+Gallery Plugin for nucleus cms http://nucleuscms.org\r
+\r
+Security fix in 0.95 by Katsumi\r
+http://sourceforge.jp/projects/nucleus-jp/svn/view/plugin/NP_gallery/trunk/\r
+\r
+*/\r
+\r
+\r
+include_once(dirname(__FILE__).'/gallery/config.php');\r
+\r
+class NP_gallery extends NucleusPlugin {\r
+\r
+       /*\r
+       var $currentPage; \r
+       var $currentPageID; \r
+       var $currentPageOpt; \r
+*/\r
+\r
+       function getName() {return 'Nucleus Image Gallery';}\r
+       function getAuthor()  { return 'John Bradshaw, Gene Cambridge Tsai';    }\r
+       function getURL()       { return 'http://www.sircambridge.net/nucleus/index.php?itemid=57';     }\r
+       function getVersion() { return '0.95'; }\r
+       function getDescription() { return 'Image Gallery for Nucleus CMS';     }\r
+       function supportsFeature($what) { switch($what) {\r
+               case 'SqlTablePrefix': return 1; break;\r
+               case 'HelpPage': return 1; break;\r
+               default: return 0; break;\r
+               }\r
+       }\r
+\r
+       function getTableList() {\r
+               return array(sql_table('plug_gallery_album'), \r
+               sql_table('plug_gallery_picture'), \r
+               sql_table('plug_gallery_template'), \r
+               sql_table('plug_gallery_config'), \r
+               sql_table('plug_gallery_comment'), \r
+               sql_table('plug_gallery_album_team'), \r
+               sql_table('plug_gallery_member'), \r
+               sql_table('plug_gallery_promo'), \r
+               sql_table('plug_gallery_views'), \r
+               sql_table('plug_gallery_views_log'), \r
+               sql_table('plug_gallery_picturetags') );\r
+       }\r
+\r
+       function getEventList() {\r
+               return array('QuickMenu','PreItem');\r
+       }\r
+       \r
+       function hasAdminArea() {\r
+               return 1;\r
+       }\r
+       \r
+       function event_QuickMenu(&$data) {\r
+               global $member;\r
+\r
+               if (!($member->isLoggedIn() )) return;\r
+               array_push(\r
+                       $data['options'], \r
+                       array(\r
+                               'title' => 'gallery',\r
+                               'url' => $this->getAdminURL(),\r
+                               'tooltip' => 'NP Gallery admin'\r
+                       )\r
+               );\r
+       }\r
+       \r
+       function event_PreItem(&$data) {\r
+               \r
+               $actions = new NPG_EXT_ITEM_ACTIONS();\r
+               $parser = new NPG_PREPARSER($actions->getdefinedActions(),$actions);\r
+               $actions->setparser($parser);\r
+               \r
+               //pre-parse item body\r
+               ob_start();\r
+               $parser->parse($data['item']->body);\r
+               $data['item']->body = ob_get_contents();\r
+               ob_end_clean();\r
+               \r
+               //pre-parse item more\r
+               ob_start();\r
+               $parser->parse($data['item']->more);\r
+               $data['item']->more = ob_get_contents();\r
+               ob_end_clean();\r
+               \r
+       }\r
+       \r
+\r
+       function install() {\r
+               global $NPG_CONF,$DIR_NUCLEUS;\r
+               \r
+               $this->createOption('deletetables',__NPG_OPT_DONT_DELETE_TABLES,'yesno','no'); \r
+               \r
+               //create tables\r
+               $query = 'CREATE TABLE IF NOT EXISTS '.sql_table('plug_gallery_album').' ( '.\r
+                               'albumid int unsigned not null auto_increment PRIMARY KEY, '.\r
+                               'title varchar(255), '.\r
+                               'description varchar(255), '.\r
+                               'ownerid int unsigned , '.\r
+                               'modified TIMESTAMP, '.\r
+                               'numberofimages int unsigned, '.\r
+                               "thumbnail varchar(100), ".\r
+                               'commentsallowed tinyint DEFAULT 1 ) ';\r
+               sql_query($query);\r
+               // code to update table to have publicalbum field\r
+               $query = 'SHOW COLUMNS FROM '.sql_table('plug_gallery_album').' LIKE "publicalbum"';\r
+               $result = sql_query($query);\r
+               if (mysql_num_rows($result) == 0){\r
+                               //if it doesnt exist, add it (there must be a better way to do this via SQL syntax, but i couldnt figure it out)\r
+                               $query = 'ALTER TABLE '. sql_table('plug_gallery_album').\r
+                                               ' ADD COLUMN publicalbum tinyint DEFAULT 1 AFTER commentsallowed';\r
+                               sql_query($query);\r
+               }\r
+               \r
+               $query = 'CREATE TABLE IF NOT EXISTS '.sql_table('plug_gallery_picture').' ( '.\r
+                               'pictureid int unsigned not null auto_increment PRIMARY KEY, '.\r
+                               'title varchar(255), '.\r
+                               'description varchar(255), '.\r
+                               'ownerid int unsigned , '.\r
+                               'modified TIMESTAMP, '.\r
+                               'albumid int unsigned, '.\r
+                               'filename varchar(255), '.\r
+                               'int_filename varchar(255), '.\r
+                               'thumb_filename varchar(255) ) ';\r
+               sql_query($query);\r
+               \r
+               //add the picturesets column after thumb_filename for people upgrading\r
+               //first test if the picturesets column exists\r
+               $query = 'SHOW COLUMNS FROM '.sql_table('plug_gallery_picture').' LIKE "keywords"';\r
+               $result = sql_query($query);\r
+               if (mysql_num_rows($result) == 0){\r
+                               //if it doesnt exist, add it (there must be a better way to do this via SQL syntax, but i couldnt figure it out)\r
+                               $query = 'ALTER TABLE '. sql_table('plug_gallery_picture').\r
+                                               ' ADD COLUMN keywords varchar(255) AFTER thumb_filename';\r
+                               sql_query($query);\r
+               }\r
+               // this is to change the descriptions to have text up to 64k characters instead of 255 characters.\r
+               //had to put it here in case someone is upgrading.\r
+               $query = 'ALTER TABLE '. sql_table('plug_gallery_picture').\r
+                                ' MODIFY description TEXT';\r
+               sql_query($query);\r
+\r
+               $query = 'CREATE TABLE IF NOT EXISTS '.sql_table('plug_gallery_template').' ( '.\r
+                               'tdesc int unsigned, '.\r
+                               'name varchar(20), '.\r
+                               'content text ) ';\r
+               sql_query($query);\r
+               \r
+               $query = 'CREATE TABLE IF NOT EXISTS '.sql_table('plug_gallery_template_desc').' ( '.\r
+                               'tdid int unsigned not null auto_increment PRIMARY KEY, '.\r
+                               'tdname varchar(20), '.\r
+                               'tddesc varchar(200) )';\r
+               sql_query($query);\r
+               \r
+               $query = 'CREATE TABLE IF NOT EXISTS '.sql_table('plug_gallery_config').' ( '.\r
+                               'oname varchar(20), ovalue varchar(60) )';\r
+               sql_query($query);\r
+               \r
+               $query = 'CREATE TABLE IF NOT EXISTS '.sql_table('plug_gallery_album_team').' ( '.\r
+                               'tmemberid int unsigned not null, '.\r
+                               'talbumid int unsigned not null, '.\r
+                               'tadmin tinyint DEFAULT 0 )';\r
+               sql_query($query);\r
+               \r
+               $query = 'CREATE TABLE IF NOT EXISTS '.sql_table('plug_gallery_member').' ( '.\r
+                               'memberid int unsigned not null PRIMARY KEY, '.\r
+                               'addalbum tinyint DEFAULT 0 )';\r
+               sql_query($query);\r
+               \r
+               $query = 'CREATE TABLE IF NOT EXISTS '.sql_table('plug_gallery_comment').' ( '.\r
+                               'commentid int unsigned not null auto_increment PRIMARY KEY, '.\r
+                               'cbody text, '.\r
+                               'cuser varchar(40), '.\r
+                               'cmail varchar(100), '.\r
+                               'chost varchar(60), '.\r
+                               'cip varchar(15), '.\r
+                               'cmemberid int unsigned default 0, '.\r
+                               'ctime timestamp, '.\r
+                               'cpictureid int not null )';\r
+               sql_query($query);\r
+               \r
+               $query = 'CREATE TABLE IF NOT EXISTS '.sql_table('plug_gallery_promo').' ( '.\r
+                               'ppictureid int unsigned not null, '.\r
+                               'pblogitemid int unsigned not null )';\r
+               sql_query($query);\r
+               \r
+               $query = 'CREATE TABLE IF NOT EXISTS '.sql_table('plug_gallery_views').' ( '.\r
+                               'vpictureid int unsigned not null PRIMARY KEY, '.\r
+                               'views int unsigned )';\r
+               sql_query($query);\r
+               \r
+               $query = 'CREATE TABLE IF NOT EXISTS '.sql_table('plug_gallery_views_log').' ( '.\r
+                               'vlpictureid int unsigned not null, '.\r
+                               'ip varchar(20), '.\r
+                               'time timestamp )';\r
+               sql_query($query);\r
+               \r
+               $query = 'CREATE TABLE IF NOT EXISTS '.sql_table('plug_gallery_picturetag').' ( '.\r
+                               '`pictureid` VARCHAR( 255 ) NOT NULL , '.\r
+                               '`top` VARCHAR( 255 ) NOT NULL ,'.\r
+                               '`left` VARCHAR( 255 ) NOT NULL ,'.\r
+                               '`height` VARCHAR( 255 ) NOT NULL ,'.\r
+                               '`width` VARCHAR( 255 ) NOT NULL ,'.\r
+                               '`text` VARCHAR( 255 ) NOT NULL )';\r
+               sql_query($query);\r
+               \r
+               //set default options\r
+               $NPG_CONF = getNPGconfig();\r
+\r
+               if(!$NPG_CONF['viewtime']) setNPGoption('viewtime', 30);\r
+               setNPGoption('currentversion',94);\r
+               \r
+               if(!$NPG_CONF['im_path']) setNPGoption('im_path','/usr/local/bin/'); // currently needs to have trailing slash, need to change to be consistent\r
+               if(!$NPG_CONF['im_options']) setNPGoption('im_options', '-filter Lanczos');\r
+               if(!$NPG_CONF['im_quality']) setNPGoption('im_quality', '80');\r
+               if(!$NPG_CONF['graphics_library']) {\r
+                       if (GDisPresent()) {\r
+                               setNPGoption('graphics_library', 'gd'); \r
+                       } else if (IMisPresent()) {\r
+                               setNPGoption('graphics_library', 'im');\r
+                               setNPGoption('im_version', getIMversion());\r
+                       } else {\r
+                               setNPGoption('graphics_library', 'not configured');\r
+                               setNPGoption('configured', false);\r
+                       }\r
+               }\r
+               \r
+\r
+               if(!$NPG_CONF['galleryDir']) setNPGoption('galleryDir', 'media/gallery'); //when adding, need to make sure that no trailing slash\r
+               if(!$NPG_CONF['thumbwidth']) setNPGoption('thumbwidth', '100');\r
+               if(!$NPG_CONF['thumbheight']) setNPGoption('thumbheight', '100');\r
+               if(!$NPG_CONF['maxwidth']) setNPGoption('maxwidth', '600');\r
+               if(!$NPG_CONF['maxheight']) setNPGoption('maxheight', '600');\r
+               if(!$NPG_CONF['int_prefix']) setNPGoption('int_prefix', 'int_');\r
+               if(!$NPG_CONF['thumb_prefix']) setNPGoption('thumb_prefix', 'thumb_');\r
+               \r
+               if(!$NPG_CONF['max_filesize']) setNPGOption('max_filesize', '2000000');\r
+               if(!$NPG_CONF['add_album']) setNPGOption('add_album', 'admin_only');\r
+               if(!$NPG_CONF['batch_add_num']) setNPGOption('batch_add_num', '10');\r
+               if(!$NPG_CONF['dateorrandom']) setNPGOption('dateorrandom', 'randomprefix');\r
+               if(!$NPG_CONF['tooltips']) setNPGOption('tooltips', 'no');\r
+               if(!$NPG_CONF['nextprevthumb']) setNPGOption('nextprevthumb', 'no');\r
+               if(!$NPG_CONF['defaultorder']) setNPGOption('defaultorder', 'aesc');\r
+               if(!$NPG_CONF['setorpromo']) setNPGOption('setorpromo', 'promo');\r
+               if(!$NPG_CONF['slideshowson']) setNPGOption('slideshowson', 'no');\r
+               if(!$NPG_CONF['thumborlist']) setNPGOption('thumborlist', 'list');\r
+\r
+\r
+               \r
+               \r
+\r
+               \r
+\r
+               $chk = checkgalleryconfig();\r
+               if($chk['configured'] == false) setNPGoption('configured',false); else setNPGoption('configured',true);\r
+               \r
+               //?create skin NPGallery or make user do it\r
+                               \r
+               //set default templates\r
+               //include($DIR_NUCLEUS.'/plugins/gallery/update/default_templates_076.inc');\r
+               //include($DIR_NUCLEUS.'/plugins/gallery/update/default_templates_080.inc');\r
+               //include($DIR_NUCLEUS.'/plugins/gallery/update/default_templates_090.inc');\r
+               include($DIR_NUCLEUS.'/plugins/gallery/update/default_templates_094.inc');\r
+       }\r
+       \r
+       function unInstall() {\r
+               if ($this->getOption('deletetables') == 'yes') { \r
+                       \r
+                       //delete promo posts\r
+                       $query = 'select pictureid from '.sql_table('plug_gallery_picture');\r
+                       $res = sql_query($query);\r
+                       while($row = mysql_fetch_object($res)) {\r
+                               PICTURE::deletepromoposts($res->pictureid);\r
+                       }\r
+                       \r
+                       sql_query('DROP TABLE '.sql_table('plug_gallery_album'));\r
+                       sql_query('DROP TABLE '.sql_table('plug_gallery_picture'));\r
+                       sql_query('DROP TABLE '.sql_table('plug_gallery_template'));\r
+                       sql_query('DROP TABLE '.sql_table('plug_gallery_template_desc'));\r
+                       sql_query('DROP TABLE '.sql_table('plug_gallery_config'));\r
+                       sql_query('DROP TABLE '.sql_table('plug_gallery_album_team'));\r
+                       sql_query('DROP TABLE '.sql_table('plug_gallery_member'));\r
+                       sql_query('DROP TABLE '.sql_table('plug_gallery_comment'));\r
+                       sql_query('DROP TABLE '.sql_table('plug_gallery_promo'));\r
+                       sql_query('DROP TABLE '.sql_table('plug_gallery_views'));\r
+                       sql_query('DROP TABLE '.sql_table('plug_gallery_views_log'));\r
+                       sql_query('DROP TABLE '.sql_table('plug_gallery_picturetag'));\r
+                       \r
+               }\r
+       }\r
+\r
+       function doAction($type) {\r
+               global $gmember, $CONF, $NPG_CONF;\r
+               global $skinid,$manager,$blog,$blogid;\r
+               \r
+               switch($type) {\r
+                       /*\r
+                       //display -- these are done in doSkinVar\r
+                       case 'mostviewed':\r
+                       case 'album':\r
+                       case 'item':\r
+                       case 'deletePictureF': \r
+                       case 'editPictureF':\r
+                       case 'addPictF':\r
+                               $this->currentPage = $type;\r
+                               $this->currentPageID = requestVar('id');\r
+                               break;\r
+                       case 'list':\r
+                               $this->currentPage = $type;\r
+                               $this->currentPageOpt = requestVar('sort');\r
+                               break;\r
+                       case 'addAlbumF': \r
+                               $this->currentPage = $type;\r
+                               break;\r
+                       */\r
+                       //these are the actions, done here, then currentpage is set and skin called to display something\r
+                       case 'addcomment': \r
+                               global $CONF;\r
+\r
+                               $post['itemid'] =       intPostVar('itemid');\r
+                               $post['user'] =         postVar('user');\r
+                               $post['userid'] =       postVar('userid');\r
+                               $post['body'] =         postVar('body');\r
+\r
+                               // set cookies when required\r
+                               $remember = intPostVar('remember');\r
+                               if ($remember == 1) {\r
+                                       $lifetime = time()+2592000;\r
+                                       setcookie($CONF['CookiePrefix'] . 'comment_user',$post['user'],$lifetime,'/','',0);\r
+                                       setcookie($CONF['CookiePrefix'] . 'comment_userid', $post['userid'],$lifetime,'/','',0);\r
+                               }\r
+\r
+                               $comments = new NPG_COMMENTS($post['itemid']);\r
+\r
+                               $errormessage = $comments->addComment($post);\r
+                               \r
+                               //need to add code to display the error\r
+                               if ($errormessage == '1') {\r
+                                       $_POST['id'] = $post['itemid'];\r
+                               } \r
+                               /*\r
+                               else {\r
+                                       $this->currentPage = 'list';\r
+                                       $this->currentPageOpt = 'date';\r
+                               }\r
+                               */\r
+                               break;\r
+                       case 'addAlbum':\r
+                               if($gmember->canAddAlbum() ){\r
+                                       $NPG_vars['ownerid'] = $gmember->getID();\r
+                                       $NPG_vars['title'] = requestVar('title'); \r
+                                       $NPG_vars['description'] = requestVar('desc');\r
+                                       $NPG_vars['publicalbum'] = requestVar('publicalbum');\r
+                                       ALBUM::add_new($NPG_vars);\r
+                               }\r
+                               break;\r
+                       case 'finaldeletepicture':\r
+                               $id = requestVar('id');\r
+                               $delpromo = requestVar('delpromo');\r
+                               if($gmember->canModifyPicture($id)) {\r
+                                       \r
+                                       $manager->notify('NPgPreDeletePicture', array('pictureid' => $id));\r
+                                       $result = PICTURE::delete($id);\r
+                                       \r
+                                       if($result['status'] == 'error') {\r
+                                               echo $result['message'];\r
+                                       }\r
+                                       else {\r
+                                               $manager->notify('NPgPostDeletePicture', array('pictureid' => $id));\r
+                                               \r
+                                               if($delpromo == 'yes') {\r
+                                                       $result2 = PICTURE::deletepromoposts($id);\r
+                                                       if($result2['status'] == 'error') echo $result2['message'];\r
+                                               }\r
+                                               else {\r
+                                                       $_POST['id'] = $result['albumid'];\r
+                                               }\r
+                                       }\r
+                               } else echo 'No permission to delete picture<br/>';\r
+                               break;\r
+                       case 'editPicture':\r
+                               $id = requestVar('id');\r
+                               if($gmember->canModifyPicture($id)) {\r
+                                       $pict = new PICTURE($id);\r
+                                       $pict->setTitle(requestVar('ptitle'));\r
+                                       $pict->setDescription(requestVar('pdesc'));\r
+                                       $pict->setkeywords(requestVar('keywords'));\r
+                                       $aid = requestVar('aid');\r
+                                       if($aid && $gmember->canAddPicture($aid)) {\r
+                                               ALBUM::decreaseNumberByOne($pict->getAlbumID());\r
+                                               ALBUM::increaseNumberByOne($aid);\r
+                                               $pict->setAlbumID($aid);\r
+                                       }\r
+                                       $pict->write();\r
+                                       echo "<SCRIPT LANGUAGE=\"JavaScript\">\r
+                                       window.location=\"" . $NP_BASE_DIR  . "action.php?action=plugin&name=gallery&type=item&id=". $id . "\"" .\r
+                                       "</script>";\r
+                                       break;\r
+                                       $manager->notify('NPgPostUpdatePicture',array('picture', &$pict));\r
+                               }\r
+                       case 'tagaccept' :\r
+                               $Pos1x = requestVar('Pos1x');\r
+                               $Pos1y = requestVar('Pos1y');\r
+                               $Pos2x = requestVar('Pos2x');\r
+                               $Pos2y = requestVar('Pos2y');\r
+                               $RelX = requestVar('RelX');\r
+                               $pictureid = requestVar('pictureid');\r
+                               $RelY = requestVar('RelY');\r
+                               $desc = requestVar('desc');\r
+                               $left = $Pos1x - $RelX;\r
+                               $top = $Pos1y - $RelY;\r
+                               $width = $Pos2x - $Pos1x;\r
+                               $height = $Pos2y - $Pos1y;\r
+                               $text = $desc;\r
+                               //these lines should be moved into picture_class.php\r
+                               sql_query("INSERT INTO ".sql_table('plug_gallery_picturetag')." ( `pictureid` , `top` , `left` , `height` , `width` , `text` )\r
+                               VALUES ( '" . addslashes($pictureid) ." ', '" .addslashes($top)."', '" .addslashes($left)." ' , '" .addslashes($height)."' , '" .addslashes($width)."' , '" .addslashes($text)."' ); ");\r
+                               echo "<SCRIPT LANGUAGE=\"JavaScript\">\r
+                               window.location=\"" . $NP_BASE_DIR  . "action.php?action=plugin&name=gallery&type=item&id=". $pictureid . "\"" .\r
+                               "</script>";\r
+                               break;\r
+                       case 'tagdelete' :\r
+                               $pictureid = requestVar('pictureid');\r
+                               //these lines should be moved into picture_class.php\r
+                               sql_query("DELETE FROM ".sql_table('plug_gallery_picturetag'). " WHERE `pictureid` = '" . addslashes($pictureid) . "' LIMIT 1; ");\r
+                               echo "<SCRIPT LANGUAGE=\"JavaScript\">\r
+                               window.location=\"" . $NP_BASE_DIR  . "action.php?action=plugin&name=gallery&type=item&id=". $pictureid . " \"" .\r
+                               "</script>";\r
+                               break;\r
+                       // this is done in editpicture now.\r
+                       //case 'updatesets':\r
+                               //$id = requestVar('id');\r
+                               //$setname = requestVar('setname');\r
+                               //$pict = new PICTURE($id);\r
+                               //$pict->addtoset($id,$setname);\r
+                               //$pict->write();\r
+                               //$manager->notify('NPgPostUpdatePicture',array('picture', &$pict));\r
+                               //break;\r
+                       default: \r
+                       break;\r
+               }\r
+\r
+               if (!$blogid)\r
+               $blogid = $CONF['DefaultBlog'];\r
+\r
+               $b =& $manager->getBlog($blogid);\r
+               $blog = $b;\r
+               \r
+               selectSkin('NPGallery');\r
+               \r
+               $skin =& new SKIN($skinid);\r
+               $skin->parse('index');\r
+       }\r
+       \r
+       \r
+       function doSkinVar() {\r
+               global $NPG_CONF, $gmember, $manager;\r
+               \r
+               $params = func_get_args();\r
+               $numargs = func_num_args();\r
+               $skinType = $params[0];\r
+               \r
+               $type = requestvar('type');\r
+               $id = requestvar('id');\r
+               $startstop = requestvar('startstop');\r
+               $sliderunning = requestvar('sliderunning');\r
+               \r
+               $defaulttoitem = array('editPicture','addcomment');\r
+               $defaulttolist = array('addAlbum');\r
+               $defaulttoalbum = array('finaldeletepicture');\r
+               if(in_array($type,$defaulttoitem)) $type = 'item';\r
+               \r
+               switch($params[1]) {\r
+                       case 'link':\r
+                               if($numargs >= 3) {\r
+                                       switch($params[2]) {\r
+                                               case 'picture': echo generatelink('item',$params[3]); break;\r
+                                               case 'album': echo generateLink('album',$params[3]); break;\r
+                                               default: echo generateLink('list'); break;\r
+                                       }\r
+                               } else echo generateLink('list');\r
+                               break;\r
+                       default:\r
+                               //things to display\r
+                               \r
+                               if(!$NPG_CONF['configured']) {\r
+                                       echo __NPG_ERR_GALLLERY_NOT_CONFIG;\r
+                                       break;\r
+                               }\r
+                               \r
+                               //plugin hook for collections\r
+                               $hookquery = '';\r
+                               $hooktitle = '';\r
+                               $manager->notify('NPgCollectionDisplay', array('type' => $type, 'query' => &$hookquery , 'title' => &$hooktitle) );\r
+                               if($hookquery) {\r
+                                       if ($id == 0) {\r
+                                               $collection = new ALBUM();\r
+                                               $collection->setquery($hookquery);\r
+                                               $collection->set_title($hooktitle);\r
+                                               $t = new NPG_TEMPLATE($NPG_CONF['template']);\r
+                                               $collection->settemplate($t);\r
+                                               $collection->display();\r
+                                       }\r
+                                       else {\r
+                                               $pict = new PICTURE($id);\r
+                                               $t = new NPG_TEMPLATE($NPG_CONF['template']);\r
+                                               $pict->setalbumtitle($hooktitle);\r
+                                               $pict->settemplate($t);\r
+                                               $pict->setquery($hookquery);\r
+                                               $pict->display();\r
+                                       }\r
+                                       $type = 'nothing';\r
+                               }\r
+                               \r
+                               //other pages\r
+                               switch($type) {\r
+                                       case 'album': \r
+                                               $alb = new ALBUM($id);\r
+                                               if($alb->getID()) {\r
+                                                       $t = new NPG_TEMPLATE($NPG_CONF['template']);\r
+                                                       $alb->settemplate($t);\r
+                                                       $alb->display(requestVar('sort'));\r
+                                               }\r
+                                               else echo __NPG_ERR_NOSUCHTHING.'<br/>';\r
+                                               break;\r
+                                       //case 'set': \r
+                                       //      $setid = $id;\r
+                                       //      $alb = new ALBUM($setid);\r
+                                               //this should work, but not sure what $alb->getID() does...\r
+                                       //      if($alb->getID()) {\r
+                                       //              $t = new NPG_TEMPLATE($NPG_CONF['template']);\r
+                                       //              $alb->settemplate($t);\r
+                                       //              $alb->displayset(requestVar('sort'));\r
+                                       //      }\r
+                                       //      else echo __NPG_ERR_NOSUCHTHING.'<br/>';\r
+                                       //      break;\r
+                                       case 'item': \r
+                                               $pict = new PICTURE($id);\r
+                                               if($pict->getID()) {\r
+                                                       $t = new NPG_TEMPLATE($NPG_CONF['template']);\r
+                                                       $pict->settemplate($t);\r
+                                                       $pict->display($startstop,$sliderunning);\r
+                                               }\r
+                                               else echo __NPG_ERR_NOSUCHTHING.'<br/>';\r
+                                               break;\r
+                                       case 'list': \r
+                                               $l = new GALLERY_LIST();\r
+                                               $t = new NPG_TEMPLATE($NPG_CONF['template']);\r
+                                               $l->settemplate($t);\r
+                                               $l->display(requestVar('sort')); \r
+                                               break;\r
+                                       case 'addAlbumF': \r
+                                               addAlbumForm();\r
+                                               break;\r
+                                       case 'editAlbumF': \r
+                                               editAlbumForm($id);\r
+                                               break;\r
+                                       case 'editPictureF':\r
+                                               editPictureForm($id);\r
+                                               break;\r
+                                       case 'deletePictureF':\r
+                                               deletePictureForm($id);\r
+                                               break;\r
+                                       case 'addPictF': \r
+                                               addPictureForm($id);\r
+                                               break;\r
+                                       case 'nothing':\r
+                                               break;\r
+                                       default: \r
+                                               $l = new GALLERY_LIST();\r
+                                               $t = new NPG_TEMPLATE($NPG_CONF['template']);\r
+                                               $l->settemplate($t);\r
+                                               $l->display(requestvar('sort')); \r
+                                               break;\r
+                               }\r
+                               \r
+                               break;\r
+               }\r
+       }\r
+       \r
+       function MakeLink($type, $extraparams = array()) {\r
+               global $CONF;\r
+               \r
+               if($CONF['URLMode'] == 'pathinfo') { \r
+                       //fancy URLs having problems, so I changed it to revert back to regular URLS.\r
+                       //$base = '/gallery/';\r
+                       //$sep1 = '/';\r
+                       //$sep2 = '/';\r
+                       $base = 'action.php?action=plugin&name=gallery&type=';\r
+                       $sep1 = '&';\r
+                       $sep2 = '=';\r
+               }\r
+               else {\r
+                       $base = 'action.php?action=plugin&name=gallery&type=';\r
+                       $sep1 = '&';\r
+                       $sep2 = '=';            \r
+               }\r
+               //if extraparams is assoc array\r
+               if(is_array($extraparams) && array_keys($extraparams)!==range(0,sizeof($extraparams)-1)) {\r
+                       foreach($extraparams as $key => $value) \r
+                               $extra = $extra . $sep1 . $key . $sep2 . $value;\r
+                       }\r
+               return $base.$type.$extra;\r
+\r
+\r
+       }\r
+       \r
+       function MakeLinkRaw($base, $extraparams = '') {\r
+               global $CONF;\r
+               \r
+               if($CONF['URLMode'] == 'pathinfo') {\r
+                       $sep1 = '/';\r
+                       $sep2 = '/';\r
+               }\r
+               else {\r
+                       $sep1 = '&amp;';\r
+                       $sep2 = '=';\r
+               }\r
+               foreach($extraparams as $key => $value) $extra = $extra . $sep1 . $key . $sep2 .$value;\r
+               return $base.$extra;\r
+       }\r
+}\r
+\r
+class NPG_PREPARSER extends PARSER {\r
+       \r
+       function doAction($action) {\r
+                if (!$action) return;\r
+                $action_raw = '<%'.$action.'%>';\r
+                \r
+               // split into action name + arguments\r
+               if (strstr($action,'(')) {\r
+                       $paramStartPos = strpos($action, '(');\r
+                       $params = substr($action, $paramStartPos + 1, strlen($action) - $paramStartPos - 2);\r
+                       $action = substr($action, 0, $paramStartPos);\r
+                       $params = explode ($this->pdelim, $params);\r
+                       $params = array_map('trim',$params);\r
+               } else {\r
+                       $params = array();\r
+               }\r
+\r
+               $actionlc = strtolower($action);\r
+\r
+               if (in_array($actionlc, $this->actions) || $this->norestrictions ) {\r
+                       call_user_func_array(array(&$this->handler,'parse_' . $actionlc), $params);\r
+               } else {\r
+                       echo $action_raw;\r
+               }\r
+\r
+        }\r
+        \r
+        \r
+}\r
+\r
+class NPG_EXT_ITEM_ACTIONS extends BaseActions {\r
+       var $parser;\r
+       \r
+       function NPG_EXT_ACTIONS() {\r
+               $this->BaseActions();\r
+       }\r
+       \r
+       function getdefinedActions() {\r
+               return array( 'gallery' );\r
+       }\r
+       \r
+       function setParser(&$parser) {$this->parser =& $parser; }\r
+       \r
+       function parse_gallery($param1, $param2, $param3) {\r
+               if($param1 == 'link') {\r
+                       if($param2 == 'picture') {\r
+                               $param3 = intval($param3);\r
+                               echo generatelink('item',$param3);\r
+                       }\r
+                       else if($param2 == 'album') {\r
+                               $param3 = intval($param3);\r
+                               echo generatelink('album',$param3);\r
+                       }\r
+                       else echo '<b>NOT HERE</b>';\r
+               }\r
+               if($param1 == 'keywords') {\r
+                       $setid = $param2;\r
+                       $splitdata = explode(' and ',$setid);\r
+                       $sort = $param3;\r
+                       //$alb = new ALBUM($id);\r
+                       //if($alb->getID()) {\r
+                       //$t = new NPG_TEMPLATE($NPG_CONF['template']);\r
+                       //$alb->settemplate($t);\r
+                       //$alb->display(requestVar('sort'));\r
+                       $thisset = new ALBUM;\r
+                       $t = new NPG_TEMPLATE($NPG_CONF['template']);\r
+                       $thisset->settemplate($t);\r
+                       $thisset->displayset($splitdata,$sort);\r
+               }\r
+       }\r
+}\r
+?>\r
diff --git a/NP_gallery/tags/v0.95/gallery/FAQ.html b/NP_gallery/tags/v0.95/gallery/FAQ.html
new file mode 100644 (file)
index 0000000..e6c2c0f
--- /dev/null
@@ -0,0 +1,94 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />\r
+<title>Untitled Document</title>\r
+</head>\r
+\r
+<body>\r
+<p>Q1. My &quot;Today&quot; and &quot;Archive&quot; links stop working when I am in the NP_gallery photo gallery!</p>\r
+<p>A1.     the solution will have to be a hack, because of the way np_gallery works,\r
+np_gallery is a SEPERATE blog, so as any seperate blog would do, it  would have a &quot;today&quot; page. but in the context of NP_gallery, &quot;today&quot;  doesnt make any sense. you will have to go into the skin template (like header.inc) and edit the links to be static instead of &lt;% ... %&gt; like nucleus would like.</p>\r
+<p>Q2. I and error that looks like this:</p>\r
+<p> mySQL error with query create temporary table temptableview (tempid int  unsigned not null auto_increment primary key) select pictureid,  thumb_filename from nucleus_plug_gallery_picture where albumid=2 order  by pictureid ASC: Access denied for user: 'u1000855_phalcon@' to  database 'db1000855_phalcon' <br />\r
+mySQL error with query select tempid from temptableview where pictureid=2: Table 'db1000855_phalcon.temptableview' doesn't exist </p>\r
+<p>A2. Find the line </p>\r
+<p>sql_query('create temporary table temptableview (tempid int unsigned not null auto_increment primary key) '.$this-&gt;query);</p>\r
+<p>in picture_class.php and change to (around line 157) </p>\r
+<p>sql_query('create table temptableview (tempid int unsigned not null auto_increment primary key) '.$this-&gt;query);  </p>\r
+<p>this is due to your server having temporary SQL tables turned off. this fix simply makes the table not temporary and would leave a trash table in your database, but its okay, it gets overwritten everytime its needed again. </p>\r
+<p>Q3. why is there an empty space where my sidebar used to be on my photo gallery pages?</p>\r
+<p>A3.     this is a common problem when you use a skin with a sidebar such as  leaf. what is happening is that even though you removed the sidebar  from the main index template, the container and content are sell  leaving room for a side bar.  <br />\r
+</p>\r
+<table align="center" border="0" cellpadding="3" cellspacing="1" width="90%">\r
+  <tbody>\r
+    <tr>\r
+      <td>Quote:</td>\r
+    </tr>\r
+    <tr>\r
+      <td>#container{ <br />\r
+        width: 100%; <br />\r
+        float: left; <br />\r
+        margin-right: -230px; <br />\r
+        } <br />\r
+        #content{ <br />\r
+        margin-right: 230px; <br />\r
+        padding: 25px 0; <br />\r
+        } <br />\r
+        #sidebar{ <br />\r
+        width: 230px; <br />\r
+        float: right; <br />\r
+        padding: 25px 0; <br />\r
+        text-align: left; <br />\r
+        }</td>\r
+    </tr>\r
+  </tbody>\r
+</table>\r
+<p> what you can do to fix this is put in an inline css style to override  the css file. ( you dont want to change the css file because that would  screw up the rest of your site, naturally) <br />\r
+  <br />\r
+  so go into the NPGallery skin (the clone you made of leaf) find the  main index template, and take a look at the code I made below <br />\r
+  <br />\r
+</p>\r
+<table align="center" border="0" cellpadding="3" cellspacing="1" width="90%">\r
+  <tbody>\r
+    <tr>\r
+      <td>Code:</td>\r
+    </tr>\r
+    <tr>\r
+      <td>&lt;%parsedinclude(head.inc)%&gt; <br />\r
+        &lt;!--header.inc--&gt; <br />\r
+        &lt;%parsedinclude(header.inc)%&gt; <br />\r
+        &lt;!--Start Main Index--&gt; <br />\r
+        &lt;div id=&quot;container&quot;&gt; <br />\r
+        &nbsp; &lt;div id=&quot;content&quot; style=&quot;width:700px&quot;&gt; <br />\r
+        &nbsp; &nbsp; &lt;div class=&quot;contentdiv&quot; style=&quot;width:700px&quot;&gt; <br />\r
+        &nbsp; &nbsp; &lt;h2 class=&quot;weblog&quot;&gt;Weblog&lt;/h2&gt; <br />\r
+        &nbsp; &nbsp; &nbsp; &lt;div class=&quot;divweblog&quot;&gt; <br />\r
+        &lt;!--Database Generated Content--&gt; <br />\r
+        &lt;%gallery(gnoo/short,10)%&gt; <br />\r
+        &lt;!--End Database Generated Content--&gt; <br />\r
+        &nbsp; &nbsp; &nbsp; &lt;/div&gt; <br />\r
+        &nbsp; &nbsp; &lt;/div&gt; <br />\r
+        &nbsp; &lt;/div&gt; <br />\r
+        &lt;/div&gt; <br />\r
+        &lt;!--sidebar.inc--&gt; <br />\r
+        <br />\r
+        &lt;!--footer.inc--&gt; <br />\r
+        &lt;%parsedinclude(footer.inc)%&gt;</td>\r
+    </tr>\r
+  </tbody>\r
+</table>\r
+<p><br />\r
+  <br />\r
+notice the two inline styles for contentdiv and content <br />\r
+<br />\r
+style=&quot;width:700px&quot; <br />\r
+<br />\r
+go and add that to the main index template of your NPGallery skin  (change the 700px to the actual width for your skin, I think it is  actually 700px for leaf, but you can make it a little smaller, like  690px to avoid some IE6 bugs. keep tweaking it until its just right  because its different for everyone)</p>\r
+<p>&nbsp;</p>\r
+<p>Q4.                                 I've enabled fancyurls on my blog and everything works fine except the gallery.   </p>\r
+<p>A4.                                 fancy URLs dont work unless your nucleus site root is the same at the site root. </p>\r
+<p>&nbsp; </p>\r
+</body>\r
+\r
+</html>\r
diff --git a/NP_gallery/tags/v0.95/gallery/Install notes.txt b/NP_gallery/tags/v0.95/gallery/Install notes.txt
new file mode 100644 (file)
index 0000000..7b4ef4b
--- /dev/null
@@ -0,0 +1,135 @@
+NP_gallery\r
+johnkbradshaw@yahoo.com\r
+\r
+See bottom for version history.\r
+Current release is 0.77 (5-4-05)\r
+\r
+To Upgrade:\r
+ -- To upgrade from 0.61, run np_gallery_update061.php in your base nucleus directory\r
+ -- To upgrade from 0.75, run np_gallery_update075.php\r
+ -- Delete both np_gallery_update files\r
+\r
+To install:\r
+1. make a skin called NPGallery with a call to <%gallery%> in it. For example mine looks like this:\r
+       <%ExtraSkin(header2)%>\r
+       <div id="contents">\r
+          <%gallery%>\r
+       </div>\r
+       <%ExtraSkin(menu2)%>\r
+       <%ExtraSkin(footer2)%>\r
+\r
+2. Create a link to the gallery in another skin with the skinvar <%gallery(link)%>, i.e. with this code: <a href="<%gallery(link)%>">Gallery</a>.\r
+\r
+3. upload the files in the zip to your webserver into the base directory (add_picture.php should be in the same directory as your index.php)\r
+\r
+4. create the folder media/gallery and make it writable (chmod 0777 or 0755)\r
+\r
+5. add the following to your CSS file:\r
+               #NPG_gallery {\r
+                       margin-top: 5px;\r
+                       margin-bottom: 5px;\r
+                       padding-left: 5px;\r
+                       padding-right: 5px;\r
+                       position:relative;\r
+               }\r
+\r
+               /*thumbnails are displayed as a 'list'*/\r
+               ul.thumbnail {list-style: none;}\r
+               \r
+               ul.thumbnail li {\r
+                       float: left; \r
+                       width: 115px; \r
+                       height: 140px;\r
+                       padding: 10px;\r
+                       margin: 10px;\r
+                       background-color: rgb(225,225,225);\r
+               } \r
+       \r
+               /*thumbnail container*/\r
+               #NPG_thumbnail {\r
+                       margin-top: 5px;\r
+                       margin-bottom: 5px;\r
+                       padding-left: 5px;\r
+                       padding-right: 5px;\r
+                       position:relative;\r
+               }\r
+               /*footer container -- used so that the footer contents are actually displayed below the thumbnails, without clear:both the footer is displayed under the thumbnails*/\r
+               #NPG_footer {\r
+                       clear:both;\r
+               }\r
+\r
\r
+6. install the plugin\r
+\r
+7. play around with it and let me know what you think.\r
+\r
+version history:\r
+--NP_gallery v0.4 alpha 3-8-2005: first alpha release\r
+--NP_gallery v0.45 alpha 3-9-2005:\r
+       fixed bugs with permission system\r
+       changed the way albums are modified (moved to admin area)\r
+       added preliminary album team support\r
+       other bug fixes\r
+--NP_gallery v0.5 alpha 3-9-2005:\r
+       album teams (in admin area)\r
+       delete album (in admin area)\r
+       delete picture\r
+       can now select add album permission level\r
+       next, previous nav links on picture view\r
+       move picture to different album\r
+       bug fixes\r
+--NP_gallery v0.55 alpha 3-17-2005:\r
+       changed the default media directory style -- used to be something like ./foo/, now it is just foo/\r
+       (previous change will mean that you should uninstall the plugin and delete the pictures in your gallery folder and reinstall them)\r
+       thumbnail size can be changed\r
+       rethumb (which resizes the thumbnails and intermediate pictures) function in admin area\r
+       some bug fixes to address base_redirect\r
+--NP_gallery v0.56 alpha 3-19-2005:\r
+       fixed so that the plugin will work with 3.2\r
+       couple other bug fixes\r
+--NP_gallery v0.6 alpha 3-21-2005:\r
+       new feature: promote to blog\r
+               please configure this option in the admin area before using\r
+               I need to do cosmetic cleanup for the forms and the post, but wanted to try out the concept\r
+       bug fixes to re-thumb admin function\r
+--NP_gallery v0.61 alpha 3-22-2005\r
+       *changes made in this release require uninstall/reinstall       \r
+       added title template var -- displays title under thumbnail by default\r
+       updated default css class: ul.thumbnail li (see above for change)\r
+       fixed message after adding promo post\r
+       fixed sql error when adding pictures\r
+       when deleting a picture, there is an option to delete promo post associated with the picture\r
+       number of picture upload slots is now an option in the admin area\r
+       removed reference to a file in album_class.php that was triggering open_basedir problems\r
+       added allowable tag to item body: <%gallery(link,picture|album,#)%>\r
+       added cancel promo post\r
+       promo post now uses bookmarklet.php edititem form\r
+       fixed another bug with the rethumb function -- now works (on my system) with gd or imagemagick\r
+--NP_gallery v0.75 4-6-2005\r
+       moved to a class to handle admin page (like nucleus)\r
+       started the move to allowing for translation to other languages (see english.php)\r
+       added album template vars: centeredtopmargin(height, offset) and pictureviews\r
+               centeredtopmargin inserts a margin-top that will vertically align a thumbnail using inline css (ie <img style="<%centeredtopmargin(140,-7)%>" src= ...)\r
+               pictureviews displays the number of time a picture has been viewed\r
+       comment system\r
+       multiple templates\r
+--NP_gallery v0.76 4-12-2005\r
+       comment system works with np_captcha plugin\r
+       new templatevars: \r
+               <%albumdescription%> and <%picturedescription%> in album view\r
+               <%if(next)%>, <%if(prev)%>, <%description%> in picture view\r
+               <%if(commentsallowed)%> in picture view\r
+               <%albumthumbnail%> in gallery list view\r
+       album option for thumbnail\r
+       album option for comments allowed or not\r
+       plugin hooks: NPgPrePicture, NPgPostAddPicture, NPgPostUpdatePicture, NPgPostDeletePicture, NPgAddPictureFormExtras, NPgEditPictureFormExtras\r
+       new default templates\r
+       pictures are now prefixed by a random string\r
+--NP_gallery v0.77 5-4-2005\r
+       plugin hooks: NPgCollectionDisplay\r
+       included NP_GalleryMostViewed\r
+       bug fixes: \r
+               problems with templates\r
+       absolute filenames for pictures and links\r
+       modified <%breadcrumb%> tag to have an option for a different separator: <%breadcrumb(separator)%>, default is >\r
+       the word 'Gallery' as part of the breadcrumb is now defined in english.php
\ No newline at end of file
diff --git a/NP_gallery/tags/v0.95/gallery/NP_Gallery_Guide.rtf b/NP_gallery/tags/v0.95/gallery/NP_Gallery_Guide.rtf
new file mode 100644 (file)
index 0000000..541ce48
Binary files /dev/null and b/NP_gallery/tags/v0.95/gallery/NP_Gallery_Guide.rtf differ
diff --git a/NP_gallery/tags/v0.95/gallery/NP_gallery.css b/NP_gallery/tags/v0.95/gallery/NP_gallery.css
new file mode 100644 (file)
index 0000000..2970233
--- /dev/null
@@ -0,0 +1,81 @@
+\r
+.thumbnailoutside {\r
+       width:158px !important;\r
+       height:170px !important;\r
+       float:left ;\r
+       text-align:center !important;\r
+}\r
+/*this is for a taller box*/\r
+.thumbnailoutside2 {\r
+       width:155px !important;\r
+       height:180px !important;\r
+       float:left !important;\r
+       text-align:center !important;\r
+}\r
+\r
+.alpha-shadow {\r
+       float:left;\r
+       background: url(/nucleus/plugins/gallery/update/shadow1.gif) no-repeat bottom right;\r
+       margin: 0px 0 0 10px !important;\r
+       margin: 10px 0 0 10px;\r
+       z-index:3;\r
+       padding: 0px;\r
+       }\r
+\r
+.alpha-shadow div {\r
+  background: url(/nucleus/plugins/gallery/update/shadow2.png) no-repeat left top !important;\r
+  background: url(/nucleus/plugins/gallery/update/shadow2.gif) no-repeat left top;\r
+  float: left;\r
+  margin-top: 0px;\r
+  padding: 0px 6px 6px 0px;\r
+  }\r
+\r
+.alpha-shadow img {\r
+  background-color: #fff;\r
+  border: 1px solid #a9a9a9;\r
+  padding: 4px !important;\r
+  }\r
+\r
+.tooltip2 {\r
+ background-image:none !important;\r
+ width:0px;\r
+ display:none;\r
+}\r
+\r
+#tooltip2 div.tooltip2div {\r
+border-style:dotted;\r
+border-color:#CCCCCC;\r
+ border-width:1px;\r
+float:left; \r
+ background-image:url(/nucleus/plugins/gallery/transparent.gif)!important;\r
+ padding:0px !important;}\r
+#tooltip2 div.tooltip2div span {display:none;}\r
+#tooltip2 div.tooltip2div:hover {border-style:solid;border-color:#FFFFFF;float:left}\r
+#tooltip2 div.tooltip2div:hover span {display:block;background-color:white;padding-left:10px;padding-right:10px} \r
+#tooltip2 div.over {border-style:none;display:block;float:left;border-color:#FFFFFF;float:left}\r
+#tooltip2 div.over span {float:left;display:block;background-color:white;padding-left:10px;padding-right:10px} \r
+\r
+/* had to put float:left here because firefox before 1.0.5 has a bug with javascript element.stlye.float (fixed in 1.0.6)*/\r
+\r
+.drawingbox {\r
+border-style:solid;\r
+position:absolute;\r
+border-width:1px;\r
+border-color:#FFFFFF;\r
+float:left;\r
+display:block;\r
+z-index:5;\r
+}\r
+\r
+/* had to put float:left here because firefox before 1.0.5 has a bug with javascript element.stlye.float (fixed in 1.0.6)*/\r
+\r
+.captionformdiv {\r
+position:absolute;\r
+float:left;\r
+background-color:#FFFFFF;\r
+display:block;\r
+border-style:solid;\r
+border-color:#FFFFFF;\r
+}\r
+\r
+\r
diff --git a/NP_gallery/tags/v0.95/gallery/NP_gallery.js b/NP_gallery/tags/v0.95/gallery/NP_gallery.js
new file mode 100644 (file)
index 0000000..e5c926c
--- /dev/null
@@ -0,0 +1,294 @@
+// Detect if the browser is IE or not.\r
+// If it is not IE, we assume that the browser is NS/mozilla.\r
+var IE = document.all?true:false\r
+\r
+// If NS -- that is, !IE -- then set up for mouse movement and click capture\r
+if (!IE) document.captureEvents(Event.MOUSEMOVE)\r
+if (!IE) document.captureEvents(Event.MOUSEDOWN)\r
+\r
+// Temporary variables to hold mouse x-y pos.s\r
+var tempX = 0\r
+var tempY = 0\r
+var check = 0\r
+var Pos1x = 0\r
+var Pos1y = 0\r
+var Pos2x = 0\r
+var Pos2y = 0\r
+var RelX = 0\r
+var RelY = 0\r
+\r
+//start is the trigger that starts the box creation.\r
+function start() {\r
+       //assign click as the event handler if there is a click.\r
+       document.onmousedown = click\r
+       return true\r
+}\r
+\r
+function click(e){\r
+                       if (check == 2){return;//prevent multiple box drawing, or catching a third click.\r
+                               }\r
+                       if (check == 0) { //first click\r
+                               if (IE) { // grab the x-y pos.s if browser is IE\r
+                                               // have to use document.documentElement instead of document.body \r
+                                               // because for some reason IE6 reassigns when in standards complient mode\r
+                                               // http://www.quirksmode.org/js/doctypes.html\r
+                                  tempX = event.clientX + document.documentElement.scrollLeft\r
+                                  tempY = event.clientY + document.documentElement.scrollTop\r
+                                 } else {  // grab the x-y pos.s if browser is NS/mozilla\r
+                                  tempX = e.pageX\r
+                                  tempY = e.pageY\r
+                                }  \r
+                                //write temporary position 1(top left corner)\r
+                               Pos1x = tempX\r
+                               Pos1y = tempY\r
+                               //getting the check variable ready for the second click\r
+                               check = check + 1 \r
+                               //create the drawingbox and insert it into the DOM tree at the first mouse click location\r
+                               createbox()\r
+                               //run the function that updates the mouse postion and update the box size on mousemove\r
+                               document.onmousemove = getMouseXY\r
+                               return false;\r
+                       }\r
+                       //second click\r
+                       if (check == 1) {\r
+                               //save second click location(bottem right) to submit to php for calculation\r
+                               Pos2x = tempX\r
+                               Pos2y = tempY\r
+                               check = check + 1 // makes check = 2 to prevent additional boxes being drawn, or variables being written\r
+                               //disable mouseevents\r
+                               document.onmousedown = null\r
+                               document.onmousemove = null\r
+                               //create the box for the caption\r
+                               createcaptionbox()\r
+                               return false;\r
+                       }               \r
+       return false;\r
+}\r
+\r
+// Main function to retrieve mouse x-y pos.s and update box size.\r
+function getMouseXY(e) {\r
+  if (IE) { // grab the x-y pos.s if browser is IE\r
+    // have to use document.documentElement instead of document.body \r
+       // because for some reason IE6 reassigns when in standards complient mode\r
+       // http://www.quirksmode.org/js/doctypes.html\r
+       tempX = event.clientX + document.documentElement.scrollLeft\r
+       tempY = event.clientY + document.documentElement.scrollTop\r
+  } else {  // grab the x-y pos.s if browser is NS/mozilla\r
+    tempX = e.pageX\r
+    tempY = e.pageY\r
+  }  \r
+  // catch possible negative values in NS4\r
+  if (tempX < 0){tempX = 0}\r
+  if (tempY < 0){tempY = 0}  \r
+  //while the mouse is moving,create and update the size of the drawingbox\r
+  var box = document.getElementById('drawingbox')\r
+  //update the size of the box everytime the mouse moves a pixel\r
+  boxwidth =(tempX - Pos1x) //these calculations have to be \r
+  boxheight = (tempY - Pos1y) //seperate because IE chokes\r
+  box.style.width = boxwidth + 'px' //update box width and height\r
+  box.style.height = boxheight + 'px'\r
+  return true;\r
+}\r
+\r
+function createcaptionbox() {\r
+       //the insert caption box is really a form inside a div\r
+       //these lines generate a form, and puts in inputs \r
+       //Pos1x,Pos1y,Po2x,Pos2y,RelX,RelY,pictureid,description\r
+       //the form has to be created here because IE can not accept\r
+       //two forms with the same name (firefox does)\r
+       //otherwise it would be easier to generate the \r
+       //form from the nucleus template\r
+       var captionformdiv = document.createElement('div')\r
+       var captionform = document.createElement('form')\r
+       captionform.setAttribute('name','Show')\r
+       captionform.setAttribute('method','POST')\r
+       captionform.setAttribute('action','/action.php?action=plugin&name=gallery&type=tagaccept')\r
+       captionform.style.border\r
+       captionform.style.font\r
+       captionform.style.padding\r
+       var inputPos1x = document.createElement('input')\r
+       inputPos1x.setAttribute('name','Pos1x')\r
+       inputPos1x.setAttribute('value',Pos1x)\r
+       inputPos1x.setAttribute('type','hidden')\r
+       captionform.appendChild(inputPos1x)\r
+       var inputPos1y = document.createElement('input')\r
+       inputPos1y.setAttribute('name','Pos1y')\r
+       inputPos1y.setAttribute('value',Pos1y)\r
+       inputPos1y.setAttribute('type','hidden')\r
+       captionform.appendChild(inputPos1y)\r
+       var inputPos2x = document.createElement('input')\r
+       inputPos2x.setAttribute('name','Pos2x')\r
+       inputPos2x.setAttribute('value',Pos2x)\r
+       inputPos2x.setAttribute('type','hidden')\r
+       captionform.appendChild(inputPos2x)\r
+       var inputPos2y = document.createElement('input')\r
+       inputPos2y.setAttribute('name','Pos2y')\r
+       inputPos2y.setAttribute('value',Pos2y)\r
+       inputPos2y.setAttribute('type','hidden')\r
+       captionform.appendChild(inputPos2y)\r
+       var inputRelX = document.createElement('input')\r
+       inputRelX.setAttribute('name','RelX')\r
+       inputRelX.setAttribute('value',RelX)\r
+       inputRelX.setAttribute('type','hidden')\r
+       captionform.appendChild(inputRelX)\r
+       var inputRelY = document.createElement('input')\r
+       inputRelY.setAttribute('name','RelY')\r
+       inputRelY.setAttribute('value',RelY)\r
+       inputRelY.setAttribute('type','hidden')\r
+       captionform.appendChild(inputRelY)\r
+       var inputdesc = document.createElement('input')\r
+       inputdesc.setAttribute('name','desc')\r
+       inputdesc.setAttribute('value','enter caption')\r
+       inputdesc.setAttribute('size','30')\r
+       inputdesc.style.fontSize = '10px'\r
+       inputdesc.style.border = '0px'\r
+       inputdesc.setAttribute('onClick','erasedesc();')\r
+       captionform.appendChild(inputdesc)\r
+       var inputpictureid = document.createElement('input')\r
+       inputpictureid.setAttribute('name','pictureid')\r
+       inputpictureid.setAttribute('value',pictureid )\r
+       inputpictureid.setAttribute('type','hidden')\r
+       captionform.appendChild(inputpictureid)\r
+       var inputsubmit = document.createElement('input')\r
+       inputsubmit.setAttribute('name','Submit')\r
+       inputsubmit.setAttribute('type','submit')\r
+       inputsubmit.style.fontFamily = 'Verdana'\r
+       inputsubmit.style.fontSize = '10px'\r
+       inputsubmit.style.backgroundColor = '#cccccc'\r
+       inputsubmit.style.border ='1px'\r
+       inputsubmit.setAttribute('value','Tagit!')\r
+       captionform.appendChild(inputsubmit)\r
+       //give the div that wraps the form some attributes.\r
+       captionformdiv.style.position = 'absolute'\r
+       captionformdiv.style.left = Pos1x  +'px'\r
+       captionformdiv.style.top = Pos2y  +'px'\r
+       captionformdiv.style.width =  tempX - Pos1x - 5 +'px'\r
+       captionformdiv.style.backgroundColor = '#FFFFFF'\r
+       captionformdiv.style.display = 'block'\r
+       captionformdiv.style.borderStyle = 'solid'\r
+       captionformdiv.style.borderColor = '#FFFFFF'\r
+       //put the captionform into the captionbox into the wrapper div\r
+       captionformdiv.appendChild(captionform)\r
+       document.getElementById('container').appendChild(captionformdiv)\r
+\r
+\r
+}\r
+\r
+function createbox(){\r
+       // initialize the box with zero width and height, inserted at the first mouse click location (tempX,tempY)\r
+       var drawingbox = document.createElement('div')\r
+                               drawingboxwidth = Pos2x - RelX\r
+                               drawingbox.style.position = 'absolute'\r
+                               drawingbox.setAttribute('id','drawingbox')\r
+                               drawingbox.setAttribute('class','drawingbox')\r
+                               drawingbox.style.borderStyle = 'solid'\r
+                               drawingbox.style.borderColor = '#FFFFFF'\r
+                               drawingbox.style.borderWidth = '1px'\r
+                               drawingbox.style.left = tempX  +'px'\r
+                               drawingbox.style.top = tempY  +'px'\r
+                               drawingbox.style.height = "0px"\r
+                               drawingbox.style.width = "0px"\r
+                               drawingbox.style.display = 'block'\r
+                               drawingbox.style.zIndex = '5'\r
+                               //where to insert the box in the DOM tree.\r
+                               document.getElementById('container').appendChild(drawingbox);\r
+       }\r
+\r
+//find actual location of an element in the DOM tree(in this case the image). \r
+//this function is called as a onMouseover event from the browser. code from quirksmode.org\r
+function findPosX(obj)\r
+{\r
+       var curleft = 0;\r
+       if (obj.offsetParent)\r
+       {\r
+               while (obj.offsetParent)\r
+               {\r
+                       curleft += obj.offsetLeft\r
+                       obj = obj.offsetParent;\r
+               }\r
+       }\r
+       else if (obj.x)\r
+               curleft += obj.x;\r
+       return curleft;\r
+}\r
+\r
+function findPosY(obj)\r
+{\r
+       var curtop = 0;\r
+       var printstring = '';\r
+       if (obj.offsetParent)\r
+       {\r
+               while (obj.offsetParent)\r
+               {\r
+                       printstring += ' element ' + obj.tagName + ' has ' + obj.offsetTop;\r
+                       curtop += obj.offsetTop\r
+                       obj = obj.offsetParent;\r
+               }\r
+       }\r
+       else if (obj.y)\r
+               curtop += obj.y;\r
+       window.status = printstring;\r
+       return curtop;\r
+}\r
+\r
+// on mouseover the image, executes this to assign its absolute position and save it(RelX,RelY)\r
+// for relative div position calculating purposes in the php tagaccept file.\r
+function setLyr(obj,lyr)\r
+{\r
+       RelX = findPosX(obj);\r
+       RelY = findPosY(obj);\r
+\r
+}\r
+\r
+//on mouseout (NS) or mouseleave (IE), hide the tooltip boxes\r
+function hidetipdivs() {\r
+       \r
+       navRoot = document.getElementById("tooltip2");\r
+       for (i=0; i<navRoot.childNodes.length; i++) {\r
+               navRoot.childNodes[i].style.display = 'none' ;\r
+   }\r
+  }\r
+\r
+//on mouseover (NS) or on mouseenter (IE) show tipdivs\r
+function showtipdivs() {\r
+navRoot = document.getElementById("tooltip2");\r
+for (i=0; i<navRoot.childNodes.length; i++) {\r
+  navRoot.childNodes[i].style.display = '' ;\r
+   }\r
+  }\r
+  \r
+function erasedesc(){\r
+       document.Show.desc.value=null\r
+       document.Show.desc.value=''\r
+       }\r
+  \r
+\r
+//hide the boxes initially, to avoid confusion where the mouse is initially in the image, or not in the image.\r
+//hidetipdivs(); \r
+// this had to be moved to after the picture loads, because for some reason\r
+// if you insert javascript from an external file, IE6 loads the file AFTER everything else is loaded\r
+// if it is a relative URL, and BEFORE everything is loaded if it is a absolute URL containing http://\r
+// so IE6 tries to remove the hover captions but there are no hover captions to remove so IE6 crashes.\r
+\r
+function startList() {\r
+if (document.all && document.getElementById) { //check if its IE\r
+navRoot = document.getElementById("tooltip2");\r
+for (i=0; i<navRoot.childNodes.length; i++) {\r
+  node = navRoot.childNodes[i];\r
+  if (node.nodeName=="DIV") {\r
+  node.onmouseover=function() {\r
+  this.className+=" over";\r
+    }\r
+  node.onmouseout=function() {\r
+  this.className=this.className.replace\r
+      (" over", "");\r
+   }\r
+   }\r
+  }\r
+ }\r
+}\r
+window.onload=startList;\r
+\r
+\r
+\r
+\r
diff --git a/NP_gallery/tags/v0.95/gallery/add_picture.php b/NP_gallery/tags/v0.95/gallery/add_picture.php
new file mode 100644 (file)
index 0000000..1bbc84f
--- /dev/null
@@ -0,0 +1,469 @@
+<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
diff --git a/NP_gallery/tags/v0.95/gallery/admin.php b/NP_gallery/tags/v0.95/gallery/admin.php
new file mode 100644 (file)
index 0000000..e262ab6
--- /dev/null
@@ -0,0 +1,1251 @@
+<?php\r
+\r
+//NP_Gallery admin class\r
+\r
+class NPG_ADMIN {\r
+\r
+       var $action;\r
+       var $tabs;\r
+       \r
+       function NPG_ADMIN() {\r
+               global $manager;\r
+               \r
+               //admin tabs\r
+               $this->tabs = array();\r
+               array_push($this->tabs, array('action' => 'albumlist', 'active' =>'albums', 'user' => 1, 'title'=>__NPG_ADMIN_TAB_ALBUMS));\r
+               array_push($this->tabs, array('action' => 'comments', 'active' =>'comments', 'user' => 1, 'title'=>__NPG_ADMIN_TAB_COMMENTS));\r
+               array_push($this->tabs, array('action' => 'config', 'active' =>'config', 'title'=>__NPG_ADMIN_TAB_CONFIG));\r
+               if($NPG_CONF['add_album'] == 'select') array_push($this->tabs, array('action' => 'users', 'active' =>'users', 'title'=>__NPG_ADMIN_TAB_USERS));\r
+               array_push($this->tabs, array('action' => 'templates', 'active' =>'templates', 'title'=>__NPG_ADMIN_TAB_TEMPLATES));\r
+               array_push($this->tabs, array('action' => 'functions', 'active' =>'admin', 'title'=>__NPG_ADMIN_TAB_ADMIN));\r
+\r
+               $manager->notify('NPgAdminTab', array('tabs' => &$this->tabs ));\r
+       }\r
+       \r
+       function action($action) {\r
+               global $gmember, $NPG_CONF, $manager;\r
+               \r
+               $alias = array(\r
+                       'login' => 'albumlist',\r
+                       '' => 'albumlist'\r
+               );\r
+\r
+               if ($alias[$action])\r
+                       $action = $alias[$action];\r
+\r
+               $methodName = 'action_' . $action;\r
+\r
+               $this->action = strtolower($action);\r
+               \r
+               //if nucleus version 3.2, check ticket\r
+               /*\r
+               if(getNucleusVersion() >= 320) {\r
+                       $aActionsNotToCheck = array();\r
+\r
+                       if (!in_array($this->action, $aActionsNotToCheck))\r
+                       {\r
+                               if (!$manager->checkTicket())\r
+                                       $this->error(_ERROR_BADTICKET);\r
+                       }\r
+                       \r
+               }\r
+               */\r
+               if (method_exists($this, $methodName))\r
+                       call_user_func(array(&$this, $methodName));\r
+               else\r
+                       $this->error(_BADACTION . " ($action)");\r
+       \r
+\r
+       }\r
+       \r
+       function error($msg) {\r
+               ?>\r
+               <h2>Error!</h2>\r
+               <?php           echo $msg;\r
+               echo "<br />";\r
+               echo "<a href='index.php' onclick='history.back()'>"._BACK."</a>";\r
+               exit;\r
+       }\r
+       \r
+       \r
+       function display_tabs($active = 'albumlist') {\r
+               global $gmember, $NPG_CONF, $galleryaction;\r
+               \r
+               echo '<ul id="tabmenu">';\r
+               foreach($this->tabs as $tab) {\r
+                       if($tab['user'] || $gmember->isAdmin() ) {\r
+                               echo '<li><a ';\r
+                               if( $active == $tab['active'] ) echo 'class="active" ';\r
+                               echo 'href="'.$galleryaction;\r
+                               if($tab['action']) echo '?action='.$tab['action'];\r
+                               echo '">'.$tab['title'].'</a></li>';\r
+                       }\r
+               }\r
+               echo '</ul>';\r
+\r
+       }\r
+       \r
+       function display_selectusers() {\r
+               global $galleryaction,$gmember;\r
+       \r
+               $result = mysql_query('select a.*, b.mname as membername from '.sql_table('plug_gallery_member').' as a, '.sql_table('member').' as b where mnumber=memberid');\r
+               if(!$result) {\r
+                       echo mysql_error();\r
+                       return;\r
+               }\r
+               \r
+               echo '<h3>'.__NPG_ADMIN_PERMITTED_USERS.'</h3>';\r
+               echo '<div class="half"><table>';\r
+               echo '<thead><tr><th>'.__NPG_FORM_NAME.'</th><th>'.__NPG_FORM_ACTIONS.'</th></thead><tbody>';\r
+               while($row=mysql_fetch_object($result)) {\r
+                       echo "<tr onmouseover='focusRow(this);' onmouseout='blurRow(this);'>";\r
+                       echo '<td>'.$row->membername.'</td>';\r
+                       echo '<td><a href="'.$galleryaction.'?action=removeselectuser&amp;userid='.$row->memberid.'">'.__NPG_ADMIN_REMOVE_SELECT_USER.'</td></tr>';\r
+               }\r
+               echo '</tbody></table></div>';\r
+               \r
+               //query for list of users not already assigned in plug_gallery_member and not site admins (they can always add)\r
+               $result = mysql_query('select * from '.sql_table('member').' as a left join '.sql_table('plug_gallery_member').' as b on mnumber=memberid where madmin=0 and memberid is NULL');\r
+               if(!$result) {\r
+                       echo mysql_error();\r
+                       return;\r
+               }\r
+               if(mysql_num_rows($result)) {\r
+                       ?>\r
+                       <form method="post" action="<?php echo $galleryaction; ?>"><div>\r
+                               <input type="hidden" name="action" value="addselectuser" />\r
+                               \r
+                               <h3><?php echo(__NPG_ADMIN_GIVE_ADD_PERM); ?></h3>\r
+                               <?php echo(__NPG_GEN_USER); ?>: <select name="userid">\r
+                               <?php\r
+                               while($row=mysql_fetch_object($result)) {\r
+                                       echo '<option value="'.$row->mnumber.'">'.$row->mname;\r
+                               }\r
+                               ?>\r
+                               </select>\r
+                               <input type="submit" value="<?php echo (__NPG_ADMIN_ADD_TO_LIST); ?>" />\r
+                       </div></form>\r
+                       <?php\r
+               }\r
+       \r
+       }\r
+       \r
+       function display_options() {\r
+               global $NPG_CONF,$galleryaction;\r
+       \r
+               $galleryconfig = checkgalleryconfig();\r
+               \r
+               if(!$galleryconfig['configured']) {\r
+                       setNPGoption('configured', false);\r
+                       echo '<div class="error">'.$galleryconfig['message'].'</div>';\r
+               }\r
+               else setNPGoption('configured', true);\r
+               \r
+               $NPG_CONF = getNPGConfig();\r
+               \r
+               if(!$NPG_CONF['configured']) echo '<div class="error">'.__NPG_ERR_GALLLERY_NOT_CONFIG . '</div><br/><br/>';\r
+               \r
+               echo '<form method="post" action="'.$galleryaction.'?action=editoptions" ><div>';\r
+               echo '<fieldset>';\r
+               echo '<legend>'.__NPG_ADMIN_GEN_OPTIONS.'</legend>';\r
+               echo '<p>';\r
+                       echo '<label for="addlevel">'.__NPG_ADMIN_ADD_LEVEL.':</label>';\r
+                       echo '<select name="addalbumlevel" id="addlevel">';\r
+                       echo '<option value="admin" ';\r
+                               if($NPG_CONF['add_album'] == 'admin' ) echo 'selected'; \r
+                               echo '>'.__NPG_ADMIN_ONLY_ADMIN;\r
+                       echo '<option value="member" ';\r
+                               if($NPG_CONF['add_album'] == 'member' ) echo 'selected';\r
+                               echo '>'.__NPG_ADMIN_ONLY_REGUSERS;\r
+                       echo '<option value="guest" ';\r
+                               if($NPG_CONF['add_album'] == 'guest' ) echo 'selected';\r
+                               echo '>'.__NPG_ADMIN_ANYONE;\r
+                       echo '<option value="select" ';\r
+                               if($NPG_CONF['add_album'] == 'select' ) echo 'selected';\r
+                               echo '>'.__NPG_ADMIN_SELECTEDUSERS;\r
+                       echo '</select></p>';\r
+               \r
+                       if($NPG_CONF['add_album'] == 'select' ) {\r
+                               echo __NPG_ADMIN_PERMITTED_USERS.': ';\r
+                               $result = mysql_query('select a.mname from '.sql_table('member').' as a, '.sql_table('plug_gallery_member').' as b where b.memberid=a.mnumber and b.addalbum=1');\r
+                               if(!$result) echo 'sql error'.mysql_error().'<br/>';\r
+                               $num_rows = mysql_num_rows($result);\r
+                               if(!$num_rows) echo __NPG_ADMIN_NOSELECT;\r
+                               $i=0;\r
+                               while ($row = mysql_fetch_object($result)) {\r
+                                       if($i) echo ', ';\r
+                                       echo $row->mname;\r
+                                       $i++;\r
+                               }\r
+                               echo '<br/><br/>';\r
+                       }\r
+               \r
+               echo '<p><label for="promo">'.__NPG_ADMIN_PROMOBLOG.': </label>';\r
+                       echo '<select name="promocatid" id="promo">';\r
+                       echo '<option value="0"';\r
+                       if ($NPG_CONF['blog_cat'] == 0) echo ' selected ';\r
+                       echo '>'.__NPG_ADMIN_NOPROMO;\r
+                       $query = 'select bshortname, cname, catid from ' . sql_table('blog').', '.sql_table('category').' where cblog=bnumber';\r
+                       $result = mysql_query($query);\r
+                       if(!$result) echo 'sql error! '.mysql_error().'<br/>';\r
+                       while($row = mysql_fetch_object($result)) {\r
+                               echo '<option value="'.$row->catid.'"';\r
+                               if ($NPG_CONF['blog_cat'] == $row->catid) echo ' selected';\r
+                               echo '>'.$row->cname.' in '.$row->bshortname;\r
+                       }\r
+                       echo '</select></p>';\r
+               \r
+               echo '<p><label for="templatef">'.__NPG_ADMIN_ACTIVETEMPLATE.': </label>';\r
+                       echo '<select name="template" id="templatef">';\r
+                       $query = 'select * from '.sql_table('plug_gallery_template_desc');\r
+                       $result = sql_query($query);\r
+                       while($row=mysql_fetch_object($result)) {\r
+                               echo '<option value="'.$row->tdid.'"';\r
+                               if ($NPG_CONF['template'] == $row->tdid) echo ' selected';\r
+                               echo '>'.$row->tdname;\r
+                       }\r
+                       echo '</select></p>';\r
+                       \r
+               echo '<p><label for="views">'.__NPG_ADMIN_VIEWTIME.': </label>';\r
+                       echo '<input type="text" name="viewtime" id="views" value="'.$NPG_CONF['viewtime'].'" size="3" /></p>';\r
+                       \r
+               echo '<p><label for="batch">number of batch upload slots/pictures to loop in massupload: </label>';\r
+                       echo '<input type="text" name="batchnumber" id="batch" value="'.$NPG_CONF['batch_add_num'].'" size="3" /></p>';\r
+               \r
+               echo '<p><label for="dir">'.__NPG_ADMIN_IMAGE_DIR.': </label>';\r
+                       echo '<input type="text" name="galleryDir" id="dir" value="'.$NPG_CONF['galleryDir'].'" size="20" /></p>';\r
+               \r
+               echo '<p><label for="maxi">'.__NPG_ADMIN_MAX_INT_DIM.': </label>';\r
+                       echo '<input type="text" id="maxi" name="maxheight" value="'.$NPG_CONF['maxheight'].'" size="3" /> x <input type="text" name="maxwidth" value="'.$NPG_CONF['maxwidth'].'" size="3" /></p>';\r
+               \r
+               echo '<p><label for="maxt">'.__NPG_ADMIN_THUMB_DIM.': </label>';\r
+                       echo '<input type="text" id="maxt" name="thumbheight" value="'.$NPG_CONF['thumbheight'].'" size="3" /> x <input type="text" name="thumbwidth" value="'.$NPG_CONF['thumbwidth'].'" size="3" /></p>';\r
+                       \r
+               //AdminCommentsPerPage, ThumbnailsPerPage\r
+               echo '<p><label for="acperpage">'.__NPG_ADMIN_COMMENTSPERPAGE.': </label>';\r
+                       echo '<input type="text" id="acperpage" name="AdminCommentsPerPage" value="'.$NPG_CONF['AdminCommentsPerPage'].'" size="3" /></p>';\r
+                       \r
+               echo '<p><label for="tbperpage">'.__NPG_ADMIN_THUMBSPERPAGE.': </label>';\r
+                       echo '<input type="text" id="tbperpage" name="ThumbnailsPerPage" value="'.$NPG_CONF['ThumbnailsPerPage'].'" size="3" /></p>';\r
+               echo '<p>';\r
+                       echo '<label for="dateorrandom">random file prefix or current date as file prefix?:</label>';\r
+                       echo '<select name="dateorrandom" id="dateorrandom">';\r
+                       echo '<option value="randomprefix" ';\r
+                               if($NPG_CONF['dateorrandom'] == 'randomprefix' ) echo 'selected'; \r
+                               echo '>random prefix';\r
+                       echo '<option value="dateprefix" ';\r
+                               if($NPG_CONF['dateorrandom'] == 'dateprefix' ) echo 'selected';\r
+                               echo '>date prefix';\r
+                       echo '</select></p>';\r
+                       \r
+               echo '<p>';\r
+                       echo '<label for="tooltips">use tooltip captions:</label>';\r
+                       echo '<select name="tooltips" id="tooltips">';\r
+                       echo '<option value="yes" ';\r
+                               if($NPG_CONF['tooltips'] == 'yes' ) echo 'selected'; \r
+                               echo '>yes';\r
+                       echo '<option value="no" ';\r
+                               if($NPG_CONF['tooltips'] == 'no' ) echo 'selected';\r
+                               echo '>no';\r
+                       echo '</select></p>';\r
+                       \r
+               echo '<p>';\r
+                       echo '<label for="nextprevthumb">use next and previoud album thumbnails:</label>';\r
+                       echo '<select name="nextprevthumb" id="nextprevthumb">';\r
+                       echo '<option value="yes" ';\r
+                               if($NPG_CONF['nextprevthumb'] == 'yes' ) echo 'selected'; \r
+                               echo '>yes';\r
+                       echo '<option value="no" ';\r
+                               if($NPG_CONF['nextprevthumb'] == 'no' ) echo 'selected';\r
+                               echo '>no';\r
+                       echo '</select></p>';\r
+                       \r
+               echo '<p>';\r
+                       echo '<label for="defaultorder">default order for albums:</label>';\r
+                       echo '<select name="defaultorder" id="defaultorder">';\r
+                       $sortoptions = array('title','desc','owner','date','titlea','desca','ownera','datea','filename','filenamea');\r
+                       foreach ($sortoptions as $value){\r
+                       echo '<option value="'.$value.'" ';\r
+                               if($NPG_CONF['defaultorder'] == $value ) echo 'selected'; \r
+                               echo '>'.$value;\r
+                       }\r
+                       echo '</select></p>';\r
+                       //these needed to be added to the list (it would be nice)\r
+                       //'title','desc','owner','date','titlea','desca','ownera','datea'\r
+\r
+                       \r
+               echo '<p>';\r
+                       echo '<label for="setorpromo">use keyword sets or static promoposts:</label>';\r
+                       echo '<select name="setorpromo" id="setorpromo">';\r
+                       echo '<option value="promo" ';\r
+                               if($NPG_CONF['setorpromo'] == 'promo' ) echo 'selected'; \r
+                               echo '>promo';\r
+                       echo '<option value="sets" ';\r
+                               if($NPG_CONF['setorpromo'] == 'sets' ) echo 'selected';\r
+                               echo '>sets';\r
+                       echo '</select></p>';\r
+                       \r
+               echo '<p>';\r
+                       echo '<label for="slideshowson">enable slideshows:</label>';\r
+                       echo '<select name="slideshowson" id="slideshowson">';\r
+                       echo '<option value="yes" ';\r
+                               if($NPG_CONF['slideshowson'] == 'yes' ) echo 'selected'; \r
+                               echo '>yes';\r
+                       echo '<option value="no" ';\r
+                               if($NPG_CONF['slideshowson'] == 'no' ) echo 'selected';\r
+                               echo '>no';\r
+                       echo '</select></p>';\r
+               echo '<p>';\r
+                       echo '<label for="thumborlist">Gallery as list or thumbnails:</label>';\r
+                       echo '<select name="thumborlist" id="thumborlist">';\r
+                       echo '<option value="list" ';\r
+                               if($NPG_CONF['thumborlist'] == 'list' ) echo 'selected'; \r
+                               echo '>list';\r
+                       echo '<option value="thumb" ';\r
+                               if($NPG_CONF['thumborlist'] == 'thumb' ) echo 'selected';\r
+                               echo '>thumb';\r
+                       echo '</select></p>';\r
+                       \r
+               \r
+               echo '</fieldset>';\r
+                       \r
+               echo '<fieldset>';\r
+               echo '<legend>'.__NPG_ADMIN_GRAPHICS_OPTIONS.'</legend>';\r
+               echo '<p><label for="engine">'.__NPG_ADMIN_GRAPHICS_ENGINE.':</label>';\r
+                       echo '<select id="engine" name="graphicslibrary">';\r
+                       if(GDispresent()) { \r
+                               echo '<option value="gd" ';\r
+                               if($NPG_CONF['graphics_library']=='gd') echo 'selected';\r
+                               echo '>GD v2 or greater';\r
+                       }\r
+                       if ($NPG_CONF['im_version'] = getIMversion()) {\r
+                               echo '<option value="im" ';\r
+                               if($NPG_CONF['graphics_library']=='im') echo 'selected ';\r
+                               echo '>ImageMagick';\r
+                       }\r
+                       echo '</select></p>';\r
+                       \r
+                       //test for GD\r
+                       if(GDispresent()) echo __NPG_ADMIN_GD_INSTALLED.'<br />'; \r
+                               else echo __NPG_ADMIN_GD_NOT_INSTALLED.'<br />';\r
+                       if($NPG_CONF['im_version'] = getIMversion()) echo __NPG_ADMIN_IM_INSTALLED.'<br/>'; \r
+                               else echo __NPG_ADMIN_IM_NOT_INSTALLED.'<br/>';\r
+                       echo '<br/>';\r
+                       \r
+               echo '<p><label for="path">'.__NPG_ADMIN_IM_PATH.':</label>';\r
+                       echo '<input type="text" id="path" name="impath" value="'.$NPG_CONF['im_path'].'" size="20" /></p>';\r
+\r
+               echo '<p><label for="options">'.__NPG_ADMIN_IM_OPTIONS.':</label>';\r
+                       echo '<input type="text" id="options" name="imoptions" value="'.$NPG_CONF['im_options'].'" size="20" /></p>';\r
+               \r
+               echo '<p><label for="quality">'.__NPG_ADMIN_IM_QUALITY.':</label>';\r
+                       echo '<input type="text" id="quality" name="imquality" value="'.$NPG_CONF['im_quality'].'" size="2" /></p>';\r
+                       \r
+               echo '</fieldset>';\r
+               echo '<br /><input type="submit" value="'.__NPG_FORM_SUBMIT_CHANGES.'" />';\r
+               echo '</div></form>';\r
+               \r
+       }\r
+       \r
+       function display_albums() {\r
+               global $NPG_CONF, $galleryaction, $gmember;\r
+       \r
+               $albums = $gmember->getallowedalbums();\r
+               $memberid = $gmember->getID();\r
+               \r
+               if(!$albums && !$gmember->isAdmin() ) {\r
+                       echo __NPG_ERR_NO_ALBUMS.'<br/>';\r
+                       return;\r
+               }\r
+               \r
+               echo '<table>';\r
+               echo '<thead><tr><th>'.__NPG_FORM_ALBUM_TITLE.'</th><th>'.__NPG_FORM_ALBUM_DESC.'</th><th>'.Images.'</th><th>'.Owner.'</th><th colspan="2" >'.__NPG_FORM_ACTIONS.'</th></tr></thead>';\r
+               $j=0;\r
+               while($albums[$j]) {\r
+                       echo '<tr onmouseover=\'focusRow(this);\' onmouseout=\'blurRow(this);\'>';\r
+                       echo '<td>'.$albums[$j]->title.'</td>';\r
+                       echo '<td>'.$albums[$j]->description.'</td>';\r
+                       echo '<td>'.$albums[$j]->numberofimages.'</td>';\r
+                       echo '<td>'.$albums[$j]->mname.'</td>';\r
+                       if($gmember->canmodifyalbum($albums[$j]->albumid) ) {\r
+                               echo '<td><a href="'.$galleryaction.'?action=album&amp;id='.$albums[$j]->albumid.'">'.__NPG_FORM_SETTINGS.'</a></td>';\r
+                               echo '<td><a href="'.$galleryaction.'?action=deletealbum&amp;id='.$albums[$j]->albumid.'">'.__NPG_FORM_DELETE.'</a></td>';\r
+                       }\r
+                       else echo '<td>'.__NPG_FORM_SETTINGS.'</td><td>'.__NPG_FORM_DELETE.'</td>';\r
+                       echo '</tr>';\r
+                       $j++;\r
+               }\r
+               echo '</table>';\r
+       }\r
+       \r
+       function display_comments() {\r
+               global $gmember,$galleryaction,$NPG_CONF,$CONF,$NP_BASE_DIR;\r
+               \r
+               $amount = requestvar('amount');\r
+               $page = requestvar('page');\r
+               if($amount) $NPG_CONF['AdminCommentsPerPage'] = intval($amount);\r
+               \r
+               if (!$NPG_CONF['AdminCommentsPerPage']) {\r
+                       setNPGOption('AdminCommentsPerPage',25);\r
+                       $NPG_CONF['AdminCommentsPerPage'] = 25;\r
+               }\r
+               $offset = intval($page - 1) * $NPG_CONF['AdminCommentsPerPage'];\r
+               if ($offset <= 0) $offset = '0';\r
+               \r
+               if(!$page) $page='1';\r
+               \r
+               $query = 'select * from '.sql_table('plug_gallery_comment').' as a left join '.sql_table('member').' as b on a.cmemberid=b.mnumber left join '.sql_table('plug_gallery_picture').' as c on a.cpictureid=c.pictureid limit '.intval($offset).', '.intval($NPG_CONF['AdminCommentsPerPage']+1);\r
+               $res = sql_query($query);\r
+               $nrows = mysql_num_rows($res);\r
+               \r
+               //navigation\r
+               echo "\n".'<div><table class="navigation"><tr><td style="width:15%;">';\r
+               if(intval($page) > 1) {\r
+                       echo '<form method="post" action="'.$galleryaction.'"><div>';\r
+                       echo '<input type="hidden" name="action" value="comments" />';\r
+                       echo '<input type="hidden" name="page" value="'.(intval($page - 1)).'" />';\r
+                       echo '<input type="submit" value="&lt; &lt; '._LISTS_PREV.'" />';\r
+                       if($amount) echo '<input type="hidden" name="amount" value="'.$amount.'" />';\r
+                       echo '</div></form></td>';\r
+               }\r
+                       else echo '&lt; &lt; '._LISTS_PREV.'</td>';\r
+                       \r
+               echo '<td style="text-align:center;">'.__NPG_PAGE.': '.$page.'</td>';\r
+               \r
+               echo '<td style="text-align:right; width:15%;">';\r
+               if($nrows > $NPG_CONF['AdminCommentsPerPage']) {\r
+               echo '<form method="post" action="'.$galleryaction.'"><div>';\r
+               echo '<input type="hidden" name="action" value="comments" />';\r
+               echo '<input type="hidden" name="page" value="'.(intval($page + 1)).'" />';\r
+               echo '<input type="submit" value="'._LISTS_NEXT.'  &gt; &gt;" />';\r
+               if($amount) echo '<input type="hidden" name="amount" value="'.$amount.'" />';\r
+               echo '</div></form>';\r
+               } \r
+               else echo _LISTS_NEXT.'  &gt; &gt;';\r
+               echo '</td></tr></table></div>'."\n";\r
+               \r
+               \r
+               //echo '<h3>'.__NPG_ADMIN_COMMENTS.'</h3>';\r
+               echo '<table><thead><tr><th>'.__NPG_COMMENT.'</th><th>'.__NPG_AUTHOR.'</th><th>'.__NPG_TIME.'</th><th>'.__NPG_PICTUREID.'</th><th colspan=\'2\'>'.__NPG_FORM_ACTIONS.'</th></tr></thead><tbody>';\r
+               \r
+               $format = 'M j, h:i';\r
+               \r
+               $i=0;\r
+               while ($row = mysql_fetch_object($res) and $i < $NPG_CONF['AdminCommentsPerPage']) {\r
+                       echo '<tr onmouseover=\'focusRow(this);\' onmouseout=\'blurRow(this);\'>';\r
+                       echo '<td>'.$row->cbody.'</td>';\r
+                       echo '<td>';\r
+                       if($row->cuser) echo $row->cuser; else echo $row->mname;\r
+                       echo '</td>';\r
+                       \r
+                       $d = converttimestamp($row->ctime);\r
+                       $d = date($format,$d);\r
+                       echo '<td>'.$d.'</td>';\r
+                       \r
+                       if($row->int_filename) {\r
+                               $picturelink = $CONF['IndexURL'].$row->int_filename;\r
+                               $image_size = getimagesize($NP_BASE_DIR.$row->int_filename);\r
+                               $pictureheight = $image_size[1]+15;\r
+                               $picturewidth = $image_size[0]+15;\r
+                               echo '<td><a href="'.$picturelink.'" onclick="window.open(this.href,\'imagepopup\',\'status=no,toolbar=no,scrollbars=auto,resizable=yes,width='.$picturewidth.',height='.$pictureheight.'\');return false;">'.$row->title.'</td>';\r
+                       } else {\r
+                               echo '<td>Picture deleted</td>';\r
+                       }\r
+                       \r
+                       echo '<td><a href="'.$galleryaction.'?action=editcommentF&amp;id='.$row->commentid.'">'.__NPG_FORM_EDIT.'</a></td>';\r
+                       echo '<td><a href="'.$galleryaction.'?action=deletecomment&amp;id='.$row->commentid.'">'.__NPG_FORM_DELETE.'</td></tr>';\r
+                       echo "\n";\r
+                       $i++;\r
+               }\r
+               echo '</tbody></table>';\r
+       \r
+       }\r
+       \r
+       function display_templates() {\r
+               global $NPG_CONF, $galleryaction;\r
+       \r
+               echo '<h3>'.__NPG_ADMIN_TEMPLATES.'</h3>';\r
+               echo '<table><thead><tr><th>'.__NPG_FORM_NAME.'</th><th>'.__NPG_FORM_DESC.'</th><th colspan=\'3\' >'.__NPG_FORM_ACTIONS.'</th></tr></thead><tbody>';\r
+               $query = 'select * from '.sql_table('plug_gallery_template_desc');\r
+               $result = sql_query($query);\r
+               while ($row = mysql_fetch_object($result)) {\r
+                       echo '<tr onmouseover=\'focusRow(this);\' onmouseout=\'blurRow(this);\'>';\r
+                       echo '<td>'.$row->tdname.'</td>';\r
+                       echo '<td>'.$row->tddesc.'</td>';\r
+                       echo '<td><a href="'.$galleryaction.'?action=edittemplateF&amp;id='.$row->tdid.'">'.__NPG_FORM_EDIT.'</a></td>';\r
+                       echo '<td><a href="'.$galleryaction.'?action=clonetemplate&amp;id='.$row->tdid.'">'.__NPG_FORM_CLONE.'</td>';\r
+                       echo '<td><a href="'.$galleryaction.'?action=deletetemplate&amp;id='.$row->tdid.'">'.__NPG_FORM_DELETE.'</td></tr>';\r
+               }\r
+               \r
+               echo '</tbody></table>';\r
+               \r
+               $this->display_newtemplate();\r
+\r
+       }\r
+       \r
+       function display_newtemplate() {\r
+               global $galleryaction;\r
+               \r
+               echo '<h3>'.__NPG_FORM_NEWTEMPLATE.'</h3>';\r
+               echo '<form method="post" action="'.$galleryaction.'?action=addtemplate"><table>';\r
+               echo '<tr><td>'.__NPG_FORM_TEMPLATE_NAME.'</td><td><input name="tname" maxlength="20" size="20" /></td></tr>';\r
+               echo '<tr><td>'.__NPG_FORM_TEMPLATE_DESC.'</td><td><input name="tdesc" maxlength="200" size="50" /></td></tr>';\r
+               echo '<tr><td></td><td><input type="submit" value="'.__NPG_FORM_CREATENEWTEMPLATE.'" /></table></form>';\r
+       }\r
+       \r
+       function display_adminfunctions() {\r
+               global $galleryaction;\r
+               \r
+               echo '<h3>'.__NPG_ADMIN_ADMIN_FUNCTIONS.'</h3>';\r
+               \r
+               echo '<table>';\r
+               echo '<tr><td><input type="button" value="'.__NPG_ADMIN_CLEANUP.'" ';\r
+               echo 'onclick="window.location.href=\''.$galleryaction.'?action=admin&amp;function=cleanup\'"/>';\r
+               echo '</td><td>'.__NPG_ADMIN_CLEANUP_DESC.'</td></tr>';\r
+               \r
+               echo '<tr><td>';\r
+               echo '<form method="post" action="'.$galleryaction.'">';\r
+               echo '<input type="hidden" name="action" value="admin" />';\r
+               echo '<input type="hidden" name="function" value="rethumb" />';\r
+               echo '<input type="submit" value="'.__NPG_ADMIN_RETHUMB.'" />';\r
+               \r
+               $query = 'select * from '.sql_table('plug_gallery_album');\r
+               $res = sql_query($query);\r
+               echo '<select name="albumtorethumb">';\r
+               echo '<option value="0">'.__NPG_ADMIN_ALLALBUMS;\r
+               while ($row=mysql_fetch_object($res)) {\r
+                       echo '<option value="'.$row->albumid.'">'.$row->title;\r
+               }\r
+               echo '</select></form>';\r
+               echo '</td><td>'.__NPG_ADMIN_RETHUMB_DESC.'</td></tr>';\r
+               \r
+               echo '<tr><td>';\r
+               echo '<form method="post" action="'.$galleryaction.'">';\r
+               echo '<input type="hidden" name="action" value="admin" />';\r
+               echo '<input type="hidden" name="function" value="massupload" />';\r
+               echo '<input type="submit" value="'.__NPG_ADMIN_MASSUPLOAD.'" />';\r
+               mysql_data_seek($res,0);\r
+               echo '<select name="uploadalbum">';\r
+               echo '<option value="-1">'.__NPG_ADMIN_NEWALBUM;\r
+               while ($row=mysql_fetch_object($res)) {\r
+                       echo '<option value="'.$row->albumid.'">'.$row->title;\r
+               }\r
+               echo '</select></form>';\r
+               echo '</td><td>'.__NPG_ADMIN_MASSUPLOAD_DESC.'</td></tr>';\r
+               \r
+               echo '</table>';\r
+\r
+       }\r
+       \r
+       \r
+       function action_edittemplateF() {\r
+               global $gmember,$galleryaction;\r
+               \r
+               $id = $_GET['id'];\r
+               if($gmember->isAdmin() && $id) { \r
+                       $query = 'select * from '.sql_table('plug_gallery_template')." where tdesc = ".intval($id);\r
+                       $result = sql_query($query);\r
+                       if(mysql_num_rows($result)) {\r
+                               while ($row = mysql_fetch_object($result)) {\r
+                                       $section[$row->name] = stripslashes($row->content);\r
+                               }\r
+                       }\r
+                       \r
+                       $query2 = 'select * from '.sql_table('plug_gallery_template_desc')." where tdid = ".intval($id);\r
+                       $result2 = sql_query($query2);\r
+                       if(!mysql_num_rows($result2)) {\r
+                               echo __NPG_ERR_BAD_TEMPLATE.'<br/>';\r
+                               return false;\r
+                       }\r
+                       $row = mysql_fetch_object($result2);\r
+                       $section['name'] = stripslashes($row->tdname);\r
+                       $section['desc'] = stripslashes($row->tddesc);\r
+                       \r
+                       echo '<h3>'.__NPG_FORM_EDIT_TEMPLATE.': '.$section['name'].'</h3>';\r
+                       echo '<br/><a href="'.$galleryaction.'">'.__NPG_ADMIN_RETURN.'</a>';\r
+                       echo '<form method="post" action="'.$galleryaction.'?action=edittemplate"><div>';\r
+                       echo '<input type="hidden" name="id" value="'.$id.'" />';\r
+                       echo '<table><thead><tr><th colspan="2" >'.__NPG_FORM_TEMPLATE_SETTINGS.'</th></tr></thead>';\r
+                       echo '<tbody>';\r
+                       echo '<tr><td class="left">'.__NPG_FORM_TEMPLATE_NAME.'</td>';\r
+                       echo '<td><input name="tname" size="20" maxlength="20" value="';\r
+                       echo htmlspecialchars($section['name']);\r
+                       echo '" /></td></tr>';\r
+                       echo '<tr><td class="left">'.__NPG_FORM_TEMPLATE_DESC.'</td>';\r
+                       echo '<td><input name="tdesc" size="50" maxlength="200" value="';\r
+                       echo htmlspecialchars($section['desc']);\r
+                       echo '" /></td></tr>';\r
+                       echo '<tr><td></td><td><input type="submit" value="'.__NPG_FORM_SUBMIT_CHANGES.'" /></td></tr>';\r
+                       echo '</tbody></table>';\r
+                       \r
+                       echo '<table><thead><tr><th colspan="2" >'.__NPG_FORM_TEMPLATE_LIST.'</th></tr></thead>';\r
+                       echo '<tbody>';\r
+                       $tags = allowedTemplateTags('LIST_HEADER');\r
+                       echo '<tr><td class="left" >'.__NPG_FORM_TEMPLATE_HEADER.'<br/></td>';\r
+                       echo '<td><textarea class="templateedit" name="LIST_HEADER" cols="50" rows="5">';\r
+                       echo htmlspecialchars($section['LIST_HEADER']);\r
+                       echo '</textarea></td></tr><tr><td colspan="2">'.$tags.'</td></tr>';\r
+                       $tags = allowedTemplateTags('LIST_BODY');\r
+                       echo '<tr><td class="left" >'.__NPG_FORM_TEMPLATE_BODY.'<br/></td>';\r
+                       echo '<td><textarea class="templateedit" name="LIST_BODY" cols="50" rows="8">';\r
+                       echo htmlspecialchars($section['LIST_BODY']);\r
+                       echo '</textarea></td></tr><tr><td colspan="2">'.$tags.'</td></tr>';\r
+                       $tags = allowedTemplateTags('LIST_THUM');\r
+                       echo '<tr><td class="left" >LIST_THUM<br/></td>';\r
+                       echo '<td><textarea class="templateedit" name="LIST_THUM" cols="50" rows="8">';\r
+                       echo htmlspecialchars($section['LIST_THUM']);\r
+                       echo '</textarea></td></tr><tr><td colspan="2">'.$tags.'</td></tr>';\r
+                       $tags = allowedTemplateTags('LIST_FOOTER');\r
+                       echo '<tr><td class="left" >'.__NPG_FORM_TEMPLATE_FOOTER.'<br/></td>';\r
+                       echo '<td><textarea class="templateedit" name="LIST_FOOTER" cols="50" rows="5">';\r
+                       echo htmlspecialchars($section['LIST_FOOTER']);\r
+                       echo '</textarea></td></tr><tr><td colspan="2">'.$tags.'</td></tr>';\r
+                       echo '<tr><td></td><td><input type="submit" value="'.__NPG_FORM_SUBMIT_CHANGES.'" /></td></tr>';\r
+                       echo '</tbody></table>';\r
+                       \r
+                       echo '<table><thead><tr><th colspan="2" >'.__NPG_FORM_TEMPLATE_ALBUM.'</th></tr></thead>';\r
+                       echo '<tbody>';\r
+                       $tags = allowedTemplateTags('ALBUM_HEADER');\r
+                       echo '<tr><td class="left" >'.__NPG_FORM_TEMPLATE_HEADER.'<br/></td>';\r
+                       echo '<td><textarea class="templateedit" name="ALBUM_HEADER" cols="50" rows="5">';\r
+                       echo htmlspecialchars($section['ALBUM_HEADER']);\r
+                       echo '</textarea><br/>'.$tags.'</td></tr>';\r
+                       $tags = allowedTemplateTags('ALBUM_BODY');\r
+                       echo '<tr><td class="left" >'.__NPG_FORM_TEMPLATE_BODY.'<br/></td>';\r
+                       echo '<td><textarea class="templateedit" name="ALBUM_BODY" cols="50" rows="8">';\r
+                       echo htmlspecialchars($section['ALBUM_BODY']);\r
+                       echo '</textarea><br/>'.$tags.'</td></tr>';\r
+                       $tags = allowedTemplateTags('ALBUM_FOOTER');\r
+                       echo '<tr><td class="left" >'.__NPG_FORM_TEMPLATE_FOOTER.'<br/></td>';\r
+                       echo '<td><textarea class="templateedit" name="ALBUM_FOOTER" cols="50" rows="5">';\r
+                       echo htmlspecialchars($section['ALBUM_FOOTER']);\r
+                       echo '</textarea><br/>'.$tags.'</td></tr>';\r
+                       echo '<tr><td></td><td><input type="submit" value="'.__NPG_FORM_SUBMIT_CHANGES.'" /></td></tr>';\r
+                       echo '</tbody></table>';\r
+                       \r
+                       echo '<table><thead><tr><th colspan="2" >'.__NPG_FORM_TEMPLATE_PICTURE.'</th></tr></thead>';\r
+                       echo '<tbody>';\r
+                       $tags = allowedTemplateTags('ITEM_HEADER');\r
+                       echo '<tr><td class="left" >'.__NPG_FORM_TEMPLATE_HEADER.'<br/></td>';\r
+                       echo '<td><textarea class="templateedit" name="ITEM_HEADER" cols="50" rows="5">';\r
+                       echo htmlspecialchars($section['ITEM_HEADER']);\r
+                       echo '</textarea><br/>'.$tags.'</td></tr>';\r
+                       echo '<tr><td class="left" >ITEM_TOOLTIPSHEADER<br/></td>';\r
+                       echo '<td><textarea class="templateedit" name="ITEM_TOOLTIPSHEADER" cols="50" rows="5">';\r
+                       echo htmlspecialchars($section['ITEM_TOOLTIPSHEADER']);\r
+                       echo '</textarea><br/>'.$tags.'</td></tr>';\r
+                       $tags = allowedTemplateTags('ITEM_BODY');\r
+                       echo '<tr><td class="left" >'.__NPG_FORM_TEMPLATE_BODY.'<br/></td>';\r
+                       echo '<td><textarea class="templateedit" name="ITEM_BODY" cols="50" rows="8">';\r
+                       echo htmlspecialchars($section['ITEM_BODY']);\r
+                       echo '</textarea><br/>'.$tags.'</td></tr>';\r
+                       \r
+                       echo '<tr><td class="left" >ITEM_TOOLTIPSFOOTER<br/></td>';\r
+                       echo '<td><textarea class="templateedit" name="ITEM_TOOLTIPSFOOTER" cols="50" rows="8">';\r
+                       echo htmlspecialchars($section['ITEM_TOOLTIPSFOOTER']);\r
+                       echo '</textarea><br/>'.$tags.'</td></tr>';\r
+                       \r
+                       echo '<tr><td class="left" >ITEM_SLIDESHOWC<br/></td>';\r
+                       echo '<td><textarea class="templateedit" name="ITEM_SLIDESHOWC" cols="50" rows="8">';\r
+                       echo htmlspecialchars($section['ITEM_SLIDESHOWC']);\r
+                       echo '</textarea><br/>'.$tags.'</td></tr>';\r
+                       \r
+               \r
+                       echo '<tr><td class="left" >ITEM_SLIDESHOWT<br/></td>';\r
+                       echo '<td><textarea class="templateedit" name="ITEM_SLIDESHOWT" cols="50" rows="8">';\r
+                       echo htmlspecialchars($section['ITEM_SLIDESHOWT']);\r
+                       echo '</textarea><br/>'.$tags.'</td></tr>';\r
+                       \r
+                       echo '<tr><td class="left" >ITEM_NEXTPREVTHUMBS<br/></td>';\r
+                       echo '<td><textarea class="templateedit" name="ITEM_NEXTPREVTHUMBS" cols="50" rows="8">';\r
+                       echo htmlspecialchars($section['ITEM_NEXTPREVTHUMBS']);\r
+                       echo '</textarea><br/>'.$tags.'</td></tr>';\r
+                       \r
+                       $tags = allowedTemplateTags('ITEM_FOOTER');\r
+                       echo '<tr><td class="left" >'.__NPG_FORM_TEMPLATE_FOOTER.'<br/></td>';\r
+                       echo '<td><textarea class="templateedit" name="ITEM_FOOTER" cols="50" rows="5">';\r
+                       echo htmlspecialchars($section['ITEM_FOOTER']);\r
+                       echo '</textarea><br/>'.$tags.'</td></tr>';\r
+                       \r
+                       echo '<tr><td></td><td><input type="submit" value="'.__NPG_FORM_SUBMIT_CHANGES.'" /></td></tr>';\r
+                       echo '</tbody></table>';\r
+                       \r
+                       echo '<table><thead><tr><th colspan="2" >'.__NPG_FORM_TEMPLATE_COMMENTS.'</th></tr></thead>';\r
+                       echo '<tbody>';\r
+                       $tags = allowedTemplateTags('COMMENT_HEADER');\r
+                       echo '<tr><td class="left" >'.__NPG_FORM_TEMPLATE_HEADER.'<br/></td>';\r
+                       echo '<td><textarea class="templateedit" name="COMMENT_HEADER" cols="50" rows="5">';\r
+                       echo htmlspecialchars($section['COMMENT_HEADER']);\r
+                       echo '</textarea><br/>'.$tags.'</td></tr>';\r
+                       $tags = allowedTemplateTags('COMMENT_BODY');\r
+                       echo '<tr><td class="left" >'.__NPG_FORM_TEMPLATE_BODY.'<br/></td>';\r
+                       echo '<td><textarea class="templateedit" name="COMMENT_BODY" cols="50" rows="8">';\r
+                       echo htmlspecialchars($section['COMMENT_BODY']);\r
+                       echo '</textarea><br/>'.$tags.'</td></tr>';\r
+                       $tags = allowedTemplateTags('COMMENT_FOOTER');\r
+                       echo '<tr><td class="left" >'.__NPG_FORM_TEMPLATE_FOOTER.'<br/></td>';\r
+                       echo '<td><textarea class="templateedit" name="COMMENT_FOOTER" cols="50" rows="5">';\r
+                       echo htmlspecialchars($section['COMMENT_FOOTER']);\r
+                       echo '</textarea><br/>'.$tags.'</td></tr>';\r
+                       echo '<tr><td></td><td><input type="submit" value="'.__NPG_FORM_SUBMIT_CHANGES.'" /></td></tr>';\r
+                       echo '</tbody></table>';\r
+                       \r
+                       echo '<table><thead><tr><th colspan="2" >'.__NPG_FORM_TEMPLATE_PROMO.'</th></tr></thead>';\r
+                       echo '<tbody>';\r
+                       $tags = allowedTemplateTags('PROMO_TITLE');\r
+                       echo '<tr><td class="left" >'.__NPG_PROMO_FORM_TITLE.'<br/></td>';\r
+                       echo '<td><input type="text" name="PROMO_TITLE" cols="50" value="';\r
+                       echo htmlspecialchars($section['PROMO_TITLE']);\r
+                       echo '"/>';\r
+                       echo '<br/>'.$tags.'</td></tr>';\r
+                       $tags = allowedTemplateTags('PROMO_BODY');\r
+                       echo '<tr><td class="left" >'.__NPG_PROMO_FORM_BODY.'<br/></td>';\r
+                       echo '<td><textarea class="templateedit" name="PROMO_BODY" cols="50" rows="8">';\r
+                       echo htmlspecialchars($section['PROMO_BODY']);\r
+                       echo '</textarea><br/>'.$tags.'</td></tr>';\r
+                       $tags = allowedTemplateTags('PROMO_IMAGES');\r
+                       echo '<tr><td class="left" >'.__NPG_FORM_TEMPLATE_PROMOIMAGES.'<br/></td>';\r
+                       echo '<td><textarea class="templateedit" name="PROMO_IMAGES" cols="50" rows="4">';\r
+                       echo htmlspecialchars($section['PROMO_IMAGES']);\r
+                       echo '</textarea><br/>'.$tags.'</td></tr>';\r
+                       echo '<tr><td></td><td><input type="submit" value="'.__NPG_FORM_SUBMIT_CHANGES.'" /></td></tr>';\r
+                       echo '</tbody></table>';\r
+                       echo '</div></form>';\r
+               }\r
+       }\r
+       \r
+       function action_addtemplate() {\r
+               global $gmember;\r
+               \r
+               $name = addslashes(postvar('tname'));\r
+               $desc = addslashes(postvar('tdesc'));\r
+               if($gmember->isAdmin() && $name && $desc) {\r
+                       $query = 'insert into '.sql_table('plug_gallery_template_desc')." (tdid, tdname, tddesc) values (NULL,'$name','$desc')";\r
+                       sql_query($query);\r
+               }\r
+               \r
+               $this->action_templates();\r
+       }\r
+       \r
+       function action_clonetemplate() {\r
+               global $gmember;\r
+               \r
+               //get postvars: templateid from template to clone\r
+               $id = requestvar('id');\r
+               if($id && $gmember->isAdmin()) {\r
+                       //get template data from plg_gallery_template_desc and plug_gallery_template\r
+                       $origtemplate = new NPG_TEMPLATE($id);\r
+\r
+                       //write data to database tables, generating a new tdid for the same data\r
+                       $newtemplate = new NPG_TEMPLATE(NPG_TEMPLATE::createnew('cln_'.$origtemplate->getname(), 'Clone of '.$origtemplate->getdesc()));\r
+                       foreach($origtemplate->section as $name => $content) \r
+                               $newtemplate->settemplate($name,$content);\r
+               }\r
+               \r
+               $this->action_templates();\r
+       }\r
+       \r
+       function action_deletetemplate() {\r
+               global $gmember;\r
+               $id = requestvar('id');\r
+               \r
+               //don't delete if it's the only template in the database -- you need at least one\r
+               $query = 'select count(*) from '.sql_table('plug_gallery_template_desc');\r
+               $res = sql_query($query);\r
+               $nr = mysql_fetch_row($res);\r
+               if ($nr[0] > 1 && $id && NPG_TEMPLATE::existsID($id) && $gmember->isAdmin()) {\r
+                       $query = 'delete from '.sql_table('plug_gallery_template_desc').' where tdid='.intval($id);\r
+                       sql_query($query);\r
+                       $query = 'delete from '.sql_table('plug_gallery_template').' where tdesc='.intval($id);\r
+                       sql_query($query);\r
+               }\r
+               \r
+               $this->action_templates();\r
+               \r
+       }\r
+       \r
+       \r
+       \r
+       function action_edittemplate() {\r
+               global $gmember;\r
+               \r
+               $id = $_POST['id'];\r
+               if($gmember->isAdmin() && $id) { \r
+                       $t = new NPG_TEMPLATE($id);\r
+                       \r
+                       if(isset($_POST['tname']) && isset($_POST['tdesc'])) {\r
+                               $t->updategeneralinfo($_POST['tname'],$_POST['tdesc']);\r
+                       }\r
+                       \r
+                       $vars = array('LIST_HEADER','LIST_BODY','LIST_THUM','LIST_FOOTER','ALBUM_HEADER','ALBUM_BODY','ALBUM_SETDISPLAY','ALBUM_FOOTER','ITEM_HEADER','ITEM_TOOLTIPSHEADER','ITEM_BODY','ITEM_SLIDESHOWT','ITEM_SLIDESHOWC','ITEM_FOOTER','ITEM_TOOLTIPSFOOTER','ITEM_NEXTPREVTHUMBS','COMMENT_HEADER','COMMENT_BODY','COMMENT_FOOTER','PROMO_TITLE','PROMO_BODY','PROMO_IMAGES');\r
+                       foreach($vars as $j) {\r
+                               if(isset($_POST[$j])) {\r
+                                       $t->update($j,$_POST[$j]);\r
+                               }\r
+                       }\r
+\r
+                       //if($success) echo __NPG_ADMIN_UPDATE_TEMPLATE.'<br />'; else echo __NPG_ERR_NO_UPD_TEMPLATE.'<br/>';\r
+                       \r
+                       //else echo _ERROR_DISALLOWED;\r
+               }\r
+               \r
+               $this->action_templates();\r
+       }\r
+       \r
+       function action_comments() {\r
+               global $gmember;\r
+               \r
+               $this->display_tabs('comments');\r
+               $this->display_comments();\r
+       }\r
+       \r
+       function action_editcommentF() {\r
+               global $galleryaction;\r
+               \r
+               $id = intval(requestvar('id'));\r
+               $query = 'select * from '.sql_table('plug_gallery_comment').' as a left join '.sql_table('member').' as b on a.cmemberid=b.mnumber where a.commentid='.intval($id);\r
+               $res = sql_query($query);\r
+               $row = mysql_fetch_object($res);\r
+               \r
+               ?>\r
+               <h2><?php echo _EDITC_TITLE; ?></h2>\r
+               \r
+               <form action="<?php echo $galleryaction; ?>" method="post"><div>\r
+               <input type="hidden" name="action" value="editcomment" />\r
+               <input type="hidden" name="id" value="<?php echo $id;?>" />\r
+               <?php\r
+               echo '<table><tr>';\r
+               echo '<th colspan="2">'._EDITC_TITLE.'</th>';\r
+               echo '</tr><tr>';\r
+               echo '<td>'._EDITC_WHO.'</td><td>';\r
+               if($row->cuser) echo $row->cuser; else echo $row->mname.' ('._EDITC_MEMBER.')';\r
+               echo '</td></tr><tr>';\r
+               echo '<td>'._EDITC_WHEN.'</td><td>';\r
+               echo $row->ctime;\r
+               echo '</td></tr><tr>';\r
+               echo '<td>'._EDITC_HOST.'</td><td>';\r
+               echo $row->chost;\r
+               echo '</td></tr><tr>';\r
+               echo '<td>'._EDITC_TEXT.'</td><td>';\r
+               echo '<textarea name="body" rows="10" cols="50">';\r
+               echo htmlspecialchars($row->cbody);\r
+               echo '</textarea>';\r
+               echo '</td></tr><tr>';\r
+               echo '<td>'._EDITC_EDIT.'</td><td>';\r
+               echo '<input type="submit" value="'._EDITC_EDIT.'" />';\r
+               echo '</td></tr></table></div></form>';\r
+       }\r
+       \r
+       function action_editcomment() {\r
+               global $gmember;\r
+               \r
+               $id = intval(requestvar('id'));\r
+               $body = addslashes(requestvar('body'));\r
+               \r
+               if( $gmember->canModifyComment($id) ) {\r
+                       sql_query('update '.sql_table('plug_gallery_comment').' set cbody = "'.$body.'" where commentid='.$id);\r
+               }\r
+               \r
+               $this->action_comments();\r
+               \r
+       }\r
+       \r
+       function action_deletecomment() {\r
+               global $gmember,$galleryaction;\r
+               \r
+               $id = intval(requestvar('id'));\r
+               $query = 'select * from '.sql_table('plug_gallery_comment').' as a left join '.sql_table('member').' as b on a.cmemberid=b.mnumber where a.commentid='.$id;\r
+               $res = sql_query($query);\r
+               if(mysql_num_rows($res)) {\r
+                       $row = mysql_fetch_object($res);\r
+               } else {\r
+                       echo __NPG_ADMIN_NO_COMMENT.'<br/>';\r
+                       return;\r
+               }\r
+               \r
+               if($gmember->canModifyComment($id) ) {\r
+                       echo '<h2>'._DELETE_CONFIRM.'</h2>';\r
+                       echo '<p>'._CONFIRMTXT_COMMENT.'</p>';\r
+                       echo '<div class="note">';\r
+                       echo '<b>'._EDITC_WHO.': </b>';\r
+                       if($row->cuser) echo $row->cuser; else echo $row->mname;\r
+                       echo '<br/><b>'._EDITC_TEXT.': </b>';\r
+                       echo htmlspecialchars($row->cbody);\r
+                       echo '</div>';\r
+                       echo '<form method="post" action="'.$galleryaction.'"><div>';\r
+                       echo '<input type="hidden" name="action" value="deletecommentfinal" />';\r
+                       echo '<input type="hidden" name="id" value="'.$id.'" />';\r
+                       echo '<input type="submit" value="'._DELETE_CONFIRM_BTN.'" />';\r
+                       echo '</div></form>';\r
+               }\r
+               else {\r
+                       echo __NPG_ADMIN_NO_DEL_PERMISSION.'<br/>';\r
+               }\r
+       }\r
+       \r
+       function action_deletecommentfinal() {\r
+               global $gmember,$galleryaction;\r
+               \r
+               $id = intval(requestvar('id'));\r
+               if($gmember->canModifyComment($id) ) {\r
+                       $res = sql_query('delete from '.sql_table('plug_gallery_comment').' where commentid='.$id);\r
+                       //if(!mysql_num_rows($res)) echo __NPG_ADMIN_NOTDELETED.'<br/>'; else echo __NPG_ADMIN_DELETED.'<br/>';\r
+               }\r
+               \r
+               $this->action_comments();\r
+       }\r
+       \r
+       function action_templates() {\r
+               global $gmember;\r
+               \r
+               $this->display_tabs('templates');\r
+               if($gmember->isAdmin()) { \r
+                               echo '<div id="admin_content">';\r
+                               $this->display_templates();\r
+                               echo '</div>';\r
+                       }\r
+                       else echo _ERROR_DISALLOWED;\r
+       }\r
+       \r
+\r
+       function action_admin() {\r
+               global $gmember,$DIR_NUCLEUS,$galleryaction,$CONF;\r
+               \r
+               $funct = requestvar('function');\r
+               \r
+               if (isset($funct)) {\r
+                       if($gmember->isAdmin()) {\r
+                               switch ($funct) {\r
+                                       case 'cleanup':\r
+                                               database_cleanup();\r
+                                               echo __NPG_ADMIN_SUCCESS_CLEANUP.'<br/>';\r
+                                               break;\r
+                                       case 'rethumb':\r
+                                               $album = intval(requestvar('albumtorethumb'));\r
+                                               rethumb($album);\r
+                                               break;\r
+                                       case 'massupload':\r
+                                               $album = intval(requestvar('uploadalbum'));\r
+                                               $stop = true;\r
+                                               if ($album == -1) {\r
+                                                       \r
+                                                       $title = requestvar('title');\r
+                                                       $desc = requestvar('desc');\r
+                                                       \r
+                                                       if(!$title && !$desc) {\r
+                                                       ?>\r
+                                                       <h3><?php echo __NPG_FORM_ADDALBUM; ?></h3>\r
+                                                       <?php echo __NPG_FORM_MASSUPLOAD_NEWALBUM; ?><br/>\r
+                                                       <form method="post" action="<?php echo $galleryaction; ?>"><div>\r
+                                                               <input type="hidden" name="function" value="massupload" />\r
+                                                               <input type="hidden" name="action" value="admin" />\r
+                                                               <input type="hidden" name="uploadalbum" value="-1" />\r
+                                                               \r
+                                                               <?php addAlbumFormFields(); ?>\r
+                                                       </div></form>\r
+                                                       \r
+                                                       <?php\r
+                                                       }\r
+                                                       else {\r
+                                                               $NPG_vars['ownerid'] = $gmember->getID();\r
+                                                               $NPG_vars['title'] = $title; \r
+                                                               $NPG_vars['description'] = $desc;\r
+                                                               $album = ALBUM::add_new($NPG_vars);\r
+                                                       }\r
+                                                       \r
+                                               }\r
+                                               \r
+                                               if($album > 0) {\r
+                                                       //are you sure? this may timeout if too big?\r
+                                                       echo '<h3>'.__NPG_FORM_MASSUPLOAD_CONFIRM.'</h3>';\r
+                                                       ?>\r
+                                                       <form name="massuploadokay" method="post" action="<?php echo $CONF['PluginURL'].'gallery/add_picture.php'; ?>" ONSUBMIT="openTarget(this, 'width=600,height=600,resizable=1,scrollbars=1'); return true;" target="newpopup"><div>\r
+                                                               <input type="hidden" name="type" value="massupload" />\r
+                                                               <input type="hidden" name="id" value="<?php echo $album; ?>" />\r
+                                                               <input type="submit" value="<?php echo __NPG_FORM_MASSUPLOAD_SUBMIT; ?>" />\r
+                                                       </div></form>\r
+                                                       <?php\r
+                                               }\r
+                                               break;\r
+\r
+                                       default:\r
+                                               echo __NPG_ERR_BAD_FUNCTION.'<br/>';\r
+                                               break;\r
+                               }\r
+                       } else echo __NPG_ERR_NOT_ADMIN.'<br/>';\r
+               }\r
+               if(!$stop) $this->action_functions();\r
+       }\r
+       \r
+       function action_functions() {\r
+               global $gmember;\r
+               \r
+               $this->display_tabs('admin');\r
+               if($gmember->isAdmin()) { \r
+                       echo '<div id="admin_content">';\r
+                       $this->display_adminfunctions();\r
+                       echo '</div>';\r
+               }\r
+               else echo _ERROR_DISALLOWED;\r
+       }\r
+       \r
+       function action_editoptions() {\r
+               //need more error checking here\r
+               if (isset($_POST['addalbumlevel'])) {\r
+                       //$allowedoptions = array("admin","guest","select","member");\r
+                       //if (in_array($_POST['addalbumlevel'], $allowedoptions))\r
+                               setNPGoption('add_album', $_POST['addalbumlevel']);\r
+               }\r
+               if (isset($_POST['promocatid'])) {\r
+                       setNPGoption('blog_cat', $_POST['promocatid']);\r
+               }\r
+               /*\r
+               if (isset($_POST['template'])) {\r
+                       setNPGoption('template', $_POST['template']);\r
+               }\r
+               if (isset($_POST['viewtime'])) {\r
+                       setNPGoption('viewtime', $_POST['viewtime']);\r
+               }\r
+               */\r
+               if (isset($_POST['batchnumber'])) {\r
+                       setNPGoption('batch_add_num', $_POST['batchnumber']);\r
+               }\r
+/*\r
+               if (isset($_POST['galleryDir'])) {\r
+                       setNPGoption('galleryDir', $_POST['galleryDir']);\r
+               }\r
+               if (isset($_POST['maxheight'])) {\r
+                       setNPGoption('maxheight', $_POST['maxheight']);\r
+               }\r
+               if (isset($_POST['maxwidth'])) {\r
+                       setNPGoption('maxwidth', $_POST['maxwidth']);\r
+               }\r
+               if (isset($_POST['thumbheight'])) {\r
+                       setNPGoption('thumbheight', $_POST['thumbheight']);\r
+               }\r
+               if (isset($_POST['thumbwidth'])) {\r
+                       setNPGoption('thumbwidth', $_POST['thumbwidth']);\r
+               }\r
+               */\r
+               $t = $_POST['graphicslibrary'];\r
+               if (isset($t)) {\r
+                       if (($t == 'im') or ($t == 'gd')) {\r
+                               setNPGoption('graphics_library', $_POST['graphicslibrary']);\r
+                       }\r
+               }\r
+               if (isset($_POST['impath'])) {\r
+                       setNPGoption('im_path', $_POST['impath']);\r
+               }\r
+               if (isset($_POST['imoptions'])) {\r
+                       setNPGoption('im_options', $_POST['imoptions']);\r
+               }\r
+               if (isset($_POST['imquality'])) {\r
+                       setNPGoption('im_quality', $_POST['imquality']);\r
+               }\r
+\r
+               $allowedoptions = array('template', 'viewtime', 'galleryDir', 'maxheight', 'maxwidth', 'thumbheight','thumbwidth','AdminCommentsPerPage','ThumbnailsPerPage','dateorrandom','tooltips','nextprevthumb','defaultorder','setorpromo','slideshowson','thumborlist' );\r
+               foreach($allowedoptions as $option) if(isset($_POST[$option])) setNPGoption($option, $_POST[$option]);\r
+                       \r
+               \r
+               $this->action_config();\r
+       }\r
+\r
+       function action_config() {\r
+               global $gmember;\r
+               \r
+               $NPG_CONF = getNPGConfig();\r
+               \r
+               $this->display_tabs('config');\r
+               if($gmember->isAdmin()) { \r
+                       echo '<div id="admin_content">';\r
+                       $this->display_options();\r
+                       echo '</div>';\r
+               }\r
+       }\r
+       \r
+       function action_removeselectuser() {\r
+               global $gmember;\r
+               \r
+               $mid = intval(requestvar('userid'));\r
+               if($mid) {\r
+                       $query='delete from '.sql_table('plug_gallery_member')." where memberid=$mid";\r
+                       if($gmember->isAdmin()) $result = mysql_query($query);\r
+               }\r
+               $this->action_users();\r
+       }\r
+       \r
+       function action_addselectuser() {\r
+               global $gmember;\r
+               \r
+               $mid = intval(requestvar('userid'));\r
+               if($mid) {\r
+                       $query = 'insert into '.sql_table('plug_gallery_member')." values ('$mid',1) ";\r
+                       if($gmember->isAdmin()) $result = mysql_query($query);\r
+               }\r
+               $this->action_users();\r
+       }\r
+\r
+       function action_uers() {\r
+               global $gmember, $NPG_CONF;\r
+               \r
+               $this->display_tabs('users');\r
+               if($gmember->isAdmin() && $NPG_CONF['add_album'] == 'select') { \r
+                       echo '<div id="admin_content">';\r
+                       $this->display_selectusers();\r
+                       echo '</div>';\r
+               }\r
+               else echo _ERROR_DISALLOWED;\r
+       }\r
+       \r
+       function action_editalbumtitle() {\r
+               global $gmember,$galleryaction;\r
+               \r
+               $id = requestVar('id');\r
+               if($gmember->canModifyAlbum($id)) {\r
+                       $alb = new ALBUM($id);\r
+                       $alb->set_title(addslashes(requestVar('title')));\r
+                       $alb->set_description(addslashes(requestVar('desc')));\r
+                       $alb->set_commentsallowed(requestvar('commentsallowed'));\r
+                       $alb->set_publicalbum(requestvar('publicalbum'));\r
+                       $alb->set_thumbnail(requestvar('thumbnail'));\r
+                       $alb->write();\r
+                       echo __NPG_ADMIN_SUCCESS_ALBUM_UPDATE.'<br/>';\r
+               }\r
+               else echo __NPG_ERR_ALBUM_UPDATE.'<br/>';\r
+               echo '<br/><a href="'.$galleryaction.'">'.__NPG_ADMIN_RETURN.'</a>';\r
+       }\r
+       \r
+       function action_editalbumteam() {       }\r
+       \r
+       function action_deltmember() {\r
+               global $gmember,$galleryaction;\r
+               \r
+               $aid = intval(requestvar('aid'));\r
+               $mid = intval(requestvar('mid'));\r
+               if($aid && $mid) \r
+               if($gmember->canModifyAlbum($aid)) {\r
+                       $query = 'delete from '.sql_table('plug_gallery_album_team')." where tmemberid=$mid and talbumid=$aid";\r
+                       $result = sql_query($query);    \r
+                       echo __NPG_ADMIN_SUCCESS_TEAM_UPDATE.'<br/>';\r
+               }\r
+               else echo __NPG_ERR_TEAM_UPDATE.'<br/>';\r
+               echo '<br/><a href="'.$galleryaction.'?action=album&amp;id='.$aid.'">'.__NPG_ADMIN_RETURN.'</a>';\r
+       }\r
+       \r
+       function action_toggleadmin() {\r
+               global $gmember,$galleryaction;\r
+               \r
+               $aid = intval(requestvar('aid'));\r
+               $mid = intval(requestvar('mid'));\r
+               if($aid && $mid) \r
+               if($gmember->canModifyAlbum($aid)) {\r
+                       $query = 'update '.sql_table('plug_gallery_album_team')." set tadmin=abs(tadmin-1) where tmemberid=$mid and talbumid=$aid";\r
+                       $result = mysql_query($query);\r
+                       if(!$result) echo mysql_error().'<br/>';        \r
+                       echo __NPG_ADMIN_SUCCESS_TEAM_UPDATE.'<br/>';\r
+               }\r
+               else echo __NPG_ERR_TEAM_UPDATE.'<br/>';\r
+               echo '<br/><a href="'.$galleryaction.'?action=album&amp;id='.$aid.'">'.__NPG_ADMIN_RETURN.'</a>';\r
+       }\r
+\r
+       \r
+       function action_addalbumteam() {\r
+               global $gmember,$galleryaction;\r
+               \r
+               $id = intval(requestvar('id'));\r
+               $tmember = intval(requestvar('tmember'));\r
+               $admin = intval(requestvar('admin'));\r
+               if($id && $tmember) {\r
+                       if(!$admin) $admin = 0;\r
+                       if($gmember->canModifyAlbum($id)) {\r
+                               $result = mysql_query('select * from '.sql_table('plug_gallery_album_team')." where tmemberid=$tmember");\r
+                               if(!$result) echo mysql_error().'<br/>';\r
+                               if(!mysql_num_rows($result)) \r
+                                       $result2 = mysql_query('insert into '.sql_table('plug_gallery_album_team')." values ('$tmember', '$id', $admin)");\r
+                               echo __NPG_ADMIN_SUCCESS_TEAM_UPDATE.'<br/>';\r
+                       }\r
+                       else echo __NPG_ERR_TEAM_UPDATE.'<br/>';\r
+                       echo '<br/><a href="'.$galleryaction.'?action=album&amp;id='.$id.'">'.__NPG_ADMIN_RETURN.'</a>';\r
+               }\r
+       }\r
+       \r
+\r
+       function action_deletealbum() {\r
+               $id = requestVar('id');\r
+               if($id) {\r
+                       deletealbum($id);\r
+               }\r
+       }\r
+       \r
+\r
+       function action_album() {\r
+               global $gmember;\r
+               $id = requestVar('id');\r
+\r
+               if($id && $gmember->canmodifyalbum($id)) {\r
+                       editalbumform($id);\r
+               }\r
+       }\r
+       \r
+\r
+       function action_finaldeletealbum() {\r
+               global $gmember;\r
+               \r
+               $ok = true;\r
+               $id = requestVar('id');\r
+               $option = requestVar('deleteoption');\r
+               if($id && $option && $gmember->canmodifyalbum($id)) {\r
+                       if($option == '-1') { //delete pictures\r
+                               $query = 'select * from '.sql_table('plug_gallery_picture').' where albumid='.intval($id);\r
+                               $result = mysql_query($query);\r
+                               if(!$result) echo mysql_error().":$query<br/>";\r
+                               while($row = mysql_fetch_object($result)) {\r
+                                       $delresult = PICTURE::delete($row->pictureid);\r
+                                       if($delresult['status'] == 'error') {\r
+                                               echo $delresult['message'];\r
+                                               $ok = false;\r
+                                       }\r
+                                       else {\r
+                                               $delresult = PICTURE::deletepromoposts($row->pictureid);\r
+                                               $query2 = 'delete from '.sql_table('plug_gallery_picture').' where pictureid='.intval($row->pictureid);\r
+                                               $result2 = mysql_query($query2);\r
+                                               if(!$result2) echo mysql_error().":$query<br/>";\r
+                                       }\r
+                               }\r
+                               if($ok) {\r
+                                       $query = 'delete from '.sql_table('plug_gallery_album').' where albumid='.intval($id);\r
+                                       $result = mysql_query($query);\r
+                                       if(!$result) echo mysql_error().":$query<br/>";\r
+                               }\r
+\r
+                       }\r
+                       else {\r
+                               if($gmember->canaddpicture($option)) {\r
+                                       $query = 'update '.sql_table('plug_gallery_picture').' set albumid='.intval($option).' where albumid='.intval($id);\r
+                                       $result = mysql_query($query);\r
+                                       if(!$result) echo mysql_error().'<br/>';\r
+                                       ALBUM::fixnumberofimages($option);\r
+                                       $query = 'delete from '.sql_table('plug_gallery_album').' where albumid='.intval($id);\r
+                                       $result = mysql_query($query);\r
+                                       if(!$result) echo mysql_error().'<br/>';\r
+                               }\r
+                               else {\r
+                                       echo __NPG_ERR_DA_MOVE_PICTURE.'<br/>';\r
+                               }\r
+                       }\r
+               }\r
+               $this->action_albumlist();\r
+       }\r
+       \r
+\r
+       function action_albumlist() {\r
+               $this->display_tabs('albums');\r
+               $this->display_albums();\r
+       }\r
+               \r
+\r
+\r
+\r
+}\r
+\r
+?>\r
diff --git a/NP_gallery/tags/v0.95/gallery/album_class.php b/NP_gallery/tags/v0.95/gallery/album_class.php
new file mode 100644 (file)
index 0000000..8c008b3
--- /dev/null
@@ -0,0 +1,494 @@
+<?php\r
+\r
+class ALBUM {\r
+       var $id;\r
+       var $setid;\r
+       var $title;\r
+       var $description;\r
+       var $ownerid;\r
+       var $modified;\r
+       var $noi;\r
+       var $ownername;\r
+       var $thumbnail;\r
+       var $options;\r
+       \r
+       var $totalpictures;\r
+       var $displayoffset;\r
+       var $pageamount;\r
+       \r
+       var $template;\r
+       var $query;\r
+       \r
+       \r
+       function ALBUM($id = 0){\r
+               //check if exists, populate variables, etc.\r
+               if($id) {\r
+                       $data = $this->get_data($id);\r
+                       $this->id = $data->albumid;\r
+                       $this->title = $data->title;\r
+                       $this->description = $data->description;\r
+                       $this->ownerid = $data->ownerid;\r
+                       $this->modified = $data->modified;\r
+                       $this->noi = $data->numberofimages;\r
+                       $this->ownername = $data->name;\r
+                       $this->thumbnail = $data->thumbnail;\r
+                       $this->options['commentsallowed'] = $data->commentsallowed;\r
+                       $this->options['publicalbum'] = $data->publicalbum;\r
+               }\r
+               \r
+       }\r
+       \r
+       function getIDfromPictureID($pictureid) {\r
+\r
+       }\r
+       \r
+       function commentsallowed($pictureid) {\r
+               $query = 'select a.commentsallowed from '.sql_table('plug_gallery_album').' as a, '.sql_table('plug_gallery_picture').' as b where a.albumid=b.albumid and pictureid='.intval($pictureid);\r
+               $res = sql_query($query);\r
+               $row = mysql_fetch_object($res);\r
+               return $row->commentsallowed;\r
+               \r
+       }\r
+       \r
+       function settemplate($template) {\r
+               $this->template = & $template;\r
+       }\r
+       \r
+       function setquery($query) {\r
+               $this->query = & $query;\r
+       }\r
+       \r
+       function add_new($data) {\r
+               $atitle = addslashes($data['title']);\r
+               $adescription = addslashes($data['description']);\r
+               $aowner = intval($data['ownerid']);\r
+               $apublicalbum = addslashes($data['publicalbum']);\r
+               if(!$aowner) $aowner = 0; //make the owner guest\r
+               $query = "insert into ".sql_table('plug_gallery_album')." (albumid, title, description, ownerid, modified, numberofimages, commentsallowed, publicalbum) values ".\r
+                                       "(NULL, '$atitle','$adescription',$aowner,NULL,0,1,'$apublicalbum')";\r
+               sql_query($query);\r
+               return mysql_insert_id();\r
+       }\r
+       \r
+       function get_data($id) {\r
+               $result = sql_query("select a.*,b.mname as name from ".sql_table('plug_gallery_album').' as a left join '.sql_table('member')." as b on a.ownerid=b.mnumber where a.albumid=".intval($id) );\r
+               if(mysql_num_rows($result)) $data = mysql_fetch_object($result); \r
+               else {\r
+                       $data->albumid = 0;\r
+                       return $data;\r
+               }\r
+               \r
+               if(!$data->name) $data->name='guest';\r
+               \r
+               //default album thumbnail if thumbnail is blank\r
+               if(!$data->thumbnail) {\r
+                       $query = 'select thumb_filename from '.sql_table('plug_gallery_picture').' where albumid='.intval($data->albumid).' LIMIT 1';\r
+                       $result = sql_query($query);\r
+                       if(mysql_num_rows($result) ){\r
+                               $row = mysql_fetch_object($result);\r
+                               $data->thumbnail = $row->thumb_filename;\r
+                               sql_query('update '.sql_table('plug_gallery_album').' set thumbnail=\''.addslashes($row->thumb_filename).'\' where albumid='.intval($data->albumid));\r
+                       }\r
+               }\r
+               return $data;\r
+       }\r
+       \r
+       function get_team($id) {\r
+               $result = sql_query("select a.*, b.mname from ".sql_table('member').' as b, '.sql_table('plug_gallery_album_team')." as a where a.talbumid=".intval($id)." and a.tmemberid=b.mnumber");\r
+               if(!mysql_num_rows($result)) return false;\r
+               $j=0;\r
+               while ($team[$j] = mysql_fetch_object($result)) {\r
+                       $j++;\r
+               }\r
+               return $team;\r
+       }\r
+       \r
+       function get_pictures($id = 0,$so) {\r
+               if($this->query == '' && $id == 0) return null;\r
+               if($this->query == '') $this->query = "select * from ".sql_table('plug_gallery_picture')." where albumid=".intval($id)." $so";\r
+               $result = sql_query($this->query);\r
+               $i=0;\r
+               while ($row = mysql_fetch_object($result)) {\r
+                       $data[$i] = $row;\r
+                       $res = sql_query('select views from '.sql_table('plug_gallery_views').' where vpictureid = '.intval($row->pictureid));\r
+                       if(mysql_num_rows($res)) {\r
+                               $row2 = mysql_fetch_object($res);\r
+                               $data[$i]->views = $row2->views;\r
+                       }\r
+                       else $data[$i]->views = 0;\r
+                       mysql_free_result($res);\r
+                       $i++;\r
+               }\r
+               $this->totalpictures = $i;\r
+               \r
+               return $data;\r
+       }\r
+       \r
+       function get_set_pictures($splitdata,$so) {\r
+               if($splitdata == '') return null;\r
+               $j=0;\r
+               $i=0;\r
+               $limit = sizeof($splitdata);\r
+               //echo $limit;\r
+               //print_r($splitdata);\r
+               while ($j<$limit){\r
+                       $keyword = $splitdata[$j];\r
+                       //echo $keyword;\r
+                       $this->query = "select * from ".sql_table('plug_gallery_picture')." WHERE keywords like '%".addslashes($keyword)."%' ";\r
+                       $result = sql_query($this->query);\r
+                       while ($row = @mysql_fetch_object($result)) {\r
+                               $data[$i] = $row;\r
+                               $res = sql_query('select views from '.sql_table('plug_gallery_views').' where vpictureid = '.intval($row->pictureid));\r
+                               if(mysql_num_rows($res)) {\r
+                                       $row2 = mysql_fetch_object($res);\r
+                                       $data[$i]->views = $row2->views;\r
+                               }\r
+                               else $data[$i]->views = 0;\r
+                               mysql_free_result($res);\r
+                       $i++;\r
+                       }\r
+                       $j++;\r
+               }\r
+               $this->totalpictures = $i;\r
+               \r
+               return $data;\r
+       }\r
+       \r
+       function increaseNumberByOne($id) {\r
+               if(!$id) $id = $this->id;\r
+               $result = sql_query("update ".sql_table('plug_gallery_album')." set numberofimages = numberofimages + 1 where albumid =".intval($id));\r
+       }\r
+       \r
+       function decreaseNumberByOne($id) {\r
+               if(!$id) $id = $this->id;\r
+               $result = sql_query("update ".sql_table('plug_gallery_album')." set numberofimages = numberofimages - 1 where albumid =".intval($id));\r
+       }\r
+       \r
+       function fixnumberofimages($id) {\r
+               if(!$id) {\r
+                       $id = $this->id;\r
+                       $numberofimages = $this->numberofimages;\r
+               }\r
+               else {\r
+                       $result = sql_query('select numberofimages from '.sql_table('plug_gallery_album'). " where albumid=".intval($id));\r
+                       $row = mysql_fetch_object($result);\r
+                       $numberofimages = $row->numberofimages;\r
+               }\r
+               $result = sql_query('select count(*) as noi from '.sql_table('plug_gallery_picture')." where albumid=".intval($id));\r
+               $row = mysql_fetch_object($result);\r
+               $noi = $row->noi;\r
+               if($noi <> $numberofimages) {\r
+                       sql_query("update ".sql_table('plug_gallery_album')." set numberofimages=$noi where albumid=".intval($id));\r
+               }\r
+       }\r
+       function write() {\r
+               $query = "update ".sql_table('plug_gallery_album')\r
+                       ." set title='".addslashes($this->title)."', "\r
+                       ." commentsallowed= ".intval($this->option['commentsallowed']).", "\r
+                       ." thumbnail='".addslashes($this->thumbnail)."', "\r
+                       ." description='".addslashes($this->description)."', "\r
+                       ." publicalbum= ".intval($this->option['publicalbum']).""\r
+                       ." where albumid=".intval($this->id)."";\r
+               sql_query($query);\r
+       }\r
+       \r
+       function getId() { return $this->id; }\r
+       function getName() {return $this->name;}\r
+       function getDescription() {return $this->description;}\r
+       function getNoi() {return $this->noi;}\r
+       function getOwnerName() {}\r
+       function getOwnerid() {return $this->ownerid;}\r
+       function getLastModified() {return $this->modified;}\r
+       function getOptions() {return $this->options; }\r
+       function getTitle() {return $this->title;}\r
+       \r
+       function set_title($title) { $this->title = $title;}\r
+       function set_description($description) { $this->description = $description; }\r
+       function set_thumbnail($thumbnail) { $this->thumbnail = $thumbnail; }\r
+       function set_commentsallowed($value) {$this->option['commentsallowed'] = intval($value);}\r
+       function set_publicalbum($value) {$this->option['publicalbum'] = intval($value);}\r
+       \r
+       function display($sort) {\r
+               global $NPG_CONF,$manager;\r
+               $defaultorder = $NPG_CONF['defaultorder'];\r
+               $sorting = array('title'=>'title ASC',\r
+                                               'desc'=>'description ASC',\r
+                                               'owner'=>'ownername ASC',\r
+                                               'date'=>'modified DESC',\r
+                                               'titlea'=>'title DESC',\r
+                                               'desca'=>'description DESC',\r
+                                               'ownera'=>'ownername DESC',\r
+                                               'datea'=>'modified ASC',\r
+                                               'filenamea'=>'filename ASC',\r
+                                               'filename'=>'filename DESC');\r
+               \r
+               \r
+               if(array_key_exists($sort,$sorting)){\r
+                       $so = 'order by '.$sorting[$sort].', pictureid DESC';\r
+               }\r
+               else {\r
+                       $so = 'order by '.$sorting[$defaultorder].', pictureid DESC';\r
+               }\r
+               \r
+               $page = intval(requestvar('page'));\r
+               if(!$page) $page = 1;\r
+               \r
+               $amount = requestvar('amount');\r
+               \r
+               if (!$NPG_CONF['ThumbnailsPerPage']) {\r
+                       setNPGOption('ThumbnailsPerPage',20);\r
+                       $NPG_CONF['ThumbnailsPerPage'] = 20;\r
+               }\r
+               \r
+               if($amount) $this->pageamount = intval($amount);\r
+               else $this->pageamount = $NPG_CONF['ThumbnailsPerPage'];\r
+               \r
+               $offset = intval($page - 1) * $this->pageamount;\r
+               if ($offset <= 0) $offset = 0;\r
+               $this->displayoffset = $offset;\r
+               \r
+               if(!$NPG_CONF['template']) $NPG_CONF['template'] = 1;\r
+               \r
+               $this->template = & new NPG_TEMPLATE($NPG_CONF['template']);\r
+               \r
+               $template_header = $this->template->section['ALBUM_HEADER'];\r
+               $template_body = $this->template->section['ALBUM_BODY'];\r
+               $template_footer = $this->template->section['ALBUM_FOOTER'];\r
+\r
+               $actions = new ALBUM_ACTIONS($this);\r
+               $parser = new PARSER($actions->getdefinedActions(),$actions);\r
+               $actions->setparser($parser);\r
+               \r
+               $data = $this->get_pictures($this->getId(),$so);\r
+               \r
+               //header\r
+               $parser->parse($template_header);\r
+               \r
+               //body\r
+               $i=0;\r
+               while($data[$i]) {\r
+                       if($i >= $offset && $i < ($offset + $this->pageamount)) {\r
+                               $actions->setCurrentThumb($data[$i]);\r
+                               $parser->parse($template_body);\r
+                               }\r
+                       $i++;\r
+               }\r
+               \r
+               //footer\r
+               $parser->parse($template_footer);\r
+       } //end of display()\r
+       \r
+function displayset($splitdata,$sort) {\r
+               global $NPG_CONF,$manager;\r
+               $defaultorder = $NPG_CONF['defaultorder'];\r
+               $sorting = array('title'=>'title ASC',\r
+                                               'desc'=>'description ASC',\r
+                                               'owner'=>'ownername ASC',\r
+                                               'date'=>'modified DESC',\r
+                                               'titlea'=>'title DESC',\r
+                                               'desca'=>'description DESC',\r
+                                               'ownera'=>'ownername DESC',\r
+                                               'datea'=>'modified ASC',\r
+                                               'filenamea'=>'filename ASC',\r
+                                               'filename'=>'filename DESC');\r
+               if($sort){\r
+                       $so = 'order by '.$sorting[$sort].', pictureid DESC';\r
+               }\r
+               else {\r
+                       $so = 'order by '.$sorting[$defaultorder].', pictureid DESC';\r
+               }\r
+               \r
+               if(!$NPG_CONF['template']) $NPG_CONF['template'] = 1;\r
+               \r
+               $this->template = & new NPG_TEMPLATE($NPG_CONF['template']);\r
+               \r
+               $template_setdisplay = $this->template->section['ALBUM_BODY'];\r
+\r
+               $actions = new ALBUM_ACTIONS($this);\r
+               $parser = new PARSER($actions->getdefinedActions(),$actions);\r
+               $actions->setparser($parser);\r
+               \r
+               $data = $this->get_set_pictures($splitdata,$so);\r
+               \r
+               //header\r
+               //$parser->parse($template_setdisplay);\r
+               \r
+               //body\r
+               $i=0;\r
+               while($data[$i]) {\r
+                       $actions->setCurrentThumb($data[$i]);\r
+                       $parser->parse($template_setdisplay);\r
+                       $i++;\r
+               }\r
+       } //end of displayset()\r
+       \r
+} //end album class\r
+\r
+class ALBUM_ACTIONS extends BaseActions {\r
+       var $CurrentThumb; //query object\r
+       var $album;\r
+       var $parser;\r
+\r
+       \r
+       function ALBUM_ACTIONS(& $currentalbum) {\r
+               $this->BaseActions();\r
+               $this->album = & $currentalbum;\r
+               \r
+       }\r
+\r
+       function getdefinedActions() {\r
+               return array(\r
+                       'breadcrumb',\r
+                       'sortbytitle',\r
+                       'sortbydescription',\r
+                       'sortbyowner',\r
+                       'sortbymodified',\r
+                       'sortbynumber',\r
+                       'albumtitle',\r
+                       'albumid',\r
+                       'albumdescription',\r
+                       'picturedescription',\r
+                       'picturelink',\r
+                       'thumbnail',\r
+                       'centeredtopmargin',\r
+                       'pictureviews',\r
+                       'editalbumlink',\r
+                       'addpicturelink',\r
+                       'picturetitle',\r
+                       'pages',\r
+                       'albumlink',\r
+                       'if',\r
+                       'else',\r
+                       'endif' );\r
+                       \r
+       }\r
+       \r
+       function setParser(&$parser) {$this->parser =& $parser; }\r
+       function setCurrentThumb(&$currentthumb) { $this->CurrentThumb =& $currentthumb; }\r
+       \r
+       function parse_pages($sep = ' ') {\r
+               \r
+               $totalpages = $this->album->totalpictures / $this->album->pageamount;\r
+               $currentpage = floor($this->album->displayoffset / $this->album->pageamount);\r
+\r
+               \r
+               for($j=0; $j < $totalpages; $j++) {\r
+                       $extra['page']=$j+1;\r
+                       $extra['amount']=$this->album->pageamount;\r
+                       if ($j == $currentpage) echo ($j+1);\r
+                       else {\r
+                               echo '<a href="';\r
+                               $this->parse_albumlink($extra);\r
+                               echo '">'.($j+1).'</a>';\r
+                       }\r
+                       if($j <> $totalpages) echo $sep;                        \r
+               }\r
+       }\r
+       function parse_sortbytitle() { \r
+               $so = requestvar('sort');\r
+               if($so == 'title') $so = 'titlea'; else $so = 'title';\r
+               echo generateLink('album', $so); \r
+       }\r
+       function parse_sortbydescription() {\r
+               $so = requestvar('sort');\r
+               if($so == 'desc') $so = 'desca'; else $so = 'desc';\r
+               echo generateLink('album', $so); \r
+       }\r
+       function parse_sortbyowner() {\r
+               $so = requestvar('sort');\r
+               if($so == 'owner') $so = 'ownera'; else $so = 'owner';\r
+               echo generateLink('album', $so); \r
+       }\r
+       function parse_sortbymodified() {\r
+               $so = requestvar('sort');\r
+               if($so == 'date') $so = 'datea'; else $so = 'date';\r
+               echo generateLink('album', $so); \r
+       }\r
+       function parse_sortbynumber() {\r
+               $so = requestvar('sort');\r
+               if($so == 'numb') $so = 'numba'; else $so = 'numb';\r
+               echo generateLink('album', $so); \r
+       }\r
+       function parse_albumlink($extra2 = 0) {\r
+               $type = requestvar('type');\r
+               $knownactions = array( 'album','item' );\r
+               if(in_array($type,$knownactions)) {\r
+                       $extra['id'] = $this->album->getID();\r
+                       $type = 'album';\r
+               }\r
+               else {\r
+                       $allowed = array('limit');\r
+                       foreach($_GET as $key => $value) if(in_array($key,$allowed)) $extra[$key] = $value;\r
+               }\r
+               $extraparams = array_merge($extra, $extra2);\r
+               echo NP_gallery::MakeLink($type,$extraparams);\r
+       }\r
+       \r
+       function parse_breadcrumb($sep = '>') {\r
+               echo '<a href="';\r
+               echo generateLink('list');\r
+               echo '">'.__NPG_BREADCRUMB_GALLERY.'</a> '.$sep.' ';\r
+               $this->parse_albumtitle();              \r
+       }\r
+       \r
+       function parse_albumtitle() {\r
+               echo $this->album->getTitle();\r
+       }\r
+       function parse_albumid(){\r
+               echo $this->album->getId();\r
+       }\r
+\r
+       function parse_albumdescription() {echo $this->album->getDescription(); }\r
+       function parse_picturedescription() {echo $this->CurrentThumb->description; }\r
+       function parse_picturelink() { \r
+               $type = requestvar('type');\r
+               $sort = requestvar('sort');\r
+               if($type) {\r
+                       if($type == 'album') $ltype = 'item';\r
+                       else $ltype = $type;\r
+               } else $ltype = 'item';\r
+               $extra = array('id' => $this->CurrentThumb->pictureid,\r
+                                               'sort' => $sort\r
+                                               );\r
+               $allowed = array('limit');\r
+               foreach($_GET as $key => $value) if(in_array($key,$allowed)) $extra[$key] = $value;\r
+               echo NP_gallery::MakeLink($ltype, $extra ); \r
+               }\r
+               \r
+       function parse_thumbnail() { \r
+               global $CONF;\r
+               echo $CONF['IndexURL'].$this->CurrentThumb->thumb_filename;\r
+       }\r
+       \r
+       function parse_picturetitle() {echo $this->CurrentThumb->title; }\r
+       function parse_centeredtopmargin($height,$adjustment) {\r
+               global $NP_BASE_DIR;\r
+               $image_size = getimagesize($NP_BASE_DIR.$this->CurrentThumb->thumb_filename);\r
+               $topmargin = ((intval($height) - intval($image_size[1])) / 2) + intval($adjustment);\r
+               echo 'margin-top: '.$topmargin.'px;';\r
+       }\r
+       function parse_pictureviews() {echo $this->CurrentThumb->views; }\r
+       function parse_editalbumlink() { if($this->album->getID()) echo generateLink('editAlbumF',$this->album->getID() );}\r
+       function parse_addpicturelink() { if($this->album->getID()) echo generateLink('addPictF',$this->album->getID() );}\r
+       \r
+       function parse_if($field, $name='', $value = '') {\r
+               global $gmember;\r
+               \r
+               $condition = 0;\r
+               switch ($field) {\r
+                       case 'canaddpicture':\r
+                               $condition = $gmember->canAddPicture($this->album->getID());\r
+                               break;\r
+                       case 'caneditalbum':\r
+                               $condition = $gmember->canModifyAlbum($this->album->getID());\r
+                               break;\r
+                       default: \r
+                               break;\r
+               }\r
+               \r
+               $this->_addIfCondition($condition);\r
+               \r
+       }\r
+}\r
+\r
+?>\r
diff --git a/NP_gallery/tags/v0.95/gallery/comments.php b/NP_gallery/tags/v0.95/gallery/comments.php
new file mode 100644 (file)
index 0000000..4a8d1e9
--- /dev/null
@@ -0,0 +1,242 @@
+<?php\r
+\r
+class NPG_COMMENTS {\r
+\r
+       var $itemid;\r
+       var $itemactions;\r
+       var $commentcount;\r
+       \r
+       function NPG_COMMENTS($itemid) {\r
+               $this->itemid = intval($itemid);\r
+       }\r
+       \r
+       function setItemActions(&$itemActions) {\r
+               $this->itemActions =& $itemActions;\r
+       }\r
+       \r
+       function showComments( & $template, $maxToShow = -1, $showNone = 1) {\r
+               \r
+               \r
+               $actions = & new NPG_COMMENTACTIONS($this);\r
+               $parser = & new PARSER($actions->getdefinedactions(), $actions);\r
+               $actions->settemplate($template);\r
+               $actions->setparser($parser);\r
+               \r
+               if ($maxToShow == 0) {\r
+                       $this->commentcount = $this->amountComments();\r
+\r
+               } else {\r
+                       $query = 'select * from '.sql_table('plug_gallery_comment').\r
+                               ' where cpictureid='.intval($this->itemid).' order by ctime';\r
+                       $comments = sql_query($query);\r
+                       $this->commentcount = mysql_num_rows($comments);\r
+                       \r
+               }\r
+       \r
+               if($this->commentcount == 0) {\r
+                       echo __NPG_NO_COMMENTS.'<br/>';\r
+                       return 0;\r
+               }\r
+               if (($maxToShow != -1) && ($this->commentcount > $maxToShow)) return 0;\r
+               \r
+               \r
+               //$template->readall();\r
+               $parser->parse($template->section['COMMENT_HEADER']);\r
+               while($comment = mysql_fetch_assoc($comments)) {\r
+                       $actions->setcurrentcomment($comment);\r
+                       $parser->parse($template->section['COMMENT_BODY']);\r
+               }\r
+               $parser->parse($template->section['COMMENT_FOOTER']);\r
+               \r
+               mysql_free_result($comments);\r
+               return $this->commentcount;\r
+               \r
+       }\r
+       \r
+       function amountComments() {\r
+               $query = 'select count(*)'.\r
+                       ' from '.sql_table('plug_gallery_comment').\r
+                       ' where cpictureid='.intval($this->itemid);\r
+               $res = sql_query($query);\r
+               $arr = mysql_fetch_row($res);\r
+               return $arr[0];\r
+       }\r
+       \r
+       function addComment($comment) {\r
+               global $member,$NPG_CONF,$CONF;\r
+               \r
+               if ($CONF['ProtectMemNames'] && !$member->isLoggedIn() && MEMBER::isNameProtected($comment['user']))\r
+                       return _ERROR_COMMENTS_MEMBERNICK;\r
+               \r
+               $isvalid = $this->isValidComment($comment);\r
+               if ($isvalid != 1)\r
+                       return $isvalid;\r
+               \r
+               \r
+               $comment['host'] = gethostbyaddr(serverVar('REMOTE_ADDR'));\r
+               $comment['ip'] = serverVar('REMOTE_ADDR');\r
+               \r
+               if ($member->isLoggedIn()) {\r
+                       $comment['memberid'] = $member->getID();\r
+                       $comment['user'] = '';\r
+                       $comment['userid'] = '';\r
+               } else {\r
+                       $comment['memberid'] = 0;\r
+               }\r
+               \r
+               $comment = NPG_COMMENT::prepare($comment);\r
+               $name = addslashes($comment['user']);\r
+               $usid = addslashes($comment['userid']);\r
+               $body = addslashes($comment['body']);\r
+               $host = addslashes($comment['host']);\r
+               $ip = addslashes($comment['ip']);\r
+               $memberid  = intval($comment['memberid']);\r
+               $pictureid = intval($this->itemid);\r
+               \r
+               $query = 'insert into '.sql_table('plug_gallery_comment').\r
+                       '(cbody, cuser, cmail, chost, cip, cmemberid, ctime, cpictureid) '.\r
+                       " values ('$body','$name','$usid','$host','$ip','$memberid',NULL,$pictureid) ";\r
+               sql_query($query);\r
+               $commentid = mysql_insert_id();\r
+               return true;\r
+       }\r
+       \r
+       function isValidComment($comment) {\r
+               global $member,$manager;\r
+               \r
+               if (eregi('[a-zA-Z0-9|\.,;:!\?=\/\\]{90,90}',$comment['body']) != false)\r
+                       return _ERROR_COMMENT_LONGWORD;\r
+\r
+               // check lengths of comment\r
+               if (strlen($comment['body'])<3)\r
+                       return _ERROR_COMMENT_NOCOMMENT;\r
+\r
+               if (strlen($comment['body'])>5000)\r
+                       return _ERROR_COMMENT_TOOLONG;\r
+\r
+               // only check username if no member logged in\r
+               if (!$member->isLoggedIn())\r
+                       if (strlen($comment['user'])<2)\r
+                               return _ERROR_COMMENT_NOUSERNAME;\r
+               \r
+               $result = 1;\r
+               \r
+               $manager->notify('ValidateForm', array('type' => 'comment', 'comment' => &$comment, 'error' => &$result));\r
+               \r
+               return $result;\r
+       }\r
+       \r
+}\r
+\r
+class NPG_COMMENT extends COMMENT {\r
+\r
+\r
+}\r
+\r
+\r
+class NPG_COMMENTACTIONS extends BaseActions {\r
+       var $currentComment;\r
+       var $commentsObj;\r
+       var $parser;\r
+       var $template;\r
+       \r
+       function NPG_COMMENTACTIONS(&$comments) {\r
+               $this->BaseActions();\r
+               $this->setCommentsObj($comments);\r
+       }\r
+       \r
+       function getdefinedactions() {\r
+               return array(\r
+                       'commentcount',\r
+                       'commentword',\r
+                       'picturelink',\r
+                       'pictureid',\r
+                       'date',\r
+                       'time',\r
+                       'commentid',\r
+                       'body',\r
+                       'memberid',\r
+                       'host',\r
+                       'ip',\r
+                       'user',\r
+                       'userid',\r
+                       'userlink',\r
+                       'userlinkraw',\r
+                       'timestamp'     );\r
+       }\r
+       \r
+       function setCommentsObj(& $cobj) { $this->commentsObj = & $cobj; }\r
+       function setparser(& $parser) { $this->parser = & $parser; }\r
+       function settemplate(& $template) { $this->template = & $template; }\r
+       function setcurrentcomment(& $comment) {\r
+               if ($comment['cmemberid'] != 0) {\r
+                       //$comment['authtext'] = $template['COMMENTS_AUTH'];\r
+\r
+                       $mem = MEMBER::createFromID($comment['cmemberid']);\r
+                       $comment['cuser'] = $mem->getDisplayName();\r
+                       if ($mem->getURL())\r
+                               $comment['cuserid'] = $mem->getURL();\r
+                       else\r
+                               $comment['cuserid'] = $mem->getEmail();\r
+\r
+                       $comment['cuserlinkraw'] = \r
+                               createMemberLink(\r
+                                       $comment['cmemberid'],\r
+                                       $this->commentsObj->itemActions->linkparams\r
+                               );\r
+               } else {\r
+\r
+                       // create smart links\r
+                       if (isValidMailAddress($comment['userid']))\r
+                               $comment['userlinkraw'] = 'mailto:'.$comment['userid'];\r
+                       elseif (strstr($comment['userid'],'http://') != false)\r
+                               $comment['userlinkraw'] = $comment['userid'];\r
+                       elseif (strstr($comment['userid'],'www') != false)\r
+                               $comment['userlinkraw'] = 'http://'.$comment['userid'];\r
+               }\r
+\r
+               $this->currentComment =& $comment;\r
+\r
+       }\r
+       \r
+       function parse_commentcount() {echo $this->commentsObj->commentcount;}\r
+       //this needs to be modified so not hardcoded\r
+       function parse_commentword() { echo 'comment';}\r
+       \r
+       function parse_picturelink() { echo generatelink('item',$this->commentsObj->itemid);}\r
+       function parse_pictureid() { echo $this->commentsObj->itemid; }\r
+       function parse_date() {\r
+               $this->parse_timestamp('l jS of F Y');\r
+       }\r
+       \r
+       function parse_time() {\r
+               $this->parse_timestamp('h:i:s A');\r
+       }\r
+       \r
+       function parse_commentid() {echo $this->currentComment['commentid']; }\r
+       function parse_body() { echo $this->currentComment['cbody']; }\r
+       function parse_memberid() {     echo $this->currentComment['cmemberid']; }\r
+       function parse_timestamp($format = 'l jS of F Y h:i:s A') {\r
+               $d = $this->currentComment['ctime'];\r
+               $d = converttimestamp($d);\r
+               $d = date($format,$d);\r
+               echo $d;\r
+       }\r
+       function parse_host() { echo $this->currentComment['chost']; }\r
+       function parse_ip() {   echo $this->currentComment['cip']; }\r
+       \r
+       function parse_user() { echo $this->currentComment['cuser']; }\r
+       function parse_userid() { echo $this->currentComment['cuserid']; }\r
+       function parse_userlinkraw() { echo $this->currentComment['cuserlinkraw']; }\r
+       function parse_userlink() {\r
+               if ($this->currentComment['cuserlinkraw']) {\r
+                       echo '<a href="'.$this->currentComment['cuserlinkraw'].'" rel="nofollow">'.$this->currentComment['cuser'].'</a>';\r
+               } else {\r
+                       echo $this->currentComment['cuser'];\r
+               }\r
+       }\r
+       \r
+       \r
+}\r
+\r
+?>\r
diff --git a/NP_gallery/tags/v0.95/gallery/config.php b/NP_gallery/tags/v0.95/gallery/config.php
new file mode 100644 (file)
index 0000000..dde0d23
--- /dev/null
@@ -0,0 +1,28 @@
+<?php\r
+//NP_gallery config\r
+\r
+global $DIR_NUCLEUS,$DIR_LIBS;\r
+\r
+global $NP_GALLERY_DIR, $NP_BASE_DIR;\r
+$NP_GALLERY_DIR = dirname(__FILE__) . '/';\r
+$NP_BASE_DIR = dirname(dirname(dirname(dirname(__FILE__)))) . '/';\r
+\r
+\r
+include_once($NP_GALLERY_DIR.'functions.php');\r
+include_once($NP_GALLERY_DIR.'list_class.php');\r
+include_once($NP_GALLERY_DIR.'album_class.php');\r
+include_once($NP_GALLERY_DIR.'picture_class.php');\r
+include_once($NP_GALLERY_DIR.'member_class.php');\r
+include_once($NP_GALLERY_DIR.'forms.php');\r
+include_once($NP_GALLERY_DIR.'admin.php');\r
+include_once($NP_GALLERY_DIR.'template.php');\r
+include_once($NP_GALLERY_DIR.'comments.php');\r
+include_once($NP_GALLERY_DIR.'language/english.php'); //change this for different language\r
+\r
+global $NPG_CONF, $member, $gmember;\r
+$NPG_CONF = getNPGConfig();\r
+$gmember = new GALLERY_MEMBER;\r
+if($member->getID()) $gmember->readFromID($member->getID()); else $gmember->makeguest();\r
+$gmember->loggedin = $member->isloggedin();\r
+\r
+?>\r
diff --git a/NP_gallery/tags/v0.95/gallery/documentation/dev.html b/NP_gallery/tags/v0.95/gallery/documentation/dev.html
new file mode 100644 (file)
index 0000000..978281e
--- /dev/null
@@ -0,0 +1,144 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
+<html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+       <!-- $Id: sqltables.html,v 1.9 2005/03/05 13:19:30 dekarma Exp $ -->\r
+       <title>Nucleus - SQL Table Structure</title>\r
+       <link rel="stylesheet" type="text/css" href="manual.css" />\r
+       <style type="text/css">\r
+               /* auto increment table columns*/\r
+               .autoinc {\r
+               }\r
+\r
+               /* primary-keys */\r
+               .primary {\r
+                       text-decoration: underline;\r
+                       font-weight: bold;\r
+               }\r
+\r
+               /* NOT NULL */\r
+               .notnull {\r
+               }\r
+\r
+               /* unique key */\r
+               .unique {\r
+               }\r
+\r
+               /* foreign keys */\r
+               .foreign {\r
+                       font-style: italic;\r
+               }\r
+\r
+               /* auto increment table columns*/\r
+               .autoinc {\r
+               }\r
+\r
+               /* fulltext index */\r
+               .fulltext {\r
+               }\r
+\r
+               /* columns/tables to remove in later versions */\r
+               .toremove {\r
+                       color: red;\r
+               }\r
+\r
+       </style>\r
+</head>\r
+<body>\r
+\r
+<a name="top" id="top"></a>\r
+<div class="heading">\r
+Developer Documentation\r
+</div>\r
+<h1></h1>\r
+\r
+<h1>Introduction</h1>\r
+<p>This page is to document the database structure of NP_Gallery and the nucleus plugin API extensions.</p>\r
+\r
+<h1>Table of Contents</h1>\r
+<ul>\r
+<li><a href="#datastructure">Database Structure\r
+       <ul>\r
+               <li><a href="#table_album">album</a></li>\r
+               <li><a href="#table_album_team">album_team</a></li>\r
+               <li><a href="#table_picture">picture</a></li>\r
+               <li><a href="#table_template">template</a></li>\r
+               <li><a href="#table_template_desc">template_desc</a></li>\r
+               <li><a href="#table_config">config</a></li>\r
+               <li><a href="#table_member">member</a></li>\r
+               <li><a href="#table_comment">comment</a></li>\r
+               <li><a href="#table_promo">promo</a></li>\r
+               <li><a href="#table_views">views</a></li>\r
+               <li><a href="#table_views_log">views_log</a></li>\r
+       </ul>\r
+</li>\r
+<li><a href="#pluginhooks">Plugin Events</li>\r
+</ul>\r
+\r
+<h1><a name="datastructure"></a>Database structure</h1>\r
+\r
+<h1><a name="table_album"></a>album</h1>\r
+<table><thead><tr>\r
+       <th>Column Name</th>\r
+       <th>Type</th>\r
+       <th>Default</th>\r
+       <th>Description</th>\r
+</tr></thead><tbody><tr>\r
+       <th class="notnull autoinc primary">albumid</th>\r
+       <th></th>\r
+       <th></th>\r
+       <th></th>\r
+</tr><tr>\r
+       <th>title</th>\r
+       <th></th>\r
+       <th></th>\r
+       <th></th>\r
+</tr><tr>\r
+       <th>description</th>\r
+       <th></th>\r
+       <th></th>\r
+       <th></th>\r
+</tr><tr>\r
+       <th>ownerid</th>\r
+       <th></th>\r
+       <th></th>\r
+       <th></th>\r
+</tr><tr>\r
+       <th>modified</th>\r
+       <th></th>\r
+       <th></th>\r
+       <th></th>\r
+</tr><tr>\r
+       <th>numberofimages</th>\r
+       <th></th>\r
+       <th></th>\r
+       <th></th>\r
+</tr><tr>\r
+       <th>thumbnail</th>\r
+       <th></th>\r
+       <th></th>\r
+       <th></th>\r
+</tr><tr>\r
+       <th>commentsallowed</th>\r
+       <th></th>\r
+       <th></th>\r
+       <th></th>\r
+</tr></tbody>\r
+</table>\r
+\r
+\r
+<h2><a name="table_album_team"></a>album_team</h2>\r
+<h2><a name="table_picture"></a>picture</h2>\r
+<h2><a name="table_template"></a>template</h2>\r
+<h2><a name="table_template_desc"></a>template_desc</h2>\r
+<h2><a name="table_config"></a>config</h2>\r
+<h2><a name="table_member"></a>member</h2>\r
+<h2><a name="table_comment"></a>comment</h2>\r
+<h2><a name="table_promo"></a>promo</h2>\r
+<h2><a name="table_views"></a>views</h2>\r
+<h2><a name="table_views_log"></a>views_log</h2>\r
+\r
+<h1><a name="pluginhooks"></a>Gallery Events</h1>\r
+NPgCollectionDisplay\r
+\r
+</body>\r
+</html>\r
diff --git a/NP_gallery/tags/v0.95/gallery/documentation/manual.css b/NP_gallery/tags/v0.95/gallery/documentation/manual.css
new file mode 100644 (file)
index 0000000..e0b89db
--- /dev/null
@@ -0,0 +1,141 @@
+body {
+       background-color: #fff;
+       color: #000;
+       font-family: verdana, arial;
+       font-size: small;
+}
+
+@media screen {
+       body {
+               margin-left: 10%;
+               margin-right: 10%;
+       }
+}
+
+@media print {
+       pre, .note, td, th {
+               border: 1px dashed gray;
+       }
+}
+
+img {
+       border: none;
+}
+
+a:link, a:visited {
+       color: #1D3565; 
+       font-weight: bold;
+       text-decoration: none;
+}
+a: hover {
+       text-decoration: underline;
+}
+
+.heading {
+       text-align: center;
+       font-size: xx-large;
+       font-weight: bold;
+       color: gray;    
+}
+
+.heading i {
+       position: absolute;
+       top: 5px;
+       right: 5px;
+       font-size: small;
+       font-style: normal;
+       font-weight: normal;
+}
+
+p:first-letter {
+       font-size: large;
+}
+
+p {
+       text-indent: 20px;
+}
+
+h1 {
+       border-bottom: 1px dotted gray;
+       font-size: x-large;
+       color: #596d9d;
+}
+
+h2 {
+       color: gray;
+       font-size: large;
+       margin-left: 20px;
+       text-indent: 10px;
+       border-bottom: 1px solid #ddd;
+}
+
+pre, .note, .faq .answer {
+       background-color: #ddd;
+       padding: 10px;
+       font-size: small;
+}
+
+.screenshot {
+       text-align: center;
+       background-color: #ddd;
+       padding: 10px;
+}
+
+.faq .question {
+       font-weight: bold;
+       margin-bottom: 0px;
+}
+
+.faq .answer {
+
+}
+
+.faq {
+       margin-bottom: 20px;
+}
+
+table {
+       border: none;
+}
+
+th {
+       background-color: linen;
+       font-size: medium;
+}
+
+th, td {
+       padding: 5px;
+}
+
+td {
+       background-color: #dddddd;
+       font-size: small;
+       vertical-align: top;
+       text-align: left;
+}
+
+input, select, option, textarea {
+       background-color: transparent;
+}
+
+.deprecated {
+       border: 3px solid red;
+       padding: 5px;
+       font-size: medium;
+}
+
+tt, code, samp {
+       font-size: small;
+}
+
+.warning {
+       color: red;
+}
+.ok {
+       color: green;
+}
+
+acronym, abbr {
+       border-bottom: 1px dotted gray;
+       cursor: help;
+}
diff --git a/NP_gallery/tags/v0.95/gallery/extra/gallery b/NP_gallery/tags/v0.95/gallery/extra/gallery
new file mode 100644 (file)
index 0000000..314a489
--- /dev/null
@@ -0,0 +1,114 @@
+<?php\r
+\r
+include('./fancyurls.config.php');\r
+include('./config.php');\r
+global $DIR_NUCLEUS;\r
+include_once($DIR_NUCLEUS.'/plugins/gallery/config.php');\r
+\r
+$data = explode("/",serverVar('PATH_INFO'));\r
+$itemid = intval($data[1]);\r
+\r
+$i = 2;\r
+while($data[$i]) {\r
+       $j = $i+1;\r
+       if ($data[$j]) $_GET[$data[$i]] = $data[$j];\r
+       $i = $i + 2;\r
+}\r
+$_GET['type'] = $data[1];\r
+$type = $_GET['type'];\r
+\r
+if(isset($_POST['type'])) $type=$_POST['type'];\r
+\r
+global $gmember, $CONF, $NPG_CONF;\r
+global $skinid,$manager,$blog,$blogid;\r
+\r
+\r
+switch($type) {\r
+       case 'addcomment': \r
+               global $CONF;\r
+\r
+               $post['itemid'] =       intPostVar('itemid');\r
+               $post['user'] =         postVar('user');\r
+               $post['userid'] =       postVar('userid');\r
+               $post['body'] =         postVar('body');\r
+\r
+               // set cookies when required\r
+               $remember = intPostVar('remember');\r
+               if ($remember == 1) {\r
+                       $lifetime = time()+2592000;\r
+                       setcookie($CONF['CookiePrefix'] . 'comment_user',$post['user'],$lifetime,'/','',0);\r
+                       setcookie($CONF['CookiePrefix'] . 'comment_userid', $post['userid'],$lifetime,'/','',0);\r
+               }\r
+\r
+               $comments = new NPG_COMMENTS($post['itemid']);\r
+\r
+               $errormessage = $comments->addComment($post);\r
+               \r
+               //need to add code to display the error\r
+               if ($errormessage == '1') {\r
+                       $_POST['id'] = $post['itemid'];\r
+               } \r
+               break;\r
+       case 'addAlbum':\r
+               if($gmember->canAddAlbum() ){\r
+                       $NPG_vars['ownerid'] = $gmember->getID();\r
+                       $NPG_vars['title'] = requestVar('title'); \r
+                       $NPG_vars['description'] = requestVar('desc');\r
+                       ALBUM::add_new($NPG_vars);\r
+               }\r
+               break;\r
+       case 'finaldeletepicture':\r
+               $id = requestVar('id');\r
+               $delpromo = requestVar('delpromo');\r
+               if($gmember->canModifyPicture($id)) {\r
+                       \r
+                       $manager->notify('NPgPreDeletePicture', array('pictureid' => $id));\r
+                       $result = PICTURE::delete($id);\r
+                       \r
+                       if($result['status'] == 'error') {\r
+                               echo $result['message'];\r
+                       }\r
+                       else {\r
+                               $manager->notify('NPgPostDeletePicture', array('pictureid' => $id));\r
+                               \r
+                               if($delpromo == 'yes') {\r
+                                       $result2 = PICTURE::deletepromoposts($id);\r
+                                       if($result2['status'] == 'error') echo $result2['message'];\r
+                               }\r
+                               else {\r
+                                       $_POST['id'] = $result['albumid'];\r
+                               }\r
+                       }\r
+               } else echo 'No permission to delete picture<br/>';\r
+               break;\r
+       case 'editPicture':\r
+               $id = requestVar('id');\r
+               if($gmember->canModifyPicture($id)) {\r
+                       $pict = new PICTURE($id);\r
+                       $pict->setTitle(requestVar('ptitle'));\r
+                       $pict->setDescription(requestVar('pdesc'));\r
+                       $aid = requestVar('aid');\r
+                       if($aid && $gmember->canAddPicture($aid)) {\r
+                               ALBUM::decreaseNumberByOne($pict->getAlbumID());\r
+                               ALBUM::increaseNumberByOne($aid);\r
+                               $pict->setAlbumID($aid);\r
+                       }\r
+                       $pict->write();\r
+                       $manager->notify('NPgPostUpdatePicture',array('picture', &$pict));\r
+               }\r
+       default: \r
+       break;\r
+}\r
+\r
+if (!$blogid)\r
+$blogid = $CONF['DefaultBlog'];\r
+\r
+$b =& $manager->getBlog($blogid);\r
+$blog = $b;\r
+               \r
+selectSkin('NPGallery');\r
+               \r
+$skin =& new SKIN($skinid);\r
+$skin->parse('index');\r
+\r
+?>
\ No newline at end of file
diff --git a/NP_gallery/tags/v0.95/gallery/forms.php b/NP_gallery/tags/v0.95/gallery/forms.php
new file mode 100644 (file)
index 0000000..21cb425
--- /dev/null
@@ -0,0 +1,429 @@
+<?php\r
+\r
+\r
+function addAlbumForm() {\r
+       global $CONF;\r
+       \r
+       if($CONF['URLMode'] == 'pathinfo') $action = 'gallery'; else $action = 'action.php';\r
+       \r
+       ?>\r
+       <h1><?php echo __NPG_FORM_ADDALBUM; ?></h1>\r
+       <form method="post" action="<?php echo $action; ?>"><div>\r
+               <input type="hidden" name="action" value="plugin" />\r
+               <input type="hidden" name="name" value="gallery" />\r
+               <input type="hidden" name="type" value="addAlbum" />\r
+               \r
+               <?php addAlbumFormFields(); ?>\r
+       </div></form>\r
+       \r
+       <?php\r
+}\r
+\r
+function addAlbumFormFields() {\r
+       ?>\r
+               <table>\r
+               <tr><td><label for="atitle"><?php echo __NPG_FORM_ALBUM_TITLE; ?>:</label></td>\r
+               <td><input type="text" name="title" id="atitle" size="20" /></td></tr>\r
+               <tr><td><label for="atitle"><?php echo 'public album'; ?>:</label></td>\r
+               <td><input type="radio" <?php if($data->publicalbum) echo 'checked ';?> name="publicalbum" id="publicalbum_f" value="1" /><?php echo 'yes'; ?>\r
+               <input type="radio" <?php if(!$data->publicalbum) echo 'checked ';?> name="publicalbum" id="publicalbum_f" value="0" /><?php echo 'no'; ?></td></tr>\r
+               <tr><td><label for="adesc"><?php echo __NPG_FORM_ALBUM_DESC; ?>:</label></td>\r
+               <td><input type="text" name="desc" id="adesc" size="80" /></td></tr>\r
+               <tr><td colspan="2"><input type="submit" value="<?php echo __NPG_FORM_SUBMITALBUM; ?>"></td></tr>\r
+               </table>\r
+       <?php\r
+}\r
+\r
+function deleteAlbum($id) {\r
+       global $gmember, $galleryaction;\r
+       \r
+\r
+\r
+       if(!$galleryaction) return false;\r
+       echo '<h1>'.__NPG_FORM_DELETE_ALBUM.'</h1>';\r
+       echo __NPG_FORM_REALLY_DELETE_ALBUM.'<br/>';\r
+\r
+       echo '<form><input type="button" value="'.__NPG_FORM_CANCEL.'" onclick="window.location.href=\''.$galleryaction.'\'"/></form>';\r
+       \r
+       echo __NPG_FORM_DELETE_OR_MOVE.'<br/>';\r
+       ?>\r
+       <form method="post" action="<?php echo $galleryaction; ?>"><div>\r
+               <input type="hidden" name="action" value="finaldeletealbum" />\r
+               <input type="hidden" name="id" value="<?php echo $id; ?>" />\r
+               \r
+               <select name="deleteoption">\r
+               <option value="-1" selected><?php echo __NPG_FORM_DELETE_PICTURES; ?>\r
+               <?php\r
+                       $allowed_albums = $gmember->getallowedalbums();\r
+                       if($allowed_albums) { \r
+                               $j=0;\r
+                               while($allowed_albums[$j]) {\r
+                                       echo '<option value="'.$allowed_albums[$j]->albumid.'">Move pictures to '.$allowed_albums[$j]->albumname;\r
+                                       $j++;\r
+                               }\r
+                       }\r
+               ?>\r
+               </select>\r
+               <input type="submit" value="<?php echo __NPG_FORM_DELETE; ?>" />\r
+       </div></form>\r
+       <?php\r
+\r
+}\r
+\r
+\r
+function editAlbumForm($id) {\r
+       global $gmember,$galleryaction;\r
+       \r
+       if(!$galleryaction) {\r
+               echo 'galleryaction variable not set<br/>';\r
+               return;\r
+       }\r
+       \r
+       echo '<a href="'.$galleryaction.'">'.__NPG_FORM_RETURN_ADMIN.'</a><br/><br/>';\r
+       \r
+       $data = ALBUM::get_data($id);\r
+       ?>\r
+       <h3><?php echo __NPG_FORM_MODIFY_ALBUM; ?></h3>\r
+       <form method="post" action="<?php echo $galleryaction; ?>"><div>\r
+               <input type="hidden" name="action" value="editalbumtitle" />\r
+               <input type="hidden" name="id" value="<?php echo $id; ?>" />\r
+               \r
+               <table><tr><td>\r
+               <label for="atitle"><?php echo __NPG_FORM_ALBUM_TITLE; ?>: </label>\r
+               </td><td>\r
+               <input type="text" name="title" id="atitle" value = "<?php echo stripslashes($data->title); ?>" size="20" />\r
+               </td></tr><tr><td>\r
+               <label for="adesc"><?php echo __NPG_FORM_ALBUM_DESC; ?>: </label>\r
+               </td><td>\r
+               <input type="text" name="desc" id="adesc" value = "<?php echo stripslashes($data->description); ?>" size="60" /><br />\r
+               </td></tr><tr><td>\r
+               <label for="commentsallowed_f"><?php echo __NPG_FORM_COMMENTSALLOWED; ?></label>\r
+               </td><td>\r
+               <input type="radio" <?php if($data->commentsallowed) echo 'checked ';?> name="commentsallowed" id="commentsallowed_f" value="1" /><?php echo __NPG_FORM_YES; ?>\r
+               <input type="radio" <?php if(!$data->commentsallowed) echo 'checked ';?> name="commentsallowed" id="commentsallowed_f" value="0" /><?php echo __NPG_FORM_NO; ?>\r
+               </td></tr>\r
+               <tr><td>\r
+               <label for="publicalbum_f"><?php echo 'publicalbum'; ?></label>\r
+               </td><td>\r
+               <input type="radio" <?php if($data->publicalbum) echo 'checked ';?> name="publicalbum" id="publicalbum_f" value="1" /><?php echo __NPG_FORM_YES; ?>\r
+               <input type="radio" <?php if(!$data->publicalbum) echo 'checked ';?> name="publicalbum" id="publicalbum_f" value="0" /><?php echo __NPG_FORM_NO; ?>\r
+               </td></tr><tr><td>\r
+               <label for="thumbnail_f"><?php echo __NPG_FORM_ALBUM_THUMBNAIL; ?></label>\r
+               </td><td>\r
+               <select name="thumbnail" id="thumbnail_f">\r
+               <?php\r
+               $pics = ALBUM::get_pictures($id);\r
+               $k=0;\r
+               while($pics[$k]) {\r
+                       echo '<option value="'.$pics[$k]->thumb_filename.'" ';\r
+                       if ($pics[$k]->thumb_filename == $data->thumbnail) echo ' selected ';\r
+                       echo '>'.$pics[$k]->title;\r
+                       $k++;\r
+               }\r
+               ?>\r
+               </select>\r
+               </td></tr></table>\r
+               <br/><input type="submit" value="Submit" />\r
+       </div></form>\r
+       <br/>\r
+       <h3><?php echo __NPG_FORM_CURRENT_ALBUM_TEAM; ?></h3>\r
+       <form method="post" action="<?php echo $galleryaction; ?>"><div>\r
+               <input type="hidden" name="action" value="editalbumteam" />\r
+               <input type="hidden" name="id" value="<?php echo $id; ?>" />\r
+               \r
+               <table>\r
+               <thead><tr><th><?php echo __NPG_FORM_NAME; ?></th><th><?php echo __NPG_FORM_ALBUM_ADMIN; ?></th><th colspan='2'><?php echo __NPG_FORM_ACTIONS; ?></th></thead>\r
+               <tbody>\r
+               <tr onmouseover='focusRow(this);' onmouseout='blurRow(this);'>\r
+               <td><?php echo $data->name.' ('.__NPG_FORM_OWNER.')'; ?></td>\r
+               <td>Yes</td>\r
+               <td colspan='2' ><?php echo __NPG_FORM_NO_OWNER_ACTIONS; ?></td>\r
+               </tr>\r
+               <?php\r
+               $team = ALBUM::get_team($id);\r
+               if($team) {\r
+                       $j=0;\r
+                       while($team[$j]) {\r
+                               ?><tr onmouseover='focusRow(this);' onmouseout='blurRow(this);'><?php\r
+                               echo '<td>'.$team[$j]->mname.'</td>';\r
+                               if($team[$j]->tadmin) echo '<td>'.__NPG_FORM_YES.'</td>'; else echo '<td>'.__NPG_FORM_NO.'</td>';\r
+                               echo '<td><a href="'.$galleryaction.'?action=deltmember&amp;mid='.$team[$j]->tmemberid.'&amp;aid='.$id.'">'.__NPG_FORM_DELETE.'</a></td>';\r
+                               echo '<td><a href="'.$galleryaction.'?action=toggleadmin&amp;mid='.$team[$j]->tmemberid.'&amp;aid='.$id.'">'.__NPG_FORM_TOGGLE_ADMIN.'</a></td></tr>';\r
+                               $j++;\r
+                       }\r
+               }\r
+               \r
+               ?>\r
+               </tbody></table>\r
+       </div></form>\r
+       <br/>\r
+       <h3><?php echo __NPG_FORM_ADDTEAMMEMBER; ?></h3>\r
+       <form method="post" action="<?php echo $galleryaction; ?>"><div>\r
+               <input type="hidden" name="action" value="addalbumteam" />\r
+               <input type="hidden" name="id" value="<?php echo $id; ?>" />\r
+               \r
+               <table><tr>\r
+               <td><?php echo __NPG_FORM_CHOOSEMEMBER; ?>:</td>\r
+               <td>\r
+               <?php\r
+               //this query lists the members that are not already part of the team, not the admins(they already have permissions) and are not the owner of the album\r
+               $result = mysql_query('select mname, mnumber from '.sql_table('member').' left join '.sql_table('plug_gallery_album_team').' on mnumber=tmemberid and talbumid='.intval($id).' where mnumber <> '.intval($data->ownerid).' and madmin=0 and tmemberid is null');\r
+               if($result) {\r
+                       $num_rows = mysql_num_rows($result);\r
+                       if($num_rows) {\r
+                               echo '<select name="tmember">';\r
+                               while($m = mysql_fetch_object($result)) echo '<option value="'.$m->mnumber.'">'.$m->mname;\r
+                               echo '</select>';\r
+                       }\r
+               }\r
+               ?>\r
+               </td></tr>\r
+               <tr><td><?php echo __NPG_FORM_ADMIN_PRIV; ?> </td>\r
+               <td><input type="radio" name="admin" value="1"  id="admin1" />\r
+               <label for="admin1"><?php echo __NPG_FORM_YES; ?></label>\r
+               <input type="radio" name="admin" value="0" checked='checked' id="admin0" />\r
+               <label for="admin0"><?php echo __NPG_FORM_NO; ?></label></td></tr>\r
+               \r
+               <tr><td><?php echo __NPG_FORM_ADDTOTEAM; ?></td>\r
+               <td><input type='submit' value='<?php echo __NPG_FORM_ADDTOTEAM; ?>' /></td></tr></table>\r
+               \r
+       </div></form>\r
+       <?php\r
+       \r
+}\r
+\r
+\r
+function editPictureForm($id) {\r
+       global $gmember,$manager;\r
+       \r
+       //todo:add delete picture link, add move to different album link\r
+       $data = PICTURE::get_data($id);\r
+       if($data->pictureid) {\r
+               ?>\r
+               <h1><?php echo __NPG_FORM_EDITPICTURE; ?></h1>\r
+               <form method="post" action="action.php"><div>\r
+                       <input type="hidden" name="action" value="plugin" />\r
+                       <input type="hidden" name="name" value="gallery" />\r
+                       <input type="hidden" name="type" value="editPicture" />\r
+                       <input type="hidden" name="id" value="<?php echo $id; ?>" />\r
+                       \r
+                       <table><tr><td><?php echo __NPG_FORM_PICTURETITLE; ?></td>\r
+                       <td><input type="text" name="ptitle" value="<?php echo $data->title; ?>" size="40" /></td></tr>\r
+                       <tr><td><?php echo __NPG_FORM_PICTUREDESCRIPTION; ?></td>\r
+                       <td><input type="text" name="pdesc" value="<?php echo $data->description; ?>" size="70" /></td></tr>\r
+                       <tr><td>keywords(seperate with ','): </td>\r
+                       <td><input type="text" name="keywords" value="<?php echo $data->keywords; ?>" size="70" /></td></tr>\r
+\r
+                       <?php\r
+                       \r
+                       $allowed_albums = $gmember->getallowedalbums();\r
+                       if($allowed_albums[1]) { //if more than 1 allowed album display Move Album option\r
+                               echo '<tr><td>'.__NPG_FORM_MOVETOALBUM.': </td><td><select name="aid">';\r
+                               $j=0;\r
+                               while($allowed_albums[$j]) {\r
+                                       echo '<option value="'.$allowed_albums[$j]->albumid.'"';\r
+                                       if($allowed_albums[$j]->albumid == $data->albumid) echo 'selected';\r
+                                       echo '>';\r
+                                       echo $allowed_albums[$j]->albumname;\r
+                                       $j++;\r
+                               }\r
+                               echo '</select></td></tr></table>';\r
+                       }\r
+                       $manager->notify('NPgEditPictureFormExtras',array('pictureid'=>$id,'title'=>$data->title,'description'=>$data->description));\r
+                       \r
+                       ?>\r
+                       <br/><input type="submit" value="<?php echo __NPG_FORM_SUBMIT_CHANGES; ?>"></table>\r
+               </div></form>\r
+               <?php\r
+       }\r
+       else echo __NPG_FORM_NOPICTOEDIT;\r
+       \r
+}\r
+\r
+function deletePictureForm($id) {\r
+       $data = PICTURE::get_data($id);\r
+       if($data->pictureid) {\r
+               echo '<img src="'.$data->thumb_filename.'" /><br/>';\r
+               echo __NPG_FORM_REALLYDELETE.'<br/>';\r
+               echo '<form><input type="button" value="'.__NPG_FORM_CANCEL.'" onclick="history.back()"/></form>';\r
+               \r
+               echo '<br/>';\r
+               echo __NPG_FORM_DELETEPICTURETEXT;\r
+               echo '<form method="post" action="action.php">';\r
+               echo '<input type="hidden" name="action" value="plugin" />';\r
+               echo '<input type="hidden" name="name" value="gallery" />';\r
+               echo '<input type="hidden" name="type" value="finaldeletepicture" />';\r
+               echo '<input type="hidden" name="id" value="'.$id.'" />';\r
+               echo __NPG_FORM_DELETEPROMOTOO;\r
+               echo __NPG_FORM_YES.':<input type="radio" checked name="delpromo" id="promo" value="yes" />';\r
+               echo ' '.__NPG_FORM_YES.':<input type="radio" name="delpromo" id="promo" value="no" />';\r
+               echo '<br/><input type="submit" value="'.__NPG_FORM_DELETE.'"/></form>';\r
+       }\r
+       else echo __NPG_FORM_NOPICTTODELETE;\r
+}\r
+\r
+function addPictureForm($albumid = 0, $num_files = 0) {\r
+       global $NPG_CONF,$CONF;\r
+       \r
+       if(!$num_files) {\r
+               if($NPG_CONF['batch_add_num']) $num_files = $NPG_CONF['batch_add_num'];\r
+               else $num_files = 10;\r
+       }\r
+       \r
+       ?>\r
+       <h1><?php echo __NPG_FORM_UPLOADFILEFORM; ?></h1>\r
+       <form enctype="multipart/form-data" method="post" action="<?php echo $CONF['PluginURL'].'gallery/add_picture.php'; ?>"><div>\r
+       <input type="hidden" name="type" value="secondstage" />\r
+       <input type="hidden" name="MAX_FILE_SIZE" value="2000000" />\r
+       \r
+       <table>\r
+       <?php\r
+       if($albumid) echo '<input type="hidden" name="id" value="'.$albumid.'" />';\r
+       \r
+       for($i=0; $i<$num_files; $i++) {\r
+               $j = $i+1;\r
+               echo '<tr><td>'.__NPG_FORM_PICTURELABLE.' '.$j.'</td><td><input type="file" name="uploadpicture'.$i.'"></td></tr>';\r
+       }\r
+       ?>\r
+       </table>\r
+       <input type="submit" value="<?php echo __NPG_FORM_SUBMITFILES; ?>">\r
+       </div></form>\r
+       <?php\r
+}\r
+\r
+function addpictureformjupload($albumid = 0, $num_files = 0) {\r
+       global $NPG_CONF,$CONF;\r
+       if (!preg_match('/^([a-z0-9_]+|`[^`]+`)$/i',$NPG_CONF['temp_table'])) exit;\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
+       ?>\r
+       <html>\r
+<!--\r
+\r
+ Author: $Author: mhaller $\r
+\r
+ Id: $Id: JUpload.html,v 1.1 2004/02/05 08:59:40 mhaller Exp $\r
+\r
+ Version: $Revision: 1.1 $\r
+\r
+ Date: $Date: 2004/02/05 08:59:40 $\r
+\r
+-->\r
+<head>\r
+<title>JUpload - multiple file upload with resuming</title>\r
+<meta name="Author" content="Mike Haller">\r
+<meta name="Publisher" content="Haller Systemservice">\r
+<meta name="Copyright" content="Mike Haller">\r
+<meta name="Keywords" content="jupload, multiple, java, upload, http, html, applet, embed, object, input, type, file, submit, add, remove, queue, rfc 1867, application/x-www-form-urlencoded, POST METHOD, swing, awt, j2se, transfer, files, requests, webserver, apache, asp, jsp, php4, php5, php, multipart, content-disposition, form-data, boundary, attachment, mime headers, transmission, enctype, remote data, browser, internet explorer, mozilla, opera, fileuploader, batch upload, file selection dialog, resuming, resume, continue">\r
+<meta name="Description" content="JUpload is a java applet for uploading multiple files to the webserver using RFC1867 post method. It features a status display showing current transfer rate.">\r
+<meta name="Page-topic" content="HTTP file upload with resuming using post or put method featuring https and proxy">\r
+<meta name="Audience" content="Advanced">\r
+<meta name="Content-language" content="EN">\r
+<meta name="Page-type" content="Software-Download">\r
+<meta name="Robots" content="INDEX,FOLLOW">\r
+\r
+</head>\r
+<body>\r
+ <br>\r
+ <applet \r
+  code="JUpload.startup"\r
+  archive="/nucleus/jupload.jar"\r
+  width="500"\r
+  height="300"\r
+  mayscript="mayscript"\r
+  name="JUpload"\r
+  alt="JUpload by www.jupload.biz">\r
+ <!-- Java Plug-In Options -->\r
+ <param name="progressbar" value="true">\r
+ <param name="boxmessage" value="Loading JUpload Applet ...">\r
+ <!-- Target links -->\r
+ <param name="actionURL" value="/nucleus/nucleus/plugins/gallery/juploadaccept.php">\r
+ <!PARAM NAME="maxTotalRequestSize" VALUE="4">\r
+ <!--  <param name="preselectedFiles" value="c:\test.pdf"> -->\r
+<!-- IF YOU HAVE PROBLEMS, CHANGE THIS TO TRUE BEFORE CONTACTING SUPPORT -->\r
+<param name="debug" value="true">\r
+ Your browser does not support applets. Or you have disabled applet in your options.\r
+\r
+ To use this applet, please install the newest version of Sun's java. You can get it from <a href="http://www.java.com/">java.com</a>\r
+ </applet>\r
+<a href="<?php echo $CONF['PluginURL'] ?>gallery/add_picture.php?type=massupload&id=<?php echo $albumid ?>">Next step\r
+\r
+</a></body>\r
+\r
+<?php\r
+\r
+}\r
+       \r
+function addTempPictureForm($albumid = 0) {\r
+       global $NPG_CONF, $gmember,$manager,$CONF,$NP_BASE_DIR;\r
+       \r
+       $NPG_CONF = getNPGConfig();\r
+       if (!preg_match('/^([a-z0-9_]+|`[^`]+`)$/i',$NPG_CONF['temp_table'])) exit;\r
+       $table_name = $NPG_CONF['temp_table'];\r
+       \r
+       $promo_allowed = false;\r
+       if($NPG_CONF['blog_cat'] <> 0) $promo_allowed=true;\r
+       $NPG_CONF['promo_allowed'] = $promo_allowed;\r
+       \r
+       //form proper\r
+       echo '<h1>'.__NPG_FORM_UPLOADFILEFORM.'</h1>';\r
+       echo '<form method="post" action="'.$CONF['PluginURL'].'gallery/add_picture.php'.'"><div>';\r
+       echo '<input type="hidden" name="type" value="addpictures" />';\r
+       echo '<input type="hidden" name="promopost" value="'.$promo_allowed.'" />';\r
+\r
+       $result = mysql_query("select * from $table_name");\r
+       if($result) $num_rows = mysql_num_rows($result);\r
+       \r
+       if($num_rows) {\r
+               echo '<table>';\r
+               $i=0;\r
+               $setorpromo = $NPG_CONF['setorpromo'];\r
+               while($row = mysql_fetch_assoc($result) ) {\r
+                       if ( $row['error'] == '') {\r
+                               echo '<input type="hidden" name="tid'.$i.'" value="'. $row['tempid'] .'" />';\r
+                               echo '<input type="hidden" name="filename'.$i.'" value="'. $row['filename'] .'" />';\r
+                               echo '<input type="hidden" name="thumbfilename'.$i.'" value="'. $row['thumbfilename'] .'" />';\r
+                               echo '<input type="hidden" name="intfilename'.$i.'" value="'. $row['intfilename'] .'" />';\r
+                               \r
+                               echo '<tr><td><img src="'.$CONF['IndexURL'].$row['thumbfilename'].'"></td><td>';\r
+                               echo '<table><tr><td>'.__NPG_FORM_TITLE.'</td>';\r
+                               echo '<td><input type="text" name="title'.$i.'" value="'.$row['title'].'"></td></tr>';\r
+                               echo '<tr><td>'.__NPG_FORM_DESC.'</td>';\r
+                               echo '<td><input type="text" name="description'.$i.'" value="'.$row['description'].'"></td></tr>';\r
+                               if($promo_allowed && $setorpromo=='promo') echo '<tr><td>'.__NPG_FORM_PROMOTE.'</td><td> Yes<input type="radio" name="promote'.$i.'" value="yes"> No<input type="radio" checked name="promote'.$i.'" value="no"></td></tr>';\r
+                               if($setorpromo=='sets'){echo '<tr><td>keywords (seperate with ','):</td><td> <input type="text" name="keywords'.$i.'" value=""></td></tr>';}\r
+                               if(!$albumid) {\r
+                                       echo '<tr><td>'.__NPG_FORM_ADDTOALBUM.'</td><td><select name="album'.$i.'">';\r
+                                       $allowed_albums = $gmember->getallowedalbums();\r
+                                       $j=0;\r
+                                       while($allowed_albums[$j]) {\r
+                                               echo '<option value="'.$allowed_albums[$j]->albumid.'">'.$allowed_albums[$j]->albumname;\r
+                                               $j++;\r
+                                       }\r
+                               }\r
+                               else echo '<input type="hidden" name="album'.$i.'" value="'.$albumid.'">';\r
+                               echo '</select></td></tr></table>';\r
+                               \r
+                               $manager->notify('NPgAddPictureFormExtras',array('i'=>$i,'ttid'=>$row['tempid'], 'filename' =>$row['filename'],'thumbfilename'=>$row['thumbfilename'],'intfilename'=>$row['intfilename'],'title'=>$row['title'],'description'=>$row['description'],'albumid'=>$albumid ));\r
+                               $i++;\r
+                       }\r
+                       else echo '<br>'.$row['filename'].' '.__NPG_FORM_NOADD.': '.$row['error'].'<br/><br/>';\r
+                       \r
+               }\r
+       }\r
+       else echo __NPG_FORM_NOPICTSTOADD.'<br/>';\r
+       if($i == 0) echo __NPG_FORM_NOPICTSTOADD.'</td></tr></table><br/></div></form>'; \r
+       else {echo '</td></tr></table><br/>';\r
+                       if($setorpromo=='sets'){\r
+                               echo '<input type="hidden" name="promote0" value="yes">'.\r
+                               'Enter keywords to promote to your blog(serperate with and):<input type="text" name="promokeywords" value=" " />';\r
+                       }\r
+                       echo '<input type="submit" value="'.__NPG_FORM_SUBMITFILES.'"></div></form>';\r
+       }\r
+\r
+}\r
+\r
+\r
+\r
+?>\r
diff --git a/NP_gallery/tags/v0.95/gallery/functions.php b/NP_gallery/tags/v0.95/gallery/functions.php
new file mode 100644 (file)
index 0000000..609b12f
--- /dev/null
@@ -0,0 +1,306 @@
+<?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&amp;name=gallery&amp;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&amp;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&amp;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
diff --git a/NP_gallery/tags/v0.95/gallery/gallery todo.txt b/NP_gallery/tags/v0.95/gallery/gallery todo.txt
new file mode 100644 (file)
index 0000000..dfb48ef
--- /dev/null
@@ -0,0 +1,61 @@
+np_gallery todo:\r
+\r
+--parents/children, subalbums\r
+--include album thumbs as option.\r
+--in album, picture sort order\r
+--picture script timeout problem - fixed intervals of uploads\r
+--picasa import\r
+--intermediate image in promo\r
+\r
+--gallerymakelink\r
+--global add album, etc\r
+--change default way shadows\r
+--documentation\r
+--admin tab plugin hook\r
+--import/export templates\r
+--next and prev thumbnails\r
+--thumbnail strip\r
+--(P)latest\r
+--(P)long descriptions\r
+--make install.sql\r
+--<%gallery(picture/album, byname)%>\r
+--override default popup behavior\r
+--display images in resized format for posts\r
+--finish internationalization\r
+--(P)<%gallery(int/thumb,random)%>\r
+--input checking\r
+--ticket checking in 3.2\r
+--clean up display of upload form\r
+\r
+\r
+done:\r
+--change location of add_picture\r
+--edit comments\r
+--fixed 'more' bug\r
+--rethumb by album\r
+--pages\r
+options: AdminCommentsPerPage, ThumbnailsPerPage\r
+--fancy urls\r
+--time in edit comments\r
+--massupload import\r
+\r
+done:\r
+--absolute paths to pictures\r
+--plugin hooks\r
+               NPgCollectionDisplay\r
+--<%breadcrumb(char)$>\r
+--template guillotine bug\r
+\r
+done:\r
+make captcha plugin work\r
+<%description%> in album and picture\r
+album setting -- comments allowed\r
+album setting -- thumbnail image\r
+template/form for promo post\r
+<%albumthumbnail%>\r
+update default template \r
+       -- fix extra </div>\r
+       -- add stuff for promo post\r
+       -- add next/extra\r
+       -- add new visual albumlist\r
+hooks for tags plugin\r
diff --git a/NP_gallery/tags/v0.95/gallery/help.html b/NP_gallery/tags/v0.95/gallery/help.html
new file mode 100644 (file)
index 0000000..98279ce
--- /dev/null
@@ -0,0 +1,70 @@
+<h3>Plugin overview</h3>\r
+<p>For Version 0.94</p>\r
+<p>NP_Gallery provides a nucleus-native integrated photo and image gallery. It is designed to be 'nucleus-like' in its function and usage.</p>\r
+\r
+<h3><a name="toc" ></a>Table of Contents</h3>\r
+<ul>\r
+<li><a href="#features">Features</a></li>\r
+<li><a href="#links">Important links</a></li>\r
+<li><a href="#requirements">Plugin Requirements</a></li>\r
+<li><a href="#installtion">Installation</a></li>\r
+<li><a href="#skinvars">SkinVars</a></li>\r
+<li><a href="#options">Plugin Options</a></li>\r
+<li><a href="#configuration">Configuration</li>\r
+<li><a href="#templates">Templates</li>\r
+<li>Internationalization</li>\r
+<li><a href="#version">Version History</li>\r
+</ul>\r
+\r
+<h3><a name="features"></a>Features</h3>\r
+<ul>\r
+<li>Controllable from Nucleus Admin Area</li>\r
+<li>Fully template driven, CSS tableless output</li>\r
+<li>Automatic thumbnail creation using GD or Imagemagick</li>\r
+<li>Extends nucleus plugin API</li>\r
+<li>Compatible with captcha plugin</li>\r
+<li>Use keywords to assign pictures to sets, dynamically display the sets on your blog</li>\r
+<li>Ability to create 'hover tooltips,' drawing boxes around people and naming them </li>\r
+<li>Massupload via FTP - infinite amount </li>\r
+<li>Slideshow feature </li>\r
+<li>Previous and next thumbnails </li>\r
+<li>Album teams, public/private albums </li>\r
+<li>album thumbnails per page</li>\r
+<li>display dynamic &quot;promotional posts&quot; in your blog.  </li>\r
+<li>More</li>\r
+</ul>\r
+\r
+<h3><a name="links"></a>Important links</h3>\r
+<ul>\r
+<li>Newest versions hosted here :<a href="http://www.sircambridge.net/nucleus/index.php?itemid=57">Link </a></li>\r
+<li>Versions up to 0.8 can be downloaded from the nucleusplugin sourceforge page: <a href="http://sourceforge.net/projects/nucleusplugs/">link</a></li>\r
+<li>Gallery plugin wiki page <a href="http://wakka.xiffy.nl/gallery">link</a></li>\r
+<li>Nucleus support forum threads</li>\r
+</ul>\r
+\r
+<h3><a name="requirements"></a>Plugin Requirements</h3>\r
+<p>Besides the nucleus requirements of php 4 or greater and mysql 3.58 or greater, NP_Gallery requires either GD v2 or greater or Imagemagick be installed on the server. Additionally, the database user (as set in nucleus' config.php) needs to be able to create temporary tables in mysql.</p>\r
+\r
+<h3><a name="installation"></a>Installation</h3>\r
+<p>NP_Gallery installs as any other plugin in nucleus, but requires some extra steps to be fully functional.</p>\r
+<p><strong>First,</strong> clone your current skin and rename it NPGallery. Click on all of the skin parts EXCEPT for 'main index' (ie archive, archive list, etc), delete the contents and click 'update skin'. As 'main index' part is the only skin part used by the plugin, the other parts are superfluous and can be deleted. If you don't want to delete them, they will not interfere with the function of the plugin.</p>\r
+<p>Now modify the main index part of NPGallery skin to display the gallery instead of your blog. Do this by replacing your &lt;%blog(default/index,10)%&gt; statement with &lt;%gallery%&gt;. This will make the gallery page look just like your blog page (with the obvious differences) including the right/left menus (if you have them). These can be omitted, or you can make your gallery page look totally different than your blog page. The NPGallery skin is what controls the look. Some skins such as leila do not have this in the skin template, but in some other file that is included, just copy and paste everything from that included file into the skin template and replace blog with gallery. </p>\r
+<p><strong>Second,</strong> create your gallery directory and make it writable. By default this directoy is media/gallery, but it can be any directory you want it to be, however if you change from the default directory you will need to change the gallery configuration in the admin area. To make the directory writable, chmod the directory to 0777. Search for one of the many tutorials on the web if you are unsure how to do this. If you want to use massuploads, create an empty directory /upload in your blog root and chmod it to 777. </p>\r
+<p><strong>Third,</strong> Create a new blog, and set that blog to use the &quot;NPGallery&quot; skin you created in step 1. </p>\r
+<p>Finally, make a link to your gallery somewhere in your main blog page. This is usually something like www.mysite.com/index.php?blogid=2 where the number is whichever blog you created. </p>\r
+<p>Some Frequently Asked Questions are answered in <a href="FAQ.html">FAQ.html</a> , such as removing the sidebar and getting the gallery to put thumbnails that will the whole page.\r
+\r
+<p>Now you can configure your gallery by going to the gallery admin area. This initial configuring is important in getting the gallery to work. </p>\r
+\r
+<h3><a name="skinvars"></a>SkinVars</h3>\r
+<p>Note: These skinvars are intended to be used in general nucleus skins. They are not designed to be used in np_gallery templates.</p>\r
+<ul><li><b>Gallery(link)</b>: returns a hyperlink to the gallery album list page. Usage example: &lt;a href=&quot;&lt;%gallery(link)%&gt;&quot;&gt;Gallery&lt;/a&gt;</li>\r
+  <li><strong>Gallery(sets,keywords,aesc/desc)</strong>: displays the pictures with keywords &quot;keyword&quot;, supports multiple keywords, seperated with ' and ',aesc/desc for aescending or descending.example &lt;%gallery(sets,pets and girls,desc)%&gt;, will show pictures with the keywords 'pets' and 'girls' in a descending order. </li>\r
+<li><b>Gallery</b>: displays the Gallery page (album list, album, picture, etc). It is meant to be used in the NPGallery skin. Usage: &lt;%gallery%&gt;</li></ul>\r
+\r
+<h3><a name="options"></a>Plugin Options</h3>\r
+<p>Most of NP_gallery options are configured on the gallery admin page, but there are some basic options in &quot;edit options&quot; for NP_Gallery in the plugin menu. </p>\r
+\r
+<h3><a name="configuration"></a>Configuration</h3>\r
+\r
+<h3><a name="templates"></a></h3>\r
diff --git a/NP_gallery/tags/v0.95/gallery/include/commentform-loggedin.template b/NP_gallery/tags/v0.95/gallery/include/commentform-loggedin.template
new file mode 100644 (file)
index 0000000..622d8c4
--- /dev/null
@@ -0,0 +1,20 @@
+\r
+<form method="post" action="<%formdata(actionurl)%>">\r
+  <div class="commentform">\r
+       <%errordiv%>\r
+       \r
+       <input type="hidden" name="type" value="addcomment" />\r
+       <input type="hidden" name="action" value="plugin" />\r
+       <input type="hidden" name="name" value="gallery" />\r
+       <input type="hidden" name="itemid" value="<%itemid%>" />\r
+       <label for="nucleus_cf_body"><%text(_COMMENTFORM_COMMENT)%></label>:\r
+       <br />\r
+       <textarea name="body" class="formfield" cols="40" rows="10" id="nucleus_cf_body"><%formdata(body)%></textarea>\r
+       <br />\r
+       <%text(_COMMENTFORM_YOUARE)%> <%formdata(membername)%>\r
+       <small>(<a href="?action=logout"><%text(_LOGOUT)%></a>)</small>\r
+       <br />\r
+       <input type="submit" value="<%text(_COMMENTFORM_SUBMIT)%>" class="formbutton" />\r
+       <%callback(FormExtra,commentform-loggedin)%> \r
+  </div>\r
+</form>\r
diff --git a/NP_gallery/tags/v0.95/gallery/include/commentform-notloggedin.template b/NP_gallery/tags/v0.95/gallery/include/commentform-notloggedin.template
new file mode 100644 (file)
index 0000000..28b4d18
--- /dev/null
@@ -0,0 +1,23 @@
+<form method="post" action="<%formdata(actionurl)%>">\r
+  <div class="commentform">\r
+       \r
+       <input type="hidden" name="type" value="addcomment" />\r
+       <input type="hidden" name="action" value="plugin" />\r
+       <input type="hidden" name="name" value="gallery" />\r
+       <input type="hidden" name="itemid" value="<%itemid%>" />\r
+       <label for="nucleus_cf_body"><%text(_COMMENTFORM_COMMENT)%></label>:\r
+       <br />\r
+       <textarea name="body" class="formfield" cols="40" rows="10" id="nucleus_cf_body"></textarea>\r
+       <br />\r
+       <label for="nucleus_cf_name"><%text(_COMMENTFORM_NAME)%></label>: <input name="user" size="40" maxlength="40" value="<%formdata(user)%>" class="formfield" id="nucleus_cf_name" />\r
+       <br />\r
+       <label for="nucleus_cf_mail"><%text(_COMMENTFORM_MAIL)%></label>: <input name="userid" size="40" maxlength="60" value="<%formdata(userid)%>" class="formfield" id="nucleus_cf_mail" />\r
+\r
+       <%callback(FormExtra,commentform-notloggedin)%> \r
+       <br/>\r
+       \r
+       <input type="checkbox" value="1" name="remember" id="nucleus_cf_remember" <%formdata(rememberchecked)%> /><label for="nucleus_cf_remember"><%text(_COMMENTFORM_REMEMBER)%></label>\r
+       <br />\r
+       <input type="submit" value="<%text(_COMMENTFORM_SUBMIT)%>" class="formbutton" />\r
+  </div>\r
+</form>\r
diff --git a/NP_gallery/tags/v0.95/gallery/index.php b/NP_gallery/tags/v0.95/gallery/index.php
new file mode 100644 (file)
index 0000000..b5537aa
--- /dev/null
@@ -0,0 +1,123 @@
+<?php\r
+//NP_gallery admin page\r
+\r
+       $strRel = '../../../';\r
+\r
+       require($strRel . 'config.php'); //nucleus config\r
+       include(dirname(__FILE__).'/config.php'); //gallery config\r
+               \r
+       if (!$member->isLoggedIn())     doError(_NOTLOGGEDIN);\r
+\r
+       include($DIR_LIBS . 'PLUGINADMIN.php');\r
+       \r
+       global $galleryaction, $CONF, $NPG_CONF,$gmember,$member;\r
+       $galleryaction=$CONF['PluginURL']."gallery/index.php";\r
+\r
+       //create extra header info for admin page\r
+       $gallery_header = '<style type="text/css">\r
+\r
+       #tabmenu {\r
+               color: #000;\r
+               border-bottom: 1px solid black;\r
+               margin: 12px 0px 0px 0px;\r
+               padding: 0px;\r
+               z-index: 1;\r
+               padding-left: 10px }\r
+               \r
+       #tabmenu li {\r
+               display: inline;\r
+               overflow: hidden;\r
+               list-style-type: none; }        \r
+               \r
+       #tabmenu a, a.active {\r
+               color: black;\r
+               background: white;\r
+               font: bold 1em/1em;\r
+               border: 1px solid black;\r
+               -moz-border-radius-topleft: 5px;\r
+               -moz-border-radius-topright: 5px;\r
+               padding: 5px 5px 0px 5px;\r
+               margin: 0px;\r
+               text-decoration: none; }\r
+               \r
+       #tabmenu a.active {\r
+               background: white;\r
+               border-bottom: 1px solid white; }\r
+               \r
+       #tabmenu a:hover {\r
+               color: #596d9d;\r
+               background: #F6F6F6; }  \r
+               \r
+       #tabmenu a:visited {\r
+               color: #596d9d; }\r
+               \r
+       #tabmenu a.active:hover {\r
+               background: white;\r
+               color: #596d9d; }\r
+       \r
+       #admin_content {font: 0.9em/1.3em "bitstream vera sans", verdana, sans-serif;\r
+               text-align: justify;\r
+               background: white;\r
+               padding: 20px;  \r
+               border-top: none;\r
+               z-index: 2;     }\r
+               \r
+       .half {\r
+               width: 50%;\r
+       }\r
+       \r
+       form p {\r
+               clear: left;\r
+               margin: 0;\r
+               padding: 0;\r
+               padding-top: 5px;\r
+       }\r
+       form p label {\r
+               float: left;\r
+               width: 300px;\r
+               font: bold 1.0em Arial, Helvetica, sans-serif;\r
+       }\r
+       \r
+       fieldset {\r
+               border: 1px dotted #61B5CF;\r
+               margin-top: 16px;\r
+               padding: 10px;\r
+       }\r
+       legend {\r
+               font: 1.2em Arial, Helvetica, sans-serif;\r
+       }\r
+       \r
+       td.left {\r
+               width: 230px;\r
+       }\r
+       \r
+       </style>\r
+       \r
+       <SCRIPT>\r
+       function openTarget (form, features, windowName) {\r
+               if (!windowName)\r
+               windowName = \'formTarget\' + (new Date().getTime());\r
+               form.target = windowName;\r
+               open (\'\', windowName, features);\r
+       }\r
+</SCRIPT>'\r
+               \r
+       ;\r
+       \r
+       // create the admin area page\r
+       $oPluginAdmin = new PluginAdmin('gallery');\r
+       $oPluginAdmin->start($gallery_header);\r
+\r
+       echo '<h2>'.__NPG_ADMIN_TITLE.'</h2>';\r
+\r
+\r
+       $action = requestVar('action');\r
+       if(!$action) $action = 'albumlist';\r
+       $admin = new NPG_ADMIN();\r
+       $admin->action($action);\r
+\r
+\r
+       $oPluginAdmin->end();\r
+\r
+\r
+?>
\ No newline at end of file
diff --git a/NP_gallery/tags/v0.95/gallery/language/english.php b/NP_gallery/tags/v0.95/gallery/language/english.php
new file mode 100644 (file)
index 0000000..d1da64d
--- /dev/null
@@ -0,0 +1,209 @@
+<?php\r
+\r
+//language file\r
+//english NP_Gallery\r
+define('__NPG_OPT_DONT_DELETE_TABLES','Delete this plugin\'s table and data when uninstalling?');\r
+define('__NPG_BREADCRUMB_GALLERY','Gallery');\r
+\r
+//special collections:\r
+define('__NPG_COLL_MOSTVIEWED','Most Viewed');\r
+\r
+//errors:\r
+define('__NPG_ERR_GALLLERY_NOT_CONFIG','The Gallery hasn\'t been configured.');\r
+define('__NPG_ERR_BAD_TEMPLATE','Bad template name');\r
+define('__NPG_ERR_NO_UPD_TEMPLATE','There was a problem updating the template');\r
+define('__NPG_ERR_BAD_FUNCTION','Function not defined');\r
+define('__NPG_ERR_NOT_ADMIN','Need to be administrator to perform this function');\r
+define('__NPG_ERR_ALBUM_UPDATE','Album was NOT updated');\r
+define('__NPG_ERR_TEAM_UPDATE','Album team was NOT updated');\r
+define('__NPG_ERR_DA_MOVE_PICTURE','No permission to move files -- album will not be deleted');\r
+define('__NPG_ERR_NOSUCHTHING','Requested item does not exist');\r
+\r
+//admin page:\r
+//tabs:\r
+define('__NPG_ADMIN_TITLE','Gallery Admin Page');\r
+define('__NPG_ADMIN_TAB_ALBUMS','Albums');\r
+define('__NPG_ADMIN_TAB_COMMENTS','Comments');\r
+define('__NPG_ADMIN_TAB_CONFIG','Configuration');\r
+define('__NPG_ADMIN_TAB_USERS','Gallery Users');\r
+define('__NPG_ADMIN_TAB_TEMPLATES','Templates');\r
+define('__NPG_ADMIN_TAB_ADMIN','Admin Functions');\r
+\r
+//comments tab\r
+define('__NPG_ADMIN_NO_DEL_PERMISSION','You don\'t have permission to delete this comment');\r
+define('__NPG_ADMIN_NO_COMMENT','No such comment');\r
+define('__NPG_ADMIN_NOTDELETED','Comment not deleted');\r
+define('__NPG_ADMIN_DELETED','Comment deleted');\r
+define('__NPG_PAGE','Page');\r
+\r
+\r
+//configuration tab\r
+define('__NPG_ADMIN_GEN_OPTIONS','General Options');\r
+define('__NPG_ADMIN_ADD_LEVEL','Add Album permission level');\r
+define('__NPG_ADMIN_ONLY_ADMIN','Only super-admin');\r
+define('__NPG_ADMIN_ONLY_REGUSERS','All registered users');\r
+define('__NPG_ADMIN_ANYONE','Anyone');\r
+define('__NPG_ADMIN_SELECTEDUSERS','Only selected users');\r
+define('__NPG_ADMIN_NOSELECT','None currently selected. To add select users under Gallery Users tab');\r
+define('__NPG_ADMIN_PROMOBLOG','Promotion category/blog');\r
+define('__NPG_ADMIN_NOPROMO','None');\r
+define('__NPG_ADMIN_ACTIVETEMPLATE','Active template');\r
+define('__NPG_ADMIN_VIEWTIME','Minutes between unique views');\r
+define('__NPG_ADMIN_BATCH_SLOTS','Number of batch upload slots');\r
+define('__NPG_ADMIN_IMAGE_DIR','Image Directory (must *not* end in /)');\r
+define('__NPG_ADMIN_MAX_INT_DIM','Max Intermediate picture dimensions (h x w)');\r
+define('__NPG_ADMIN_THUMB_DIM','Thumbnail dimensions (h x w)');\r
+define('__NPG_ADMIN_COMMENTSPERPAGE','Number of comments per page (in admin area)');\r
+define('__NPG_ADMIN_THUMBSPERPAGE','Number of thumbnails per page (album view)');\r
+\r
+define('__NPG_ADMIN_GRAPHICS_OPTIONS','Graphics Options');\r
+define('__NPG_ADMIN_GRAPHICS_ENGINE','Graphics engine');\r
+define('__NPG_ADMIN_GD_INSTALLED','GD installed with support for true color images');\r
+define('__NPG_ADMIN_GD_NOT_INSTALLED','GD not installed or installed without support for true color images');\r
+define('__NPG_ADMIN_IM_INSTALLED','IM installed, base path correct');\r
+define('__NPG_ADMIN_IM_NOT_INSTALLED','ImageMagick not installed, or base path is incorrect');\r
+define('__NPG_ADMIN_IM_PATH','ImageMagick path (must end in a /)');\r
+define('__NPG_ADMIN_IM_OPTIONS','ImageMagick options');\r
+define('__NPG_ADMIN_IM_QUALITY','ImageMagick jpg quality');\r
+\r
+//select user tab\r
+define('__NPG_ADMIN_PERMITTED_USERS','Users with permission to add albums');\r
+define('__NPG_ADMIN_REMOVE_SELECT_USER','Remove from permitted list');\r
+define('__NPG_ADMIN_GIVE_ADD_PERM','Give add album permission');\r
+define('__NPG_ADMIN_ADD_TO_LIST','Add to list');\r
+\r
+//admin functions tab\r
+define('__NPG_ADMIN_ADMIN_FUNCTIONS','Admin Functions');\r
+define('__NPG_ADMIN_CLEANUP','Cleanup');\r
+define('__NPG_ADMIN_CLEANUP_DESC','Make number of images in albums consistent with what\'s in the database');\r
+define('__NPG_ADMIN_RETHUMB','Rethumb');\r
+define('__NPG_ADMIN_RETHUMB_DESC','Resize all thumbnails and intermediate pictures');\r
+define('__NPG_ADMIN_ALLALBUMS','All Albums');\r
+define('__NPG_ADMIN_RETURN','Return to Album List');\r
+define('__NPG_ADMIN_UPDATE_TEMPLATE','Template updated successfully');\r
+define('__NPG_ADMIN_SUCCESS_CLEANUP','Database cleanedup');\r
+\r
+\r
+//album tab\r
+define('__NPG_ERR_NO_ALBUMS','You don\'t have any albums to list');\r
+define('__NPG_ADMIN_SUCCESS_ALBUM_UPDATE','Album updated');\r
+define('__NPG_ADMIN_SUCCESS_TEAM_UPDATE','Album team updated');\r
+define('__NPG_ADMIN_MASSUPLOAD','Upload files');\r
+define('__NPG_ADMIN_NEWALBUM','New Album');\r
+define('__NPG_ADMIN_MASSUPLOAD_DESC','Add all files in upload/ directory to specified album');\r
+\r
+//comments tab\r
+define('__NPG_ADMIN_COMMENTS', 'User Comments');\r
+define('__NPG_COMMENT', 'Comment');\r
+define('__NPG_AUTHOR', 'Author');\r
+define('__NPG_TIME', 'Time');\r
+define('__NPG_PICTUREID','Picture');\r
+\r
+\r
+//templates tab\r
+define('__NPG_ADMIN_TEMPLATES','Templates');\r
+\r
+\r
+//forms\r
+\r
+//add album form\r
+define('__NPG_FORM_ADDALBUM', 'Add Album Form');\r
+define('__NPG_FORM_ALBUM_TITLE','Album Title');\r
+define('__NPG_FORM_ALBUM_DESC','Description');\r
+define('__NPG_FORM_SUBMITALBUM','Add Album');\r
+\r
+//edit picture form\r
+define('__NPG_FORM_EDITPICTURE','Edit Picture Form');\r
+define('__NPG_FORM_PICTURETITLE','Picture Title');\r
+define('__NPG_FORM_PICTUREDESCRIPTION','Picture Description');\r
+define('__NPG_FORM_MOVETOALBUM','Move to Album');\r
+define('__NPG_FORM_NOPICTOEDIT','No picture to edit');\r
+\r
+//delete picture form\r
+define('__NPG_FORM_REALLYDELETE','Do you really want to delete this picture? Press cancel to go back');\r
+define('__NPG_FORM_DELETEPICTURETEXT','Press Delete to delete this picture from the database. The picture will also be deleted from the disk.');\r
+define('__NPG_FORM_DELETEPROMOTOO','Delete promotional blog posts as well?');\r
+define('__NPG_FORM_NOPICTTODELETE','No picture to delete');\r
+\r
+//add picture form\r
+define('__NPG_FORM_UPLOADFILEFORM','Upload File Form');\r
+define('__NPG_FORM_PICTURELABLE','Picture ');\r
+define('__NPG_FORM_SUBMITFILES','Submit Files');\r
+define('__NPG_FORM_ADDTOALBUM','Add to Album');\r
+define('__NPG_FORM_NOADD','will not be added due to ');\r
+define('__NPG_FORM_NOPICTSTOADD','No pictures to add');\r
+define('__NPG_FORM_PROMOTE','Add New Picture Post');\r
+\r
+//general form\r
+define('__NPG_FORM_SUBMIT_CHANGES','Submit changes');\r
+define('__NPG_FORM_USER','User');\r
+define('__NPG_FORM_NAME','Name');\r
+define('__NPG_FORM_TITLE','Title');\r
+define('__NPG_FORM_DESC','Description');\r
+define('__NPG_FORM_YES','Yes');\r
+define('__NPG_FORM_ACTIONS','Actions');\r
+define('__NPG_FORM_IMAGES', 'Images');\r
+define('__NPG_FORM_OWNER','Owner');\r
+define('__NPG_FORM_SETTINGS','Settings');\r
+define('__NPG_FORM_DELETE','Delete');\r
+define('__NPG_FORM_CLONE','Clone');\r
+define('__NPG_FORM_EDIT','Edit');\r
+\r
+//template\r
+define('__NPG_FORM_EDIT_TEMPLATE','Edit Template');\r
+define('__NPG_FORM_TEMPLATE_NAME','Template Name');\r
+define('__NPG_FORM_TEMPLATE_DESC','Template Description');\r
+define('__NPG_FORM_TEMPLATE_SETTINGS','Template Settings');\r
+define('__NPG_FORM_NEWTEMPLATE','New Template');\r
+define('__NPG_FORM_TEMPLATE_LIST','Gallery List');\r
+define('__NPG_FORM_TEMPLATE_ALBUM','Album');\r
+define('__NPG_FORM_TEMPLATE_PICTURE','Picture');\r
+define('__NPG_FORM_TEMPLATE_COMMENTS','Comments');\r
+define('__NPG_FORM_TEMPLATE_HEADER','Header');\r
+define('__NPG_FORM_TEMPLATE_BODY','Body');\r
+define('__NPG_FORM_TEMPLATE_FOOTER','Footer');\r
+define('__NPG_FORM_TEMPLATE_PROMO','Promo post template');\r
+define('__NPG_FORM_TEMPLATE_PROMOIMAGES','Promo images');\r
+define('__NPG_FORM_CREATENEWTEMPLATE','Create new template');\r
+\r
+//delete album form\r
+define('__NPG_FORM_DELETE_ALBUM','Delete Album');\r
+define('__NPG_FORM_REALLY_DELETE_ALBUM','Do you really want to delete this album? Press cancel to return to album list');\r
+define('__NPG_FORM_CANCEL','Cancel');\r
+define('__NPG_FORM_DELETE_OR_MOVE','You can delete all the pictures, or move them to another album (if you have permissions to do so). Double check that the following option is set accordingly. If you only have an option to delete, you do not have add permission for any other album.');\r
+define('__NPG_FORM_DELETE_PICTURES','Delete album pictures');\r
+\r
+//edit album form\r
+define('__NPG_FORM_MODIFY_ALBUM','Edit Album');\r
+define('__NPG_FORM_RETURN_ADMIN','Return to Album List');\r
+define('__NPG_FORM_NO_OWNER_ACTIONS','No actions for owner');\r
+define('__NPG_FORM_YES','Yes');\r
+define('__NPG_FORM_NO','No');\r
+define('__NPG_FORM_TOGGLE_ADMIN','Toggle Admin');\r
+define('__NPG_FORM_ADDTEAMMEMBER','Add Team Member');\r
+define('__NPG_FORM_CHOOSEMEMBER','Choose Member');\r
+define('__NPG_FORM_ADMIN_PRIV','Admin Privileges?');\r
+define('__NPG_FORM_ADDTOTEAM','Add to team');\r
+define('__NPG_FORM_COMMENTSALLOWED','Comments Allowed');\r
+define('__NPG_FORM_ALBUM_THUMBNAIL','Album Thumbnail');\r
+define('__NPG_FORM_CURRENT_ALBUM_TEAM','Current Album Team');\r
+define('__NPG_FORM_ALBUM_ADMIN','Album Admininistrator');\r
+\r
+//picture comments\r
+define('__NPG_NO_COMMENTS','No comments for this picture');\r
+\r
+//promo post\r
+define('__NPG_PROMO_FORM_CANCEL','Cancel Promo Post');\r
+define('__NPG_PROMO_FORM_TITLE','Title');\r
+define('__NPG_PROMO_FORM_BODY','Body');\r
+define('__NPG_PROMO_FORM_SUBMIT','Submit Promo Post');\r
+define('__NPG_PROMO_FORM_SUCCESS','Post added successfully');\r
+define('__NPG_PROMO_FORM_CLOSE','Close this window');\r
+\r
+//add new album -- massupload\r
+define('__NPG_FORM_MASSUPLOAD_NEWALBUM','Enter the title and description for the new album. Pressing submit will add the new album and add all pictures in the upload folder. Press back to cancel');\r
+define('__NPG_FORM_MASSUPLOAD_CONFIRM','Click Submit to add all pictures in the upload folder to the gallery');\r
+define('__NPG_FORM_MASSUPLOAD_SUBMIT','Submit');\r
+\r
+?>\r
+\r
diff --git a/NP_gallery/tags/v0.95/gallery/list_class.php b/NP_gallery/tags/v0.95/gallery/list_class.php
new file mode 100644 (file)
index 0000000..962c250
--- /dev/null
@@ -0,0 +1,199 @@
+<?php\r
+\r
+class GALLERY_LIST {\r
+       \r
+       var $template;\r
+       \r
+       function GALLERY_LIST() {}\r
+       \r
+       function settemplate($template) {\r
+               $this->template = & $template;\r
+       }\r
+       \r
+       function display($sortorder) {  \r
+               global $gmember;\r
+               global $NPG_CONF;\r
+               \r
+               if(!$NPG_CONF['template']) $NPG_CONF['template'] = 1;\r
+               \r
+               $this->template = & new NPG_TEMPLATE($NPG_CONF['template']);\r
+               //$this->template->readall();\r
+               \r
+               $template_header = $this->template->section['LIST_HEADER'];\r
+               if($NPG_CONF['thumborlist']=='list')$template_body = $this->template->section['LIST_BODY'];\r
+               if($NPG_CONF['thumborlist']=='thumb')$template_body = $this->template->section['LIST_THUM'];\r
+               \r
+               $template_footer = $this->template->section['LIST_FOOTER'];\r
+               \r
+               $actions = new LIST_ACTIONS();\r
+               $parser = new PARSER($actions->getdefinedActions(),$actions);\r
+               $actions->setparser($parser);\r
+               \r
+               //header\r
+               $parser->parse($template_header);\r
+               \r
+               //body\r
+               switch($sortorder){\r
+                       case 'title': $so = ' order by title ASC, albumid DESC'; break;\r
+                       case 'desc': $so = ' order by description ASC, albumid DESC'; break;\r
+                       case 'owner': $so = ' order by ownername ASC, albumid DESC'; break;\r
+                       case 'date': $so = ' order by modified DESC, albumid DESC'; break;\r
+                       case 'numb': $so = ' order by numberofimages DESC, albumid DESC'; break;\r
+                       \r
+                       case 'titlea': $so = ' order by title DESC, albumid DESC'; break;\r
+                       case 'desca': $so = ' order by description DESC, albumid DESC'; break;\r
+                       case 'ownera': $so = ' order by ownername DESC, albumid DESC'; break;\r
+                       case 'datea': $so = ' order by modified ASC, albumid DESC'; break;\r
+                       case 'numba': $so = ' order by numberofimages ASC, albumid DESC'; break;\r
+                       default : $so =''; break;\r
+               }\r
+               \r
+               $query = "select a.*, b.mname as ownername from ".sql_table('plug_gallery_album').' as a left join '.sql_table('member').' as b on a.ownerid=b.mnumber '.$so;\r
+               $result = mysql_query($query);\r
+               $albums = $gmember->getallowedalbums();\r
+               $albumids = $gmember->getAllowedAlbumsids();\r
+               \r
+               while ($row = mysql_fetch_object($result)) {\r
+                       if(!$row->ownername) $row->ownername = 'guest';\r
+                       $actions->setCurrentRow($row);\r
+                       //if its public, show it\r
+                       //echo $row->albumid;\r
+                       if($row->publicalbum){\r
+                               $parser->parse($template_body);\r
+                       }\r
+                       //if its not public, check if its in the array of allowed albums for this member\r
+                       elseif(@in_array($row->albumid,$albumids) ){\r
+                               $parser->parse($template_body);\r
+                       }\r
+               }\r
+               \r
+               //footer\r
+               $parser->parse($template_footer);\r
+       } //end of display function\r
+\r
+       \r
+} //end of list class\r
+\r
+class LIST_ACTIONS extends BaseActions {\r
+       var $CurrentRow; //query object\r
+       var $parser;\r
+       \r
+       \r
+       function LIST_ACTIONS() {\r
+               $this->BaseActions();\r
+               \r
+       }\r
+\r
+       function getdefinedActions() {\r
+               return array(\r
+                       'breadcrumb',\r
+                       'sortbytitle',\r
+                       'sortbydescription',\r
+                       'sortbyowner',\r
+                       'sortbymodified',\r
+                       'sortbynumber',\r
+                       'albumlink',\r
+                       'albumthumbnail',\r
+                       'centeredtopmargin',\r
+                       'title',\r
+                       'description',\r
+                       'ownerid',\r
+                       'ownername',\r
+                       'modified',\r
+                       'numberofimages',\r
+                       'addalbumlink',\r
+                       'addpictureslink',\r
+                       'if',\r
+                       'else',\r
+                       'endif' );\r
+                       \r
+       }\r
+       \r
+       function setParser(&$parser) {$this->parser =& $parser; }\r
+       function setCurrentRow(&$currentrow) { $this->CurrentRow =& $currentrow; }\r
+       \r
+       function parse_breadcrumb() {\r
+               //$breadcrumb = getBreadcrumb(); echo $breadcrumb; \r
+               echo __NPG_BREADCRUMB_GALLERY;\r
+       }\r
+       function parse_sortbytitle() { \r
+               $so = requestvar('sort');\r
+               if($so == 'title') $so = 'titlea'; else $so = 'title';\r
+               echo generateLink('list', $so); \r
+       }\r
+       function parse_sortbydescription() {\r
+               $so = requestvar('sort');\r
+               if($so == 'desc') $so = 'desca'; else $so = 'desc';\r
+               echo generateLink('list', $so); \r
+       }\r
+       function parse_sortbyowner() {\r
+               $so = requestvar('sort');\r
+               if($so == 'owner') $so = 'ownera'; else $so = 'owner';\r
+               echo generateLink('list', $so); \r
+       }\r
+       function parse_sortbymodified() {\r
+               $so = requestvar('sort');\r
+               if($so == 'date') $so = 'datea'; else $so = 'date';\r
+               echo generateLink('list', $so); \r
+       }\r
+       function parse_sortbynumber() {\r
+               $so = requestvar('sort');\r
+               if($so == 'numb') $so = 'numba'; else $so = 'numb';\r
+               echo generateLink('list', $so); \r
+       }\r
+       \r
+       function parse_albumthumbnail() { \r
+               global $CONF;\r
+               echo $CONF['IndexURL'].$this->CurrentRow->thumbnail; }\r
+       function parse_centeredtopmargin($height,$adjustment) {\r
+               global $NP_BASE_DIR;\r
+               $image_size = getimagesize($NP_BASE_DIR.$this->CurrentRow->thumbnail);\r
+               $topmargin = ((intval($height) - intval($image_size[1])) / 2) + intval($adjustment);\r
+               echo 'margin-top: '.$topmargin.'px;';\r
+       }\r
+       \r
+       function parse_albumlink() {\r
+               echo generateLink('album', $this->CurrentRow->albumid);\r
+       }\r
+       function parse_title() {echo $this->CurrentRow->title; }\r
+       function parse_description() {echo $this->CurrentRow->description; }\r
+       function parse_ownerid() {echo $this->CurrentRow->ownerid; }\r
+       function parse_ownername() {echo $this->CurrentRow->ownername; }\r
+       function parse_modified($format = 'M j, h:i',$arg1 ='',$arg2='',$arg3='') {\r
+               if($arg1) $arg1 = ','.$arg1;\r
+               if($arg2) $arg2 = ','.$arg2;\r
+               if($arg3) $arg3 = ','.$arg3;\r
+               $format = $format . $arg1 . $arg2 . $arg3;\r
+               $d = $this->CurrentRow->modified;\r
+               $d = converttimestamp($d);\r
+               $d = date($format,$d);\r
+               echo $d;\r
+       }\r
+       function parse_numberofimages() {echo $this->CurrentRow->numberofimages; }\r
+       \r
+       function parse_addalbumlink() {$aa = generateLink('addAlbumF'); echo $aa;}\r
+       function parse_addpictureslink() {$ap = generateLink('batchaddPictF'); echo $ap;}\r
+       \r
+\r
+       function parse_if($field, $name='', $value = '') {\r
+               global $gmember;\r
+               \r
+               $condition = 0;\r
+               switch ($field) {\r
+                       case 'canaddpicture':\r
+                               $condition = $gmember->canAddPicture();\r
+                               break;\r
+                       case 'canaddalbum':\r
+                               $condition = $gmember->canAddAlbum();\r
+                               break;\r
+                       default: \r
+                               break;\r
+               }\r
+               \r
+               $this->_addIfCondition($condition);\r
+               \r
+       }\r
+\r
+\r
+}\r
+?>\r
diff --git a/NP_gallery/tags/v0.95/gallery/member_class.php b/NP_gallery/tags/v0.95/gallery/member_class.php
new file mode 100644 (file)
index 0000000..34dbe98
--- /dev/null
@@ -0,0 +1,166 @@
+<?php\r
+//gallery member class\r
+\r
+class GALLERY_MEMBER extends MEMBER {\r
+       \r
+       function makeguest() {\r
+               $this->id = 0;\r
+               $this->realname = 'guest';\r
+               $this->displayname = 'guest';\r
+       }\r
+       \r
+       function canAddAlbum() {\r
+               global $NPG_CONF;\r
+               \r
+               if ($this->isAdmin()) return true;\r
+               \r
+               //depends on setting of $NPG_CONF['add_album']\r
+               if ($NPG_CONF['add_album'] == 'guest' ) return true;\r
+               if ($NPG_CONF['add_album'] == 'member' && $this->isloggedin() ) return true;\r
+               if ($NPG_CONF['add_album'] == 'select') {\r
+                       $result = mysql_query('select addalbum from '.sql_table('plug_gallery_member').' where memberid='.intval($this->getID()) );\r
+                       if(!$result) return false;\r
+                       $row = mysql_fetch_assoc($result);\r
+                       if($row['addalbum']) return true;\r
+               }\r
+               \r
+               //the default:\r
+               return false;\r
+       \r
+       }\r
+       function canAddPicture($albumid=0) {\r
+               \r
+               //super-admin\r
+               if ($this->isAdmin()) return true;\r
+               \r
+               //if no album specified (ie albumid = 0), then look if user is member or owner of any albums\r
+               if(!$albumid) {\r
+                       $aa = $this->getAllowedAlbums();\r
+                       if($aa) return true; else return false;\r
+               }\r
+               \r
+               //album owner or guest/public album\r
+               $result = mysql_query('select ownerid from '.sql_table('plug_gallery_album').' where albumid='.intval($albumid));\r
+               if(!$result) return false;\r
+               $row = mysql_fetch_assoc($result);\r
+               if($row['ownerid'] == $this->getID() || $row['ownerid']==0) return true;\r
+               \r
+               //album team member\r
+               $result = mysql_query('select tmemberid from '.sql_table('plug_gallery_album_team').' where talbumid='.intval($albumid));\r
+               if(!$result) return false;\r
+               while($row = mysql_fetch_assoc($result)) {\r
+                       if($this->getID() == $row['tmemberid']) return true;\r
+               }\r
+               \r
+       }\r
+       function canModifyAlbum($albumid) {\r
+               \r
+               //super-admin\r
+               if ($this->isAdmin()) return true;\r
+               \r
+               //album owner except for public/guest albums -- only admin can modify those\r
+               $result = mysql_query('select ownerid from '.sql_table('plug_gallery_album').' where albumid <> 0 and albumid='.intval($albumid));\r
+               if(!$result) return false;\r
+               $row = mysql_fetch_assoc($result);\r
+               if($row['ownerid'] == $this->getID()) return true;\r
+               \r
+               //album admin (from team)\r
+               $result = mysql_query('select tmemberid, tadmin from '.sql_table('plug_gallery_album_team').' where talbumid='.intval($albumid));\r
+               if(!$result) return false;\r
+               while($row = mysql_fetch_assoc($result)) {\r
+                       if($this->getID() == $row['tmemberid'] || $row['tadmin']) return true;\r
+               }\r
+       \r
+       }\r
+       function canModifyPicture($pictureid) {\r
+               \r
+               //super-admin\r
+               if ($this->isAdmin()) return true;\r
+               \r
+               //picture owner\r
+               $result = mysql_query('select ownerid from '.sql_table('plug_gallery_picture').' where pictureid='.intval($pictureid));\r
+               if(!$result) return false;\r
+               $row = mysql_fetch_assoc($result);\r
+               if($row['ownerid'] == $this->getID()) return true;\r
+               \r
+               //album owner, but not guest\r
+               $result = mysql_query('select a.ownerid from '.sql_table('plug_gallery_album').' as a, '.sql_table('plug_gallery_picture').' as p where a.albumid=p.albumid and p.pictureid='.intval($pictureid));\r
+               if(!$result) return false;\r
+               $row = mysql_fetch_assoc($result);\r
+               if($row['ownerid'] == $this->getID() && $this->getID() <> 0) return true;\r
+               \r
+               //album admin (from team)\r
+               \r
+       }\r
+       \r
+       function canModifyComment($commentid) {\r
+               \r
+               //super-admin\r
+               if ($this->isAdmin()) {\r
+                       $result = sql_query('select cmemberid from '. sql_table('plug_gallery_comment'). ' where commentid = '.intval($commentid));\r
+                       if (mysql_num_rows($result)) return true; else return false;\r
+               }\r
+               \r
+               //comment ovnwer\r
+               $result = sql_query('select cmemberid from '. sql_table('plug_gallery_comment'). ' where commentid = '.intval($commentid));\r
+               $row = mysql_fetch_assoc($result);\r
+               if($row['cmemberid'] == $this->getID()) return true;\r
+               \r
+       }\r
+       \r
+       function getAllowedAlbums() {\r
+               $allowed_albums = array();\r
+\r
+               $memberid = intval($this->getID());\r
+               if(!$memberid) $memberid=0; //guest\r
+\r
+               if($this->isadmin()) {\r
+                       $query = "select *, title as albumname from ".sql_table('plug_gallery_album')\r
+                                       .' left join '.sql_table('member').' on ownerid=mnumber';\r
+               } else {\r
+                       $query = "select *, title as albumname from ".sql_table('plug_gallery_album')\r
+                                       .' left join '.sql_table('plug_gallery_album_team').' on albumid=talbumid'\r
+                                       .' left join '.sql_table('member').' on ownerid=mnumber'\r
+                                       ." where tmemberid=$memberid or ownerid=$memberid or ownerid=0";\r
+               }\r
+                                       \r
+               $result = mysql_query($query);\r
+               if(!$result) echo mysql_error().'<br/>';\r
+               if(@ !mysql_num_rows($result)) return false; \r
+               while ($row = mysql_fetch_object($result)) {\r
+                       if($row->mnumber==0) $row->mname='guest';\r
+                       array_push($allowed_albums, $row);\r
+               }\r
+               \r
+               return $allowed_albums;\r
+       }\r
+       function getAllowedAlbumsids() {\r
+               $allowed_albums = array();\r
+\r
+               $memberid = intval($this->getID());\r
+               if(!$memberid) $memberid=0; //guest\r
+\r
+               if($this->isadmin()) {\r
+                       $query = "select *, title as albumname from ".sql_table('plug_gallery_album')\r
+                                       .' left join '.sql_table('member').' on ownerid=mnumber';\r
+               } else {\r
+                       $query = "select *, title as albumname from ".sql_table('plug_gallery_album')\r
+                                       .' left join '.sql_table('plug_gallery_album_team').' on albumid=talbumid'\r
+                                       .' left join '.sql_table('member').' on ownerid=mnumber'\r
+                                       ." where tmemberid=$memberid or ownerid=$memberid or ownerid=0";\r
+               }\r
+                                       \r
+               $result = mysql_query($query);\r
+               if(!$result) echo mysql_error().'<br/>';\r
+               if(@ !mysql_num_rows($result)) return false; \r
+               while ($row = mysql_fetch_object($result)) {\r
+                       if($row->mnumber==0) $row->mname='guest';\r
+                       array_push($allowed_albums, $row->albumid);\r
+                       \r
+               }\r
+               \r
+               return $allowed_albums;\r
+       }\r
+       \r
+}\r
+?>\r
diff --git a/NP_gallery/tags/v0.95/gallery/picture_class.php b/NP_gallery/tags/v0.95/gallery/picture_class.php
new file mode 100644 (file)
index 0000000..2ce2393
--- /dev/null
@@ -0,0 +1,811 @@
+<?php\r
+\r
+\r
+class PICTURE {\r
+       var $id;\r
+       var $title;\r
+       var $description;\r
+       var $ownerid;\r
+       var $modified;\r
+       var $albumid;\r
+       var $filename;\r
+       var $int_filename;\r
+       var $thumb_filename;\r
+       var $views;\r
+       var $keywords;\r
+       \r
+       var $next;\r
+       var $previous;\r
+       \r
+       var $template;\r
+       var $query;\r
+       var $albumtitle;\r
+       var $previousthumbfilename;\r
+       var $nextthumbfilename;\r
+\r
+       function PICTURE($id) {\r
+               global $member;\r
+               \r
+               if($id) {\r
+                       $data = $this->get_data($id);\r
+       \r
+                       $this->id = $data->pictureid;\r
+                       $this->title = $data->title;\r
+                       $this->description = $data->description;\r
+                       $this->ownerid = $data->ownerid;\r
+                       $this->ownername = $data->mname;\r
+                       $this->modified = $data->modified;\r
+                       $this->albumid = $data->albumid;\r
+                       $this->filename = $data->filename;\r
+                       $this->int_filename = $data->int_filename;\r
+                       $this->thumb_filename = $data->thumb_filename;\r
+                       $this->views = $data->views;\r
+                       $this->albumtitle = $data->albumtitle;\r
+                       $this->keywords = $data->keywords;\r
+               }\r
+               else {\r
+                       $this->id = 0;\r
+                       $this->ownerid = $member->getID();\r
+               }\r
+       }\r
+       \r
+       function settemplate($template) {\r
+               $this->template = & $template;\r
+       }\r
+       \r
+       function write() {\r
+               //not present so add new to database\r
+               if(!$this->id) { \r
+                       $this->title = stripslashes($this->title);\r
+                       $this->title = addslashes($this->title);\r
+                       $this->description = stripslashes($this->description);\r
+                       $this->description = addslashes($this->description);\r
+                       sql_query("insert into ".sql_table('plug_gallery_picture')\r
+                               ." values (NULL, '{$this->title}' , '{$this->description}' , ".intval($this->ownerid)." , "\r
+                               ."NULL , ".intval($this->albumid)." , '".addslashes($this->filename)."' , '".addslashes($this->int_filename)."' , '".addslashes($this->thumb_filename)."', '".addslashes($this->keywords)."' )" );\r
+                               \r
+                       //picture id of most recently added -- could be referenced by calling fuction (or PICTURE->getID()\r
+                       $this->id = mysql_insert_id(); \r
+                               \r
+                       //increment album number of images -- consider rewrite as an album method that actually counts number of images?\r
+                       sql_query("update ".sql_table('plug_gallery_album')." set numberofimages = numberofimages + 1 where albumid = ".intval($this->albumid));\r
+               } \r
+               //present, so just update values\r
+               else {  \r
+                       $this->title = stripslashes($this->title);\r
+                       $this->title = addslashes($this->title);\r
+                       $this->description = stripslashes($this->description);\r
+                       $this->description = addslashes($this->description);\r
+                       sql_query("update ".sql_table('plug_gallery_picture')\r
+                               ." set title='".$this->title."', "\r
+                               ."description='".$this->description."', " \r
+                               ."keywords='".addslashes($this->keywords)."',"\r
+                               ."albumid=".intval($this->albumid)." "\r
+                               ."where pictureid=".intval($this->id) );\r
+               }\r
+               \r
+       }\r
+       \r
+       function get_data($id) {\r
+               $result = sql_query("select a.*, b.mname from ".sql_table('plug_gallery_picture').' as a left join '.sql_table('member')." as b on a.ownerid=b.mnumber where a.pictureid=".intval($id) );\r
+               if(mysql_num_rows($result)) {\r
+                       if(mysql_num_rows($result)){\r
+                               $data = mysql_fetch_object($result);\r
+                               if(!$data->mname) $data->mname = 'guest';\r
+                               \r
+                               //get number of views\r
+                               $res = sql_query('select views from '.sql_table('plug_gallery_views').' where vpictureid = '.intval($data->pictureid));\r
+                               if(mysql_num_rows($res)) {\r
+                                       $row = mysql_fetch_object($res);\r
+                                       $data->views = $row->views;\r
+                               }\r
+                               else $data->views = 0;\r
+                               \r
+                               //get albumtitle for breadcrumb\r
+                               $res = sql_query('select title from '.sql_table('plug_gallery_album').' where albumid='.intval($data->albumid));\r
+                               if(mysql_num_rows($res)) {\r
+                                       $row = mysql_fetch_object($res);\r
+                                       $data->albumtitle = $row->title;\r
+                                       }\r
+                               else $data->albumtitle = 'No Album Title';\r
+                       }\r
+                       else $data->pictureid = 0;\r
+               }\r
+               //else die('mysql error in picture::getdata -- '.mysql_error());\r
+                       \r
+               return $data;\r
+       }\r
+       \r
+       \r
+       function add_new($albumid, $filename, $title, $description, $intfilename, $thumbfilename,$keywords) {\r
+\r
+               global $NPG_CONF, $gmember;\r
+\r
+               //need to validate data -- if okay, then add, if not delete files and display error\r
+               if(!$albumid) die('Error: albumid is blank');\r
+               \r
+               //put picture data into database\r
+               $this->title = $title;\r
+               $this->filename = $filename;\r
+               $this->int_filename = $intfilename;\r
+               $this->thumb_filename = $thumbfilename;\r
+               $this->keywords = $keywords;\r
+               $this->description = $description;\r
+               $this->ownerid = $gmember->getID();\r
+               $this->albumid = $albumid;\r
+               $this->id = 0; //this will be changed by the write method to the id of the picture\r
+               \r
+               $this->write(); \r
+               \r
+               //return id of picture added -- set during $this->write() method to the id of the picture just added.\r
+               return $this->id;\r
+\r
+       }\r
+\r
+       function setTitle($title) {$this->title = $title;}\r
+       function setDescription($description) {$this->description = $description;}\r
+       function setAlbumID($id) { if($id) $this->albumid = $id;}\r
+       function setalbumtitle($title) {$this->albumtitle = $title;}\r
+       function setkeywords($keywords){$this->keywords = $keywords;}\r
+\r
+       function setqueryold($query ='') {\r
+               $pid = requestVar('id');\r
+               global $manager;\r
+               $defaultorder = $NPG_CONF['defaultorder'];\r
+               $sorting = array('title'=>'title',\r
+                                               'desc'=>'description',\r
+                                               'owner'=>'ownername',\r
+                                               'date'=>'modified',\r
+                                               'titlea'=>'title',\r
+                                               'desca'=>'description',\r
+                                               'ownera'=>'ownername',\r
+                                               'datea'=>'modified',\r
+                                               'filenamea'=>'filename',\r
+                                               'filename'=>'filename');\r
+               $sortingascdesc = array('title'=>'ASC',\r
+                                               'desc'=>'ASC',\r
+                                               'owner'=>'ASC',\r
+                                               'date'=>'DESC',\r
+                                               'titlea'=>'DESC',\r
+                                               'desca'=>'DESC',\r
+                                               'ownera'=>'DESC',\r
+                                               'datea'=>'ASC',\r
+                                               'filenamea'=>'ASC',\r
+                                               'filename'=>'DESC');\r
+               if ($sortingascdesc[$sort]=='ASC'){$oppositeorder = 'DESC';}\r
+               if ($sortingascdesc[$sort]=='DESC'){$oppositeorder = 'ASC';};\r
+               $sort = requestVar('sort');\r
+               if($sort){\r
+                       $so = 'order by '.$sorting[$sort].', pictureid DESC';\r
+               }\r
+               else {\r
+                       $so = 'order by '.$sorting[$defaultorder].', pictureid DESC';\r
+               }\r
+               if(!$query) $this->query = 'select pictureid, thumb_filename from '.sql_table('plug_gallery_picture').' where albumid='.intval($this->albumid).$so;\r
+               else $this->query = $query;\r
+               \r
+               //sql_query('create temporary table temptableview (tempid int unsigned not null auto_increment primary key) '.$this->query);\r
+               \r
+               //$result = sql_query('select tempid from temptableview where pictureid='.intval($this->id));\r
+               //$tid = mysql_fetch_object($result);\r
+               \r
+               \r
+               \r
+               \r
+               //next thumb\r
+               $query = 'select pictureid, thumb_filename from '.sql_table('plug_gallery_picture').' where pictureid > '.intval($pid).' '.$so.' '.$sortingascdesc[$sort].' and albumid = '.intval($this->albumid).' limit 0,1';\r
+               echo $query;\r
+               $result = sql_query($query);\r
+               if(!mysql_num_rows($result)) \r
+                       $this->next = 0;\r
+               else {\r
+                       $row = mysql_fetch_object($result);\r
+                       $this->nextthumbfilename = $row->thumb_filename;\r
+                       $this->nextid = $row->pictureid;\r
+                       }\r
+               //previous thumb\r
+               $result = sql_query('select pictureid, thumb_filename from '.sql_table('plug_gallery_picture').' where pictureid < '.intval($pid).' '.$so.' '.$oppositeorder.' and albumid = '.intval($albumid).' limit 0,1');\r
+               if(!mysql_num_rows($result)) \r
+                       $this->previous = 0;\r
+               else {\r
+                       $row = mysql_fetch_object($result);\r
+                       $this->previousthumbfilename = $row->thumb_filename;\r
+                       $this->previousid = $row->pictureid;\r
+                       }\r
+                               \r
+       }\r
+       \r
+       function setquery($query ='') {\r
+               global $manager,$NPG_CONF;\r
+               $defaultorder = $NPG_CONF['defaultorder'];\r
+               $sort = requestVar('sort');\r
+               if (!$sort){$sort = $defaultorder;}\r
+               $sorting = array('title'=>'title',\r
+                                               'desc'=>'description',\r
+                                               'owner'=>'ownername',\r
+                                               'date'=>'modified',\r
+                                               'titlea'=>'title',\r
+                                               'desca'=>'description',\r
+                                               'ownera'=>'ownername',\r
+                                               'datea'=>'modified',\r
+                                               'filenamea'=>'filename',\r
+                                               'filename'=>'filename');\r
+               $order = array('title'=>' ASC',\r
+                                               'desc'=>' ASC',\r
+                                               'owner'=>' ASC',\r
+                                               'date'=>' DESC',\r
+                                               'titlea'=>' DESC',\r
+                                               'desca'=>' DESC',\r
+                                               'ownera'=>' DESC',\r
+                                               'datea'=>' ASC',\r
+                                               'filenamea'=>' ASC',\r
+                                               'filename'=>' DESC');\r
+               if ($order[$sort]==' ASC'){$oppositeorder = ' DESC';}\r
+               if ($order[$sort]==' DESC'){$oppositeorder = ' ASC';};\r
+               \r
+               //if someone can figure out a better way of doing this, please do it!\r
+               \r
+               //getting forward offset\r
+               $query = 'select pictureid, thumb_filename from '.sql_table('plug_gallery_picture').' where albumid = '.intval($this->albumid).' order by '.$sorting[$sort].$order[$sort];\r
+               $result = sql_query($query);\r
+               $i=0;\r
+               while ($row = mysql_fetch_object($result)){\r
+                       $i = $i + 1;\r
+                       if($row->pictureid==$this->id){$offset = $i;}\r
+                       \r
+               }\r
+               //next thumb    \r
+\r
+               $query = 'select pictureid, thumb_filename from '.sql_table('plug_gallery_picture').' where albumid = '.intval($this->albumid).' order by '.$sorting[$sort].$order[$sort].' limit '.intval($offset).',1';\r
+               $result = sql_query($query);\r
+               \r
+               //echo $query;\r
+               if(!mysql_num_rows($result)) \r
+                       $this->next = 0;\r
+               else {\r
+                       $row = mysql_fetch_object($result);\r
+                       $this->nextthumbfilename = $row->thumb_filename;\r
+                       $this->nextid = $row->pictureid;\r
+                       }\r
+               //getting backwards offset\r
+               $query = 'select pictureid, thumb_filename from '.sql_table('plug_gallery_picture').' where albumid = '.intval($this->albumid).' order by '.$sorting[$sort].$oppositeorder;\r
+               $result = sql_query($query);\r
+               $i=0;\r
+               while ($row = mysql_fetch_object($result)){\r
+                       $i = $i + 1;\r
+                       if($row->pictureid==$this->id){$offset = $i;}\r
+                       \r
+               }\r
+               \r
+               //previous thumb\r
+               $query = 'select pictureid, thumb_filename from '.sql_table('plug_gallery_picture').' where albumid = '.intval($this->albumid).' order by '.$sorting[$sort].$oppositeorder.' limit '.intval($offset).',1';\r
+               //echo $query;\r
+               $result = sql_query($query);\r
+               if(!mysql_num_rows($result)) \r
+                       $this->previous = 0;\r
+               else {\r
+                       $row = mysql_fetch_object($result);\r
+                       $this->previousthumbfilename = $row->thumb_filename;\r
+                       $this->previousid = $row->pictureid;\r
+                       }\r
+                               \r
+       }\r
+\r
+       function getTitle() {return $this->title;}\r
+       function getDescription() {return $this->description;}\r
+       function getAlbumId() {return $this->albumid;}\r
+       function getOwnerName() { return $this->ownername;}\r
+\r
+       function getOwnerId() {return $this->ownerid;}\r
+       function getLastModified() {return $this->modified;}\r
+       function getID() {return $this->id;}\r
+       function getFilename() {return $this->filename; }\r
+       function getIntFilename() {return $this->int_filename; }\r
+       function getThumbFilename() {return $this->thumb_filename; }\r
+       function getViews() {return $this->views; }\r
+       function getAlbumTitle() {return $this->albumtitle;}\r
+       function getpreviousid() {      return $this->previousid;       }\r
+       function getnextid() {return $this->nextid;     }\r
+       function getpreviousthumbfilename() {return $this->previousthumbfilename;}\r
+       function getnextthumbfilename() {return $this->nextthumbfilename;}\r
+       function getsets() {return $this->keywords;}\r
+       \r
+       function delete($id) {\r
+               global $NP_BASE_DIR;\r
+               \r
+               if(!$id) {\r
+                       $returnval['status'] = 'error';\r
+                       $returnval['message'] = 'ID is null in PICTURE::delete';\r
+                       return $returnval;\r
+               }\r
+               $query = 'select * from '.sql_table('plug_gallery_picture').' where pictureid='.intval($id);\r
+               $result = mysql_query($query);\r
+               if(!$result) {\r
+                       $returnval['status'] = 'error';\r
+                       $returnval['message'] = mysql_error().':'.$query; \r
+                       return $returnval;\r
+               } else {\r
+                       if(!mysql_num_rows($result)) {\r
+                               $returnval['status'] = 'error';\r
+                               $returnval['message'] = 'Picture not deleted because it was not found in database';\r
+                               return $returnval;\r
+                       }\r
+                       else {\r
+                               $row = mysql_fetch_object($result);\r
+                               if(@ !unlink($NP_BASE_DIR.$row->filename)) echo 'file: '.$row->filename.' could not be deleted<br/>';\r
+                               if(@ !unlink($NP_BASE_DIR.$row->int_filename)) echo 'file: '.$row->int_filename.' could not be deleted<br/>';\r
+                               if(@ !unlink($NP_BASE_DIR.$row->thumb_filename)) echo 'file: '.$row->thumb_filename.' could not be deleted<br/>';\r
+                               $query = 'delete from '.sql_table('plug_gallery_picture').' where pictureid='.intval($row->pictureid);\r
+                               $result2 = mysql_query($query);\r
+                               if(!$result2) {\r
+                                       $returnval['status'] = 'error';\r
+                                       $returnval['message'] = mysql_error();\r
+                                       return $returnval;\r
+                               }\r
+                               ALBUM::decreaseNumberByOne($row->albumid);\r
+                               $returnval['status'] = 'success';\r
+                               $returnval['albumid'] = $row->albumid;\r
+                               return $returnval;\r
+                       }\r
+               }\r
+       }\r
+       \r
+       function deletepromoposts($id) {\r
+               global $manager;\r
+               \r
+               $manager->loadClass('ITEM');\r
+               \r
+               $query = 'select * from '.sql_table('plug_gallery_promo').' where ppictureid='.intval($id);\r
+               $result = mysql_query($query);\r
+               if(!$result) {\r
+                       $returnval['status'] = 'error';\r
+                       $returnval['message'] = mysql_error().':$query'; \r
+                       return $returnval;\r
+               }\r
+               else {\r
+                       if(!mysql_num_rows($result)) {\r
+                               $returnval['status'] = 'error';\r
+                               $returnval['message'] = 'No promo posts associated with this picture';\r
+                               return $returnval;\r
+                       }\r
+                       else {\r
+                               while ($row = mysql_fetch_object($result) ){\r
+                                       ITEM::delete($row->pblogitemid);\r
+                               }\r
+                               sql_query('delete from '.sql_table('plug_gallery_promo').' where ppictureid='.intval($id));\r
+                               $returnval['status'] = 'success';\r
+                               return $returnval;\r
+                       }\r
+               }\r
+       }\r
+       function tagaccept($left,$top,$width,$height,$text){\r
+                               sql_query("INSERT INTO ".sql_table('plug_gallery_picturetag')." ( `pictureid` , `top` , `left` , `height` , `width` , `text` )\r
+                               VALUES ( '" . addslashes($this->id) ." ', '" .addslashes($top)."', '" .addslashes($left)." ' , '" .addslashes($height)."' , '" .addslashes($width)."' , '" .addslashes($text)."' ); ");\r
+                               echo "<SCRIPT LANGUAGE=\"JavaScript\">\r
+                               window.location=\"" . $NP_BASE_DIR  . "action.php?action=plugin&name=gallery&type=item&id=". $this->id . "\"" .\r
+                               "</script>";\r
+                       }\r
+       \r
+       function tagdelete(){\r
+                               sql_query("DELETE FROM ".sql_table('plug_gallery_picturetag'). " WHERE `pictureid` = '" . intval($this->id)  . "' LIMIT 1; ");\r
+                               echo "<SCRIPT LANGUAGE=\"JavaScript\">\r
+                               window.location=\"" . $NP_BASE_DIR  . "action.php?action=plugin&name=gallery&type=item&id=". $this->id . " \"" .\r
+                               "</script>";\r
+                       }\r
+       \r
+\r
+       \r
+       function display($startstop,$sliderunning) {\r
+               global $NPG_CONF,$manager;\r
+               \r
+               if(!$this->template) {\r
+                       if(!$NPG_CONF['template']) $NPG_CONF['template'] = 1;\r
+                       $this->template = & new NPG_TEMPLATE($NPG_CONF['template']);\r
+               }\r
+               \r
+               if(!$this->query ) $this->setquery();\r
+               \r
+               $template_header = $this->template->section['ITEM_HEADER'];\r
+               $template_SLIDESHOWC = $this->template->section['ITEM_SLIDESHOWC'];\r
+               $template_SLIDESHOWT = $this->template->section['ITEM_SLIDESHOWT'];\r
+               $template_body = $this->template->section['ITEM_BODY'];\r
+               $template_footer = $this->template->section['ITEM_FOOTER'];\r
+               $template_TOOLTIPSHEADER = $this->template->section['ITEM_TOOLTIPSHEADER'];\r
+               $template_TOOLTIPSFOOTER = $this->template->section['ITEM_TOOLTIPSFOOTER'];\r
+               $template_NEXTPREVTHUMBS = $this->template->section['ITEM_NEXTPREVTHUMBS'];     \r
+               \r
+               if(!$this->getID() ) echo 'Nothing to display';\r
+               //echo $sliderunning;\r
+               \r
+               //if the slideshow start/stop button was pressed, check if the slideshow if running\r
+               //if its running, stop it, if its not running, start it\r
+               if (!$sliderunning){$sliderunning='false';}\r
+               if ($startstop=='true'){\r
+                       //echo 'startstop='.$startstop;\r
+                       if ($sliderunning=='false') $sliderunning= 'true'; //echo 'sliderunning='.$sliderunning;\r
+                       else $sliderunning= 'false';\r
+                       }\r
+               //if the slideshow was running, let it continue\r
+               if($sliderunning=='true'){\r
+                       //echo 'sliderunning='.$sliderunning;\r
+                       $actions = new PICTURE_ACTIONS($this);\r
+                       $parser = new PARSER($actions->getDefinedActions(), $actions);\r
+                       $actions->setparser($parser);\r
+                       $manager->notify('NPgPrePicture',array('picture',&$this));\r
+                       $this->_views();\r
+                       $template_SLIDESHOWC = $this->template->section['ITEM_SLIDESHOWC'];\r
+                       $template_SLIDESHOWT = $this->template->section['ITEM_SLIDESHOWT'];\r
+                       $parser->parse($template_SLIDESHOWC);\r
+                       $parser->parse($template_SLIDESHOWT);\r
+               }\r
+               // if the slideshow wasnt running, do the normal thing.\r
+               if($sliderunning=='false'){ \r
+                       //echo 'sliderunning1'.$sliderunning;\r
+                       $actions = new PICTURE_ACTIONS($this);\r
+                       $parser = new PARSER($actions->getDefinedActions(), $actions);\r
+                       $actions->setparser($parser);\r
+                       $manager->notify('NPgPrePicture',array('picture',&$this));\r
+                       $this->_views();\r
+                       $parser->parse($template_TOOLTIPSHEADER);\r
+                       $parser->parse($template_SLIDESHOWC);\r
+                       $parser->parse($template_header);\r
+                       $parser->parse($template_body);\r
+                       $parser->parse($template_TOOLTIPSFOOTER);\r
+                       $parser->parse($template_NEXTPREVTHUMBS);\r
+                       $parser->parse($template_footer);\r
+                       }\r
+       }\r
+       \r
+       function _views() {\r
+               global $NPG_CONF;\r
+               \r
+               $remoteip = ServerVar('REMOTE_ADDR');\r
+               $pictureid = $this->getID();\r
+               $curtime = time();\r
+               if(!$NPG_CONF['viewtime']) $NPG_CONF['viewtime'] = 30 ;\r
+               $cuttime = $NPG_CONF['viewtime'];\r
+               //first test for duplicates\r
+               $query = 'select * from '.sql_table('plug_gallery_views')." where vpictureid = ".intval($pictureid);\r
+               //$result = mysql_query($query);\r
+               //print_r($result);\r
+               //$numrows= mysql_num_rows($result);\r
+               //echo $numrows;\r
+               if(@mysql_num_rows($result)>1){\r
+                       //if theres more than one\r
+                       $query= 'DELETE FROM '.sql_table('plug_gallery_views').' WHERE vpictureid = '.intval($pictureid).' ORDER BY views LIMIT 1' ;\r
+                       mysql_query($query);\r
+                       }\r
+               \r
+               $query = 'select time from '.sql_table('plug_gallery_views_log')." where ip = '".addslashes($remoteip)."' and vlpictureid = ".intval($pictureid);\r
+      $result = sql_query($query);\r
+      if(mysql_num_rows($result)) {\r
+         $row = mysql_fetch_object($result);\r
+         $query2 = 'update '.sql_table('plug_gallery_views_log')." set time = NOW() where ip = '".addslashes($remoteip)."' and vlpictureid = ".intval($pictureid);\r
+         $result2 = sql_query($query2);\r
+         if( ($curtime - (intval($NPG_CONF['viewtime']) * 60) ) > converttimestamp($row->time) ) {\r
+            $query3 = 'select * from '.sql_table('plug_gallery_views')." where vpictureid = ".intval($pictureid);\r
+            $result3 = mysql_query($query3);\r
+            if(mysql_num_rows($result3))\r
+               sql_query('update '.sql_table('plug_gallery_views')." set views = views + 1 where vpictureid = ".intval($pictureid));\r
+            else sql_query('insert into '.sql_table('plug_gallery_views')." (vpictureid, views) values (".intval($pictureid).", 1)");\r
+         }\r
+      } else {\r
+         $query3 = 'select * from '.sql_table('plug_gallery_views')." where vpictureid = ".intval($pictureid);\r
+         $result3 = mysql_query($query3);\r
+         if(mysql_num_rows($result3))\r
+            sql_query('update '.sql_table('plug_gallery_views')." set views = views + 1 where vpictureid = ".intval($pictureid));\r
+         else sql_query('insert into '.sql_table('plug_gallery_views')." (vpictureid, views) values (".intval($pictureid).", 1)");\r
+         sql_query('insert into '.sql_table('plug_gallery_views_log')." (vlpictureid, ip, time) values (".intval($pictureid).", '".addslashes($remoteip)."', NULL)");\r
+      } \r
+               \r
+       }\r
+}\r
+\r
+class PICTURE_ACTIONS extends BaseActions {\r
+       var $parser;\r
+       var $CurrentPicture;\r
+       var $knownactions;\r
+       \r
+               \r
+       function PICTURE_ACTIONS(& $currentpic) {\r
+               $this->BaseActions();\r
+               $this->CurrentPicture = & $currentpic;\r
+               $this->knownactions = array( 'addcomment','editPicture','deletePicture','item','album' );\r
+       }\r
+       \r
+       function getdefinedActions() {\r
+               return array(\r
+                       'breadcrumb',\r
+                       'albumlink',\r
+                       'albumtitle',\r
+                       'description',\r
+                       'fullsizelink',\r
+                       'intermediatepicture',\r
+                       'title',\r
+                       'height',\r
+                       'width',\r
+                       'owner',\r
+                       'date',\r
+                       'editpicturelink',\r
+                       'deletepicturelink',\r
+                       'nextlink',\r
+                       'previouslink',\r
+                       'nextthumbfilename',\r
+                       'previousthumbfilename',\r
+                       'comments',\r
+                       'commentform',\r
+                       'if',\r
+                       'else',\r
+                       'endif',\r
+                       'tooltip',\r
+                       'nextid',\r
+                       'previousid',\r
+                       'pictureid',\r
+                       'sitevar',\r
+                       'intvalsecs',\r
+                       'keywords' );\r
+       }\r
+       \r
+       function setParser(&$parser) {$this->parser =& $parser; }\r
+       function settemplate(&$template) {$this->template = & $template; }\r
+       \r
+       function parse_breadcrumb($sep = '>') {\r
+               //echo getBreadcrumb('item', $this->CurrentPicture->getID()); \r
+               echo '<a href="';\r
+               echo generateLink('list');\r
+               echo '">'.__NPG_BREADCRUMB_GALLERY.'</a> '.$sep.' ';\r
+               echo '<a href="';\r
+               $this->parse_albumlink();\r
+               echo '">';\r
+               $this->parse_albumtitle();\r
+               echo '</a> '.$sep.' ';\r
+               $this->parse_title();\r
+               }\r
+               \r
+       function parse_title() {\r
+               echo $this->CurrentPicture->getTitle(); \r
+       }\r
+       \r
+       function parse_albumlink() {\r
+               $type = requestvar('type');\r
+               if(in_array($type,$this->knownactions)) {\r
+                       $extra['id'] = $this->CurrentPicture->getalbumid();\r
+                       $type = 'album';\r
+               }\r
+               else {\r
+                       $allowed = array('limit');\r
+                       foreach($_GET as $key => $value) if(in_array($key,$allowed)) $extra[$key] = $value;\r
+               }\r
+               echo NP_gallery::MakeLink($type,$extra);\r
+       }\r
+       \r
+       function parse_albumtitle() {\r
+               echo $this->CurrentPicture->getAlbumTitle(); \r
+       }\r
+       \r
+       function parse_description() {echo $this->CurrentPicture->getDescription(); }\r
+       function parse_fullsizelink() {\r
+               global $CONF;\r
+               echo $CONF['IndexURL'].$this->CurrentPicture->getFilename(); }\r
+       function parse_intermediatepicture() {\r
+               global $CONF;\r
+               echo $CONF['IndexURL'].$this->CurrentPicture->getIntFilename(); }\r
+       function parse_height($offset = 15) {\r
+               global $NP_BASE_DIR;\r
+               $image_size = getimagesize($NP_BASE_DIR.$this->CurrentPicture->getFilename());\r
+               echo ($image_size[1] + $offset);\r
+       }\r
+       function parse_width($offset = 15) {\r
+               global $NP_BASE_DIR;\r
+               $image_size = getimagesize($NP_BASE_DIR.$this->CurrentPicture->getFilename());\r
+               echo ($image_size[0] + $offset);\r
+       }\r
+       function parse_owner() { echo $this->CurrentPicture->getOwnerName(); }\r
+       function parse_date($format = 'l jS of F Y h:i:s A') { \r
+               $d = $this->CurrentPicture->getLastModified();\r
+               $d = converttimestamp($d);\r
+               $d = date($format,$d);\r
+               echo $d;\r
+       }\r
+       function parse_editpicturelink() { echo generateLink('editPictureF', $this->CurrentPicture->getID());}\r
+       function parse_deletepicturelink() {echo generateLink('deletePictureF', $this->CurrentPicture->getID());}\r
+       function parse_nextthumbfilename() {global $CONF;echo $CONF['IndexURL'].$this->CurrentPicture->getnextthumbfilename();}\r
+       function parse_previousthumbfilename() {global $CONF;echo $CONF['IndexURL'].$this->CurrentPicture->getpreviousthumbfilename();}\r
+       function parse_nextlink() { \r
+               $next = $this->CurrentPicture->getnextid();\r
+               \r
+               $type = requestvar('type');\r
+               if(in_array($type, $this->knownactions)) $type = 'item';\r
+               if(!$type) $type = 'item';\r
+               if($next) {\r
+                       $extra['id'] = $next;\r
+                       $allowed = array('limit');\r
+                       foreach($_GET as $key => $value) if(in_array($key,$allowed)) $extra[$key] = $value;\r
+                       echo NP_gallery::MakeLink($type,$extra);\r
+               }\r
+               else echo '#';\r
+       }\r
+       \r
+       function parse_previouslink() { \r
+               $prev = $this->CurrentPicture->getpreviousid();\r
+               \r
+               $type = requestvar('type');\r
+               if(!$type) $type = 'item';\r
+               if($prev) {\r
+                       $extra['id'] = $prev;\r
+                       $allowed = array('limit');\r
+                       foreach($_GET as $key => $value) if(in_array($key,$allowed)) $extra[$key] = $value;\r
+                       echo NP_gallery::MakeLink($type,$extra);\r
+                       //echo generateLink($type, $next);\r
+               }\r
+               else echo '#';\r
+       }\r
+       \r
+       function parse_tooltip() {\r
+                       //get picture tag infor\r
+                       $gid = requestVar('id');\r
+                       $res = sql_query('select * from '.sql_table('plug_gallery_picturetag').' where pictureid= '. intval($gid) .' ');\r
+                       $numrows = @mysql_num_rows($res);\r
+                       echo "<div id=\"tooltip2\">";\r
+                       for ($i=0 ; $i<$numrows;$i++) {\r
+                                       $row = mysql_fetch_array($res);\r
+                                       $data->top = $row[top];\r
+                                       $data->left = $row[left];\r
+                                       $data->height = $row[height];\r
+                                       $data->width = $row[width];\r
+                                       $data->text = $row[text];\r
+                                       echo "<div style=\"display:block;position:absolute;border-width:0px;float:left;z-index:5;width:0px;height:0px\">\r
+                                       <div class=\"tooltip2div\" style=\"display:block;position:relative;top:" .\r
+                                       $data->top . "px;left:" .\r
+                                       $data->left ."px;width:" .\r
+                                       $data->width ."px;height:" .\r
+                                       $data->height. "px\">" . \r
+                                       "<span style=\"position:relative;top:" .\r
+                                       $data->height . "px\"> " .\r
+                                       $data->text . "</span></div></div>";\r
+                       }\r
+                       echo "</div>";\r
+               }\r
+       function parse_pictureid() {\r
+               $pictureid = $this->CurrentPicture->getID();\r
+               echo $pictureid;\r
+               }\r
+               \r
+       function parse_intvalsecs() {\r
+               $intval = requestvar(intvalsecs);\r
+               echo $intval;\r
+               }\r
+               \r
+       function parse_nextid() {\r
+               $nextid = $this->CurrentPicture->getnextid();\r
+               echo $nextid ;\r
+               }\r
+               \r
+       function parse_previousid() {\r
+               $previousid = $this->CurrentPicture->getpreviousid();\r
+               echo $previousid;\r
+               }\r
+       function parse_keywords(){\r
+               $keywords = $this->CurrentPicture->getsets();\r
+               echo $keywords;\r
+               }\r
+       \r
+       function doForm($filename) {\r
+               global $DIR_NUCLEUS;\r
+               \r
+               array_push($this->parser->actions,'formdata','text','callback','errordiv','itemid');\r
+               $oldIncludeMode = PARSER::getProperty('IncludeMode');\r
+               $oldIncludePrefix = PARSER::getProperty('IncludePrefix');\r
+               PARSER::setProperty('IncludeMode','normal');\r
+               PARSER::setProperty('IncludePrefix','');\r
+               $this->parse_parsedinclude($DIR_NUCLEUS . 'forms/' . $filename . '.template');\r
+               PARSER::setProperty('IncludeMode',$oldIncludeMode);\r
+               PARSER::setProperty('IncludePrefix',$oldIncludePrefix);\r
+               array_pop($this->parser->actions);              // itemid\r
+               array_pop($this->parser->actions);              // errordiv\r
+               array_pop($this->parser->actions);              // callback\r
+               array_pop($this->parser->actions);              // text\r
+               array_pop($this->parser->actions);              // formdata\r
+       }\r
+       \r
+       \r
+       function parse_comments() {\r
+               global $NPG_CONF;\r
+               \r
+               $comments =& new NPG_COMMENTS($this->CurrentPicture->getID());\r
+               //$comments->setItemActions($actions);\r
+               $comments->showComments($this->CurrentPicture->template, -1, 1);        // shows ALL comments\r
+       }\r
+       \r
+       \r
+       function parse_commentform($destinationurl = '') {\r
+               global $member, $CONF, $DIR_LIBS, $errormessage;\r
+               \r
+               \r
+               $actionurl = $CONF['ActionURL'];\r
+               \r
+               //$destinationurl = '?action=plugin&name=gallery&type=addcomment';\r
+               \r
+               // values to prefill\r
+               $user = cookieVar($CONF['CookiePrefix'] .'comment_user');\r
+               if (!$user) $user = postVar('user');\r
+               $userid = cookieVar($CONF['CookiePrefix'] .'comment_userid');\r
+               if (!$userid) $userid = postVar('userid');\r
+               $body = postVar('body');\r
+               \r
+               $this->formdata = array(\r
+                       'destinationurl' => htmlspecialchars($destinationurl),\r
+                       'actionurl' => htmlspecialchars($actionurl),\r
+                       'itemid' => $this->CurrentPicture->getID(),\r
+                       'user' => htmlspecialchars($user),\r
+                       'userid' => htmlspecialchars($userid),\r
+                       'body' => '',\r
+                       'membername' => $member->getDisplayName(),\r
+                       'rememberchecked' => cookieVar($CONF['CookiePrefix'] .'comment_user')?'checked="checked"':''\r
+               );\r
+               \r
+               if (!$member->isLoggedIn()) {\r
+                       $this->doForm('../plugins/gallery/include/commentform-notloggedin');\r
+               } else {\r
+                       $this->doForm('../plugins/gallery/include/commentform-loggedin');               \r
+               }\r
+       }\r
+       \r
+       function parse_callback($eventName, $type) {\r
+               global $manager;\r
+               $manager->notify($eventName, array('type' => $type));\r
+       }\r
+       \r
+       function parse_errordiv() {}\r
+       function parse_text($which) {\r
+\r
+               if (defined($which)) {     \r
+                       eval("echo $which;");\r
+               } else {\r
+                       echo $which;\r
+               }\r
+               \r
+       }\r
+       \r
+       function parse_itemid() {echo $this->CurrentPicture->getID();}\r
+       \r
+       function parse_formdata($what) {\r
+               echo $this->formdata[$what];\r
+       }\r
+       \r
+       function parse_if($field, $name = '', $value = '') {\r
+               global $gmember,$NPG_CONF;\r
+               \r
+               $condition = 0;\r
+               switch($field) {\r
+                       case 'caneditpicture':\r
+                               $condition = $gmember->canModifyPicture($this->CurrentPicture->getID() );\r
+                               break;\r
+                       case 'commentsallowed':\r
+                               $condition = ALBUM::commentsallowed($this->CurrentPicture->getID());\r
+                               break;\r
+                       case 'next':\r
+                               $condition = $this->CurrentPicture->getnextid();\r
+                               break;\r
+                       case 'prev':\r
+                               $condition = $this->CurrentPicture->getpreviousid();\r
+                               break;\r
+                       case 'tooltips':\r
+                               $tooltips = $NPG_CONF['tooltips'];\r
+                               if ($tooltips == 'yes'){$condition = 1;}\r
+                               break;\r
+                       case 'nextprevthumb' :\r
+                               $nextprevthumb = $NPG_CONF['nextprevthumb'];\r
+                               if ($nextprevthumb == 'yes'){$condition = 1;}\r
+                       case 'slideshowson' :\r
+                               $slideshowson = $NPG_CONF['slideshowson'];\r
+                               if ($slideshowson == 'yes'){$condition = 1;}\r
+                       default:\r
+                               break;\r
+               }\r
+               \r
+               $this->_addIfCondition($condition);\r
+       }\r
+\r
+}\r
+?>\r
diff --git a/NP_gallery/tags/v0.95/gallery/template.php b/NP_gallery/tags/v0.95/gallery/template.php
new file mode 100644 (file)
index 0000000..f852b3d
--- /dev/null
@@ -0,0 +1,95 @@
+<?php\r
+\r
+class NPG_TEMPLATE {\r
+\r
+       var $id;\r
+       var $section;\r
+       var $name;\r
+       var $description;\r
+       \r
+       function NPG_TEMPLATE($templateid) {\r
+               $this->id = $templateid;\r
+               $this->section = array();\r
+               if($this->existsID($this->id)) {\r
+                       $this->readall();\r
+                       $query = 'select * from '.sql_table('plug_gallery_template_desc').' where tdid='.intval($this->id);\r
+                       $res = sql_query($query);\r
+                       $row = mysql_fetch_object($res);\r
+                       $this->name = stripslashes($row->tdname);\r
+                       $this->description = stripslashes($row->tddesc);\r
+               }\r
+       }\r
+       \r
+       function getID() { return $this->id; }\r
+       function getname() {return $this->name; }\r
+       function getdesc() {return $this->description; }\r
+       \r
+       function createfromname($name) {return new NPG_TEMPLATE(NPG_TEMPLATE::getIdFromName($name));}\r
+       \r
+       function getIDfromName($name) {\r
+               $query =  'SELECT tdid'\r
+               . ' FROM '.sql_table('plug_gallery_template_desc')\r
+               . ' WHERE tdname="'.addslashes($name).'"';\r
+               $res = sql_query($query);\r
+               $obj = mysql_fetch_object($res);\r
+               return $obj->tdid;\r
+       }\r
+       \r
+       function updategeneralinfo($name,$desc) {\r
+               $query =  'UPDATE '.sql_table('plug_gallery_template_desc').' SET'\r
+               . " tdname='" . addslashes($name) . "',"\r
+               . " tddesc='" . addslashes($desc) . "'"\r
+               . " WHERE tdid=" . intval($this->getID());\r
+               sql_query($query); \r
+       }\r
+       \r
+       function update($type,$content) {\r
+               $id = $this->getID();\r
+               sql_query('DELETE FROM '.sql_table('plug_gallery_template')." WHERE name='". addslashes($type) ."' and tdesc=" . intval($id));\r
+               \r
+               if ($content) {\r
+                       sql_query('INSERT INTO '.sql_table('plug_gallery_template')." SET content='" . addslashes($content) . "', name='" . addslashes($type) . "', tdesc=" . intval($id));\r
+               }\r
+       }\r
+       \r
+       function deleteallparts() { sql_query('DELETE FROM '.sql_table('plug_gallery_template').' WHERE tdesc='.intval($this->getID())); }\r
+       \r
+       function createnew($name,$desc) {\r
+               sql_query('INSERT INTO '.sql_table('plug_gallery_template_desc')." (tdname, tddesc) VALUES ('" . addslashes($name) . "','" . addslashes($desc) . "')");\r
+               $newId = mysql_insert_id();\r
+               return $newId;\r
+       }\r
+       \r
+       function exists($name) {\r
+               $r = sql_query('select * FROM '.sql_table('plug_gallery_template_desc').' WHERE tdname="'.addslashes($name).'"');\r
+               return (mysql_num_rows($r) != 0);\r
+       }\r
+       \r
+       function existsID($id) {\r
+               $r = sql_query('select * FROM '.sql_table('plug_gallery_template_desc').' WHERE tdid='.intval($id));\r
+               return (mysql_num_rows($r) != 0);\r
+       }\r
+       \r
+       function gettemplate($type) {\r
+               $type=addslashes($type);\r
+               $result = mysql_query("select * from ".sql_table('plug_gallery_template')." where name='$type'" );\r
+               $data = mysql_fetch_assoc($result);\r
+               $template = stripslashes($data['content']);\r
+               return $template;\r
+       }\r
+       \r
+       function settemplate($type, $content) {\r
+               $this->update($type,$content);\r
+       }\r
+       \r
+       function readall() {\r
+               $query = 'select * from '.sql_table('plug_gallery_template').' where tdesc='.intval($this->id);\r
+               $res = sql_query($query);\r
+               while ($row = mysql_fetch_object($res)){\r
+                       $this->section[$row->name] = stripslashes($row->content);\r
+               }\r
+       }\r
+       \r
+}\r
+\r
+?>\r
diff --git a/NP_gallery/tags/v0.95/gallery/templatetags.html b/NP_gallery/tags/v0.95/gallery/templatetags.html
new file mode 100644 (file)
index 0000000..b356b91
--- /dev/null
@@ -0,0 +1,368 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\r
+<html xmlns="http://www.w3.org/1999/xhtml">\r
+<head>\r
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />\r
+<title>Untitled Document</title>\r
+</head>\r
+\r
+<body>\r
+<h3>Templates</h3>\r
+<p>The plugin is displayed using a template system very similar to nucleus skins and templates.</p>\r
+<p>The first step in the display is when the plugin calls the nucleus NPGallery skin. This provides the general look, ie banner, side menus, footers, whatever. The &lt;%gallery(link)%&gt; tag in the NPGallery skin is where the gallery page (list, album or picture) is displayed. To display the requested gallery page the appropriate gallery template is used. These templates are freely editable in the gallery admin area and are a powerful way to control how gallery is displayed</p>\r
+<p>In general, each template has a header, body and footer segment. With pages with repeated information such as thumbnails in an album, the header is displayed, followed by repitions of the body, then the footer. For example if we call the header H, the body B and footer F, an album page would be contructed H B B (repeated) B B F. Following is list of template tags and the information they represent</p>\r
+Gallery List: Displayed by &lt;%gallery(link)%&gt; and by clicking on Gallery in the breadcrumb<br/>\r
+<table>\r
+  <thead>\r
+    <tr>\r
+      <th>Tag</th>\r
+      <th>Description</th>\r
+      <th>Section</th>\r
+    </tr>\r
+  </thead>\r
+  <tbody>\r
+    <tr>\r
+      <td>breadcrumb</td>\r
+      <td>Displays Breadcrumb navigation (in gallery list only the word Gallery)</td>\r
+      <td>All</td>\r
+    </tr>\r
+    <tr>\r
+      <td>sortbytitle</td>\r
+      <td>Generates a <b>link</b> to display gallery list sorted by album title, ie &lt;a href=&quot;&lt;%sortbytitle%&gt;&quot;&gt;</td>\r
+      <td>Header</td>\r
+    </tr>\r
+    <tr>\r
+      <td>sortbydescription</td>\r
+      <td>Generates a <b>link</b> to display gallery list sorted by album description.</td>\r
+      <td>Header</td>\r
+    </tr>\r
+    <tr>\r
+      <td>sortbyowner</td>\r
+      <td>Generates a <b>link</b> to display gallery list sorted by album owner.</td>\r
+      <td>Header</td>\r
+    </tr>\r
+    <tr>\r
+      <td>sortbymodified</td>\r
+      <td>Generates a <b>link</b> to display gallery list sorted by date last modified.</td>\r
+      <td>Header</td>\r
+    </tr>\r
+    <tr>\r
+      <td>sortbynumber</td>\r
+      <td>Generates a <b>link</b> to display gallery list sorted by number of images in album.</td>\r
+      <td>Header</td>\r
+    </tr>\r
+    <tr>\r
+      <td>albumlink</td>\r
+      <td><b>link</b> to album</td>\r
+      <td>Body</td>\r
+    </tr>\r
+    <tr>\r
+      <td>albumthumbnail</td>\r
+      <td>absolute reference to the album thumbnail (assignable in admin area|gallery|configuration). Usage: &lt;img src=&quot;&lt;%albumthumbnail%&gt;&quot; /&gt;</td>\r
+      <td>Body</td>\r
+    </tr>\r
+    <tr>\r
+      <td>centeredtopmargin(height,adjustment)</td>\r
+      <td>CSS inline style used to vertically align thumbnail (if using albumthumbnail). Height is the height of the thumbnail container, adjustment is a number: a negative value to shift the thumbnail up, positive to shift down. Used to make space for text under thumbnail. Usage: </td>\r
+      <td>Body</td>\r
+    </tr>\r
+    <tr>\r
+      <td>title</td>\r
+      <td></td>\r
+      <td>Body</td>\r
+    </tr>\r
+    <tr>\r
+      <td>description</td>\r
+      <td></td>\r
+      <td>Body</td>\r
+    </tr>\r
+    <tr>\r
+      <td>ownerid</td>\r
+      <td></td>\r
+      <td>Body</td>\r
+    </tr>\r
+    <tr>\r
+      <td>ownername</td>\r
+      <td></td>\r
+      <td>Body</td>\r
+    </tr>\r
+    <tr>\r
+      <td>modified</td>\r
+      <td></td>\r
+      <td>Body</td>\r
+    </tr>\r
+    <tr>\r
+      <td>numberofimages</td>\r
+      <td></td>\r
+      <td>Body</td>\r
+    </tr>\r
+    <tr>\r
+      <td>addalbumlink</td>\r
+      <td></td>\r
+      <td>H/F</td>\r
+    </tr>\r
+    <tr>\r
+      <td>addpictureslink</td>\r
+      <td></td>\r
+      <td>H/F</td>\r
+    </tr>\r
+    <tr>\r
+      <td>if(canaddpicture)</td>\r
+      <td></td>\r
+      <td>All</td>\r
+    </tr>\r
+    <tr>\r
+      <td>if(canaddalbum)</td>\r
+      <td></td>\r
+      <td>All</td>\r
+    </tr>\r
+  </tbody>\r
+</table>\r
+<br/>\r
+Album: Displayed by clicking on album link in gallery list<br/>\r
+<table>\r
+  <thead>\r
+    <tr>\r
+      <th>Tag</th>\r
+      <th>Description</th>\r
+      <th>Section</th>\r
+    </tr>\r
+  </thead>\r
+  <tbody>\r
+    <tr>\r
+      <td>breadcrumb(sep)</td>\r
+      <td>Displays Breadcrumb navigation with the specified seperator, default is &gt;. For example to change the breadcrumb to Gallery -&gt; Album change the tag to &lt;%breadcrumb(-&gt;)%&gt;</td>\r
+      <td>All</td>\r
+    </tr>\r
+    <tr>\r
+      <td>albumtitle</td>\r
+      <td></td>\r
+      <td></td>\r
+    </tr>\r
+    <tr>\r
+      <td>albumdescription</td>\r
+      <td></td>\r
+      <td></td>\r
+    </tr>\r
+    <tr>\r
+      <td>picturedescription</td>\r
+      <td></td>\r
+      <td></td>\r
+    </tr>\r
+    <tr>\r
+      <td>picturelink</td>\r
+      <td></td>\r
+      <td></td>\r
+    </tr>\r
+    <tr>\r
+      <td>thumbnail</td>\r
+      <td></td>\r
+      <td></td>\r
+    </tr>\r
+    <tr>\r
+      <td>centeredtopmargin</td>\r
+      <td></td>\r
+      <td></td>\r
+    </tr>\r
+    <tr>\r
+      <td>pictureviews</td>\r
+      <td></td>\r
+      <td></td>\r
+    </tr>\r
+    <tr>\r
+      <td>editalbumlink</td>\r
+      <td></td>\r
+      <td></td>\r
+    </tr>\r
+    <tr>\r
+      <td>addpicturelink</td>\r
+      <td></td>\r
+      <td></td>\r
+    </tr>\r
+    <tr>\r
+      <td>picturetitle</td>\r
+      <td></td>\r
+      <td></td>\r
+    </tr>\r
+    <tr>\r
+      <td>pages</td>\r
+      <td></td>\r
+      <td></td>\r
+    </tr>\r
+    <tr>\r
+      <td>albumlink</td>\r
+      <td></td>\r
+      <td></td>\r
+    </tr>\r
+    <tr>\r
+      <td>if(canaddpicture)</td>\r
+      <td></td>\r
+      <td></td>\r
+    </tr>\r
+    <tr>\r
+      <td>if(caneditalbum)</td>\r
+      <td></td>\r
+      <td></td>\r
+    </tr>\r
+  </tbody>\r
+</table>\r
+<br/>\r
+Picture: Displayed by clicking on thumbnail in album<br/>\r
+<table>\r
+  <thead>\r
+    <tr>\r
+      <th>Tag</th>\r
+      <th>Description</th>\r
+      <th>Section</th>\r
+    </tr>\r
+  </thead>\r
+  <tbody>\r
+    <tr>\r
+      <td>breadcrumb(sep)</td>\r
+      <td>Displays Breadcrumb navigation with the specified seperator, default is &gt;. For example to change the breadcrumb to Gallery -&gt; Album change the tag to &lt;%breadcrumb(-&gt;)%&gt;</td>\r
+      <td>All</td>\r
+    </tr>\r
+    <tr>\r
+      <td>albumlink</td>\r
+      <td></td>\r
+      <td></td>\r
+    </tr>\r
+    <tr>\r
+      <td>albumtitle</td>\r
+      <td></td>\r
+      <td></td>\r
+    </tr>\r
+    <tr>\r
+      <td>description</td>\r
+      <td></td>\r
+      <td></td>\r
+    </tr>\r
+    <tr>\r
+      <td>fullsizelink</td>\r
+      <td></td>\r
+      <td></td>\r
+    </tr>\r
+    <tr>\r
+      <td>intermediatepicture</td>\r
+      <td></td>\r
+      <td></td>\r
+    </tr>\r
+    <tr>\r
+      <td>title</td>\r
+      <td></td>\r
+      <td></td>\r
+    </tr>\r
+    <tr>\r
+      <td>height</td>\r
+      <td></td>\r
+      <td></td>\r
+    </tr>\r
+    <tr>\r
+      <td>width</td>\r
+      <td></td>\r
+      <td></td>\r
+    </tr>\r
+    <tr>\r
+      <td>owner</td>\r
+      <td></td>\r
+      <td></td>\r
+    </tr>\r
+    <tr>\r
+      <td>date</td>\r
+      <td></td>\r
+      <td></td>\r
+    </tr>\r
+    <tr>\r
+      <td>editpicturelink</td>\r
+      <td></td>\r
+      <td></td>\r
+    </tr>\r
+    <tr>\r
+      <td>deletepicturelink</td>\r
+      <td></td>\r
+      <td></td>\r
+    </tr>\r
+    <tr>\r
+      <td>nextlink</td>\r
+      <td></td>\r
+      <td></td>\r
+    </tr>\r
+    <tr>\r
+      <td>previouslink</td>\r
+      <td></td>\r
+      <td></td>\r
+    </tr>\r
+    <tr>\r
+      <td>comments</td>\r
+      <td></td>\r
+      <td></td>\r
+    </tr>\r
+    <tr>\r
+      <td>commentform</td>\r
+      <td></td>\r
+      <td></td>\r
+    </tr>\r
+    <tr>\r
+      <td>if(caneditpicture)</td>\r
+      <td></td>\r
+      <td></td>\r
+    </tr>\r
+    <tr>\r
+      <td>if(commentsallowed)</td>\r
+      <td></td>\r
+      <td></td>\r
+    </tr>\r
+    <tr>\r
+      <td>if(next)</td>\r
+      <td></td>\r
+      <td></td>\r
+    </tr>\r
+    <tr>\r
+      <td>if(prev)</td>\r
+      <td><p>&nbsp;</p></td>\r
+      <td></td>\r
+    </tr>\r
+  </tbody>\r
+</table>\r
+<br/>\r
+Comments<br/>\r
+<table>\r
+  <thead>\r
+    <tr>\r
+      <th>Tag</th>\r
+      <th>Description</th>\r
+      <th>Section</th>\r
+    </tr>\r
+  </thead>\r
+  <tbody>\r
+    <tr>\r
+      <td></td>\r
+      <td></td>\r
+      <td></td>\r
+    </tr>\r
+    <tr>\r
+      <td></td>\r
+      <td></td>\r
+      <td></td>\r
+    </tr>\r
+  </tbody>\r
+</table>\r
+<br/>\r
+Promo post template<br/>\r
+<table>\r
+  <thead>\r
+    <tr>\r
+      <th>Tag</th>\r
+      <th>Description</th>\r
+      <th>Section</th>\r
+    </tr>\r
+  </thead>\r
+  <tbody>\r
+  </tbody>\r
+</table>\r
+<h3><a name="version" id="version"></a>Version History</h3>\r
+<ul>\r
+  <li>Version 0.1: initial testcaseversion</li>\r
+  <li>Version 0.0: pre-initial version ;-)</li>\r
+</ul>\r
+</body>\r
+</html>\r
diff --git a/NP_gallery/tags/v0.95/gallery/update/Thumbs.db b/NP_gallery/tags/v0.95/gallery/update/Thumbs.db
new file mode 100644 (file)
index 0000000..638a3aa
Binary files /dev/null and b/NP_gallery/tags/v0.95/gallery/update/Thumbs.db differ
diff --git a/NP_gallery/tags/v0.95/gallery/update/default_templates_076.inc b/NP_gallery/tags/v0.95/gallery/update/default_templates_076.inc
new file mode 100644 (file)
index 0000000..872f640
--- /dev/null
@@ -0,0 +1,142 @@
+<?php \r
+\r
+//to only be included by np_gallery script or update scripts\r
+\r
+if(isset($template)) unset($template);\r
+$template = new NPG_TEMPLATE(NPG_TEMPLATE::createnew('default076','default 0.76 templates'));\r
+if(!$NPG_CONF['template']) setNPGOption('template', $template->getID());\r
+$templatepics = new NPG_TEMPLATE(NPG_TEMPLATE::createnew('default076-p','Example of album thumbnails'));\r
+\r
+\r
+$name = 'LIST_HEADER';\r
+$content = '<%breadcrumb%><hr/><table width=100% ><thead>'\r
+                       .'<tr><th><a href="<%sortbytitle%>">Title</a></th>'\r
+                       .'<th><a href="<%sortbydescription%>">Description</a></th>'\r
+                       .'<th><a href="<%sortbyowner%>">Owner</a></th>'\r
+                       .'<th><a href="<%sortbymodified%>">Last Modified</a></th>'\r
+                       .'<th><a href="<%sortbynumber%>">Images</a></th></tr></thead><tbody>';\r
+$template->setTemplate($name, $content);\r
+$content = '<form method="post" action="action.php">'\r
+                       .'<input type="hidden" name="action" value="plugin" />'\r
+                       .'<input type="hidden" name="name" value="gallery" />'\r
+                       .'<input type="hidden" name="type" value="list" />'\r
+                       .'<input type="submit" value="Resort by:" /> <select name="sort" >'\r
+                       .'<option value="title" >Album Title'\r
+                       .'<option value="desc" >Album Description'\r
+                       .'<option value="owner">Owner'\r
+                       .'<option value="date">Date Modified'\r
+                       .'<option value="numb">Number of Images'\r
+                       .'</select></form><hr/><div id="NPG_thumbnail"><ul class="thumbnail">';\r
+$templatepics->setTemplate($name,$content);\r
+\r
+$name = 'LIST_BODY';\r
+$content = '<tr><td><a href="<%albumlink%>"><%title%></a></td>'\r
+                       .'<td><%description%></td>'\r
+                       .'<td><%ownername%></td>'\r
+                       .'<td><%modified%></td>'\r
+                       .'<td><%numberofimages%></td></tr>';\r
+$template->setTemplate($name, $content);\r
+$content = '<li><a href="<%albumlink%>">\r
+<img style="<%centeredtopmargin(140,-10)%>" src="<%albumthumbnail%>" alt="<%description%>" /></a>\r
+<br/><%title%><br/><%numberofimages%> pictures</li>';\r
+$templatepics->setTemplate($name,$content);\r
+\r
+$name = 'LIST_FOOTER';\r
+$content = '</tbody></table><hr/><br />'\r
+                       .'<%if(canaddalbum)%>'\r
+                       .'<a href="<%addalbumlink%>">Add New Album | </a>'\r
+                       .'<%endif%>'\r
+                       .'<%if(canaddpicture)%>'\r
+                       .'<a href="<%addpictureslink%>"onclick="window.open(this.href,\'addpicture\',\'status=no,toolbar=no,scrollbars=no,resizable=yes,width=600,height=400\');return false;">'\r
+                       .' Add Pictures</a>'\r
+                       .'<%endif%>';\r
+$template->setTemplate($name, $content);\r
+$content ='</ul></div><div id="NPG_footer"><hr/><br />'\r
+                       .'<%if(canaddalbum)%>'\r
+                       .'<a href="<%addalbumlink%>">Add New Album | </a>'\r
+                       .'<%endif%>'\r
+                       .'<%if(canaddpicture)%>'\r
+                       .'<a href="<%addpictureslink%>"onclick="window.open(this.href,\'addpicture\',\'status=no,toolbar=no,scrollbars=no,resizable=yes,width=600,height=400\');return false;">'\r
+                       .' Add Pictures</a>'\r
+                       .'<%endif%></div>';\r
+$templatepics->setTemplate($name,$content);\r
+\r
+//\r
+$name = 'ALBUM_HEADER';\r
+$content = '<%breadcrumb%><hr/><div id="NPG_thumbnail"><ul class="thumbnail">';\r
+$template->setTemplate($name, $content);\r
+$templatepics->setTemplate($name,$content);\r
+\r
+$name = 'ALBUM_BODY';\r
+$content = '<li><a href="<%picturelink%>"><img style="<%centeredtopmargin(140,-10)%>" src="<%thumbnail%>" /></a><br/><%picturetitle%><br/><%pictureviews%> views</li>';\r
+$template->setTemplate($name, $content);\r
+$templatepics->setTemplate($name,$content);\r
+\r
+$name = 'ALBUM_FOOTER';\r
+$content = '</ul></div><div id="NPG_footer"><br /><hr/>'\r
+                       .'<%if(caneditalbum)%>'\r
+                       .'<a href="<%editalbumlink%>">Modify Album </a> | '\r
+                       .'<%endif%>'\r
+                       .'<%if(canaddpicture)%>'\r
+                       .'<a href="<%addpicturelink%>"onclick="window.open(this.href,\'imagepopup\',\'status=no,toolbar=no,scrollbars=no,resizable=yes,width=480,height=360\');return false;">Add Picture</a>'\r
+                       .'<%endif%>'\r
+                       .'</div>';\r
+$template->setTemplate($name, $content);\r
+$templatepics->setTemplate($name,$content);\r
+\r
+//\r
+$name = 'ITEM_HEADER';\r
+$content = '<%breadcrumb%><br/>'\r
+               .'<%if(prev)%><a href="<%previouslink%>"> Previous</a>'\r
+               .'<%else%> Previous<%endif%>'\r
+               .' |'\r
+               .'<%if(next)%><a href="<%nextlink%>"> Next</a>'\r
+               .'<%else%> Next<%endif%>'\r
+               .'<hr/><div id="NPG_picture">';\r
+$template->setTemplate($name, $content);\r
+$templatepics->setTemplate($name,$content);\r
+\r
+$name = 'ITEM_BODY';\r
+$content = '<a href="<%fullsizelink%>" onclick="window.open(this.href,\'imagepopup\',\'status=no,toolbar=no,scrollbars=auto,resizable=yes,width=<%width%>,height=<%height%>\');return false;">'\r
+                       .'<img src="<%intermediatepicture%>" /></a>';\r
+$template->setTemplate($name, $content);\r
+$templatepics->setTemplate($name,$content);\r
+\r
+$name = 'ITEM_FOOTER';\r
+$content = '</div><div id="NPG_footer"><br /><%description%><br/><br/>Last modified by <%owner%> on <%date%> '\r
+               .'<%if(caneditpicture)%>'\r
+               .'<a href="<%editpicturelink%>">Edit</a>'\r
+               .' | <a href="<%deletepicturelink%>">Delete</a>'\r
+               .'<%endif%>'\r
+               .'<br/></div><%if(commentsallowed)%>'\r
+               .'<div class="contenttitle"><h2>Comments</h2></div><%comments%>'\r
+               .'<div class="contenttitle"><h2>Add Comment</h2></div><%commentform%><%endif%>';        \r
+$template->setTemplate($name, $content);\r
+$templatepics->setTemplate($name,$content);\r
+\r
+$name = 'COMMENT_BODY';\r
+$content = '<div class="itemcomment id<%memberid%>">'\r
+               .'<h3><a href="<%userlinkraw%>"'\r
+               .'title="<%ip%> | Click to visit <%user%>\'s website or send an email">'\r
+               .'<%user%></a> wrote:</h3>'\r
+               .'<div class="commentbody">'\r
+               .'<%body%></div><div class="commentinfo"><%date%> <%time%></div></div>' ;\r
+$template->setTemplate($name, $content);\r
+$templatepics->setTemplate($name,$content);\r
+\r
+$name = 'PROMO_TITLE';\r
+$content = 'New Pictures Added!';\r
+$template->setTemplate($name,$content);\r
+$templatepics->setTemplate($name,$content);\r
+\r
+$name = 'PROMO_BODY';\r
+$content = 'New pictures posted:<div id="NPG_thumbnail"><ul class="thumbnail"><%images%></ul></div><div id="NPG_footer"></div>';\r
+$template->setTemplate($name,$content);\r
+$templatepics->setTemplate($name,$content);\r
+\r
+$name = 'PROMO_IMAGES';\r
+$content = '<li><a href="<%picturelink%>"><img style="<%centeredtopmargin(140,0)%>" src="<%thumbnail%>" /></a></li>';\r
+$template->setTemplate($name,$content);\r
+$templatepics->setTemplate($name,$content);\r
+\r
+?>\r
diff --git a/NP_gallery/tags/v0.95/gallery/update/default_templates_080.inc b/NP_gallery/tags/v0.95/gallery/update/default_templates_080.inc
new file mode 100644 (file)
index 0000000..1b0adaa
--- /dev/null
@@ -0,0 +1,68 @@
+<?php \r
+\r
+//to only be included by np_gallery script or update scripts\r
+\r
+if(isset($template)) unset($template);\r
+$template = new NPG_TEMPLATE(NPG_TEMPLATE::createnew('default080','default 0.80 templates'));\r
+\r
+$name = 'LIST_HEADER';\r
+$content = '<%breadcrumb%><hr/><table width=100% ><thead>'\r
+                       .'<tr><th><a href="<%sortbytitle%>">Title</a></th>'\r
+                       .'<th><a href="<%sortbydescription%>">Description</a></th>'\r
+                       .'<th><a href="<%sortbyowner%>">Owner</a></th>'\r
+                       .'<th><a href="<%sortbymodified%>">Last Modified</a></th>'\r
+                       .'<th><a href="<%sortbynumber%>">Images</a></th></tr></thead><tbody>';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'LIST_BODY';\r
+$content = '<tr><td><a href="<%albumlink%>"><%title%></a></td><td><%description%></td><td><%ownername%></td><td><%modified%></td><td><%numberofimages%></td></tr>';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'LIST_FOOTER';\r
+$content = '</tbody></table><hr/><br /><%if(canaddalbum)%><a href="<%addalbumlink%>">Add New Album | </a><%endif%><%if(canaddpicture)%><a href="<%addpictureslink%>"onclick="window.open(this.href,\'addpicture\',\'status=no,toolbar=no,scrollbars=no,resizable=yes,width=600,height=400\');return false;"> Add Pictures</a><%endif%>';\r
+$template->setTemplate($name, $content);\r
+\r
+\r
+//\r
+$name = 'ALBUM_HEADER';\r
+$content = '<%breadcrumb%><hr/>Page: <%pages%><hr/><div id="NPG_thumbnail">';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'ALBUM_BODY';\r
+$content = '<div class="thumbnailoutside"><div class=\'alpha-shadow\'><div><a href="<%picturelink%>"><img src="<%thumbnail%>" /></a></div></div><br></div>';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'ALBUM_FOOTER';\r
+$content = '</div><div id="NPG_footer"><br /><hr/><%if(caneditalbum)%><a href="<%editalbumlink%>">Modify Album </a> | <%endif%><%if(canaddpicture)%><a href="<%addpicturelink%>"onclick="window.open(this.href,\'imagepopup\',\'status=no,toolbar=no,scrollbars=no,resizable=yes,width=480,height=360\');return false;">Add Picture</a><%endif%></div>';\r
+$template->setTemplate($name, $content);\r
+\r
+//\r
+$name = 'ITEM_HEADER';\r
+$content = '<%breadcrumb%><br/><%if(prev)%><a href="<%previouslink%>"> Previous</a><%else%> Previous<%endif%> |<%if(next)%><a href="<%nextlink%>"> Next</a><%else%> Next<%endif%><hr/><div id="NPG_picture">';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'ITEM_BODY';\r
+$content = '<a href="<%fullsizelink%>" onclick="window.open(this.href,\'imagepopup\',\'status=no,toolbar=no,scrollbars=auto,resizable=yes,width=<%width%>,height=<%height%>\');return false;"><img src="<%intermediatepicture%>" /></a>';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'ITEM_FOOTER';\r
+$content = '</div><div id="NPG_footer"><br /><%description%><br/><br/>Last modified by <%owner%> on <%date%> <%if(caneditpicture)%><a href="<%editpicturelink%>">Edit</a> | <a href="<%deletepicturelink%>">Delete</a><%endif%><br/></div><%if(commentsallowed)%><div class="contenttitle"><h2>Comments</h2></div><%comments%><div class="contenttitle"><h2>Add Comment</h2></div><%commentform%><%endif%>';   \r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'COMMENT_BODY';\r
+$content = '<div class="itemcomment id<%memberid%>"><h3><a href="<%userlinkraw%>"title="<%ip%> | Click to visit <%user%>\'s website or send an email"><%user%></a> wrote:</h3><div class="commentbody"><%body%></div><div class="commentinfo"><%date%> <%time%></div></div>'   ;\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'PROMO_TITLE';\r
+$content = 'New Pictures Added!';\r
+$template->setTemplate($name,$content);\r
+\r
+$name = 'PROMO_BODY';\r
+$content = 'New pictures posted:<div id="NPG_thumbnail"><ul class="thumbnail"><%images%></ul></div><div id="NPG_footer"></div>';\r
+$template->setTemplate($name,$content);\r
+\r
+$name = 'PROMO_IMAGES';\r
+$content = '<li><a href="<%picturelink%>"><img style="<%centeredtopmargin(140,0)%>" src="<%thumbnail%>" /></a></li>';\r
+$template->setTemplate($name,$content);\r
+\r
+?>
\ No newline at end of file
diff --git a/NP_gallery/tags/v0.95/gallery/update/default_templates_090.inc b/NP_gallery/tags/v0.95/gallery/update/default_templates_090.inc
new file mode 100644 (file)
index 0000000..e6dd070
--- /dev/null
@@ -0,0 +1,130 @@
+<?php \r
+global $CONF;\r
+//to only be included by np_gallery script or update scripts\r
+if(isset($template)) unset($template);\r
+$template = new NPG_TEMPLATE(NPG_TEMPLATE::createnew('default090','default 0.90 templates'));\r
+\r
+$name = 'LIST_HEADER';\r
+$content = '<%breadcrumb%><hr/><table width=100% ><thead>'\r
+                       .'<tr><th><a href="<%sortbytitle%>">Title</a></th>'\r
+                       .'<th><a href="<%sortbydescription%>">Description</a></th>'\r
+                       .'<th><a href="<%sortbyowner%>">Owner</a></th>'\r
+                       .'<th><a href="<%sortbymodified%>">Last Modified</a></th>'\r
+                       .'<th><a href="<%sortbynumber%>">Images</a></th></tr></thead><tbody>'\r
+                       .'<form method="post" action="action.php">'\r
+                       .'<input type="hidden" name="action" value="plugin" />'\r
+                       .'<input type="hidden" name="name" value="gallery" />'\r
+                       .'<input type="hidden" name="type" value="list" />'\r
+                       .'<input type="submit" value="Resort by:" /> <select name="sort" >'\r
+                       .'<option value="title" >Album Title'\r
+                       .'<option value="desc" >Album Description'\r
+                       .'<option value="owner">Owner'\r
+                       .'<option value="date">Date Modified'\r
+                       .'<option value="numb">Number of Images'\r
+                       .'</select></form>';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'LIST_BODY';\r
+$content = '<tr><td><a href="<%albumlink%>"><%title%></a></td><td><%description%></td><td><%ownername%></td><td><%modified%></td><td><%numberofimages%></td></tr>';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'LIST_FOOTER';\r
+$content = '</tbody></table><hr/><br /><%if(canaddalbum)%><a href="<%addalbumlink%>">Add New Album | </a><%endif%><%if(canaddpicture)%><a href="<%addpictureslink%>"onclick="window.open(this.href,\'addpicture\',\'status=no,toolbar=no,scrollbars=no,resizable=yes,width=600,height=400\');return false;"> Add Pictures</a><%endif%>';\r
+$template->setTemplate($name, $content);\r
+\r
+\r
+//\r
+$name = 'ALBUM_HEADER';\r
+$content = '<%breadcrumb%><hr/>Page: <%pages%><hr/><div id="NPG_thumbnail">'\r
+                       .'<form method="post" action="action.php">'\r
+                       .'<input type="hidden" name="action" value="plugin" />'\r
+                       .'<input type="hidden" name="name" value="gallery" />'\r
+                       .'<input type="hidden" name="type" value="album" />'\r
+                       .'<input type="hidden" name="id" value="<%albumid%>" />'\r
+                       .'<input type="submit" value="Resort by:" /> <select name="sort" >'\r
+                       .'<option value="title" >Picture Title'\r
+                       .'<option value="desc" >Picture Description'\r
+                       .'<option value="date">Date Modified'\r
+                       .'<option value="titlea" >Picture Title - Ascending'\r
+                       .'<option value="desca" >Picture Description - Ascending'\r
+                       .'<option value="datea">Picture - Ascending'\r
+                       .'</select></form>';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'ALBUM_BODY';\r
+$content = '<div class="thumbnailoutside"><div class=\'alpha-shadow\'><div><a href="<%picturelink%>"><img src="<%thumbnail%>" /></a></div></div><br></div>';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'ALBUM_SETDISPLAY';\r
+$content = '<div class="thumbnailoutside"><div class=\'alpha-shadow\'><div><a href="<%picturelink%>"><img src="<%thumbnail%>" /></a></div></div><br></div>';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'ALBUM_FOOTER';\r
+$content = '</div><div id="NPG_footer"><br /><hr/><%if(caneditalbum)%><a href="<%editalbumlink%>">Modify Album </a> | <%endif%><%if(canaddpicture)%><a href="<%addpicturelink%>"onclick="window.open(this.href,\'imagepopup\',\'status=no,toolbar=no,scrollbars=no,resizable=yes,width=480,height=360\');return false;">Add Picture</a><%endif%></div>';\r
+$template->setTemplate($name, $content);\r
+\r
+//\r
+$name = 'ITEM_TOOLTIPSHEADER';\r
+$content = '<%if(tooltips)%></script><script type="text/javascript">var pictureid = "<%pictureid%>";</script>'\r
+       .'<script type="text/javascript" src="'.$CONF['IndexURL'].'/nucleus/plugins/gallery/NP_gallery.js"></script><%endif%>';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'ITEM_HEADER';\r
+$content = '<style type="text/css">@import "'.$CONF['IndexURL'].'/nucleus/plugins/gallery/NP_gallery.css";</style>'\r
+       .'<%breadcrumb%><br/><%if(prev)%><a href="<%previouslink%>">'\r
+       .' Previous</a><%else%> Previous<%endif%> |<%if(next)%><a href="<%nextlink%>"> '\r
+       .' Next</a><%else%> Next<%endif%><hr/><div id="NPG_picture">';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'ITEM_BODY';\r
+$content = '<div class=\'alpha-shadow\' <%if(tooltips)%>onmouseenter="showtipdivs();" onmouseleave="hidetipdivs();" onmouseover="showtipdivs();" onmouseout="hidetipdivs();"<%endif%>><div><%if(tooltips)%><%tooltip%><%endif%><img src="<%intermediatepicture%>" <%if(tooltips)%>onMouseOver="setLyr(this,\'testlayer\');"<%endif%> /></div></div>';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'ITEM_TOOLTIPSFOOTER';\r
+$content = '<%if(caneditpicture)%>'\r
+       .'<%if(tooltips)%><form name="clear" method="POST" action="'\r
+       .$CONF['IndexURL']\r
+       .'/action.php?action=plugin&name=gallery&type=tagdelete">'\r
+       .'<input type="hidden" name="pictureid" type="text" value ="<%pictureid%>">'\r
+       .'<input type="submit" name="Submit" value="Delete one tag">'\r
+       .'</form><a href="javascript:void(null)" onclick="start()">Create new caption. </a><%endif%><%endif%>'\r
+       .'</div>';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'ITEM_NEXTPREVTHUMBS';\r
+$content = '<%if(nextprevthumb)%><div style="clear:both;margin:auto"><%if(prev)%><div class=\'thumbnailoutside\'>' .\r
+               '<div class="alpha-shadow" ><div><a href="<%previouslink%>">' .\r
+               '<img src="<%previousthumbfilename%>" /></a></div></div><div style="clear:both">' .\r
+               '</div></div> <div class=\'thumbnailoutside\' style="text-align:">' .\r
+               '</br></br>< Previous <%endif%>| <%if(next)%>Next ></div> <div class=\'thumbnailoutside\'>' .\r
+               '<div class="alpha-shadow" ><div><a href="<%nextlink%>">' .\r
+               '<img src="<%nextthumbfilename%>" /></a></div></div><div style="clear:both"></div></div><%endif%></div><%endif%>' .\r
+               '<div id="NPG_footer"><br />Description: <%description%>|<br />';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'ITEM_FOOTER';\r
+$content = '<a href="<%fullsizelink%>">Fullsize Image Link</a>|'\r
+       .'|Last modified by <%owner%> on '\r
+       .'<%date%> <%if(caneditpicture)%>|<a href="<%editpicturelink%>">Edit</a> | '\r
+       .'<a href="<%deletepicturelink%>">Delete</a><%endif%><br/></div><%if(commentsallowed)%>'\r
+       .'<div class="contenttitle"><h2>Comments</h2></div><%comments%><div class="contenttitle">'\r
+       .'<h2>Add Comment</h2></div><%commentform%><%endif%>';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'COMMENT_BODY';\r
+$content = '<div class="itemcomment id<%memberid%>"><h3><a href="<%userlinkraw%>"title="<%ip%> | Click to visit <%user%>\'s website or send an email"><%user%></a> wrote:</h3><div class="commentbody"><%body%></div><div class="commentinfo"><%date%> <%time%></div></div>'   ;\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'PROMO_TITLE';\r
+$content = 'New Pictures Added!';\r
+$template->setTemplate($name,$content);\r
+\r
+$name = 'PROMO_BODY';\r
+$content = 'New pictures posted:<div id="NPG_thumbnail"><ul class="thumbnail"><%images%></ul></div><div id="NPG_footer"></div>';\r
+$template->setTemplate($name,$content);\r
+\r
+$name = 'PROMO_IMAGES';\r
+$content = '<li><a href="<%picturelink%>"><img style="<%centeredtopmargin(140,0)%>" src="<%thumbnail%>" /></a></li>';\r
+$template->setTemplate($name,$content);\r
+\r
+?>
\ No newline at end of file
diff --git a/NP_gallery/tags/v0.95/gallery/update/default_templates_093.inc b/NP_gallery/tags/v0.95/gallery/update/default_templates_093.inc
new file mode 100644 (file)
index 0000000..c410693
--- /dev/null
@@ -0,0 +1,162 @@
+<?php \r
+global $CONF;\r
+//to only be included by np_gallery script or update scripts\r
+if(isset($template)) unset($template);\r
+$template = new NPG_TEMPLATE(NPG_TEMPLATE::createnew('default093','default 0.93 templates'));\r
+\r
+$name = 'LIST_HEADER';\r
+$content = '<%breadcrumb%><hr/><table width=100% ><thead>'\r
+                       .'<tr><th><a href="<%sortbytitle%>">Title</a></th>'\r
+                       .'<th><a href="<%sortbydescription%>">Description</a></th>'\r
+                       .'<th><a href="<%sortbyowner%>">Owner</a></th>'\r
+                       .'<th><a href="<%sortbymodified%>">Last Modified</a></th>'\r
+                       .'<th><a href="<%sortbynumber%>">Images</a></th></tr></thead><tbody>'\r
+                       .'<form method="post" action="action.php">'\r
+                       .'<input type="hidden" name="action" value="plugin" />'\r
+                       .'<input type="hidden" name="name" value="gallery" />'\r
+                       .'<input type="hidden" name="type" value="list" />'\r
+                       .'<input type="submit" value="Resort by:" /> <select name="sort" >'\r
+                       .'<option value="title" >Album Title'\r
+                       .'<option value="desc" >Album Description'\r
+                       .'<option value="owner">Owner'\r
+                       .'<option value="date">Date Modified'\r
+                       .'<option value="numb">Number of Images'\r
+                       .'</select></form>';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'LIST_BODY';\r
+$content = '<tr><td><a href="<%albumlink%>"><%title%></a></td><td><%description%></td><td><%ownername%></td><td><%modified%></td><td><%numberofimages%></td></tr>';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'LIST_FOOTER';\r
+$content = '</tbody></table><hr/><br /><%if(canaddalbum)%><a href="<%addalbumlink%>">Add New Album | </a><%endif%><%if(canaddpicture)%><a href="<%addpictureslink%>"onclick="window.open(this.href,\'addpicture\',\'status=no,toolbar=no,scrollbars=yes,resizable=yes,width=600,height=400\');return false;"> Add Pictures</a><%endif%>';\r
+$template->setTemplate($name, $content);\r
+\r
+\r
+//\r
+$name = 'ALBUM_HEADER';\r
+$content = '<%breadcrumb%><hr/>Page: <%pages%><hr/><div id="NPG_thumbnail">'\r
+                       .'<form method="post" action="action.php">'\r
+                       .'<input type="hidden" name="action" value="plugin" />'\r
+                       .'<input type="hidden" name="name" value="gallery" />'\r
+                       .'<input type="hidden" name="type" value="album" />'\r
+                       .'<input type="hidden" name="id" value="<%albumid%>" />'\r
+                       .'<input type="submit" value="Resort by:" /> <select name="sort" >'\r
+                       .'<option value="title" >Picture Title'\r
+                       .'<option value="desc" >Picture Description'\r
+                       .'<option value="date">Date Modified'\r
+                       .'<option value="titlea" >Picture Title - Ascending'\r
+                       .'<option value="desca" >Picture Description - Ascending'\r
+                       .'<option value="datea">Picture - Ascending'\r
+                       .'</select></form>';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'ALBUM_BODY';\r
+$content = '<div class="thumbnailoutside"><div class=\'alpha-shadow\'><div><a href="<%picturelink%>"><img src="<%thumbnail%>" /></a></div></div><br></div>';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'ALBUM_SETDISPLAY';\r
+$content = '<div class="thumbnailoutside"><div class=\'alpha-shadow\'><div><a href="<%picturelink%>"><img src="<%thumbnail%>" /></a></div></div><br></div>';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'ALBUM_FOOTER';\r
+$content = '</div><div id="NPG_footer"><br /><hr/><%if(caneditalbum)%><a href="<%editalbumlink%>">Modify Album </a> | <%endif%><%if(canaddpicture)%><a href="<%addpicturelink%>"onclick="window.open(this.href,\'imagepopup\',\'status=no,toolbar=no,scrollbars=yes,resizable=yes,width=480,height=360\');return false;">Add Picture</a><%endif%></div>';\r
+$template->setTemplate($name, $content);\r
+\r
+//\r
+$name = 'ITEM_TOOLTIPSHEADER';\r
+$content = '<%if(tooltips)%></script><script type="text/javascript">var pictureid = "<%pictureid%>";</script>'\r
+       .'<script type="text/javascript" src="'.$CONF['IndexURL'].'/nucleus/plugins/gallery/NP_gallery.js"></script><%endif%>';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'ITEM_HEADER';\r
+$content = '<style type="text/css">@import "'.$CONF['IndexURL'].'/nucleus/plugins/gallery/NP_gallery.css";</style>'\r
+       .'<%breadcrumb%><br/><%if(prev)%><a href="<%previouslink%>">'\r
+       .' Previous</a><%else%> Previous<%endif%> |<%if(next)%><a href="<%nextlink%>"> '\r
+       .' Next</a><%else%> Next<%endif%><hr/><div id="NPG_picture">';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'ITEM_SLIDESHOWT';\r
+$content = '<script language="JavaScript">' .\r
+               'var NextURL = "<%nextlink%>&sliderunning=true";' .\r
+               'var interval = (1000);' .\r
+               'setTimeout("location.href=NextURL",3000);' .\r
+               '</script><div class="alpha-shadow"><div><img src="<%intermediatepicture%>"</div></div>';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'ITEM_SLIDESHOWC';\r
+$content = '<%if(slideshowson)%>' .\r
+               '<table><tr><td>' .\r
+               '<form method="post" action="'.$CONF['IndexURL'].'action.php?action=plugin&name=gallery&type=item&id=<%nextid%>&startstop=true">' .\r
+               '<input type="submit" value="Start Slideshow"/></form></td>' .\r
+               '<td><form method="post" action="'.$CONF['IndexURL'].'action.php?action=plugin&name=gallery&type=item&id=<%nextid%>">' .\r
+               '<input type="submit" value="Stop Slideshow"/></form></td></tr></table>'.\r
+               //'interval(secs)' .\r
+               //'<select name=intvalsecs>' .\r
+               //'<OPTION value="1">1 sec</OPTION>' .\r
+               //'<OPTION value="2">2 secs</OPTION>' .\r
+               //'<OPTION value="3">3 secs</OPTION>' .\r
+               //'</select>' .\r
+               //'</form>' .\r
+               '<%endif%>';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'ITEM_BODY';\r
+$content = '<div class=\'alpha-shadow\' <%if(tooltips)%>onmouseenter="showtipdivs();" onmouseleave="hidetipdivs();" onmouseover="showtipdivs();" onmouseout="hidetipdivs();"<%endif%>><div><%if(tooltips)%><%tooltip%><%endif%><img src="<%intermediatepicture%>" <%if(tooltips)%>onMouseOver="setLyr(this,\'testlayer\');"<%endif%> /></div></div>';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'ITEM_TOOLTIPSFOOTER';\r
+$content = '<%if(caneditpicture)%>'\r
+       .'<%if(tooltips)%><form name="clear" method="POST" action="'\r
+       .$CONF['IndexURL']\r
+       .'/action.php?action=plugin&name=gallery&type=tagdelete">'\r
+       .'<input type="hidden" name="pictureid" type="text" value ="<%pictureid%>">'\r
+       .'<input type="submit" name="Submit" value="Delete one tag">'\r
+       .'</form><a href="javascript:void(null)" onclick="start()">Create new caption. </a><%endif%><%endif%>'\r
+       .'</div>';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'ITEM_NEXTPREVTHUMBS';\r
+$content = '<%if(nextprevthumb)%>' .\r
+               '<div style="clear:both;margin:auto">' .\r
+               '<%if(prev)%>' .\r
+               '<div class=\'thumbnailoutside\'><div class="alpha-shadow" ><div>' .\r
+               'a href="<%previouslink%>"><img src="<%previousthumbfilename%>" /></a></div></div></div>' .\r
+               '<%endif%>' .\r
+               '<div class=\'thumbnailoutside\' style="text-align:"></br></br>' .\r
+               '< <%if(prev)%>Previous <%endif%>| <%if(next)%>Next <%endif%>>' .\r
+               '</div> ' .\r
+               '<%if(next)%><div class=\'thumbnailoutside\'><div class="alpha-shadow" ><div>' .\r
+               '<a href="<%nextlink%>"><img src="<%nextthumbfilename%>" /></a></div></div></div>' .\r
+               '<%endif%>' .\r
+               '</div>' .\r
+               '<%endif%>' .\r
+               '<div id="NPG_footer"><br />Description: <%description%>|<br />';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'ITEM_FOOTER';\r
+$content = '<a href="<%fullsizelink%>">Fullsize Image Link</a>|'\r
+       .'|Last modified by <%owner%> on '\r
+       .'<%date%> <%if(caneditpicture)%>|<a href="<%editpicturelink%>">Edit</a> | '\r
+       .'<a href="<%deletepicturelink%>">Delete</a>This picture in sets:<%keywords%> <%endif%><br/></div><%if(commentsallowed)%>'\r
+       .'<div class="contenttitle"><h2>Comments</h2></div><%comments%><div class="contenttitle">'\r
+       .'<h2>Add Comment</h2></div><%commentform%><%endif%>';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'COMMENT_BODY';\r
+$content = '<div class="itemcomment id<%memberid%>"><h3><a href="<%userlinkraw%>"title="<%ip%> | Click to visit <%user%>\'s website or send an email"><%user%></a> wrote:</h3><div class="commentbody"><%body%></div><div class="commentinfo"><%date%> <%time%></div></div>'   ;\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'PROMO_TITLE';\r
+$content = 'New Pictures Added!';\r
+$template->setTemplate($name,$content);\r
+\r
+$name = 'PROMO_BODY';\r
+$content = 'New pictures posted:<div id="NPG_thumbnail"><ul class="thumbnail"><%images%></ul></div><div id="NPG_footer"></div>';\r
+$template->setTemplate($name,$content);\r
+\r
+$name = 'PROMO_IMAGES';\r
+$content = '<li><a href="<%picturelink%>"><img style="<%centeredtopmargin(140,0)%>" src="<%thumbnail%>" /></a></li>';\r
+$template->setTemplate($name,$content);\r
+\r
+?>
\ No newline at end of file
diff --git a/NP_gallery/tags/v0.95/gallery/update/default_templates_094.inc b/NP_gallery/tags/v0.95/gallery/update/default_templates_094.inc
new file mode 100644 (file)
index 0000000..1f8e0f1
--- /dev/null
@@ -0,0 +1,170 @@
+<?php \r
+global $CONF;\r
+//to only be included by np_gallery script or update scripts\r
+if(isset($template)) unset($template);\r
+$template = new NPG_TEMPLATE(NPG_TEMPLATE::createnew('default094','default 0.94 templates'));\r
+\r
+$name = 'LIST_HEADER';\r
+$content = '<style type="text/css">@import "'.$CONF['IndexURL'].'/nucleus/plugins/gallery/NP_gallery.css";</style>'\r
+                   .'<%breadcrumb%><hr/><table width=100% ><thead>'\r
+                       .'<tr><th><a href="<%sortbytitle%>">Title</a></th>'\r
+                       .'<th><a href="<%sortbydescription%>">Description</a></th>'\r
+                       .'<th><a href="<%sortbyowner%>">Owner</a></th>'\r
+                       .'<th><a href="<%sortbymodified%>">Last Modified</a></th>'\r
+                       .'<th><a href="<%sortbynumber%>">Images</a></th></tr></thead><tbody>'\r
+                       .'<form method="post" action="action.php">'\r
+                       .'<input type="hidden" name="action" value="plugin" />'\r
+                       .'<input type="hidden" name="name" value="gallery" />'\r
+                       .'<input type="hidden" name="type" value="list" />'\r
+                       .'<input type="submit" value="Resort by:" /> <select name="sort" >'\r
+                       .'<option value="title" >Album Title'\r
+                       .'<option value="desc" >Album Description'\r
+                       .'<option value="owner">Owner'\r
+                       .'<option value="date">Date Modified'\r
+                       .'<option value="numb">Number of Images'\r
+                       .'</select></form>';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'LIST_BODY';\r
+$content = '<tr><td><a href="<%albumlink%>"><%title%></a></td><td><%description%></td><td><%ownername%></td><td><%modified%></td><td><%numberofimages%></td></tr>';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'LIST_THUM';\r
+$content = '<div class="thumbnailoutside"><div class="alpha-shadow"><div><a href="<%albumlink%>">' .\r
+               '<img src="<%albumthumbnail%>" alt="<%description%>" /></a></div></div>' .\r
+               '<br><div style="clear:both"><%title%> : <%numberofimages%> pics</div></div>';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'LIST_FOOTER';\r
+$content = '</tbody></table><hr/><br /><%if(canaddalbum)%><a href="<%addalbumlink%>">Add New Album | </a><%endif%><%if(canaddpicture)%><a href="<%addpictureslink%>"onclick="window.open(this.href,\'addpicture\',\'status=no,toolbar=no,scrollbars=yes,resizable=yes,width=600,height=400\');return false;"> Add Pictures</a><%endif%>';\r
+$template->setTemplate($name, $content);\r
+\r
+\r
+//\r
+$name = 'ALBUM_HEADER';\r
+$content = '<style type="text/css">@import "'.$CONF['IndexURL'].'/nucleus/plugins/gallery/NP_gallery.css";</style>'\r
+                       .'<%breadcrumb%><hr/>Page: <%pages%><hr/><div id="NPG_thumbnail">'\r
+                       .'<form method="post" action="action.php">'\r
+                       .'<input type="hidden" name="action" value="plugin" />'\r
+                       .'<input type="hidden" name="name" value="gallery" />'\r
+                       .'<input type="hidden" name="type" value="album" />'\r
+                       .'<input type="hidden" name="id" value="<%albumid%>" />'\r
+                       .'<input type="submit" value="Resort by:" /> <select name="sort" >'\r
+                       .'<option value="title" >Picture Title'\r
+                       .'<option value="desc" >Picture Description'\r
+                       .'<option value="date">Date Modified'\r
+                       .'<option value="titlea" >Picture Title - Ascending'\r
+                       .'<option value="desca" >Picture Description - Ascending'\r
+                       .'<option value="datea">Picture - Ascending'\r
+                       .'</select></form>';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'ALBUM_BODY';\r
+$content =     '<div class="thumbnailoutside"><div class=\'alpha-shadow\'><div><a href="<%picturelink%>"><img src="<%thumbnail%>" /></a></div></div><br><%picturedescription%></div>';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'ALBUM_SETDISPLAY';\r
+$content = '<div class="thumbnailoutside"><div class=\'alpha-shadow\'><div><a href="<%picturelink%>"><img src="<%thumbnail%>" /></a></div></div><br><%picturedescription%></div>';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'ALBUM_FOOTER';\r
+$content = '</div><div id="NPG_footer"><br /><hr/><%if(caneditalbum)%><a href="<%editalbumlink%>">Modify Album </a> | <%endif%><%if(canaddpicture)%><a href="<%addpicturelink%>"onclick="window.open(this.href,\'imagepopup\',\'status=no,toolbar=no,scrollbars=yes,resizable=yes,width=480,height=360\');return false;">Add Picture</a><%endif%></div>';\r
+$template->setTemplate($name, $content);\r
+\r
+//\r
+$name = 'ITEM_TOOLTIPSHEADER';\r
+$content = '<%if(tooltips)%></script><script type="text/javascript">var pictureid = "<%pictureid%>";</script>'\r
+       .'<script type="text/javascript" src="'.$CONF['IndexURL'].'/nucleus/plugins/gallery/NP_gallery.js"></script><%endif%>';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'ITEM_HEADER';\r
+$content = '<style type="text/css">@import "'.$CONF['IndexURL'].'/nucleus/plugins/gallery/NP_gallery.css";</style>'\r
+       .'<%breadcrumb%><br/><%if(prev)%><a href="<%previouslink%>">'\r
+       .' Previous</a><%else%> Previous<%endif%> |<%if(next)%><a href="<%nextlink%>"> '\r
+       .' Next</a><%else%> Next<%endif%><hr/><div id="NPG_picture">';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'ITEM_SLIDESHOWT';\r
+$content = '<script language="JavaScript">' .\r
+               'var NextURL = "<%nextlink%>&sliderunning=true";' .\r
+               'var interval = (1000);' .\r
+               'setTimeout("location.href=NextURL",3000);' .\r
+               '</script><div class="alpha-shadow"><div><img src="<%intermediatepicture%>"</div></div>';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'ITEM_SLIDESHOWC';\r
+$content = '<%if(slideshowson)%>' .\r
+               '<table><tr><td>' .\r
+               '<form method="post" action="'.$CONF['IndexURL'].'action.php?action=plugin&name=gallery&type=item&id=<%nextid%>&startstop=true">' .\r
+               '<input type="submit" value="Start Slideshow"/></form></td>' .\r
+               '<td><form method="post" action="'.$CONF['IndexURL'].'action.php?action=plugin&name=gallery&type=item&id=<%nextid%>">' .\r
+               '<input type="submit" value="Stop Slideshow"/></form></td></tr></table>'.\r
+               //'interval(secs)' .\r
+               //'<select name=intvalsecs>' .\r
+               //'<OPTION value="1">1 sec</OPTION>' .\r
+               //'<OPTION value="2">2 secs</OPTION>' .\r
+               //'<OPTION value="3">3 secs</OPTION>' .\r
+               //'</select>' .\r
+               //'</form>' .\r
+               '<%endif%>';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'ITEM_BODY';\r
+$content = '<div class=\'alpha-shadow\' <%if(tooltips)%>onmouseenter="showtipdivs();" onmouseleave="hidetipdivs();" onmouseover="showtipdivs();" onmouseout="hidetipdivs();"<%endif%>><div><%if(tooltips)%><%tooltip%><%endif%><img src="<%intermediatepicture%>" <%if(tooltips)%>onMouseOver="setLyr(this,\'testlayer\');"<%endif%> /></div></div>';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'ITEM_TOOLTIPSFOOTER';\r
+$content = '<%if(caneditpicture)%>'\r
+       .'<%if(tooltips)%><form name="clear" method="POST" action="'\r
+       .$CONF['IndexURL']\r
+       .'/action.php?action=plugin&name=gallery&type=tagdelete">'\r
+       .'<input type="hidden" name="pictureid" type="text" value ="<%pictureid%>">'\r
+       .'<input type="submit" name="Submit" value="Delete one tag">'\r
+       .'</form><a href="javascript:void(null)" onclick="start()">Create new caption. </a><%endif%><%endif%>'\r
+       .'</div>';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'ITEM_NEXTPREVTHUMBS';\r
+$content = '<%if(nextprevthumb)%>' .\r
+               '<div style="clear:both;margin:auto">' .\r
+               '<%if(prev)%>' .\r
+               '<div class=\'thumbnailoutside\'><div class="alpha-shadow" ><div>' .\r
+               '<a href="<%previouslink%>"><img src="<%previousthumbfilename%>" /></a></div></div></div>' .\r
+               '<%endif%>' .\r
+               '<div class=\'thumbnailoutside\' style="text-align:"></br></br>' .\r
+               '<%if(prev)%>Previous <%endif%>| <%if(next)%>Next <%endif%>>' .\r
+               '</div> ' .\r
+               '<%if(next)%><div class=\'thumbnailoutside\'><div class="alpha-shadow" ><div>' .\r
+               '<a href="<%nextlink%>"><img src="<%nextthumbfilename%>" /></a></div></div></div>' .\r
+               '<%endif%>' .\r
+               '</div>' .\r
+               '<%endif%>' .\r
+               '<div id="NPG_footer"><br />Description: <%description%>|<br />';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'ITEM_FOOTER';\r
+$content = '<a href="<%fullsizelink%>">Fullsize Image Link</a>'\r
+       .'|Last modified by <%owner%> on'\r
+       .'<%date%><%if(caneditpicture)%>|<a href="<%editpicturelink%>">Edit</a>|'\r
+       .'<a href="<%deletepicturelink%>">Delete</a>This picture in sets:<%keywords%><%endif%><br/></div><%if(commentsallowed)%>'\r
+       .'<div class="contenttitle"><h2>Comments</h2></div><%comments%><div class="contenttitle">'\r
+       .'<h2>Add Comment</h2></div><%commentform%><%endif%>';\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'COMMENT_BODY';\r
+$content = '<div class="itemcomment id<%memberid%>"><h3><a href="<%userlinkraw%>"title="<%ip%> | Click to visit <%user%>\'s website or send an email"><%user%></a> wrote:</h3><div class="commentbody"><%body%></div><div class="commentinfo"><%date%> <%time%></div></div>'   ;\r
+$template->setTemplate($name, $content);\r
+\r
+$name = 'PROMO_TITLE';\r
+$content = 'New Pictures Added!';\r
+$template->setTemplate($name,$content);\r
+\r
+$name = 'PROMO_BODY';\r
+$content = 'New pictures posted:<div id="NPG_thumbnail"><ul class="thumbnail"><%images%></ul></div><div id="NPG_footer"></div>';\r
+$template->setTemplate($name,$content);\r
+\r
+$name = 'PROMO_IMAGES';\r
+$content = '<li><a href="<%picturelink%>"><img style="<%centeredtopmargin(140,0)%>" src="<%thumbnail%>" /></a></li>';\r
+$template->setTemplate($name,$content);\r
+\r
+?>
\ No newline at end of file
diff --git a/NP_gallery/tags/v0.95/gallery/update/np_gallery_update061.php b/NP_gallery/tags/v0.95/gallery/update/np_gallery_update061.php
new file mode 100644 (file)
index 0000000..a201076
--- /dev/null
@@ -0,0 +1,172 @@
+<?php\r
+\r
+require_once('./../../../../config.php');\r
+global $member;\r
+if (!($member->isLoggedIn() && $member->isAdmin())) exit('You are not admin.');\r
+include_once (dirname(__FILE__).'/../config.php');\r
+\r
+//from 0.61a to 0.75\r
+global $NPG_CONF;\r
+\r
+$query = 'CREATE TABLE IF NOT EXISTS '.sql_table('plug_gallery_views').' ( '.\r
+               'vpictureid int unsigned not null, '.\r
+               'views int unsigned )';\r
+sql_query($query);\r
+               \r
+$query = 'CREATE TABLE IF NOT EXISTS '.sql_table('plug_gallery_views_log').' ( '.\r
+               'vlpictureid int unsigned not null, '.\r
+               'ip varchar(20), '.\r
+               'time timestamp )';\r
+sql_query($query);\r
+\r
+//new option\r
+global $manager;\r
+if ($manager->pluginInstalled('NP_gallery')) \r
+{\r
+       $plugin =& $manager->getPlugin('NP_gallery');\r
+       if ($plugin != NULL)\r
+               if($plugin->getoption('deletetables')) $plugin->createOption('deletetables',__NPG_OPT_DONT_DELETE_TABLES,'yesno','no'); \r
+}\r
+\r
+//new config\r
+if (!$NPG_CONF['viewtime']) setNPGoption('viewtime', 30 * 60);\r
+\r
+\r
+//make new table\r
+$query = 'CREATE TABLE IF NOT EXISTS '.sql_table('plug_gallery_template_desc').' ( '.\r
+       'tdid int unsigned not null auto_increment PRIMARY KEY, '.\r
+       'tdname varchar(20), '.\r
+       'tddesc varchar(200) )';\r
+sql_query($query);\r
+\r
+//if it already exists and there are no rows already, then add default\r
+$query = 'select * from '.sql_table('plug_gallery_template_desc');\r
+$res = sql_query($query);\r
+if(!mysql_num_rows($res)) {\r
+       $query = 'insert into '.sql_table('plug_gallery_template_desc').' (tdid, tdname, tddesc) values (NULL, "061default", "default templates from 0.61")';\r
+       sql_query($query);\r
+       $new_id = mysql_insert_id();\r
+       if(!$NPG_CONF['template']) setNPGOption('template', $newid);\r
+}\r
+\r
+//change previous template table and add reference to template_desc\r
+$query = 'show columns from '.sql_table('plug_gallery_template').' like "tdesc"';\r
+$res = sql_query($query);\r
+if(!mysql_num_rows($res)) {\r
+       $query = 'ALTER TABLE '.sql_table('plug_gallery_template').\r
+               ' add column tdesc int unsigned first ';\r
+       sql_query($query);\r
+       if(!$new_id) $new_id = 1;\r
+       $query = 'UPDATE '.sql_table('plug_gallery_template').' set tdesc = '.intval($new_id);\r
+       sql_query($query);\r
+}\r
+\r
+\r
+$query = 'show columns from '.sql_table('plug_gallery_comment').' like "cuser"';\r
+$res = sql_query($query);\r
+if(!mysql_num_rows($res)) {\r
+       $query = 'ALTER TABLE '.sql_table('plug_gallery_comment').\r
+               ' add column cuser varchar(40), '.\r
+               ' add column cmail varchar(100), '.\r
+               ' add column chost varchar(60), '.\r
+               ' add column cip varchar(15)';\r
+       sql_query($query);\r
+}\r
+\r
+\r
+$query = 'show columns from '.sql_table('plug_gallery_album').' like "commentsallowed"';\r
+$res = sql_query($query);\r
+if(!mysql_num_rows($res)) {\r
+       $query = 'ALTER TABLE '.sql_table('plug_gallery_album').\r
+               ' add column commentsallowed tinyint DEFAULT 1 ';\r
+       sql_query($query);\r
+}\r
+\r
+//new template\r
+if (!NPG_TEMPLATE::exists('default075')) {\r
+       $template = new NPG_TEMPLATE(NPG_TEMPLATE::createnew('default075','default 0.75 templates'));\r
+       if(!$NPG_CONF['template']) setNPGOption('template', $template->getID());\r
+       \r
+       $name = 'LIST_HEADER';\r
+       $content = '<%breadcrumb%><hr/><table width=100% ><thead>'\r
+                       .'<tr><th><a href="<%sortbytitle%>">Title</a></th>'\r
+                       .'<th><a href="<%sortbydescription%>">Description</a></th>'\r
+                       .'<th><a href="<%sortbyowner%>">Owner</a></th>'\r
+                       .'<th><a href="<%sortbymodified%>">Last Modified</a></th>'\r
+                       .'<th><a href="<%sortbynumber%>">Images</a></th></tr></thead><tbody>';\r
+       $template->setTemplate($name, $content);\r
+       \r
+       $name = 'LIST_BODY';\r
+       $content = '<tr><td><a href="<%albumlink%>"><%title%></a></td>'\r
+                       .'<td><%description%></td>'\r
+                       .'<td><%ownername%></td>'\r
+                       .'<td><%modified%></td>'\r
+                       .'<td><%numberofimages%></td></tr>';\r
+       $template->setTemplate($name, $content);\r
+       \r
+       $name = 'LIST_FOOTER';\r
+       $content = '</tbody></table><hr/><br />'\r
+                       .'<%if(canaddalbum)%>'\r
+                       .'<a href="<%addalbumlink%>">Add New Album | </a>'\r
+                       .'<%endif%>'\r
+                       .'<%if(canaddpicture)%>'\r
+                       .'<a href="<%addpictureslink%>"onclick="window.open(this.href,\'addpicture\',\'status=no,toolbar=no,scrollbars=no,resizable=yes,width=600,height=400\');return false;">'\r
+                       .' Add Pictures</a>'\r
+                       .'<%endif%>';\r
+       $template->setTemplate($name, $content);\r
+       \r
+       //\r
+       $name = 'ALBUM_HEADER';\r
+       $content = '<%breadcrumb%><hr/><div id="NPG_thumbnail"><ul class="thumbnail">';\r
+       $template->setTemplate($name, $content);\r
+       \r
+       $name = 'ALBUM_BODY';\r
+       $content = '<li><a href="<%picturelink%>"><img style="<%centeredtopmargin(140,-10)%>" src="<%thumbnail%>" /></a><br/><%picturetitle%><br/><%pictureviews%> views</li>';\r
+       $template->setTemplate($name, $content);\r
+       \r
+       $name = 'ALBUM_FOOTER';\r
+       $content = '</ul></div><div id="NPG_footer"><br /><hr/>'\r
+                       .'<%if(caneditalbum)%>'\r
+                       .'<a href="<%editalbumlink%>">Modify Album </a> | '\r
+                       .'<%endif%>'\r
+                       .'<%if(canaddpicture)%>'\r
+                       .'<a href="<%addpicturelink%>"onclick="window.open(this.href,\'imagepopup\',\'status=no,toolbar=no,scrollbars=no,resizable=yes,width=480,height=360\');return false;">Add Picture</a>'\r
+                       .'<%endif%>'\r
+                       .'</div>';\r
+       $template->setTemplate($name, $content);\r
+       \r
+       //\r
+       $name = 'ITEM_HEADER';\r
+       $content = '<%breadcrumb%><br/><a href="<%previouslink%>"> Previous |</a><a href="<%nextlink%>"> Next</a><hr/><div id="NPG_picture">';\r
+       $template->setTemplate($name, $content);\r
+       \r
+       $name = 'ITEM_BODY';\r
+       $content = '<a href="<%fullsizelink%>" onclick="window.open(this.href,\'imagepopup\',\'status=no,toolbar=no,scrollbars=auto,resizable=yes,width=<%width%>,height=<%height%>\');return false;">'\r
+                       .'<img src="<%intermediatepicture%>" /></a>';\r
+       $template->setTemplate($name, $content);\r
+       \r
+       $name = 'ITEM_FOOTER';\r
+       $content = '</div><div id="NPG_footer"><br /><%description%><br/><br/>Last modified by <%owner%> on <%date%> '\r
+                       .'<%if(caneditpicture)%>'\r
+                       .'<a href="<%editpicturelink%>">Edit</a>'\r
+                       .' | <a href="<%deletepicturelink%>">Delete</a>'\r
+                       .'<%endif%>'\r
+                       .'<br/></div>'\r
+                       .'<div class="contenttitle"><h2>Comments</h2></div><%comments%>'\r
+                       .'<div class="contenttitle"><h2>Add Comment</h2></div><%commentform%>'; \r
+       $template->setTemplate($name, $content);\r
+       \r
+       $name = 'COMMENT_BODY';\r
+       $content = '<div class="itemcomment id<%memberid%>">'\r
+                       .'<h3><a href="<%userlinkraw%>"'\r
+                       .'title="<%ip%> | Click to visit <%user%>\'s website or send an email">'\r
+                       .'<%user%></a> wrote:</h3>'\r
+                       .'<div class="commentbody">'\r
+                       .'<%body%></div><div class="commentinfo"><%date%> <%time%></div></div>' ;\r
+       $template->setTemplate($name, $content);\r
+}\r
+\r
+setNPGoption('currentversion',75);\r
+\r
+include(dirname(__FILE__).'/np_gallery_update075.php');\r
+?>\r
diff --git a/NP_gallery/tags/v0.95/gallery/update/np_gallery_update075.php b/NP_gallery/tags/v0.95/gallery/update/np_gallery_update075.php
new file mode 100644 (file)
index 0000000..e8e897b
--- /dev/null
@@ -0,0 +1,25 @@
+<?php\r
+\r
+require_once('./../../../../config.php');\r
+global $member;\r
+if (!($member->isLoggedIn() && $member->isAdmin())) exit('You are not admin.');\r
+include_once (dirname(__FILE__).'/../config.php');\r
+\r
+//from 0.75 to 0.76\r
+global $NPG_CONF;\r
+\r
+$query = 'show columns from '.sql_table('plug_gallery_album').' like "thumbnail"';\r
+$res = sql_query($query);\r
+if(!mysql_num_rows($res)) {\r
+       $query = 'ALTER TABLE '.sql_table('plug_gallery_album').\r
+               ' add column thumbnail varchar(100) ';\r
+       sql_query($query);\r
+}\r
+\r
+include(dirname(__FILE__).'/default_templates_076.inc');\r
+\r
+setNPGoption('currentversion',76);\r
+\r
+include(dirname(__FILE__).'/np_gallery_update077.php');\r
+\r
+?>\r
diff --git a/NP_gallery/tags/v0.95/gallery/update/np_gallery_update077.php b/NP_gallery/tags/v0.95/gallery/update/np_gallery_update077.php
new file mode 100644 (file)
index 0000000..e39d11b
--- /dev/null
@@ -0,0 +1,67 @@
+<?php\r
+\r
+require_once('./../../../../config.php');\r
+global $member;\r
+if (!($member->isLoggedIn() && $member->isAdmin())) exit('You are not admin.');\r
+include_once (dirname(__FILE__).'/../config.php');\r
+\r
+//from 0.77 to 0.80\r
+\r
+\r
+global $NPG_CONF;\r
+\r
+//add .80 templates -- sircambridge mods\r
+include(dirname(__FILE__).'/default_templates_080.inc');\r
+?>\r
+<p>The templates included with 0.8 use a different css technique to display the album thumbnails. To use these templates, you will need to add the three graphics files (shadow.gif, shadow2.png, shadow2.gif) to your skin directory. Then add the following lines to your css file. You will need to modify the location of the image files (bolded) to match your installation.</p>\r
+<hr />\r
+<p>\r
+.thumbnailoutside {<br>\r
+   width:155px !important;<br>\r
+        /*edit this height to give the description more room*/<br>\r
+   height:160px !important;<br>\r
+   float:left !important;<br>\r
+   text-align:center !important;<br>\r
+}\r
+</p>\r
+\r
+<p>\r
+.alpha-shadow {<br>\r
+   float:left;<br>\r
+   background: <b>url(/nucleus/skins/default/images/shadow.gif)</b> no-repeat bottom right;<br>\r
+   margin: 0px 0 0 10px !important;<br>\r
+   margin: 10px 0 0 10px;<br>\r
+   }\r
+</p>\r
+\r
+<p>\r
+.alpha-shadow div {<br>\r
+  background: <b>url(/nucleus/skins/default/images/shadow2.png)</b> no-repeat left top !important;<br>\r
+  background: <b>url(/nucleus/skins/default/images/shadow2.gif)</b> no-repeat left top;<br>\r
+  float: left;<br>\r
+  margin-top: 0px;<br>\r
+  padding: 0px 6px 6px 0px;<br>\r
+  }\r
+</p>\r
+\r
+<p>\r
+.alpha-shadow img {<br>\r
+  background-color: #fff;<br>\r
+  border: 1px solid #a9a9a9;<br>\r
+  padding: 4px !important;<br>\r
+  }\r
+</p>\r
+<hr />\r
+<?php\r
+\r
+//remove duplicates from views and add primary key to views\r
+sql_query('create temporary table dupfix SELECT vpictureid, MAX( views ) AS views FROM '.sql_table('plug_gallery_views').' GROUP BY vpictureid');\r
+sql_query('delete from '.sql_table('plug_gallery_views'));\r
+sql_query('alter table '.sql_table('plug_gallery_views').' add primary key(vpictureid)');\r
+sql_query('insert into '.sql_table('plug_gallery_views').' (vpictureid, views) select vpictureid, views from dupfix');\r
+\r
+setNPGoption('currentversion',80);\r
+\r
+echo 'NP_Gallery database updated to 0.8<br/>';\r
+\r
+?>\r
diff --git a/NP_gallery/tags/v0.95/gallery/update/shadow.gif b/NP_gallery/tags/v0.95/gallery/update/shadow.gif
new file mode 100644 (file)
index 0000000..94c205d
Binary files /dev/null and b/NP_gallery/tags/v0.95/gallery/update/shadow.gif differ
diff --git a/NP_gallery/tags/v0.95/gallery/update/shadow2.gif b/NP_gallery/tags/v0.95/gallery/update/shadow2.gif
new file mode 100644 (file)
index 0000000..a0b9ed4
Binary files /dev/null and b/NP_gallery/tags/v0.95/gallery/update/shadow2.gif differ
diff --git a/NP_gallery/tags/v0.95/gallery/update/shadow2.png b/NP_gallery/tags/v0.95/gallery/update/shadow2.png
new file mode 100644 (file)
index 0000000..21346c8
Binary files /dev/null and b/NP_gallery/tags/v0.95/gallery/update/shadow2.png differ
diff --git a/NP_gallery/tags/v0.95/gallery/update/test.html b/NP_gallery/tags/v0.95/gallery/update/test.html
new file mode 100644 (file)
index 0000000..083b100
--- /dev/null
@@ -0,0 +1,36 @@
+<div id="container">\r
+<script type="text/javascript">var pictureid = "261";</script>\r
+<script type="text/javascript" src="http://www.fr-fanatic.com/nucleus/plugins/gallery/NP_gallery.js">\r
+<style type="text/css">@import "http://www.fr-fanatic.com/nucleus/plugins/gallery/NP_gallery.css";</style>\r
+<a href="action.php?action=plugin&amp;name=gallery&amp;type=list&amp;sort=date">Gallery</a> > <a href="action.php?action=plugin&amp;name=gallery&amp;type=album&amp;id=8">Herta BSC (31-07-2005)</a> > <br/>\r
+<a href="action.php?action=plugin&amp;name=gallery&amp;type=item&amp;id=262"> Previous</a> |<a href="action.php?action=plugin&amp;name=gallery&amp;type=item&amp;id=260">  Next</a><hr/>\r
+<div id="NPG_picture"><div class='alpha-shadow' onmouseenter="showtipdivs();" onmouseleave="hidetipdivs();" onmouseover="showtipdivs();" onmouseout="hidetipdivs();">\r
+<div><div id="tooltip2"></div>\r
+<img src="http://www.fr-fanatic.com/media/gallery/int_qzhcuaDSC02681.JPG" onMouseOver="setLyr(this,'testlayer');" />\r
+</div></div><script type="text/javascript">hidetipdivs();</script></div><div id="NPG_footer"><br />Description: |<br /><a href="http://www.fr-fanatic.com/media/gallery/qzhcuaDSC02681.JPG">Fullsize Image Link</a>||Last modified by r0nh on Sunday 31st of July 2005 08:39:12 PM <br/></div><div class="contenttitle"><h2>Comments</h2></div>No comments for this picture<br/><div class="contenttitle"><h2>Add Comment</h2></div><form method="post" action="http://www.fr-fanatic.com/action.php">\r
+  <div class="commentform">\r
+       \r
+       <input type="hidden" name="type" value="addcomment" />\r
+       <input type="hidden" name="action" value="plugin" />\r
+\r
+       <input type="hidden" name="name" value="gallery" />\r
+       <input type="hidden" name="itemid" value="261" />\r
+       <label for="nucleus_cf_body">Uw reactie</label>:\r
+       <br />\r
+       <textarea name="body" class="formfield" cols="40" rows="10" id="nucleus_cf_body"></textarea>\r
+       <br />\r
+       <label for="nucleus_cf_name">Naam</label>: <input name="user" size="40" maxlength="40" value="" class="formfield" id="nucleus_cf_name" />\r
+       <br />\r
+\r
+       <label for="nucleus_cf_mail">E-mail/HTTP</label>: <input name="userid" size="40" maxlength="60" value="" class="formfield" id="nucleus_cf_mail" />\r
+\r
+        \r
+       <br/>\r
+       \r
+       <input type="checkbox" value="1" name="remember" id="nucleus_cf_remember"  /><label for="nucleus_cf_remember">Onthoud wie ik ben</label>\r
+       <br />\r
+       <input type="submit" value="Reactie toevoegen" class="formbutton" />\r
+  </div>\r
+</form>\r
+\r
+</div>
\ No newline at end of file