OSDN Git Service

ADD: Mocchiが手がけたファイル管理プラグイン一式をコミット
[nucleus-jp/nucleus-plugins.git] / NP_MediaUtils / NP_MediaUtils.php
1 <?php\r
2 /**\r
3  * MediaUtils plugin for Nucleus CMS\r
4  * Version 0.9.6 (1.0 RC2) for PHP5\r
5  * Written By Mocchi, Apr. 04, 2011\r
6  * \r
7  * This program is free software; you can redistribute it and/or\r
8  * modify it under the terms of the GNU General Public License\r
9  * as published by the Free Software Foundation; either version 3\r
10  * of the License, or (at your option) any later version.\r
11  */\r
12 \r
13 class NP_MediaUtils extends NucleusPlugin {\r
14         public function getName()                       { return 'MediaUtils'; }\r
15         public function getAuthor()             { return 'Mocchi'; }\r
16         public function getURL()                        { return 'http://japan.nucleuscms.org/wiki/plugins:mediautils'; }\r
17         public function getVersion()            { return '0.9.6 (1.0 RC2)'; }\r
18         public function getDescription()        { return 'Load MediaUtils, static function set for media management. Another function of this plugin is keeping Cookies for identifying weblog id.'; }\r
19         \r
20         public function getMinNucleusVersion()  { return 340; }\r
21         public function supportsFeature($feature) { return in_array ($feature, array ('SqlTablePrefix', 'SqlApi')); }\r
22         public function getEventList()  { return array('PostAuthentication', 'InitSkinParse', 'PreSendContentType'); }\r
23         \r
24         /*\r
25          * NOTICE: Event drivened method can get a correct blogid in initSkinParse.\r
26          */\r
27         public function event_PostAuthentication($data) {\r
28                 global $CONF;\r
29                 static $blogid = 0;\r
30                 static $blogs = array();\r
31                 \r
32                 if (!class_exists('MediaUtils', FALSE)) {\r
33                         include ($this->getDirectory() . 'MediaUtils.php');\r
34                 }\r
35                 \r
36                 MediaUtils::$lib_path = preg_replace('#/*$#', '', $this->getDirectory());\r
37                 MediaUtils::$prefix = (boolean) $CONF['MediaPrefix'];\r
38                 MediaUtils::$maxsize = (integer) $CONF['MaxUploadSize'];\r
39                 \r
40                 $suffixes = explode(',', $CONF['AllowedTypes']);\r
41                 foreach ($suffixes as $suffix) {\r
42                         $suffix = trim($suffix);\r
43                         if(!in_array($suffix, MediaUtils::$suffixes)) {\r
44                                 MediaUtils::$suffixes[] = strtolower($suffix);\r
45                         }\r
46                 }\r
47                 \r
48                 $result = sql_query('SELECT bnumber, bshortname FROM ' . sql_table('blog') . ';');\r
49                 while(FALSE !== ($row = sql_fetch_assoc($result))) {\r
50                         $blogs[$row['bnumber']] = $row['bshortname'];\r
51                 }\r
52                 MediaUtils::$blogs = $blogs;\r
53                 \r
54                 if (array_key_exists('blogid', $_GET)) {\r
55                         $blogid = (integer) $_GET['blogid'];\r
56                 } else if (array_key_exists('blogid', $_POST)) {\r
57                         $blogid = (integer) $_POST['blogid'];\r
58                 } else if (array_key_exists('itemid', $_GET)) {\r
59                         $blogid = (integer) getBlogIDFromItemID((integer) $_GET['itemid']);\r
60                 } else if (array_key_exists('itemid', $_POST)) {\r
61                         $blogid = (integer) getBlogIDFromItemID((integer) $_POST['itemid']);\r
62                 } else if (array_key_exists(MediaUtils::$cookiename, $_COOKIE)) {\r
63                         $blogid = (integer) $_COOKIE['blogid'];\r
64                 }\r
65                 \r
66                 if (!$blogid || !array_key_exists($blogid, $blogs)) {\r
67                         self::setCookie(-1);\r
68                         return;\r
69                 }\r
70                 \r
71                 MediaUtils::$blogid = (integer) $blogid;\r
72                 MediaUtils::$bshortname = (string) $blogs[$blogid];\r
73                 self::setCookie(1);\r
74                 \r
75                 return;\r
76         }\r
77         \r
78         public function event_PreSendContentType($data) {\r
79                 global $blog, $blogid;\r
80                 if (MediaUtils::$blogid) {\r
81                         return;\r
82                 }\r
83                 \r
84                 if (!$blogid && !$blog) {\r
85                         self::setCookie(-1);\r
86                         return;\r
87                 }\r
88                 \r
89                 if (!$blogid) {\r
90                         MediaUtils::$blogid = $blog->getID();\r
91                 } else {\r
92                         MediaUtils::$blogid = $blogid;\r
93                 }\r
94                 \r
95                 if (!$blog) {\r
96                         MediaUtils::$bshortname = $manager->getBlog(MediaUtils::$blogid)->getShortName();\r
97                 } else {\r
98                         MediaUtils::$bshortname = $blog->getShortName();\r
99                 }\r
100                 \r
101                 self::setCookie(1);\r
102                 return;\r
103         }\r
104         \r
105         public function event_InitSkinParse($data) {\r
106                 global $blogid;\r
107                 if (MediaUtils::$blogid != $blogid) {\r
108                         MediaUtils::$blogid = $blogid;\r
109                         MediaUtils::$bshortname = MediaUtils::$blogs[MediaUtils::$blogid];\r
110                         self::setCookie(1);\r
111                 }\r
112                 return;\r
113         }\r
114         \r
115         private function setCookie($factor) {\r
116                 global $CONF;\r
117                 $factor = (integer) $factor;\r
118                 \r
119                 setcookie($CONF['CookiePrefix'] . MediaUtils::$cookiename, MediaUtils::$blogid, time()+180*$factor, $CONF['CookiePath'], $CONF['CookieDomain'], $CONF['CookieSecure']);\r
120                 return;\r
121         }\r
122 }\r