[INFO] sur la normalisation des MODs

Forum de développements privés.

Modérateur: Equipe

Règles du forum
A lire impérativement sur notre page : Règlement

[INFO] sur la normalisation des MODs

Messagepar Dr DLP » 23 Oct 2003 à 23:42

Bon . Je vous préviens ça va être chiant :)
Je crée ce sujet pour deux raisons :
- la nouvelle politique de phpbb.com : extremiste à mon gout , mais fondée .
- un nouvel hébergeur gratuit : http://www.edeign.com/ dont la popularité est énorme , au moins autant que ses limitations .

Les mods diffusés se doivent d'être conforme à certaines règles pour fonctionner en toute circonstance . Je vais parler des deux points les plus importants ( pour nous ) .

* LA DBAL COMPLIANCE
Ce thème barbare représente le stantard des requêtes et des appels aux bases de données . C'est l'équivalent du WWW pour ce cas .
Cela permet aux utilisateurs ayant une autre base que mySQL de faire fonctionner tout de même leurs mods , et également sur les versions anciennes ( voire toutes crevées ) de PHP .
L'extrême majorité des utilisateurs ont une base mySQL et un PHP récent , c'est de moins le cas sur les hébergeurs actuels .
Cependant des hébergeurs payants fournissent des bases MSSQL , POSTGREL , etc ... Les petits hébergeurs gratuits , à l'architecture douteuse , proposent des versions béta ( voire alpha ) de produits et certains fonctions ne passent pas .
Ce n'est pas une minorité . La réaction de phpbb.com à ce sujet le prouve : ( http://www.phpbb.com/phpBB/viewtopic.php?t=137323 ) tous les développements de mod ne respectant pas ces conditions ont été arrêtés (...) .
Il n'est pas à l'ordre du jour de faire de même ( enfin j'espère , Tchock ne fais pas ça stp ) . Par contre , le problème se pose avec la validation des mods : les mods non conformes ne doivent plus être validés .
De même les développements effectués par les membres de l'équipe se doivent de se soumettre à ceci .

Qu'est ce que ça représente en pratique ?
Peu de choses véritablement . Beaucoup de mods sont DBAL compliants sans le savoir .
Cela se passe donc au niveau des appels à la db , et cela consiste à remplacer les appels basés sur mysql par des appels plus globaux .
Par exemple :
for( $i = 0; $i < mysql_num_rows($result)+1; $i++ )
doit être remplacé par
for( $i = 0; $i < $db->sql_numrows($result)+1; $i++ )
Cet exemple n'est pas pris au hasard : c'est une partie du mod Poudlard , que j'ai dû modifier de cette façon opur qu'il fonctionne sur edeign.com .
Comme vous pouvez le voir , la modification est légère et facile à facile .
Les tables de conversion peuvent être reconstituées en regardant le fichier db/mysql.php qui s'occupent de traduire les requêtes mySQL .


*Les variables globales et auto-globales
Qu'est ce que ce truc ?
Les variables autoglobales sont des petites merveilles qui ont l'excellente idée de se définir toutes seules . Ceci évite d'avoir à le faire .
Le problème est que dans deux cas elles ne le font pas :
- La version de PHP est antérieure à 4.1.0
- Register_globals est désactivé : cas le plus fréquent , effectué par les hébergeurs pour des raisons de sécurité ( voir plus loin ) , tels que encore , edeign.com .

Les fonctions concernéés sont :$HTTP_POST_VARS , $HTTP_GET_VARS , $HTTP_COOKIES_VAR et leurs dérivés ( ENV , FILES, REQUEST, SESSION ) .
En pratique et pour les mods simples ( i.e différents d'attachmod et de Hiérarchies ) , cela ne concerne que $HTTP_POST_VARS et $HTTP_GET_VARS , qui sont utilisés dans les formulaires .

Le mieux est de lire les explications de Ptirhiik : http://gilgraf.com/ggforum/viewtopic.ph ... sc&start=0


Ce sont à mon sens , deux points très très importants .
Il va donc falloir dans un premier temps mettre nos mods à jour .
Si vous avez des questions , je veux bien essayer d'y répondre , mais comme mes connaissances ne sont pas celles que je voudrais , dzmander à Ptirhiik est un gain de temps ( c'est d'ailleurs lui qui m'a expliqué tout ceci) .
J'espère que vous n'allez pas jouer les extrêmistes bornés :)
Avatar de l’utilisateur
Dr DLP
Floodeur universel
Floodeur universel
 
Messages: 8411
Enregistré le: 05 Mar 2003 à 23:49
Localisation: Var ( 83 )

Messagepar JPM » 24 Oct 2003 à 01:12

heu en synthèse, cela veut dire que l'on va devoir se passer de
$HTTP_POST_VARS et $HTTP_GET_VARS ? :? 8O
Mon silence est un prix, ma voix un erzat sonore
Avatar de l’utilisateur
JPM
Posteur habitué
Posteur habitué
 
Messages: 276
Enregistré le: 17 Mai 2003 à 06:22

Messagepar Dr DLP » 24 Oct 2003 à 01:27

