Acest script poate sa afiseze in oricare pagina din site, generata cu PHP, ultimile subiecte de pe un Forum, subiecte pe care le preia din pagina XML (Atom 1.0) generasta de forumul respectiv, PHPBB sau MyBB.
Acel forum trebuie sa aibe functionala si activata aplicatia de generare a paginilor XML pentru fluxurile Atom /RSS.
Scriptul preia datele din pagina XML de la adresa mentionata in el (la variabila $file_xml) si le parseaza (parcurge) retinand de la fiecare subiect: titlul, data, adresa URL si o parte din continutul subiectului.
Numarul de subiecte returnate si numarul de cuvinte retinut din fiecare continut pot fi usor modificate in codul php.

Acest script e facut sa functioneze pentru forumurile PHPBB sau MyBB care genereaza fluxuri Atom ca sa fie citite de surse externe, dar poate fi relativ usor modificat ca sa afiseze datele din fluxuri RSS 2.0 sau alte forumuri cu modul de generare pagini .xml. Trebuie doar modficate numele tagurilor din variabila Array "$tags_xml" comform cu cele folosite in pagina .xml citita.

- Pentru MyBB folositi feed-ul Atom 1.0 feed.

Mod de instalare

      1. Copiati codul de mai jos intr-un fisier PHP pe serverul dv. (de ex. cu denumirea "s_forum.php"), in acelasi director in care se afla si fisierul .php in care doriti sa-l includeti. Sau puteti descarca fisierul de la link-ul Download de sus-dreapta.
      2. Modificati valoarea variabilei "$file_xml" cu adresa paginii de flux folosita de forumul dv.
      3. In fisierul in care includeti scriptul, in locul unde vreti sa apara afisate ultimile subiecte, adaugati urmatorul cod:
                        <?php include('s_forum.php'); ?>

Codul scriptului

<?php
// Script shows latest subjects on forum (tested with PHPBB 3.2)
// From: https://coursesweb.net/php-mysql

//HERE add the URL of the RSS feed of your phpbb forum
$file_xml ='https://coursesweb.net/forum/app.php/feed/news';

//to test MyBB (uses atom 1.0 URL)
// $file_xml ='https://community.mybb.com/syndication.php?type=atom1.0'; 

$nr_subj =10; //nr. subjects to display
$nr_cuv =21; //maximum number of words from content to display

//tag names to read from XML
$tags_xml = array('baza'=>'entry', 'titlu'=>'title', 'url'=>'id', 'content'=>'content', 'data'=>'updated');

//gets and parses the XML file
//returns HTML code with latest subjects
function get_last_forum($file_xml) {
 GLOBAL $nr_subj, $nr_cuv, $tags_xml;
 $re ='';

 //get page data with cUrl
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, $file_xml);
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6');
 $pg_dat = curl_exec($ch);

 if(!curl_errno($ch) && is_string($pg_dat) && strlen($pg_dat)>11 && ($obj = @simplexml_load_string($pg_dat, null, LIBXML_NOCDATA))){
 $pg_dat ='';
 $baza = $obj->{$tags_xml['baza']};
 $nr_subj = min($nr_subj, count($baza));

 for($i=0; $i<$nr_subj; $i++){
 $titlu = $baza[$i]->{$tags_xml['titlu']};
 $url = str_ireplace(['http://'. $_SERVER['SERVER_NAME'] .'/', '&'], ['', '&amp;'], $baza[$i]->{$tags_xml['url']});
 $content =strip_tags(preg_replace('#\<p\>(.*?)\</p\>#i', '', $baza[$i]->{$tags_xml['content']})); //delete <p> content and tags

 //gets and formats subjects date
 $data = $baza[$i]->{$tags_xml['data']}; 
 $data = date_parse($data);
 $data = $data['day'].'-'.$data['month'].'-'.$data['year'];

 //keep specified nr. words
 if(preg_match('/([^ ]*[ ]{0,1}){1,'.$nr_cuv.'}/i', $content, $m)) $content = $m[0] .' ..';

 $link ='<a href="'. $url. '" title="'. $titlu .'">'. $titlu. '</a> <sup>'. $data.'</sup>';
 $re .='<li>'. $link.'<div>'. $content.'</li>';
 }
 if($re !='') $re ='<ol>'.$re.'</ol>';
 }

 return $re;
}

echo get_last_forum($file_xml); //outputs the result


- Scriptul este gratuit, prin urmare nu se acorda suport, dar daca aveti intrebari legate de el, puteti posta pe Forum.

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Care tag defineste zona de click intr-o harta creata dintr-o imagine?
<map> <img> <area>
<img src="image.jpg" usemap="#map1">
<map name="map1">
  <area shape="rect" coords="9, 120, 56, 149" href="#">
  <area shape="rect" coords="100, 200, 156, 249" href="#">
</map>
Ce proprietate CSS indica ce sa se intample cand continutul unui element depaseste dimensiunile lui?
display overflow position
#id {
  overflow: auto;
}
Clic pe evenimentul care este declansat cand mouse-ul e deasupra unui obiect.
onclick onmouseover onmouseout
document.getElementById("id").onmouseover = function(){
  document.write("Sa ai Viata Buna");
}
Indicati variabila PHP ce contine datele adaugate in adresa URL, dupa caracterul "?".
$_SESSION $_GET $_POST
if(isset($_GET["id"])) {
  echo $_GET["id"];
}
Clic pe pronumele reflexiv care e potrivit in propozitia: "Marc is the boy ... won the prize".
who which whoever
Marc is the boy who won the prize.
- Marc e baiatul care a castigat premiul.
Clic pe pronumele reflexiv care e potrivit in propozitia: "Voy a ver al pintor de ... les hablé ayer".
que quien cuyo
Voy a ver al pintor de quien les hablé ayer.
- Ma duc sa vad pictorul despre care ti-am vorbit ieri.
Script afisare ultimile subiecte de pe forum

Last accessed pages

  1. Zilele saptamanii - Lunile anului - Anotimpurile - Engleza (10611)
  2. Verbe frazale din limba Engleza (15272)
  3. Jokes - Glume, Bancuri, Humor (3661)
  4. Zilele saptamanii, Lunile si Anotimpuri - Exercitii incepatori (3195)
  5. Proverbe, expresii si zicatori (5908)

Popular pages this month

  1. Prezentul simplu si continuu - Present Tense Simple and Continuous (3644)
  2. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (3243)
  3. Gramatica limbii engleze - Prezentare Generala (2719)
  4. Prezent perfect si Prezent perfect continuu - Present perfect and Continuous (2361)
  5. Trecutul simplu si continuu - Past Tense Simple and Continuous (1955)