[SPIP Zone] [Spip-zone-commit] r16214 - /_plugins_/_stable_/jeux/base/jeux_upgrade.php

Je crois qu'il faut remettre ecrire_metas() dans le code officiel de
la SVN, on va vraiment top s'emmerder là... par ailleurs concernant
ton patch sur crayons, c'est pas sympa de faire un patch à l'arrache
alors que je viens de publier une méthode pour faire des corrections
toutes belles :stuck_out_tongue:

Le 21/10/07, patfr@ifrance.com<patfr@ifrance.com> a écrit :

Author: patfr@ifrance.com
Date: Sun Oct 21 15:38:59 2007
New Revision: 16214

Log:
compatibilité avec la SVN

Modified:
    _plugins_/_stable_/jeux/base/jeux_upgrade.php

Modified: _plugins_/_stable_/jeux/base/jeux_upgrade.php

--- _plugins_/_stable_/jeux/base/jeux_upgrade.php (original)
+++ _plugins_/_stable_/jeux/base/jeux_upgrade.php Sun Oct 21 15:38:59 2007
@@ -1,4 +1,6 @@
<?
+
+if ($GLOBALS['spip_version_code']>=1.9300) @define('_SPIP19300', 1);
$GLOBALS['jeux_base_version'] = 0.12;

function jeux_install($install){
@@ -20,12 +22,14 @@
        spip_query("DROP TABLE jeux");
        spip_query("DROP TABLE jeux_resultats");
        effacer_meta('jeux_base_version');
- ecrire_metas();
+ if(!defined('_SPIP19300')) ecrire_metas();
}

function jeux_verifier_base(){
        // compatibilite SPIP 1.92
        $showtable = function_exists('sql_showtable')?'sql_showtable':'spip_abstract_showtable';
+ $fetch_array = function_exists('mysql_fetch_array')?'mysql_fetch_array':'spip_fetch_array';
+
        // version de la base de donnee
        $version_base = $GLOBALS['jeux_base_version'];
        $current_version = 0.0;
@@ -43,7 +47,7 @@
                                // ajout d'un nom par defaut aux jeux existants
                                $res = spip_query ("SELECT id_jeu FROM spip_jeux");
                                $sans = _T('jeux:sans_type');
- while ($row = spip_fetch_array($res))
+ while ($row = $fetch_array($res))
                                        spip_query("UPDATE spip_jeux SET nom='$sans' WHERE id_jeu=".$row['id_jeu']);
                        }
                        ecrire_meta('jeux_base_version', $current_version=0.10, 'non');
@@ -56,7 +60,7 @@
                                // ajout d'un titre par defaut aux jeux existants
                                $res = spip_query ("SELECT id_jeu FROM spip_jeux");
                                $sans = _T('jeux:sans_titre_prive');
- while ($row = spip_fetch_array($res))
+ while ($row = $fetch_array($res))
                                        spip_query("UPDATE spip_jeux SET titre='$sans' WHERE id_jeu=".$row['id_jeu']);
                        }
                        ecrire_meta('agenda_base_version', $current_version=$test_version, 'non');
@@ -71,7 +75,7 @@
                        ecrire_meta('agenda_base_version', $current_version=$test_version, 'non');
                }

- ecrire_metas();
+ if(!defined('_SPIP19300')) ecrire_metas();
        }
}

_______________________________________________
Spip-zone-commit@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone-commit

--
Fil

Fil a écrit :

Je crois qu'il faut remettre ecrire_metas() dans le code officiel de
la SVN, on va vraiment top s'emmerder là... par ailleurs concernant
ton patch sur crayons, c'est pas sympa de faire un patch à l'arrache
alors que je viens de publier une méthode pour faire des corrections
toutes belles :stuck_out_tongue:

compatible avec un seul moteur de base de données, qui plus est.

--
James

Fil a écrit :

concernant
ton patch sur crayons, c'est pas sympa de faire un patch à l'arrache
alors que je viens de publier une méthode pour faire des corrections
toutes belles :stuck_out_tongue:

Pardon, tu vx que j'annule ?
Je ne sais pas s'il faut garder une compatibilité en direct ?
Faut-il retirer le test suivant ?

if ($GLOBALS['spip_version_code']<1.9300) {
  function sql_fetch($res, $serveur=''){ return spip_fetch_array($res); }
}

Pat

James a écrit :

Fil a écrit :

Je crois qu'il faut remettre ecrire_metas() dans le code officiel de
la SVN, on va vraiment top s'emmerder là... par ailleurs concernant
ton patch sur crayons, c'est pas sympa de faire un patch à l'arrache
alors que je viens de publier une méthode pour faire des corrections
toutes belles :stuck_out_tongue:

compatible avec un seul moteur de base de données, qui plus est.

oui, j'avais déjà corrigé mon erreur

> concernant ton patch sur crayons, c'est pas sympa de faire un patch à l'arrache
> alors que je viens de publier une méthode pour faire des corrections
> toutes belles :stuck_out_tongue:
Pardon, tu vx que j'annule ?

euh ben non, je préférerais que tu améliores :stuck_out_tongue:
à partir du code de compat, de l'exemple et des docs que j'ai envoyés
hier soir, par exemple ?

Nicolas a eu la gentillesse de les recopier ici :

-- Fil

Fil a écrit :

concernant ton patch sur crayons, c'est pas sympa de faire un patch à l'arrache
alors que je viens de publier une méthode pour faire des corrections
toutes belles :stuck_out_tongue:

Pardon, tu vx que j'annule ?

