--- /dev/null
+<?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