Documentation PHPBoost 3

Les Notes et le systeme de notations.

Le systeme de notation fait appel a une partie du kernel qui s'occupe en grande partie de tout.
Pour avoir acces au notation il y a des pré-requis :

Avoir une table propre au module, qui a des chan spécifique au notes.
Avoir chargé la classe qui permet son utilisation.
Un fichier xmlhttprequest.php

La table sql :



Les chan requis dans la table du module sont la pour stocker la note actuelle, et le nombre de note.
on a donc les chan suivant dans notre table :
Code SQL :
  `users_note` text,
  `nbrnote` mediumint(9) NOT NULL DEFAULT '0',
  `note` FLOAT NOT NULL DEFAULT '0',

users_note contiens les info sur les 'noteurs'
nbrnote contiens le nombre de note.
note contiens la note actuelle.

Lors de la recherche d'info en sql il faudra penser a lire les chan si on interroge que certain chan et non pas tous.

Appel de la class et utilisation de l'objet :



Par exemple dans le module galerie :
A la ligne 507 on a la présence des chan note et nbrnote dans une interrogation sql.
(le g. est due a une jointure de table et donc a une indexation des chan par table)
Code PHP :
$result = $Sql->query_while("SELECT g.id, g.idcat, g.name, g.user_id, g.views, g.width, g.height, g.weight, g.timestamp, g.note, g.nbrnote, g.nbr_com, g.aprob, m.login
FROM " . PREFIX . "gallery g

A ce niveau des condition on déjà règlementer l'accès a ces lignes.

A la ligne 572 on a un import de la classe (ou outils) et mise en variable de $Note.
Code PHP :
//Affichage notation.
import('content/note');
$Note = new Note('gallery', $info_pics['id'], url('.php?cat=' . $info_pics['idcat'] . '&id=' . $info_pics['id'], '-' . $info_pics['idcat'] . '-' . $info_pics['id'] . '.php'), $CONFIG_GALLERY['note_max'], '', NOTE_DISPLAY_NOTE);

On met en variable le résultat d'une fonctions.
Utilisant une class et des objets on dois déclaré une nouvelle instance Note, d'ou le new.
l'utilisation de new (re)met l'instance a zero, donc attention au condition et au boucle.

La fonction Note a besoin de l'identifiant du module, de l'id, l'url, le nombre max de la notation, le dossier du module, un nombre optionnel (en général '0')
Dans le bout de code les renseignement sont tirée de la db.
Code PHP :
Note($script,$idprov,$script_path,$notation_scale,$module_folder='',$options=0)

$script : nom de la table du module ou sont les chan db (un controle est fait avec le config.ini)
$idprov : id de reference
$script_path : la page d'appel du script
$notation_scale : le nombre d'étoile, l'échèle de notation..
$module_folder : le dossier du module. sert a retrouver le config.ini. et surtout : la section "note="
$option : les option d'affichage

Les options : Le plus courrant est "NOTE_DISPLAY_NOTE".
On a le choix entre : 'NOTE_DISPLAY_NOTE' , 'NOTE_NODISPLAY_NBRNOTES' , 'NOTE_DISPLAY_BLOCK'.
qui sont défini a la volée a l'import de la class.


$module_folder est optionnel, le module ayant en principe le même nom que le dossier si il n'y ai pas c'est prévu de prendre le nom de module pour le nom du dossier.

A la ligne 597 on passe dans le template le formulaire comme pour l'éditeur :
Code PHP :
'KERNEL_NOTATION' => $activ_note ? $Note->display_form() : '',

Ici il a une condition a la mise en variable. Dans la galerie une option a été faite pour activé ou non les note.
ce n'est que un chan db supplémentaire SET a 0 ou 1.

xmlhttprequest.php



Pour récupérer les info du formulaire le JS embarquer dans le système de note fait appel a : xmlhttprequest.php.
Ce fichier dois être placer dans la racine de votre module.
Celui de la galerie, a d'autre fonctionnalité. Il inclus d'autre possibilité.
Une forme minimale, épurée et fonctionnelle donne ceci :
Code PHP :
 
<?php
/* xmlhttprequest.php */
define('NO_SESSION_LOCATION', true); //Permet de ne pas mettre jour la page dans la session.
require_once('../kernel/begin.php');
require_once('../kernel/header_no_display.php');
// ici le nom de votre module
$module ='monmodule' ; // monmodule est le nom de votre module ?
 
//Notation.
if (!empty($_GET['note']){
$id = retrieve(POST, 'id', 0);
$note = retrieve(POST, 'note', 0);
//Initialisation  de la class de gestion des fichiers.
import('content/note');
$Note = new Note($module, $id, '', 10, '', NOTE_DISPLAY_NOTE);
if (!empty($note) && !empty($id))
echo $Note->add($note); //Ajout de la note.
}
?> 

:!: Attention de modifier le nom de votre module dans la variable $module
Cette page a été vue 6869 fois