OSDN Git Service

ADD: プラグイン「NP_Medium」
[nucleus-jp/nucleus-next.git] / nucleus / plugins / medium / MediumActions.php
1 <?php
2 class MediumActions extends BaseActions
3 {
4         private $type = '';
5         
6         static private $default_actions = array(
7                 'actionurl',
8                 'adminurl',
9                 'collection',
10                 'conf',
11                 'pagehead',
12                 'pagefoot',
13                 'collectionlist',
14                 'stylesheet',
15                 'script'
16                 );
17         
18         static public $default_skin_types = array(
19                 'login'         => 'NP_Medium',
20                 'choose'        => _UPLOAD_TITLE,
21                 'select'        => _SKIN_PART_ALIST,
22                 'error'         => _ERROR
23         );
24         
25         static public function getAvailableSkinTypes()
26         {
27                 return self::$default_skin_types;
28         }
29         
30         public function getAvailableActions()
31         {
32                 global $manager;
33                 
34                 $extra_actions = array();
35                 
36                 switch ( $manager->getPlugin('NP_Medium')->type )
37                 {
38                         case 'login':
39                                 $extra_actions = array(
40                                         'name',
41                                 );
42                                 break;
43                         case 'select':
44                                 $extra_actions = array(
45                                         'amount',
46                                         'filter',
47                                         'medialist',
48                                         'next',
49                                         'prev'
50                                 );
51                                 break;
52                         case 'choose':
53                                 $extra_actions = array(
54                                         'pluginextras',
55                                         'ticket',
56                                 );
57                                 break;
58                         case 'error':
59                                 $extra_actions = array(
60                                         'message',
61                                 );
62                                 break;
63                 }
64                 
65                 $defined_actions = array_merge(self::$default_actions, $extra_actions);
66                 
67                 return array_merge($defined_actions, parent::getAvailableActions());
68         }
69         
70         /**
71          * MediumActions::_construct
72          * 
73          * @param       string  $type   always 'fileparse'
74          * @return      void
75          */
76         public function __construct($type)
77         {
78                 parent::__construct();
79                 return;
80         }
81         
82         public function parse_conf($key)
83         {
84                 global $CONF;
85                 if ( array_key_exists($key, $CONF) )
86                 {
87                         echo $CONF[$key];
88                 }
89                 return;
90         }
91         
92         public function parse_actionurl()
93         {
94                 global $CONF;
95                 echo "{$CONF['ActionURL']}?action=plugin&amp;name=medium";
96                 return;
97         }
98         
99         public function parse_collection()
100         {
101                 global $manager;
102                 echo (string) $manager->getPlugin('NP_Medium')->collection;
103                 return;
104         }
105         
106         public function parse_pagehead()
107         {
108                 global $manager;
109                 $path = $manager->getPlugin('NP_Medium')->getDirectory() . 'skins/pagehead.skn';
110                 $contents = $this->parser->skin->getContentFromFile($path);
111                 $this->parser->parse($contents);
112                 return;
113         }
114         
115         public function parse_pagefoot()
116         {
117                 global $manager;
118                 $path = $manager->getPlugin('NP_Medium')->getDirectory() . 'skins/pagefoot.skn';
119                 $contents = $this->parser->skin->getContentFromFile($path);
120                 $this->parser->parse($contents);
121                 return;
122         }
123         
124         public function parse_stylesheet($name)
125         {
126                 global $CONF;
127                 echo "{$CONF['PluginURL']}medium/styles/{$name}";
128                 return;
129         }
130         
131         public function parse_script($name)
132         {
133                 global $CONF;
134                 echo "{$CONF['PluginURL']}medium/scripts/{$name}";
135                 return;
136         }
137         
138         public function parse_name()
139         {
140                 global $member;
141                 
142                 if ( !$member->isLoggedIn() )
143                 {
144                         echo (string) requestVar('login');
145                 }
146                 else
147                 {
148                         echo (string) $member->getDisplayName();
149                 }
150                 return;
151         }
152         
153         public function parse_filter()
154         {
155                 global $manager;
156                 echo (string) $manager->getPlugin('NP_Medium')->filter;
157                 return;
158         }
159         
160         public function parse_ticket()
161         {
162                 global $manager;
163                 echo $manager->addTicketHidden();
164                 return;
165         }
166         
167         public function parse_message()
168         {
169                 global $manager;
170                 echo (string) $manager->getPlugin('NP_Medium')->message;
171                 return;
172         }
173         
174         public function parse_pluginextras()
175         {
176                 global $manager;
177                 $manager->notify("MediaUploadFormExtras", array());
178                 return;
179         }
180         
181         public function parse_amount()
182         {
183                 global $manager;
184                 echo (string) $manager->getPlugin('NP_Medium')->amount;
185                 return;
186         }
187         
188         public function parseoffset()
189         {
190                 global $manager;
191                 echo (string) $manager->getPlugin('NP_Medium')->offset;
192                 return;
193         }
194         
195         public function parse_prev()
196         {
197                 global $manager;
198                 echo (string) $manager->getPlugin('NP_Medium')->prev;
199                 return;
200         }
201         
202         public function parse_next()
203         {
204                 global $manager;
205                 echo (string) $manager->getPlugin('NP_Medium')->next;
206                 return;
207         }
208         
209         public function parse_collectionlist()
210         {
211                 global $CONF, $manager;
212                 
213                 $plugin = $manager->getPlugin('NP_Medium');
214                 
215                 $data = array(
216                         'actionurl'     => "{$CONF['ActionURL']}?action=plugin&amp;type=medium"
217                 );
218                 $this->parser->parse(Template::fill($plugin->getOption('collectionlist_head'), $data));
219                 
220                 $collections = Media::getCollectionList();
221                 foreach ( $collections as $name => $desc )
222                 {
223                         $data = array(
224                                 'name'  => $name,
225                                 'desc'  => $desc
226                         );
227                         
228                         if ( $plugin->collection ==  $name )
229                         {
230                                 $data['selected'] = 'selected="selected"';
231                         }
232                         
233                         $this->parser->parse(Template::fill($plugin->getOption('collectionlist_body'), $data));
234                 }
235                 
236                 $data = array(
237                         'actionurl'             => "{$CONF['ActionURL']}?action=plugin&amptype=medium",
238                         'collection'    => $plugin->collection
239                 );
240                 $this->parser->parse(Template::fill($plugin->getOption('collectionlist_foot'), $data));
241         }
242         
243         public function parse_medialist()
244         {
245                 global $CONF, $manager;
246                 
247                 $plugin = $manager->getPlugin('NP_Medium');
248                 
249                 $data = array(
250                         'actionurl'             => "{$CONF['ActionURL']}?action=plugin&amp;type=medium",
251                         'collection'    => $plugin->collection,
252                         'description'   => $plugin->description
253                 );
254                 $this->parser->parse(Template::fill($plugin->getOption('medialist_head'), $data));
255                 
256                 $image_template = $plugin->getOption('medialist_body_image');
257                 $other_template = $plugin->getOption('medialist_body_other');
258                 
259                 foreach ( $plugin->media as $medium )
260                 {
261                         $data = array(
262                                 'mime'                  => $medium->mime,
263                                 'collection'    => $medium->collection,
264                                 'filename'              => $medium->filename,
265                                 'shortfilename' => Entity::shorten($medium->filename, 24, '...'),
266                                 'prefix'                => $medium->prefix,
267                                 'name'                  => $medium->name,
268                                 'suffix'                => $medium->suffix,
269                                 'timestamp'             => date("Y-m-d", $medium->timestamp),
270                                 'size'                  => $medium->size,
271                                 'width'                 => $medium->width,
272                                 'height'                => $medium->height,
273                                 'mediumurl'             => "{$CONF['MediaURL']}{$medium->collection}/{$medium->filename}"
274                         );
275                         
276                         if ( !array_key_exists($medium->mime, Media::$image_mime) )
277                         {
278                                 $this->parser->parse(Template::fill($other_template, $data));
279                         }
280                         else
281                         {
282                                 $this->parser->parse(Template::fill($image_template, $data));
283                         }
284                 }
285                 
286                 $data = array();
287                 $this->parser->parse(Template::fill($plugin->getOption('medialist_foot'), $data));
288                 
289                 return;
290         }
291         
292         protected function checkCondition($field, $name='', $value = '')
293         {
294                 global $manager;
295                 
296                 $plugin = $manager->getPlugin('NP_Medium');
297                 
298                 $condition = 0;
299                 switch ( $field )
300                 {
301                         case 'prev':
302                                 $condition = (boolean) ($plugin->prev != $plugin->offset );
303                                 break;
304                         case 'next':
305                                 $condition = (boolean) $plugin->next;
306                                 break;
307                         default:
308                                 break;
309                 }
310                 return $condition;
311         }
312 }