⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 flexy.php

📁 FP2 CRM code+Mysql DB
💻 PHP
📖 第 1 页 / 共 2 页
字号:
   /**    *  get Modifier Wrapper     *    * converts :h, :u, :r , .....    * @param    object    HTML_Template_Flexy_Token_Method|Var    *     * @return   array prefix,suffix    * @access   public     * @see      toString*    */    function getModifierWrapper($element)     {        $prefix = 'echo ';                $suffix = '';        $modifier = strlen(trim($element->modifier)) ? $element->modifier : ' ';                switch ($modifier) {            case 'h':                break;            case 'u':                $prefix = 'echo urlencode(';                $suffix = ')';                break;            case 'r':                $prefix = 'echo \'<pre>\'; echo htmlspecialchars(print_r(';                $suffix = ',true)); echo \'</pre>\';';                break;                            case 'n':                 // blank or value..                $numberformat = @$GLOBALS['_HTML_TEMPLATE_FLEXY']['currentOptions']['numberFormat'];                $prefix = 'echo number_format(';                $suffix = $GLOBALS['_HTML_TEMPLATE_FLEXY']['currentOptions']['numberFormat'] . ')';                break;            case 'b': // nl2br + htmlspecialchars                $prefix = 'echo nl2br(htmlspecialchars(';                                // add language ?                $suffix = '))';                break;            case 'e':                $prefix = 'echo htmlentities(';                // add language ?                $suffix = ')';                break;            case ' ':                $prefix = 'echo htmlspecialchars(';                // add language ?                $suffix = ')';                break;            default:               $prefix = 'echo $this->plugin("'.trim($element->modifier) .'",';               $suffix = ')';                                 }                return array($prefix, $suffix);    }  /**    *   HTML_Template_Flexy_Token_Var toString     *    * @param    object    HTML_Template_Flexy_Token_Method    *     * @return   string     string to build a template    * @access   public     * @see      toString*    */      function toStringVar($element)     {        // ignore modifier at present!!                $var = $element->toVar($element->value);        if (is_a($var, 'PEAR_Error')) {            return $var;        }        list($prefix, $suffix) = $this->getModifierWrapper($element);        return $this->appendPhp( $prefix . $var . $suffix .';');    }   /**    *   HTML_Template_Flexy_Token_Method toString     *    * @param    object    HTML_Template_Flexy_Token_Method    *     * @return   string     string to build a template    * @access   public     * @see      toString*    */      function toStringMethod($element)     {                      // set up the modifier at present!!                 list($prefix, $suffix) = $this->getModifierWrapper($element);                // add the '!' to if                if ($element->isConditional) {            $prefix = 'if ('.$element->isNegative;            $element->pushState();            $suffix = ')';        }                          // check that method exists..        // if (method_exists($object,'method');        $bits = explode('.', $element->method);        $method = array_pop($bits);                $object = implode('.', $bits);                $var = $element->toVar($object);        if (is_a($var, 'PEAR_Error')) {            return $var;        }                if (($object == 'GLOBALS') &&             $GLOBALS['_HTML_TEMPLATE_FLEXY']['currentOptions']['globalfunctions']) {            // we should check if they something weird like: GLOBALS.xxxx[sdf](....)            $var = $method;        } else {            $prefix = 'if ($this->options[\'strict\'] || (isset('.$var.                ') && method_exists('.$var .", '{$method}'))) " . $prefix;            $var = $element->toVar($element->method);        }                if (is_a($var, 'PEAR_Error')) {            return $var;        }                $ret  =  $prefix;        $ret .=  $var . "(";        $s =0;                                 foreach($element->args as $a) {                         if ($s) {                $ret .= ",";            }            $s =1;            if ($a{0} == '#') {                if (is_numeric(substr($a, 1, -1))) {                    $ret .= substr($a, 1, -1);                } else {                    $ret .= '"'. addslashes(substr($a, 1, -1)) . '"';                }                continue;            }                        $var = $element->toVar($a);            if (is_a($var, 'PEAR_Error')) {                return $var;            }            $ret .= $var;                    }        $ret .= ")" . $suffix;                if ($element->isConditional) {            $ret .= ' { ';        } else {            $ret .= ";";        }                                return $this->appendPhp($ret);                     }   /**    *   HTML_Template_Flexy_Token_Processing toString     *    * @param    object    HTML_Template_Flexy_Token_Processing     *     * @return   string     string to build a template    * @access   public     * @see      toString*    */    function toStringProcessing($element)     {        // if it's XML then quote it..        if (strtoupper(substr($element->value, 2, 3)) == 'XML') {             return $this->appendPhp("echo '" . str_replace("'", "\\"."'", $element->value) . "';");        }        // otherwise it's PHP code - so echo it..        return $element->value;    }        /**    *   HTML_Template_Flexy_Token_Text toString     *    * @param    object    HTML_Template_Flexy_Token_Text    *     * @return   string     string to build a template    * @access   public     * @see      toString*    */    function toStringText($element)     {                // first get rid of stuff thats not translated etc.        // empty strings => output.        // comments -> just output        // our special tags -> output..                if (!strlen(trim($element->value) )) {            return $this->appendHtml($element->value);        }        // dont add comments to translation lists.                 if (substr($element->value, 0, 4) == '<!--') {            return $this->appendHtml($element->value);        }        // ignore anything wrapped with {_( .... )_}        if ($this->inGetTextBlock) {            return $this->appendHtml($element->value);        }                        if (!$element->isWord()) {            return $this->appendHtml($element->value);        }                // grab the white space at start and end (and keep it!                $value = ltrim($element->value);        $front = substr($element->value, 0, -strlen($value));        $value = rtrim($element->value);        $rear  = substr($element->value, strlen($value));        $value = trim($element->value);                        // convert to escaped chars.. (limited..)        //$value = strtr($value,$cleanArray);                $this->addStringToGettext($value);        $value = $this->translateString($value);        // its a simple word!        return $this->appendHtml($front . $value . $rear);            }                  /**    *   HTML_Template_Flexy_Token_Cdata toString     *    * @param    object    HTML_Template_Flexy_Token_Cdata ?    *     * @return   string     string to build a template    * @access   public     * @see      toString*    */    function toStringCdata($element)     {        return $this->appendHtml($element->value);    }                                            /**    * addStringToGettext     *    * Adds a string to the gettext array.     *     * @param   mixed        preferably.. string to store    *    * @return   none    * @access   public    */        function addStringToGettext($string)     {                                    if (!is_string($string)) {            return;        }                if (!preg_match('/[a-z]+/i', $string)) {            return;        }        $string = trim($string);                if (substr($string, 0, 4) == '<!--') {            return;        }                $GLOBALS['_HTML_TEMPLATE_FLEXY_COMPILER']['gettextStrings'][] = $string;    }            /**    * translateString - a gettextWrapper    *    * tries to do gettext or falls back on File_Gettext    * This has !!!NO!!! error handling - if it fails you just get english..     * no questions asked!!!    *     * @param   string       string to translate    *    * @return   string      translated string..    * @access   public    */      function translateString($string)    {                                 if (is_a($this->options['Translation2'], 'Translation2')) {            $result = $this->options['Translation2']->get($string);            if (!empty($result)) {                return $result;            }            return $string;        }                // note this stuff may have been broken by removing the \n replacement code         // since i dont have a test for it... it may remain broken..        // use Translation2 - it has gettext backend support        // and should sort out the mess that \n etc. entail.                        $prefix = basename($GLOBALS['_HTML_TEMPLATE_FLEXY']['filename']).':';        if (@$this->options['debug']) {            echo __CLASS__.":TRANSLATING $string<BR>\n";        }                if (function_exists('gettext') && !$this->options['textdomain']) {            if (@$this->options['debug']) {                echo __CLASS__.":USING GETTEXT?<BR>";            }            $t = gettext($string);                        if ($t != $string) {                return $t;            }            $tt = gettext($prefix.$string);            if ($tt != $prefix.$string) {                return $tt;            }                // give up it's not translated anywhere...            return $string;                     }        if (!$this->options['textdomain'] || !$this->options['textdomainDir']) {            // text domain is not set..            if (@$this->options['debug']) {                echo __CLASS__.":MISSING textdomain settings<BR>";            }            return $string;        }        $pofile = $this->options['textdomainDir'] .                 '/' . $this->options['locale'] .                 '/LC_MESSAGES/' . $this->options['textdomain'] . '.po';                        // did we try to load it already..        if (@$GLOBALS['_'.__CLASS__]['PO'][$pofile] === false) {            if (@$this->options['debug']) {                echo __CLASS__.":LOAD failed (Cached):<BR>";            }            return $string;        }        if (!@$GLOBALS['_'.__CLASS__]['PO'][$pofile]) {            // default - cant load it..            $GLOBALS['_'.__CLASS__]['PO'][$pofile] = false;            if (!file_exists($pofile)) {                 if (@$this->options['debug']) {                echo __CLASS__.":LOAD failed: {$pofile}<BR>";            }                return $string;            }                        if (!@include_once 'File/Gettext.php') {                if (@$this->options['debug']) {                    echo __CLASS__.":LOAD no File_gettext:<BR>";                }                return $string;            }                        $GLOBALS['_'.__CLASS__]['PO'][$pofile] = File_Gettext::factory('PO', $pofile);            $GLOBALS['_'.__CLASS__]['PO'][$pofile]->load();            //echo '<PRE>'.htmlspecialchars(print_r($GLOBALS['_'.__CLASS__]['PO'][$pofile]->strings,true));                    }        $po = &$GLOBALS['_'.__CLASS__]['PO'][$pofile];        // we should have it loaded now...        // this is odd - data is a bit messed up with CR's        $string = str_replace('\n', "\n", $string);                if (isset($po->strings[$prefix.$string])) {            return $po->strings[$prefix.$string];        }                if (!isset($po->strings[$string])) {            if (@$this->options['debug']) {                    echo __CLASS__.":no match:<BR>";            }            return $string;        }        if (@$this->options['debug']) {            echo __CLASS__.":MATCHED: {$po->strings[$string]}<BR>";        }                // finally we have a match!!!        return $po->strings[$string];            }      /**    *   HTML_Template_Flexy_Token_Tag toString     *    * @param    object    HTML_Template_Flexy_Token_Tag    *     * @return   string     string to build a template    * @access   public     * @see      toString*    */      function toStringTag($element) {                $original = $element->getAttribute('ALT');        if (($element->tag == 'IMG') && is_string($original) && strlen($original)) {            $this->addStringToGettext($original);            $quote = $element->ucAttributes['ALT']{0};            $element->ucAttributes['ALT'] = $quote  . $this->translateString($original). $quote;        }        $original = $element->getAttribute('TITLE');        if (($element->tag == 'A') && is_string($original) && strlen($original)) {            $this->addStringToGettext($original);            $quote = $element->ucAttributes['TITLE']{0};            $element->ucAttributes['TITLE'] = $quote  . $this->translateString($original). $quote;        }                        if (strpos($element->tag, ':') === false) {            $namespace = 'Tag';        } else {            $bits =  explode(':', $element->tag);            $namespace = $bits[0];        }        if ($namespace{0} == '/') {            $namespace = substr($namespace, 1);        }        if (empty($this->tagHandlers[$namespace])) {                        require_once 'HTML/Template/Flexy/Compiler/Flexy/Tag.php';            $this->tagHandlers[$namespace] = &HTML_Template_Flexy_Compiler_Flexy_Tag::factory($namespace, $this);            if (!$this->tagHandlers[$namespace] ) {                return HTML_Template_Flexy::raiseError('HTML_Template_Flexy::failed to create Namespace Handler '.$namespace .                     ' in file ' . $GLOBALS['_HTML_TEMPLATE_FLEXY']['filename'],                    HTML_TEMPLATE_FLEXY_ERROR_SYNTAX, HTML_TEMPLATE_FLEXY_ERROR_RETURN);            }                        }        return $this->tagHandlers[$namespace]->toString($element);                    }    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -