Ignore:
Timestamp:
Dec 13, 2015, 11:52:51 AM (4 years ago)
Author:
cedric@…
Message:

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _core_/plugins/revisions/inc/revisions.php

    r93092 r93622  
    1515 *
    1616 * @package SPIP\Revisions\Fonctions
    17 **/
    18 if (!defined("_ECRIRE_INC_VERSION")) return;
     17 **/
     18if (!defined("_ECRIRE_INC_VERSION")) {
     19        return;
     20}
    1921
    2022$GLOBALS['agregation_versions'] = 10;
    2123
    2224/** Intervalle de temps (en seconde) separant deux révisions par un même auteur */
    23 define('_INTERVALLE_REVISIONS', 600); 
     25define('_INTERVALLE_REVISIONS', 600);
    2426
    2527/**
    26  * Découper les paragraphes d'un texte en fragments 
    27  *
    28  * @param string $texte  Texte à fragmenter
    29  * @param array $paras   Tableau de fragments déjà là
     28 * Découper les paragraphes d'un texte en fragments
     29 *
     30 * @param string $texte Texte à fragmenter
     31 * @param array $paras Tableau de fragments déjà là
    3032 * @return string[]      Tableau de fragments (paragraphes)
    31 **/
     33 **/
    3234function separer_paras($texte, $paras = array()) {
    33         if (!$paras) $paras = array();
     35        if (!$paras) {
     36                $paras = array();
     37        }
    3438        while (preg_match("/(\r\n?){2,}|\n{2,}/", $texte, $regs)) {
    35                 $p = strpos($texte, $regs[0]) + strlen($regs[0]);
     39                $p = strpos($texte, $regs[0])+strlen($regs[0]);
    3640                $paras[] = substr($texte, 0, $p);
    3741                $texte = substr($texte, $p);
    3842        }
    39         if ($texte) $paras[] = $texte;
     43        if ($texte) {
     44                $paras[] = $texte;
     45        }
     46
    4047        return $paras;
    4148}
     
    6471        // Attention a echapper $fragment, binaire potentiellement gz
    6572        return array(
    66                      'id_objet' => intval($id_objet),
    67                          'objet' => $objet,
    68                      'id_fragment' => intval($id_fragment),
    69                      'version_min' => intval($version_min),
    70                      'version_max' => intval($version_max),
    71                      'compress' => $compress,
    72                      'fragment' => $fragment);
     73                'id_objet' => intval($id_objet),
     74                'objet' => $objet,
     75                'id_fragment' => intval($id_fragment),
     76                'version_min' => intval($version_min),
     77                'version_max' => intval($version_max),
     78                'compress' => $compress,
     79                'fragment' => $fragment
     80        );
    7381}
    7482
     
    7684function envoi_replace_fragments($replaces) {
    7785        $desc = $GLOBALS['tables_auxiliaires']['spip_versions_fragments'];
    78         foreach($replaces as $r)
     86        foreach ($replaces as $r) {
    7987                sql_replace('spip_versions_fragments', $r, $desc);
     88        }
    8089}
    8190
     
    8493function envoi_delete_fragments($id_objet, $objet, $deletes) {
    8594        if (count($deletes)) {
    86                 sql_delete("spip_versions_fragments", "id_objet=".intval($id_objet)." AND objet=".sql_quote($objet)." AND ((".  join(") OR (", $deletes)."))");
     95                sql_delete("spip_versions_fragments",
     96                        "id_objet=" . intval($id_objet) . " AND objet=" . sql_quote($objet) . " AND ((" . join(") OR (",
     97                                $deletes) . "))");
    8798        }
    8899}
     
    100111                $nouveau = true;
    101112                // Recuperer la version la plus recente
    102                 $row = sql_fetsel("compress, fragment, version_min, version_max", "spip_versions_fragments", "id_objet=".intval($id_objet)." AND objet=".sql_quote($objet)." AND id_fragment=$id_fragment AND version_min<=$id_version", "", "version_min DESC", "1");
     113                $row = sql_fetsel("compress, fragment, version_min, version_max", "spip_versions_fragments",
     114                        "id_objet=" . intval($id_objet) . " AND objet=" . sql_quote($objet) . " AND id_fragment=$id_fragment AND version_min<=$id_version",
     115                        "", "version_min DESC", "1");
    103116
    104117                if ($row) {
    105118                        $fragment = $row['fragment'];
    106119                        $version_min = $row['version_min'];
    107                         if ($row['compress'] > 0) $fragment = @gzuncompress($fragment);
     120                        if ($row['compress'] > 0) {
     121                                $fragment = @gzuncompress($fragment);
     122                        }
    108123                        $fragment = unserialize($fragment);
    109124                        if (is_array($fragment)) {
     
    117132                        $fragment = array($id_version => $texte);
    118133                        $version_min = $id_version;
    119                 }
    120                 else {
     134                } else {
    121135                        // Ne pas dupliquer les fragments non modifies
    122136                        $modif = true;
    123                         for ($i = $id_version - 1; $i >= $version_min; $i--) {
     137                        for ($i = $id_version-1; $i >= $version_min; $i--) {
    124138                                if (isset($fragment[$i])) {
    125139                                        $modif = ($fragment[$i] != $texte);
     
    127141                                }
    128142                        }
    129                         if ($modif) $fragment[$id_version] = $texte;
     143                        if ($modif) {
     144                                $fragment[$id_version] = $texte;
     145                        }
    130146                }
    131147
    132148                // Preparer l'enregistrement du fragment
    133                 $replaces[] = replace_fragment($id_objet,$objet, $version_min, $id_version, $id_fragment, $fragment);
     149                $replaces[] = replace_fragment($id_objet, $objet, $version_min, $id_version, $id_fragment, $fragment);
    134150        }
    135151
     
    149165
    150166        // D'abord, vider les fragments inutiles
    151         sql_delete("spip_versions_fragments", "id_objet=".intval($id_objet)." AND objet=".sql_quote($objet)." AND version_min>=$version_debut AND version_max<=$version_fin");
     167        sql_delete("spip_versions_fragments",
     168                "id_objet=" . intval($id_objet) . " AND objet=" . sql_quote($objet) . " AND version_min>=$version_debut AND version_max<=$version_fin");
    152169
    153170        // Fragments chevauchant l'ensemble de l'intervalle, s'ils existent
    154         $result = sql_select("id_fragment, compress, fragment, version_min, version_max", "spip_versions_fragments", "id_objet=".intval($id_objet)." AND objet=".sql_quote($objet)." AND version_min<$version_debut AND version_max>$version_fin");
     171        $result = sql_select("id_fragment, compress, fragment, version_min, version_max", "spip_versions_fragments",
     172                "id_objet=" . intval($id_objet) . " AND objet=" . sql_quote($objet) . " AND version_min<$version_debut AND version_max>$version_fin");
    155173
    156174        while ($row = sql_fetch($result)) {
    157175                $id_fragment = $row['id_fragment'];
    158176                $fragment = $row['fragment'];
    159                 if ($row['compress'] > 0) $fragment = gzuncompress($fragment);
     177                if ($row['compress'] > 0) {
     178                        $fragment = gzuncompress($fragment);
     179                }
    160180                $fragment = unserialize($fragment);
    161181                for ($i = $version_fin; $i >= $version_debut; $i--) {
    162182                        if (isset($fragment[$i])) {
    163183                                // Recopier le dernier fragment si implicite
    164                                 if (!isset($fragment[$version_fin + 1]))
    165                                         $fragment[$version_fin + 1] = $fragment[$i];
     184                                if (!isset($fragment[$version_fin+1])) {
     185                                        $fragment[$version_fin+1] = $fragment[$i];
     186                                }
    166187                                unset($fragment[$i]);
    167188                        }
    168189                }
    169190
    170                 $replaces[] = replace_fragment($id_objet,$objet,
     191                $replaces[] = replace_fragment($id_objet, $objet,
    171192                        $row['version_min'], $row['version_max'], $id_fragment, $fragment);
    172193        }
    173194
    174195        // Fragments chevauchant le debut de l'intervalle, s'ils existent
    175         $result = sql_select("id_fragment, compress, fragment, version_min, version_max", "spip_versions_fragments", "id_objet=".intval($id_objet)." AND objet=".sql_quote($objet)." AND version_min<$version_debut AND version_max>=$version_debut AND version_max<=$version_fin");
     196        $result = sql_select("id_fragment, compress, fragment, version_min, version_max", "spip_versions_fragments",
     197                "id_objet=" . intval($id_objet) . " AND objet=" . sql_quote($objet) . " AND version_min<$version_debut AND version_max>=$version_debut AND version_max<=$version_fin");
    176198
    177199        $deb_fragment = array();
     
    181203                $version_min = $row['version_min'];
    182204                $version_max = $row['version_max'];
    183                 if ($row['compress'] > 0) $fragment = gzuncompress($fragment);
     205                if ($row['compress'] > 0) {
     206                        $fragment = gzuncompress($fragment);
     207                }
    184208                $fragment = unserialize($fragment);
    185209                for ($i = $version_debut; $i <= $version_max; $i++) {
    186                         if (isset($fragment[$i])) unset($fragment[$i]);
     210                        if (isset($fragment[$i])) {
     211                                unset($fragment[$i]);
     212                        }
    187213                }
    188214
     
    191217                // Ajuster l'intervalle des versions
    192218                $deb_version_min[$id_fragment] = $version_min;
    193                 $deb_version_max[$id_fragment] = $version_debut - 1;
     219                $deb_version_max[$id_fragment] = $version_debut-1;
    194220        }
    195221
    196222        // Fragments chevauchant la fin de l'intervalle, s'ils existent
    197         $result = sql_select("id_fragment, compress, fragment, version_min, version_max", "spip_versions_fragments", "id_objet=".intval($id_objet)." AND objet=".sql_quote($objet)." AND version_max>$version_fin AND version_min>=$version_debut AND version_min<=$version_fin");
     223        $result = sql_select("id_fragment, compress, fragment, version_min, version_max", "spip_versions_fragments",
     224                "id_objet=" . intval($id_objet) . " AND objet=" . sql_quote($objet) . " AND version_max>$version_fin AND version_min>=$version_debut AND version_min<=$version_fin");
    198225
    199226        while ($row = sql_fetch($result)) {
     
    202229                $version_min = $row['version_min'];
    203230                $version_max = $row['version_max'];
    204                 if ($row['compress'] > 0) $fragment = gzuncompress($fragment);
     231                if ($row['compress'] > 0) {
     232                        $fragment = gzuncompress($fragment);
     233                }
    205234                $fragment = unserialize($fragment);
    206235                for ($i = $version_fin; $i >= $version_min; $i--) {
    207236                        if (isset($fragment[$i])) {
    208237                                // Recopier le dernier fragment si implicite
    209                                 if (!isset($fragment[$version_fin + 1]))
    210                                         $fragment[$version_fin + 1] = $fragment[$i];
     238                                if (!isset($fragment[$version_fin+1])) {
     239                                        $fragment[$version_fin+1] = $fragment[$i];
     240                                }
    211241                                unset($fragment[$i]);
    212242                        }
     
    218248                $agreger = false;
    219249                if (isset($deb_fragment[$id_fragment])) {
    220                         $agreger = (count($deb_fragment[$id_fragment]) + count($fragment) <= $agregation_versions);
     250                        $agreger = (count($deb_fragment[$id_fragment])+count($fragment) <= $agregation_versions);
    221251                        if ($agreger) {
    222                                 $fragment = $deb_fragment[$id_fragment] + $fragment;
     252                                $fragment = $deb_fragment[$id_fragment]+$fragment;
    223253                                $version_min = $deb_version_min[$id_fragment];
    224                         }
    225                         else {
    226                                 $replaces[] = replace_fragment($id_objet,$objet,
     254                        } else {
     255                                $replaces[] = replace_fragment($id_objet, $objet,
    227256                                        $deb_version_min[$id_fragment], $deb_version_max[$id_fragment],
    228257                                        $id_fragment, $deb_fragment[$id_fragment]);
     
    232261                if (!$agreger) {
    233262                        // Ajuster l'intervalle des versions
    234                         $version_min = $version_fin + 1;
     263                        $version_min = $version_fin+1;
    235264                }
    236265                $replaces[] = replace_fragment($id_objet, $objet, $version_min, $version_max, $id_fragment, $fragment);
     
    240269        if (is_array($deb_fragment) && count($deb_fragment) > 0) {
    241270                foreach ($deb_fragment as $id_fragment => $fragment) {
    242                         $replaces[] = replace_fragment($id_objet,$objet,
     271                        $replaces[] = replace_fragment($id_objet, $objet,
    243272                                $deb_version_min[$id_fragment], $deb_version_max[$id_fragment],
    244273                                $id_fragment, $deb_fragment[$id_fragment]);
     
    247276
    248277        envoi_replace_fragments($replaces);
    249         envoi_delete_fragments($id_objet,$objet, $deletes);
     278        envoi_delete_fragments($id_objet, $objet, $deletes);
    250279}
    251280
     
    254283 * Récupérer les fragments d'un objet pour une version demandée
    255284 *
    256  * @param int $id_objet    Identifiant de l'objet
    257  * @param string $objet    Objet
    258  * @param int $id_version  Identifiant de la version
     285 * @param int $id_objet Identifiant de l'objet
     286 * @param string $objet Objet
     287 * @param int $id_version Identifiant de la version
    259288 * @return array           Couples id_fragment => texte
    260289 */
     
    262291        $fragments = array();
    263292
    264         if ($id_version == 0) return array();
     293        if ($id_version == 0) {
     294                return array();
     295        }
    265296
    266297        $result = sql_select(
    267298                "id_fragment, version_min, version_max, compress, fragment",
    268299                "spip_versions_fragments",
    269                 "id_objet=" . intval($id_objet) ." AND objet=".sql_quote($objet)
    270                         ." AND version_min<=$id_version AND version_max>=$id_version");
     300                "id_objet=" . intval($id_objet) . " AND objet=" . sql_quote($objet)
     301                . " AND version_min<=$id_version AND version_max>=$id_version");
    271302
    272303        while ($row = sql_fetch($result)) {
     
    275306                $fragment = $row['fragment'];
    276307                // si le fragment est compressé, tenter de le décompresser, sinon écrire une erreur
    277                 if ($row['compress'] > 0){
     308                if ($row['compress'] > 0) {
    278309                        $fragment_ = @gzuncompress($fragment);
    279                         if (strlen($fragment) && $fragment_===false){
     310                        if (strlen($fragment) && $fragment_ === false) {
    280311                                $fragment = serialize(array($row['version_max'] => "[" . _T('forum_titre_erreur') . $id_fragment . "]"));
    281                         }
    282                         else
    283                          $fragment = $fragment_;
     312                        } else {
     313                                $fragment = $fragment_;
     314                        }
    284315                }
    285316                // tenter dedésérialiser le fragment, sinon écrire une erreur
    286317                $fragment_ = unserialize($fragment);
    287                 if (strlen($fragment) && $fragment_===false){
    288                         $fragment=array($row['version_max']=>"["._T('forum_titre_erreur').$id_fragment."]");
    289                 }
    290                 else
    291                  $fragment = $fragment_;
     318                if (strlen($fragment) && $fragment_ === false) {
     319                        $fragment = array($row['version_max'] => "[" . _T('forum_titre_erreur') . $id_fragment . "]");
     320                } else {
     321                        $fragment = $fragment_;
     322                }
    292323                // on retrouve le fragment le plus près de notre version
    293324                for ($i = $id_version; $i >= $version_min; $i--) {
     
    299330                                ## la situation n'est pas meilleure ni pire qu'avant)
    300331                                if ($GLOBALS['meta']['charset'] == 'utf-8'
    301                                 AND include_spip('inc/charsets')
    302                                 AND !is_utf8($fragment[$i])) {
     332                                        AND include_spip('inc/charsets')
     333                                        AND !is_utf8($fragment[$i])
     334                                ) {
    303335                                        $fragment[$i] = importer_charset($fragment[$i], 'iso-8859-1');
    304336                                }
     
    310342                }
    311343        }
     344
    312345        return $fragments;
    313346}
     
    331364
    332365        // Nettoyage de la ponctuation pour faciliter l'appariement
    333         foreach($src as $key => $val) {
     366        foreach ($src as $key => $val) {
    334367                $t1[$key] = strval(preg_replace("/[[:punct:][:space:]]+/", " ", $val));
    335368        }
    336         foreach($dest as $key => $val) {
     369        foreach ($dest as $key => $val) {
    337370                $t2[$key] = strval(preg_replace("/[[:punct:][:space:]]+/", " ", $val));
    338371        }
    339372
    340373        // Premiere passe : chercher les correspondance exactes
    341         foreach($t1 as $key => $val) $md1[$key] = md5($val);
    342         foreach($t2 as $key => $val) $md2[md5($val)][$key] = $key;
    343         foreach($md1 as $key1 => $h) {
     374        foreach ($t1 as $key => $val) {
     375                $md1[$key] = md5($val);
     376        }
     377        foreach ($t2 as $key => $val) {
     378                $md2[md5($val)][$key] = $key;
     379        }
     380        foreach ($md1 as $key1 => $h) {
    344381                if (isset($md2[$h])) {
    345382                        $key2 = reset($md2[$h]);
     
    356393        if ($flou) {
    357394                // Deuxieme passe : recherche de correlation par test de compressibilite
    358                 foreach($t1 as $key => $val) {
     395                foreach ($t1 as $key => $val) {
    359396                        $l1[$key] = strlen(gzcompress($val));
    360397                }
    361                 foreach($t2 as $key => $val) {
     398                foreach ($t2 as $key => $val) {
    362399                        $l2[$key] = strlen(gzcompress($val));
    363400                }
    364                 foreach($t1 as $key1 => $s1) {
    365                         foreach($t2 as $key2 => $s2) {
    366                                 $r = strlen(gzcompress($s1.$s2));
    367                                 $taux = 1.0 * $r / ($l1[$key1] + $l2[$key2]);
     401                foreach ($t1 as $key1 => $s1) {
     402                        foreach ($t2 as $key2 => $s2) {
     403                                $r = strlen(gzcompress($s1 . $s2));
     404                                $taux = 1.0*$r/($l1[$key1]+$l2[$key2]);
    368405                                if (!isset($gz_min1[$key1]) || !$gz_min1[$key1] || $gz_min1[$key1] > $taux) {
    369406                                        $gz_min1[$key1] = $taux;
    370407                                        $gz_trans1[$key1] = $key2;
    371408                                }
    372                                 if (!isset($gz_min2[$key2]) ||!$gz_min2[$key2] || $gz_min2[$key2] > $taux) {
     409                                if (!isset($gz_min2[$key2]) || !$gz_min2[$key2] || $gz_min2[$key2] > $taux) {
    373410                                        $gz_min2[$key2] = $taux;
    374411                                        $gz_trans2[$key2] = $key1;
     
    379416                // Depouiller les resultats de la deuxieme passe :
    380417                // ne retenir que les correlations reciproques
    381                 foreach($gz_trans1 as $key1 => $key2) {
     418                foreach ($gz_trans1 as $key1 => $key2) {
    382419                        if ($gz_trans2[$key2] == $key1 && $gz_min1[$key1] < 0.9) {
    383420                                $src_dest[$key1] = $key2;
     
    395432 * Récupérer les champs d'un objet, pour une version demandée
    396433 *
    397  * @param int $id_objet    Identifiant de l'objet
    398  * @param string $objet    Objet
    399  * @param int $id_version  Identifiant de la version
     434 * @param int $id_objet Identifiant de l'objet
     435 * @param string $objet Objet
     436 * @param int $id_version Identifiant de la version
    400437 * @return array           Couples champs => textes
    401438 */
    402439function recuperer_version($id_objet, $objet, $id_version) {
    403440
    404         $champs = sql_getfetsel("champs", "spip_versions", "id_objet=" . intval($id_objet) . " AND objet=".sql_quote($objet)." AND id_version=" . intval($id_version));
    405         if (!$champs OR !is_array($champs = unserialize($champs)))
     441        $champs = sql_getfetsel("champs", "spip_versions",
     442                "id_objet=" . intval($id_objet) . " AND objet=" . sql_quote($objet) . " AND id_version=" . intval($id_version));
     443        if (!$champs OR !is_array($champs = unserialize($champs))) {
    406444                return array();
    407         else return reconstuire_version($champs,
    408                          recuperer_fragments($id_objet,$objet, $id_version));
     445        } else {
     446                return reconstuire_version($champs,
     447                        recuperer_fragments($id_objet, $objet, $id_version));
     448        }
    409449}
    410450
     
    415455 * retourne le texte de chaque champ.
    416456 *
    417  * @param array $champs     Couples (champ => liste d'id_fragment).
     457 * @param array $champs Couples (champ => liste d'id_fragment).
    418458 *                          La liste est de la forme "5 32 7 16 8 2"
    419  * @param array $fragments  Couples (id_fragment => texte)
    420  * @param array $res        Couples (champ => texte) déjà connus
     459 * @param array $fragments Couples (id_fragment => texte)
     460 * @param array $res Couples (champ => texte) déjà connus
    421461 * @return array            Couples (champ => texte)
    422462 */
     
    424464
    425465        static $msg;
    426         if (!$msg) $msg = _T('forum_titre_erreur');
     466        if (!$msg) {
     467                $msg = _T('forum_titre_erreur');
     468        }
    427469
    428470        foreach ($champs as $nom => $code) {
     
    437479                }
    438480        }
     481
    439482        return $res;
    440483}
     
    442485// http://code.spip.net/@supprimer_versions
    443486function supprimer_versions($id_objet, $objet, $version_min, $version_max) {
    444         sql_delete("spip_versions", "id_objet=".intval($id_objet)." AND objet=".sql_quote($objet)." AND id_version>=$version_min AND id_version<=$version_max");
    445 
    446         supprimer_fragments($id_objet,$objet, $version_min, $version_max);
     487        sql_delete("spip_versions",
     488                "id_objet=" . intval($id_objet) . " AND objet=" . sql_quote($objet) . " AND id_version>=$version_min AND id_version<=$version_max");
     489
     490        supprimer_fragments($id_objet, $objet, $version_min, $version_max);
    447491}
    448492
     
    459503 *     Auteur apportant les modifications. En absence (session anonyme), utilisera l'IP pour garder une trace.
    460504 * @return int
    461  *     id_version : identifiant de la version 
    462 **/
     505 *     id_version : identifiant de la version
     506 **/
    463507function ajouter_version($id_objet, $objet, $champs, $titre_version = "", $id_auteur = null) {
    464508        $paras = $paras_old = $paras_champ = $fragments = array();
     
    475519        // Detruire les tentatives d'archivages non abouties en 1 heure
    476520        sql_delete('spip_versions', array(
    477                 "id_objet=" . intval($id_objet),
    478                 "objet=" . sql_quote($objet),
    479                 "id_version <= 0",
    480                 "date < DATE_SUB(" . sql_quote(date('Y-m-d H:i:s')) . ", INTERVAL " . _INTERVALLE_REVISIONS . " SECOND)")
     521                        "id_objet=" . intval($id_objet),
     522                        "objet=" . sql_quote($objet),
     523                        "id_version <= 0",
     524                        "date < DATE_SUB(" . sql_quote(date('Y-m-d H:i:s')) . ", INTERVAL " . _INTERVALLE_REVISIONS . " SECOND)"
     525                )
    481526        );
    482527
     
    485530        // et un titre contenant en fait le moment de l'insertion
    486531        list($ms, $sec) = explode(' ', microtime());
    487         $date = $sec . substr($ms,1,4)-20; // SQL ne ramene que 4 chiffres significatifs apres la virgule pour 0.0+titre_version
    488         $datediff = ($sec - mktime(0,0,0,9,1,2007)) * 1000000 + substr($ms,2, strlen($ms)-4);
    489 
    490         $valeurs = array('id_objet' => $id_objet,
    491                          'objet' => $objet,
    492                          'id_version' => (0 - $datediff),
    493                          'date' => date('Y-m-d H:i:s'),
    494                          'id_auteur' => $str_auteur, //  varchar ici!
    495                          'titre_version' => $date);
    496         sql_insertq('spip_versions',  $valeurs);
     532        $date = $sec . substr($ms, 1,
     533                        4)-20; // SQL ne ramene que 4 chiffres significatifs apres la virgule pour 0.0+titre_version
     534        $datediff = ($sec-mktime(0, 0, 0, 9, 1, 2007))*1000000+substr($ms, 2, strlen($ms)-4);
     535
     536        $valeurs = array(
     537                'id_objet' => $id_objet,
     538                'objet' => $objet,
     539                'id_version' => (0-$datediff),
     540                'date' => date('Y-m-d H:i:s'),
     541                'id_auteur' => $str_auteur, //  varchar ici!
     542                'titre_version' => $date
     543        );
     544        sql_insertq('spip_versions', $valeurs);
    497545
    498546        // Eviter les validations entremelees en s'endormant s'il existe
     
    508556#         sleep(15);
    509557        $delai = $sec-10;
    510         while (sql_countsel('spip_versions', "id_objet=".intval($id_objet)." AND objet=".sql_quote($objet)." AND id_version < 0 AND 0.0+titre_version < $date AND titre_version<>".sql_quote($date,'','text')." AND 0.0+titre_version > $delai")) {
    511                 spip_log("version $objet $id_objet :insertion en cours avant $date ($delai)",'revisions');
     558        while (sql_countsel('spip_versions',
     559                "id_objet=" . intval($id_objet) . " AND objet=" . sql_quote($objet) . " AND id_version < 0 AND 0.0+titre_version < $date AND titre_version<>" . sql_quote($date,
     560                        '', 'text') . " AND 0.0+titre_version > $delai")) {
     561                spip_log("version $objet $id_objet :insertion en cours avant $date ($delai)", 'revisions');
    512562                sleep(1);
    513563                $delai++;
     
    515565#   sleep(15);  spip_log("sortie $sec $delai");
    516566        // Determiner le numero du prochain fragment
    517         $next = sql_fetsel("id_fragment", "spip_versions_fragments", "id_objet=".intval($id_objet)." AND objet=".sql_quote($objet), "", "id_fragment DESC", "1");
     567        $next = sql_fetsel("id_fragment", "spip_versions_fragments",
     568                "id_objet=" . intval($id_objet) . " AND objet=" . sql_quote($objet), "", "id_fragment DESC", "1");
    518569
    519570        $onlylock = '';
    520571
    521572        // Examiner la derniere version
    522         $row = sql_fetsel("id_version, champs, id_auteur, date, permanent", "spip_versions", "id_objet=".intval($id_objet)." AND objet=".sql_quote($objet)." AND id_version > 0", '', "id_version DESC", "1"); // le champ id_auteur est un varchar dans cette table
     573        $row = sql_fetsel("id_version, champs, id_auteur, date, permanent", "spip_versions",
     574                "id_objet=" . intval($id_objet) . " AND objet=" . sql_quote($objet) . " AND id_version > 0", '', "id_version DESC",
     575                "1"); // le champ id_auteur est un varchar dans cette table
    523576
    524577        if ($row) {
    525578                $id_version = $row['id_version'];
    526                 $paras_old = recuperer_fragments($id_objet,$objet, $id_version);
     579                $paras_old = recuperer_fragments($id_objet, $objet, $id_version);
    527580                $champs_old = $row['champs'];
    528                 if ($row['id_auteur']!= $str_auteur
    529                   OR $row['permanent']!='non'
    530                   OR strtotime($row['date']) < (time()-_INTERVALLE_REVISIONS)) {
     581                if ($row['id_auteur'] != $str_auteur
     582                        OR $row['permanent'] != 'non'
     583                        OR strtotime($row['date']) < (time()-_INTERVALLE_REVISIONS)
     584                ) {
    531585                        spip_log(strtotime($row['date']), 'revisions');
    532586                        spip_log(time(), 'revisions');
     
    540594                        $onlylock = 're';
    541595                }
    542         } else
     596        } else {
    543597                $id_version = 1;
    544 
    545         $next = !$next ? 1 : ($next['id_fragment'] + 1);
     598        }
     599
     600        $next = !$next ? 1 : ($next['id_fragment']+1);
    546601
    547602        // Generer les nouveaux fragments
     
    557612        if ($n) {
    558613                // Tables d'appariement dans les deux sens
    559                 list(,$trans) = apparier_paras($paras_old, $paras);
     614                list(, $trans) = apparier_paras($paras_old, $paras);
    560615                reset($champs);
    561616                $nom = '';
     
    563618                // eviter une notice PHP au tout debut de la boucle
    564619                // on ajoute ''=>0 en debut de tableau.
    565                 $paras_champ = array($nom=>0) + $paras_champ;
     620                $paras_champ = array($nom => 0)+$paras_champ;
    566621
    567622                for ($i = 0; $i < $n; $i++) {
    568                         while ($i >= $paras_champ[$nom]) list($nom, ) = each($champs);
     623                        while ($i >= $paras_champ[$nom]) {
     624                                list($nom,) = each($champs);
     625                        }
    569626                        // Lier au fragment existant si possible, sinon creer un nouveau fragment
    570627                        $id_fragment = isset($trans[$i]) ? $trans[$i] : $next++;
     
    580637
    581638        // Enregistrer les modifications
    582         ajouter_fragments($id_objet,$objet, $id_version, $fragments);
     639        ajouter_fragments($id_objet, $objet, $id_version, $fragments);
    583640
    584641        // Si l'insertion ne servait que de verrou,
     
    587644
    588645        if (!$onlylock) {
    589                 sql_updateq('spip_versions', array('id_version'=>$id_version, 'date'=>date('Y-m-d H:i:s'), 'champs'=> serialize($codes), 'permanent'=>$permanent, 'titre_version'=> $titre_version), "id_objet=".intval($id_objet)." AND objet=".sql_quote($objet)." AND id_version < 0 AND titre_version='$date'");
     646                sql_updateq('spip_versions', array(
     647                        'id_version' => $id_version,
     648                        'date' => date('Y-m-d H:i:s'),
     649                        'champs' => serialize($codes),
     650                        'permanent' => $permanent,
     651                        'titre_version' => $titre_version
     652                ),
     653                        "id_objet=" . intval($id_objet) . " AND objet=" . sql_quote($objet) . " AND id_version < 0 AND titre_version='$date'");
    590654        } else {
    591                 sql_updateq('spip_versions', array('date'=>date('Y-m-d H:i:s'), 'champs'=>serialize($codes), 'permanent'=>$permanent, 'titre_version'=> $titre_version), "id_objet=".intval($id_objet)." AND objet=".sql_quote($objet)." AND id_version=$id_version");
    592                 sql_delete("spip_versions", "id_objet=".intval($id_objet)." AND objet=".sql_quote($objet)." AND id_version < 0 AND titre_version ='$date'");
    593         }
    594         spip_log($onlylock . "memorise la version $id_version de l'objet $objet $id_objet $titre_version",'revisions');
     655                sql_updateq('spip_versions', array(
     656                        'date' => date('Y-m-d H:i:s'),
     657                        'champs' => serialize($codes),
     658                        'permanent' => $permanent,
     659                        'titre_version' => $titre_version
     660                ), "id_objet=" . intval($id_objet) . " AND objet=" . sql_quote($objet) . " AND id_version=$id_version");
     661                sql_delete("spip_versions",
     662                        "id_objet=" . intval($id_objet) . " AND objet=" . sql_quote($objet) . " AND id_version < 0 AND titre_version ='$date'");
     663        }
     664        spip_log($onlylock . "memorise la version $id_version de l'objet $objet $id_objet $titre_version", 'revisions');
    595665
    596666        return $id_version;
     
    604674        $span_diff = array();
    605675        if (preg_match_all(',<(/)?(span|div) (class|rem)="diff-[^>]*>,', $texte, $regs, PREG_SET_ORDER)) {
    606                 $regs = array_slice($regs,0,500); #limiter la casse s'il y en a trop
     676                $regs = array_slice($regs, 0, 500); #limiter la casse s'il y en a trop
    607677                foreach ($regs as $c => $reg) {
    608                         $texte = str_replace($reg[0], '@@@SPIP_DIFF'.$c.'@@@', $texte);
     678                        $texte = str_replace($reg[0], '@@@SPIP_DIFF' . $c . '@@@', $texte);
    609679                }
    610680        }
     
    639709                foreach ($area as $reg) {
    640710                        $remplace = preg_replace(',@@@SPIP_DIFF[0-9]+@@@,', '**', $reg[0]);
    641                         if ($remplace <> $reg[0])
     711                        if ($remplace <> $reg[0]) {
    642712                                $texte = str_replace($reg[0], $remplace, $texte);
     713                        }
    643714                }
    644715        }
    645716
    646717        // replacer les valeurs des <span> et <div> diff-
    647         if (is_array($regs))
    648         foreach ($regs as $c => $reg) {
    649                 $bal = (!$reg[1]) ? $reg[0] : "</$reg[2]>";
    650                 $texte = str_replace('@@@SPIP_DIFF'.$c.'@@@', $bal, $texte);
    651                 $GLOBALS['les_notes'] = str_replace('@@@SPIP_DIFF'.$c.'@@@', $bal, $GLOBALS['les_notes']);
     718        if (is_array($regs)) {
     719                foreach ($regs as $c => $reg) {
     720                        $bal = (!$reg[1]) ? $reg[0] : "</$reg[2]>";
     721                        $texte = str_replace('@@@SPIP_DIFF' . $c . '@@@', $bal, $texte);
     722                        $GLOBALS['les_notes'] = str_replace('@@@SPIP_DIFF' . $c . '@@@', $bal, $GLOBALS['les_notes']);
     723                }
    652724        }
    653725
     
    655727        // quand le dernier tag est ouvrant le refermer ...
    656728        $reg = end($regs);
    657         if (!$reg[1] AND $reg[2]) $texte.="</$reg[2]>";
     729        if (!$reg[1] AND $reg[2]) {
     730                $texte .= "</$reg[2]>";
     731        }
    658732
    659733        // et interdire_scripts !
     
    666740/**
    667741 * Liste les champs versionnés d'une table objet.
    668  * 
     742 *
    669743 * @param string $table
    670744 *     Nom complet de sa table sql. Exemple 'spip_articles'
     
    675749        $liste_objets_versionnees = is_array(unserialize($GLOBALS['meta']['objets_versions'])) ? unserialize($GLOBALS['meta']['objets_versions']) : array();
    676750
    677         if (!in_array($table,$liste_objets_versionnees))
     751        if (!in_array($table, $liste_objets_versionnees)) {
    678752                return array();
     753        }
    679754
    680755        include_spip('base/objets');
    681         if ($infos=lister_tables_objets_sql($table)
    682           AND isset($infos['champs_versionnes']))
     756        if ($infos = lister_tables_objets_sql($table)
     757                AND isset($infos['champs_versionnes'])
     758        ) {
    683759                return $infos['champs_versionnes'];
     760        }
    684761
    685762        return array();
     
    689766 * Lorsqu'un champ versionée est une jointure, récuperer tous les liens
    690767 * et les mettre sous forme de liste énumérée
    691  * 
     768 *
    692769 * @param string $objet
    693770 * @param string $id_objet
     
    695772 * @return string
    696773 */
    697 function recuperer_valeur_champ_jointure($objet, $id_objet, $jointure){
     774function recuperer_valeur_champ_jointure($objet, $id_objet, $jointure) {
    698775        $objet_joint = objet_type($jointure);
    699776        include_spip('action/editer_liens');
    700777        $v = array();
    701778        if (objet_associable($objet_joint)) {
    702                 $liens = objet_trouver_liens(array($objet_joint=>'*'),array($objet=>$id_objet));
    703                 foreach($liens as $l)
     779                $liens = objet_trouver_liens(array($objet_joint => '*'), array($objet => $id_objet));
     780                foreach ($liens as $l) {
    704781                        $v[] = $l[$objet_joint];
    705         }
    706         elseif(objet_associable($objet)) {
    707                 $liens = objet_trouver_liens(array($objet=>$id_objet),array($objet_joint=>'*'));
    708                 foreach($liens as $l)
     782                }
     783        } elseif (objet_associable($objet)) {
     784                $liens = objet_trouver_liens(array($objet => $id_objet), array($objet_joint => '*'));
     785                foreach ($liens as $l) {
    709786                        $v[] = $l[$objet];
     787                }
    710788        }
    711789        sort($v);
    712         return implode(",",$v);
     790
     791        return implode(",", $v);
    713792}
    714793
    715794/**
    716795 * Créer la première révision d'un objet si nécessaire
    717  * 
     796 *
    718797 * À faire notamment si on vient d'activer l'extension et qu'on fait une modif
    719798 * sur un objet qui était déjà en base, mais non versionné
     
    721800 * La fonction renvoie le numéro de la dernière version de l'objet,
    722801 * et 0 si pas de version pour cet objet
    723  * 
     802 *
    724803 * @param string $table
    725804 * @param string $objet
     
    729808 * @return int
    730809 */
    731 function verifier_premiere_revision($table, $objet, $id_objet, $champs = null, $id_auteur = 0){
     810function verifier_premiere_revision($table, $objet, $id_objet, $champs = null, $id_auteur = 0) {
    732811
    733812        $id_table_objet = id_table_objet($objet);
    734         if (!$champs)
     813        if (!$champs) {
    735814                $champs = liste_champs_versionnes($table);
    736         if (!$champs)
     815        }
     816        if (!$champs) {
    737817                return false;
    738 
    739         if (!$id_version = sql_getfetsel('id_version','spip_versions',"id_objet=".intval($id_objet)." AND objet=".sql_quote($objet),'','id_version DESC','0,1')) {
     818        }
     819
     820        if (!$id_version = sql_getfetsel('id_version', 'spip_versions',
     821                "id_objet=" . intval($id_objet) . " AND objet=" . sql_quote($objet), '', 'id_version DESC', '0,1')
     822        ) {
    740823                // recuperer toutes les valeurs actuelles des champs
    741824                // pour l'objet
    742                 $originaux = sql_fetsel("*", $table, "$id_table_objet=".intval($id_objet));
     825                $originaux = sql_fetsel("*", $table, "$id_table_objet=" . intval($id_objet));
    743826                $premiere = false;
    744827                $champs_originaux = array();
    745828
    746                 foreach($champs as $v){
    747                         if (isset($originaux[$v])){
     829                foreach ($champs as $v) {
     830                        if (isset($originaux[$v])) {
    748831                                $champs_originaux[$v] = $originaux[$v];
    749                         }
    750                         elseif (strncmp($v, 'jointure_', 9) == 0) {
    751                                 $champs_originaux[$v] = recuperer_valeur_champ_jointure($objet,$id_objet,substr($v,9));
     832                        } elseif (strncmp($v, 'jointure_', 9) == 0) {
     833                                $champs_originaux[$v] = recuperer_valeur_champ_jointure($objet, $id_objet, substr($v, 9));
    752834                        }
    753835                        if (isset($champs_originaux[$v]) AND isset($originaux[$v]) AND strlen($originaux[$v])) {
     
    759841                // il faut creer une premiere revision
    760842                if ($premiere) {
    761                         $trouver_table = charger_fonction('trouver_table','base');
     843                        $trouver_table = charger_fonction('trouver_table', 'base');
    762844                        $desc = $trouver_table($table);
    763845
     
    765847
    766848                        $date_modif = "";
    767                         foreach(array('date_modif','maj') as $d){
    768                                 if (!$date_modif AND isset($originaux[$d]) AND $t=strtotime($d))
     849                        foreach (array('date_modif', 'maj') as $d) {
     850                                if (!$date_modif AND isset($originaux[$d]) AND $t = strtotime($d)) {
    769851                                        $date_modif = date("Y-m-d H:i:s", $t-20);
     852                                }
    770853                        }
    771854                        if (!$date_modif
    772                           AND isset($desc['date'])
    773                           AND isset($originaux[$desc['date']])) {
     855                                AND isset($desc['date'])
     856                                AND isset($originaux[$desc['date']])
     857                        ) {
    774858                                $date_modif = $originaux[$desc['date']];
    775                         }
    776                         elseif (!$date_modif)
     859                        } elseif (!$date_modif) {
    777860                                $date_modif = date("Y-m-d H:i:s", time()-20);
    778                                
    779                         if ($id_version = ajouter_version($id_objet, $objet, $champs_originaux, _T('revisions:version_initiale'), $id_auteur))
    780                                 sql_updateq('spip_versions', array('date' => $date_modif), "id_objet=".intval($id_objet)." AND objet=".sql_quote($objet)." AND id_version=$id_version");
    781                 }
    782         }
     861                        }
     862
     863                        if ($id_version = ajouter_version($id_objet, $objet, $champs_originaux, _T('revisions:version_initiale'),
     864                                $id_auteur)
     865                        ) {
     866                                sql_updateq('spip_versions', array('date' => $date_modif),
     867                                        "id_objet=" . intval($id_objet) . " AND objet=" . sql_quote($objet) . " AND id_version=$id_version");
     868                        }
     869                }
     870        }
     871
    783872        return $id_version;
    784873}
     874
    785875?>
Note: See TracChangeset for help on using the changeset viewer.