OSDN Git Service

Include plugins which the original release includes and Mocchi modified these codes...
[nucleus-jp/nucleus-jp-ancient.git] / utf8 / nucleus / plugins / NP_Text.php
diff --git a/utf8/nucleus/plugins/NP_Text.php b/utf8/nucleus/plugins/NP_Text.php
new file mode 100644 (file)
index 0000000..aa55785
--- /dev/null
@@ -0,0 +1,132 @@
+<?php
+/**
+ * Text plugin for Nucleus CMS
+ * Version 0.53JP for PHP5
+ * Written By Cacher, Jan.16, 2011
+ * Original was written by Armon Toubman, Jan.18, 2007
+ * This plugin depends needs PHP mbstring extension or mb_emurator scripts Andy Matsubara released.
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 3
+ * of the License, or (at your option) any later version.
+ */
+
+class NP_Text extends NucleusPlugin {
+       private $incModePref = array();
+       private $constantPrefix = "SL_";
+       
+       public function getEventList() { return array('PreSkinParse'); }
+       public function getName() { return 'Text'; }
+       public function getAuthor() { return 'Armon Toubman'; }
+       public function getURL() { return 'http://forum.nucleuscms.org/viewtopic.php?t=14904'; }
+       public function getVersion() { return '0.53JP'; }
+       public function getDescription() {
+               $desc = '言語ファイル中の定数を表示します。: <%Text(定数名)%>';
+               switch (preg_replace( '#\\\\|/#', '', getLanguageName())) {
+                       case 'japanese-utf8':\r
+                               break;
+                       case 'japanese-euc':\r
+                               $desc = mb_convert_encoding($desc,'EUC-JP','UTF-8');\r
+                               break;\r
+                       default:\r
+                               $desc ='Display constants from language files: <%Text(CONSTANT)%>';\r
+                               break;\r
+               }
+               return $desc;
+       }
+       public function supportsFeature($feature)       { return in_array ($feature, array ('SqlTablePrefix', 'SqlApi'));}
+       public function install() { return; }
+       public function uninstall() { return; }
+       
+       public function init() {
+               $this->incModePref = $this->skin_incmodepref();
+               return;
+       }
+       
+       public function event_PreSkinParse() {
+               global $member;
+               if( !$member->isLoggedIn() and isset($_GET['lang']) ) {
+                       // 3 months
+                       setcookie('NP_Text', getVar('lang'), time()+60*60*24*90);
+               }
+               return;
+       }
+       
+       public function doSkinVar($skinType, $constant) {
+               global $member, $CONF;
+               
+               $language = getLanguageName();
+               $getLanguage = isset($_GET['lang']) ? getVar('lang') : false;
+               $cookieLanguage = isset($_COOKIE['NP_Text']) ? cookieVar('NP_Text') : false;
+               
+               if ( $getLanguage ) {
+                       $this->use_lang($getLanguage, $constant);
+               }
+               elseif ( $cookieLanguage ) {
+                       $this->use_lang($cookieLanguage, $constant);
+               }
+               else {
+                       $this->use_lang($language, $constant);
+               }
+       }
+       
+       public function doTemplateVar(&$item, $constant) {
+               global $member, $CONF;
+               
+               $language = getLanguageName();
+               $getLanguage = isset($_GET['lang']) ? getVar('lang') : false;
+               $cookieLanguage = isset($_COOKIE['NP_Text']) ? cookieVar('NP_Text') : false;
+               
+               if ($getLanguage) {
+                       $this->use_lang($getLanguage, $constant);
+               } elseif( $cookieLanguage ) {
+                       $this->use_lang($cookieLanguage, $constant);
+               } else {
+                       $this->use_lang($language, $constant);
+               }
+       }
+       
+       public function use_lang($language, $constant) {
+               global $DIR_SKINS;
+               
+               $filename = '';
+               
+               if ( $this->incModePref[0] == "normal" ) {
+                       $filename = $filename.$this->incModePref[1];
+                       $filename = $filename."language/";
+                       $filename = $filename.$language;
+                       $filename = $filename.".php";
+               } elseif ( $this->incModePref[0] == "skindir" ) {
+                       $filename = $filename.$DIR_SKINS;
+                       $filename = $filename.$this->incModePref[1];
+                       $filename = $filename."language/";
+                       $filename = $filename.$language;
+                       $filename = $filename.".php";
+               }
+               
+               if (is_file($filename)) {
+                       include($filename);
+               } else {
+                       addToLog(1, "NP_Text cannot find ".$filename);
+               }
+               
+               if ( defined($this->constantPrefix.$constant) ) {
+                       echo constant($this->constantPrefix.$constant);
+               } else {
+                       echo $this->constantPrefix.$constant;
+                       if( is_file($filename) ) {
+                               addToLog(1, "NP_Text cannot find definition for ".$this->constantPrefix.$constant." in ".$filename);
+                       }
+               }
+               return;
+       }
+       
+       public function skin_incmodepref() {
+               global $currentSkinName;
+               $sql = "SELECT * FROM ".sql_table("skin_desc")." WHERE sdname = '".$currentSkinName."'";
+               $result = sql_query($sql);
+               $row = sql_fetch_array($result, MYSQL_ASSOC);
+               return array($row['sdincmode'], $row['sdincpref']);
+       }
+}