dolibarr/htdocs/admin/external_rss.php

330 lines
9.8 KiB
PHP
Raw Normal View History

<?php
2008-04-28 01:06:56 +02:00
/* Copyright (C) 2003 Eric Seigne <erics@rycks.com>
* Copyright (C) 2003,2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2011 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2004 Sebastien Di Cintio <sdicintio@ressource-toi.org>
* Copyright (C) 2004 Benoit Mortier <benoit.mortier@opensides.be>
2018-10-27 14:43:12 +02:00
* Copyright (C) 2005-2011 Regis Houssin <regis.houssin@inodbox.com>
* Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
2019-09-23 21:55:30 +02:00
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
/**
2009-09-28 01:22:00 +02:00
* \file htdocs/admin/external_rss.php
* \ingroup external_rss
* \brief Page to setupe module ExternalRss
2009-09-28 01:22:00 +02:00
*/
require '../main.inc.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/rssparser.class.php';
2018-05-26 18:41:16 +02:00
// Load translation files required by the page
$langs->load("admin");
// Security check
if (!$user->admin) accessforbidden();
$def = array();
2007-09-16 15:26:23 +02:00
$lastexternalrss=0;
$action=GETPOST('action', 'aZ09');
/*
* Actions
*/
// positionne la variable pour le nombre de rss externes
2017-02-07 01:34:21 +01:00
$sql ="SELECT ".$db->decrypt('name')." as name FROM ".MAIN_DB_PREFIX."const";
2011-01-24 20:28:28 +01:00
$sql.=" WHERE ".$db->decrypt('name')." LIKE 'EXTERNAL_RSS_URLRSS_%'";
2017-02-07 01:34:21 +01:00
//print $sql;
$result=$db->query($sql); // We can't use SELECT MAX() because EXTERNAL_RSS_URLRSS_10 is lower than EXTERNAL_RSS_URLRSS_9
2005-03-31 22:41:10 +02:00
if ($result)
{
2017-02-07 01:34:21 +01:00
while ($obj = $db->fetch_object($result))
{
preg_match('/([0-9]+)$/i', $obj->name, $reg);
2017-02-07 01:34:21 +01:00
if ($reg[1] && $reg[1] > $lastexternalrss) $lastexternalrss = $reg[1];
}
2005-03-31 22:41:10 +02:00
}
2007-09-16 15:26:23 +02:00
else
{
dol_print_error($db);
2005-03-31 22:41:10 +02:00
}
2011-09-06 12:52:42 +02:00
if ($action == 'add' || GETPOST("modify"))
{
2019-05-21 14:03:28 +02:00
$external_rss_title = "external_rss_title_" . GETPOST("norss", 'int');
$external_rss_urlrss = "external_rss_urlrss_" . GETPOST("norss", 'int');
if (! empty($_POST[$external_rss_urlrss]))
{
$boxlabel='(ExternalRSSInformations)';
//$external_rss_url = "external_rss_url_" . $_POST["norss"];
$db->begin();
if ($_POST["modify"])
{
2008-04-28 01:06:56 +02:00
// Supprime boite box_external_rss de definition des boites
2019-10-20 01:09:11 +02:00
/* $sql = "UPDATE ".MAIN_DB_PREFIX."boxes_def";
2007-09-16 15:26:23 +02:00
$sql.= " SET name = '".$boxlabel."'";
$sql.= " WHERE file ='box_external_rss.php' AND note like '".$_POST["norss"]." %'";
2007-09-16 15:26:23 +02:00
$resql=$db->query($sql);
if (! $resql)
{
dol_print_error($db,"sql=$sql");
exit;
}
2019-10-20 01:09:11 +02:00
*/
}
2007-09-16 15:26:23 +02:00
else
{
// Ajoute boite box_external_rss dans definition des boites
2008-04-28 01:06:56 +02:00
$sql = "INSERT INTO ".MAIN_DB_PREFIX."boxes_def (file, note)";
2019-05-21 14:03:28 +02:00
$sql.= " VALUES ('box_external_rss.php','".$db->escape(GETPOST("norss", 'int').' ('.GETPOST($external_rss_title, 'alpha')).")')";
2007-09-16 15:26:23 +02:00
if (! $db->query($sql))
{
dol_print_error($db);
2007-09-16 15:26:23 +02:00
$err++;
}
}
2009-09-28 01:22:00 +02:00
2019-05-21 14:03:28 +02:00
$result1=dolibarr_set_const($db, "EXTERNAL_RSS_TITLE_" . GETPOST("norss", 'int'), GETPOST($external_rss_title, 'alpha'), 'chaine', 0, '', $conf->entity);
if ($result1) $result2=dolibarr_set_const($db, "EXTERNAL_RSS_URLRSS_" . GETPOST("norss", 'int'), GETPOST($external_rss_urlrss, 'alpha'), 'chaine', 0, '', $conf->entity);
if ($result1 && $result2)
{
$db->commit();
header("Location: ".$_SERVER["PHP_SELF"]);
exit;
}
else
{
$db->rollback();
dol_print_error($db);
}
}
}
if ($_POST["delete"])
{
2019-05-21 14:03:28 +02:00
if (GETPOST("norss", 'int'))
{
$db->begin();
// Supprime boite box_external_rss de definition des boites
2007-09-16 15:26:23 +02:00
$sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."boxes_def";
2019-05-21 14:03:28 +02:00
$sql.= " WHERE file = 'box_external_rss.php' AND note LIKE '".$db->escape(GETPOST("norss", 'int'))." %'";
2009-09-28 01:22:00 +02:00
2007-09-16 15:26:23 +02:00
$resql=$db->query($sql);
if ($resql)
{
2007-09-16 15:26:23 +02:00
$num = $db->num_rows($resql);
$i=0;
while ($i < $num)
{
$obj=$db->fetch_object($resql);
$sql = "DELETE FROM ".MAIN_DB_PREFIX."boxes";
$sql.= " WHERE entity = ".$conf->entity;
$sql.= " AND box_id = ".$obj->rowid;
2007-09-16 15:26:23 +02:00
$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();
dol_print_error($db, "sql=".$sql);
2007-09-16 15:26:23 +02:00
exit;
}
2009-09-28 01:22:00 +02:00
2007-09-16 15:26:23 +02:00
$i++;
}
$db->commit();
}
else
{
$db->rollback();
dol_print_error($db, "sql=".$sql);
exit;
}
2007-09-16 15:26:23 +02:00
2019-05-21 16:17:32 +02:00
$result1=dolibarr_del_const($db, "EXTERNAL_RSS_TITLE_".GETPOST("norss", 'int'), $conf->entity);
if ($result1) $result2=dolibarr_del_const($db, "EXTERNAL_RSS_URLRSS_".GETPOST("norss", 'int'), $conf->entity);
2009-09-28 01:22:00 +02:00
if ($result1 && $result2)
{
$db->commit();
header("Location: external_rss.php");
2008-04-28 01:06:56 +02:00
exit;
}
else
{
$db->rollback();
dol_print_error($db);
}
}
}
2003-07-22 17:38:04 +02:00
/*
* View
*/
2007-09-16 15:26:23 +02:00
llxHeader('', $langs->trans("ExternalRSSSetup"));
2018-02-26 09:20:05 +01:00
$linkback='<a href="'.DOL_URL_ROOT.'/admin/modules.php?restore_lastsearch_values=1">'.$langs->trans("BackToModuleList").'</a>';
print load_fiche_titre($langs->trans("ExternalRSSSetup"), $linkback, 'title_setup');
print '<br>';
2007-09-16 15:26:23 +02:00
// Formulaire ajout
2009-09-28 01:22:00 +02:00
print '<form name="externalrssconfig" action="'.$_SERVER["PHP_SELF"].'" method="post">';
print '<input type="hidden" name="token" value="'.newToken().'">';
2019-11-05 21:24:41 +01:00
print '<table class="noborder centpercent">';
print '<tr class="liste_titre">';
print '<td colspan="2">'.$langs->trans("NewRSS").'</td>';
print '<td>'.$langs->trans("Example").'</td>';
print '</tr>';
print '<tr class="impair">';
print '<td width="100">'.$langs->trans("Title").'</td>';
print '<td><input type="text" class="flat minwidth300" name="external_rss_title_'.($lastexternalrss+1).'" value=""></td>';
print '<td>'.$langs->trans('RSSUrlExample').'</td>';
print '</tr>';
2011-01-24 20:28:28 +01:00
print '<tr class="pair">';
print '<td>'.$langs->trans('RSSUrl').'</td>';
print '<td><input type="text" class="flat minwidth300" name="external_rss_urlrss_'.($lastexternalrss+1).'" value=""></td>';
2012-03-19 10:46:16 +01:00
print '<td>http://news.google.com/news?ned=us&topic=h&output=rss<br>http://www.dolibarr.org/rss</td>';
2011-01-24 20:28:28 +01:00
print '</tr>';
print '</table>';
2014-11-25 20:13:43 +01:00
print '<br><div class="center">';
2011-01-24 20:28:28 +01:00
print '<input type="submit" class="button" value="'.$langs->trans("Add").'">';
print '<input type="hidden" name="action" value="add">';
print '<input type="hidden" name="norss" value="'.($lastexternalrss+1).'">';
2014-11-25 20:13:43 +01:00
print '</div><br><br>';
print '</form>';
2011-01-24 20:28:28 +01:00
$sql ="SELECT rowid, file, note FROM ".MAIN_DB_PREFIX."boxes_def";
2007-09-16 15:26:23 +02:00
$sql.=" WHERE file = 'box_external_rss.php'";
$sql.=" ORDER BY note";
2008-04-28 01:06:56 +02:00
2014-06-12 11:31:53 +02:00
dol_syslog("select rss boxes", LOG_DEBUG);
2007-09-16 15:26:23 +02:00
$resql=$db->query($sql);
if ($resql)
{
2007-09-16 15:26:23 +02:00
$num =$db->num_rows($resql);
$i=0;
while ($i < $num)
{
2007-09-16 15:26:23 +02:00
$obj = $db->fetch_object($resql);
2009-09-28 01:22:00 +02:00
preg_match('/^([0-9]+)/i', $obj->note, $reg);
2007-09-16 15:26:23 +02:00
$idrss = $reg[1];
2018-09-29 15:28:03 +02:00
$keyrsstitle="EXTERNAL_RSS_TITLE_".$idrss;
$keyrssurl="EXTERNAL_RSS_URLRSS_".$idrss;
//print "x".$idrss;
2007-09-16 15:26:23 +02:00
$rssparser=new RssParser($db);
$result = $rssparser->parser($conf->global->$keyrssurl, 5, 300, $conf->externalrss->dir_temp);
2009-09-28 01:22:00 +02:00
print "<br>";
2009-09-28 01:22:00 +02:00
print "<form name=\"externalrssconfig\" action=\"".$_SERVER["PHP_SELF"]."\" method=\"post\">";
2019-11-05 21:24:41 +01:00
print '<table class="noborder centpercent">';
print '<input type="hidden" name="token" value="'.newToken().'">';
2009-09-28 01:22:00 +02:00
2007-09-16 15:26:23 +02:00
print "<tr class=\"liste_titre\">";
print "<td>".$langs->trans("RSS")." ".($i+1)."</td>";
2019-01-22 11:46:12 +01:00
print '<td class="right">';
print "<input type=\"submit\" class=\"button\" name=\"modify\" value=\"".$langs->trans("Modify")."\">";
print " &nbsp; ";
print "<input type=\"submit\" class=\"button\" name=\"delete\" value=\"".$langs->trans("Delete")."\">";
print "<input type=\"hidden\" name=\"norss\" value=\"".$idrss."\">";
print '</td>';
2007-09-16 15:26:23 +02:00
print "</tr>";
2018-01-08 20:54:40 +01:00
print '<tr class="oddeven">';
print "<td width=\"100px\">".$langs->trans("Title")."</td>";
2019-05-21 14:03:28 +02:00
print "<td><input type=\"text\" class=\"flat minwidth300\" name=\"external_rss_title_" . $idrss . "\" value=\"" . dol_escape_htmltag($conf->global->$keyrsstitle) . "\"></td>";
2007-09-16 15:26:23 +02:00
print "</tr>";
2018-01-08 20:54:40 +01:00
print '<tr class="oddeven">';
2007-09-16 15:26:23 +02:00
print "<td>".$langs->trans("URL")."</td>";
2019-05-21 14:03:28 +02:00
print "<td><input type=\"text\" class=\"flat minwidth300\" name=\"external_rss_urlrss_" . $idrss . "\" value=\"" . dol_escape_htmltag($conf->global->$keyrssurl) . "\"></td>";
2007-09-16 15:26:23 +02:00
print "</tr>";
2018-01-08 20:54:40 +01:00
print '<tr class="oddeven">';
2007-09-16 15:26:23 +02:00
print "<td>".$langs->trans("Status")."</td>";
print "<td>";
if ($result > 0 && empty($rss->error))
2007-09-16 15:26:23 +02:00
{
print '<font class="ok">'.$langs->trans("Online").'</div>';
}
else
{
print '<font class="error">'.$langs->trans("Offline");
$langs->load("errors");
if ($rssparser->error) print ' - '.$langs->trans($rssparser->error);
print '</div>';
2007-09-16 15:26:23 +02:00
}
print "</td>";
print "</tr>";
2007-09-16 15:26:23 +02:00
// Logo
if ($result > 0 && empty($rss->error))
2007-09-16 15:26:23 +02:00
{
print '<tr class="oddeven">';
2007-09-16 15:26:23 +02:00
print "<td>".$langs->trans("Logo")."</td>";
print '<td>';
$imageurl=$rssparser->getImageUrl();
$linkrss=$rssparser->getLink();
if (! preg_match('/^http/', $imageurl)) $imageurl=$linkrss.$imageurl;
if ($imageurl) print '<img height="32" src="'.$imageurl.'">';
else print $langs->trans("None");
2007-09-16 15:26:23 +02:00
print '</td>';
print "</tr>";
}
print '</table>';
2007-09-16 15:26:23 +02:00
print "</form>";
2009-09-28 01:22:00 +02:00
2007-09-16 15:26:23 +02:00
$i++;
}
}
2008-04-28 01:06:56 +02:00
else
{
dol_print_error($db);
2008-04-28 01:06:56 +02:00
}
2018-07-28 18:03:14 +02:00
// End of page
llxFooter();
$db->close();