PHPWorkGroup

Composants de cette interface


Les classes

Les classes PHP5 suivantes fournissent la logique métier de cette interface :

Source de la classe faq

<?php 




/**
 * Classe de gestion de la FAQ
 *
 */
class faq extends database {

    
/**
     * Table contenant les questions/réponses de la faq
     *
     * @var string
     */
    
protected $faqTable 'project_faq';

    
/**
     * Table contenant les catégories de la faq
     *
     * @var string
     */
    
protected $faqCatTable 'project_faq_cat';

    
/**
     * Constructeur de la classe
     *
     */
    
public function __construct() {
        
parent::__construct();
    }

    
/**
     * Liste les questions de la FAQ
     *
     * @param int $limit nombre de questions retournées
     * @return array
     */
    
public function listFAQ($limit false) {
        
$sql  'SELECT A.id AS aid,A.question AS question,A.response AS answer,B.id AS bid,B.name AS cat ';
        
$sql .= ' FROM '.$this->faqTable.' AS A LEFT JOIN '.$this->faqCatTable.' AS B ON A.cat = B.id ';
        
$sql .= " WHERE A.valide = '1' ";
        
$sql .= " ORDER BY bid,aid ";
        if(
$limit) {
            
$sql .= " LIMIT   " . (int)$limit;
        }
        
$r $this->conn->arrayQuery($sqlSQLITE_ASSOC);
        return 
$r;
    }

    
/**
     * Ajoute une question dans la FAQ
     *
     * @param int $cat id de la catégorie de la question
     * @param string $question la question
     * @param string $response la réponse
     * @param int $valide 0 ou 1 question validée ou non
     * @return void résultat de la requète
     */
    
public function addQuestion($cat$question$response=''$valide=0) {
        
$sql 'INSERT INTO '.$this->faqTable.'(question,response,cat,valide) ';
        
$sql .= 'VALUES (';
        
$sql .= '"'.$this->SQLescape($question).'" , ' ;
        
$sql .= '"'.$this->SQLescape($response).'" , ' ;
        
$sql .= '"'.$this->SQLescape($cat).'" , ' ;
        
$sql .= '"'.$this->SQLescape($valide).'" ' ;
        
$sql .= ')';
        
//echo $sql;
        
return $this->conn->query($sql);
    }

    
/**
     * Efface une question
     *
     * @param int $id ID de la question à supprimer
     * @return void résultat de la requète
     */
    
public function delQuestion($id) {
        
$sql "DELETE FROM ".$this->faqTable."WHERE id = '".$this->SQLescape($id)."' ";
        return 
$this->conn->query($sql);
    }

    
/**
     * Modifie une question/réponse
     *
     * @param int $id ID de l'entrée
     * @param string $question nouvelle question
     * @param string $response nouvelle réponse
     * @param int $valide nouvel état de la question/réponse
     */
    
public function updateQuestion($id,$question,$response,$valide) {

    }

    
/**
     * Valide une question/réponse
     *
     * @param int $id ID de la question/réponse
     * @return void Résultat de la requète
     */
    
public function validateQuestion($id) {
        
$sql "UPDATE ".$this->faqTable." SET valide = '1' WHERE id = '".$this->SQLescape($id)."' ";
        return 
$this->conn->query($sql);
    }

    
/**
     * Ajoute une catégorie
     *
     * @param string $name Nom de la catégorie
     * @param string $description Description de la catégorie
     * @param int $valide Etat de validité (non implémenté)
     * @return void Résultat de la requète
     */
    
public function addCat($name$description$valide=1) {
        
$sql  'INSERT INTO '.$this->faqCatTable.'(name,description) ';
        
$sql .= 'VALUES (';
        
$sql .= '"'.$this->SQLescape($name).'" , ' ;
        
$sql .= '"'.$this->SQLescape($description).'" ' ;
        
$sql .= ')';
        return 
$this->conn->query($sql);
    }

    
/**
     * Supprime une catégorie
     *
     * @param int $id ID de la catégorie
     * @return void Résultat de la requète
     */
    
public function delCat($id) {
        
$sql "DELETE FROM ".$this->faqCatTable." WHERE id = '".$this->SQLescape($id)."' ";
        return 
$this->conn->query($sql);
    }

    
/**
     * Modifie une catégorie
     *
     * @param int $id ID de la catégorie
     * @param string $name Nouveau nom de la catégorie
     * @param string $description Nouvelle description de la catégorie
     * @param int $valide Nouvel état de validité de la catégorie (non implémenté)
     * @return void Résultat de la requète
     */
    
public function updateCat($id,$name,$description,$valide=1) {
        
$sql  'UPDATE '.$this->faqCatTable;
        
$sql .= " SET name = '".$this->SQLescape($name)."' , ";
        
$sql .= " description = '".$this->SQLescape($description)."'  ";
        
$sql .= " WHERE id = '".$this->SQLescape($id)."' ";
        return 
$this->conn->query($sql);
    }

    
/**
     * Récupère les informations d'une catégorie
     *
     * @param int $id ID de la catégorie
     * @return array Résultats
     */
    
public function getCatInfos($id) {
        
$sql  'SELECT id, name, description FROM '.$this->faqCatTable;
        
$sql .= " WHERE id = '".$this->SQLescape($id)."' ";
        return 
$this->conn->arrayQuery($sqlSQLITE_ASSOC);
    }

    
/**
     * Liste les catégories
     *
     * @return array Résultat
     */
    
public function listCat() {
        
$sql 'SELECT id, name, description FROM '.$this->faqCatTable;
        return 
$this->conn->arrayQuery($sqlSQLITE_ASSOC);
    }

    
/**
     * Récupère les questions en attente de validation
     *
     * @return array Résultat
     */
    
public function getWaitingQuestions() {
        
$sql "SELECT id, question, response FROM ".$this->faqTable." WHERE valide = '0' ";
        return 
$this->conn->arrayQuery($sqlSQLITE_ASSOC);
    }

    
/**
     * Effectue une recherche dans la FAQ
     *
     * @param string $s la recherche
     * @return array Résultat
     */
    
public function searchFAQ($s) {
        
$sql  'SELECT question,response,name FROM '.$this->faqTable.' AS A';
        
$sql .= ' LEFT JOIN '.$this->faqCatTable.' AS B ON A.cat = B.id WHERE ';
        
$sql .= "question LIKE '%".$this->SQLescape($s)."%' ";
        
$sql .= "OR response LIKE '%".$this->SQLescape($s)."%' ";
        
$sql .= "OR name LIKE '%".$this->SQLescape($s)."%' ";
        return 
$this->conn->arrayQuery($sqlSQLITE_ASSOC);
    }

    
/**
     * Créé la table SQLite de la faq
     *
     * @return void Résultat de la requète
     */
    
public function createFaqTable() {
        
$sql 'CREATE TABLE '.$this->faqTable.' (
                id INTEGER  AUTOINCREMENT,
                question VARCHAR ,
                response VARCHAR ,
                cat INTEGER,
                valide INT ,
                PRIMARY KEY(id)
                )'
;
        return 
$this->conn->query($sql);
    }
    
    
