PHPWorkGroup

Composants de cette interface


Les classes

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

Source de la classe wall

<?php 


/**
 * Gestion du wall
 *
 * @author fab
 * @version 0.3
 * @since 2006-02-12
 */
class wall extends database {

    
/**
     * Table contenant les wall
     *
     * @var string
     */
    
protected $wallTable 'project_wall';

    
/**
     * Dernier wall ajouté
     *
     * @var int
     */
    
public $lastWall false;

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

    
/**
     * Vérifie les données POST
     *
     * @return bool
     */
    
public function verifPOST() {
        if(empty(
$_POST['description']) || empty($_POST['code'])) {
            return 
false;
        } else {
            return 
true;
        }
    }

    
/**
     * Récupère un wall selon son ID
     *
     * @param int $id ID du wall
     * @return array Résultat
     */
    
public function getWallByID($id) {
        
$id $this->SQLescape($id);
        
$sql "SELECT id,add_date,name,description,code FROM $this->wallTable WHERE id = $id ";
        return 
$this->conn->arrayQuery($sqlSQLITE_ASSOC);
    }

    
/**
     * Récupère les derniers walls proposés
     *
     * @param int $limit Nombre de résultats retournés
     * @return array Résultats
     */
    
public function getLastWalls($limit=5) {
        
$sql "SELECT id,add_date,name,description,code FROM $this->wallTable ORDER BY id DESC LIMIT $limit";
        return 
$this->conn->arrayQuery($sqlSQLITE_ASSOC);
    }

    
/**
     * Sauvegarde un wall
     *
     * @param string $description description du wall
     * @param string $code code source
     * @param string $name posteur
     * @return int ID inséré
     */
    
public function saveWallToDB($description,$code,$name='') {
        
$date date('Y-m-d H:i:s');
        
$sql " INSERT INTO $this->wallTable (add_date,name,description,code)
         VALUES ('$date', '"
.$this->SQLescape($name)."', 
         '"
.$this->SQLescape($description)."', '".$this->SQLescape($code)."') ";
        
$r $this->conn->query($sql);
        return 
$this->lastWall $this->conn->lastInsertRowid();
    }
    
    
/**
     * Construie le code html pour l'affichage d'un wall
     *
     * @param int $id ID du wall
     * @param bool $ln avec ou sans les numéros de ligne
     * @return string HTML
     */
    
public function displayWall($id$ln=true) {
        
$ww $this->getWallByID($id);
        if(!isset(
$ww[0])) {
            return 
'<p class="form_error">Le wall demandé n\'éxiste pas.</p>';
        }
        
        
$h = new highlight();
        
$h->loadString($ww[0]['code']);
        
$r '<h3>Wall N° '.htmlspecialchars($id).'</h3>';
        
$r .= '<div style="margin:1em;">';
        if(
$ln) {
            
$r .= '<a href="/wall-'.htmlspecialchars($id).'-nln.html#wall" title="">Afficher sans les numéros de ligne</a>';
        } else {
            
$r .= '<a href="/wall-'.htmlspecialchars($id).'.html#wall" title="">Afficher avec les numéros de ligne</a>';
        }
        
$r .= '</div>';
        
$r .= '<div class="walldescription">
        &lt;!-- <strong>Description du problème</strong> : <br/><br/>
        '
.nl2br(htmlentities($ww[0]['description'])).'
        <br/><br/>--&gt;</div>'
;
        
$r .= '<div class="code">';
        if(
$ln) {
            
$r .= $h->toList();
        } else {
            
$r .= $h->toHtml();
        }
        
$r .= '</div>';
        return 
$r;
    }

}

?>

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

 
Bannière publicitaire