Non , bien sûr que non !
Heureusement !
Il faut juste s'assurer que les fonctions sont récupérées dans le PHP .

EDIT : un exemple encore pris dans le mod poudlard .
Dans usercp_register , la valeur de la question est récupérée pour être utilisée en tant que chiffre .
Dans le tpl ça donne ça :
<tr>
<td class="row1" width="40%" align="left"><span class="gen"><b>{ANSWER3}</b></span></td>
<td class="row2" width="60%" align="left"><span class="gensmall"><input type="radio" name="poudquestion1" value="1" />{ANSWER4}<br /><input type="radio" name="poudquestion1" value="2" />{ANSWER5}<br /><input type="radio" name="poudquestion1" value="3" />{ANSWER6}<br /><input type="radio" name="poudquestion1" value="4" />{ANSWER7}</span></td>
</tr>


Pour récupérer la valeur de poudquestion1 , il suffit de taper $poudquestion1 . Mais ceci implique que poudquestion soit défini . Avec les variables autoglobales , cela se fait tout seul . Mais sur edeign.Com , comme regiuster_globals est désactivé , cela ne se fait pas .
Il faut donc aller chercher la valeur :
Code: Tout sélectionner
$poudquestion1 = isset($HTTP_POST_VARS['poudquestion1']); 

C'est tout !
Avatar de l’utilisateur
Dr DLP
Floodeur universel
Floodeur universel
 
Messages: 8411
Enregistré le: 05 Mar 2003 à 23:49
Localisation: Var ( 83 )

Messagepar JPM » 24 Oct 2003 à 01:46

ha oki, je vois mieux la chose :) ... faudra que je fasse gaffe dans les mods que je suis en train de faire 8O
Mon silence est un prix, ma voix un erzat sonore
Avatar de l’utilisateur
JPM
Posteur habitué
Posteur habitué
 
Messages: 276
Enregistré le: 17 Mai 2003 à 06:22

Messagepar jvgamers » 01 Nov 2003 à 18:08

Ok c est pas ca qui va m aider mais bon, on fera avec au pire je me planterais et on corrigera :D
Avatar de l’utilisateur
jvgamers
Maître-posteur
Maître-posteur
 
Messages: 462
Enregistré le: 28 Aoû 2003 à 22:07
Localisation: Rouen

Messagepar gendo » 02 Mar 2004 à 19:34

Voilà ca que je me suis fait :)
Si ca peut en aider certains :)
Code: Tout sélectionner
mysql_num_rows($query_id = 0) =  $db->sql_numrows($query_id)

mysql_affected_rows()  =  $db->sql_affectedrows()

mysql_num_fields($query_id = 0)  =  $db->sql_numfields($query_id)

mysql_field_name($query_id, $offset)  =  $db->sql_fieldname($offset, $query_id = 0)

mysql_field_type($query_id, $offset)  =  $db->sql_fieldtype($offset, $query_id = 0)

mysql_fetch_array($query_id, MYSQL_ASSOC)  =  $db->sql_fetchrow($query_id = 0)

mysql_data_seek($query_id, $rownum)  =  $db->sql_rowseek($rownum, $query_id = 0)

mysql_insert_id($this->db_connect_id)  =  $db->sql_nextid()

mysql_free_result($query_id)  =  $db->sql_freeresult($query_id = 0)


En rab créé par PHPBB on a :
Code: Tout sélectionner
sql_fetchfield()
sql_fetchrowset()
|--------------------------------------------------- Image ---------------------------------------------------|
| Utilisateurs d'internet explorer, je vous deteste......... | Une académie virtuelle? c'est par ICI | Mods phpBB |
| phpBBhacks :: base de données de mods | Denturax | Firefox | Vive Google... Et le délire... Et delirax !!!!!! |
+------------------------------------------------------------------------------------------------------------+
Avatar de l’utilisateur
gendo
Posteur habitué
Posteur habitué
 
Messages: 285
Enregistré le: 25 Fév 2004 à 21:30
Localisation: $userdata['user_interests']

Messagepar vash_the stampede » 28 Fév 2005 à 23:03

juste pour savoir si les mod sont deja comptible avec la version olympus de phpbb si non faudrait redefinir les norme si elle ont changer

ps je vais commencer a faire des mod pour la version olympus etje verrai bien si ca change
deboguer de mod...
non officiel ;)
vash_the stampede
Posteur habitué
Posteur habitué
 
Messages: 272
Enregistré le: 05 Nov 2004 à 22:12

Messagepar Melchior » 28 Fév 2005 à 23:46

Normalement aucun MOD ne sera possible d'installer sur Olympus, il faudrait tous les recodés un par un, chose normal sachant que phpBB v3.0 fera peau neuve au niveau de son code source :)

Melchior :wink:
Raoul Volfoni : Si on bricolait plus souvent, on aurait moins la tête aux bêtises.
Bernard Blier, les tontons flingueurs (1963)
Melchior
Dieu des floodeurs
Dieu des floodeurs
 
Messages: 5818
Enregistré le: 10 Fév 2003 à 11:20
Localisation: Paris, FRANCE


Retourner vers Développements privés

 


  • Articles en relation
    Réponses
    Vues
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité