Source for file Page.php
Documentation is available at Page.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 pagine del sito.
* @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/Site.php";
* Carica la classe per gli autori (Author)
require_once $_SERVER["DOCUMENT_ROOT"]. "/admin/lib/model/Author.php";
* Interfaccia per la gestione delle pagine del sito.
* 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>
/* abstract */ class Page extends PEAR
* @var int $ID ID del database sottostante per questa pagina.
* @var Engine il motore del database sottostante per questa pagina.
* Costruttore "di lettura" (costruisce una pagina da un record del
* database già esistente).
* Nota: non può essere creata una nuova pagina 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 pagina se la costruzione è andata a buon fine, altrimenti
function Page($ID, $engine)
if (settype($ID, "integer") && $ID> 0){
$this->raiseError("Page: invalid ID: ". $ID);
$this->raiseError("Page: null engine");
* Ritorna l'ID di questa pagina.
* Solo le classi che ereditano da questa potrebbero avere bisogno di
* questo parametro, per le interrogazioni al Database.
* @return int l'ID del database sottostante
* Ritorna il motore di questa pagina.
* Solo le classi di MCMS potrebbero avere bisogno di
* questo parametro, per le interrogazioni al Database.
* @return Engine il motore del database sottostante
* Getter per il campo Sito dalla tabella Pagina.
* Ritorna un oggetto corrispondente al sito di appartenenza di questa
* pagina. Permette di utilizzare il database in modo trasparente (è come
* se si usassero normali attributi di una classe).
* @return Site il sito a cui questa pagina appartiene.
$thisDB = $thisEngine->getDB();
$thisID = $thisDB->escapeSimple($this->getID());
$hpID = $thisDB->getOne("SELECT `id sito` FROM `pagine`".
"WHERE `id pagina` = '$thisID' LIMIT 1;");
return new Site($hpID, $thisEngine);
* Setter per il campo Sito dalla tabella Pagina.
* Cambia l'oggetto corrispondente al sito di appartenenza di questa
* pagina. Permette di utilizzare il database in modo trasparente (è come
* se si usassero normali attributi di una classe).
* @param Site $site il sito a cui questa pagina appartiene.
* @return mixed true se la connessione è andata a buon fine, altrimenti
$thisDB = $thisEngine->getDB();
$thisID = $thisDB->escapeSimple($this->getID());
$newSiteID = $thisDB->escapeSimple($site->getID());
$thisDB->query("UPDATE `pagine` SET `id categoria`='$newSiteID'".
"WHERE `id pagina` = '$thisID';");
* Getter per il campo Autore dalla tabella Pagina.
* Ritorna un oggetto corrispondente all'autore principale di questa pagina
* 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());
$hpID = $thisDB->getOne("SELECT `id autore` FROM `pagine`".
"WHERE `id pagina` = '$thisID' LIMIT 1;");
return new Author($hpID, $thisEngine);
* Setter per il campo Autore dalla tabella Pagina.
* Cambia l'oggetto corrispondente all'autore principale di questa pagina
* Permette di utilizzare il database in modo trasparente (è come se si
* usassero normali attributi di una classe).
* @param Author $author l'autore a cui questa pagina appartiene.
* @return mixed true se la connessione è andata a buon fine, altrimenti
$thisDB = $thisEngine->getDB();
$thisID = $thisDB->escapeSimple($this->getID());
$newAuthorID = $thisDB->escapeSimple($author->getID());
$thisDB->query("UPDATE `pagine` SET `id autore`='$newAuthorID'".
"WHERE `id pagina` = '$thisID';");
* Getter per il campo Contenuto dalla tabella Pagina.
* Ritorna una stringa corrispondente al contenuto (HTML) della pagina
* Permette di utilizzare il database in modo trasparente (è come se si
* usassero normali attributi di una classe).
* @return string il contenuto HTML di questa pagina appartiene.
$thisDB = $thisEngine->getDB();
$thisID = $thisDB->escapeSimple($this->getID());
$res = $thisDB->getOne("SELECT `contenuto pagina` FROM `pagine`".
"WHERE `id pagina` = '$thisID' LIMIT 1;");
* Setter per il campo Contenuto dalla tabella Pagina.
* Cambia la stringa corrispondente al contenuto (HTML) della pagina
* Permette di utilizzare il database in modo trasparente (è come se si
* usassero normali attributi di una classe).
* @param string $contents il contenuto HTML di questa pagina.
* @return mixed true se la connessione è andata a buon fine, altrimenti
$thisDB = $thisEngine->getDB();
$thisID = $thisDB->escapeSimple($this->getID());
$contents = $thisDB->escapeSimple($contents);
$thisDB->query("UPDATE `pagine` SET `contenuto pagina`='$contents'".
"WHERE `id pagina` = '$thisID';");
* Getter per il campo Data dalla tabella Pagina.
* Ritorna un oggetto corrispondente alla data di ultima modifica di
* questa pagina. Permette di utilizzare il database in modo
* trasparente (è come se si usassero normali attributi di una classe).
* @return PEAR::Date l'ora dell'ultima modifica di questa pagina.
$thisDB = $thisEngine->getDB();
$thisID = $thisDB->escapeSimple($this->getID());
$res = $thisDB->getOne("SELECT `data pagina` FROM `pagine`".
"WHERE `id pagina` = '$thisID' LIMIT 1;");
* Setter per il campo Data dalla tabella Pagina.
* Cambia l'oggetto corrispondente alla data di ultima modifica di
* questa pagina. Permette di utilizzare il database in modo
* trasparente (è come se si usassero normali attributi di una classe).
* @param PEAR::Date $date l'ora dell'ultima modifica di questa pagina.
* @return mixed true se l'operazione è andata a buon fine, altrimenti
$thisDB = $thisEngine->getDB();
$thisID = $thisDB->escapeSimple($this->getID());
$escapedDate = $thisDB->escapeSimple($date);
$thisDB->query("UPDATE `pagine` SET `data pagina`='$escapedDate'".
"WHERE `id pagina` = '$thisID';");
* Getter per il campo Titolo dalla tabella Pagina.
* Ritorna una stringa corrispondente al titolo di questa pagina
* Permette di utilizzare il database in modo trasparente (è come se si
* usassero normali attributi di una classe).
* @return string il titolo di questa pagina.
$thisDB = $thisEngine->getDB();
$thisID = $thisDB->escapeSimple($this->getID());
$res = $thisDB->getOne("SELECT `titolo pagina` FROM `pagine`".
"WHERE `id pagina` = '$thisID' LIMIT 1;");
* Setter per il campo Titolo dalla tabella Pagina.
* Cambia la stringa corrispondente al titolo di questa pagina
* Permette di utilizzare il database in modo trasparente (è come se si
* usassero normali attributi di una classe).
* @param string $title il titolo di questa pagina.
* @return mixed true se la connessione è andata a buon fine, altrimenti
$thisDB = $thisEngine->getDB();
$thisID = $thisDB->escapeSimple($this->getID());
$title = $thisDB->escapeSimple($thisDB->escapeSimple($title));
$thisDB->query("UPDATE `pagine` SET `titolo pagina`='$title'".
"WHERE `id pagina` = '$thisID';");
* Getter per il campo ParoleChiave dalla tabella Pagina.
* Ritorna una stringa con tutte le parole chiave di questa pagina.
* L'elenco deve separato da virgole e spazi (per esempio "case, amici").
* Permette di utilizzare il database in modo trasparente (è come se si
* usassero normali attributi di una classe).
* @return string l'elenco separato da virgole e spazi
* (per esempio "case, amici") delle parole chiave della pagina.
$thisDB = $thisEngine->getDB();
$thisID = $thisDB->escapeSimple($this->getID());
$res = $thisDB->getOne("SELECT `parole chiave pagina` FROM `pagine`".
"WHERE `id pagina` = '$thisID' LIMIT 1;");
* Setter per il campo ParoleChiave dalla tabella Pagina.
* Cambia la stringa con tutte le parole chiave di questa pagina.
* L'elenco deve separato da virgole e spazi (per esempio "case, amici").
* Permette di utilizzare il database in modo trasparente (è come se si
* usassero normali attributi di una classe).
* @param string $keywords l'elenco separato da virgole e spazi
* (per esempio "case, amici") delle parole chiave della pagina.
* @return mixed true se la connessione è andata a buon fine, altrimenti
$thisDB = $thisEngine->getDB();
$thisID = $thisDB->escapeSimple($this->getID());
$keywords = $thisDB->escapeSimple($keywords);
$thisDB->query("UPDATE `pagine` SET `parole chiave pagina`='$keywords'".
"WHERE `id pagina` = '$thisID';");
|