OSDN Git Service

NP_gallery v0.95
[nucleus-jp/nucleus-plugins.git] / NP_gallery / tags / v0.95 / gallery / picture_class.php
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