/**
     * Créé la table SQLite des catégories de la faq
     *
     * @return void Résultat de la requète
     */
    
public function createFaqCatTable() {
        
$sql 'CREATE TABLE '.$this->faqCatTable.' (
                id INTEGER  AUTOINCREMENT,
                name VARCHAR ,
                description VARCHAR ,
                PRIMARY KEY(id)
                )'
;
        return 
$this->conn->query($sql);
    }

// end class
?>

Les tables SQLite

Cette interface utilise uniquement des bases de données SQLite, voici les tables utilisées :

CREATE TABLE project_users (
id INTEGER  AUTOINCREMENT,
user VARCHAR ,
email VARCHAR ,
firstname VARCHAR ,
lastname VARCHAR ,
passhash VARCHAR,
controlhash VARCHAR,
inscription DATETIME,
level INT ,
description TEXT,
PRIMARY KEY(id)
)
CREATE TABLE project_lost_pass (
id INTEGER  AUTOINCREMENT,
user INTEGER ,
controlhash VARCHAR,
modification DATETIME,
PRIMARY KEY(id)
)
CREATE TABLE pub (
id INTEGER  AUTOINCREMENT,
nom_site VARCHAR ,
url_site VARCHAR ,
description_site VARCHAR,
contact_site VARCHAR,
url_banniere VARCHAR,
url_logo VARCHAR,
date_debut DATETIME,
date_fin DATETIME,
affichages INT,
limite_affichages INT,
valide INT ,
PRIMARY KEY(id)
)
CREATE TABLE project_faq (
id INTEGER  AUTOINCREMENT,
question VARCHAR ,
response VARCHAR ,
cat INTEGER,
valide INT ,
PRIMARY KEY(id)
)
CREATE TABLE project_faq_cat (
id INTEGER  AUTOINCREMENT,
name VARCHAR ,
description VARCHAR ,
PRIMARY KEY(id)
)
CREATE TABLE project_files (
id INTEGER  AUTOINCREMENT,
user VARCHAR ,
file VARCHAR ,
directory VARCHAR,
add_date DATETIME,
hash VARCHAR,
valide INT ,
PRIMARY KEY(id)
)
CREATE TABLE old_project_files (
id INTEGER  AUTOINCREMENT,
user VARCHAR ,
file VARCHAR ,
directory VARCHAR,
add_date DATETIME,
del_date DATETIME,
hash VARCHAR,
PRIMARY KEY(id)
)
CREATE TABLE project_wall (
id INTEGER  AUTOINCREMENT,
name VARCHAR ,
add_date DATETIME,
description VARCHAR,
code TEXT,
valide INT ,
PRIMARY KEY(id)
)

Autres

 

Warning: SQLiteDatabase::arrayQuery() [sqlitedatabase.arrayquery]: no such table: pub in /home/hosted/associations/phpworkgroup.org/ftp/www/composants/pub.class.php on line 74
Bannière publicitaire