--- /dev/null
+<?php\r
+/**\r
+ * MediaUtils plugin for Nucleus CMS\r
+ * Version 0.9.6 (1.0 RC2) for PHP5\r
+ * Written By Mocchi, Apr. 04, 2011\r
+ * \r
+ * This program is free software; you can redistribute it and/or\r
+ * modify it under the terms of the GNU General Public License\r
+ * as published by the Free Software Foundation; either version 3\r
+ * of the License, or (at your option) any later version.\r
+ */\r
+\r
+class NP_MediaUtils extends NucleusPlugin {\r
+ public function getName() { return 'MediaUtils'; }\r
+ public function getAuthor() { return 'Mocchi'; }\r
+ public function getURL() { return 'http://japan.nucleuscms.org/wiki/plugins:mediautils'; }\r
+ public function getVersion() { return '0.9.6 (1.0 RC2)'; }\r
+ 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
+ \r
+ public function getMinNucleusVersion() { return 340; }\r
+ public function supportsFeature($feature) { return in_array ($feature, array ('SqlTablePrefix', 'SqlApi')); }\r
+ public function getEventList() { return array('PostAuthentication', 'InitSkinParse', 'PreSendContentType'); }\r
+ \r
+ /*\r
+ * NOTICE: Event drivened method can get a correct blogid in initSkinParse.\r
+ */\r
+ public function event_PostAuthentication($data) {\r
+ global $CONF;\r
+ static $blogid = 0;\r
+ static $blogs = array();\r
+ \r
+ if (!class_exists('MediaUtils', FALSE)) {\r
+ include ($this->getDirectory() . 'MediaUtils.php');\r
+ }\r
+ \r
+ MediaUtils::$lib_path = preg_replace('#/*$#', '', $this->getDirectory());\r
+ MediaUtils::$prefix = (boolean) $CONF['MediaPrefix'];\r
+ MediaUtils::$maxsize = (integer) $CONF['MaxUploadSize'];\r
+ \r
+ $suffixes = explode(',', $CONF['AllowedTypes']);\r
+ foreach ($suffixes as $suffix) {\r
+ $suffix = trim($suffix);\r
+ if(!in_array($suffix, MediaUtils::$suffixes)) {\r
+ MediaUtils::$suffixes[] = strtolower($suffix);\r
+ }\r
+ }\r
+ \r
+ $result = sql_query('SELECT bnumber, bshortname FROM ' . sql_table('blog') . ';');\r
+ while(FALSE !== ($row = sql_fetch_assoc($result))) {\r
+ $blogs[$row['bnumber']] = $row['bshortname'];\r
+ }\r
+ MediaUtils::$blogs = $blogs;\r
+ \r
+ if (array_key_exists('blogid', $_GET)) {\r
+ $blogid = (integer) $_GET['blogid'];\r
+ } else if (array_key_exists('blogid', $_POST)) {\r
+ $blogid = (integer) $_POST['blogid'];\r
+ } else if (array_key_exists('itemid', $_GET)) {\r
+ $blogid = (integer) getBlogIDFromItemID((integer) $_GET['itemid']);\r
+ } else if (array_key_exists('itemid', $_POST)) {\r
+ $blogid = (integer) getBlogIDFromItemID((integer) $_POST['itemid']);\r
+ } else if (array_key_exists(MediaUtils::$cookiename, $_COOKIE)) {\r
+ $blogid = (integer) $_COOKIE['blogid'];\r
+ }\r
+ \r
+ if (!$blogid || !array_key_exists($blogid, $blogs)) {\r
+ self::setCookie(-1);\r
+ return;\r
+ }\r
+ \r
+ MediaUtils::$blogid = (integer) $blogid;\r
+ MediaUtils::$bshortname = (string) $blogs[$blogid];\r
+ self::setCookie(1);\r
+ \r
+ return;\r
+ }\r
+ \r
+ public function event_PreSendContentType($data) {\r
+ global $blog, $blogid;\r
+ if (MediaUtils::$blogid) {\r
+ return;\r
+ }\r
+ \r
+ if (!$blogid && !$blog) {\r
+ self::setCookie(-1);\r
+ return;\r
+ }\r
+ \r
+ if (!$blogid) {\r
+ MediaUtils::$blogid = $blog->getID();\r
+ } else {\r
+ MediaUtils::$blogid = $blogid;\r
+ }\r
+ \r
+ if (!$blog) {\r
+ MediaUtils::$bshortname = $manager->getBlog(MediaUtils::$blogid)->getShortName();\r
+ } else {\r
+ MediaUtils::$bshortname = $blog->getShortName();\r
+ }\r
+ \r
+ self::setCookie(1);\r
+ return;\r
+ }\r
+ \r
+ public function event_InitSkinParse($data) {\r
+ global $blogid;\r
+ if (MediaUtils::$blogid != $blogid) {\r
+ MediaUtils::$blogid = $blogid;\r
+ MediaUtils::$bshortname = MediaUtils::$blogs[MediaUtils::$blogid];\r
+ self::setCookie(1);\r
+ }\r
+ return;\r
+ }\r
+ \r
+ private function setCookie($factor) {\r
+ global $CONF;\r
+ $factor = (integer) $factor;\r
+ \r
+ setcookie($CONF['CookiePrefix'] . MediaUtils::$cookiename, MediaUtils::$blogid, time()+180*$factor, $CONF['CookiePath'], $CONF['CookieDomain'], $CONF['CookieSecure']);\r
+ return;\r
+ }\r
+}\r