euh ben non, je préférerais que tu améliores :stuck_out_tongue:
à partir du code de compat, de l'exemple et des docs que j'ai envoyés
hier soir, par exemple ?

Nicolas a eu la gentillesse de les recopier ici :
Compatibilité des plugins entre SPIP 1.9.2 et SPIP 1.9.3 - SPIP-Contrib

-- Fil

Ca veut dire que chaque plugin doit avoir sont fichier inc/compat ?
... ou j'ai rien compris ...
Le plugin autorité a hérité d'un fichier comme ça, mais ça fait de la redondance de code tout ca, non ?
j'avoue avoir du mal à y voir clair... peut-être paske c'est dimanche soir ! lol
Pat

Ca veut dire que chaque plugin doit avoir sont fichier inc/compat ?

oui s'il veut rester compatible 1.9.2 tout en étant codé avec des
fonctions modernes 1.9.3

Le plugin autorité a hérité d'un fichier comme ça, mais ça fait de la
redondance de code tout ca, non ?

eh oui, c'est naze...... mais à partir du moment où les fonctions
changent de nom, ou de nouvelles apparaissent, c'est la seule méthode
propre si on ne veut pas se trainer des boulets.

-- Fil

* Fil tapuscrivait, le 22/10/2007 00:04:

eh oui, c'est naze...... mais à partir du moment où les fonctions
changent de nom, ou de nouvelles apparaissent, c'est la seule méthode
propre si on ne veut pas se trainer des boulets.

C'est naze ou c'est propre ?

En gros, si j'ai bien compris :
- les vieux plugins n'ont besoin que de faire un include de vieillesdefs et ils marchent en 1.9.3 sans autre forme de procès
- mais les nouveaux plugins doivent faire des contorsions pour être retro-compatibles ?

Y'a pas autre choses ?
Au lieu de faire un plugin compat193, de faire un plugin commun retrocompat ? Parce que la redondance de code, ça risque ne pas être très encourageant...

--
RealET

RealET a écrit :

Y'a pas autre choses ?
Au lieu de faire un plugin compat193, de faire un plugin commun retrocompat ? Parce que la redondance de code, ça risque ne pas être très encourageant...

Pkoi ne pas mettre toutes ces fonctions rétro dans le core ?
Il faudrait un fichier unique inc/compat_defs.php (tout comme compat_autorite.php) qui recense tous les changements au fur et à mesure avec la fonction magique :

function compat_defs_dist() {
  $defs = array();

  // http://trac.rezo.net/trac/spip/changeset/9919
  if ($GLOBALS['spip_version_code'] < '1.9259')
  $defs['sql_fetch'] = '($res, $serveur=\'\') {
    return spip_fetch_array($res);
  }';

  // http://trac.rezo.net/trac/spip/changeset/???
  if ($GLOBALS['spip_version_code'] < '1.???')
  $defs['_q'] = '($arg_sql) {
    return spip_fetch_array($arg_sql);
  }';

etc, etc, etc, etc !

  return $defs;
}

Le plugins pourraient donc chercher les seules fonctions dont ils auraient besoin pour assurer une rétro-compatibilité, quelque soit la version de SPIP :

/*
  assurer le fonctionnement des nouvelles fonctions
  sql_fetch() et _q() depuis des versions anciennes de SPIP
*/
if ($f = charger_fonction('compat_def', 'inc'))
  $f(array('sql_fetch', '_q'));

Et tout ça, le temps que les plugins se modernisent...

Pat

> Y'a pas autre choses ?
> Au lieu de faire un plugin compat193, de faire un plugin commun
> retrocompat ? Parce que la redondance de code, ça risque ne pas être
> très encourageant...

Il suffit de faire un svn copy et de renommer deux fonctions, c'est
pas un drame tout de même.

Pkoi ne pas mettre toutes ces fonctions rétro dans le core ?

Tu veux dire, modifier le core des vieilles versions ? C'est un peu
contradictoire dans les termes...

-- Fil

Fil a écrit :

Y'a pas autre choses ?
Au lieu de faire un plugin compat193, de faire un plugin commun
retrocompat ? Parce que la redondance de code, ça risque ne pas être
très encourageant...

Il suffit de faire un svn copy et de renommer deux fonctions, c'est
pas un drame tout de même.

Pkoi ne pas mettre toutes ces fonctions rétro dans le core ?

Tu veux dire, modifier le core des vieilles versions ? C'est un peu
contradictoire dans les termes...

non, non, c'est juste de mettre dans SPIP un fichier inc/compat_defs.php qui serait appelé par les plugins qui veulent rester compatibles, plutot que d'en créer un pour chaque plugin, avec du code en double un peu partout.
Après c'est juste une suggestion, c'est effectivement pas du tout un drame de piocher soi-même les fonctions dont on a besoin.

Pat

>> Pkoi ne pas mettre toutes ces fonctions rétro dans le core ?
>
> Tu veux dire, modifier le core des vieilles versions ? C'est un peu
> contradictoire dans les termes...
>
non, non, c'est juste de mettre dans SPIP un fichier inc/compat_defs.php
qui serait appelé par les plugins qui veulent rester compatibles, plutot
que d'en créer un pour chaque plugin, avec du code en double un peu partout.
Après c'est juste une suggestion, c'est effectivement pas du tout un
drame de piocher soi-même les fonctions dont on a besoin.

C'est bien ce que je dis : c'est contradictoire car on mettrait ce
fichier dans une version (1.9.3 SVN) qui par définition n'a pas besoin
de ce fichier de compatibilité arrière. Le fichier de compatibilité
dans l'autre sens est bien dans la SVN, c'est inc/vieilles_defs

-- Fil