/*
2005 m. Darius Žitkevičius el. paštas: skystis@splius.lt
Šis scenarijus yra laisvas. Jūs galite ji platinti ir/arba modifikuoti
remdamiesi Free Software Foundation paskelbtomis GNU Bendrosios
Viešosios licencijos sąlygomis: 2 licencijos versija, arba (savo
nuožiūra) bet kuria vėlesne versija.
Šis scenarijus platinamas su viltimi, kad jis bus naudingas, bet BE JOKIOS
GARANTIJOS; be jokios numanomos PERKAMUMO ar TINKAMUMO KONKRETIEMS
TIKSLAMS garantijos. Žiūrėkite GNU Bendrąją Viešąją licenciją norėdami
sužinoti smulkmenas (http://www.gnu.org/licenses/gpl.html arba
neoficialų vertimą į lietuvių kalbą http://www.akl.lt/ak/?doc=gpl.html).
----------------------------------------------------------------------------
Klasė skaito naujienas iš žemiau nurodyto formato bylos
# Komentaras
[naujiena] #naujienos pradžia
data #naujienos data
antraštė #naujienos antraštė
Naujienos
tekstas
gali būti
#komentaras
keliose eilutėse
[naujiena] #sekanti naujiena
*/
class Naujienos{
var $failoVieta="share/naujienos.txt";
var $titulinis=5;
var $FAILAS;
var $klaida;
function Naujienos(){
if (file_exists($this->failoVieta)){
$this->FAILAS = @fopen($this->failoVieta, "r");
if ($this->FAILAS == false) {
$this->klaida=2;//Nepavyko atidaryti skaitymui
}
$this->klaida = 0;//Failas atidarytas
}else{
$this->klaida=1;//Failo nėra
}
}
function gaukTitulini(){
$i=0;
if($this->iSekancia()){;
while ($i < $this->titulinis){
$naujiena=$this->skaitykEinama();
if ($naujiena==false)
break;
else
$masyvas[]=$naujiena;
$i++;
}
return $masyvas;
}
else
return false;
}
function gaukVisas(){
if($this->iSekancia()){;
while (!feof($this->FAILAS)){
$naujiena=$this->skaitykEinama();
if ($naujiena==false)
break;
else
$masyvas[]=$naujiena;
}
return $masyvas;
}
else
return false;
}
function gauk($nr){//paimti nurodytą naujieną
if ($this->iNurodyta($nr))
return $this->skaitykEinama();
else
return false;//Tokios naujienos nėra
}
function skaitykEinama(){
if (feof($this->FAILAS))
return false;
$data=$this->gaukEilute();
if ($data==false)
return false;
$antraste=$this->gaukEilute();
if ($antraste==false)
return false;
$tekstas="";
while (!feof($this->FAILAS)){
$eilute = $this->gaukEilute();
if (preg_match("/^\s*\[naujiena\]/i", $eilute))
break;
else
$tekstas = $tekstas.$eilute;
}
return array("data" => $data, "antraste" => $antraste, "tekstas" => $tekstas);
}
function iNurodyta($nr){
$i = 0;
$rasta = false;
rewind($this->FAILAS);
do{
if ($this->iSekancia())
$i++;
else
return false;//Failo pabaiga, naujiena nerasta
}while($i<=$nr);
return true;
}
function iSekancia(){
while(!feof($this->FAILAS)){
$eilute = fgets($this->FAILAS, 4096);
if (preg_match("/^\s*\[naujiena\]/i", $eilute))
return true;
}
return false; //Jei grąžina false, reiškia sekančios naujienos nėra.
}
function gaukKlaida(){
return $this->klaida;
}
function gaukEilute(){
while (!feof($this->FAILAS)){
$eilute=fgets($this->FAILAS, 4096);
if (!preg_match('/^\s*$/', $eilute) and !preg_match('/^\s*\#/', $eilute))
return $eilute;
}
return false; //Failo galas, eilučių nebėra
}
}//class Naujienos
?>
$naujienos = new Naujienos;
$klaida = $naujienos->gaukKlaida();
if (!$klaida){
$naujiena = $naujienos->gauk($_GET['id']);
if ($naujiena==false){
?>
Tokios naujienos nėra
Tokios naujienos svetainėje nėra. Tai gali būti svetainės klaida. Jei manote kad tai klaida, praneškite apie ją svetainės administratoriui e. paštu: skystis@splius.lt
Ačiū
}
else{
echo "
$naujiena[antraste]
\n";
echo "
$naujiena[data] $naujiena[tekstas]";
}
}
elseif ($klaida == 1){echo "
Atsiprašome, įvyko klaida skaitant naujienas. Klaidos kodas: 1
";}
elseif ($klaida == 2){echo "
Atsiprašome, įvyko klaida skaitant naujienas. Klaidos kodas: 2
";}
?>