OSDN Git Service

NP_gallery 0.94
[nucleus-jp/nucleus-plugins.git] / NP_gallery / trunk / gallery / album_class.php
1 <?php\r
2 \r
3 class ALBUM {\r
4         var $id;\r
5         var $setid;\r
6         var $title;\r
7         var $description;\r
8         var $ownerid;\r
9         var $modified;\r
10         var $noi;\r
11         var $ownername;\r
12         var $thumbnail;\r
13         var $options;\r
14         \r
15         var $totalpictures;\r
16         var $displayoffset;\r
17         var $pageamount;\r
18         \r
19         var $template;\r
20         var $query;\r
21         \r
22         \r
23         function ALBUM($id = 0){\r
24                 //check if exists, populate variables, etc.\r
25                 if($id) {\r
26                         $data = $this->get_data($id);\r
27                         $this->id = $data->albumid;\r
28                         $this->title = $data->title;\r
29                         $this->description = $data->description;\r
30                         $this->ownerid = $data->ownerid;\r
31                         $this->modified = $data->modified;\r
32                         $this->noi = $data->numberofimages;\r
33                         $this->ownername = $data->name;\r
34                         $this->thumbnail = $data->thumbnail;\r
35                         $this->options['commentsallowed'] = $data->commentsallowed;\r
36                         $this->options['publicalbum'] = $data->publicalbum;\r
37                 }\r
38                 \r
39         }\r
40         \r
41         function getIDfromPictureID($pictureid) {\r
42 \r
43         }\r
44         \r
45         function commentsallowed($pictureid) {\r
46                 $query = 'select a.commentsallowed from '.sql_table('plug_gallery_album').' as a, '.sql_table('plug_gallery_picture').' as b where a.albumid=b.albumid and pictureid='.$pictureid;\r
47                 $res = sql_query($query);\r
48                 $row = mysql_fetch_object($res);\r
49                 return $row->commentsallowed;\r
50                 \r
51         }\r
52         \r
53         function settemplate($template) {\r
54                 $this->template = & $template;\r
55         }\r
56         \r
57         function setquery($query) {\r
58                 $this->query = & $query;\r
59         }\r
60         \r
61         function add_new($data) {\r
62                 $atitle = addslashes($data['title']);\r
63                 $adescription = addslashes($data['description']);\r
64                 $aowner = $data['ownerid'];\r
65                 $apublicalbum = $data['publicalbum'];\r
66                 if(!$aowner) $aowner = 0; //make the owner guest\r
67                 $query = "insert into ".sql_table('plug_gallery_album')." (albumid, title, description, ownerid, modified, numberofimages, commentsallowed, publicalbum) values ".\r
68                                         "(NULL, '$atitle','$adescription',$aowner,NULL,0,1,'$apublicalbum')";\r
69                 sql_query($query);\r
70                 return mysql_insert_id();\r
71         }\r
72         \r
73         function get_data($id) {\r
74                 $result = sql_query("select a.*,b.mname as name from ".sql_table('plug_gallery_album').' as a left join '.sql_table('member')." as b on a.ownerid=b.mnumber where a.albumid=$id" );\r
75                 if(mysql_num_rows($result)) $data = mysql_fetch_object($result); \r
76                 else {\r
77                         $data->albumid = 0;\r
78                         return $data;\r
79                 }\r
80                 \r
81                 if(!$data->name) $data->name='guest';\r
82                 \r
83                 //default album thumbnail if thumbnail is blank\r
84                 if(!$data->thumbnail) {\r
85                         $query = 'select thumb_filename from '.sql_table('plug_gallery_picture').' where albumid='.$data->albumid.' LIMIT 1';\r
86                         $result = sql_query($query);\r
87                         if(mysql_num_rows($result) ){\r
88                                 $row = mysql_fetch_object($result);\r
89                                 $data->thumbnail = $row->thumb_filename;\r
90                                 sql_query('update '.sql_table('plug_gallery_album').' set thumbnail=\''.$row->thumb_filename.'\' where albumid='.$data->albumid);\r
91                         }\r
92                 }\r
93                 return $data;\r
94         }\r
95         \r
96         function get_team($id) {\r
97                 $result = sql_query("select a.*, b.mname from ".sql_table('member').' as b, '.sql_table('plug_gallery_album_team')." as a where a.talbumid=$id and a.tmemberid=b.mnumber");\r
98                 if(!mysql_num_rows($result)) return false;\r
99                 $j=0;\r
100                 while ($team[$j] = mysql_fetch_object($result)) {\r
101                         $j++;\r
102                 }\r
103                 return $team;\r
104         }\r
105         \r
106         function get_pictures($id = 0,$so) {\r
107                 if($this->query == '' && $id == 0) return null;\r
108                 if($this->query == '') $this->query = "select * from ".sql_table('plug_gallery_picture')." where albumid=$id $so";\r
109                 $result = sql_query($this->query);\r
110                 $i=0;\r
111                 while ($row = mysql_fetch_object($result)) {\r
112                         $data[$i] = $row;\r
113                         $res = sql_query('select views from '.sql_table('plug_gallery_views').' where vpictureid = '.$row->pictureid);\r
114                         if(mysql_num_rows($res)) {\r
115                                 $row2 = mysql_fetch_object($res);\r
116                                 $data[$i]->views = $row2->views;\r
117                         }\r
118                         else $data[$i]->views = 0;\r
119                         mysql_free_result($res);\r
120                         $i++;\r
121                 }\r
122                 $this->totalpictures = $i;\r
123                 \r
124                 return $data;\r
125         }\r
126         \r
127         function get_set_pictures($splitdata,$so) {\r
128                 if($splitdata == '') return null;\r
129                 $j=0;\r
130                 $i=0;\r
131                 $limit = sizeof($splitdata);\r
132                 //echo $limit;\r
133                 //print_r($splitdata);\r
134                 while ($j<$limit){\r
135                         $keyword = $splitdata[$j];\r
136                         //echo $keyword;\r
137                         $this->query = "select * from ".sql_table('plug_gallery_picture')." WHERE keywords like '%".$keyword."%' ";\r
138                         $result = sql_query($this->query);\r
139                         while ($row = @mysql_fetch_object($result)) {\r
140                                 $data[$i] = $row;\r
141                                 $res = sql_query('select views from '.sql_table('plug_gallery_views').' where vpictureid = '.$row->pictureid);\r
142                                 if(mysql_num_rows($res)) {\r
143                                         $row2 = mysql_fetch_object($res);\r
144                                         $data[$i]->views = $row2->views;\r
145                                 }\r
146                                 else $data[$i]->views = 0;\r
147                                 mysql_free_result($res);\r
148                         $i++;\r
149                         }\r
150                         $j++;\r
151                 }\r
152                 $this->totalpictures = $i;\r
153                 \r
154                 return $data;\r
155         }\r
156         \r
157         function increaseNumberByOne($id) {\r
158                 if(!$id) $id = $this->id;\r
159                 $result = sql_query("update ".sql_table('plug_gallery_album')." set numberofimages = numberofimages + 1 where albumid =$id");\r
160         }\r
161         \r
162         function decreaseNumberByOne($id) {\r
163                 if(!$id) $id = $this->id;\r
164                 $result = sql_query("update ".sql_table('plug_gallery_album')." set numberofimages = numberofimages - 1 where albumid =$id");\r
165         }\r
166         \r
167         function fixnumberofimages($id) {\r
168                 if(!$id) {\r
169                         $id = $this->id;\r
170                         $numberofimages = $this->numberofimages;\r
171                 }\r
172                 else {\r
173                         $result = sql_query('select numberofimages from '.sql_table('plug_gallery_album'). " where albumid=$id");\r
174                         $row = mysql_fetch_object($result);\r
175                         $numberofimages = $row->numberofimages;\r
176                 }\r
177                 $result = sql_query('select count(*) as noi from '.sql_table('plug_gallery_picture')." where albumid=$id");\r
178                 $row = mysql_fetch_object($result);\r
179                 $noi = $row->noi;\r
180                 if($noi <> $numberofimages) {\r
181                         sql_query("update ".sql_table('plug_gallery_album')." set numberofimages=$noi where albumid=$id");\r
182                 }\r
183         }\r
184         function write() {\r
185                 $query = "update ".sql_table('plug_gallery_album')\r
186                         ." set title='{$this->title}', "\r
187                         ." commentsallowed= {$this->option['commentsallowed']}, "\r
188                         ." thumbnail='{$this->thumbnail}', "\r
189                         ." description='{$this->description}', "\r
190                         ." publicalbum= {$this->option['publicalbum']}"\r
191                         ." where albumid={$this->id}";\r
192                 sql_query($query);\r
193         }\r
194         \r
195         function getId() { return $this->id; }\r
196         function getName() {return $this->name;}\r
197         function getDescription() {return $this->description;}\r
198         function getNoi() {return $this->noi;}\r
199         function getOwnerName() {}\r
200         function getOwnerid() {return $this->ownerid;}\r
201         function getLastModified() {return $this->modified;}\r
202         function getOptions() {return $this->options; }\r
203         function getTitle() {return $this->title;}\r
204         \r
205         function set_title($title) { $this->title = $title;}\r
206         function set_description($description) { $this->description = $description; }\r
207         function set_thumbnail($thumbnail) { $this->thumbnail = $thumbnail; }\r
208         function set_commentsallowed($value) {$this->option['commentsallowed'] = intval($value);}\r
209         function set_publicalbum($value) {$this->option['publicalbum'] = intval($value);}\r
210         \r
211         function display($sort) {\r
212                 global $NPG_CONF,$manager;\r
213                 $defaultorder = $NPG_CONF['defaultorder'];\r
214                 $sorting = array('title'=>'title ASC',\r
215                                                 'desc'=>'description ASC',\r
216                                                 'owner'=>'ownername ASC',\r
217                                                 'date'=>'modified DESC',\r
218                                                 'titlea'=>'title DESC',\r
219                                                 'desca'=>'description DESC',\r
220                                                 'ownera'=>'ownername DESC',\r
221                                                 'datea'=>'modified ASC',\r
222                                                 'filenamea'=>'filename ASC',\r
223                                                 'filename'=>'filename DESC');\r
224                 \r
225                 \r
226                 if(array_key_exists($sort,$sorting)){\r
227                         $so = 'order by '.$sorting[$sort].', pictureid DESC';\r
228                 }\r
229                 else {\r
230                         $so = 'order by '.$sorting[$defaultorder].', pictureid DESC';\r
231                 }\r
232                 \r
233                 $page = intval(requestvar('page'));\r
234                 if(!$page) $page = 1;\r
235                 \r
236                 $amount = requestvar('amount');\r
237                 \r
238                 if (!$NPG_CONF['ThumbnailsPerPage']) {\r
239                         setNPGOption('ThumbnailsPerPage',20);\r
240                         $NPG_CONF['ThumbnailsPerPage'] = 20;\r
241                 }\r
242                 \r
243                 if($amount) $this->pageamount = intval($amount);\r
244                 else $this->pageamount = $NPG_CONF['ThumbnailsPerPage'];\r
245                 \r
246                 $offset = intval($page - 1) * $this->pageamount;\r
247                 if ($offset <= 0) $offset = 0;\r
248                 $this->displayoffset = $offset;\r
249                 \r
250                 if(!$NPG_CONF['template']) $NPG_CONF['template'] = 1;\r
251                 \r
252                 $this->template = & new NPG_TEMPLATE($NPG_CONF['template']);\r
253                 \r
254                 $template_header = $this->template->section['ALBUM_HEADER'];\r
255                 $template_body = $this->template->section['ALBUM_BODY'];\r
256                 $template_footer = $this->template->section['ALBUM_FOOTER'];\r
257 \r
258                 $actions = new ALBUM_ACTIONS($this);\r
259                 $parser = new PARSER($actions->getdefinedActions(),$actions);\r
260                 $actions->setparser($parser);\r
261                 \r
262                 $data = $this->get_pictures($this->getId(),$so);\r
263                 \r
264                 //header\r
265                 $parser->parse($template_header);\r
266                 \r
267                 //body\r
268                 $i=0;\r
269                 while($data[$i]) {\r
270                         if($i >= $offset && $i < ($offset + $this->pageamount)) {\r
271                                 $actions->setCurrentThumb($data[$i]);\r
272                                 $parser->parse($template_body);\r
273                                 }\r
274                         $i++;\r
275                 }\r
276                 \r
277                 //footer\r
278                 $parser->parse($template_footer);\r
279         } //end of display()\r
280         \r
281 function displayset($splitdata,$sort) {\r
282                 global $NPG_CONF,$manager;\r
283                 $defaultorder = $NPG_CONF['defaultorder'];\r
284                 $sorting = array('title'=>'title ASC',\r
285                                                 'desc'=>'description ASC',\r
286                                                 'owner'=>'ownername ASC',\r
287                                                 'date'=>'modified DESC',\r
288                                                 'titlea'=>'title DESC',\r
289                                                 'desca'=>'description DESC',\r
290                                                 'ownera'=>'ownername DESC',\r
291                                                 'datea'=>'modified ASC',\r
292                                                 'filenamea'=>'filename ASC',\r
293                                                 'filename'=>'filename DESC');\r
294                 if($sort){\r
295                         $so = 'order by '.$sorting[$sort].', pictureid DESC';\r
296                 }\r
297                 else {\r
298                         $so = 'order by '.$sorting[$defaultorder].', pictureid DESC';\r
299                 }\r
300                 \r
301                 if(!$NPG_CONF['template']) $NPG_CONF['template'] = 1;\r
302                 \r
303                 $this->template = & new NPG_TEMPLATE($NPG_CONF['template']);\r
304                 \r
305                 $template_setdisplay = $this->template->section['ALBUM_BODY'];\r
306 \r
307                 $actions = new ALBUM_ACTIONS($this);\r
308                 $parser = new PARSER($actions->getdefinedActions(),$actions);\r
309                 $actions->setparser($parser);\r
310                 \r
311                 $data = $this->get_set_pictures($splitdata,$so);\r
312                 \r
313                 //header\r
314                 //$parser->parse($template_setdisplay);\r
315                 \r
316                 //body\r
317                 $i=0;\r
318                 while($data[$i]) {\r
319                         $actions->setCurrentThumb($data[$i]);\r
320                         $parser->parse($template_setdisplay);\r
321                         $i++;\r
322                 }\r
323         } //end of displayset()\r
324         \r
325 } //end album class\r
326 \r
327 class ALBUM_ACTIONS extends BaseActions {\r
328         var $CurrentThumb; //query object\r
329         var $album;\r
330         var $parser;\r
331 \r
332         \r
333         function ALBUM_ACTIONS(& $currentalbum) {\r
334                 $this->BaseActions();\r
335                 $this->album = & $currentalbum;\r
336                 \r
337         }\r
338 \r
339         function getdefinedActions() {\r
340                 return array(\r
341                         'breadcrumb',\r
342                         'sortbytitle',\r
343                         'sortbydescription',\r
344                         'sortbyowner',\r
345                         'sortbymodified',\r
346                         'sortbynumber',\r
347                         'albumtitle',\r
348                         'albumid',\r
349                         'albumdescription',\r
350                         'picturedescription',\r
351                         'picturelink',\r
352                         'thumbnail',\r
353                         'centeredtopmargin',\r
354                         'pictureviews',\r
355                         'editalbumlink',\r
356                         'addpicturelink',\r
357                         'picturetitle',\r
358                         'pages',\r
359                         'albumlink',\r
360                         'if',\r
361                         'else',\r
362                         'endif' );\r
363                         \r
364         }\r
365         \r
366         function setParser(&$parser) {$this->parser =& $parser; }\r
367         function setCurrentThumb(&$currentthumb) { $this->CurrentThumb =& $currentthumb; }\r
368         \r
369         function parse_pages($sep = ' ') {\r
370                 \r
371                 $totalpages = $this->album->totalpictures / $this->album->pageamount;\r
372                 $currentpage = floor($this->album->displayoffset / $this->album->pageamount);\r
373 \r
374                 \r
375                 for($j=0; $j < $totalpages; $j++) {\r
376                         $extra['page']=$j+1;\r
377                         $extra['amount']=$this->album->pageamount;\r
378                         if ($j == $currentpage) echo ($j+1);\r
379                         else {\r
380                                 echo '<a href="';\r
381                                 $this->parse_albumlink($extra);\r
382                                 echo '">'.($j+1).'</a>';\r
383                         }\r
384                         if($j <> $totalpages) echo $sep;                        \r
385                 }\r
386         }\r
387         function parse_sortbytitle() { \r
388                 $so = requestvar('sort');\r
389                 if($so == 'title') $so = 'titlea'; else $so = 'title';\r
390                 echo generateLink('album', $so); \r
391         }\r
392         function parse_sortbydescription() {\r
393                 $so = requestvar('sort');\r
394                 if($so == 'desc') $so = 'desca'; else $so = 'desc';\r
395                 echo generateLink('album', $so); \r
396         }\r
397         function parse_sortbyowner() {\r
398                 $so = requestvar('sort');\r
399                 if($so == 'owner') $so = 'ownera'; else $so = 'owner';\r
400                 echo generateLink('album', $so); \r
401         }\r
402         function parse_sortbymodified() {\r
403                 $so = requestvar('sort');\r
404                 if($so == 'date') $so = 'datea'; else $so = 'date';\r
405                 echo generateLink('album', $so); \r
406         }\r
407         function parse_sortbynumber() {\r
408                 $so = requestvar('sort');\r
409                 if($so == 'numb') $so = 'numba'; else $so = 'numb';\r
410                 echo generateLink('album', $so); \r
411         }\r
412         function parse_albumlink($extra2 = 0) {\r
413                 $type = requestvar('type');\r
414                 $knownactions = array( 'album','item' );\r
415                 if(in_array($type,$knownactions)) {\r
416                         $extra['id'] = $this->album->getID();\r
417                         $type = 'album';\r
418                 }\r
419                 else {\r
420                         $allowed = array('limit');\r
421                         foreach($_GET as $key => $value) if(in_array($key,$allowed)) $extra[$key] = $value;\r
422                 }\r
423                 $extraparams = array_merge($extra, $extra2);\r
424                 echo NP_gallery::MakeLink($type,$extraparams);\r
425         }\r
426         \r
427         function parse_breadcrumb($sep = '>') {\r
428                 echo '<a href="';\r
429                 echo generateLink('list');\r
430                 echo '">'.__NPG_BREADCRUMB_GALLERY.'</a> '.$sep.' ';\r
431                 $this->parse_albumtitle();              \r
432         }\r
433         \r
434         function parse_albumtitle() {\r
435                 echo $this->album->getTitle();\r
436         }\r
437         function parse_albumid(){\r
438                 echo $this->album->getId();\r
439         }\r
440 \r
441         function parse_albumdescription() {echo $this->album->getDescription(); }\r
442         function parse_picturedescription() {echo $this->CurrentThumb->description; }\r
443         function parse_picturelink() { \r
444                 $type = requestvar('type');\r
445                 $sort = requestvar('sort');\r
446                 if($type) {\r
447                         if($type == 'album') $ltype = 'item';\r
448                         else $ltype = $type;\r
449                 } else $ltype = 'item';\r
450                 $extra = array('id' => $this->CurrentThumb->pictureid,\r
451                                                 'sort' => $sort\r
452                                                 );\r
453                 $allowed = array('limit');\r
454                 foreach($_GET as $key => $value) if(in_array($key,$allowed)) $extra[$key] = $value;\r
455                 echo NP_gallery::MakeLink($ltype, $extra ); \r
456                 }\r
457                 \r
458         function parse_thumbnail() { \r
459                 global $CONF;\r
460                 echo $CONF['IndexURL'].$this->CurrentThumb->thumb_filename;\r
461         }\r
462         \r
463         function parse_picturetitle() {echo $this->CurrentThumb->title; }\r
464         function parse_centeredtopmargin($height,$adjustment) {\r
465                 global $NP_BASE_DIR;\r
466                 $image_size = getimagesize($NP_BASE_DIR.$this->CurrentThumb->thumb_filename);\r
467                 $topmargin = ((intval($height) - intval($image_size[1])) / 2) + intval($adjustment);\r
468                 echo 'margin-top: '.$topmargin.'px;';\r
469         }\r
470         function parse_pictureviews() {echo $this->CurrentThumb->views; }\r
471         function parse_editalbumlink() { if($this->album->getID()) echo generateLink('editAlbumF',$this->album->getID() );}\r
472         function parse_addpicturelink() { if($this->album->getID()) echo generateLink('addPictF',$this->album->getID() );}\r
473         \r
474         function parse_if($field, $name='', $value = '') {\r
475                 global $gmember;\r
476                 \r
477                 $condition = 0;\r
478                 switch ($field) {\r
479                         case 'canaddpicture':\r
480                                 $condition = $gmember->canAddPicture($this->album->getID());\r
481                                 break;\r
482                         case 'caneditalbum':\r
483                                 $condition = $gmember->canModifyAlbum($this->album->getID());\r
484                                 break;\r
485                         default: \r
486                                 break;\r
487                 }\r
488                 \r
489                 $this->_addIfCondition($condition);\r
490                 \r
491         }\r
492 }\r
493 \r
494 ?>\r