--- /dev/null
+<?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 = '&';\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