OSDN Git Service

FIX:メンバーに設定されている管理エリア用スキンが有効でない場合にデフォルトの管理エリア用スキンを使用するように修正
[nucleus-jp/nucleus-next.git] / nucleus / libs / BaseActions.php
index 969d65c..9473d52 100644 (file)
@@ -17,7 +17,7 @@
  *
  * @license http://nucleuscms.org/license.txt GNU General Public License
  * @copyright Copyright (C) 2002-2009 The Nucleus Group
- * @version $Id: BaseActions.php 1757 2012-04-15 09:02:32Z sakamocchi $
+ * @version $Id: BaseActions.php 1848 2012-05-16 12:17:00Z sakamocchi $
  */
 
 class BaseActions
@@ -54,6 +54,8 @@ class BaseActions
        
        /* NOTE: defined actions for this base class */
        static private $defined_actions = array(
+               'benchmark',
+               'charset',
                'else',
                'elseif',
                'elseifnot',
@@ -61,10 +63,12 @@ class BaseActions
                'if',
                'ifnot',
                'include',
+               'locale',
                'parsedinclude',
                'phpinclude',
                'set',
-               'skinfile'
+               'skinfile',
+               'text'
        );
        
        /**
@@ -87,18 +91,66 @@ class BaseActions
        }
        
        /**
-        * BaseActions::getDefinedActions()
+        * BaseActions::getAvailableActions()
         * 
-        * @static
         * @param       void
         * @return      void
         */
-       static public function getDefinedActions()
+       public function getAvailableActions()
        {
                return self::$defined_actions;
        }
        
        /**
+        * BaseActions::setParser()
+        * Set the parser
+        * 
+        * @param       object  $parser an instance of Parser class
+        * @return      void
+        */
+       public function setParser(&$parser)
+       {
+               $this->parser =& $parser;
+               return;
+       }
+       
+       /**
+        * BaseActions::parse_charset()
+        * Parse charset to appropriate character set name registered to IANA
+        * 
+        * @param       void
+        * @return      void
+        */
+       public function parse_charset()
+       {
+               global $member;
+               
+               if ( i18n::get_forced_charset() !== '' )
+               {
+                       echo i18n::get_forced_charset();
+               }
+               else
+               {
+                       echo i18n::get_current_charset();
+               }
+               
+               return;
+       }
+       
+       /**
+        * BaseActions::parse_locale()
+        * Parse locale to language-script-region according to RFC 4646
+        * 
+        * @param       void
+        * @return      void
+        */
+       public function parse_locale()
+       {
+               echo preg_replace('#_#', '-', i18n::get_current_locale());
+               return;
+       }
+       
+       /**
         * BaseActions::parse_include()
         * include file (no parsing of php)
         * 
@@ -132,10 +184,10 @@ class BaseActions
         * BaseActions::parse_parsedinclude()
         * parsed include
         * 
-        * @param       string  $filename       filename to be included
+        * @param       string  $name   filename to be included
         * @return      void
         */
-       public function parse_parsedinclude($filename)
+       public function parse_parsedinclude($name)
        {
                // check current level
                if ( $this->level > 3 )
@@ -144,14 +196,15 @@ class BaseActions
                        return;
                }
                
-               $file = $this->getIncludeFileName($filename);
-               
-               if ( !file_exists($file) )
+               $file = $this->getIncludeFileName($name);
+               if ( !file_exists($file) && $this->parser->skin != NULL)
                {
-                       return;
+                       $contents = $this->parser->skin->getContentFromDB($name);
+               }
+               else
+               {
+                       $contents = file_get_contents($file);
                }
-               
-               $contents = file_get_contents($file);
                
                if ( empty($contents) )
                {
@@ -229,6 +282,26 @@ class BaseActions
        }
        
        /**
+        * BaseActions::parse_text()
+        * Parse text
+        * 
+        * @param       string  $constant       named constant
+        * @return      void
+        */
+       public function parse_text($constant)
+       {
+               if ( !defined($constant) )
+               {
+                       echo $constant;
+               }
+               else
+               {
+                       echo constant($constant);
+               }
+               return;
+       }
+       
+       /**
         * BaseActions::addIfCondition()
         * Helper function: add if condition
         * 
@@ -337,6 +410,20 @@ class BaseActions
        }
        
        /**
+        * BaseActions::parse_benchmark()
+        * 
+        * @param       void
+        * @return      void
+        */
+       public function parse_benchmark()
+       {
+               global $StartTime;
+               $loadtime = microtime(TRUE) - $StartTime;
+               printf("%.3F sec/%d queries", $loadtime, DB::getExecCount());
+               return;
+       }
+       
+       /**
         * BaseActions::parse_if()
         * Parses <%if%> statements
         *