Source for file Category.php
Documentation is available at Category.php
/* vim: set expandtab tabstop=4 shiftwidth=4: */
// +----------------------------------------------------------------------+
// | MCMS: a PHP Content Management System for creating accessible sites. |
// | Copyright (C) 2005 Silvio Moioli |
// | This program is free software; you can redistribute it and/or modify |
// | it under the terms of the GNU General Public License as published by |
// | the Free Software Foundation; either version 2 of the License, or |
// | (at your option) any later version. |
// | This program is distributed in the hope that it will be useful, |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
// | GNU General Public License for more details. |
// | You should have received a copy of the GNU General Public License |
// | along with this program; if not, write to the Free Software |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 |
// +----------------------------------------------------------------------+
// | Authors: Silvio Moioli <silvio at moioli dot net> www.moioli.net |
// +----------------------------------------------------------------------+
* Interfaccia per la gestione delle categorie in cui sono divisi
* @author Silvio Moioli <silvio at moioli dot net>
/** Carica la classe base di MCMS per l'interfacciamento al Database */
require_once $_SERVER["DOCUMENT_ROOT"]. "/admin/lib/model/Engine.php";
* Carica la classe per gli articoli (Article)
require_once $_SERVER["DOCUMENT_ROOT"]. "/admin/lib/model/Article.php";
* Interfaccia per la gestione delle categorie in cui sono divisi
* Permette di utilizzare il database in modo trasparente: creare oggetti
* di questa classe e operare sugli attributi tramite gli appositi metodi
* modificherà automaticamente il database sottostante.
* @author Silvio Moioli <silvio at moioli dot net>
* @var int $ID ID del database sottostante per questa categoria.
* @var Engine il motore del database sottostante per questa categoria.
* Costruttore "di lettura" (costruisce una categoria da un record del
* database già esistente).
* Nota: non può essere creata una nuova categoria da qui, ma solo dal
* Factory Method nella classe Site.
* Per i costruttori "di scrittura", quindi, vedere la classe Site
* @param int $ID l'ID del database sottostante
* @param Engine $engine un motore per interagire con il database
* @return mixed la categoria se la costruzione è andata a buon fine,
* altrimenti un PEAR_Error
if (settype($ID, "integer") && $ID> 0){
$this->raiseError("Category: invalid ID: ". $ID);
* Ritorna l'ID di questa categoria.
* Solo le classi del package MCMS potrebbero avere bisogno di
* questo parametro, per le interrogazioni al Database.
* @return int l'ID del database sottostante
* Ritorna il motore sottostante a questa categoria.
* Solo le classi del package MCMS potrebbero avere bisogno di
* questo parametro, per le interrogazioni al Database.
* @return int l'ID del database sottostante
* Getter per il campo nome dalla tabella categorie.
* Ritorna un oggetto corrispondente al nome di questa categoria
* Permette di utilizzare il database in modo trasparente (è come se si
* usassero normali attributi di una classe).
* @return string il nome di questa categoria.
$thisDB = $thisEngine->getDB();
$thisID = $thisDB->escapeSimple($this->getID());
$res = $thisDB->getOne("SELECT `nome categoria` FROM `categorie`".
"WHERE `id categoria` = '$thisID' LIMIT 1;");
* Setter per il campo nome dalla tabella categorie.
* Cambia il nome di questa categoria.
* Permette di utilizzare il database in modo trasparente (è come se si
* usassero normali attributi di una classe).
* @param string $name l'nome a cui questa categoria appartiene.
* @return mixed true se l'operazione è andata a buon fine, altrimenti
$thisDB = $thisEngine->getDB();
$thisID = $thisDB->escapeSimple($this->getID());
$name = $thisDB->escapeSimple($name);
$thisDB->query("UPDATE `categorie` SET `nome categoria`='$name' ".
"WHERE `id categoria` = '$thisID';");
* Getter per il campo descrizione dalla tabella categorie.
* Ritorna una stringa corrispondente alla descrizione di questa categoria.
* Permette di utilizzare il database in modo trasparente (è come se si
* usassero normali attributi di una classe).
* @return string la descrizione di questa categoria.
$thisDB = $thisEngine->getDB();
$thisID = $thisDB->escapeSimple($this->getID());
$res = $thisDB->getOne("SELECT `descrizione categoria` FROM `categorie`".
"WHERE `id categoria` = '$thisID' LIMIT 1;");
* Setter per il campo descrizione dalla tabella categorie.
* Cambia la stringa corrispondente alla descrizione di questa categoria.
* Permette di utilizzare il database in modo trasparente (è come se si
* usassero normali attributi di una classe).
* @param string $description la descrizione di questa categoria.
* @return mixed true se l'operazione è andata a buon fine, altrimenti
$thisDB = $thisEngine->getDB();
$thisID = $this->getID();
$description = $thisDB->escapeSimple($description);
$thisDB->query("UPDATE `categorie` SET `descrizione categoria`='$description'".
"WHERE `id categoria` = '$thisID';");
* Getter per il campo id sito dalla tabella categorie.
* Ritorna un oggetto corrispondente al sito a cui questa categoria
* Permette di utilizzare il database in modo trasparente (è come se si
* usassero normali attributi di una classe).
* @return mixed un oggetto Site o un PEAR_ERROR
$thisDB = $thisEngine->getDB();
$thisID = $thisDB->escapeSimple($this->getID());
$id = $thisDB->getOne("SELECT `id sito` FROM `categorie`".
"WHERE `id categoria` = '$thisID' LIMIT 1;");
return new Site($id, $thisEngine);
* Ritorna l'autore di questa sezione (fondatore del sito in cui si trova).
* Ritorna un oggetto corrispondente all'autore principale di questo sito
* Permette di utilizzare il database in modo trasparente (è come se si
* usassero normali attributi di una classe).
* @return Author l'autore a cui questa pagina appartiene.
$thisDB = $thisEngine->getDB();
$thisID = $thisDB->escapeSimple($this->getID());
JOIN `pagine` ON `siti`.`id sito`=`pagine`.`id sito`
JOIN `homepages` ON `homepages`.`id pagina`=`pagine`.`id pagina`
JOIN `categorie` ON `categorie`.`id sito`=`siti`.`id sito`
WHERE `categorie`.`id categoria`='$thisID' LIMIT 1;");
return new Author($hpID, $thisEngine);
* Ritorna gli articoli di questa categoria.
* Ritorna un array contenente gli oggetti corrispondenti a tutti gli
* articoli contenuti in questo Database per questo sito in questa
* @return mixed un array contenente gli articoli in questo Database se
* l'operazione è andata a buon fine, altrimenti un DB_ERROR
$thisDB = $thisEngine->getDB();
$categoryID = $thisDB->escapeSimple($this->getID());
"SELECT `pagine`.`id pagina` FROM `pagine`,`articoli`
WHERE `pagine`.`id pagina`=`articoli`.`id pagina`
AND `articoli`.`id categoria`='$categoryID'
ORDER BY `pagine`.`data pagina` DESC;");
$articles[] = new Article($i, $thisEngine);
* Ritorna il numero di articoli di questa categoria.
* @return mixed un int se l'operazione è andata a buon fine,
$thisDB = $thisEngine->getDB();
$siteID = $thisDB->escapeSimple($thisSite->getID());
$categoryID = $thisDB->escapeSimple($this->getID());
$result = $thisDB->getOne(
"SELECT COUNT(`pagine`.`id pagina`) FROM `pagine`,`articoli`".
"WHERE `pagine`.`id pagina`=`articoli`.`id pagina` AND".
"`pagine`.`id sito`='$siteID' AND ".
"`articoli`.`id categoria`='$categoryID' ORDER BY ".
"`pagine`.`data pagina` DESC;");
|