* @license http://opensource.org/licenses/gpl-license.php GNU General Public License */ /** * Contiene funzioni condivise tra il forum e il core di FlatNuke */ include_once("shared.php"); /** * Incrementa il contatore delle visite di una news * * Incrementa di una unita' il contatore delle visite di una news. * * @author Simone Vellei * * @param string $news Nome assoluto del file della news da elaborare */ function add_read($news){ //se sono amministratore non incremento if (is_admin()) return; $news = getparam($news,PAR_NULL,SAN_FLAT); $lockfile = "news/$news.xml"; // check file existance if(!file_exists($lockfile)) { OpenTable(); print("
"._NORESULT."
"); CloseTable(); return; } $sem = lock($lockfile); $string = get_file($lockfile); $reads = get_xml_element("fn:reads",$string); //solo se non sono amministratore $reads += 1; $string = ereg_replace(".*","$reads",$string); fnwrite($lockfile, $string, "w", array("nonull")); unlock($sem); } /** * Visualizza il dettaglio di una news * * Stampa a video il dettaglio di una news compreso di titolo, intestazione, * corpo e commenti. * * @author Simone Vellei * * @param string $news Nome assoluto del file della news da visualizzare */ function read_news($news){ global $theme, $mesi, $giorni, $fuso_orario, $newspp; $news = getparam($news, PAR_NULL, SAN_FLAT); // check if the news really exists if(!file_exists("news/$news.xml")) { print("
"._NORESULT."
"); return; } // add 1 visit to the news (if you aren't admin) add_read($news); // read news contents $fd = get_file("news/$news.xml"); $title = get_xml_element("fn:title",$fd); $avatar = get_xml_element("fn:avatar",$fd); $header = get_xml_element("fn:header",$fd); $body = get_xml_element("fn:body",$fd); $comments = get_xml_element("fn:comments",$fd); $comment = get_xml_array("fn:comment",$comments); // print news if(defined('_THEME_VER')) { if(_THEME_VER > 0) OpenTableTitle($title); } else OpenTableTitle("Read ".$title); // topic $w3c_title = _ARGOMENTO.": ".eregi_replace("\.png$|\.gif$|\.jpeg$|\.jpg$","",$avatar); echo ""; echo "$avatar"; print stripslashes($header)."

".stripslashes($body); // footer echo "
\n"; $news_link = get_news_link_array($news); echo $news_link['news_infos']."
"; echo $news_link['link_comment']." "; echo $news_link['link_print']." "; if (is_admin()) echo $news_link['link_modify']." "; if (is_admin()) echo $news_link['link_delete']." "; echo "
\n"; // comments for($j=0;$j"; $user=get_xml_element("fn:by",$comment[$j]); print "
"; // avatar into the comment if(file_exists(get_fn_dir("users")."/$user.php")){ $userdata = array(); $userdata = load_user_profile($user); $img=$userdata['avatar']; if($img!=""){ if(!stristr($img,"http://")) echo "avatar"; else echo "avatar"; } else echo "avatar"; } else echo "avatar"; // comment author print ""._DA." $user "; // comment time $date_comment = get_xml_element("fn:date",$comment[$j]); if(is_numeric($date_comment)){ print ""._DATA.": "; echo $giorni[date("w",$date_comment+(3600*$fuso_orario))].date(" d ",$date_comment+(3600*$fuso_orario)); $tmp_c = date("m",$date_comment+(3600*$fuso_orario)); if ($tmp_c<10) $tmp_c = str_replace("0","",$tmp_c); print $mesi[$tmp_c-1]; $date_comment = date(" Y - ",$date_comment+(3600*$fuso_orario)).date("H:",$date_comment+(3600*$fuso_orario)).date("i",$date_comment+(3600*$fuso_orario)); } else $date_comment = "/"; print "$date_comment

"; // comment print stripslashes(get_xml_element("fn:post",$comment[$j])); // link to delete the current comment if(is_admin()) { echo "
"; echo "Delete comment "; $delcomment_param = "&file=news/$news.xml&comment_date=".get_xml_element("fn:date",$comment[$j]); echo ""._ELIMINA.""; echo "
"; } print "
"; } echo "

"; // search previous and next news $array_news = array(); $handle = opendir("news"); while ($file = readdir($handle)) { if (!( $file=="." OR $file==".." ) AND eregi("xml$",get_file_extension($file))) { array_push($array_news, $file); } } closedir($handle); if(count($array_news)>0) sort($array_news); while ($cur_news = current($array_news)) { if ($cur_news == "$news.xml") { $current = current($array_news); $key = key($array_news); if($key-1 < 0) $prev = _NOPREVNEWS; else $prev = "« "._PREVNEWS.""; if($key+1 > count($array_news)-1) $next = _NONEXTNEWS; else $next = ""._NEXTNEWS." »"; echo "
$prev | $next
"; } next($array_news); } // list of last news about the same topic echo "
"._RELATEDNEWSLAST."

"; argument_search("news", $avatar, $newspp); // link to read all the news for the same topic echo "
"; echo ""._RELATEDNEWSALL."
"; echo ""; echo "$avatar"; echo "
"; CloseTableTitle(); } /** * Ricerca una determinata stringa all'interno delle news o dei topics del forum * * Esegue una ricerca di una stringa all'interno dei files presenti nella directory * delle news o dei topics del forum, stampandone un elenco * * @author Marco Segato * @since 2.5.7 * * @param string $where Sezione di ricerca, 'news' oppure 'forum/topics' * @param string $find Stringa da ricercare * @param number $max_news Indica il numero massimo di news da stampare; se 0 le stampa tutte */ function argument_search($where, $find, $max_news=0) { global $theme; $where=getparam($where,PAR_NULL, SAN_FLAT); $find=getparam($find,PAR_NULL, SAN_FLAT); if($where=="") $find=""; $haveresult = 0; $num_news = 0; if((trim($find)!="") and file_exists($where)) { $addr=getparam("REMOTE_ADDR",PAR_SERVER,SAN_FLAT); //fnlog("Search", $addr."||".get_username()."||Search done in $where about \"$find\"."); // too verbose, produces too big logs $modlist = array(); $handle = opendir($where); while ($file = readdir($handle)) { if (!( $file=="." OR $file==".." ) AND eregi("xml$",get_file_extension($file))) { array_push($modlist, $file); } } closedir($handle); if(count($modlist)>0) rsort($modlist); // se num. massimo di news da stampare ($max_news) e' 0, le stampo tutte if($max_news==0) $max_news = count($modlist); // stampa la lista delle ultime news con stesso argomento for ($i=0; $i $title "; echo "(".date("d/m/Y - H:i", $id).") "._LETTO."$reads "._VOLTE."
"; } if($where=="forum/topics") { $title = get_xml_element("ff:topic", $string); if($title=="") $title = _LEGGITUTTO; $id = str_replace(".xml", "", $modlist[$i]); echo "Read $title "; echo "(".date("d/m/Y - H:i", $id).")
"; } } } if($haveresult==0) { echo _NORESULT."
<< "._INDIETRO.""; } } else { ?>