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
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
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
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
25 * NOTICE: Event drivened method can get a correct blogid in initSkinParse.
\r
27 public function event_PostAuthentication($data) {
\r
30 static $blogs = array();
\r
32 if (!class_exists('MediaUtils', FALSE)) {
\r
33 include ($this->getDirectory() . 'MediaUtils.php');
\r
36 MediaUtils::$lib_path = preg_replace('#/*$#', '', $this->getDirectory());
\r
37 MediaUtils::$prefix = (boolean) $CONF['MediaPrefix'];
\r
38 MediaUtils::$maxsize = (integer) $CONF['MaxUploadSize'];
\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
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
52 MediaUtils::$blogs = $blogs;
\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
66 if (!$blogid || !array_key_exists($blogid, $blogs)) {
\r
67 self::setCookie(-1);
\r
71 MediaUtils::$blogid = (integer) $blogid;
\r
72 MediaUtils::$bshortname = (string) $blogs[$blogid];
\r
78 public function event_PreSendContentType($data) {
\r
79 global $blog, $blogid;
\r
80 if (MediaUtils::$blogid) {
\r
84 if (!$blogid && !$blog) {
\r
85 self::setCookie(-1);
\r
90 MediaUtils::$blogid = $blog->getID();
\r
92 MediaUtils::$blogid = $blogid;
\r
96 MediaUtils::$bshortname = $manager->getBlog(MediaUtils::$blogid)->getShortName();
\r
98 MediaUtils::$bshortname = $blog->getShortName();
\r
101 self::setCookie(1);
\r
105 public function event_InitSkinParse($data) {
\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
115 private function setCookie($factor) {
\r
117 $factor = (integer) $factor;
\r
119 setcookie($CONF['CookiePrefix'] . MediaUtils::$cookiename, MediaUtils::$blogid, time()+180*$factor, $CONF['CookiePath'], $CONF['CookieDomain'], $CONF['CookieSecure']);
\r