dolibarr 18.0.6
agenda_extsites.php
Go to the documentation of this file.
1<?php
2/* Copyright (C) 2008-2015 Laurent Destailleur <eldy@users.sourceforge.net>
3 * Copyright (C) 2011-2015 Juanjo Menent <jmenent@2byte.es>
4 * Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
5 * Copyright (C) 2016 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
6 * Copyright (C) 2021 Frédéric France <frederic.france@netlogic.fr>
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 3 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program. If not, see <https://www.gnu.org/licenses/>.
20 */
21
28// Load Dolibarr environment
29require '../main.inc.php';
30require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
31require_once DOL_DOCUMENT_ROOT.'/core/class/html.formadmin.class.php';
32require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
33require_once DOL_DOCUMENT_ROOT.'/core/lib/agenda.lib.php';
34require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
35require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
36
37if (!$user->admin) {
39}
40
41// Load translation files required by the page
42$langs->loadLangs(array('agenda', 'admin', 'other'));
43
44$def = array();
45$action = GETPOST('action', 'alpha');
46
47if (empty($conf->global->AGENDA_EXT_NB)) {
48 $conf->global->AGENDA_EXT_NB = 5;
49}
50$MAXAGENDA = $conf->global->AGENDA_EXT_NB;
51
52// List of available colors
53$colorlist = array('BECEDD', 'DDBECE', 'BFDDBE', 'F598B4', 'F68654', 'CBF654', 'A4A4A5');
54
55
56/*
57 * Actions
58 */
59
60$error = 0;
61$errors = array();
62
63if (preg_match('/set_(.*)/', $action, $reg)) {
64 $db->begin();
65
66 $code = $reg[1];
67 $value = (GETPOST($code) ? GETPOST($code) : 1);
68
69 $res = dolibarr_set_const($db, $code, $value, 'chaine', 0, '', $conf->entity);
70 if (!($res > 0)) {
71 $error++;
72 $errors[] = $db->lasterror();
73 }
74
75 if ($error) {
76 $db->rollback();
77 setEventMessages('', $errors, 'errors');
78 } else {
79 $db->commit();
80 setEventMessage($langs->trans('SetupSaved'));
81 header('Location: ' . $_SERVER["PHP_SELF"]);
82 exit();
83 }
84} elseif (preg_match('/del_(.*)/', $action, $reg)) {
85 $db->begin();
86
87 $code = $reg[1];
88
89 $res = dolibarr_del_const($db, $code, $conf->entity);
90 if (!($res > 0)) {
91 $error++;
92 $errors[] = $db->lasterror();
93 }
94
95 if ($error) {
96 $db->rollback();
97 setEventMessages('', $errors, 'errors');
98 } else {
99 $db->commit();
100 setEventMessage($langs->trans('SetupSaved'));
101 header('Location: ' . $_SERVER["PHP_SELF"]);
102 exit();
103 }
104} elseif ($action == 'save') {
105 $db->begin();
106
107 $disableext = GETPOST('AGENDA_DISABLE_EXT', 'alpha');
108 $res = dolibarr_set_const($db, 'AGENDA_DISABLE_EXT', $disableext, 'chaine', 0, '', $conf->entity);
109
110 $i = 1; $errorsaved = 0;
111
112 // Save agendas
113 while ($i <= $MAXAGENDA) {
114 $name = trim(GETPOST('AGENDA_EXT_NAME'.$i, 'alpha'));
115 $src = trim(GETPOST('AGENDA_EXT_SRC'.$i, 'alpha'));
116 $offsettz = trim(GETPOST('AGENDA_EXT_OFFSETTZ'.$i, 'alpha'));
117 $color = trim(GETPOST('AGENDA_EXT_COLOR'.$i, 'alpha'));
118 if ($color == '-1') {
119 $color = '';
120 }
121 $enabled = trim(GETPOST('AGENDA_EXT_ENABLED'.$i, 'alpha'));
122
123 if (!empty($src) && !dol_is_url($src)) {
124 setEventMessages($langs->trans("ErrorParamMustBeAnUrl"), null, 'errors');
125 $error++;
126 $errorsaved++;
127 break;
128 }
129
130 //print '-name='.$name.'-color='.$color;
131 $res = dolibarr_set_const($db, 'AGENDA_EXT_NAME'.$i, $name, 'chaine', 0, '', $conf->entity);
132 if (!($res > 0)) {
133 $error++;
134 }
135 $res = dolibarr_set_const($db, 'AGENDA_EXT_SRC'.$i, $src, 'chaine', 0, '', $conf->entity);
136 if (!($res > 0)) {
137 $error++;
138 }
139 $res = dolibarr_set_const($db, 'AGENDA_EXT_OFFSETTZ'.$i, $offsettz, 'chaine', 0, '', $conf->entity);
140 if (!($res > 0)) {
141 $error++;
142 }
143 $res = dolibarr_set_const($db, 'AGENDA_EXT_COLOR'.$i, $color, 'chaine', 0, '', $conf->entity);
144 if (!($res > 0)) {
145 $error++;
146 }
147 $res = dolibarr_set_const($db, 'AGENDA_EXT_ENABLED'.$i, $enabled, 'chaine', 0, '', $conf->entity);
148 if (!($res > 0)) {
149 $error++;
150 }
151 $i++;
152 }
153
154 // Save nb of agenda
155 if (!$error) {
156 $res = dolibarr_set_const($db, 'AGENDA_EXT_NB', trim(GETPOST('AGENDA_EXT_NB', 'int')), 'chaine', 0, '', $conf->entity);
157 if (!($res > 0)) {
158 $error++;
159 }
160 if (empty($conf->global->AGENDA_EXT_NB)) {
161 $conf->global->AGENDA_EXT_NB = 5;
162 }
163 $MAXAGENDA = empty($conf->global->AGENDA_EXT_NB) ? 5 : $conf->global->AGENDA_EXT_NB;
164 }
165
166 if (!$error) {
167 $db->commit();
168 setEventMessages($langs->trans("SetupSaved"), null, 'mesgs');
169 } else {
170 $db->rollback();
171 if (empty($errorsaved)) {
172 setEventMessages($langs->trans("Error"), null, 'errors');
173 }
174 }
175}
176
177/*
178 * View
179 */
180
181$form = new Form($db);
182$formadmin = new FormAdmin($db);
183$formother = new FormOther($db);
184
185$arrayofjs = array();
186$arrayofcss = array();
187
188$wikihelp = 'EN:Module_Agenda_En|FR:Module_Agenda|ES:Módulo_Agenda|DE:Modul_Terminplanung';
189llxHeader('', $langs->trans("AgendaSetup"), $wikihelp, '', 0, 0, $arrayofjs, $arrayofcss);
190
191$linkback = '<a href="'.DOL_URL_ROOT.'/admin/modules.php?restore_lastsearch_values=1">'.$langs->trans("BackToModuleList").'</a>';
192print load_fiche_titre($langs->trans("AgendaSetup"), $linkback, 'title_setup');
193
194print '<form name="extsitesconfig" action="'.$_SERVER["PHP_SELF"].'" method="post">';
195print '<input type="hidden" name="token" value="'.newToken().'">';
196print '<input type="hidden" name="action" value="save">';
197
198$head = agenda_prepare_head();
199
200print dol_get_fiche_head($head, 'extsites', $langs->trans("Agenda"), -1, 'action');
201
202print '<span class="opacitymedium">'.$langs->trans("AgendaExtSitesDesc")."</span><br>\n";
203print "<br>\n";
204
205
206$selectedvalue = getDolGlobalInt('AGENDA_DISABLE_EXT');
207if ($selectedvalue==1) $selectedvalue=0; else $selectedvalue=1;
208
209print "<table class=\"noborder\" width=\"100%\">";
210
211print "<tr class=\"liste_titre\">";
212print '<td>'.$langs->trans("Parameter")."</td>";
213print '<td class="center">'.$langs->trans("Value")."</td>";
214print "</tr>";
215
216// Show external agenda
217
218print '<tr class="oddeven">';
219print "<td>".$langs->trans("ExtSitesEnableThisTool")."</td>";
220print '<td class="center">';
221if ($conf->use_javascript_ajax) {
222 print ajax_constantonoff('AGENDA_DISABLE_EXT', array('enabled'=>array(0=>'.hideifnotset')), null, 1);
223} else {
224 if (empty($conf->global->AGENDA_DISABLE_EXT)) {
225 print '<a href="'.$_SERVER['PHP_SELF'].'?save=1&AGENDA_DISABLE_EXT=1">'.img_picto($langs->trans("Enabled"), 'on').'</a>';
226 } else {
227 print '<a href="'.$_SERVER['PHP_SELF'].'?save=1&AGENDA_DISABLE_EXT=0">'.img_picto($langs->trans("Disabled"), 'off').'</a>';
228 }
229}
230print "</td>";
231print "</tr>";
232
233// Nb of agenda
234
235print '<tr class="oddeven">';
236print "<td>".$langs->trans("ExtSitesNbOfAgenda")."</td>";
237print '<td class="center">';
238print '<input class="flat hideifnotset" type="text" size="2" id="AGENDA_EXT_NB" name="AGENDA_EXT_NB" value="'.$conf->global->AGENDA_EXT_NB.'">';
239print "</td>";
240print "</tr>";
241
242print "</table>";
243print "<br>";
244
245print "<table class=\"noborder\" width=\"100%\">";
246
247print "<tr class=\"liste_titre\">";
248print "<td>".$langs->trans("Parameter")."</td>";
249print "<td>".$langs->trans("Name")."</td>";
250print "<td>".$langs->trans("ExtSiteUrlAgenda")." (".$langs->trans("Example").': http://yoursite/agenda/agenda.ics)</td>';
251print "<td>".$form->textwithpicto($langs->trans("FixTZ"), $langs->trans("FillFixTZOnlyIfRequired"), 1).'</td>';
252print '<td class="right">'.$langs->trans("Color").'</td>';
253print '<td class="right">'.$langs->trans("ActiveByDefault").'</td>';
254print "</tr>";
255
256$i = 1;
257while ($i <= $MAXAGENDA) {
258 $key = $i;
259 $name = 'AGENDA_EXT_NAME' . $key;
260 $src = 'AGENDA_EXT_SRC' . $key;
261 $offsettz = 'AGENDA_EXT_OFFSETTZ' . $key;
262 $color = 'AGENDA_EXT_COLOR' . $key;
263 $enabled = 'AGENDA_EXT_ENABLED' . $key;
264 $default = 'AGENDA_EXT_ACTIVEBYDEFAULT' . $key;
265
266 print '<tr class="oddeven">';
267 // Nb
268 print '<td width="180" class="nowrap">' . $langs->trans("AgendaExtNb", $key) . "</td>";
269 // Name
270 print '<td><input type="text" class="flat hideifnotset" name="AGENDA_EXT_NAME' . $key . '" value="' . (GETPOST('AGENDA_EXT_NAME' . $key) ? GETPOST('AGENDA_EXT_NAME' . $key, 'alpha') : getDolGlobalString($name)) . '" size="28"></td>';
271 // URL
272 print '<td><input type="url" class="flat hideifnotset" name="AGENDA_EXT_SRC' . $key . '" value="' . (GETPOST('AGENDA_EXT_SRC' . $key) ? GETPOST('AGENDA_EXT_SRC' . $key, 'alpha') : getDolGlobalString($src)) . '" size="60"></td>';
273 // Offset TZ
274 print '<td><input type="text" class="flat hideifnotset" name="AGENDA_EXT_OFFSETTZ' . $key . '" value="' . (GETPOST('AGENDA_EXT_OFFSETTZ' . $key) ? GETPOST('AGENDA_EXT_OFFSETTZ' . $key) : getDolGlobalString($offsettz)) . '" size="2"></td>';
275 // Color (Possible colors are limited by Google)
276 print '<td class="nowrap right">';
277 //print $formadmin->selectColor($conf->global->$color, "google_agenda_color".$key, $colorlist);
278 print $formother->selectColor((GETPOST("AGENDA_EXT_COLOR" . $key) ? GETPOST("AGENDA_EXT_COLOR" . $key) : getDolGlobalString($color)), "AGENDA_EXT_COLOR" . $key, 'extsitesconfig', 1, '', 'hideifnotset');
279 print '</td>';
280 // Calendar active by default
281 print '<td class="nowrap right">';
282 if (!empty($conf->use_javascript_ajax)) {
283 print ajax_constantonoff('AGENDA_EXT_ACTIVEBYDEFAULT' . $key);
284 } else {
285 if (getDolGlobalString($default)) {
286 print '<a href="' . $_SERVER['PHP_SELF'] . '?action=del_AGENDA_EXT_ACTIVEBYDEFAULT' . $key . '&token='.newToken().'">' . img_picto($langs->trans("Disabled"), 'off') . '</a>';
287 } else {
288 print '<a href="' . $_SERVER['PHP_SELF'] . '?action=set_AGENDA_EXT_ACTIVEBYDEFAULT' . $key . '&token='.newToken().'">' . img_picto($langs->trans("Enabled"), 'on') . '</a>';
289 }
290 }
291 print '</td>';
292 print "</tr>";
293 $i++;
294}
295
296print '</table>';
297
298print dol_get_fiche_end();
299
300print '<div class="center">';
301print '<input type="submit" id="save" name="save" class="button hideifnotset button-save" value="'.$langs->trans("Save").'">';
302print '</div>';
303
304print "</form>\n";
305
306// End of page
307llxFooter();
308$db->close();
dolibarr_set_const($db, $name, $value, $type='chaine', $visible=0, $note='', $entity=1)
Insert a parameter (key,value) into database (delete old key then insert it again).
dolibarr_del_const($db, $name, $entity=1)
Delete a constant.
agenda_prepare_head()
Prepare array with list of tabs.
if(!defined('NOREQUIRESOC')) if(!defined( 'NOREQUIRETRAN')) if(!defined('NOTOKENRENEWAL')) if(!defined( 'NOREQUIREMENU')) if(!defined('NOREQUIREHTML')) if(!defined( 'NOREQUIREAJAX')) llxHeader()
Empty header.
Definition wrapper.php:56
llxFooter()
Empty footer.
Definition wrapper.php:70
Class to generate html code for admin pages.
Class to manage generation of HTML components Only common components must be here.
Classe permettant la generation de composants html autre Only common components are here.
dol_is_url($url)
Return if path is an URL.
load_fiche_titre($titre, $morehtmlright='', $picto='generic', $pictoisfullpath=0, $id='', $morecssontable='', $morehtmlcenter='')
Load a title with picto.
dol_get_fiche_head($links=array(), $active='', $title='', $notab=0, $picto='', $pictoisfullpath=0, $morehtmlright='', $morecss='', $limittoshow=0, $moretabssuffix='', $dragdropfile=0)
Show tabs of a record.
dol_get_fiche_end($notab=0)
Return tab footer of a card.
setEventMessage($mesgs, $style='mesgs', $noduplicate=0)
Set event message in dol_events session object.
getDolGlobalInt($key, $default=0)
Return dolibarr global constant int value.
img_picto($titlealt, $picto, $moreatt='', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt='', $morecss='', $marginleftonlyshort=2)
Show picto whatever it's its name (generic function)
GETPOST($paramname, $check='alphanohtml', $method=0, $filter=null, $options=null, $noreplace=0)
Return value of a param into GET or POST supervariable.
setEventMessages($mesg, $mesgs, $style='mesgs', $messagekey='', $noduplicate=0)
Set event messages in dol_events session object.
getDolGlobalString($key, $default='')
Return dolibarr global constant string value.
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.