diff --git a/htdocs/admin/external_rss.php b/htdocs/admin/external_rss.php index 38c885f86d9..b6e694b123a 100644 --- a/htdocs/admin/external_rss.php +++ b/htdocs/admin/external_rss.php @@ -1,7 +1,7 @@ * Copyright (C) 2003,2005 Rodolphe Quiedeville - * Copyright (C) 2004-2006 Laurent Destailleur + * Copyright (C) 2004-2007 Laurent Destailleur * Copyright (C) 2004 Sebastien Di Cintio * Copyright (C) 2004 Benoit Mortier * @@ -39,15 +39,20 @@ $langs->load("admin"); if (!$user->admin) accessforbidden(); $def = array(); +$lastexternalrss=0; // positionne la variable pour le nombre de rss externes -$result=$db->query("select count(*) nb from ".MAIN_DB_PREFIX."const WHERE name like 'EXTERNAL_RSS_URLRSS_%'"); +$sql ="select MAX(name) name from ".MAIN_DB_PREFIX."const"; +$sql.=" WHERE name like 'EXTERNAL_RSS_URLRSS_%'"; +$result=$db->query($sql); if ($result) { $obj = $db->fetch_object($result); - $nbexternalrss = $obj->nb; + eregi('([0-9]+)$',$obj->name,$reg); + if ($reg[1]) $lastexternalrss = $reg[1]; } -else { +else +{ dolibarr_print_error($db); } @@ -66,22 +71,28 @@ if ($_POST["action"] == 'add' || $_POST["modify"]) if ($_POST["modify"]) { // Supprime boite box_external_rss de définition des boites - $sql = "DELETE FROM ".MAIN_DB_PREFIX."boxes_def"; + $sql = "UPDATE ".MAIN_DB_PREFIX."boxes_def"; + $sql.= " SET name = '".$boxlabel."'"; $sql.= " WHERE file ='box_external_rss.php' AND note like '".$_POST["norss"]." %'"; - if (! $db->query($sql)) + + $resql=$db->query($sql); + if (! $resql) { dolibarr_print_error($db,"sql=$sql"); exit; } } + else + { + // Ajoute boite box_external_rss dans définition des boites + $sql = "INSERT INTO ".MAIN_DB_PREFIX."boxes_def (name, file, note)"; + $sql.= " VALUES ('".$boxlabel."','box_external_rss.php','".addslashes($_POST["norss"].' ('.$_POST[$external_rss_title]).")')"; + if (! $db->query($sql)) + { + $err++; + } + } - // Ajoute boite box_external_rss dans définition des boites - $sql = "INSERT INTO ".MAIN_DB_PREFIX."boxes_def (name, file, note) VALUES ('".$boxlabel."','box_external_rss.php','".addslashes($_POST["norss"].' ('.$_POST[$external_rss_title]).")')"; - if (! $db->query($sql)) - { - $err++; - } - $result1=dolibarr_set_const($db, "EXTERNAL_RSS_TITLE_" . $_POST["norss"],$_POST[$external_rss_title]); if ($result1) $result2=dolibarr_set_const($db, "EXTERNAL_RSS_URLRSS_" . $_POST["norss"],$_POST[$external_rss_urlrss]); @@ -107,14 +118,46 @@ if ($_POST["delete"]) $db->begin(); // Supprime boite box_external_rss de définition des boites - $sql = "DELETE FROM ".MAIN_DB_PREFIX."boxes_def"; + $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."boxes_def"; $sql.= " WHERE file ='box_external_rss.php' AND note like '".$_POST["norss"]." %'"; - if (! $db->query($sql)) + + $resql=$db->query($sql); + if ($resql) { + $num = $db->num_rows($resql); + $i=0; + while ($i < $num) + { + $obj=$db->fetch_object($resql); + + $sql = "DELETE FROM ".MAIN_DB_PREFIX."boxes"; + $sql.= " WHERE box_id = ".$obj->rowid; + $resql=$db->query($sql); + + $sql = "DELETE FROM ".MAIN_DB_PREFIX."boxes_def"; + $sql.= " WHERE rowid = ".$obj->rowid; + $resql=$db->query($sql); + + if (! $resql) + { + $db->rollback(); + dolibarr_print_error($db,"sql=$sql"); + exit; + } + + $i++; + } + + $db->commit(); + } + else + { + $db->rollback(); dolibarr_print_error($db,"sql=$sql"); exit; } + $result1=dolibarr_del_const($db,"EXTERNAL_RSS_TITLE_" . $_POST["norss"]); if ($result1) $result2=dolibarr_del_const($db,"EXTERNAL_RSS_URLRSS_" . $_POST["norss"]); @@ -134,13 +177,15 @@ if ($_POST["delete"]) /* - * Affichage du formulaire de saisie + * Affichage page */ - + llxHeader(); print_fiche_titre($langs->trans("ExternalRSSSetup"), $mesg, 'setup'); + +// Formulaire ajout print '
'; print ''; @@ -150,19 +195,19 @@ print ''; print ''; print ''; print ''; -print ''; +print ''; print ''; print ''; ?> - +
'.$langs->trans("Example").'
'.$langs->trans("Title").'April,
LinuxFR,
Lolix
URL du RSS" size="64">" size="64"> http://wiki.april.org/RecentChanges?format=rss
http://linuxfr.org/backend/news/rss20.rss
http://back.fr.lolix.org/jobs.rss.php3
"> - +
@@ -174,70 +219,89 @@ print ''; query($sql); +if ($resql) { - $var=true; - - $rss = fetch_rss( @constant("EXTERNAL_RSS_URLRSS_".$i) ); - // fetch_rss initialise les objets suivant: - // print_r($rss->channel); - // print_r($rss->image); - // print_r($rss->items); - - print ""; - - print ""; - print "Syndication du flux numéro " . ($i+1) . ""; - print ""; + $num =$db->num_rows($resql); + $i=0; - $var=!$var; - print ""; - print "".$langs->trans("Title").""; - print ""; - print ""; - - $var=!$var; - print ""; - print "".$langs->trans("URL").""; - print ""; - print ""; - - $var=!$var; - print ""; - print "".$langs->trans("Status").""; - print ""; - if (! $rss->ERROR) - { - print ''.$langs->trans("Online").''; - } - else + while ($i < $num) { - print ''.$langs->trans("Offline").''; - } - print ""; - print ""; + $obj = $db->fetch_object($resql); + + eregi('^([0-9]+)',$obj->note,$reg); + $idrss = $reg[1]; + //print "x".$idrss; + + $var=true; + + $rss = fetch_rss( @constant("EXTERNAL_RSS_URLRSS_".$idrss) ); + // fetch_rss initialise les objets suivant: + // print_r($rss->channel); + // print_r($rss->image); + // print_r($rss->items); + + print ""; + + print ""; + print "Syndication du flux numéro " . ($i+1) . ""; + print ""; - // Logo - if (! $rss->ERROR && $rss->image['url']) - { $var=!$var; print ""; - print "".$langs->trans("Logo").""; - print ''; - print ''; - print ''; + print "".$langs->trans("Title").""; + print ""; print ""; + + $var=!$var; + print ""; + print "".$langs->trans("URL").""; + print ""; + print ""; + + $var=!$var; + print ""; + print "".$langs->trans("Status").""; + print ""; + if (! $rss->ERROR) + { + print ''.$langs->trans("Online").''; + } + else + { + print ''.$langs->trans("Offline").''; + } + print ""; + print ""; + + // Logo + if (! $rss->ERROR && $rss->image['url']) + { + $var=!$var; + print ""; + print "".$langs->trans("Logo").""; + print ''; + print ''; + print ''; + print ""; + } + + print ""; + print ""; + print "trans("Modify")."\">"; + print "   "; + print "trans("Delete")."\">"; + print ""; + print ""; + print ""; + + print ""; + + $i++; } - - print ""; - print ""; - print "trans("Modify")."\">  "; - print "trans("Delete")."\">"; - print ""; - print ""; - print ""; - - print ""; } ?> @@ -249,5 +313,4 @@ for($i = 0; $i < $nbexternalrss; $i++) $db->close(); llxFooter('$Date$ - $Revision$'); - ?>