Changeset 93628 in spip-zone


Ignore:
Timestamp:
Dec 13, 2015, 11:58:14 AM (5 years ago)
Author:
cedric@…
Message:

Indentation et regles de codage selon http://www.spip.net/fr_article3497.html#regles_codage

Location:
_core_/plugins/textwheel
Files:
22 edited

Legend:

Unmodified
Added
Removed
  • _core_/plugins/textwheel/engine/textwheel.php

    r93092 r93628  
    1919 */
    2020
    21 if (!defined('_ECRIRE_INC_VERSION')) return;
    22 
    23 require_once dirname(__FILE__)."/textwheelruleset.php";
     21if (!defined('_ECRIRE_INC_VERSION')) {
     22        return;
     23}
     24
     25require_once dirname(__FILE__) . "/textwheelruleset.php";
    2426
    2527class TextWheel {
     
    3133        /**
    3234         * Constructor
     35         *
    3336         * @param TextWheelRuleSet $ruleset
    3437         */
     
    3942        /**
    4043         * Set RuleSet
     44         *
    4145         * @param TextWheelRuleSet $ruleset
    4246         */
    43         public function setRuleSet($ruleset){
    44                 if (!is_object($ruleset))
     47        public function setRuleSet($ruleset) {
     48                if (!is_object($ruleset)) {
    4549                        $ruleset = new TextWheelRuleSet ($ruleset);
     50                }
    4651                $this->ruleset = $ruleset;
    4752        }
     
    5459         */
    5560        public function text($t) {
    56                 $rules = & $this->ruleset->getRules();
     61                $rules = &$this->ruleset->getRules();
    5762                ## apply each in order
    5863                foreach ($rules as $name => $rule) #php4+php5
     
    7075
    7176        public function compile($b = null) {
    72                 $rules = & $this->ruleset->getRules();
     77                $rules = &$this->ruleset->getRules();
    7378
    7479                ## apply each in order
     
    7681                $comp = array();
    7782
    78                 foreach ($rules as $name => $rule)
    79                 {
     83                foreach ($rules as $name => $rule) {
    8084                        $rule->name = $name;
    8185                        $this->initRule($rule);
    8286                        if (is_string($rule->replace)
    83                         AND isset($this->compiled[$rule->replace])
    84                         AND $fun = $this->compiled[$rule->replace]) {
     87                                AND isset($this->compiled[$rule->replace])
     88                                AND $fun = $this->compiled[$rule->replace]
     89                        ) {
    8590                                $pre[] = "\n###\n## $name\n###\n" . $fun;
    8691                                preg_match(',function (\w+), ', $fun, $r);
     
    9095                        $r = "\t/* $name */\n";
    9196
    92                         if ($rule->require)
    93                                 $r .= "\t".'require_once '.TextWheel::export($rule->require).';'."\n";
    94                         if ($rule->if_str)
    95                                 $r .= "\t".'if (strpos($t, '.TextWheel::export($rule->if_str).') === false)'."\n";
    96                         if ($rule->if_stri)
    97                                 $r .= "\t".'if (stripos($t, '.TextWheel::export($rule->if_stri).') === false)'."\n";
    98                         if ($rule->if_match)
    99                                 $r .= "\t".'if (preg_match('.TextWheel::export($rule->if_match).', $t))'."\n";
     97                        if ($rule->require) {
     98                                $r .= "\t" . 'require_once ' . TextWheel::export($rule->require) . ';' . "\n";
     99                        }
     100                        if ($rule->if_str) {
     101                                $r .= "\t" . 'if (strpos($t, ' . TextWheel::export($rule->if_str) . ') === false)' . "\n";
     102                        }
     103                        if ($rule->if_stri) {
     104                                $r .= "\t" . 'if (stripos($t, ' . TextWheel::export($rule->if_stri) . ') === false)' . "\n";
     105                        }
     106                        if ($rule->if_match) {
     107                                $r .= "\t" . 'if (preg_match(' . TextWheel::export($rule->if_match) . ', $t))' . "\n";
     108                        }
    100109
    101110                        if ($rule->func_replace !== 'replace_identity') {
    102                                 $fun = 'TextWheel::'.$rule->func_replace;
    103                                 switch($fun) {
     111                                $fun = 'TextWheel::' . $rule->func_replace;
     112                                switch ($fun) {
    104113                                        case 'TextWheel::replace_all_cb':
    105114                                                $fun = $rule->replace; # trim()...
     
    117126                                                break;
    118127                                }
    119                                 $r .= "\t".'$t = '.$fun.'('.TextWheel::export($rule->match).', '.TextWheel::export($rule->replace).', $t);'."\n";
     128                                $r .= "\t" . '$t = ' . $fun . '(' . TextWheel::export($rule->match) . ', ' . TextWheel::export($rule->replace) . ', $t);' . "\n";
    120129                        }
    121130
    122131                        $comp[] = $r;
    123132                }
    124                 $code = join ("\n", $comp);
    125                 $code = 'function '.$b.'($t) {' . "\n". $code . "\n\treturn \$t;\n}\n\n";
    126                 $code = join ("\n", $pre) . $code;
     133                $code = join("\n", $comp);
     134                $code = 'function ' . $b . '($t) {' . "\n" . $code . "\n\treturn \$t;\n}\n\n";
     135                $code = join("\n", $pre) . $code;
    127136
    128137                return $code;
     
    137146         * @return TextWheel
    138147         */
    139         public static function &getSubWheel($n){
     148        public static function &getSubWheel($n) {
    140149                return TextWheel::$subwheel[$n];
    141150        }
     
    143152        /**
    144153         * Create SubWheel (can be overriden in debug class)
     154         *
    145155         * @param TextWheelRuleset $rules
    146156         * @return TextWheel
    147157         */
    148         protected function &createSubWheel(&$rules){
     158        protected function &createSubWheel(&$rules) {
    149159                $tw = new TextWheel($rules);
     160
    150161                return $tw;
    151162        }
     
    158169         * @param TextWheelRule $rule
    159170         */
    160         protected function initRule(&$rule){
     171        protected function initRule(&$rule) {
    161172                # language specific
    162                 if ($rule->require){
     173                if ($rule->require) {
    163174                        require_once $rule->require;
    164175                }
     
    172183                }
    173184
    174                 if ($rule->create_replace){
    175                         $compile = $rule->replace.'($t)';
     185                if ($rule->create_replace) {
     186                        $compile = $rule->replace . '($t)';
    176187                        $rule->replace = create_function('$m', $rule->replace);
    177188                        $this->compiled[$rule->replace] = $compile;
    178189                        $rule->create_replace = false;
    179190                        $rule->is_callback = true;
    180                 }
    181                 elseif ($rule->is_wheel){
     191                } elseif ($rule->is_wheel) {
    182192                        $n = count(TextWheel::$subwheel);
    183193                        TextWheel::$subwheel[] = $this->createSubWheel($rule->replace);
    184                         $var = '$m['.intval($rule->pick_match).']';
    185                         if ($rule->type=='all' OR $rule->type=='str' OR $rule->type=='split' OR !isset($rule->match))
     194                        $var = '$m[' . intval($rule->pick_match) . ']';
     195                        if ($rule->type == 'all' OR $rule->type == 'str' OR $rule->type == 'split' OR !isset($rule->match)) {
    186196                                $var = '$m';
    187                         $code = 'return TextWheel::getSubWheel('.$n.')->text('.$var.');';
     197                        }
     198                        $code = 'return TextWheel::getSubWheel(' . $n . ')->text(' . $var . ');';
    188199                        $rule->replace = create_function('$m', $code);
    189                         $cname = 'compiled_'.str_replace('-','_', $rule->name);
     200                        $cname = 'compiled_' . str_replace('-', '_', $rule->name);
    190201                        $compile = TextWheel::getSubWheel($n)->compile($cname);
    191202                        $this->compiled[$rule->replace] = $compile;
     
    197208                $rule->func_replace = '';
    198209                if (isset($rule->replace)) {
    199                         switch($rule->type) {
     210                        switch ($rule->type) {
    200211                                case 'all':
    201212                                        $rule->func_replace = 'replace_all';
     
    206217                                        if (!$rule->is_callback
    207218                                                AND is_array($rule->match) AND is_array($rule->replace)
    208                                                 AND $c = array_map('strlen',$rule->match)
     219                                                AND $c = array_map('strlen', $rule->match)
    209220                                                AND $c = array_unique($c)
    210                                                 AND count($c)==1
    211                                                 AND reset($c)==1
    212                                                 AND $c = array_map('strlen',$rule->replace)
     221                                                AND count($c) == 1
     222                                                AND reset($c) == 1
     223                                                AND $c = array_map('strlen', $rule->replace)
    213224                                                AND $c = array_unique($c)
    214                                                 AND count($c)==1
    215                                                 AND reset($c)==1
    216                                                 ){
    217                                                 $rule->match = implode('',$rule->match);
    218                                                 $rule->replace = implode('',$rule->replace);
     225                                                AND count($c) == 1
     226                                                AND reset($c) == 1
     227                                        ) {
     228                                                $rule->match = implode('', $rule->match);
     229                                                $rule->replace = implode('', $rule->replace);
    219230                                                $rule->func_replace = 'replace_strtr';
    220231                                        }
     
    222233                                case 'split':
    223234                                        $rule->func_replace = 'replace_split';
    224                                         $rule->match = array($rule->match,  is_null($rule->glue)?$rule->match:$rule->glue);
     235                                        $rule->match = array($rule->match, is_null($rule->glue) ? $rule->match : $rule->glue);
    225236                                        break;
    226237                                case 'preg':
     
    229240                                        break;
    230241                        }
    231                         if ($rule->is_callback)
     242                        if ($rule->is_callback) {
    232243                                $rule->func_replace .= '_cb';
    233                 }
    234                 if (!method_exists("TextWheel", $rule->func_replace)){
     244                        }
     245                }
     246                if (!method_exists("TextWheel", $rule->func_replace)) {
    235247                        $rule->disabled = true;
    236248                        $rule->func_replace = 'replace_identity';
     
    248260        protected function apply(&$rule, &$t, &$count = null) {
    249261
    250                 if ($rule->disabled)
     262                if ($rule->disabled) {
    251263                        return;
    252 
    253                 if (isset($rule->if_chars) AND (strpbrk($t, $rule->if_chars) === false))
     264                }
     265
     266                if (isset($rule->if_chars) AND (strpbrk($t, $rule->if_chars) === false)) {
    254267                        return;
    255 
    256                 if (isset($rule->if_match) AND !preg_match($rule->if_match, $t))
     268                }
     269
     270                if (isset($rule->if_match) AND !preg_match($rule->if_match, $t)) {
    257271                        return;
     272                }
    258273
    259274                // init rule before testing if_str / if_stri as they are optimized by initRule
    260                 if (!isset($rule->func_replace))
     275                if (!isset($rule->func_replace)) {
    261276                        $this->initRule($rule);
    262 
    263                 if (isset($rule->if_str) AND strpos($t, $rule->if_str) === false)
     277                }
     278
     279                if (isset($rule->if_str) AND strpos($t, $rule->if_str) === false) {
    264280                        return;
    265 
    266                 if (isset($rule->if_stri) AND stripos($t, $rule->if_stri) === false)
     281                }
     282
     283                if (isset($rule->if_stri) AND stripos($t, $rule->if_stri) === false) {
    267284                        return;
     285                }
    268286
    269287                $func = $rule->func_replace;
    270                 TextWheel::$func($rule->match,$rule->replace,$t,$count);
     288                TextWheel::$func($rule->match, $rule->replace, $t, $count);
    271289        }
    272290
     
    275293         * fall back in case of unknown method for replacing
    276294         * should be called max once per rule
    277          * 
    278          * @param mixed $match
    279          * @param mixed $replace
    280          * @param string $t
    281          * @param int $count
    282          */
    283         protected static function replace_identity(&$match, &$replace, &$t, &$count){
     295         *
     296         * @param mixed $match
     297         * @param mixed $replace
     298         * @param string $t
     299         * @param int $count
     300         */
     301        protected static function replace_identity(&$match, &$replace, &$t, &$count) {
    284302        }
    285303
    286304        /**
    287305         * Static replacement of All text
    288          * @param mixed $match
    289          * @param mixed $replace
    290          * @param string $t
    291          * @param int $count
    292          */
    293         protected static function replace_all(&$match, &$replace, &$t, &$count){
     306         *
     307         * @param mixed $match
     308         * @param mixed $replace
     309         * @param string $t
     310         * @param int $count
     311         */
     312        protected static function replace_all(&$match, &$replace, &$t, &$count) {
    294313                # special case: replace $0 with $t
    295314                #   replace: "A$0B" will surround the string with A..B
    296315                #   replace: "$0$0" will repeat the string
    297                 if (strpos($replace, '$0')!==FALSE)
     316                if (strpos($replace, '$0') !== false) {
    298317                        $t = str_replace('$0', $t, $replace);
    299                 else
     318                } else {
    300319                        $t = $replace;
     320                }
    301321        }
    302322
    303323        /**
    304324         * Call back replacement of All text
    305          * @param mixed $match
    306          * @param mixed $replace
    307          * @param string $t
    308          * @param int $count
    309          */
    310         protected static function replace_all_cb(&$match, &$replace, &$t, &$count){
     325         *
     326         * @param mixed $match
     327         * @param mixed $replace
     328         * @param string $t
     329         * @param int $count
     330         */
     331        protected static function replace_all_cb(&$match, &$replace, &$t, &$count) {
    311332                $t = $replace($t);
    312333        }
     
    320341         * @param int $count
    321342         */
    322         protected static function replace_str(&$match, &$replace, &$t, &$count){
    323                 if (!is_string($match) OR strpos($t,$match)!==FALSE)
     343        protected static function replace_str(&$match, &$replace, &$t, &$count) {
     344                if (!is_string($match) OR strpos($t, $match) !== false) {
    324345                        $t = str_replace($match, $replace, $t, $count);
     346                }
    325347        }
    326348
     
    333355         * @param int $count
    334356         */
    335         protected static function replace_strtr(&$match, &$replace, &$t, &$count){
    336                 $t = strtr( $t, $match, $replace);
     357        protected static function replace_strtr(&$match, &$replace, &$t, &$count) {
     358                $t = strtr($t, $match, $replace);
    337359        }
    338360
     
    345367         * @param int $count
    346368         */
    347         protected static function replace_str_cb(&$match, &$replace, &$t, &$count){
    348                 if (strpos($t,$match)!==FALSE)
    349                         if (count($b = explode($match, $t)) > 1)
     369        protected static function replace_str_cb(&$match, &$replace, &$t, &$count) {
     370                if (strpos($t, $match) !== false) {
     371                        if (count($b = explode($match, $t)) > 1) {
    350372                                $t = join($replace($match), $b);
     373                        }
     374                }
    351375        }
    352376
     
    360384         * @throws Exception
    361385         */
    362         protected static function replace_preg(&$match, &$replace, &$t, &$count){
     386        protected static function replace_preg(&$match, &$replace, &$t, &$count) {
    363387                $t = preg_replace($match, $replace, $t, -1, $count);
    364                 if (is_null($t)){
     388                if (is_null($t)) {
    365389                        throw new Exception('Memory error, increase pcre.backtrack_limit in php.ini');
    366390                }
     
    369393        /**
    370394         * Callback Preg replacement
     395         *
    371396         * @param mixed $match
    372397         * @param mixed $replace
     
    375400         * @throws Exception
    376401         */
    377         protected static function replace_preg_cb(&$match, &$replace, &$t, &$count){
     402        protected static function replace_preg_cb(&$match, &$replace, &$t, &$count) {
    378403                $t = preg_replace_callback($match, $replace, $t, -1, $count);
    379                 if (is_null($t)){
     404                if (is_null($t)) {
    380405                        throw new Exception('Memory error, increase pcre.backtrack_limit in php.ini');
    381406                }
     
    385410        /**
    386411         * Static split replacement : invalid
    387          * @param mixed $match
    388          * @param mixed $replace
    389          * @param string $t
    390          * @param int $count
    391          */
    392         protected static function replace_split(&$match, &$replace, &$t, &$count){
     412         *
     413         * @param mixed $match
     414         * @param mixed $replace
     415         * @param string $t
     416         * @param int $count
     417         */
     418        protected static function replace_split(&$match, &$replace, &$t, &$count) {
    393419                throw new InvalidArgumentException('split rule always needs a callback function as replace');
    394420        }
     
    396422        /**
    397423         * Callback split replacement
     424         *
    398425         * @param array $match
    399426         * @param mixed $replace
     
    401428         * @param int $count
    402429         */
    403         protected static function replace_split_cb(&$match, &$replace, &$t, &$count){
     430        protected static function replace_split_cb(&$match, &$replace, &$t, &$count) {
    404431                $a = explode($match[0], $t);
    405                 $t = join($match[1], array_map($replace,$a));
     432                $t = join($match[1], array_map($replace, $a));
    406433        }
    407434}
     
    417444        /**
    418445         * Timer for profiling
    419          * 
     446         *
    420447         * @staticvar int $time
    421448         * @param string $t
     
    425452        protected function timer($t = 'rien', $raw = false) {
    426453                static $time;
    427                 $a=time(); $b=microtime();
     454                $a = time();
     455                $b = microtime();
    428456                // microtime peut contenir les microsecondes et le temps
    429                 $b=explode(' ',$b);
    430                 if (count($b)==2) $a = end($b); // plus precis !
     457                $b = explode(' ', $b);
     458                if (count($b) == 2) {
     459                        $a = end($b);
     460                } // plus precis !
    431461                $b = reset($b);
    432462                if (!isset($time[$t])) {
    433                         $time[$t] = $a + $b;
     463                        $time[$t] = $a+$b;
    434464                } else {
    435                         $p = ($a + $b - $time[$t]) * 1000;
     465                        $p = ($a+$b-$time[$t])*1000;
    436466                        unset($time[$t]);
    437                         if ($raw) return $p;
    438                         if ($p < 1000)
     467                        if ($raw) {
     468                                return $p;
     469                        }
     470                        if ($p < 1000) {
    439471                                $s = '';
    440                         else {
     472                        } else {
    441473                                $s = sprintf("%d ", $x = floor($p/1000));
    442474                                $p -= ($x*1000);
    443475                        }
     476
    444477                        return $s . sprintf("%.3f ms", $p);
    445478                }
     
    453486         */
    454487        public function text($t) {
    455                 $rules = & $this->ruleset->getRules();
     488                $rules = &$this->ruleset->getRules();
    456489                ## apply each in order
    457490                foreach ($rules as $name => $rule) #php4+php5
    458491                {
    459                         if (is_int($name))
    460                                 $name .= ' '.$rule->match;
     492                        if (is_int($name)) {
     493                                $name .= ' ' . $rule->match;
     494                        }
    461495                        $this->timer($name);
    462496                        $b = $t;
    463497                        $this->apply($rule, $t);
    464                         TextWheelDebug::$w[$name] ++; # nombre de fois appliquee
     498                        TextWheelDebug::$w[$name]++; # nombre de fois appliquee
    465499                        $v = $this->timer($name, true); # timer
    466500                        TextWheelDebug::$t[$name] += $v;
    467501                        if ($t !== $b) {
    468                                 TextWheelDebug::$u[$name] ++; # nombre de fois utile
     502                                TextWheelDebug::$u[$name]++; # nombre de fois utile
    469503                                TextWheelDebug::$tu[$name] += $v;
    470504                        } else {
    471505                                TextWheelDebug::$tnu[$name] += $v;
    472506                        }
    473                        
     507
    474508                }
    475509                #foreach ($this->rules as &$rule) #smarter &reference, but php5 only
     
    481515         * Ouputs data stored for profiling/debuging purposes
    482516         */
    483         public static function outputDebug(){
     517        public static function outputDebug() {
    484518                if (isset(TextWheelDebug::$t)) {
    485519                        $time = array_flip(array_map('strval', TextWheelDebug::$t));
     
    502536                        <thead><tr><th>temps&nbsp;(ms)</th><th>rule</th><th>application</th><th>t/u&nbsp;(ms)</th><th>t/n-u&nbsp;(ms)</th></tr></thead>\n";
    503537                        $total = 0;
    504                         foreach($time as $t => $r) {
     538                        foreach ($time as $t => $r) {
    505539                                $applications = intval(TextWheelDebug::$u[$r]);
    506540                                $total += $t;
    507                                 if(intval($t*10))
     541                                if (intval($t*10)) {
    508542                                        echo "<tr>
    509                                         <td class='number strong'>".number_format(round($t*10)/10,1)."</td><td> ".spip_htmlspecialchars($r)."</td>
     543                                        <td class='number strong'>" . number_format(round($t*10)/10, 1) . "</td><td> " . spip_htmlspecialchars($r) . "</td>
    510544                                        <td"
    511                                         . (!$applications ? " class='zero'" : "")
    512                                         .">".$applications."/".intval(TextWheelDebug::$w[$r])."</td>
    513                                         <td class='number'>".($applications?number_format(round(TextWheelDebug::$tu[$r]/$applications*100)/100,2):"") ."</td>
    514                                         <td class='number'>".(($nu = intval(TextWheelDebug::$w[$r])-$applications)?number_format(round(TextWheelDebug::$tnu[$r]/$nu*100)/100,2):"") ."</td>
     545                                                . (!$applications ? " class='zero'" : "")
     546                                                . ">" . $applications . "/" . intval(TextWheelDebug::$w[$r]) . "</td>
     547                                        <td class='number'>" . ($applications ? number_format(round(TextWheelDebug::$tu[$r]/$applications*100)/100,
     548                                                        2) : "") . "</td>
     549                                        <td class='number'>" . (($nu = intval(TextWheelDebug::$w[$r])-$applications) ? number_format(round(TextWheelDebug::$tnu[$r]/$nu*100)/100,
     550                                                        2) : "") . "</td>
    515551                                        </tr>";
     552                                }
    516553                        }
    517554                        echo "</table>\n";
     
    525562                        echo "</table>";
    526563                        # somme des temps des rules, ne tient pas compte des subwheels
    527                         echo "<p>temps total rules: ".round($total)."&nbsp;ms</p>\n";
     564                        echo "<p>temps total rules: " . round($total) . "&nbsp;ms</p>\n";
    528565                        echo "</div>\n";
    529566                }
     
    537574                        } else {
    538575                                echo "<tr class='prof-$profondeur'>
    539                                         <td class='number'><b>".intval($duree)."</b>&nbsp;ms</td>
    540                                         <td class='name'>".spip_htmlspecialchars($cause)."</td>
     576                                        <td class='number'><b>" . intval($duree) . "</b>&nbsp;ms</td>
     577                                        <td class='name'>" . spip_htmlspecialchars($cause) . "</td>
    541578                                        </tr>\n";
    542579                        }
    543580                }
    544581        }
    545        
     582
    546583        /**
    547584         * Create SubWheel (can be overriden in debug class)
     585         *
    548586         * @param TextWheelRuleset $rules
    549587         * @return TextWheel
    550588         */
    551         protected function &createSubWheel(&$rules){
     589        protected function &createSubWheel(&$rules) {
    552590                return new TextWheelDebug($rules);
    553591        }
    554592
    555593}
    556 
    557594
    558595
     
    562599if (!function_exists('stripos')) {
    563600        function stripos($haystack, $needle) {
    564                 return strpos($haystack, stristr( $haystack, $needle ));
     601                return strpos($haystack, stristr($haystack, $needle));
    565602        }
    566603}
     
    572609if (!function_exists('strpbrk')) {
    573610        function strpbrk($haystack, $char_list) {
    574     $result = strcspn($haystack, $char_list);
    575     if ($result != strlen($haystack)) {
    576         return $result;
    577     }
    578     return false;
     611                $result = strcspn($haystack, $char_list);
     612                if ($result != strlen($haystack)) {
     613                        return $result;
     614                }
     615
     616                return false;
    579617        }
    580618}
  • _core_/plugins/textwheel/engine/textwheelrule.php

    r92394 r93628  
    1919 */
    2020
    21 if (!defined('_ECRIRE_INC_VERSION')) return;
     21if (!defined('_ECRIRE_INC_VERSION')) {
     22        return;
     23}
    2224
    2325class TextWheelRule {
     
    2628        # optional
    2729        var $priority = 0; # rule priority (rules are applied in ascending order)
    28                 # -100 = application escape, +100 = application unescape
     30        # -100 = application escape, +100 = application unescape
    2931        var $name; # rule's name
    3032        var $author; # rule's author
     
    3335        var $version; # rule version
    3436        var $test; # rule test function
    35         var $disabled=false; # true if rule is disabled
     37        var $disabled = false; # true if rule is disabled
    3638
    3739        ## rule init checks
     
    5658
    5759        # optional
    58         var $is_callback=false; # $replace is a callback function
     60        var $is_callback = false; # $replace is a callback function
    5961        var $is_wheel; # flag to create a sub-wheel from rules given as replace
    6062        var $pick_match = 0; # item to pick for sub-wheel replace
     
    7173        /**
    7274         * Rule constructor
     75         *
    7376         * @param <type> $args
    7477         * @return <type>
    7578         */
    7679        public function __construct($args) {
    77                 if (!is_array($args))
     80                if (!is_array($args)) {
    7881                        return;
    79                 foreach($args as $k=>$v)
    80                         if (property_exists($this, $k))
     82                }
     83                foreach ($args as $k => $v) {
     84                        if (property_exists($this, $k)) {
    8185                                $this->$k = $args[$k];
     86                        }
     87                }
    8288                $this->checkValidity(); // check that the rule is valid
    8389        }
     
    8692         * Rule checker
    8793         */
    88         protected function checkValidity(){
    89                 if ($this->type=='split'){
    90                         if (is_array($this->match))
     94        protected function checkValidity() {
     95                if ($this->type == 'split') {
     96                        if (is_array($this->match)) {
    9197                                throw new InvalidArgumentException('match argument for split rule can\'t be an array');
    92                         if (isset($this->glue) AND is_array($this->glue))
     98                        }
     99                        if (isset($this->glue) AND is_array($this->glue)) {
    93100                                throw new InvalidArgumentException('glue argument for split rule can\'t be an array');
     101                        }
    94102                }
    95103        }
  • _core_/plugins/textwheel/engine/textwheelruleset.php

    r93092 r93628  
    1919 */
    2020
    21 if (!defined('_ECRIRE_INC_VERSION')) return;
    22 
    23 require_once dirname(__FILE__)."/textwheelrule.php";
     21if (!defined('_ECRIRE_INC_VERSION')) {
     22        return;
     23}
     24
     25require_once dirname(__FILE__) . "/textwheelrule.php";
    2426
    2527abstract class TextWheelDataSet {
     
    3537         * @return string
    3638         */
    37         protected function findFile(&$file, $path = ''){
     39        protected function findFile(&$file, $path = '') {
    3840                static $default_path;
    3941
    4042                // absolute file path ?
    41                 if (file_exists($file))
     43                if (file_exists($file)) {
    4244                        return $file;
     45                }
    4346
    4447                // file embed with texwheels, relative to calling ruleset
    45                 if ($path AND file_exists($f = $path.$file))
     48                if ($path AND file_exists($f = $path . $file)) {
    4649                        return $f;
     50                }
    4751
    4852                // textwheel default path ?
    49                 if (!$default_path)
    50                         $default_path = dirname(__FILE__).'/../wheels/';
    51                 if (file_exists($f = $default_path.$file))
     53                if (!$default_path) {
     54                        $default_path = dirname(__FILE__) . '/../wheels/';
     55                }
     56                if (file_exists($f = $default_path . $file)) {
    5257                        return $f;
     58                }
    5359
    5460                return false;
    5561        }
    56        
     62
    5763        /**
    5864         * Load a yaml file describing data
     65         *
    5966         * @param string $file
    6067         * @param string $default_path
     
    6269         */
    6370        protected function loadFile(&$file, $default_path = '') {
    64                 if (!preg_match(',[.]yaml$,i',$file)
    65                   // external rules
    66                   OR !$file = $this->findFile($file,$default_path))
     71                if (!preg_match(',[.]yaml$,i', $file)
     72                        // external rules
     73                        OR !$file = $this->findFile($file, $default_path)
     74                ) {
    6775                        return array();
     76                }
    6877
    6978                defined('_YAML_EVAL_PHP') || define('_YAML_EVAL_PHP', false);
    7079                if (!function_exists('yaml_decode')) {
    71                         if (function_exists('include_spip'))
     80                        if (function_exists('include_spip')) {
    7281                                include_spip('inc/yaml-mini');
    73                         else
    74                                 require_once dirname(__FILE__).'/../inc/yaml.php';
     82                        } else {
     83                                require_once dirname(__FILE__) . '/../inc/yaml.php';
     84                        }
    7585                }
    7686                $dataset = yaml_decode(file_get_contents($file));
    7787
    78                 if (is_null($dataset))
     88                if (is_null($dataset)) {
    7989                        $dataset = array();
     90                }
    8091#                       throw new DomainException('yaml file is empty, unreadable or badly formed: '.$file.var_export($dataset,true));
    8192
    8293                // if a php file with same name exists
    8394                // include it as it contains callback functions
    84                 if ($f = preg_replace(',[.]yaml$,i','.php',$file)
    85                 AND file_exists($f)) {
     95                if ($f = preg_replace(',[.]yaml$,i', '.php', $file)
     96                        AND file_exists($f)
     97                ) {
    8698                        $dataset[] = array('require' => $f, 'priority' => -1000);
    87 }
     99                }
     100
    88101                return $dataset;
    89102        }
     
    102115         */
    103116        public function __construct($ruleset = array(), $filepath = '') {
    104                 if ($ruleset)
     117                if ($ruleset) {
    105118                        $this->addRules($ruleset, $filepath);
     119                }
    106120        }
    107121
     
    115129         * @return class
    116130         */
    117         public static function &loader($ruleset, $callback = '', $class = 'TextWheelRuleSet'){
     131        public static function &loader($ruleset, $callback = '', $class = 'TextWheelRuleSet') {
    118132
    119133                $ruleset = new $class($ruleset);
    120                 if ($callback)
     134                if ($callback) {
    121135                        $callback($ruleset);
     136                }
    122137
    123138                return $ruleset;
    124139        }
     140
    125141        /**
    126142         * Get an existing named rule in order to override it
     
    129145         * @return string
    130146         */
    131         public function &getRule($name){
    132                 if (isset($this->data[$name]))
     147        public function &getRule($name) {
     148                if (isset($this->data[$name])) {
    133149                        return $this->data[$name];
     150                }
    134151                $result = null;
     152
    135153                return $result;
    136154        }
    137        
     155
    138156        /**
    139157         * get sorted Rules
     158         *
    140159         * @return array
    141160         */
    142         public function &getRules(){
     161        public function &getRules() {
    143162                $this->sort();
     163
    144164                return $this->data;
    145165        }
     
    152172        public function addRule($rule) {
    153173                # cast array-rule to object
    154                 if (is_array($rule))
     174                if (is_array($rule)) {
    155175                        $rule = new TextWheelRule($rule);
     176                }
    156177                $this->data[] = $rule;
    157178                $this->sorted = false;
     
    171192                // rules can be an array of filename
    172193                if (is_array($rules) AND is_string(reset($rules))) {
    173                         foreach($rules as $i=>$filename)
     194                        foreach ($rules as $i => $filename) {
    174195                                $this->addRules($filename);
     196                        }
     197
    175198                        return;
    176199                }
     
    180203                        $file = $rules; // keep the real filename
    181204                        $rules = $this->loadFile($file, $filepath);
    182                         $filepath = dirname($file).'/';
     205                        $filepath = dirname($file) . '/';
    183206                }
    184207
    185208                // rules can be an array of rules
    186                 if (is_array($rules) AND count($rules)){
     209                if (is_array($rules) AND count($rules)) {
    187210                        # cast array-rules to objects
    188211                        foreach ($rules as $i => $rule) {
    189                                 if (is_array($rule))
     212                                if (is_array($rule)) {
    190213                                        $rules[$i] = new TextWheelRule($rule);
     214                                }
    191215                                // load subwheels when necessary
    192                                 if ($rules[$i]->is_wheel){
     216                                if ($rules[$i]->is_wheel) {
    193217                                        // subruleset is of the same class as current ruleset
    194218                                        $class = get_class($this);
     
    209233                if (!$this->sorted) {
    210234                        $rulz = array();
    211                         foreach($this->data as $index => $rule)
    212                                 if (!$rule->disabled)
     235                        foreach ($this->data as $index => $rule) {
     236                                if (!$rule->disabled) {
    213237                                        $rulz[intval($rule->priority)][$index] = $rule;
     238                                }
     239                        }
    214240                        ksort($rulz);
    215241                        $this->data = array();
    216                         foreach($rulz as $rules)
     242                        foreach ($rulz as $rules) {
    217243                                $this->data += $rules;
     244                        }
    218245
    219246                        $this->sorted = true;
  • _core_/plugins/textwheel/inc/autoliens.php

    r88959 r93628  
    66function tw_autoliens($t) {
    77
    8         defined('_EXTRAIRE_LIENS') || define('_EXTRAIRE_LIENS', ',' . '\[[^\[\]]*(?:<-|->).*?\]' . '|<a\b.*?</a\b' . '|<\w.*?>' . '|((?:https?:/|www\.)[^"\'\s\[\]\}\)<>]*)' .',imsS');
     8        defined('_EXTRAIRE_LIENS') || define('_EXTRAIRE_LIENS', ',' . '\[[^\[\]]*(?:<-|->).*?\]' . '|<a\b.*?</a\b' . '|<\w.*?>' . '|((?:https?:/|www\.)[^"\'\s\[\]\}\)<>]*)' . ',imsS');
    99
    1010        $t = preg_replace_callback(_EXTRAIRE_LIENS, 'tw_traiter_autoliens', $t);
    1111
    1212        // echapper les autoliens eventuellement inseres (en une seule fois)
    13         if (strpos($t,"<html>")!==false)
     13        if (strpos($t, "<html>") !== false) {
    1414                $t = echappe_html($t);
     15        }
     16
    1517        return $t;
    1618}
     
    2022// http://code.spip.net/@autoliens_callback
    2123function tw_traiter_autoliens($r) {
    22         if (count($r)<2) return reset($r);
     24        if (count($r) < 2) {
     25                return reset($r);
     26        }
    2327        list($tout, $l) = $r;
    24         if (!$l) return $tout;
     28        if (!$l) {
     29                return $tout;
     30        }
    2531        // reperer le protocole
    2632        if (preg_match(',^(https?):/*,S', $l, $m)) {
    2733                $l = substr($l, strlen($m[0]));
    2834                $protocol = $m[1];
    29         } else  $protocol = 'http';
     35        } else {
     36                $protocol = 'http';
     37        }
    3038        // valider le nom de domaine
    31         if (!preg_match(_EXTRAIRE_DOMAINE, $l)) return $tout;
     39        if (!preg_match(_EXTRAIRE_DOMAINE, $l)) {
     40                return $tout;
     41        }
    3242        // les ponctuations a la fin d'une URL n'en font certainement pas partie
    3343        // en particulier le "|" quand elles sont dans un tableau a la SPIP
    3444        preg_match('/^(.*?)([,.;?|]?)$/', $l, $k);
    35         $url = $protocol.'://'.$k[1];
     45        $url = $protocol . '://' . $k[1];
    3646        $lien = charger_fonction('lien', 'inc');
    3747        // deux fois <html> car inc_lien echappe un coup et restaure ensuite
    3848        // => un perd 1 <html>
    39         $r = $lien($url,"<html><html>$url</html></html>",'','','','nofollow') . $k[2];
     49        $r = $lien($url, "<html><html>$url</html></html>", '', '', '', 'nofollow') . $k[2];
    4050
    4151        // ajouter la class auto
    42         $r = inserer_attribut($r, 'class', trim(extraire_attribut($r,'class').' auto'));
     52        $r = inserer_attribut($r, 'class', trim(extraire_attribut($r, 'class') . ' auto'));
    4353
    4454        // si l'original ne contenait pas le 'http:' on le supprime du clic
     
    4757
    4858
    49 
    5059?>
  • _core_/plugins/textwheel/inc/lien.php

    r93534 r93628  
    1111\***************************************************************************/
    1212
    13 if (!defined('_ECRIRE_INC_VERSION')) return;
     13if (!defined('_ECRIRE_INC_VERSION')) {
     14        return;
     15}
    1416
    1517include_spip('base/abstract_sql');
     
    3335 * @return string
    3436 */
    35 function inc_lien_dist($lien, $texte = '', $class = '', $title = '', $hlang = '', $rel = '', $connect = '', $env = array()) {
    36         static $u=null;
    37         if (!$u) $u = url_de_base();
     37function inc_lien_dist(
     38        $lien,
     39        $texte = '',
     40        $class = '',
     41        $title = '',
     42        $hlang = '',
     43        $rel = '',
     44        $connect = '',
     45        $env = array()
     46) {
     47        static $u = null;
     48        if (!$u) {
     49                $u = url_de_base();
     50        }
    3851        $typo = false;
    3952
     
    4760                and $match = typer_raccourci($lien)
    4861        ) {
    49                 @list($type,,$id,,$args,,$ancre) = $match;
     62                @list($type, , $id, , $args, , $ancre) = $match;
    5063                $trouver_table = charger_fonction('trouver_table', 'base');
    51                 $desc = $trouver_table(table_objet($type, $connect),$connect);
     64                $desc = $trouver_table(table_objet($type, $connect), $connect);
    5265                if (
    5366                        $desc
     
    5669                        $table_objet_sql = $desc['table'];
    5770                        if (
    58                                 $row=sql_fetsel('*', $table_objet_sql, "$id_table_objet=".intval($id))
     71                                $row = sql_fetsel('*', $table_objet_sql, "$id_table_objet=" . intval($id))
    5972                                and isset($row['id_trad'])
    6073                                and isset($row['lang'])
    61                                 and $id_dest = sql_getfetsel($id_table_objet, $table_objet_sql,"id_trad=".intval($row['id_trad'])." AND lang=" . sql_quote($hlang))
    62                                 and objet_test_si_publie($type,$id_dest)
     74                                and $id_dest = sql_getfetsel($id_table_objet, $table_objet_sql,
     75                                        "id_trad=" . intval($row['id_trad']) . " AND lang=" . sql_quote($hlang))
     76                                and objet_test_si_publie($type, $id_dest)
    6377                        ) {
    6478                                $lien = "$type$id_dest";
    65                         }
    66                         else {
     79                        } else {
    6780                                $hlang = '';
    6881                        }
    69                 }
    70                 else {
     82                } else {
    7183                        $hlang = '';
    7284                }
     
    8294                }
    8395                $lang = isset($lien['lang']) ? $lien['lang'] : '';
    84                 $mime = isset($lien['mime']) ? " type='".$lien['mime']."'" : "";
     96                $mime = isset($lien['mime']) ? " type='" . $lien['mime'] . "'" : "";
    8597                $lien = $lien['url'];
    8698        }
     
    89101        if (strncmp($lien, "#", 1) == 0) {  # ancres pures (internes a la page)
    90102                $class = 'spip_ancre';
    91         }
    92         elseif (strncasecmp($lien,'mailto:',7)==0) { # pseudo URL de mail
     103        } elseif (strncasecmp($lien, 'mailto:', 7) == 0) { # pseudo URL de mail
    93104                $class = "spip_mail";
    94         }
    95         elseif (strncmp($texte,'<html>',6)==0) { # cf traiter_lien_explicite
     105        } elseif (strncmp($texte, '<html>', 6) == 0) { # cf traiter_lien_explicite
    96106                $class = "spip_url";
    97107                # spip_out sur les URLs externes
     
    102112                        $class .= " spip_out";
    103113                }
    104         }
    105         elseif (!$class) {
     114        } elseif (!$class) {
    106115                # spip_out sur les URLs externes
    107116                if (
     
    113122        }
    114123        if ($class) {
    115                 $class=" class='$class'";
     124                $class = " class='$class'";
    116125        }
    117126
    118127        // Si l'objet n'est pas de la langue courante, on ajoute hreflang
    119         if (!$hlang and isset($lang) and $lang!==$GLOBALS['spip_lang']) {
     128        if (!$hlang and isset($lang) and $lang !== $GLOBALS['spip_lang']) {
    120129                $hlang = $lang;
    121130        }
     
    124133
    125134        if ($title) {
    126                 $title = ' title="'.attribut_html($title).'"';
    127         }
    128         else {
     135                $title = ' title="' . attribut_html($title) . '"';
     136        } else {
    129137                $title = ''; // $title peut etre 'false'
    130138        }
    131        
     139
    132140        // rel=external pour les liens externes
    133141        if (
    134                 (strncmp($lien,'http://',7)==0 or strncmp($lien,'https://',8)==0)
    135                 and strncmp("$lien/", $u ,strlen($u))!=0
     142                (strncmp($lien, 'http://', 7) == 0 or strncmp($lien, 'https://', 8) == 0)
     143                and strncmp("$lien/", $u, strlen($u)) != 0
    136144        ) {
    137145                $rel = trim("$rel external");
     
    142150
    143151        $lang_objet_prev = '';
    144         if ($hlang AND $hlang!==$GLOBALS['spip_lang']){
    145                 $lang_objet_prev = isset($GLOBALS['lang_objet'])?$GLOBALS['lang_objet']:null;
     152        if ($hlang AND $hlang !== $GLOBALS['spip_lang']) {
     153                $lang_objet_prev = isset($GLOBALS['lang_objet']) ? $GLOBALS['lang_objet'] : null;
    146154                $GLOBALS['lang_objet'] = $hlang;
    147155        }
     
    151159        if (traiter_modeles($texte, false, '', $connect, null, $env) == $texte) {
    152160                $texte = typo($texte, true, $connect, $env);
    153                 $lien = "<a href=\"".str_replace('"', '&quot;', $lien)."\"$class$lang$title$rel".(isset($mime)?$mime:'').">$texte</a>";
    154                 if ($lang_objet_prev!==''){
    155                         if ($lang_objet_prev) $GLOBALS['lang_objet'] = $lang_objet_prev; else unset($GLOBALS['lang_objet']);
    156                 }
     161                $lien = "<a href=\"" . str_replace('"', '&quot;',
     162                                $lien) . "\"$class$lang$title$rel" . (isset($mime) ? $mime : '') . ">$texte</a>";
     163                if ($lang_objet_prev !== '') {
     164                        if ($lang_objet_prev) {
     165                                $GLOBALS['lang_objet'] = $lang_objet_prev;
     166                        } else {
     167                                unset($GLOBALS['lang_objet']);
     168                        }
     169                }
     170
    157171                return $lien;
    158172        }
    159        
     173
    160174        # ceci s'execute heureusement avant les tableaux et leur "|".
    161175        # Attention, le texte initial est deja echappe mais pas forcement
    162176        # celui retourne par calculer_url.
    163177        # Penser au cas [<imgXX|right>->URL], qui exige typo('<a>...</a>')
    164         $lien = "<a href=\"".str_replace('"', '&quot;', $lien)."\"$class$lang$title$rel$mime>$texte</a>";
     178        $lien = "<a href=\"" . str_replace('"', '&quot;', $lien) . "\"$class$lang$title$rel$mime>$texte</a>";
    165179        #$res = typo($lien, true, $connect, $env);
    166180        $p = $GLOBALS['toujours_paragrapher'];
     
    171185        // dans ce cas, echapons le resultat du modele pour que propre etc ne viennent pas pouicher le html
    172186        $res = echappe_html("<html>$res</html>");
    173         if ($lang_objet_prev!==''){
    174                 if ($lang_objet_prev) $GLOBALS['lang_objet'] = $lang_objet_prev; else unset($GLOBALS['lang_objet']);
    175         }
     187        if ($lang_objet_prev !== '') {
     188                if ($lang_objet_prev) {
     189                        $GLOBALS['lang_objet'] = $lang_objet_prev;
     190                } else {
     191                        unset($GLOBALS['lang_objet']);
     192                }
     193        }
     194
    176195        return $res;
    177196}
     
    179198/**
    180199 * Générer le HTML d'un lien quelconque
    181  * 
     200 *
    182201 * Cette fonction génère une balise `<a>` suivant de multiples arguments.
    183202 *
     
    191210 *   Retourne une balise HTML de lien ou une chaîne vide.
    192211 */
    193 function balise_a($args = array()){
     212function balise_a($args = array()) {
    194213        $balise_a = '';
    195        
     214
    196215        // Il faut soit au minimum un href OU un name pour réussir à générer quelque chose
    197216        if (is_array($args) and (isset($args['href']) or isset($args['name']))) {
    198217                include_spip('inc/filtres');
    199218                $texte = '';
    200                
     219
    201220                // S'il y a un texte, on le récupère et on l'enlève des attributs
    202221                if (isset($args['texte']) and is_scalar($args['texte'])) {
    203222                        $texte = $args['texte'];
    204223                        unset($args['texte']);
    205                 }
    206                 // Si on a un href sans texte, on en construit un avec l'URL
     224                } // Si on a un href sans texte, on en construit un avec l'URL
    207225                elseif (isset($args['href']) and is_scalar($args['href'])) {
    208226                        static $lien_court;
     
    212230                        $texte = quote_amp($lien_court($args['href']));
    213231                }
    214                
     232
    215233                // Il ne reste normalement plus que des attributs, on les ajoute à la balise
    216234                $balise_a = '<a';
    217235                foreach ($args as $attribut => $valeur) {
    218236                        if (is_scalar($valeur) and !empty($valeur)) {
    219                                 $balise_a .= ' '.$attribut.'="'.attribut_html($valeur).'"';
     237                                $balise_a .= ' ' . $attribut . '="' . attribut_html($valeur) . '"';
    220238                        }
    221239                }
    222240                // Puis on ajoute le texte
    223                 $balise_a .= '>'.$texte.'</a>';
    224         }
    225        
     241                $balise_a .= '>' . $texte . '</a>';
     242        }
     243
    226244        return $balise_a;
    227245}
     
    238256
    239257        if (strpos($t, '\[') !== false or strpos($t, '\]') !== false) {
    240                 $t = str_replace(array('\[','\]'),array("\x1\x5", "\x1\x6"), $t);
    241         }
    242 
    243         expanser_un_lien($connect,'init', $env);
     258                $t = str_replace(array('\[', '\]'), array("\x1\x5", "\x1\x6"), $t);
     259        }
     260
     261        expanser_un_lien($connect, 'init', $env);
    244262
    245263        if (strpos($t, '->') !== false) {
    246                 $t = preg_replace_callback (_RACCOURCI_LIEN, 'expanser_un_lien',$t);
     264                $t = preg_replace_callback(_RACCOURCI_LIEN, 'expanser_un_lien', $t);
    247265        }
    248266
     
    255273        }
    256274
    257         $t = corriger_typo($t);
     275        $t = corriger_typo($t);
    258276
    259277        $t = expanser_un_lien($t, 'reinsert');
     
    270288        static $k = 0;
    271289        static $lien;
    272         static $connect='';
     290        static $connect = '';
    273291        static $contexte = array();
    274292
     
    284302                        $inserts = $sources = $regs = array();
    285303                        $connect = $reg; // stocker le $connect pour les appels a inc_lien_dist
    286                         $k=0;
     304                        $k = 0;
     305
    287306                        return;
    288307                        break;
     
    305324                        }
    306325                        $regs[$k] = $lien($r, $titre, '', $bulle, $hlang, '', $connect, $contexte);
     326
    307327                        return $inserts[$k++];
    308328                        break;
     
    312332                        }
    313333                        list($inserts, $sources, $regs, $connect, $k) = array_pop($pile);
     334
    314335                        return $reg;
    315336                        break;
     
    324345// http://code.spip.net/@nettoyer_raccourcis_typo
    325346function nettoyer_raccourcis_typo($texte, $connect = '') {
    326         $texte = pipeline('nettoyer_raccourcis_typo',$texte);
     347        $texte = pipeline('nettoyer_raccourcis_typo', $texte);
    327348
    328349        if (preg_match_all(_RACCOURCI_LIEN, $texte, $regs, PREG_SET_ORDER)) {
    329350                include_spip('inc/texte');
    330351                foreach ($regs as $reg) {
    331                         list ($titre,,)= traiter_raccourci_lien_atts($reg[1]);
     352                        list ($titre, ,) = traiter_raccourci_lien_atts($reg[1]);
    332353                        if (!$titre) {
    333354                                $match = typer_raccourci($reg[count($reg)-1]);
    334                                 if (!isset($match[0]))
     355                                if (!isset($match[0])) {
    335356                                        $match[0] = '';
    336                                 @list($type,,$id,,,,) = $match;
    337                                
     357                                }
     358                                @list($type, , $id, , , ,) = $match;
     359
    338360                                if ($type) {
    339                                         $url = generer_url_entite($id,$type,'','',true);
     361                                        $url = generer_url_entite($id, $type, '', '', true);
    340362                                        if (is_array($url)) {
    341363                                                list($type, $id) = $url;
     
    357379
    358380        // supprimer les codes typos
    359         $texte = str_replace(array('}','{'), '', $texte);
     381        $texte = str_replace(array('}', '{'), '', $texte);
    360382
    361383        // supprimer les tableaux
     
    364386        return $texte;
    365387}
    366 
    367388
    368389
     
    379400function traiter_raccourci_lien_atts($texte) {
    380401        $bulle = $hlang = false;
    381        
     402
    382403        // title et hreflang donnes par le raccourci ?
    383404        if (
     
    385406                and preg_match(_RACCOURCI_ATTRIBUTS, $texte, $m)
    386407        ) {
    387                 $n =count($m);
    388                
     408                $n = count($m);
     409
    389410                // |infobulle ?
    390411                if ($n > 2) {
    391412                        $bulle = $m[3];
    392                        
     413
    393414                        // {hreflang} ?
    394415                        if ($n > 4) {
     
    396417                                if (traduire_nom_langue($m[5]) <> $m[5]) {
    397418                                        $hlang = $m[5];
    398                                 }
    399                                 elseif (!$m[5]) {
     419                                } elseif (!$m[5]) {
    400420                                        $hlang = test_espace_prive() ?
    401                                           $GLOBALS['lang_objet'] : $GLOBALS['spip_lang'];
    402                                 // sinon c'est un italique ou un gras dans le title ou dans le texte du lien
    403                                 }
    404                                 else {
     421                                                $GLOBALS['lang_objet'] : $GLOBALS['spip_lang'];
     422                                        // sinon c'est un italique ou un gras dans le title ou dans le texte du lien
     423                                } else {
    405424                                        if ($bulle) {
    406425                                                $bulle .= $m[4];
    407                                         }
    408                                         else {
     426                                        } else {
    409427                                                $m[1] .= $m[2] . $m[4];
    410428                                        }
     
    413431                        // S'il n'y a pas de hreflang sous la forme {}, ce qui suit le |
    414432                        // est peut-etre une langue
    415                         else if (preg_match('/^[a-z_]+$/', $m[3])) {
    416                                 // si c'est un code de langue connu, on met un hreflang
    417                                 // mais on laisse le title (c'est arbitraire tout ca...)
    418                                 if (traduire_nom_langue($m[3]) <> $m[3]) {
    419                                         $hlang = $m[3];
     433                        else {
     434                                if (preg_match('/^[a-z_]+$/', $m[3])) {
     435                                        // si c'est un code de langue connu, on met un hreflang
     436                                        // mais on laisse le title (c'est arbitraire tout ca...)
     437                                        if (traduire_nom_langue($m[3]) <> $m[3]) {
     438                                                $hlang = $m[3];
     439                                        }
    420440                                }
    421441                        }
     
    423443                $texte = $m[1];
    424444        }
    425        
     445
    426446        if ($bulle) {
    427447                $bulle = nettoyer_raccourcis_typo($bulle);
     
    451471 */
    452472function virtuel_redirige($virtuel, $url = false) {
    453         if (!strlen($virtuel)) return '';
     473        if (!strlen($virtuel)) {
     474                return '';
     475        }
    454476        if (
    455477                !preg_match(_RACCOURCI_LIEN, $virtuel, $m)
     
    473495
    474496// http://code.spip.net/@calculer_url
    475 function calculer_url ($ref, $texte = '', $pour = 'url', $connect = '', $echappe_typo = true) {
     497function calculer_url($ref, $texte = '', $pour = 'url', $connect = '', $echappe_typo = true) {
    476498        $r = traiter_lien_implicite($ref, $texte, $pour, $connect, $echappe_typo);
    477499        $r = ($r ? $r : traiter_lien_explicite($ref, $texte, $pour, $connect, $echappe_typo));
     500
    478501        return $r;
    479502}
     
    482505
    483506// http://code.spip.net/@traiter_lien_explicite
    484 function traiter_lien_explicite ($ref, $texte = '', $pour = 'url', $connect = '', $echappe_typo = true) {
     507function traiter_lien_explicite($ref, $texte = '', $pour = 'url', $connect = '', $echappe_typo = true) {
    485508        if (preg_match(_EXTRAIRE_LIEN, $ref)) {
    486                 return ($pour != 'tout') ? '' : array('','','','');
     509                return ($pour != 'tout') ? '' : array('', '', '', '');
    487510        }
    488511
     
    494517                static $lien_court;
    495518                // evite l'affichage de trop longues urls.
    496                 if (!$lien_court)
     519                if (!$lien_court) {
    497520                        $lien_court = charger_fonction('lien_court', 'inc');
     521                }
    498522                $texte = $lien_court($texte);
    499523                if ($echappe_typo) {
    500                         $texte = "<html>".quote_amp($texte)."</html>";
     524                        $texte = "<html>" . quote_amp($texte) . "</html>";
    501525                }
    502526        }
    503527
    504528        // petites corrections d'URL
    505         if (preg_match('/^www\.[^@]+$/S',$lien)) {
    506                 $lien = "http://".$lien;
    507         }
    508         else if (strpos($lien, "@") && email_valide($lien)) {
    509                 if (!$texte) {
    510                         $texte = $lien;
    511                 }
    512                 $lien = "mailto:".$lien;
     529        if (preg_match('/^www\.[^@]+$/S', $lien)) {
     530                $lien = "http://" . $lien;
     531        } else {
     532                if (strpos($lien, "@") && email_valide($lien)) {
     533                        if (!$texte) {
     534                                $texte = $lien;
     535                        }
     536                        $lien = "mailto:" . $lien;
     537                }
    513538        }
    514539
     
    524549}
    525550
    526 function liens_implicite_glose_dist($texte, $id, $type, $args, $ancre, $connect = ''){
     551function liens_implicite_glose_dist($texte, $id, $type, $args, $ancre, $connect = '') {
    527552        if (function_exists($f = 'glossaire_' . $ancre)) {
    528553                $url = $f($texte, $id);
    529         }
    530         else {
     554        } else {
    531555                $url = glossaire_std($texte);
    532556        }
    533        
     557
    534558        return $url;
    535559}
     
    560584                return false;
    561585        }
    562        
    563         @list($type,,$id,,$args,,$ancre) = $match;
    564        
     586
     587        @list($type, , $id, , $args, , $ancre) = $match;
     588
    565589        # attention dans le cas des sites le lien doit pointer non pas sur
    566590        # la page locale du site, mais directement sur le site lui-meme
    567591        $url = '';
    568         if ($f = charger_fonction("implicite_$type","liens",true)) {
    569                 $url = $f($texte,$id,$type,$args,$ancre,$connect);
    570         }
    571        
     592        if ($f = charger_fonction("implicite_$type", "liens", true)) {
     593                $url = $f($texte, $id, $type, $args, $ancre, $connect);
     594        }
     595
    572596        if (!$url) {
    573                 $url = generer_url_entite($id,$type,$args,$ancre,$cible);
    574         }
    575        
     597                $url = generer_url_entite($id, $type, $args, $ancre, $cible);
     598        }
     599
    576600        if (!$url) {
    577601                return false;
    578602        }
    579        
     603
    580604        if (is_array($url)) {
    581605                @list($type, $id) = $url;
    582606                $url = generer_url_entite($id, $type, $args, $ancre, $cible);
    583607        }
    584        
     608
    585609        if ($pour === 'url') {
    586610                return $url;
    587611        }
    588        
     612
    589613        $r = traiter_raccourci_titre($id, $type, $connect);
    590614        if ($r) {
    591                 $r['class'] =  ($type == 'site')?'spip_out':'spip_in';
    592         }
    593        
     615                $r['class'] = ($type == 'site') ? 'spip_out' : 'spip_in';
     616        }
     617
    594618        if ($texte = trim($texte)) {
    595619                $r['titre'] = $texte;
    596620        }
    597        
     621
    598622        if (!@$r['titre']) {
    599                 $r['titre'] =  _T($type) . " $id";
    600         }
    601        
     623                $r['titre'] = _T($type) . " $id";
     624        }
     625
    602626        if ($pour == 'titre') {
    603627                return $r['titre'];
    604628        }
    605        
     629
    606630        $r['url'] = $url;
    607631
     
    610634                $type == 'document'
    611635                and $mime = sql_getfetsel('mime_type', 'spip_types_documents',
    612                         "extension IN (".sql_get_select("extension","spip_documents","id_document=".sql_quote($id)).")",
    613                         '','','','',$connect)
     636                        "extension IN (" . sql_get_select("extension", "spip_documents", "id_document=" . sql_quote($id)) . ")",
     637                        '', '', '', '', $connect)
    614638        ) {
    615639                $r['mime'] = $mime;
     
    624648
    625649// http://code.spip.net/@typer_raccourci
    626 function typer_raccourci ($lien) {
     650function typer_raccourci($lien) {
    627651        if (!preg_match(_RACCOURCI_URL, $lien, $match)) {
    628652                return array();
    629653        }
    630        
     654
    631655        $f = $match[1];
    632656        // valeur par defaut et alias historiques
    633657        if (!$f) {
    634658                $f = 'article';
    635         }
    636         else if ($f == 'art') {
    637                 $f = 'article';
    638         }
    639         else if ($f == 'br') {
    640                 $f = 'breve';
    641         }
    642         else if ($f == 'rub') {
    643                 $f = 'rubrique';
    644         }
    645         else if ($f == 'aut') {
    646                 $f = 'auteur';
    647         }
    648         else if ($f == 'doc' OR $f == 'im' OR $f == 'img' OR $f == 'image' OR $f == 'emb') {
    649                 $f = 'document';
    650         }
    651         else if (preg_match('/^br..?ve$/S', $f)) {
    652                 $f = 'breve'; # accents :(
    653         }
    654        
     659        } else {
     660                if ($f == 'art') {
     661                        $f = 'article';
     662                } else {
     663                        if ($f == 'br') {
     664                                $f = 'breve';
     665                        } else {
     666                                if ($f == 'rub') {
     667                                        $f = 'rubrique';
     668                                } else {
     669                                        if ($f == 'aut') {
     670                                                $f = 'auteur';
     671                                        } else {
     672                                                if ($f == 'doc' OR $f == 'im' OR $f == 'img' OR $f == 'image' OR $f == 'emb') {
     673                                                        $f = 'document';
     674                                                } else {
     675                                                        if (preg_match('/^br..?ve$/S', $f)) {
     676                                                                $f = 'breve'; # accents :(
     677                                                        }
     678                                                }
     679                                        }
     680                                }
     681                        }
     682                }
     683        }
     684
    655685        $match[0] = $f;
     686
    656687        return $match;
    657688}
     
    664695 * @param string|null $connect Connecteur SQL utilisé
    665696 * @return array {
    666  *     @var string $titre Titre si présent, sinon ''
    667  *     @var string $lang Langue si présente, sinon ''
     697 * @var string $titre Titre si présent, sinon ''
     698 * @var string $lang Langue si présente, sinon ''
    668699 * }
    669 **/
    670 function traiter_raccourci_titre($id, $type, $connect = NULL) {
     700 **/
     701function traiter_raccourci_titre($id, $type, $connect = null) {
    671702        $trouver_table = charger_fonction('trouver_table', 'base');
    672703        $desc = $trouver_table(table_objet($type));
     
    677708
    678709        $_id = $desc['key']['PRIMARY KEY'];
    679         $r = sql_fetsel($s, $desc['table'], "$_id=$id", '','','','',$connect);
     710        $r = sql_fetsel($s, $desc['table'], "$_id=$id", '', '', '', '', $connect);
    680711
    681712        if (!$r) {
     
    705736define('_PREG_MODELE',
    706737        '(<([a-z_-]{3,})' # <modele
    707  .'\s*([0-9]*)\s*' # id
    708  .'([|](?:<[^<>]*>|[^>])*?)?' # |arguments (y compris des tags <...>)
    709  .'\s*/?'.'>)' # fin du modele >
     738        . '\s*([0-9]*)\s*' # id
     739        . '([|](?:<[^<>]*>|[^>])*?)?' # |arguments (y compris des tags <...>)
     740        . '\s*/?' . '>)' # fin du modele >
    710741);
    711742
    712743define('_RACCOURCI_MODELE',
    713744        _PREG_MODELE
    714         .'\s*(<\/a>)?' # eventuel </a>
    715        );
    716 
    717 define('_RACCOURCI_MODELE_DEBUT', '@^' . _RACCOURCI_MODELE .'@isS');
     745        . '\s*(<\/a>)?' # eventuel </a>
     746);
     747
     748define('_RACCOURCI_MODELE_DEBUT', '@^' . _RACCOURCI_MODELE . '@isS');
    718749
    719750// http://code.spip.net/@traiter_modeles
     
    721752        // preserver la compatibilite : true = recherche des documents
    722753        if ($doublons === true) {
    723                 $doublons = array('documents'=>array('doc','emb','img'));
    724         }
    725        
     754                $doublons = array('documents' => array('doc', 'emb', 'img'));
     755        }
     756
    726757        // detecter les modeles (rapide)
    727758        if (
    728                 strpos($texte,"<")!==false
     759                strpos($texte, "<") !== false
    729760                and preg_match_all('/<[a-z_-]{3,}\s*[0-9|]+/iS', $texte, $matches, PREG_SET_ORDER)
    730761        ) {
    731762                include_spip('public/assembler');
    732                 $wrap_embed_html = charger_fonction("wrap_embed_html","inc",true);
     763                $wrap_embed_html = charger_fonction("wrap_embed_html", "inc", true);
    733764
    734765                // Recuperer l'appel complet (y compris un eventuel lien)
     
    736767                        $a = strpos($texte, $match[0]);
    737768                        preg_match(_RACCOURCI_MODELE_DEBUT, substr($texte, $a), $regs);
    738                        
     769
    739770                        // s'assurer qu'il y a toujours un 5e arg, eventuellement vide
    740771                        while (count($regs) < 6) {
    741772                                $regs[] = "";
    742773                        }
    743                        
    744                         list(,$mod, $type, $id, $params, $fin) = $regs;
    745                        
     774
     775                        list(, $mod, $type, $id, $params, $fin) = $regs;
     776
    746777                        if (
    747778                                $fin
     
    749780                        ) {
    750781                                $lien = array(
    751                                         'href' => extraire_attribut($r[0],'href'),
    752                                         'class' => extraire_attribut($r[0],'class'),
    753                                         'mime' => extraire_attribut($r[0],'type'),
    754                                         'title' => extraire_attribut($r[0],'title'),
    755                                         'hreflang' => extraire_attribut($r[0],'hreflang')
     782                                        'href' => extraire_attribut($r[0], 'href'),
     783                                        'class' => extraire_attribut($r[0], 'class'),
     784                                        'mime' => extraire_attribut($r[0], 'type'),
     785                                        'title' => extraire_attribut($r[0], 'title'),
     786                                        'hreflang' => extraire_attribut($r[0], 'hreflang')
    756787                                );
    757788                                $n = strlen($r[0]);
    758789                                $a -= $n;
    759                                 $cherche = $n + strlen($regs[0]);
     790                                $cherche = $n+strlen($regs[0]);
    760791                        } else {
    761792                                $lien = false;
     
    766797                        # hack indexation
    767798                        if ($doublons) {
    768                                 $texte .= preg_replace(',[|][^|=]*,s',' ',$params);
    769                         }
    770                         # version normale
     799                                $texte .= preg_replace(',[|][^|=]*,s', ' ', $params);
     800                        } # version normale
    771801                        else {
    772802                                // si un tableau de liens a ete passe, reinjecter le contenu d'origine
     
    775805                                        $params = str_replace($liens[0], $liens[1], $params);
    776806                                }
    777                                
     807
    778808                                $modele = inclure_modele($type, $id, $params, $lien, $connect, $env);
    779                                
     809
    780810                                // en cas d'echec,
    781811                                // si l'objet demande a une url,
    782812                                // creer un petit encadre vers elle
    783813                                if ($modele === false) {
    784                                         $modele = substr($texte,$a,$cherche);
    785                                        
     814                                        $modele = substr($texte, $a, $cherche);
     815
    786816                                        if (!is_null($liens)) {
    787817                                                $modele = str_replace($liens[0], $liens[1], $modele);
    788818                                        }
    789                                        
    790                                         $contexte = array_merge($env,array('id'=>$id,'type'=>$type,'modele'=>$modele));
    791                                        
     819
     820                                        $contexte = array_merge($env, array('id' => $id, 'type' => $type, 'modele' => $modele));
     821
    792822                                        if ($lien) {
    793823                                                # un eventuel guillemet (") sera reechappe par #ENV
    794                                                 $contexte['lien'] = str_replace("&quot;",'"', $lien['href']);
     824                                                $contexte['lien'] = str_replace("&quot;", '"', $lien['href']);
    795825                                                $contexte['lien_class'] = $lien['class'];
    796826                                                $contexte['lien_mime'] = $lien['mime'];
     
    798828                                                $contexte['lien_hreflang'] = $lien['hreflang'];
    799829                                        }
    800                                        
     830
    801831                                        $modele = recuperer_fond("modeles/dist", $contexte, array(), $connect);
    802832                                }
     
    804834                                if ($modele !== false) {
    805835                                        $modele = protege_js_modeles($modele);
    806                                         if ($wrap_embed_html){
    807                                                 $modele = $wrap_embed_html($mod,$modele);
     836                                        if ($wrap_embed_html) {
     837                                                $modele = $wrap_embed_html($mod, $modele);
    808838                                        }
    809839                                        $rempl = code_echappement($modele, $echap);
     
    816846                        // hack pour tout l'espace prive
    817847                        if (((!_DIR_RESTREINT) or ($doublons)) and ($id)) {
    818                                 foreach($doublons?$doublons:array('documents'=>array('doc','emb','img')) as $quoi => $modeles) {
     848                                foreach ($doublons ? $doublons : array('documents' => array('doc', 'emb', 'img')) as $quoi => $modeles) {
    819849                                        if (in_array($type, $modeles)) {
    820850                                                $GLOBALS["doublons_{$quoi}_inclus"][] = $id;
     
    840870                        $letexte = str_replace(
    841871                                $regs[0],
    842                                 '<a '.(html5_permis() ? 'id' : 'name').'="'.entites_html($regs[1]).'"></a>',
     872                                '<a ' . (html5_permis() ? 'id' : 'name') . '="' . entites_html($regs[1]) . '"></a>',
    843873                                $letexte
    844874                        );
    845875                }
    846876        }
    847        
     877
    848878        return $letexte;
    849879}
     
    865895        include_spip('inc/charsets');
    866896        $lien = charger_fonction('lien', 'inc');
    867        
     897
    868898        // Eviter les cas particulier genre "[?!?]"
    869899        // et isoler le lexeme a gloser de ses accessoires
     
    877907                        $t = $r[1] . $r[2] . $r[5];
    878908                        list($t, $bulle, $hlang) = traiter_raccourci_lien_atts($t);
    879                        
     909
    880910                        if ($bulle === false) {
    881911                                $bulle = $m[1];
    882912                        }
    883                        
     913
    884914                        $t = unicode2charset(charset2unicode($t), 'utf-8');
    885915                        $ref = $lien("glose$_n$gloss", $t, 'spip_glossaire', $bulle, $hlang);
     
    887917                }
    888918        }
    889        
     919
    890920        return $texte;
    891921}
     
    894924function glossaire_std($terme) {
    895925        global $url_glossaire_externe;
    896         static $pcre = NULL;
    897 
    898         if ($pcre === NULL) {
     926        static $pcre = null;
     927
     928        if ($pcre === null) {
    899929                $pcre = isset($GLOBALS['meta']['pcre_u']) ? $GLOBALS['meta']['pcre_u'] : '';
    900                
     930
    901931                if (strpos($url_glossaire_externe, "%s") === false) {
    902932                        $url_glossaire_externe .= '%s';
     
    910940        );
    911941
    912         $terme = rawurlencode(preg_replace(',\s+,'.$pcre, '_', $terme));
     942        $terme = rawurlencode(preg_replace(',\s+,' . $pcre, '_', $terme));
    913943
    914944        return str_replace("%s", $terme, $glosateur);
  • _core_/plugins/textwheel/inc/notes.php

    r93092 r93628  
    1515 *
    1616 * @package SPIP\Textwheel\Notes
    17 **/
    18 
    19 if (!defined("_ECRIRE_INC_VERSION")) return;
     17 **/
     18
     19if (!defined("_ECRIRE_INC_VERSION")) {
     20        return;
     21}
    2022
    2123//
    2224// Notes de bas de page
    2325//
    24 if (!defined('_NOTES_OUVRE_REF')) define('_NOTES_OUVRE_REF','<span class="spip_note_ref">&nbsp;[');
    25 if (!defined('_NOTES_FERME_REF')) define('_NOTES_FERME_REF',']</span>');
    26 if (!defined('_NOTES_OUVRE_NOTE')) define('_NOTES_OUVRE_NOTE','<span class="spip_note_ref">[');
    27 if (!defined('_NOTES_FERME_NOTE')) define('_NOTES_FERME_NOTE',']&nbsp;</span>');
    28 if (!defined('_NOTES_RACCOURCI')) define('_NOTES_RACCOURCI', ',\[\[(\s*(<([^>\'"]*)>)?(.*?))\]\],msS');
     26if (!defined('_NOTES_OUVRE_REF')) {
     27        define('_NOTES_OUVRE_REF', '<span class="spip_note_ref">&nbsp;[');
     28}
     29if (!defined('_NOTES_FERME_REF')) {
     30        define('_NOTES_FERME_REF', ']</span>');
     31}
     32if (!defined('_NOTES_OUVRE_NOTE')) {
     33        define('_NOTES_OUVRE_NOTE', '<span class="spip_note_ref">[');
     34}
     35if (!defined('_NOTES_FERME_NOTE')) {
     36        define('_NOTES_FERME_NOTE', ']&nbsp;</span>');
     37}
     38if (!defined('_NOTES_RACCOURCI')) {
     39        define('_NOTES_RACCOURCI', ',\[\[(\s*(<([^>\'"]*)>)?(.*?))\]\],msS');
     40}
    2941
    3042
     
    3345 *
    3446 * Point d'entrée pour la gestion des notes.
    35  * 
     47 *
    3648 * @note
    3749 *     C'est stocké dans la globale `$les_notes`, mais pas besoin de le savoir
     
    5466 *     des tags br (mais 2 à la suite font un paragraphe tout de même).
    5567 * @return string|array
    56 **/
    57 function inc_notes_dist($arg, $operation = 'traiter', $ignorer_autobr = false)
    58 {
     68 **/
     69function inc_notes_dist($arg, $operation = 'traiter', $ignorer_autobr = false) {
    5970        static $pile = array();
    6071        static $next_marqueur = 1;
    6172        static $marqueur = 1;
    6273        global $les_notes, $compt_note, $notes_vues;
    63         switch ($operation){
     74        switch ($operation) {
    6475                case 'traiter':
    65                         if (is_array($arg)) return traiter_les_notes($arg,$ignorer_autobr);
    66                         else
    67                                 return traiter_raccourci_notes($arg, $marqueur>1?$marqueur:'');
     76                        if (is_array($arg)) {
     77                                return traiter_les_notes($arg, $ignorer_autobr);
     78                        } else {
     79                                return traiter_raccourci_notes($arg, $marqueur > 1 ? $marqueur : '');
     80                        }
    6881                        break;
    6982                case 'empiler':
    70                         if ($compt_note==0)
    71                                 // si le marqueur n'a pas encore ete utilise, on le recycle dans la pile courante
    72                                 array_push($pile, array(@$les_notes, @$compt_note, $notes_vues,0));
    73                         else {
     83                        if ($compt_note == 0) // si le marqueur n'a pas encore ete utilise, on le recycle dans la pile courante
     84                        {
     85                                array_push($pile, array(@$les_notes, @$compt_note, $notes_vues, 0));
     86                        } else {
    7487                                // sinon on le stocke au chaud, et on en cree un nouveau
    75                                 array_push($pile, array(@$les_notes, @$compt_note, $notes_vues,$marqueur));
     88                                array_push($pile, array(@$les_notes, @$compt_note, $notes_vues, $marqueur));
    7689                                $next_marqueur++; // chaque fois qu'on rempile on incremente le marqueur general
    7790                                $marqueur = $next_marqueur; // et on le prend comme marqueur courant
     
    8295                case 'depiler':
    8396                        #$prev_notes = $les_notes;
    84                         if (strlen($les_notes)) spip_log("notes perdues");
     97                        if (strlen($les_notes)) {
     98                                spip_log("notes perdues");
     99                        }
    85100                        // si le marqueur n'a pas servi, le liberer
    86                         if (!strlen($les_notes) AND $marqueur==$next_marqueur)
     101                        if (!strlen($les_notes) AND $marqueur == $next_marqueur) {
    87102                                $next_marqueur--;
     103                        }
    88104                        // on redepile tout suite a une fin d'inclusion ou d'un affichage des notes
    89105                        list($les_notes, $compt_note, $notes_vues, $marqueur) = array_pop($pile);
    90106                        #$les_notes .= $prev_notes;
    91107                        // si pas de marqueur attribue, on le fait
    92                         if (!$marqueur){
     108                        if (!$marqueur) {
    93109                                $next_marqueur++; // chaque fois qu'on rempile on incremente le marqueur general
    94110                                $marqueur = $next_marqueur; // et on le prend comme marqueur courant
     
    96112                        break;
    97113                case 'sauver_etat':
    98                         if ($compt_note OR $marqueur>1 OR $next_marqueur>1)
    99                                 return array($les_notes, $compt_note, $notes_vues, $marqueur,$next_marqueur);
    100                         else
    101                                 return ''; // rien a sauver
     114                        if ($compt_note OR $marqueur > 1 OR $next_marqueur > 1) {
     115                                return array($les_notes, $compt_note, $notes_vues, $marqueur, $next_marqueur);
     116                        } else {
     117                                return '';
     118                        } // rien a sauver
    102119                        break;
    103120                case 'restaurer_etat':
    104121                        if ($arg AND is_array($arg)) // si qqchose a restaurer
    105                                 list($les_notes, $compt_note, $notes_vues, $marqueur,$next_marqueur) = $arg;
     122                        {
     123                                list($les_notes, $compt_note, $notes_vues, $marqueur, $next_marqueur) = $arg;
     124                        }
    106125                        break;
    107126                case 'contexter_cache':
    108                         if ($compt_note OR $marqueur>1 OR $next_marqueur>1)
     127                        if ($compt_note OR $marqueur > 1 OR $next_marqueur > 1) {
    109128                                return array("$compt_note:$marqueur:$next_marqueur");
    110                         else
     129                        } else {
    111130                                return '';
     131                        }
    112132                        break;
    113133                case 'reset_all': // a n'utiliser qu'a fins de test
    114                         if (strlen($les_notes)) spip_log("notes perdues [reset_all]");
     134                        if (strlen($les_notes)) {
     135                                spip_log("notes perdues [reset_all]");
     136                        }
    115137                        $pile = array();
    116138                        $next_marqueur = 1;
     
    124146
    125147
    126 function traiter_raccourci_notes($letexte, $marqueur_notes)
    127 {
     148function traiter_raccourci_notes($letexte, $marqueur_notes) {
    128149        global $compt_note, $notes_vues;
    129150
    130151        if (strpos($letexte, '[[') === false
    131         OR !preg_match_all(_NOTES_RACCOURCI, $letexte, $m, PREG_SET_ORDER))
     152                OR !preg_match_all(_NOTES_RACCOURCI, $letexte, $m, PREG_SET_ORDER)
     153        ) {
    132154                return array($letexte, array());
     155        }
    133156
    134157        // quand il y a plusieurs series de notes sur une meme page
    135         $mn =  !$marqueur_notes ? '' : ($marqueur_notes.'-');
     158        $mn = !$marqueur_notes ? '' : ($marqueur_notes . '-');
    136159        $mes_notes = array();
    137160        foreach ($m as $r) {
     
    144167
    145168                if (!(isset($nom) AND $ref
    146                 AND ((strpos($note_texte, '</' . $nom .'>') === false)
    147                      OR preg_match(",<$nom\W.*</$nom>,", $note_texte)))) {
     169                        AND ((strpos($note_texte, '</' . $nom . '>') === false)
     170                                OR preg_match(",<$nom\W.*</$nom>,", $note_texte)))
     171                ) {
    148172                        $nom = ++$compt_note;
    149173                        $note_texte = $note_all;
     
    151175
    152176                // eliminer '%' pour l'attribut id
    153                 $ancre = $mn . str_replace('%','_', rawurlencode($nom));
     177                $ancre = $mn . str_replace('%', '_', rawurlencode($nom));
    154178
    155179                // ne mettre qu'une ancre par appel de note (XHTML)
     
    162186                // propre est couteux => nettoyer_raccourcis_typo
    163187                if ($title = supprimer_tags(nettoyer_raccourcis_typo($note_texte))) {
    164                         $title = " title='" . couper($title,80) . "'";
     188                        $title = " title='" . couper($title, 80) . "'";
    165189                }
    166190
    167191                // ajouter la note aux notes precedentes
    168192                if ($note_texte) {
    169                         $mes_notes[]= array($ancre, $nom, $note_texte);
     193                        $mes_notes[] = array($ancre, $nom, $note_texte);
    170194                }
    171195
    172196                // dans le texte, mettre l'appel de note a la place de la note
    173                 if ($nom) $nom = _NOTES_OUVRE_REF."<a href='#nb$ancre' class='spip_note' rel='footnote'$title$att>$nom</a>"._NOTES_FERME_REF;
     197                if ($nom) {
     198                        $nom = _NOTES_OUVRE_REF . "<a href='#nb$ancre' class='spip_note' rel='footnote'$title$att>$nom</a>" . _NOTES_FERME_REF;
     199                }
    174200
    175201                $pos = strpos($letexte, $note_source);
    176202                $letexte = rtrim(substr($letexte, 0, $pos), ' ')
    177                 . code_echappement($nom)
    178                 . substr($letexte, $pos + strlen($note_source));
    179 
    180         }
     203                        . code_echappement($nom)
     204                        . substr($letexte, $pos+strlen($note_source));
     205
     206        }
     207
    181208        return array($letexte, $mes_notes);
    182209}
     
    187214        $mes_notes = '';
    188215        if ($notes) {
    189                 $title =  _T('info_notes');
     216                $title = _T('info_notes');
    190217                foreach ($notes as $r) {
    191218                        list($ancre, $nom, $texte) = $r;
    192219                        $atts = " href='#nh$ancre' class='spip_note' title='$title $ancre' rev='footnote'";
    193220                        $mes_notes .= "\n\n"
    194                         . "<div id='nb$ancre'><p". ($GLOBALS['class_spip'] ? " class='spip_note'" : "") .">"
    195                         . code_echappement($nom
    196                                 ? _NOTES_OUVRE_NOTE."<a".$atts.">$nom</a>"._NOTES_FERME_NOTE
    197                                 : '')
    198                         . trim($texte)
    199                         .'</div>';
    200                 }
    201                 if ($ignorer_autobr)
    202                         $mes_notes = _AUTOBR_IGNORER.$mes_notes;
     221                                . "<div id='nb$ancre'><p" . ($GLOBALS['class_spip'] ? " class='spip_note'" : "") . ">"
     222                                . code_echappement($nom
     223                                        ? _NOTES_OUVRE_NOTE . "<a" . $atts . ">$nom</a>" . _NOTES_FERME_NOTE
     224                                        : '')
     225                                . trim($texte)
     226                                . '</div>';
     227                }
     228                if ($ignorer_autobr) {
     229                        $mes_notes = _AUTOBR_IGNORER . $mes_notes;
     230                }
    203231                $mes_notes = propre($mes_notes);
    204232        }
     233
    205234        return ($GLOBALS['les_notes'] .= $mes_notes);
    206235}
  • _core_/plugins/textwheel/inc/ressource-mini.php

    r84269 r93628  
    11<?php
    22
    3 if (!defined('_ECRIRE_INC_VERSION')) return;
     3if (!defined('_ECRIRE_INC_VERSION')) {
     4        return;
     5}
    46
    57include_spip('inc/ressource');
  • _core_/plugins/textwheel/inc/ressource.php

    r84270 r93628  
    77 */
    88
    9 define('_EXTRAIRE_RESSOURCES', ',' . '<"?(https?://|[^\s][\w -]+\.[\w -]+)[^<]*>'.',UimsS');
     9define('_EXTRAIRE_RESSOURCES', ',' . '<"?(https?://|[^\s][\w -]+\.[\w -]+)[^<]*>' . ',UimsS');
    1010
    1111
     
    1515                $t = preg_replace_callback(_EXTRAIRE_RESSOURCES, 'tw_traiter_ressources', $t);
    1616        }
     17
    1718        return $t;
    1819}
     
    2425
    2526                // echapper les autoliens eventuellement inseres (en une seule fois)
    26                 if (strpos($t,"<html>")!==false)
     27                if (strpos($t, "<html>") !== false) {
    2728                        $t = echappe_html($t);
     29                }
    2830        }
     31
    2932        return $t;
    3033}
     
    3740        $url = $url[0];
    3841        # <http://url/absolue>
    39         if (preg_match(',^https?://,i', $url))
    40                 $html = PtoBR(propre("<span class='ressource spip_out'>&lt;[->".$url."]&gt;</span>"));
    41         # <url/relative>
    42         else if (false !== strpos($url, '/'))
    43                 $html = PtoBR(propre("<span class='ressource spip_in'>&lt;[->".$url."]&gt;</span>"));
    44         # <fichier.rtf>
     42        if (preg_match(',^https?://,i', $url)) {
     43                $html = PtoBR(propre("<span class='ressource spip_out'>&lt;[->" . $url . "]&gt;</span>"));
     44        } # <url/relative>
    4545        else {
    46                 preg_match(',\.([^.]+)$,', $url, $regs);
    47                 if (file_exists($f = _DIR_IMG.$regs[1].'/'.$url)) {
    48                         $html = PtoBR(propre("<span class='ressource spip_in'>&lt;[".$url."->".$f."]&gt;</span>"));
    49                 } else {
    50                         $html = PtoBR(propre("<span class='ressource'>&lt;".$url."&gt;</span>"));
     46                if (false !== strpos($url, '/')) {
     47                        $html = PtoBR(propre("<span class='ressource spip_in'>&lt;[->" . $url . "]&gt;</span>"));
     48                } # <fichier.rtf>
     49                else {
     50                        preg_match(',\.([^.]+)$,', $url, $regs);
     51                        if (file_exists($f = _DIR_IMG . $regs[1] . '/' . $url)) {
     52                                $html = PtoBR(propre("<span class='ressource spip_in'>&lt;[" . $url . "->" . $f . "]&gt;</span>"));
     53                        } else {
     54                                $html = PtoBR(propre("<span class='ressource'>&lt;" . $url . "&gt;</span>"));
     55                        }
    5156                }
    5257        }
    5358
    54         return '<html>'.$html.'</html>';
     59        return '<html>' . $html . '</html>';
    5560}
    5661
  • _core_/plugins/textwheel/inc/texte.php

    r93286 r93628  
    1515 *
    1616 * Surcharge de ecrire/inc/texte
    17  * 
     17 *
    1818 * @package SPIP\Textwheel\Texte
    19 **/
    20 
    21 if (!defined('_ECRIRE_INC_VERSION')) return;
     19 **/
     20
     21if (!defined('_ECRIRE_INC_VERSION')) {
     22        return;
     23}
    2224
    2325include_spip('inc/texte_mini');
     
    2729
    2830
    29 defined('_AUTOBR')||define('_AUTOBR', "<br class='autobr' />");
    30 define('_AUTOBR_IGNORER', _AUTOBR?"<!-- ig br -->":"");
     31defined('_AUTOBR') || define('_AUTOBR', "<br class='autobr' />");
     32define('_AUTOBR_IGNORER', _AUTOBR ? "<!-- ig br -->" : "");
    3133
    3234// Avec cette surcharge, cette globale n'est plus définie, et du coup ça plante dans les plugins qui font un foreach dessus comme ZPIP
    3335$GLOBALS['spip_raccourcis_typo'] = array();
    34 if (!isset($GLOBALS['toujours_paragrapher']))
     36if (!isset($GLOBALS['toujours_paragrapher'])) {
    3537        $GLOBALS['toujours_paragrapher'] = true;
     38}
    3639
    3740// class_spip : savoir si on veut class="spip" sur p i strong & li
     
    3942// la difference c'est que des css specifiques existent pour les seconds
    4043//
    41 if (!isset($GLOBALS['class_spip']))
     44if (!isset($GLOBALS['class_spip'])) {
    4245        $GLOBALS['class_spip'] = '';
    43 if (!isset($GLOBALS['class_spip_plus']))
     46}
     47if (!isset($GLOBALS['class_spip_plus'])) {
    4448        $GLOBALS['class_spip_plus'] = ' class="spip"';
     49}
    4550
    4651
     
    5459        static $wheel = null;
    5560
    56         if (!isset($wheel))
     61        if (!isset($wheel)) {
    5762                $wheel = new TextWheel(
    5863                        SPIPTextWheelRuleset::loader($GLOBALS['spip_wheels']['echappe_js'])
    5964                );
     65        }
    6066
    6167        try {
    6268                $t = $wheel->text($t);
    63         }
    64         catch (Exception $e){
     69        } catch (Exception $e) {
    6570                erreur_squelette($e->getMessage());
    6671                // sanitizer le contenu methode brute, puisqu'on a pas fait mieux
    6772                $t = textebrut($t);
    6873        }
     74
    6975        return $t;
    7076}
     
    8692function paragrapher($t, $toujours_paragrapher = null) {
    8793        static $wheel = array();
    88         if (is_null($toujours_paragrapher))
     94        if (is_null($toujours_paragrapher)) {
    8995                $toujours_paragrapher = $GLOBALS['toujours_paragrapher'];
     96        }
    9097
    9198        if (!isset($wheel[$toujours_paragrapher])) {
    9299                $ruleset = SPIPTextWheelRuleset::loader($GLOBALS['spip_wheels']['paragrapher']);
    93100                if (!$toujours_paragrapher
    94                   AND $rule=$ruleset->getRule('toujours-paragrapher')) {
     101                        AND $rule = $ruleset->getRule('toujours-paragrapher')
     102                ) {
    95103                        $rule->disabled = true;
    96                         $ruleset->addRules(array('toujours-paragrapher'=>$rule));
     104                        $ruleset->addRules(array('toujours-paragrapher' => $rule));
    97105                }
    98106                $wheel[$toujours_paragrapher] = new TextWheel($ruleset);
     
    101109        try {
    102110                $t = $wheel[$toujours_paragrapher]->text($t);
    103         }
    104         catch (Exception $e){
     111        } catch (Exception $e) {
    105112                erreur_squelette($e->getMessage());
    106113        }
     114
    107115        return $t;
    108116}
     
    113121 * Sécurité : empêcher l'exécution de code PHP, en le transformant en joli code
    114122 * dans l'espace privé. Cette fonction est aussi appelée par propre et typo.
    115  * 
     123 *
    116124 * De la même manière, la fonction empêche l'exécution de JS mais selon le mode
    117125 * de protection déclaré par la globale filtrer_javascript :
     
    119127 * - 0  : protection dans l'espace public
    120128 * - 1  : aucune protection
    121  * 
     129 *
    122130 * Il ne faut pas désactiver globalement la fonction dans l'espace privé car elle protège
    123131 * aussi les balises des squelettes qui ne passent pas forcement par propre ou typo après
    124132 * si elles sont appelées en direct
    125  * 
     133 *
    126134 * @param string $arg
    127135 *     Code à protéger
    128136 * @return string
    129137 *     Code protégé
    130 **/
     138 **/
    131139function interdire_scripts($arg) {
    132140        // on memorise le resultat sur les arguments non triviaux
     
    135143
    136144        // Attention, si ce n'est pas une chaine, laisser intact
    137         if (!$arg OR !is_string($arg) OR !strstr($arg, '<')) return $arg;
    138         if (isset($dejavu[$GLOBALS['filtrer_javascript']][$arg])) return $dejavu[$GLOBALS['filtrer_javascript']][$arg];
    139 
    140         if (!isset($wheel[$GLOBALS['filtrer_javascript']])){
     145        if (!$arg OR !is_string($arg) OR !strstr($arg, '<')) {
     146                return $arg;
     147        }
     148        if (isset($dejavu[$GLOBALS['filtrer_javascript']][$arg])) {
     149                return $dejavu[$GLOBALS['filtrer_javascript']][$arg];
     150        }
     151
     152        if (!isset($wheel[$GLOBALS['filtrer_javascript']])) {
    141153                $ruleset = SPIPTextWheelRuleset::loader(
    142154                        $GLOBALS['spip_wheels']['interdire_scripts']
     
    144156                // Pour le js, trois modes : parano (-1), prive (0), ok (1)
    145157                // desactiver la regle echappe-js si besoin
    146                 if ($GLOBALS['filtrer_javascript']==1
    147                         OR ($GLOBALS['filtrer_javascript']==0 AND !test_espace_prive()))
    148                         $ruleset->addRules (array('securite-js'=>array('disabled'=>true)));
     158                if ($GLOBALS['filtrer_javascript'] == 1
     159                        OR ($GLOBALS['filtrer_javascript'] == 0 AND !test_espace_prive())
     160                ) {
     161                        $ruleset->addRules(array('securite-js' => array('disabled' => true)));
     162                }
    149163                $wheel[$GLOBALS['filtrer_javascript']] = new TextWheel($ruleset);
    150164        }
     
    152166        try {
    153167                $t = $wheel[$GLOBALS['filtrer_javascript']]->text($arg);
    154         }
    155         catch (Exception $e){
     168        } catch (Exception $e) {
    156169                erreur_squelette($e->getMessage());
    157170                // sanitizer le contenu methode brute, puisqu'on a pas fait mieux
     
    160173
    161174        // Reinserer les echappements des modeles
    162         if (defined('_PROTEGE_JS_MODELES'))
    163                 $t = echappe_retour($t,"javascript"._PROTEGE_JS_MODELES);
    164         if (defined('_PROTEGE_PHP_MODELES'))
    165                 $t = echappe_retour($t,"php"._PROTEGE_PHP_MODELES);
     175        if (defined('_PROTEGE_JS_MODELES')) {
     176                $t = echappe_retour($t, "javascript" . _PROTEGE_JS_MODELES);
     177        }
     178        if (defined('_PROTEGE_PHP_MODELES')) {
     179                $t = echappe_retour($t, "php" . _PROTEGE_PHP_MODELES);
     180        }
    166181
    167182        return $dejavu[$GLOBALS['filtrer_javascript']][$arg] = $t;
     
    180195 * @uses corriger_typo()
    181196 * @uses echapper_faux_tags()
    182  * @see propre()
    183  * 
     197 * @see  propre()
     198 *
    184199 * @param string $letexte
    185200 *     Texte d'origine
     
    192207 * @return string $t
    193208 *     Texte transformé
    194 **/
     209 **/
    195210function typo($letexte, $echapper = true, $connect = null, $env = array()) {
    196211        // Plus vite !
    197         if (!$letexte) return $letexte;
     212        if (!$letexte) {
     213                return $letexte;
     214        }
    198215
    199216        // les appels directs a cette fonction depuis le php de l'espace
     
    204221        // ne seront pas perturbes
    205222        $interdire_script = false;
    206         if (is_null($connect)){
     223        if (is_null($connect)) {
    207224                $connect = '';
    208225                $interdire_script = true;
     
    210227        }
    211228
    212         $echapper = ($echapper?'TYPO':false);
     229        $echapper = ($echapper ? 'TYPO' : false);
    213230        // Echapper les codes <html> etc
    214         if ($echapper)
     231        if ($echapper) {
    215232                $letexte = echappe_html($letexte, $echapper);
     233        }
    216234
    217235        //
     
    222240
    223241        $letexte = traiter_modeles($mem = $letexte, false, $echapper ? $echapper : '', $connect, null, $env);
    224         if (!$echapper AND $letexte != $mem) $echapper = '';
     242        if (!$echapper AND $letexte != $mem) {
     243                $echapper = '';
     244        }
    225245        unset($mem);
    226246
     
    229249
    230250        // reintegrer les echappements
    231         if ($echapper!==false)
     251        if ($echapper !== false) {
    232252                $letexte = echappe_retour($letexte, $echapper);
     253        }
    233254
    234255        // Dans les appels directs hors squelette, securiser ici aussi
    235         if ($interdire_script)
     256        if ($interdire_script) {
    236257                $letexte = interdire_scripts($letexte);
     258        }
    237259
    238260        // Dans l'espace prive on se mefie de tout contenu dangereux
    239261        // https://core.spip.net/issues/3371
    240         if (isset($env['espace_prive']) AND $env['espace_prive']){
     262        if (isset($env['espace_prive']) AND $env['espace_prive']) {
    241263                $letexte = echapper_html_suspect($letexte);
    242264        }
     
    250272define('_TYPO_PROTECTEUR', "\x1\x2\x3\x4\x5\x6\x7\x8");
    251273
    252 define('_TYPO_BALISE', ",</?[a-z!][^<>]*[".preg_quote(_TYPO_PROTEGER)."][^<>]*>,imsS");
     274define('_TYPO_BALISE', ",</?[a-z!][^<>]*[" . preg_quote(_TYPO_PROTEGER) . "][^<>]*>,imsS");
    253275
    254276/**
     
    256278 *
    257279 * Applique les corrections typographiques adaptées à la langue indiquée.
    258  * 
     280 *
    259281 * @pipeline_appel pre_typo
    260282 * @pipeline_appel post_typo
    261283 * @uses corriger_caracteres()
    262284 * @uses corriger_caracteres()
    263  * 
     285 *
    264286 * @param string $t Texte
    265287 * @param string $lang Langue
     
    269291        static $typographie = array();
    270292        // Plus vite !
    271         if (!$t) return $t;
     293        if (!$t) {
     294                return $t;
     295        }
    272296
    273297        $t = pipeline('pre_typo', $t);
     
    292316
    293317        // Charger & appliquer les fonctions de typographie
    294         $idxl = "$lang:" . (isset($GLOBALS['lang_objet'])? $GLOBALS['lang_objet']: $GLOBALS['spip_lang']);
    295         if (!isset($typographie[$idxl]))
     318        $idxl = "$lang:" . (isset($GLOBALS['lang_objet']) ? $GLOBALS['lang_objet'] : $GLOBALS['spip_lang']);
     319        if (!isset($typographie[$idxl])) {
    296320                $typographie[$idxl] = charger_fonction(lang_typo($lang), 'typographie');
     321        }
    297322        $t = $typographie[$idxl]($t);
    298323
    299324        // Les citations en une autre langue, s'il y a lieu
    300         if (!$e) $t = echappe_retour($t, 'multi');
     325        if (!$e) {
     326                $t = echappe_retour($t, 'multi');
     327        }
    301328
    302329        // Retablir les caracteres proteges
     
    327354function traiter_tableau($bloc) {
    328355        // id "unique" pour les id du tableau
    329         $tabid = substr(md5($bloc),0,4);
     356        $tabid = substr(md5($bloc), 0, 4);
    330357
    331358        // Decouper le tableau en lignes
     
    338365        // Traiter chaque ligne
    339366        $reg_line1 = ',^(\|(' . _RACCOURCI_TH_SPAN . '))+$,sS';
    340         $reg_line_all = ',^('  . _RACCOURCI_TH_SPAN . ')$,sS';
     367        $reg_line_all = ',^(' . _RACCOURCI_TH_SPAN . ')$,sS';
    341368        $hc = $hl = array();
    342369        foreach ($regs[1] as $ligne) {
    343                 $l ++;
     370                $l++;
    344371
    345372                // Gestion de la premiere ligne :
    346373                if ($l == 1) {
    347                 // - <caption> et summary dans la premiere ligne :
    348                 //   || caption | summary || (|summary est optionnel)
    349                         if (preg_match(',^\|\|([^|]*)(\|(.*))?$,sS', rtrim($ligne,'|'), $cap)) {
     374                        // - <caption> et summary dans la premiere ligne :
     375                        //   || caption | summary || (|summary est optionnel)
     376                        if (preg_match(',^\|\|([^|]*)(\|(.*))?$,sS', rtrim($ligne, '|'), $cap)) {
    350377                                $cap = array_pad($cap, 4, null);
    351378                                $l = 0;
    352                                 if ($caption = trim($cap[1]))
    353                                         $debut_table .= "<caption>".$caption."</caption>\n";
    354                                 $summary = ' summary="'.entites_html(trim($cap[3])).'"';
     379                                if ($caption = trim($cap[1])) {
     380                                        $debut_table .= "<caption>" . $caption . "</caption>\n";
     381                                }
     382                                $summary = ' summary="' . entites_html(trim($cap[3])) . '"';
    355383                        }
    356                 // - <thead> sous la forme |{{titre}}|{{titre}}|
    357                 //   Attention thead oblige a avoir tbody
    358                         else if (preg_match($reg_line1, $ligne, $thead)) {
    359                                 preg_match_all('/\|([^|]*)/S', $ligne, $cols);
    360                                 $ligne='';$cols= $cols[1];
    361                                 $colspan=1;
    362                                 for($c=count($cols)-1; $c>=0; $c--) {
    363                                         $attr='';
    364                                         if($cols[$c]=='<') {
    365                                           $colspan++;
    366                                         } else {
    367                                           if($colspan>1) {
    368                                                 $attr= " colspan='$colspan'";
    369                                                 $colspan=1;
    370                                           }
    371                                           // inutile de garder le strong qui n'a servi que de marqueur
    372                                           $cols[$c] = str_replace(array('{','}'), '', $cols[$c]);
    373                                           $ligne= "<th id='id{$tabid}_c$c'$attr>$cols[$c]</th>$ligne";
    374                                                 $hc[$c] = "id{$tabid}_c$c"; // pour mettre dans les headers des td
     384                        // - <thead> sous la forme |{{titre}}|{{titre}}|
     385                        //   Attention thead oblige a avoir tbody
     386                        else {
     387                                if (preg_match($reg_line1, $ligne, $thead)) {
     388                                        preg_match_all('/\|([^|]*)/S', $ligne, $cols);
     389                                        $ligne = '';
     390                                        $cols = $cols[1];
     391                                        $colspan = 1;
     392                                        for ($c = count($cols)-1; $c >= 0; $c--) {
     393                                                $attr = '';
     394                                                if ($cols[$c] == '<') {
     395                                                        $colspan++;
     396                                                } else {
     397                                                        if ($colspan > 1) {
     398                                                                $attr = " colspan='$colspan'";
     399                                                                $colspan = 1;
     400                                                        }
     401                                                        // inutile de garder le strong qui n'a servi que de marqueur
     402                                                        $cols[$c] = str_replace(array('{', '}'), '', $cols[$c]);
     403                                                        $ligne = "<th id='id{$tabid}_c$c'$attr>$cols[$c]</th>$ligne";
     404                                                        $hc[$c] = "id{$tabid}_c$c"; // pour mettre dans les headers des td
     405                                                }
    375406                                        }
     407
     408                                        $debut_table .= "<thead><tr class='row_first'>" .
     409                                                $ligne . "</tr></thead>\n";
     410                                        $l = 0;
    376411                                }
    377 
    378                                 $debut_table .= "<thead><tr class='row_first'>".
    379                                         $ligne."</tr></thead>\n";
    380                                 $l = 0;
    381412                        }
    382413                }
     
    387418                        // on declenche simplement sur \n- car il y a les
    388419                        // -* -# -? -! (qui produisent des -&nbsp;!)
    389                         if (strpos($ligne,"\n-")!==false)
     420                        if (strpos($ligne, "\n-") !== false) {
    390421                                $ligne = traiter_listes($ligne);
     422                        }
    391423
    392424                        // tout mettre dans un tableau 2d
     
    397429                                if (strlen($col = trim($col))) {
    398430                                        $col = preg_replace("/\n{2,}/S", "<br /> <br />", $col);
    399                                         if (_AUTOBR)
    400                                                 $col = str_replace("\n", _AUTOBR."\n", $col);
     431                                        if (_AUTOBR) {
     432                                                $col = str_replace("\n", _AUTOBR . "\n", $col);
     433                                        }
    401434                                }
    402435                        }
    403436
    404437                        // assembler le tableau
    405                         $lignes[]= $cols[1];
     438                        $lignes[] = $cols[1];
    406439                }
    407440        }
     
    421454                true => ''
    422455        );
    423         for($i=0;$i<$n;$i++) {
     456        for ($i = 0; $i < $n; $i++) {
    424457                $align = true;
    425                 for ($j=0;$j<$k;$j++) {
     458                for ($j = 0; $j < $k; $j++) {
    426459                        $rowspans[$j][$i] = 1;
    427460                        if ($align AND preg_match('/^[{+-]*(?:\s|\d)*([.,]?)\d*[}]*$/', trim($lignes[$j][$i]), $r)) {
     
    429462                                        $align = $r[1];
    430463                                }
    431                         }
    432                         else {
     464                        } else {
    433465                                $align = '';
    434466                        }
    435467                }
    436                 $numeric[$i] = $align ? (" class='numeric ". $numeric_class[$align] . "'") : '';
    437         }
    438         for ($j=0;$j<$k;$j++) {
     468                $numeric[$i] = $align ? (" class='numeric " . $numeric_class[$align] . "'") : '';
     469        }
     470        for ($j = 0; $j < $k; $j++) {
    439471                if (preg_match($reg_line_all, $lignes[$j][0])) {
    440472                        $hl[$j] = "id{$tabid}_l$j"; // pour mettre dans les headers des td
    441                 }
    442                 else
     473                } else {
    443474                        unset($hl[0]);
    444         }
    445         if (!isset($hl[0]))
    446                 $hl = array(); // toute la colonne ou rien
     475                }
     476        }
     477        if (!isset($hl[0])) {
     478                $hl = array();
     479        } // toute la colonne ou rien
    447480
    448481        // et on parcourt le tableau a l'envers pour ramasser les
     
    450483        $html = '';
    451484
    452         for($l=count($lignes)-1; $l>=0; $l--) {
    453                 $cols= $lignes[$l];
    454                 $colspan=1;
    455                 $ligne='';
    456 
    457                 for($c=count($cols)-1; $c>=0; $c--) {
    458                         $attr= $numeric[$c];
     485        for ($l = count($lignes)-1; $l >= 0; $l--) {
     486                $cols = $lignes[$l];
     487                $colspan = 1;
     488                $ligne = '';
     489
     490                for ($c = count($cols)-1; $c >= 0; $c--) {
     491                        $attr = $numeric[$c];
    459492                        $cell = trim($cols[$c]);
    460                         if($cell=='<') {
    461                           $colspan++;
    462 
    463                         } elseif($cell=='^') {
    464                           $rowspans[$l-1][$c]+=$rowspans[$l][$c];
     493                        if ($cell == '<') {
     494                                $colspan++;
     495
     496                        } elseif ($cell == '^') {
     497                                $rowspans[$l-1][$c] += $rowspans[$l][$c];
    465498
    466499                        } else {
    467                           if($colspan>1) {
    468                                 $attr .= " colspan='$colspan'";
    469                                 $colspan=1;
    470                           }
    471                           if(($x=$rowspans[$l][$c])>1) {
    472                                 $attr.= " rowspan='$x'";
    473                           }
    474                           $b = ($c==0 AND isset($hl[$l]))?'th':'td';
    475                                 $h = (isset($hc[$c])?$hc[$c]:'').' '.(($b=='td' AND isset($hl[$l]))?$hl[$l]:'');
    476                                 if ($h=trim($h))
    477                                         $attr.=" headers='$h'";
     500                                if ($colspan > 1) {
     501                                        $attr .= " colspan='$colspan'";
     502                                        $colspan = 1;
     503                                }
     504                                if (($x = $rowspans[$l][$c]) > 1) {
     505                                        $attr .= " rowspan='$x'";
     506                                }
     507                                $b = ($c == 0 AND isset($hl[$l])) ? 'th' : 'td';
     508                                $h = (isset($hc[$c]) ? $hc[$c] : '') . ' ' . (($b == 'td' AND isset($hl[$l])) ? $hl[$l] : '');
     509                                if ($h = trim($h)) {
     510                                        $attr .= " headers='$h'";
     511                                }
    478512                                // inutile de garder le strong qui n'a servi que de marqueur
    479                                 if ($b=='th') {
    480                                         $attr.=" id='".$hl[$l]."'";
    481                                         $cols[$c] = str_replace(array('{','}'), '', $cols[$c]);
     513                                if ($b == 'th') {
     514                                        $attr .= " id='" . $hl[$l] . "'";
     515                                        $cols[$c] = str_replace(array('{', '}'), '', $cols[$c]);
    482516                                }
    483                           $ligne= "\n<$b".$attr.'>'.$cols[$c]."</$b>".$ligne;
     517                                $ligne = "\n<$b" . $attr . '>' . $cols[$c] . "</$b>" . $ligne;
    484518                        }
    485519                }
     
    489523                $html = "<tr class='row_$class $class'>$ligne</tr>\n$html";
    490524        }
    491         return "\n\n<table".$GLOBALS['class_spip_plus'].$summary.">\n"
    492                 . $debut_table
    493                 . "<tbody>\n"
    494                 . $html
    495                 . "</tbody>\n"
    496                 . "</table>\n\n";
     525
     526        return "\n\n<table" . $GLOBALS['class_spip_plus'] . $summary . ">\n"
     527        . $debut_table
     528        . "<tbody>\n"
     529        . $html
     530        . "</tbody>\n"
     531        . "</table>\n\n";
    497532}
    498533
     
    506541 * @return string
    507542 */
    508 function traiter_listes ($t) {
     543function traiter_listes($t) {
    509544        static $wheel = null;
    510545
    511         if (!isset($wheel))
     546        if (!isset($wheel)) {
    512547                $wheel = new TextWheel(
    513548                        SPIPTextWheelRuleset::loader($GLOBALS['spip_wheels']['listes'])
    514549                );
     550        }
    515551
    516552        try {
    517553                $t = $wheel->text($t);
    518         }
    519         catch (Exception $e){
     554        } catch (Exception $e) {
    520555                erreur_squelette($e->getMessage());
    521556        }
     
    531566define('_RACCOURCI_PROTECTEUR', "\x1\x2\x3\x4");
    532567
    533 define('_RACCOURCI_BALISE', ",</?[a-z!][^<>]*[".preg_quote(_RACCOURCI_PROTEGER)."][^<>]*>,imsS");
     568define('_RACCOURCI_BALISE', ",</?[a-z!][^<>]*[" . preg_quote(_RACCOURCI_PROTEGER) . "][^<>]*>,imsS");
    534569
    535570/**
     
    541576 * @return string
    542577 */
    543 function personnaliser_raccourcis(&$ruleset){
    544         if ($ruleset){
    545                 if (isset($GLOBALS['debut_intertitre']) AND $rule=$ruleset->getRule('intertitres')){
    546                         $rule->replace[0] = preg_replace(',<[^>]*>,Uims',$GLOBALS['debut_intertitre'],$rule->replace[0]);
    547                         $rule->replace[1] = preg_replace(',<[^>]*>,Uims',$GLOBALS['fin_intertitre'],$rule->replace[1]);
    548                         $ruleset->addRules(array('intertitres'=>$rule));
    549                 }
    550                 if (isset($GLOBALS['debut_gras']) AND $rule=$ruleset->getRule('gras')){
    551                         $rule->replace[0] = preg_replace(',<[^>]*>,Uims',$GLOBALS['debut_gras'],$rule->replace[0]);
    552                         $rule->replace[1] = preg_replace(',<[^>]*>,Uims',$GLOBALS['fin_gras'],$rule->replace[1]);
    553                         $ruleset->addRules(array('gras'=>$rule));
    554                 }
    555                 if (isset($GLOBALS['debut_italique']) AND $rule=$ruleset->getRule('italiques')){
    556                         $rule->replace[0] = preg_replace(',<[^>]*>,Uims',$GLOBALS['debut_italique'],$rule->replace[0]);
    557                         $rule->replace[1] = preg_replace(',<[^>]*>,Uims',$GLOBALS['fin_italique'],$rule->replace[1]);
    558                         $ruleset->addRules(array('italiques'=>$rule));
    559                 }
    560                 if (isset($GLOBALS['ligne_horizontale']) AND $rule=$ruleset->getRule('ligne-horizontale')){
    561                         $rule->replace = preg_replace(',<[^>]*>,Uims',$GLOBALS['ligne_horizontale'],$rule->replace);
    562                         $ruleset->addRules(array('ligne-horizontale'=>$rule));
     578function personnaliser_raccourcis(&$ruleset) {
     579        if ($ruleset) {
     580                if (isset($GLOBALS['debut_intertitre']) AND $rule = $ruleset->getRule('intertitres')) {
     581                        $rule->replace[0] = preg_replace(',<[^>]*>,Uims', $GLOBALS['debut_intertitre'], $rule->replace[0]);
     582                        $rule->replace[1] = preg_replace(',<[^>]*>,Uims', $GLOBALS['fin_intertitre'], $rule->replace[1]);
     583                        $ruleset->addRules(array('intertitres' => $rule));
     584                }
     585                if (isset($GLOBALS['debut_gras']) AND $rule = $ruleset->getRule('gras')) {
     586                        $rule->replace[0] = preg_replace(',<[^>]*>,Uims', $GLOBALS['debut_gras'], $rule->replace[0]);
     587                        $rule->replace[1] = preg_replace(',<[^>]*>,Uims', $GLOBALS['fin_gras'], $rule->replace[1]);
     588                        $ruleset->addRules(array('gras' => $rule));
     589                }
     590                if (isset($GLOBALS['debut_italique']) AND $rule = $ruleset->getRule('italiques')) {
     591                        $rule->replace[0] = preg_replace(',<[^>]*>,Uims', $GLOBALS['debut_italique'], $rule->replace[0]);
     592                        $rule->replace[1] = preg_replace(',<[^>]*>,Uims', $GLOBALS['fin_italique'], $rule->replace[1]);
     593                        $ruleset->addRules(array('italiques' => $rule));
     594                }
     595                if (isset($GLOBALS['ligne_horizontale']) AND $rule = $ruleset->getRule('ligne-horizontale')) {
     596                        $rule->replace = preg_replace(',<[^>]*>,Uims', $GLOBALS['ligne_horizontale'], $rule->replace);
     597                        $ruleset->addRules(array('ligne-horizontale' => $rule));
    563598                }
    564599                if (isset($GLOBALS['toujours_paragrapher']) AND !$GLOBALS['toujours_paragrapher']
    565                   AND $rule=$ruleset->getRule('toujours-paragrapher')) {
     600                        AND $rule = $ruleset->getRule('toujours-paragrapher')
     601                ) {
    566602                        $rule->disabled = true;
    567                         $ruleset->addRules(array('toujours-paragrapher'=>$rule));
    568                 }
    569         }
     603                        $ruleset->addRules(array('toujours-paragrapher' => $rule));
     604                }
     605        }
     606
    570607        // retourner une signature de l'etat de la fonction, pour la mise en cache
    571608        return implode("/",
    572609                array(
    573                         isset($GLOBALS['debut_intertitre'])?$GLOBALS['debut_intertitre']:"",
    574                         isset($GLOBALS['debut_gras'])?$GLOBALS['debut_gras']:"",
    575                         isset($GLOBALS['debut_italique'])?$GLOBALS['debut_italique']:"",
    576                         isset($GLOBALS['ligne_horizontale'])?$GLOBALS['ligne_horizontale']:"",
    577                         isset($GLOBALS['toujours_paragrapher'])?$GLOBALS['toujours_paragrapher']:1,
     610                        isset($GLOBALS['debut_intertitre']) ? $GLOBALS['debut_intertitre'] : "",
     611                        isset($GLOBALS['debut_gras']) ? $GLOBALS['debut_gras'] : "",
     612                        isset($GLOBALS['debut_italique']) ? $GLOBALS['debut_italique'] : "",
     613                        isset($GLOBALS['ligne_horizontale']) ? $GLOBALS['ligne_horizontale'] : "",
     614                        isset($GLOBALS['toujours_paragrapher']) ? $GLOBALS['toujours_paragrapher'] : 1,
    578615                )
    579616        );
     
    585622 * @pipeline_appel pre_propre
    586623 * @pipeline_appel post_propre
    587  * 
     624 *
    588625 * @param string $t
    589626 * @param bool $show_autobr
     
    591628 */
    592629function traiter_raccourcis($t, $show_autobr = false) {
    593         static $wheel=array(), $notes;
    594         static $img_br_auto,$img_br_manuel,$img_br_no;
     630        static $wheel = array(), $notes;
     631        static $img_br_auto, $img_br_manuel, $img_br_no;
    595632        global $spip_lang, $spip_lang_rtl;
    596633
    597634        // hack1: respecter le tag ignore br
    598635        if (_AUTOBR_IGNORER
    599                 AND strncmp($t, _AUTOBR_IGNORER, strlen(_AUTOBR_IGNORER))==0) {
     636                AND strncmp($t, _AUTOBR_IGNORER, strlen(_AUTOBR_IGNORER)) == 0
     637        ) {
    600638                $ignorer_autobr = true;
    601639                $t = substr($t, strlen(_AUTOBR_IGNORER));
    602         } else
     640        } else {
    603641                $ignorer_autobr = false;
     642        }
    604643
    605644        // Appeler les fonctions de pre_traitement
     
    610649        if (!isset($wheel[$key])) {
    611650                $ruleset = SPIPTextWheelRuleset::loader(
    612                         $GLOBALS['spip_wheels']['raccourcis'],'personnaliser_raccourcis'
     651                        $GLOBALS['spip_wheels']['raccourcis'], 'personnaliser_raccourcis'
    613652                );
    614653                $wheel[$key] = new TextWheel($ruleset);
    615654
    616655                if (_request('var_mode') == 'wheel'
    617                 AND autoriser('debug')) {
     656                        AND autoriser('debug')
     657                ) {
    618658                        $f = $wheel->compile();
    619                         echo "<pre>\n".spip_htmlspecialchars($f)."</pre>\n";
     659                        echo "<pre>\n" . spip_htmlspecialchars($f) . "</pre>\n";
    620660                        exit;
    621661                }
     
    628668        try {
    629669                $t = $wheel[$key]->text($t);
    630         }
    631         catch (Exception $e){
     670        } catch (Exception $e) {
    632671                erreur_squelette($e->getMessage());
    633672        }
     
    636675        $t = pipeline('post_propre', $t);
    637676
    638         if ($mes_notes)
    639                 $notes($mes_notes,'traiter',$ignorer_autobr);
     677        if ($mes_notes) {
     678                $notes($mes_notes, 'traiter', $ignorer_autobr);
     679        }
    640680
    641681        if (_AUTOBR and !function_exists('aide_lang_dir')) {
     
    646686        // car en css on ne sait pas styler l'element BR
    647687        if ($ignorer_autobr AND _AUTOBR) {
    648                 if (is_null($img_br_no))
    649                         $img_br_no = ($show_autobr?http_img_pack("br-no".aide_lang_dir($spip_lang,$spip_lang_rtl)."-10.png",_T("tw:retour_ligne_ignore"),"class='br-no'",_T("tw:retour_ligne_ignore")):"");
     688                if (is_null($img_br_no)) {
     689                        $img_br_no = ($show_autobr ? http_img_pack("br-no" . aide_lang_dir($spip_lang, $spip_lang_rtl) . "-10.png",
     690                                _T("tw:retour_ligne_ignore"), "class='br-no'", _T("tw:retour_ligne_ignore")) : "");
     691                }
    650692                $t = str_replace(_AUTOBR, $img_br_no, $t);
    651693        }
    652694        if ($show_autobr AND _AUTOBR) {
    653                 if (is_null($img_br_manuel))
    654                         $img_br_manuel = http_img_pack("br-manuel".aide_lang_dir($spip_lang,$spip_lang_rtl)."-10.png",_T("tw:retour_ligne_manuel"),"class='br-manuel'",_T("tw:retour_ligne_manuel"));
    655                 if (is_null($img_br_auto))
    656                         $img_br_auto = http_img_pack("br-auto".aide_lang_dir($spip_lang,$spip_lang_rtl)."-10.png",_T("tw:retour_ligne_auto"),"class='br-auto'",_T("tw:retour_ligne_auto"));
     695                if (is_null($img_br_manuel)) {
     696                        $img_br_manuel = http_img_pack("br-manuel" . aide_lang_dir($spip_lang, $spip_lang_rtl) . "-10.png",
     697                                _T("tw:retour_ligne_manuel"), "class='br-manuel'", _T("tw:retour_ligne_manuel"));
     698                }
     699                if (is_null($img_br_auto)) {
     700                        $img_br_auto = http_img_pack("br-auto" . aide_lang_dir($spip_lang, $spip_lang_rtl) . "-10.png",
     701                                _T("tw:retour_ligne_auto"), "class='br-auto'", _T("tw:retour_ligne_auto"));
     702                }
    657703                if (false !== strpos(strtolower($t), '<br')) {
    658704                        $t = preg_replace("/<br\b.*>/UiS", "$img_br_manuel\\0", $t);
    659                         $t = str_replace($img_br_manuel._AUTOBR, $img_br_auto._AUTOBR, $t);
     705                        $t = str_replace($img_br_manuel . _AUTOBR, $img_br_auto . _AUTOBR, $t);
    660706                }
    661707        }
     
    669715 *
    670716 * Filtre à appliquer aux champs du type `#TEXTE*`
    671  * 
     717 *
    672718 * @filtre
    673719 * @uses echappe_html()
     
    675721 * @uses traiter_raccourcis()
    676722 * @uses echappe_retour_modeles()
    677  * @see typo()
    678  * 
     723 * @see  typo()
     724 *
    679725 * @param string $t
    680726 *     Texte avec des raccourcis SPIP
     
    685731 * @return string $t
    686732 *     Texte transformé
    687 **/
     733 **/
    688734function propre($t, $connect = null, $env = array()) {
    689735        // les appels directs a cette fonction depuis le php de l'espace
     
    694740        // ne seront pas perturbes
    695741        $interdire_script = false;
    696         if (is_null($connect) AND test_espace_prive()){
     742        if (is_null($connect) AND test_espace_prive()) {
    697743                $connect = '';
    698744                $interdire_script = true;
    699745        }
    700746
    701         if (!$t) return strval($t);
     747        if (!$t) {
     748                return strval($t);
     749        }
    702750
    703751        $t = pipeline('pre_echappe_html_propre', $t);
    704752
    705753        $t = echappe_html($t);
    706         $t = expanser_liens($t,$connect, $env);
    707        
    708         $t = traiter_raccourcis($t, (isset($env['wysiwyg']) AND $env['wysiwyg'])?true:false);
     754        $t = expanser_liens($t, $connect, $env);
     755
     756        $t = traiter_raccourcis($t, (isset($env['wysiwyg']) AND $env['wysiwyg']) ? true : false);
    709757        $t = echappe_retour_modeles($t, $interdire_script);
    710758
     
    713761        return $t;
    714762}
     763
    715764?>
  • _core_/plugins/textwheel/inc/textwheel.php

    r93406 r93628  
    1111\***************************************************************************/
    1212
    13 if (!defined("_ECRIRE_INC_VERSION")) return;
     13if (!defined("_ECRIRE_INC_VERSION")) {
     14        return;
     15}
    1416
    1517include_spip('engine/textwheel');
     
    1719// incrementer ce define au numero de commit concerne
    1820// (inconsistence entre la wheel et l'inclusion php)
    19 if (!defined('_WHEELS_VERSION')) define('_WHEELS_VERSION',68672);
     21if (!defined('_WHEELS_VERSION')) {
     22        define('_WHEELS_VERSION', 68672);
     23}
    2024
    2125//
     
    2731
    2832// Si le tableau des raccourcis existe déjà
    29 if (!isset($GLOBALS['spip_wheels']['raccourcis']) OR !is_array($GLOBALS['spip_wheels']['raccourcis']))
     33if (!isset($GLOBALS['spip_wheels']['raccourcis']) OR !is_array($GLOBALS['spip_wheels']['raccourcis'])) {
    3034        $GLOBALS['spip_wheels']['raccourcis'] = array(
    3135                'spip/spip.yaml',
    3236                'spip/spip-paragrapher.yaml'
    3337        );
    34 else
     38} else {
    3539        $GLOBALS['spip_wheels']['raccourcis'] = array_merge(
    3640                array(
     
    4044                $GLOBALS['spip_wheels']['raccourcis']
    4145        );
     46}
    4247
    43 if (test_espace_prive ())
     48if (test_espace_prive()) {
    4449        $GLOBALS['spip_wheels']['raccourcis'][] = 'spip/ecrire.yaml';
     50}
    4551
    4652$GLOBALS['spip_wheels']['interdire_scripts'] = array(
     
    6571
    6672class SPIPTextWheelRuleset extends TextWheelRuleSet {
    67         protected function findFile(&$file, $path = ''){
     73        protected function findFile(&$file, $path = '') {
    6874                static $default_path;
    6975
    7076                // absolute file path?
    71                 if (file_exists($file))
     77                if (file_exists($file)) {
    7278                        return $file;
     79                }
    7380
    7481                // file include with texwheels, relative to calling ruleset
    75                 if ($path AND file_exists($f = $path.$file))
     82                if ($path AND file_exists($f = $path . $file)) {
    7683                        return $f;
     84                }
    7785
    78                 return find_in_path($file,'wheels/');
     86                return find_in_path($file, 'wheels/');
    7987        }
    8088
     
    8593                # il faut donc que le cache depende du chemin courant vers la racine de SPIP
    8694                $key = "";
    87                 if ($callback)
     95                if ($callback) {
    8896                        $key = $callback($key);
    89                 $key = 'tw-'.md5(_WHEELS_VERSION."-".serialize($ruleset).$key.$class._DIR_RACINE);
     97                }
     98                $key = 'tw-' . md5(_WHEELS_VERSION . "-" . serialize($ruleset) . $key . $class . _DIR_RACINE);
    9099
    91100                # lecture du cache
    92                 if ((!defined('_VAR_MODE') OR _VAR_MODE!='recalcul')
    93                   AND $cacheruleset = tw_cache_get($key))
     101                if ((!defined('_VAR_MODE') OR _VAR_MODE != 'recalcul')
     102                        AND $cacheruleset = tw_cache_get($key)
     103                ) {
    94104                        return $cacheruleset;
     105                }
    95106
    96107                # calcul de la wheel
     
    105116
    106117
    107 function tw_trig_purger($quoi){
    108         if ($quoi=='cache')
    109                 purger_repertoire(_DIR_CACHE."wheels");
     118function tw_trig_purger($quoi) {
     119        if ($quoi == 'cache') {
     120                purger_repertoire(_DIR_CACHE . "wheels");
     121        }
     122
    110123        return $quoi;
    111124}
     
    121134 */
    122135function tw_cache_get($key) {
    123         if (function_exists('cache_get')){
     136        if (function_exists('cache_get')) {
    124137                return cache_get($key);
    125138        }
    126         return @unserialize(file_get_contents(_DIR_CACHE."wheels/".$key.".txt"));
     139
     140        return @unserialize(file_get_contents(_DIR_CACHE . "wheels/" . $key . ".txt"));
    127141}
    128142
     
    137151 * @return bool
    138152 */
    139 function tw_cache_set($key, $value, $ttl=null) {
    140         if (function_exists('cache_set')){
     153function tw_cache_set($key, $value, $ttl = null) {
     154        if (function_exists('cache_set')) {
    141155                return cache_set($key, $value, $ttl);
    142156        }
    143         $dir = sous_repertoire(_DIR_CACHE,"wheels/");
    144         return ecrire_fichier($dir.$key.".txt", serialize($value));
     157        $dir = sous_repertoire(_DIR_CACHE, "wheels/");
     158
     159        return ecrire_fichier($dir . $key . ".txt", serialize($value));
    145160}
  • _core_/plugins/textwheel/inc/yaml-mini.php

    r61686 r93628  
    11<?php
    22
    3 if (!defined('_ECRIRE_INC_VERSION')) return;
     3if (!defined('_ECRIRE_INC_VERSION')) {
     4        return;
     5}
    46# yaml_decode
    57
    68function yaml_decode($input) {
    7         require_once dirname(__FILE__).'/../lib/yaml/sfYaml.php';
    8         require_once dirname(__FILE__).'/../lib/yaml/sfYamlParser.php';
     9        require_once dirname(__FILE__) . '/../lib/yaml/sfYaml.php';
     10        require_once dirname(__FILE__) . '/../lib/yaml/sfYamlParser.php';
    911
    1012        $yaml = new sfYamlParser();
    1113
    12         try
    13         {
    14           return $yaml->parse($input);
    15          
    16         }
    17         catch (Exception $e)
    18         {
     14        try {
     15                return $yaml->parse($input);
     16
     17        } catch (Exception $e) {
    1918                return null;
    2019        }
  • _core_/plugins/textwheel/tests/tw_propre.php

    r84170 r93628  
    55 */
    66
    7         $test = 'tw_propre';
    8         $remonte = "../";
    9         while (!is_dir($remonte."ecrire"))
    10                 $remonte = "../$remonte";
    11         require $remonte.'tests/test.inc';
    12         find_in_path("inc/texte.php",'',true);
     7$test = 'tw_propre';
     8$remonte = "../";
     9while (!is_dir($remonte . "ecrire")) {
     10        $remonte = "../$remonte";
     11}
     12require $remonte . 'tests/test.inc';
     13find_in_path("inc/texte.php", '', true);
    1314
    14         $GLOBALS['spip_lang'] = 'en'; // corrections typo
    15         $GLOBALS['class_spip_plus'] = '';
    16         $GLOBALS['class_spip'] = '';
     15$GLOBALS['spip_lang'] = 'en'; // corrections typo
     16$GLOBALS['class_spip_plus'] = '';
     17$GLOBALS['class_spip'] = '';
    1718
    18   // ajouter le dossier squelettes de test au chemin
    19   _chemin(_DIR_PLUGIN_TW."tests/squelettes/");
     19// ajouter le dossier squelettes de test au chemin
     20_chemin(_DIR_PLUGIN_TW . "tests/squelettes/");
    2021
    21         $notes = charger_fonction("notes","inc");
    22         function propre_notes($texte){
    23                 global $notes;
    24                 $texte = propre($texte);
    25                 if ($r = $notes(array())){
    26                         $texte .= "<div class='notes'>$r</div>";
    27                         $notes('','depiler');
    28                         $notes('','empiler');
    29                 }
    30                 return $texte;
    31         }
    32         //
    33         // hop ! on y va
    34         //
    35         $err = tester_fun('propre_notes', essais_tw_propre());
    36        
    37         // si le tableau $err est pas vide ca va pas
    38         if ($err) {
    39                 die ('<dl>' . join('', $err) . '</dl>');
     22$notes = charger_fonction("notes", "inc");
     23function propre_notes($texte) {
     24        global $notes;
     25        $texte = propre($texte);
     26        if ($r = $notes(array())) {
     27                $texte .= "<div class='notes'>$r</div>";
     28                $notes('', 'depiler');
     29                $notes('', 'empiler');
    4030        }
    4131
    42         echo "OK";
    43        
     32        return $texte;
     33}
    4434
    45         function essais_tw_propre(){
     35//
     36// hop ! on y va
     37//
     38$err = tester_fun('propre_notes', essais_tw_propre());
    4639
    47                 $tests = preg_files(_DIR_PLUGIN_TW."tests/data/base/",'\.txt$');
     40// si le tableau $err est pas vide ca va pas
     41if ($err) {
     42        die ('<dl>' . join('', $err) . '</dl>');
     43}
    4844
    49                 $texte = $expected = "";
    50                 $essais = array ();
     45echo "OK";
    5146
    52                 foreach($tests as $t){
    53                         lire_fichier($t,$texte);
    54                         lire_fichier(substr($t,0,-4).".html",$expected);
    55                         $essais[basename($t,".txt")] = array(
    56                                 $expected , $texte
    57                         );
    58                 }
    5947
    60                 return $essais;
     48function essais_tw_propre() {
     49
     50        $tests = preg_files(_DIR_PLUGIN_TW . "tests/data/base/", '\.txt$');
     51
     52        $texte = $expected = "";
     53        $essais = array();
     54
     55        foreach ($tests as $t) {
     56                lire_fichier($t, $texte);
     57                lire_fichier(substr($t, 0, -4) . ".html", $expected);
     58                $essais[basename($t, ".txt")] = array(
     59                        $expected,
     60                        $texte
     61                );
    6162        }
    6263
     64        return $essais;
     65}
    6366
    6467
  • _core_/plugins/textwheel/tests/tw_propre_modeles_block.php

    r84189 r93628  
    55 */
    66
    7         $test = 'tw_propre_modeles_block';
    8         $remonte = "../";
    9         while (!is_dir($remonte."ecrire"))
    10                 $remonte = "../$remonte";
    11         require $remonte.'tests/test.inc';
    12         find_in_path("inc/texte.php",'',true);
     7$test = 'tw_propre_modeles_block';
     8$remonte = "../";
     9while (!is_dir($remonte . "ecrire")) {
     10        $remonte = "../$remonte";
     11}
     12require $remonte . 'tests/test.inc';
     13find_in_path("inc/texte.php", '', true);
    1314
    14         $GLOBALS['spip_lang'] = 'en'; // corrections typo
    15         $GLOBALS['class_spip_plus'] = '';
    16         $GLOBALS['class_spip'] = '';
     15$GLOBALS['spip_lang'] = 'en'; // corrections typo
     16$GLOBALS['class_spip_plus'] = '';
     17$GLOBALS['class_spip'] = '';
    1718
    18   // ajouter le dossier squelettes de test au chemin
    19   _chemin(_DIR_PLUGIN_TW."tests/squelettes/");
     19// ajouter le dossier squelettes de test au chemin
     20_chemin(_DIR_PLUGIN_TW . "tests/squelettes/");
    2021
    21         $notes = charger_fonction("notes","inc");
    22         function propre_notes($texte){
    23                 global $notes;
    24                 $texte = propre($texte);
    25                 if ($r = $notes(array())){
    26                         $texte .= "<div class='notes'>$r</div>";
    27                         $notes('','depiler');
    28                         $notes('','empiler');
    29                 }
    30                 return $texte;
    31         }
    32         //
    33         // hop ! on y va
    34         //
    35         $err = tester_fun('propre_notes', essais_tw_propre());
    36        
    37         // si le tableau $err est pas vide ca va pas
    38         if ($err) {
    39                 die ('<dl>' . join('', $err) . '</dl>');
     22$notes = charger_fonction("notes", "inc");
     23function propre_notes($texte) {
     24        global $notes;
     25        $texte = propre($texte);
     26        if ($r = $notes(array())) {
     27                $texte .= "<div class='notes'>$r</div>";
     28                $notes('', 'depiler');
     29                $notes('', 'empiler');
    4030        }
    4131
    42         echo "OK";
    43        
     32        return $texte;
     33}
    4434
    45         function essais_tw_propre(){
     35//
     36// hop ! on y va
     37//
     38$err = tester_fun('propre_notes', essais_tw_propre());
    4639
    47                 $tests = preg_files(_DIR_PLUGIN_TW."tests/data/modeles_block/",'\.txt$');
     40// si le tableau $err est pas vide ca va pas
     41if ($err) {
     42        die ('<dl>' . join('', $err) . '</dl>');
     43}
    4844
    49                 $texte = $expected = "";
    50                 $essais = array ();
     45echo "OK";
    5146
    52                 foreach($tests as $t){
    53                         lire_fichier($t,$texte);
    54                         lire_fichier(substr($t,0,-4).".html",$expected);
    55                         $essais[basename($t,".txt")] = array(
    56                                 $expected , $texte
    57                         );
    58                 }
    5947
    60                 return $essais;
     48function essais_tw_propre() {
     49
     50        $tests = preg_files(_DIR_PLUGIN_TW . "tests/data/modeles_block/", '\.txt$');
     51
     52        $texte = $expected = "";
     53        $essais = array();
     54
     55        foreach ($tests as $t) {
     56                lire_fichier($t, $texte);
     57                lire_fichier(substr($t, 0, -4) . ".html", $expected);
     58                $essais[basename($t, ".txt")] = array(
     59                        $expected,
     60                        $texte
     61                );
    6162        }
    6263
     64        return $essais;
     65}
    6366
    6467
  • _core_/plugins/textwheel/tests/tw_propre_modeles_inline.php

    r84187 r93628  
    55 */
    66
    7         $test = 'tw_propre_modeles_inline';
    8         $remonte = "../";
    9         while (!is_dir($remonte."ecrire"))
    10                 $remonte = "../$remonte";
    11         require $remonte.'tests/test.inc';
    12         find_in_path("inc/texte.php",'',true);
     7$test = 'tw_propre_modeles_inline';
     8$remonte = "../";
     9while (!is_dir($remonte . "ecrire")) {
     10        $remonte = "../$remonte";
     11}
     12require $remonte . 'tests/test.inc';
     13find_in_path("inc/texte.php", '', true);
    1314
    14         $GLOBALS['spip_lang'] = 'en'; // corrections typo
    15         $GLOBALS['class_spip_plus'] = '';
    16         $GLOBALS['class_spip'] = '';
     15$GLOBALS['spip_lang'] = 'en'; // corrections typo
     16$GLOBALS['class_spip_plus'] = '';
     17$GLOBALS['class_spip'] = '';
    1718
    18   // ajouter le dossier squelettes de test au chemin
    19   _chemin(_DIR_PLUGIN_TW."tests/squelettes/");
     19// ajouter le dossier squelettes de test au chemin
     20_chemin(_DIR_PLUGIN_TW . "tests/squelettes/");
    2021
    21         $notes = charger_fonction("notes","inc");
    22         function propre_notes($texte){
    23                 global $notes;
    24                 $texte = propre($texte);
    25                 if ($r = $notes(array())){
    26                         $texte .= "<div class='notes'>$r</div>";
    27                         $notes('','depiler');
    28                         $notes('','empiler');
    29                 }
    30                 return $texte;
    31         }
    32         //
    33         // hop ! on y va
    34         //
    35         $err = tester_fun('propre_notes', essais_tw_propre());
    36        
    37         // si le tableau $err est pas vide ca va pas
    38         if ($err) {
    39                 die ('<dl>' . join('', $err) . '</dl>');
     22$notes = charger_fonction("notes", "inc");
     23function propre_notes($texte) {
     24        global $notes;
     25        $texte = propre($texte);
     26        if ($r = $notes(array())) {
     27                $texte .= "<div class='notes'>$r</div>";
     28                $notes('', 'depiler');
     29                $notes('', 'empiler');
    4030        }
    4131
    42         echo "OK";
    43        
     32        return $texte;
     33}
    4434
    45         function essais_tw_propre(){
     35//
     36// hop ! on y va
     37//
     38$err = tester_fun('propre_notes', essais_tw_propre());
    4639
    47                 $tests = preg_files(_DIR_PLUGIN_TW."tests/data/modeles_inline/",'\.txt$');
     40// si le tableau $err est pas vide ca va pas
     41if ($err) {
     42        die ('<dl>' . join('', $err) . '</dl>');
     43}
    4844
    49                 $texte = $expected = "";
    50                 $essais = array ();
     45echo "OK";
    5146
    52                 foreach($tests as $t){
    53                         lire_fichier($t,$texte);
    54                         lire_fichier(substr($t,0,-4).".html",$expected);
    55                         $essais[basename($t,".txt")] = array(
    56                                 $expected , $texte
    57                         );
    58                 }
    5947
    60                 return $essais;
     48function essais_tw_propre() {
     49
     50        $tests = preg_files(_DIR_PLUGIN_TW . "tests/data/modeles_inline/", '\.txt$');
     51
     52        $texte = $expected = "";
     53        $essais = array();
     54
     55        foreach ($tests as $t) {
     56                lire_fichier($t, $texte);
     57                lire_fichier(substr($t, 0, -4) . ".html", $expected);
     58                $essais[basename($t, ".txt")] = array(
     59                        $expected,
     60                        $texte
     61                );
    6162        }
    6263
     64        return $essais;
     65}
    6366
    6467
  • _core_/plugins/textwheel/tests/tw_propre_typo.php

    r84186 r93628  
    55 */
    66
    7         $test = 'tw_propre_typo';
    8         $remonte = "../";
    9         while (!is_dir($remonte."ecrire"))
    10                 $remonte = "../$remonte";
    11         require $remonte.'tests/test.inc';
    12         find_in_path("inc/texte.php",'',true);
     7$test = 'tw_propre_typo';
     8$remonte = "../";
     9while (!is_dir($remonte . "ecrire")) {
     10        $remonte = "../$remonte";
     11}
     12require $remonte . 'tests/test.inc';
     13find_in_path("inc/texte.php", '', true);
    1314
    14         $GLOBALS['spip_lang'] = 'fr'; // corrections typo
    15         $GLOBALS['class_spip_plus'] = '';
    16         $GLOBALS['class_spip'] = '';
     15$GLOBALS['spip_lang'] = 'fr'; // corrections typo
     16$GLOBALS['class_spip_plus'] = '';
     17$GLOBALS['class_spip'] = '';
    1718
    18   // ajouter le dossier squelettes de test au chemin
    19   _chemin(_DIR_PLUGIN_TW."tests/squelettes/");
     19// ajouter le dossier squelettes de test au chemin
     20_chemin(_DIR_PLUGIN_TW . "tests/squelettes/");
    2021
    21         $notes = charger_fonction("notes","inc");
    22         function propre_notes($texte){
    23                 global $notes;
    24                 $texte = propre($texte);
    25                 if ($r = $notes(array())){
    26                         $texte .= "<div class='notes'>$r</div>";
    27                         $notes('','depiler');
    28                         $notes('','empiler');
    29                 }
    30                 return $texte;
    31         }
    32         //
    33         // hop ! on y va
    34         //
    35         $err = tester_fun('propre_notes', essais_tw_propre_typo());
    36        
    37         // si le tableau $err est pas vide ca va pas
    38         if ($err) {
    39                 die ('<dl>' . join('', $err) . '</dl>');
     22$notes = charger_fonction("notes", "inc");
     23function propre_notes($texte) {
     24        global $notes;
     25        $texte = propre($texte);
     26        if ($r = $notes(array())) {
     27                $texte .= "<div class='notes'>$r</div>";
     28                $notes('', 'depiler');
     29                $notes('', 'empiler');
    4030        }
    4131
    42         echo "OK";
    43        
     32        return $texte;
     33}
    4434
    45         function essais_tw_propre_typo(){
     35//
     36// hop ! on y va
     37//
     38$err = tester_fun('propre_notes', essais_tw_propre_typo());
    4639
    47                 $tests = preg_files(_DIR_PLUGIN_TW."tests/data/typo/",'\.txt$');
     40// si le tableau $err est pas vide ca va pas
     41if ($err) {
     42        die ('<dl>' . join('', $err) . '</dl>');
     43}
    4844
    49                 $texte = $expected = "";
    50                 $essais = array ();
     45echo "OK";
    5146
    52                 foreach($tests as $t){
    53                         lire_fichier($t,$texte);
    54                         lire_fichier(substr($t,0,-4).".html",$expected);
    55                         $essais[basename($t,".txt")] = array(
    56                                 $expected , $texte
    57                         );
    58                 }
    5947
    60                 return $essais;
     48function essais_tw_propre_typo() {
     49
     50        $tests = preg_files(_DIR_PLUGIN_TW . "tests/data/typo/", '\.txt$');
     51
     52        $texte = $expected = "";
     53        $essais = array();
     54
     55        foreach ($tests as $t) {
     56                lire_fichier($t, $texte);
     57                lire_fichier(substr($t, 0, -4) . ".html", $expected);
     58                $essais[basename($t, ".txt")] = array(
     59                        $expected,
     60                        $texte
     61                );
    6162        }
    6263
     64        return $essais;
     65}
    6366
    6467
  • _core_/plugins/textwheel/typographie/en.php

    r89122 r93628  
    1111\***************************************************************************/
    1212
    13 if (!defined("_ECRIRE_INC_VERSION")) return;
     13if (!defined("_ECRIRE_INC_VERSION")) {
     14        return;
     15}
    1416
    1517// Correction typographique anglaise
     
    2022        if (!isset($trans)) {
    2123                $trans = array(
    22                 "&nbsp;" => '~',
    23                 "'" => '&#8217;'
     24                        "&nbsp;" => '~',
     25                        "'" => '&#8217;'
    2426                );
    2527                $charset = isset($GLOBALS['meta']['charset']) ? $GLOBALS['meta']['charset'] : '';
     
    4648        $t = preg_replace('/Mr\.? /S', '$0~', $t);
    4749
    48         if (strpos($t,'\~')!==false){
    49                 $t = str_replace('\~',"\x1\x14", $t);
     50        if (strpos($t, '\~') !== false) {
     51                $t = str_replace('\~', "\x1\x14", $t);
    5052        }
    5153
    52         if (strpos($t, '~') !== false)
     54        if (strpos($t, '~') !== false) {
    5355                $t = preg_replace("/ *~+ */S", "~", $t);
     56        }
    5457
    5558        $t = preg_replace("/--([^-]|$)/S", "$pro&mdash;$1", $t, -1, $c);
     
    6164        $t = str_replace('~', '&nbsp;', $t);
    6265
    63         if (strpos($t,"\x1")!==false){
     66        if (strpos($t, "\x1") !== false) {
    6467                $t = str_replace("\x1\x14", '~', $t);
    6568        }
  • _core_/plugins/textwheel/typographie/fr.php

    r89122 r93628  
    1111\***************************************************************************/
    1212
    13 if (!defined("_ECRIRE_INC_VERSION")) return;
     13if (!defined("_ECRIRE_INC_VERSION")) {
     14        return;
     15}
    1416
    1517// Correction typographique francaise
     
    2123        if (!isset($trans)) {
    2224                $trans = array(
    23                 "&nbsp;" => '~',
    24                 "&raquo;" => '&#187;',
    25                 "&laquo;" => '&#171;',
    26                 "&rdquo;" => '&#8221;',
    27                 "&ldquo;" => '&#8220;',
    28                 "&deg;" => '&#176;',
    29                 "'" => '&#8217;'
     25                        "&nbsp;" => '~',
     26                        "&raquo;" => '&#187;',
     27                        "&laquo;" => '&#171;',
     28                        "&rdquo;" => '&#8221;',
     29                        "&ldquo;" => '&#8220;',
     30                        "&deg;" => '&#176;',
     31                        "'" => '&#8217;'
    3032                );
    3133                $charset = isset($GLOBALS['meta']['charset']) ? $GLOBALS['meta']['charset'] : '';
     
    7577        $t = preg_replace('/&#171;|M(?:M?\.|mes?|r\.?|&#176;) |[nN]&#176; /S', '$0~', $t);
    7678
    77         if (strpos($t,'\~')!==false){
    78                 $t = str_replace('\~',"\x1\x14", $t);
     79        if (strpos($t, '\~') !== false) {
     80                $t = str_replace('\~', "\x1\x14", $t);
    7981        }
    8082
    81         if (strpos($t, '~') !== false)
     83        if (strpos($t, '~') !== false) {
    8284                $t = preg_replace("/ *~+ */S", "~", $t);
     85        }
    8386
    8487        $t = preg_replace("/--([^-]|$)/S", "$pro&mdash;$1", $t, -1, $c);
     
    8891        }
    8992
    90         $t = preg_replace(',(' ._PROTOCOLES_STD . ')~((://[^"\'\s\[\]\}\)<>]+)~([?]))?,S', '$1$3$4', $t);
     93        $t = preg_replace(',(' . _PROTOCOLES_STD . ')~((://[^"\'\s\[\]\}\)<>]+)~([?]))?,S', '$1$3$4', $t);
    9194        $t = str_replace('~', '&nbsp;', $t);
    9295
    93         if (strpos($t,"\x1")!==false){
     96        if (strpos($t, "\x1") !== false) {
    9497                $t = str_replace("\x1\x14", '~', $t);
    9598        }
  • _core_/plugins/textwheel/wheels/spip/echappe-js.php

    r92520 r93628  
    55 *
    66 * @SPIP\Textwheel\Wheel\SPIP\Fonctions
    7 **/
     7 **/
    88
    9 if (!defined('_ECRIRE_INC_VERSION')) return;
     9if (!defined('_ECRIRE_INC_VERSION')) {
     10        return;
     11}
    1012
    11 function echappe_anti_xss($match){
     13function echappe_anti_xss($match) {
    1214        static $safehtml;
    1315
     
    1820
    1921        // on echappe les urls data: javascript: et tout ce qui ressemble
    20         if (strpos($texte,":")!==false
    21                 AND preg_match(",(data|script)\s*:,iS",$texte)){
     22        if (strpos($texte, ":") !== false
     23                AND preg_match(",(data|script)\s*:,iS", $texte)
     24        ) {
    2225                $texte = nl2br(htmlspecialchars($texte));
    23         }
    24         // on echappe si on a possiblement un attribut onxxx et que ca passe pas dans safehtml
    25         elseif(stripos($texte,"on")!==false
    26           AND preg_match(",\bon\w+\s*=,i",$texte)){
    27                 if (!isset($safehtml))
     26        } // on echappe si on a possiblement un attribut onxxx et que ca passe pas dans safehtml
     27        elseif (stripos($texte, "on") !== false
     28                AND preg_match(",\bon\w+\s*=,i", $texte)
     29        ) {
     30                if (!isset($safehtml)) {
    2831                        $safehtml = charger_fonction('safehtml', 'inc', true);
    29                 if (!$safehtml OR strlen($safehtml($texte))!==strlen($texte)){
     32                }
     33                if (!$safehtml OR strlen($safehtml($texte)) !== strlen($texte)) {
    3034                        $texte = nl2br(htmlspecialchars($texte));
    3135                }
    3236        }
    3337
    34         if (strpos($texte,"<")===false){
     38        if (strpos($texte, "<") === false) {
    3539                $texte = "<code class=\"echappe-js\">$texte</code>";
    3640        }
  • _core_/plugins/textwheel/wheels/spip/spip-listes.php

    r93092 r93628  
    11<?php
    22
    3 if (!defined('_ECRIRE_INC_VERSION')) return;
     3if (!defined('_ECRIRE_INC_VERSION')) {
     4        return;
     5}
    46# not useful as this file is included by the engine itself
    57# require_once 'engine/textwheel.php';
    68
    7 function tw_liste_init($t){
     9function tw_liste_init($t) {
    810        charger_fonction('dummy', 'inc', true); // ne sert a rien mais evite un segmentation fault PHP, on dirait
    9         return tw_liste_item($t,'init');
     11        return tw_liste_item($t, 'init');
    1012}
    1113
    12 function tw_liste_close($t){
    13         return tw_liste_item($t,'close');
     14function tw_liste_close($t) {
     15        return tw_liste_item($t, 'close');
    1416}
    1517
    16 function tw_liste_item($t, $quoi = 'item'){
     18function tw_liste_item($t, $quoi = 'item') {
    1719        global $class_spip, $class_spip_plus;
    1820        static $niveau;
     
    2123        static $type;
    2224
    23         switch ($quoi){
     25        switch ($quoi) {
    2426                case 'init':
    2527                        $niveau = 0;
     
    3436                                $ajout .= $pile_li[$niveau];
    3537                                $ajout .= $pile_type[$niveau];
    36                                 $niveau --;
     38                                $niveau--;
    3739                        }
    3840                        $t .= $ajout;
     
    4345                        $nouv_type = $quoi;
    4446                        break;
    45                
     47
    4648                case 'item':
    4749                default:
    4850                        $profond = 0;
    49                         if ($l=strlen($t[2])) {
    50                                 $profond=$l;$nouv_type='ul';
    51                                 if (strncmp($t[2],'#',1)==0) $nouv_type='ol';
     51                        if ($l = strlen($t[2])) {
     52                                $profond = $l;
     53                                $nouv_type = 'ul';
     54                                if (strncmp($t[2], '#', 1) == 0) {
     55                                        $nouv_type = 'ol';
     56                                }
    5257                        }
    5358
    5459                        if ($profond > 0) {
    55                                 $ajout='';
     60                                $ajout = '';
    5661
    5762                                // changement de type de liste au meme niveau : il faut
     
    6267
    6368                                // d'abord traiter les descentes
    64                                 while ($niveau > $profond - $change_type) {
     69                                while ($niveau > $profond-$change_type) {
    6570                                        $ajout .= $pile_li[$niveau];
    6671                                        $ajout .= $pile_type[$niveau];
    67                                         if (!$change_type)
     72                                        if (!$change_type) {
    6873                                                unset ($pile_li[$niveau]);
    69                                         $niveau --;
     74                                        }
     75                                        $niveau--;
    7076                                }
    7177
     
    7783                                // puis les montees (y compris apres une descente un cran trop bas)
    7884                                while ($niveau < $profond) {
    79                                         if ($niveau == 0)
     85                                        if ($niveau == 0) {
    8086                                                $ajout .= "\n\n";
    81                                         elseif (!isset($pile_li[$niveau])) {
     87                                        } elseif (!isset($pile_li[$niveau])) {
    8288                                                $ajout .= "<li$class_spip>";
    8389                                                $pile_li[$niveau] = "</li>";
    8490                                        }
    85                                         $niveau ++;
     91                                        $niveau++;
    8692                                        $ajout .= "<$type$class_spip_plus>";
    8793                                        $pile_type[$niveau] = "</$type>";
     
    9096                                $ajout .= "<li$class_spip>";
    9197                                $pile_li[$profond] = "</li>";
    92                         }
    93                         else {
    94                                 $ajout = $t[1]; // puce normale ou <hr>
     98                        } else {
     99                                $ajout = $t[1];  // puce normale ou <hr>
    95100                        }
    96101
     
    106111}
    107112
    108 function tw_def_wrap($t){
     113function tw_def_wrap($t) {
    109114        global $class_spip_plus;
     115
    110116        return "<dl$class_spip_plus>\n$t</dl>\n";
    111117}
  • _core_/plugins/textwheel/wheels/spip/spip-paragrapher.php

    r84596 r93628  
    55 *
    66 * @SPIP\Textwheel\Wheel\SPIP\Fonctions
    7 **/
     7 **/
    88
    9 if (!defined('_ECRIRE_INC_VERSION')) return;
     9if (!defined('_ECRIRE_INC_VERSION')) {
     10        return;
     11}
    1012
    11 if (!defined('_BALISES_BLOCS')) define('_BALISES_BLOCS',
     13if (!defined('_BALISES_BLOCS')) {
     14        define('_BALISES_BLOCS',
    1215        'address|applet|article|aside|blockquote|button|center|d[ltd]|div|fieldset|fig(ure|caption)|footer|form|h[1-6r]|hgroup|head|header|iframe|li|map|marquee|nav|noscript|object|ol|pre|section|t(able|[rdh]|body|foot|extarea)|ul|script|style'
    13 );
     16        );
     17}
    1418
    1519/**
     
    2024 * @return string
    2125 */
    22 function detecter_liens_blocs(&$t){
     26function detecter_liens_blocs(&$t) {
    2327
    2428        // si une balise bloc est dans le liens, on y a aussi ajoute un <p>, il suffit donc de detecter ce dernier
    25         if (strpos($t[2],"<p>")!==false){
    26                 return "<STOP P>".$t[1]."<p>".$t[2]."</p>".$t[3]."\n<p>";
     29        if (strpos($t[2], "<p>") !== false) {
     30                return "<STOP P>" . $t[1] . "<p>" . $t[2] . "</p>" . $t[3] . "\n<p>";
    2731        }
     32
    2833        return $t[0];
    2934}
     
    3136/**
    3237 * Callback fermer-para-mano
    33  * 
     38 *
    3439 * On refait le preg, à la main
    3540 *
     
    4146        # replace: "\n<p "+trim($1)+"</p>\n<$2$3"
    4247
    43         foreach (array('<p '=>"</p>\n",'<li'=>"<br-li/>") as $cut=>$close){
    44                 if (strpos($t,$cut)!==false){
     48        foreach (array('<p ' => "</p>\n", '<li' => "<br-li/>") as $cut => $close) {
     49                if (strpos($t, $cut) !== false) {
    4550                        foreach (explode($cut, $t) as $c => $p) {
    46                                 if ($c == 0)
     51                                if ($c == 0) {
    4752                                        $t = $p;
    48                                 else {
     53                                } else {
    4954                                        $pi = strtolower($p);
    5055                                        if (preg_match(
    51                                                 ",</?(?:stop p|"._BALISES_BLOCS.")\b,S",
    52                                         $pi, $r)) {
     56                                                ",</?(?:stop p|" . _BALISES_BLOCS . ")\b,S",
     57                                                $pi, $r)) {
    5358                                                $pos = strpos($pi, $r[0]);
    54                                                 $t .= $cut . str_replace("\n", _AUTOBR."\n", ($close?rtrim(substr($p,0,$pos)):substr($p,0,$pos))). $close . substr($p,$pos);
     59                                                $t .= $cut . str_replace("\n", _AUTOBR . "\n",
     60                                                                ($close ? rtrim(substr($p, 0, $pos)) : substr($p, 0, $pos))) . $close . substr($p, $pos);
    5561                                        } else {
    5662                                                $t .= $cut . $p;
     
    6167        }
    6268
    63         if (strpos($t,"<br-li/>")!==false){
    64                 $t = str_replace("<br-li/></li>","</li>",$t); // pour respecter les non-retour lignes avant </li>
    65                 $t = str_replace("<br-li/><ul>","<ul>",$t); // pour respecter les non-retour lignes avant <ul>
    66                 $t = str_replace("<br-li/>","\n",$t);
     69        if (strpos($t, "<br-li/>") !== false) {
     70                $t = str_replace("<br-li/></li>", "</li>", $t); // pour respecter les non-retour lignes avant </li>
     71                $t = str_replace("<br-li/><ul>", "<ul>", $t); // pour respecter les non-retour lignes avant <ul>
     72                $t = str_replace("<br-li/>", "\n", $t);
    6773        }
    6874        if (_AUTOBR) {
    69                 $t = str_replace(_AUTOBR."\n"."<br", "\n<br", $t); #manque /i
    70                 $reg = ',(<(p|br|li)\b[^>]*>\s*)'.preg_quote(_AUTOBR."\n", ',').",iS";
    71                 $t = preg_replace($reg, '\1'."\n", $t);
     75                $t = str_replace(_AUTOBR . "\n" . "<br", "\n<br", $t); #manque /i
     76                $reg = ',(<(p|br|li)\b[^>]*>\s*)' . preg_quote(_AUTOBR . "\n", ',') . ",iS";
     77                $t = preg_replace($reg, '\1' . "\n", $t);
    7278        }
    7379
  • _core_/plugins/textwheel/wheels/spip/spip-tableaux.php

    r53217 r93628  
    11<?php
    22
    3 if (!defined('_ECRIRE_INC_VERSION')) return;
     3if (!defined('_ECRIRE_INC_VERSION')) {
     4        return;
     5}
    46
    57include_spip('inc/texte');
     
    1113 * @return string
    1214 */
    13 function replace_tableaux($m){
     15function replace_tableaux($m) {
    1416        return $m[1] . traiter_tableau($m[2]) . $m[3];
    1517}
  • _core_/plugins/textwheel/wheels/spip/spip.php

    r84654 r93628  
    55 *
    66 * @SPIP\Textwheel\Wheel\SPIP\Fonctions
    7 **/
     7 **/
    88
    9 if (!defined('_ECRIRE_INC_VERSION')) return;
     9if (!defined('_ECRIRE_INC_VERSION')) {
     10        return;
     11}
    1012
    1113include_spip('inc/texte');
     
    1921 */
    2022function replace_math($t) {
    21         if (!function_exists('traiter_math'))
     23        if (!function_exists('traiter_math')) {
    2224                include_spip('inc/math');
     25        }
    2326
    2427        $t = traiter_math($t, '');
     28
    2529        return $t;
    2630}
     
    2832/**
    2933 * Callback pour la puce qui est définissable/surchargeable
     34 *
    3035 * @return string
    3136 *     Code HTML d'une puce
    3237 */
    33 function replace_puce(){
     38function replace_puce() {
    3439        static $puce;
    35         if (!isset($puce))
    36                 $puce = "\n<br />".definir_puce()."&nbsp;";
     40        if (!isset($puce)) {
     41                $puce = "\n<br />" . definir_puce() . "&nbsp;";
     42        }
     43
    3744        return $puce;
    3845}
     
    5057 *     Code HTML d'une abréviation
    5158 */
    52 function inserer_abbr($m){
     59function inserer_abbr($m) {
    5360        $title = attribut_html($m[2]);
    54         $lang = (isset($m[3])?" lang=\"".$m[3]."\"":"");
    55         return "<abbr title=\"$title\"$lang>".$m[1]."</abbr>";
     61        $lang = (isset($m[3]) ? " lang=\"" . $m[3] . "\"" : "");
     62
     63        return "<abbr title=\"$title\"$lang>" . $m[1] . "</abbr>";
    5664}
Note: See TracChangeset for help on using the changeset viewer.