dolibarr 19.0.3
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 (!getDolGlobalString('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;
111 $errorsaved = 0;
112
113 // Save agendas
114 while ($i <= $MAXAGENDA) {
115 $name = trim(GETPOST('AGENDA_EXT_NAME'.$i, 'alpha'));
116 $src = trim(GETPOST('AGENDA_EXT_SRC'.$i, 'alpha'));
117 $offsettz = trim(GETPOST('AGENDA_EXT_OFFSETTZ'.$i, 'alpha'));
118 $color = trim(GETPOST('AGENDA_EXT_COLOR'.$i, 'alpha'));
119 if ($color == '-1') {
120 $color = '';
121 }
122 $enabled = trim(GETPOST('AGENDA_EXT_ENABLED'.$i, 'alpha'));
123
124 if (!empty($src) && !dol_is_url($src)) {
125 setEventMessages($langs->trans("ErrorParamMustBeAnUrl"), null, 'errors');
126 $error++;
127 $errorsaved++;
128 break;
129 }
130
131 //print '-name='.$name.'-color='.$color;
132 $res = dolibarr_set_const($db, 'AGENDA_EXT_NAME'.$i, $name, 'chaine', 0, '', $conf->entity);
133 if (!($res > 0)) {
134 $error++;
135 }
136 $res = dolibarr_set_const($db, 'AGENDA_EXT_SRC'.$i, $src, 'chaine', 0, '', $conf->entity);
137 if (!($res > 0)) {
138 $error++;
139 }
140 $res = dolibarr_set_const($db, 'AGENDA_EXT_OFFSETTZ'.$i, $offsettz, 'chaine', 0, '', $conf->entity);
141 if (!($res > 0)) {
142 $error++;
143 }
144 $res = dolibarr_set_const($db, 'AGENDA_EXT_COLOR'.$i, $color, 'chaine', 0, '', $conf->entity);
145 if (!($res > 0)) {
146 $error++;
147 }
148 $res = dolibarr_set_const($db, 'AGENDA_EXT_ENABLED'.$i, $enabled, 'chaine', 0, '', $conf->entity);
149 if (!($res > 0)) {
150 $error++;
151 }
152 $i++;
153 }
154
155 // Save nb of agenda
156 if (!$error) {
157 $res = dolibarr_set_const($db, 'AGENDA_EXT_NB', trim(GETPOST('AGENDA_EXT_NB', 'int')), 'chaine', 0, '', $conf->entity);
158 if (!($res > 0)) {
159 $error++;
160 }
161 if (!getDolGlobalString('AGENDA_EXT_NB')) {
162 $conf->global->AGENDA_EXT_NB = 5;
163 }
164 $MAXAGENDA = !getDolGlobalString('AGENDA_EXT_NB') ? 5 : $conf->global->AGENDA_EXT_NB;
165 }
166
167 if (!$error) {
168 $db->commit();
169 setEventMessages($langs->trans("SetupSaved"), null, 'mesgs');
170 } else {
171 $db->rollback();
172 if (empty($errorsaved)) {
173 setEventMessages($langs->trans("Error"), null, 'errors');
174 }
175 }
176}
177
178/*
179 * View
180 */
181
182$form = new Form($db);
183$formadmin = new FormAdmin($db);
184$formother = new FormOther($db);
185
186$arrayofjs = array();
187$arrayofcss = array();
188
189$wikihelp = 'EN:Module_Agenda_En|FR:Module_Agenda|ES:Módulo_Agenda|DE:Modul_Terminplanung';
190llxHeader('', $langs->trans("AgendaSetup"), $wikihelp, '', 0, 0, $arrayofjs, $arrayofcss);
191
192$linkback = '<a href="'.DOL_URL_ROOT.'/admin/modules.php?restore_lastsearch_values=1">'.$langs->trans("BackToModuleList").'</a>';
193print load_fiche_titre($langs->trans("AgendaSetup"), $linkback, 'title_setup');
194
195print '<form name="extsitesconfig" action="'.$_SERVER["PHP_SELF"].'" method="post">';
196print '<input type="hidden" name="token" value="'.newToken().'">';
197print '<input type="hidden" name="action" value="save">';
198
199$head = agenda_prepare_head();
200
201print dol_get_fiche_head($head, 'extsites', $langs->trans("Agenda"), -1, 'action');
202
203print '<span class="opacitymedium">'.$langs->trans("AgendaExtSitesDesc")."</span><br>\n";
204print "<br>\n";
205
206
207$selectedvalue = getDolGlobalInt('AGENDA_DISABLE_EXT');
208if ($selectedvalue==1) {
209 $selectedvalue=0;
210} else {
211 $selectedvalue=1;
212}
213
214print "<table class=\"noborder\" width=\"100%\">";
215
216print "<tr class=\"liste_titre\">";
217print '<td>'.$langs->trans("Parameter")."</td>";
218print '<td class="center">'.$langs->trans("Value")."</td>";
219print "</tr>";
220
221// Show external agenda
222
223print '<tr class="oddeven">';
224print "<td>".$langs->trans("ExtSitesEnableThisTool")."</td>";
225print '<td class="center">';
226if ($conf->use_javascript_ajax) {
227 print ajax_constantonoff('AGENDA_DISABLE_EXT', array('enabled'=>array(0=>'.hideifnotset')), null, 1);
228} else {
229 if (!getDolGlobalString('AGENDA_DISABLE_EXT')) {
230 print '<a href="'.$_SERVER['PHP_SELF'].'?save=1&AGENDA_DISABLE_EXT=1">'.img_picto($langs->trans("Enabled"), 'on').'</a>';
231 } else {
232 print '<a href="'.$_SERVER['PHP_SELF'].'?save=1&AGENDA_DISABLE_EXT=0">'.img_picto($langs->trans("Disabled"), 'off').'</a>';
233 }
234}
235print "</td>";
236print "</tr>";
237
238// Nb of agenda
239
240print '<tr class="oddeven">';
241print "<td>".$langs->trans("ExtSitesNbOfAgenda")."</td>";
242print '<td class="center">';
243print '<input class="flat hideifnotset" type="text" size="2" id="AGENDA_EXT_NB" name="AGENDA_EXT_NB" value="' . getDolGlobalString('AGENDA_EXT_NB').'">';
244print "</td>";
245print "</tr>";
246
247print "</table>";
248print "<br>";
249
250print "<table class=\"noborder\" width=\"100%\">";
251
252print "<tr class=\"liste_titre\">";
253print "<td>".$langs->trans("Parameter")."</td>";
254print "<td>".$langs->trans("Name")."</td>";
255print "<td>".$langs->trans("ExtSiteUrlAgenda")." (".$langs->trans("Example").': http://yoursite/agenda/agenda.ics)</td>';
256print "<td>".$form->textwithpicto($langs->trans("FixTZ"), $langs->trans("FillFixTZOnlyIfRequired"), 1).'</td>';
257print '<td class="right">'.$langs->trans("Color").'</td>';
258print '<td class="right">'.$langs->trans("ActiveByDefault").'</td>';
259print "</tr>";
260
261$i = 1;
262while ($i <= $MAXAGENDA) {
263 $key = $i;
264 $name = 'AGENDA_EXT_NAME' . $key;
265 $src = 'AGENDA_EXT_SRC' . $key;
266 $offsettz = 'AGENDA_EXT_OFFSETTZ' . $key;
267 $color = 'AGENDA_EXT_COLOR' . $key;
268 $enabled = 'AGENDA_EXT_ENABLED' . $key;
269 $default = 'AGENDA_EXT_ACTIVEBYDEFAULT' . $key;
270
271 print '<tr class="oddeven">';
272 // Nb
273 print '<td width="180" class="nowrap">' . $langs->trans("AgendaExtNb", $key) . "</td>";
274 // Name
275 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>';
276 // URL
277 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>';
278 // Offset TZ
279 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>';
280 // Color (Possible colors are limited by Google)
281 print '<td class="nowrap right">';
282 print $formother->selectColor((GETPOST("AGENDA_EXT_COLOR" . $key) ? GETPOST("AGENDA_EXT_COLOR" . $key) : getDolGlobalString($color)), "AGENDA_EXT_COLOR" . $key, 'extsitesconfig', 1, '', 'hideifnotset');
283 print '</td>';
284 // Calendar active by default
285 print '<td class="nowrap right">';
286 if (!empty($conf->use_javascript_ajax)) {
287 print ajax_constantonoff('AGENDA_EXT_ACTIVEBYDEFAULT' . $key);
288 } else {
289 if (getDolGlobalString($default)) {
290 print '<a href="' . $_SERVER['PHP_SELF'] . '?action=del_AGENDA_EXT_ACTIVEBYDEFAULT' . $key . '&token='.newToken().'">' . img_picto($langs->trans("Disabled"), 'off') . '</a>';
291 } else {
292 print '<a href="' . $_SERVER['PHP_SELF'] . '?action=set_AGENDA_EXT_ACTIVEBYDEFAULT' . $key . '&token='.newToken().'">' . img_picto($langs->trans("Enabled"), 'on') . '</a>';
293 }
294 }
295 print '</td>';
296 print "</tr>";
297 $i++;
298}
299
300print '</table>';
301
302print dol_get_fiche_end();
303
304print '<div class="center">';
305print '<input type="submit" id="save" name="save" class="button hideifnotset button-save" value="'.$langs->trans("Save").'">';
306print '</div>';
307
308print "</form>\n";
309
310// End of page
311llxFooter();
312$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:55
llxFooter()
Empty footer.
Definition wrapper.php:69
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 a 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.