MyBB.support, le portail francophone de MyBB
[CODAGE] Créer un nouveau sujet par script - Version imprimable

+- MyBB.support, le portail francophone de MyBB (https://mybb.fr)
+-- Forum : MyBB.fr (https://mybb.fr/forum-1.html)
+--- Forum : Tutoriels (https://mybb.fr/forum-19.html)
+--- Sujet : [CODAGE] Créer un nouveau sujet par script (/thread-4166.html)



[CODAGE] Créer un nouveau sujet par script - valentin45000 - 19-05-2011

OBJECTIF

Bonjour,
Notre objectif dans se tutoriel va être de créer un sujet sur son forum à partir d'un script. Peut importe sa localisation sur le FTP.
Et comme je suis sadique nous allons mettre se script à l’extérieur de dossier du forum, vous verrez que en fait ça n'a pas beaucoup d'importance Wink

ARCHITECTURE DE DÉPART

Pour notre architecture nous allons imaginez que nous avons ceci :
Code :
images/
css/
forum/
  | _ index.php
  | _ global.php
  | _ etc ...

index.php
test.php

Voilà rien de bien méchant, notez que les dossier images/ et css/ ne nous serviront pas, je les est juste mis pour mieux monter une architecture basique.
En réalité nous allons avoir besoin que d'un seul fichier => test.php, bien entendu vous l'appelez comme vous voulez Wink

CODAGE

Bon cette fois ci on y va Big Grin
Donc nous allons ouvrir notre fichier, ici test.php et nous allons devoir dans un premier temps inclure et initialiser MyBB. Pour cela c'est assez simple :
Code PHP :
<?php
define
('IN_MYBB'1);
require (
'forum/global.php');
session_start(); 
On défini la constante IN_MYBB, on importe le script global.php du forum et on lance les sessions. Maintenant on va de voir inclure également se qu'il faut pour pouvoir poster un sujet :
Code PHP :
require_once "forum/inc/datahandlers/post.php";
$poster = new PostDataHandler("insert");
$poster->action "thread"
Donc la fonction require_once() c'est la même chose que require() sauf que si c'est déjà inclus on ne l'inclus pas une deuxième fois.
Alors la pour la suite si vous ne connaissez pas la POO vous allez être un peut perdu Big Grin
On créer une variable $poster et on initialise PostDataHandler() puis sur la dernière ligne on indique que l'action est de poster un nouveau sujet.
Bon maintenant on va voir un array qui contient toutes les infos :
Code PHP :
$nouveau_sujet = array(
    
"fid" => 00,
    
"subject" => 'Test',
    
"icon" => -1,
    
"uid" => 4,
    
"username" => "Information",
    
"message" => 'Vous pouvez laisser vos commentaires ici.',
    
"ipaddress" => '',
    
"posthash" => '',
    
"savedraft" => 0,
); 
Ça peut paraître un peut gros comme ça mais pas d'inquiétude on va décortiqué tout ça Wink
Bon on créer la variable $nouveau_sujet qui contient un tableau, pas besoin de s'étendre plus la dessus.
Alors le fid est s'en doute le plus dur, en fait c'est l'id du forum dans lequel va être posté le sujet. Et l'a vous allez me dire "Ok c'est bien beau mais comment on peut connaître l'id ?".

TROUVER L'ID

C'est pas bien dur il vous suffit de vous rendre sur le forum en question de regarder l'URL elle va ressembler à :
Citation :http://localhost/mybb/forumdisplay.php?fid=5
Regarder à la fin "fid=5", vous vous devez sûrement avoir un autre chiffre que 5. et bien le chiffre après fid= c'est votre id, donc ici c'est 5 on reprend donc notre code :

RETOUR AU CODE

Code PHP :
$nouveau_sujet = array(
    
"fid" => 5,
    
"subject" => 'Test',
    
"icon" => -1,
    
"uid" => 4,
    
"username" => "Information",
    
"message" => 'Vous pouvez laisser vos commentaires ici.',
    
"ipaddress" => '',
    
"posthash" => '',
    
"savedraft" => 0,
); 
Voilà on est à jour.

Deuxième ligne c'est le titre de notre sujet.
Troisième ligne c'est si on veut une icone ici non donc "-1".
Uid c'est l'id de la personne qui poste le message pour le connaître rendez-vous sur le profil du membre et dans l'url prenez que se qu'il y a derrière uid=
Citation :http://localhost/mybb/member.php?action=profile&uid=4
Si vous ne voulez pas que se soit un membre mais par exemple un robot entrez "-1".
Ensuite username c'est le pseudo qui s’affichera.
Le message c'est le message.
ipaddress et posthash n'y touchez pas, sauf si vous voulez qu'une IP s'affiche en particulier.
Et ensuite savedraft c'est si le message doit être sauvegarder sur le membre qui à le uid entré.

Vous savez quoi on va ajouter à deuxième tableau Tongue
Non mais moins gros Wink
Code PHP :
$nouveau_sujet['options'] = array(
    
"signature" => 'yes',
    
"emailnotify" => 'no',
    
"disablesmilies" => 'no'
); 

Là si vous comprenez un minimum l'anglais c'est bon.
Signature c'est si on active la signature, emailnotify c'est si on active la notification par email et disablesmilies c'est si on désactive les smiley.
YES = OUI / NO = NON

Encore une ligne !
En fait si on écrit pas la ligne suivante tout se qu'on viens fa ire sert à rien, sur la suivante vous n'aurez rien à modifier, ça va juste écrire le sujet avec tout se qu'on lui a indiqué.
Code PHP :
$poster->set_data($nouveau_sujet); 

BONUS : VÉRIFIER L'ÉTAT

Ensuite on peut vérifier si un problème c'est passer pour cela on fait une condition :
Code PHP :
if($poster->validate_thread()){
    echo 
"Tout c'est bien passé !";
} else {
    echo 
"Un problème est survenue !";


Bon est bien voilà Smile
Bonne chance.
Valentin.


RE: [CODAGE] Créer un nouveau sujet par script - Alexandre - 19-05-2011

Merci bien !


 Utilitaire de traduction fourni par Regentronique