external_rss.php 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326
  1. <?php
  2. /* Copyright (C) 2003 Eric Seigne <erics@rycks.com>
  3. * Copyright (C) 2003,2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
  4. * Copyright (C) 2004-2011 Laurent Destailleur <eldy@users.sourceforge.net>
  5. * Copyright (C) 2004 Sebastien Di Cintio <sdicintio@ressource-toi.org>
  6. * Copyright (C) 2004 Benoit Mortier <benoit.mortier@opensides.be>
  7. * Copyright (C) 2005-2011 Regis Houssin <regis@dolibarr.fr>
  8. *
  9. * This program is free software; you can redistribute it and/or modify
  10. * it under the terms of the GNU General Public License as published by
  11. * the Free Software Foundation; either version 2 of the License, or
  12. * (at your option) any later version.
  13. *
  14. * This program is distributed in the hope that it will be useful,
  15. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  17. * GNU General Public License for more details.
  18. *
  19. * You should have received a copy of the GNU General Public License
  20. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  21. */
  22. /**
  23. * \file htdocs/admin/external_rss.php
  24. * \ingroup external_rss
  25. * \brief Page to setupe module ExternalRss
  26. */
  27. require("../main.inc.php");
  28. require_once(DOL_DOCUMENT_ROOT."/lib/admin.lib.php");
  29. require_once(DOL_DOCUMENT_ROOT."/core/class/rssparser.class.php");
  30. $langs->load("admin");
  31. // Security check
  32. if (!$user->admin) accessforbidden();
  33. $def = array();
  34. $lastexternalrss=0;
  35. $action=GETPOST('action');
  36. /*
  37. * Actions
  38. */
  39. // positionne la variable pour le nombre de rss externes
  40. $sql ="SELECT MAX(".$db->decrypt('name').") as name FROM ".MAIN_DB_PREFIX."const";
  41. $sql.=" WHERE ".$db->decrypt('name')." LIKE 'EXTERNAL_RSS_URLRSS_%'";
  42. $result=$db->query($sql);
  43. if ($result)
  44. {
  45. $obj = $db->fetch_object($result);
  46. preg_match('/([0-9]+)$/i',$obj->name,$reg);
  47. if ($reg[1]) $lastexternalrss = $reg[1];
  48. }
  49. else
  50. {
  51. dol_print_error($db);
  52. }
  53. if ($action == 'add' || $_POST["modify"])
  54. {
  55. $external_rss_title = "external_rss_title_" . $_POST["norss"];
  56. $external_rss_urlrss = "external_rss_urlrss_" . $_POST["norss"];
  57. if (! empty($_POST[$external_rss_urlrss]))
  58. {
  59. $boxlabel='(ExternalRSSInformations)';
  60. //$external_rss_url = "external_rss_url_" . $_POST["norss"];
  61. $db->begin();
  62. if ($_POST["modify"])
  63. {
  64. // Supprime boite box_external_rss de definition des boites
  65. /* $sql = "UPDATE ".MAIN_DB_PREFIX."boxes_def";
  66. $sql.= " SET name = '".$boxlabel."'";
  67. $sql.= " WHERE file ='box_external_rss.php' AND note like '".$_POST["norss"]." %'";
  68. $resql=$db->query($sql);
  69. if (! $resql)
  70. {
  71. dol_print_error($db,"sql=$sql");
  72. exit;
  73. }
  74. */
  75. }
  76. else
  77. {
  78. // Ajoute boite box_external_rss dans definition des boites
  79. $sql = "INSERT INTO ".MAIN_DB_PREFIX."boxes_def (file, note)";
  80. $sql.= " VALUES ('box_external_rss.php','".$db->escape($_POST["norss"].' ('.$_POST[$external_rss_title]).")')";
  81. if (! $db->query($sql))
  82. {
  83. dol_print_error($db);
  84. $err++;
  85. }
  86. }
  87. $result1=dolibarr_set_const($db, "EXTERNAL_RSS_TITLE_" . $_POST["norss"],$_POST[$external_rss_title],'chaine',0,'',$conf->entity);
  88. if ($result1) $result2=dolibarr_set_const($db, "EXTERNAL_RSS_URLRSS_" . $_POST["norss"],$_POST[$external_rss_urlrss],'chaine',0,'',$conf->entity);
  89. if ($result1 && $result2)
  90. {
  91. $db->commit();
  92. //$mesg='<div class="ok">'.$langs->trans("Success").'</div>';
  93. header("Location: ".$_SERVER["PHP_SELF"]);
  94. exit;
  95. }
  96. else
  97. {
  98. $db->rollback();
  99. dol_print_error($db);
  100. }
  101. }
  102. }
  103. if ($_POST["delete"])
  104. {
  105. if(isset($_POST["norss"]))
  106. {
  107. $db->begin();
  108. // Supprime boite box_external_rss de definition des boites
  109. $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."boxes_def";
  110. $sql.= " WHERE file = 'box_external_rss.php' AND note LIKE '".$_POST["norss"]." %'";
  111. $resql=$db->query($sql);
  112. if ($resql)
  113. {
  114. $num = $db->num_rows($resql);
  115. $i=0;
  116. while ($i < $num)
  117. {
  118. $obj=$db->fetch_object($resql);
  119. $sql = "DELETE FROM ".MAIN_DB_PREFIX."boxes";
  120. $sql.= " WHERE box_id = ".$obj->rowid;
  121. $resql=$db->query($sql);
  122. $sql = "DELETE FROM ".MAIN_DB_PREFIX."boxes_def";
  123. $sql.= " WHERE rowid = ".$obj->rowid;
  124. $resql=$db->query($sql);
  125. if (! $resql)
  126. {
  127. $db->rollback();
  128. dol_print_error($db,"sql=".$sql);
  129. exit;
  130. }
  131. $i++;
  132. }
  133. $db->commit();
  134. }
  135. else
  136. {
  137. $db->rollback();
  138. dol_print_error($db,"sql=".$sql);
  139. exit;
  140. }
  141. $result1=dolibarr_del_const($db,"EXTERNAL_RSS_TITLE_" . $_POST["norss"],$conf->entity);
  142. if ($result1) $result2=dolibarr_del_const($db,"EXTERNAL_RSS_URLRSS_" . $_POST["norss"],$conf->entity);
  143. if ($result1 && $result2)
  144. {
  145. $db->commit();
  146. //$mesg='<div class="ok">'.$langs->trans("Success").'</div>';
  147. header("Location: external_rss.php");
  148. exit;
  149. }
  150. else
  151. {
  152. $db->rollback();
  153. dol_print_error($db);
  154. }
  155. }
  156. }
  157. /*
  158. * View
  159. */
  160. llxHeader('',$langs->trans("ExternalRSSSetup"));
  161. $linkback='<a href="'.DOL_URL_ROOT.'/admin/modules.php">'.$langs->trans("BackToModuleList").'</a>';
  162. print_fiche_titre($langs->trans("ExternalRSSSetup"), $linkback, 'setup');
  163. print '<br>';
  164. // Formulaire ajout
  165. print '<form name="externalrssconfig" action="'.$_SERVER["PHP_SELF"].'" method="post">';
  166. print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
  167. print '<table class="noborder" width="100%">';
  168. print '<tr class="liste_titre">';
  169. print '<td colspan="2">'.$langs->trans("NewRSS").'</td>';
  170. print '<td>'.$langs->trans("Example").'</td>';
  171. print '</tr>';
  172. print '<tr class="impair">';
  173. print '<td width="100">'.$langs->trans("Title").'</td>';
  174. print '<td><input type="text" name="external_rss_title_'.($lastexternalrss+1).'" value="'.@constant("EXTERNAL_RSS_TITLE_" . ($lastexternalrss+1)).'" size="64"></td>';
  175. print '<td>April,<br>LinuxFR,<br>Lolix</td>';
  176. print '</tr>';
  177. print '<tr class="pair">';
  178. print '<td>URL du RSS</td>';
  179. print '<td><input type="text" name="external_rss_urlrss_'.($lastexternalrss+1).'" value="'.@constant("EXTERNAL_RSS_URLRSS_" . ($lastexternalrss+1)).'" size="64"></td>';
  180. print '<td>http://news.google.com/news?ned=us&topic=h&output=rss<br>http://linuxfr.org/backend/news/rss20.rss</td>';
  181. print '</tr>';
  182. print '</table>';
  183. print '<center><br>';
  184. print '<input type="submit" class="button" value="'.$langs->trans("Add").'">';
  185. print '<input type="hidden" name="action" value="add">';
  186. print '<input type="hidden" name="norss" value="'.($lastexternalrss+1).'">';
  187. print '<br><br>';
  188. print '</form>';
  189. $sql ="SELECT rowid, file, note FROM ".MAIN_DB_PREFIX."boxes_def";
  190. $sql.=" WHERE file = 'box_external_rss.php'";
  191. $sql.=" ORDER BY note";
  192. dol_syslog("select rss boxes sql=".$sql,LOG_DEBUG);
  193. $resql=$db->query($sql);
  194. if ($resql)
  195. {
  196. $num =$db->num_rows($resql);
  197. $i=0;
  198. while ($i < $num)
  199. {
  200. $obj = $db->fetch_object($resql);
  201. preg_match('/^([0-9]+)/i',$obj->note,$reg);
  202. $idrss = $reg[1];
  203. //print "x".$idrss;
  204. $rssparser=new RssParser($db);
  205. $result = $rssparser->parser(@constant("EXTERNAL_RSS_URLRSS_".$idrss), 5, 300, $conf->externalrss->dir_temp);
  206. $var=true;
  207. print "<br>";
  208. print "<form name=\"externalrssconfig\" action=\"".$_SERVER["PHP_SELF"]."\" method=\"post\">";
  209. print '<table class="noborder" width="100%">';
  210. print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
  211. print "<tr class=\"liste_titre\">";
  212. print "<td>".$langs->trans("RSS")." ".($i+1)."</td>";
  213. print '<td align="right">';
  214. print "<input type=\"submit\" class=\"button\" name=\"modify\" value=\"".$langs->trans("Modify")."\">";
  215. print " &nbsp; ";
  216. print "<input type=\"submit\" class=\"button\" name=\"delete\" value=\"".$langs->trans("Delete")."\">";
  217. print "<input type=\"hidden\" name=\"norss\" value=\"".$idrss."\">";
  218. print '</td>';
  219. print "</tr>";
  220. $var=!$var;
  221. print "<tr ".$bc[$var].">";
  222. print "<td width=\"100px\">".$langs->trans("Title")."</td>";
  223. print "<td><input type=\"text\" class=\"flat\" name=\"external_rss_title_" . $idrss . "\" value=\"" . @constant("EXTERNAL_RSS_TITLE_" . $idrss) . "\" size=\"64\"></td>";
  224. print "</tr>";
  225. $var=!$var;
  226. print "<tr ".$bc[$var].">";
  227. print "<td>".$langs->trans("URL")."</td>";
  228. print "<td><input type=\"text\" class=\"flat\" name=\"external_rss_urlrss_" . $idrss . "\" value=\"" . @constant("EXTERNAL_RSS_URLRSS_" . $idrss) . "\" size=\"64\"></td>";
  229. print "</tr>";
  230. $var=!$var;
  231. print "<tr ".$bc[$var].">";
  232. print "<td>".$langs->trans("Status")."</td>";
  233. print "<td>";
  234. if ($result > 0 && empty($rss->error))
  235. {
  236. print '<font class="ok">'.$langs->trans("Online").'</div>';
  237. }
  238. else
  239. {
  240. print '<font class="error">'.$langs->trans("Offline");
  241. $langs->load("errors");
  242. if ($rssparser->error) print ' - '.$langs->trans($rssparser->error);
  243. print '</div>';
  244. }
  245. print "</td>";
  246. print "</tr>";
  247. // Logo
  248. if ($result > 0 && empty($rss->error))
  249. {
  250. $var=!$var;
  251. print "<tr ".$bc[$var].">";
  252. print "<td>".$langs->trans("Logo")."</td>";
  253. print '<td>';
  254. $imageurl=$rssparser->getImageUrl();
  255. if ($imageurl) print '<img height="32" src="'.$imageurl.'">';
  256. else print $langs->trans("None");
  257. print '</td>';
  258. print "</tr>";
  259. }
  260. print '</table>';
  261. print "</form>";
  262. $i++;
  263. }
  264. }
  265. else
  266. {
  267. dol_print_error($db);
  268. }
  269. $db->close();
  270. llxFooter();
  271. ?>