Changeset 297

Show
Ignore:
Timestamp:
11/07/06 23:49:22 (2 years ago)
Author:
laurentj
Message:

Travail sur le build et les jbuildtools
- mise en place de la generation d'une version optimisee de Jelix
- paramètres de build STRIP_COMMENT, ENABLE_OPTIMIZE, ENABLE_PHP_JSON et ENABLE_PHP_FILTER pris en compte
- jManifest : capable de supprimer les commentaires d'un fichier php
- preprocesseur, #ifdef : test vrai si la variable existe mais est vide
- jJsonRpc : peut utiliser les fonctions json de php 5.2

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/build/buildjelix.php

    r293 r297  
    100100 
    101101//... execution des manifests 
    102 jManifest::process('build/manifests/jelix-lib.mn', '.', $BUILD_TARGET_PATH, $GLOBALS); 
     102jManifest::process('build/manifests/jelix-lib.mn', '.', $BUILD_TARGET_PATH, $GLOBALS, $STRIP_COMMENT); 
     103if(!$ENABLE_OPTIMIZE){ 
     104    jManifest::process('build/manifests/jelix-no-opt.mn', '.', $BUILD_TARGET_PATH , $GLOBALS, $STRIP_COMMENT); 
     105
    103106if($ENABLE_DEVELOPER){ 
    104107    jManifest::process('build/manifests/jelix-dev.mn', '.', $BUILD_TARGET_PATH , $GLOBALS); 
     108} 
     109if($ENABLE_PHP_JSON){ 
     110    jManifest::process('build/manifests/lib-json.mn', '.', $BUILD_TARGET_PATH , $GLOBALS); 
    105111} 
    106112jManifest::process('build/manifests/jelix-others.mn','.', $BUILD_TARGET_PATH , $GLOBALS); 
  • trunk/build/lib/jManifest.class.php

    r292 r297  
    1919     * @param string $distpath directory were files are copied 
    2020     */ 
    21     static public function process($ficlist, $sourcepath, $distpath, $preprocvars, $verbose=false){ 
     21    static public function process($ficlist, $sourcepath, $distpath, $preprocvars, $stripcomment=false, $verbose=false){ 
    2222 
    2323        $sourcedir = jBuildUtils::normalizeDir($sourcepath); 
     
    3232        foreach($script as $nbline=>$line){ 
    3333            $nbline++; 
    34             if(preg_match('!^(cd|sd|dd|\*)?\s+([a-zA-Z0-9\/.\-_]+)\s*(?:\(([a-zA-Z0-9\/.\-_]*)\))?\s*$!m', $line, $m)){ 
     34            if(preg_match(';^(cd|sd|dd|\*|!|\*!)?\s+([a-zA-Z0-9\/.\-_]+)\s*(?:\(([a-zA-Z0-9\/.\-_]*)\))?\s*$;m', $line, $m)){ 
    3535                if($m[1] == 'dd'){ 
    3636                    $currentdestdir = jBuildUtils::normalizeDir($m[2]); 
     
    5050 
    5151                    $destfile = $distdir.$currentdestdir.$m[3]; 
     52                    $sourcefile = $sourcedir.$currentsrcdir.$m[2]; 
    5253 
    53                     if($m[1]=='*'){ 
     54                    if($m[1]=='*' || $m[1]=='*!'){ 
    5455                        if($verbose){ 
    55                             echo "process  ".$sourcedir.$currentsrcdir.$m[2]."\tto\t".$destfile."\n"; 
     56                            echo "process  $sourcefile \tto\t$destfile \n"; 
    5657                        } 
    5758                        $preproc->setVars($preprocvars); 
    5859                        try{ 
    59                             $contents = $preproc->parseFile($sourcedir.$currentsrcdir.$m[2]); 
     60                            $contents = $preproc->parseFile($sourcefile); 
    6061                        }catch(Exception $e){ 
    6162                            throw new Exception ( "$ficlist : line $nbline, cannot process file ".$m[2]." (", $e ,")\n"); 
    6263                        } 
     64                        if($m[1]=='*' && $stripcomment && preg_match("/\.php$/",$destfile)){ 
     65                            $contents = self::stripPhpComments($contents); 
     66                        } 
    6367                        file_put_contents($destfile,$contents); 
     68 
     69                    }elseif($m[1]!='!'&& $stripcomment && preg_match("/\.php$/",$destfile)){ 
     70                        if($verbose) 
     71                            echo "strip comment in  $sourcefile\tto\t".$destfile."\n"; 
     72                        $src = file_get_contents($sourcefile); 
     73                        file_put_contents($destfile,self::stripPhpComments($src)); 
     74 
    6475                    }else{ 
    65                         if($options['verbose']
     76                        if($verbose
    6677                            echo "copy  ".$sourcedir.$currentsrcdir.$m[2]."\tto\t".$destfile."\n"; 
    6778 
    68                         if(!copy($sourcedir.$currentsrcdir.$m[2], $destfile)){ 
     79                        if(!copy($sourcefile, $destfile)){ 
    6980                            throw new Exception ( "$ficlist : cannot copy file ".$m[2].", line $nbline \n"); 
    7081                        } 
     
    7889        } 
    7990    } 
     91 
     92    static protected function stripPhpComments($content){ 
     93 
     94        $tokens = token_get_all($content); 
     95        $result = ''; 
     96        $firstcomment= true; 
     97        foreach ($tokens as $token) { 
     98            if (is_string($token)) { 
     99                $result.=$token; 
     100            } else { 
     101                switch ($token[0]) { 
     102                    case T_COMMENT: 
     103                        break; 
     104                    case T_DOC_COMMENT: 
     105                        // on garde le premier commentaire documentaire 
     106                        if($firstcomment){ 
     107                            $result.=$token[1]; 
     108                            $firstcomment = false; 
     109                        } 
     110                        break; 
     111                    default: 
     112                        $result.=$token[1]; 
     113                        break; 
     114                } 
     115            } 
     116        } 
     117        return $result; 
     118 
     119    } 
    80120} 
    81121?> 
  • trunk/build/lib/preprocessor.lib.php

    r292 r297  
    103103                            array_push($this->_blockstack, self::BLOCK_IF_NO); 
    104104                        }else{ 
    105                             if(isset($this->_variables[$m[2]])){ 
     105                            if(isset($this->_variables[$m[2]]) && $this->_variables[$m[2]] !==''){ 
    106106                                array_push($this->_blockstack, self::BLOCK_IF_YES); 
    107107                            }else{ 
     
    113113                    case 'define': // define avec un seul argument. 
    114114                        if($isOpen ){ 
    115                             $this->_variables[$m[2]] = ''
     115                            $this->_variables[$m[2]] = true
    116116                        } 
    117117                        $source[$nb]=false; 
     
    127127                            array_push($this->_blockstack, self::BLOCK_IF_NO); 
    128128                        }else{ 
    129                             if(isset($this->_variables[$m[2]])){ 
     129                            if(isset($this->_variables[$m[2]]) && $this->_variables[$m[2]] !==''){ 
    130130                                array_push($this->_blockstack, self::BLOCK_IF_NO); 
    131131                            }else{ 
     
    145145                            array_push($this->_blockstack, (self::BLOCK_IF_NO + self::BLOCK_YES_PREVIOUS)); 
    146146                        }else{ 
    147                             if(isset($this->_variables[$m[2]])){ 
     147                            if(isset($this->_variables[$m[2]]) && $this->_variables[$m[2]] !==''){ 
    148148                                array_push($this->_blockstack, self::BLOCK_IF_YES); 
    149149                            }else{ 
     
    167167            }elseif(preg_match('/^\#(expand)\s(.*)$/m',$line,$m)){ 
    168168                if($isOpen){ 
    169                     $source[$nb]=preg_replace('/\_\_(\w*)\_\_/e', '(isset($this->_variables["\\1"])?$this->_variables["\\1"]:"__\\1__")',$m[2]); 
     169                    $source[$nb]=preg_replace('/\_\_(\w*)\_\_/e', '(isset($this->_variables["\\1"])&&$this->_variables["\\1"]!==\'\'?$this->_variables["\\1"]:"__\\1__")',$m[2]); 
    170170                }else{ 
    171171                    $source[$nb]=false; 
     
    217217                    } 
    218218                    if($m[1] == 'php'){ 
    219                         if(preg_match('/^\s*\<\?(?:php)?((?:.|\n)*)\?\>\s*$/m',$source[$nb],$ms)){ 
     219                        if(preg_match('/^\s*\<\?(?:php)?(.*)\?\>\s*$/sm',$source[$nb],$ms)){ 
    220220                            $source[$nb] = $ms[1]; 
    221221                        } 
  • trunk/build/manifests/demoxul.mn

    r271 r297  
    1414  dbprofils.ini.php.dist 
    1515cd demoxul/var/config/index 
    16  auth.plugin.ini.php 
     16! auth.plugin.ini.php 
    1717  config.ini.php 
    1818cd demoxul/var/config/jsonrpc 
    19  config.ini.php 
    20  auth.plugin.ini.php 
     19! config.ini.php 
     20! auth.plugin.ini.php 
    2121cd demoxul/var/config/rdf 
    22  config.ini.php 
    23  auth.plugin.ini.php 
     22! config.ini.php 
     23! auth.plugin.ini.php 
    2424cd demoxul/var/config/xmlrpc 
    25  auth.plugin.ini.php 
    26  config.ini.php 
     25! auth.plugin.ini.php 
     26! config.ini.php 
    2727 
    2828cd temp/demoxul 
  • trunk/build/manifests/jelix-lib.mn

    r296 r297  
    2929 
    3030cd lib/jelix/core 
    31   defaultconfig.ini.php 
    32   jConfig.class.php 
     31! defaultconfig.ini.php 
    3332  jConfigCompiler.class.php 
    34   jContext.class.php 
    35   jController.class.php 
    36   jCoordinator.class.php 
    37   jErrorHandler.lib.php 
    38   jException.lib.php 
    39   jIncluder.class.php 
    40   jIPlugin.iface.php 
    41   jLocale.class.php 
    42   jRequest.class.php 
    43   jResponse.class.php 
    44   jSelector.class.php 
    4533 
    4634cd lib/jelix/core/request 
     
    7058 
    7159cd lib/jelix/core/url 
    72   jUrl.class.php 
    7360  jUrlCompiler.significant.class.php 
    7461  jUrlEngine.significant.class.php 
     
    113100 
    114101cd lib/jelix/forms 
    115   jForms.class.php 
    116   jFormsBase.class.php 
    117   jFormsCompiler.class.php 
    118   jFormsControl.class.php 
    119   jFormsDataContainer.class.php 
    120   jFormsDatasource.class.php 
     102  jForms.class.php 
     103  jFormsBase.class.php 
     104  jFormsCompiler.class.php 
     105  jFormsControl.class.php 
     106  jFormsDataContainer.class.php 
     107  jFormsDatasource.class.php 
    121108 
    122109cd lib/jelix/tpl/ 
     
    177164  jFile.class.php 
    178165  jIniFile.class.php 
    179  jJsonRpc.class.php 
     166* jJsonRpc.class.php 
    180167  jLog.class.php 
    181168  jWiki.class.php 
     
    188175  jSmtp.class.php 
    189176* jFilter.class.php 
    190  
    191 cd lib/json 
    192   JSON.php 
    193   LICENSE 
    194177 
    195178cd lib/jelix-modules 
     
    229212  auth.UTF-8.properties 
    230213cd lib/jelix-modules/jelix/controllers 
    231  help.cmdline.php 
    232  error.classic.php 
    233  error.xul.php 
    234  error.jsonrpc.php 
    235  error.xmlrpc.php 
    236  error.rdf.php 
     214! help.cmdline.php 
     215! error.classic.php 
     216! error.xul.php 
     217! error.jsonrpc.php 
     218! error.xmlrpc.php 
     219! error.rdf.php 
    237220cd lib/jelix-modules/jelix/templates 
    238221  404.xul.tpl 
     
    244227  events.xml 
    245228cd lib/jelix-modules/jxauth/plugins/auth 
    246  auth.plugin.php 
     229! auth.plugin.php 
    247230  plugin.xml 
    248231  auth.plugin.ini.php.dist 
     
    263246  install.datas.mysql.sql 
    264247cd lib/jelix-modules/jxauth/classes 
    265   auth.listener.php 
     248!  auth.listener.php 
    266249cd lib/jelix-modules/jxauth/controllers 
    267  login.classic.php 
    268  loginsw.classic.php 
    269  login.jsonrpc.php 
    270  xuladmin.classic.php 
    271  admin.jsonrpc.php 
    272  admin.rdf.php 
     250! login.classic.php 
     251! loginsw.classic.php 
     252! login.jsonrpc.php 
     253! xuladmin.classic.php 
     254! admin.jsonrpc.php 
     255! admin.rdf.php 
    273256cd lib/jelix-modules/jxauth/zones 
    274  loginform.zone.php 
     257! loginform.zone.php 
    275258cd lib/jelix-modules/jxauth/templates 
    276259  login.form.tpl 
     
    285268   events.xml 
    286269cd lib/jelix-modules/jxacl/classes 
    287    acl.listener.php 
    288    aclservice.class.php 
     270!  acl.listener.php 
     271!  aclservice.class.php 
    289272cd lib/jelix-modules/jxacl/controllers 
    290    xuladmin.classic.php 
    291    admin.rdf.php 
    292    admin.jsonrpc.php 
    293    admin.classic.php 
     273!  xuladmin.classic.php 
     274!  admin.rdf.php 
     275!  admin.jsonrpc.php 
     276!  admin.classic.php 
    294277cd lib/jelix-modules/jxacl/daos 
    295278   jaclgroup.dao.xml 
     
    318301  CREDITS 
    319302cd lib/jelix-plugins/magicquotes 
    320  magicquotes.plugin.php 
     303! magicquotes.plugin.php 
    321304  plugin.xml 
    322305cd lib/jelix-plugins/autolocale 
    323306  autolocale.plugin.ini.php.dist 
    324  autolocale.plugin.php 
     307! autolocale.plugin.php 
    325308  plugin.xml 
    326309 
     
    344327 
    345328cd lib/diff 
    346  difflib.php 
    347  diffhtml.php 
     329! difflib.php 
     330! diffhtml.php 
    348331  README 
    349332 
     
    352335  CREDITS 
    353336  LICENCE 
    354  WikiRenderer.lib.php 
     337! WikiRenderer.lib.php 
    355338 
    356339cd lib/wikirenderer/rules 
    357  wr3_to_xhtml.php 
    358  classicwr_to_text.php 
    359  classicwr_to_xhtml.php 
    360  classicwr_to_wr3.php 
    361  wr3_to_text.php 
     340! wr3_to_xhtml.php 
     341! classicwr_to_text.php 
     342! classicwr_to_xhtml.php 
     343! classicwr_to_wr3.php 
     344! wr3_to_text.php 
  • trunk/build/tests/ppdatas/result_include1.txt

    r233 r297  
    1717 
    1818 
     19 
    1920ggggg 
    2021 
  • trunk/build/tests/testpreprocess.php

    r292 r297  
    1515require_once(dirname(__FILE__).'/../../lib/simpletest/unit_tester.php'); 
    1616require_once(dirname(__FILE__).'/../../lib/simpletest/reporter.php'); 
     17require_once(dirname(__FILE__).'/../../lib/diff/difflib.php'); 
    1718 
    1819define('PP_DATA_DIR','ppdatas/'); 
     
    7273 
    7374 
     75    protected $testcase2 = array( 
     76      'source2.txt'=>array( 
     77           'result2_1.txt'=>array('FOO'=>''), 
     78           'result2_2.txt'=>array('FOO'=>true), 
     79          ), 
     80      'source3.txt'=>array( 
     81           'result3_1.txt'=>array('FOO'=>''), 
     82           'result3_2.txt'=>array('FOO'=>true), 
     83          ), 
     84      'source4.txt'=>array( 
     85           'result4_1.txt'=>array('FOO'=>'', 'BAR'=>''), 
     86           'result4_2.txt'=>array('FOO'=>true, 'BAR'=>''), 
     87           'result4_3.txt'=>array('BAR'=>true, 'FOO'=>''), 
     88           'result4_4.txt'=>array('FOO'=>true, 'BAR'=>true), 
     89          ), 
     90      'source5.txt' =>array( 
     91           'result5_1.txt'=>array('FOO'=>'', 'BAR'=>''), 
     92           'result5_2.txt'=>array('FOO'=>"une variable foo", "BAR"=>"le bar est ouvert"), 
     93          ), 
     94      'source6.txt'=>array( 
     95           'result6_1.txt'=>array('FOO'=>'', 'BAR'=>''), 
     96           'result6_2.txt'=>array('FOO'=>true), 
     97           'result6_3.txt'=>array('BAR'=>true), 
     98           'result6_4.txt'=>array('FOO'=>true, 'BAR'=>true), 
     99          ), 
     100      'source7.txt'=>array( 
     101           'result7_1.txt'=>array('FOO'=>'', 'BAR'=>'', 'BAZ'=>''), 
     102           'result7_2.txt'=>array('FOO'=>true, 'BAR'=>'', 'BAZ'=>''), 
     103           'result7_3.txt'=>array('BAR'=>true, 'FOO'=>''), 
     104           'result7_4.txt'=>array('BAZ'=>true), 
     105           'result7_5.txt'=>array('BAZ'=>true, 'BAR'=>true), 
     106          ), 
     107    ); 
     108 
     109 
     110 
    74111    function __construct() { 
    75112        $this->UnitTestCase(); 
     
    89126           $proc->setVars($vars); 
    90127           $res = $proc->parseFile(PP_DATA_DIR.$source); 
    91            $this->assertEqual($res, file_get_contents(PP_DATA_DIR.$result)); 
     128           if(!$this->assertEqual($res, file_get_contents(PP_DATA_DIR.$result), "test $source / $result ")){ 
     129                $this->showDiff(file_get_contents(PP_DATA_DIR.$result), $res); 
     130           } 
     131         } 
     132      } 
     133    } 
     134 
     135    function testSimple2(){ 
     136      $proc = new jPreProcessor(); 
     137      foreach($this->testcase2 as $source=>$datas){ 
     138         foreach($datas as $result=>$vars){ 
     139           $proc->setVars($vars); 
     140           $res = $proc->parseFile(PP_DATA_DIR.$source); 
     141           if(!$this->assertEqual($res, file_get_contents(PP_DATA_DIR.$result), "test $source / $result ")){ 
     142                $this->showDiff(file_get_contents(PP_DATA_DIR.$result), $res); 
     143           } 
    92144         } 
    93145      } 
     
    142194    } 
    143195 
    144  
     196    protected function showDiff($str1, $str2){ 
     197        $diff = new Diff(explode("\n",$str1),explode("\n",$str2)); 
     198 
     199        if($diff->isEmpty()) { 
     200            $this->fail("No difference ???"); 
     201        }else{ 
     202            $fmt = new UnifiedDiffFormatter(); 
     203            $this->fail($fmt->format($diff)); 
     204        } 
     205    } 
    145206 
    146207} 
  • trunk/lib/jelix/init.php

    r248 r297  
    4747error_reporting (E_ALL); 
    4848 
     49#ifdef ENABLE_OPTIMIZE 
     50 
     51#includephp core/jErrorHandler.lib.php 
     52#includephp core/jException.lib.php 
     53#includephp core/jContext.class.php 
     54#includephp core/jConfig.class.php 
     55#includephp core/jSelector.class.php 
     56#includephp core/url/jUrl.class.php 
     57#includephp core/jCoordinator.class.php 
     58#includephp core/jController.class.php 
     59#includephp core/jRequest.class.php 
     60#includephp core/jResponse.class.php 
     61#includephp core/jLocale.class.php 
     62#includephp core/jIncluder.class.php 
     63#includephp core/jIPlugin.iface.php 
     64 
     65#else 
     66 
    4967// chargement du coeur 
    5068require_once (JELIX_LIB_CORE_PATH . 'jErrorHandler.lib.php'); 
     
    6179require_once (JELIX_LIB_CORE_PATH . 'jIncluder.class.php'); 
    6280require_once (JELIX_LIB_CORE_PATH . 'jIPlugin.iface.php'); 
     81 
     82#endif 
     83 
    6384 
    6485/** 
     
    112133   } 
    113134 
    114    //if(file_exists($f)){ 
    115       require_once($f); 
    116    //} 
     135#ifdef ENABLE_OPTIMIZE 
     136    require_once($f); 
     137#else 
     138    if(file_exists($f)){ 
     139        require_once($f); 
     140    }else{ 
     141        throw new Exception("Jelix fatal error : Unknow class $class"); 
     142    } 
     143#endif 
    117144 
    118145} 
  • trunk/lib/jelix/utils/jFilter.class.php

    r290 r297  
    2020 
    2121    static public function usePhpFilter(){ 
    22 #ifdef PHP52 
     22#ifdef ENABLE_PHP_FILTER 
    2323        return true; 
    2424#else 
     
    3535     */ 
    3636    static public function isInt ($val, $min=null, $max=null){ 
    37 #ifdef PHP52 
     37#ifdef ENABLE_PHP_FILTER 
    3838        // @FIXME pas de doc sur la fa� d'utiliser les min/max sur les filters 
    3939        if(!filter_var($var, FILTER_VALIDATE_INT)) return false; 
     
    5555     */ 
    5656    static public function isHexInt ($val, $min=null, $max=null){ 
    57 #ifdef PHP52 
     57#ifdef ENABLE_PHP_FILTER 
    5858        // @FIXME pas de doc sur la fa� d'utiliser les min/max sur les filters 
    5959        if(!filter_var($var, FILTER_VALIDATE_INT, FILTER_FLAG_ALLOW_HEX)) return false; 
     
    7474     */ 
    7575    static public function isBool ($val){ 
    76 #ifdef PHP52 
     76#ifdef ENABLE_PHP_FILTER 
    7777        return filter_var($var, FILTER_VALIDATE_BOOLEAN); 
    7878#else 
     
    9090     */ 
    9191    static public function isFloat ($val, $min=null, $max=null){ 
    92 #ifdef PHP52 
     92#ifdef ENABLE_PHP_FILTER 
    9393        // @FIXME pas de doc sur la fa� d'utiliser les min/max sur les filters 
    9494        if(!filter_var($var, FILTER_VALIDATE_FLOAT)) return false; 
     
    110110                            $hostRequired=false, $pathRequired=false, 
    111111                            $queryRequired=false ){ 
    112 #ifdef PHP52 
     112#ifdef ENABLE_PHP_FILTER 
    113113        $flag=0; 
    114114        if($schemeRequired) $flag |= FILTER_FLAG_SCHEME_REQUIRED; 
     
    138138     */ 
    139139    static public function isIPv4 ($val){ 
    140 #ifdef PHP52 
     140#ifdef ENABLE_PHP_FILTER 
    141141        return filter_var($var, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4); 
    142142#else 
     
    156156     */ 
    157157    static public function isIPv6 ($val){ 
    158 #ifdef PHP52 
     158#ifdef ENABLE_PHP_FILTER 
    159159        return filter_var($var, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6); 
    160160#else 
  • trunk/lib/jelix/utils/jJsonRpc.class.php

    r248 r297  
    33* @package     jelix 
    44* @subpackage  utils 
    5 * @version     $Id$ 
    65* @author      Jouanneau Laurent 
    76* @contributor 
     
    1110*/ 
    1211 
     12#ifndef ENABLE_PHP_JSON 
    1313/** 
    1414 * 
    1515 */ 
    1616require_once (LIB_PATH.'json/JSON.php'); 
    17  
     17#endif 
    1818/** 
    19  * objet permettant d'encoder/d�der des request/responses Json-RPC 
    20  * pour les specs, voir http://json-rpc.org/index.xhtml 
     19 * object which encode and decode a jsonrpc request and response 
    2120 * @package    jelix 
    2221 * @subpackage utils 
     22 * @link http://json-rpc.org/index.xhtml 
    2323 */ 
    2424class jJsonRpc { 
     
    2727 
    2828    /** 
    29      * 
     29     * decode a request of json xmlrpc 
    3030     * @param string $content 
    3131     * @return mixed 
     
    3333    public static function decodeRequest($content){ 
    3434        // {method:.. , params:.. , id:.. } 
     35#ifdef ENABLE_PHP_JSON 
     36        $obj = json_decode($content); 
     37#else 
    3538        $json = new JSON(JSON_LOOSE_TYPE); 
    36  
    3739        $obj = $json->decode($content); 
    3840        /* 
     
    4042        $obj->params 
    4143        $obj->id*/ 
    42         return $obj; //array($methodname, $params); 
     44#endif 
     45        return $obj; 
    4346    } 
    4447 
    4548    /** 
    46      * 
    47      * @param string $methodname 
    48      * @param array $params 
    49      * @return string 
     49     * create a request content for a jsonrpc call 
     50     * @param string $methodname method of the jsonrcp web service 
     51     * @param array $params parameters for the methods 
     52     * @return string jsonrcp request content 
    5053     */ 
    5154    public static function encodeRequest($methodname, $params, $id=1){ 
     55         
     56#ifdef ENABLE_PHP_JSON 
     57        return '{"method":"'.$methodname.'","params":'.json_encode($params).',"id":'.json_encode($id).'}'; 
     58#else 
    5259        $json = new JSON(); 
    53         $request = '{"method":"'.$methodname.'","params":'.$json->encode($params).',"id":'.$json->encode($id).'}'; 
    54         return $request; 
     60        return '{"method":"'.$methodname.'","params":'.$json->encode($params).',"id":'.$json->encode($id).'}'; 
     61#endif 
     62 
    5563    } 
    5664 
    5765    /** 
    58      * 
    59      * @param 
    60      * @return 
     66     * decode a jsonrpc response 
     67     * @param string $content 
     68     * @return mixed decoded content 
    6169     */ 
    6270    public static function decodeResponse($content){ 
    6371        // {result:.. , error:.. , id:.. } 
     72#ifdef ENABLE_PHP_JSON 
     73        return json_decode($content); 
     74#else 
    6475        $json = new JSON(JSON_LOOSE_TYPE); 
     76        return $json->decode($content); 
     77#endif 
    6578 
    66         $response = $json->decode($content); 
    67         return $response; 
    6879    } 
    6980 
    7081    /** 
    71      * 
    72      * @param 
    73      * @return 
     82     * encode a jsonrpc response  
     83     * @param array $params  returned value 
     84     * @return string encoded response 
    7485     */ 
    7586    public static function encodeResponse($params, $id=1){ 
     87#ifdef ENABLE_PHP_JSON 
     88        return '{"result":'.json_encode($params).',"error":null,"id":'.json_encode($id).'}'; 
     89#else 
    7690        $json = new JSON(); 
    77         $request = '{"result":'.$json->encode($params).',"error":null,"id":'.$json->encode($id).'}'; 
    78         return $request; 
     91        return '{"result":'.$json->encode($params).',"error":null,"id":'.$json->encode($id).'}'; 
     92#endif 
    7993    } 
    8094 
    8195    /** 
    82      * 
    83      * @param 
    84      * @return 
     96     * encode a jsonrpc error response 
     97     * @param int $code code error 
     98     * @param string $message error message 
     99     * @return string encoded response 
    85100     */ 
    86101    public static function encodeFaultResponse($code, $message, $id=1){ 
     102#ifdef ENABLE_PHP_JSON 
     103        return '{"result":null,"error":{"code": '.json_encode($code).', "string":'.json_encode($message).' },"id":'.json_encode($id).'}'; 
     104#else 
    87105        $json = new JSON(); 
    88         $request = '{"result":null,"error":{"code": '.$json->encode($code).', "string":'.$json->encode($message).' },"id":'.$json->encode($id).'}'; 
    89         return $request; 
     106        return '{"result":null,"error":{"code": '.$json->encode($code).', "string":'.$json->encode($message).' },"id":'.$json->encode($id).'}'; 
     107#endif 
    90108    } 
    91109} 
  • trunk/Makefile

    r294 r297  
    8383nightlies: 
    8484        $(PHP) build/buildjelix.php -D $(DISTPATHSWITCH) -D NIGHTLY_NAME=1 build/config/jelix-dist-dev.ini 
     85        $(PHP) build/buildjelix.php -D $(DISTPATHSWITCH) -D NIGHTLY_NAME=1 build/config/jelix-dist-opt.ini 
    8586        $(PHP) build/buildapp.php -D $(DISTPATHSWITCH) -D NIGHTLY_NAME=1 build/config/testapp-dist.ini 
    8687        $(PHP) build/buildjbt.php -D $(DISTPATHSWITCH) -D NIGHTLY_NAME=1 build/config/jbt-dist.ini 
Download in other formats: Unified Diff Zip Archive