Source for file News.php
Documentation is available at News.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 notizie 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 le pagine (Page)
require_once $_SERVER["DOCUMENT_ROOT"]. "/admin/lib/model/Page.php";
* Interfaccia per la gestione delle notizie 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>
//Attributi ereditati: $ID e $engine
* Costruttore "di lettura" (costruisce una notizia da un record del
* database già esistente).
* Nota: non può essere creata una nuova notizia 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 notizia se la costruzione è andata a buon fine, altrimenti
function News($ID, $engine)
$this->Page($ID, $engine);
* Getter per il campo Fonte dalla tabella Notizia.
* Ritorna una stringa con l'URL della principale fonte da cui è tratta
* questa notizia. Permette di utilizzare il fontebase in modo
* trasparente (è come se si usassero normali attributi di una classe).
* @return mixed una stringa con l'URL se l'operazione è andata a buon fine,
* NULL se la notizia non ha fonte (interna al sito), altrimenti
* un DB_ERROR in caso di errore
$thisDB = $thisEngine->getDB();
$thisID = $thisDB->escapeSimple($this->getID());
$res = $thisDB->getOne("SELECT `url fonte notizia` FROM `notizie`".
"WHERE `id pagina` = '$thisID' LIMIT 1;");
* Setter per il campo Fonte dalla tabella Notizia.
* Cambia l'oggetto corrispondente alla fonte di ultima modifica di
* questa notizia. Permette di utilizzare il fontebase in modo
* trasparente (è come se si usassero normali attributi di una classe).
* @param string $source l'URL della fonte primaria di questa notizia o
* @return mixed true se l'operazione è andata a buon fine, altrimenti
$thisDB = $thisEngine->getDB();
$thisID = $thisDB->escapeSimple($this->getID());
$source = $thisDB->escapeSimple($thisDB->escapeSimple($source));
$thisDB->query("UPDATE `notizie` SET `url fonte notizia`='$source'".
"WHERE `id pagina` = '$thisID';");
* Getter per gli articoli correlati a questa notizia.
* Ritorna un array contenente gli articoli correlati a questa notizia.
* @return mixed un array di Article se l'operazione è andata a
* buon fine o un DB_ERROR in caso di errore
$thisDB = $thisEngine->getDB();
$newsID = $thisDB->escapeSimple($this->getID());
$sql = "SELECT `id articolo` FROM `articoli correlati notizia` WHERE".
"`id notizia` ='$newsID';";
$articleIDs = $thisDB->getCol($sql);
//Creo l'array degli oggetti a partire dagli IDs
foreach ($articleIDs as $i) {
$articles[] = new Article($i, $thisEngine);
* Ritorna il numero degli articoli correlati a questa notizia.
* @return mixed un int se l'operazione è andata a
* buon fine o un DB_ERROR in caso di errore
$thisDB = $thisEngine->getDB();
$newsID = $thisDB->escapeSimple($this->getID());
$sql = "SELECT COUNT(`id articolo`) FROM `articoli correlati notizia` WHERE".
"`id notizia` ='$newsID';";
$result = $thisDB->getCol($sql);
* Setter per gli articoli correlati a questa notizia.
* Cambia gli articoli correlati a questa notizia con un insieme di altri.
* @param array $articles i nuovi articoli correlati
* @return mixed true se l'operazione è andata a buon fine o un DB_ERROR
foreach ($articles as $i){
* Aggiunge un nuovo articolo correlato.
* L'articolo specificato viene catalogato come correlato a questa notizia.
* @param Article $article l'articolo da aggiungere
* @return mixed true se l'operazione è andata a buon fine o un
* DB_ERROR in caso di errore
$thisDB = $thisEngine->getDB();
$articleID = $thisDB->escapeSimple($article->getID());
$pageID = $thisDB->escapeSimple($this->getID());
$sql = "INSERT INTO `articoli correlati notizia` (`id notizia`,".
"`id articolo` ) VALUES ( '$pageID', '$articleID' );";
* Rimuove un articolo correlato.
* Rimuove la correlazione fra questa notizia e l'articolo passato.
* @param Article $article l'articolo da rimuovere
* @return mixed true se l'operazione è andata a buon fine o un
* DB_ERROR in caso di errore
$thisDB = $thisEngine->getDB();
$articleID = $thisDB->escapeSimple($article->getID());
$pageID = $thisDB->escapeSimple($this->getID());
$sql = "DELETE FROM `articoli correlati notizia` WHERE".
"(`id notizia`='$pageID' AND `id articolo`='$articleID');";
* Rimuove tutti gli articoli correlati.
* Rimuove tutti gli articoli correlati a questa notizia.
* @return mixed true se l'operazione è andata a buon fine o un
* DB_ERROR in caso di errore
$thisDB = $thisEngine->getDB();
$newsID = $thisDB->escapeSimple($this->getID());
$sql = "DELETE FROM `articoli correlati notizia` WHERE".
"`id notizia`='$newsID'";
|