Completed
Push — master ( 337770...ba0a0c )
by
unknown
07:39 queued 14s
created

programs/configuration.php (4 issues)

Labels
Severity

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
//-------------------------------------------------------------------------
3
// OVIDENTIA http://www.ovidentia.org
4
// Ovidentia is free software; you can redistribute it and/or modify
5
// it under the terms of the GNU General Public License as published by
6
// the Free Software Foundation; either version 2, or (at your option)
7
// any later version.
8
//
9
// This program is distributed in the hope that it will be useful, but
10
// WITHOUT ANY WARRANTY; without even the implied warranty of
11
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12
// See the GNU General Public License for more details.
13
//
14
// You should have received a copy of the GNU General Public License
15
// along with this program; if not, write to the Free Software
16
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
17
// USA.
18
//-------------------------------------------------------------------------
19
/**
20
 * @license http://opensource.org/licenses/gpl-license.php GNU General Public License (GPL)
21
 * @copyright Copyright (c) 2008 by CANTICO ({@link http://www.cantico.fr})
22
 */
23
require_once $GLOBALS['babInstallPath'].'utilit/urlincl.php';
24
require_once dirname(__FILE__) . '/functions.php';
25
26
function caldav_editConfiguration()
27
{
28
	global $babBody;
29
	$W = bab_Widgets();
30
	$page = $W->BabPage();
31
	$page->setTitle(caldav_translate('CalDAV configuration'));
32
33
	/* @var $caldav Func_CalendarBackend_Caldav */
34
	$caldav = bab_functionality::get('CalendarBackend/Caldav');
35
36
	if (!$caldav) {
37
		$babBody->addError(caldav_translate('Unable to instanciate \'CalendarBackend/Caldav\' functionality.'));
38
		$babBody->addError(caldav_translate('Please check that the LibCaldav addon is correctly installed.'));
39
		return;
40
	}
41
42
	$userCalendarUrl = $caldav->getDefaultUserCalendarUrl();
43
	$adminIdentifier =  $caldav->getAdminIdentifier();
44
	$adminPassword = $caldav->getAdminPassword();
45
	$storagebackend = $caldav->getStorageBackend();
46
	$verify_peer = $caldav->getVerifyPeer();
47
	$configbyuser = $caldav->configByUser();
48
49
	$registry = bab_getRegistryInstance();
50
	$registry->changeDirectory('/LibCaldav/');
51
	$default_backend = $registry->getValue('default_backend');
52
	
53
	$deleteOnCancel = $registry->getValue('deleteOnCancel', false);
54
55
56
	$form = $W->Form(null, $W->VBoxLayout()->setVerticalSpacing(1, 'em'));
57
	$options = $form->Options()->width(70,'em');
58
	$form->addClass('BabLoginMenuBackground')
59
		->addClass('widget-centered')
60
		->addClass('widget-bordered')
61
		->setCanvasOptions($options);
62
	$form->setHiddenValue('tg', bab_rp('tg'));
63
	$form->setHiddenValue('idx', 'saveConfiguration');
64
	
65
	$form->addItem(
66
		$W->LabelledWidget(caldav_translate('Use caldav for user events storage and allow users to select caldav'), $W->CheckBox()->setValue($storagebackend), 'storagebackend')
67
	);
68
	
69
	$common = $W->Frame(null, $W->VBoxLayout()->setVerticalSpacing(1,'em'));
70
	
71
	
72
	
73
	$form->addItem(
74
			$W->LabelledWidget(caldav_translate('Users can configure the username and password'), $W->CheckBox()->setValue($configbyuser)->setAssociatedDisplayable($common, array('0')), 'configbyuser')
75
	);
76
	
77
	
78
	$form->addItem($common);
79
	
80
	$desc = caldav_translate('%u will be replaced by the ovidentia login id');
81
	
82
	$common->addItem($W->LabelledWidget(caldav_translate('User calendar url'), $W->LineEdit()->setSize(70)->setValue($userCalendarUrl), 'user_calendar_url', $desc));
83
	$common->addItem($W->LabelledWidget(caldav_translate('Admin identifier'), $W->LineEdit()->setSize(30)->setValue($adminIdentifier), 'admin_identifier'));
84
	$common->addItem($W->LabelledWidget(caldav_translate('Admin password'), $W->LineEdit()->setSize(30)->obfuscate()->setValue($adminPassword), 'admin_password'));
85
	$common->addItem($W->LabelledWidget(caldav_translate('Change calendar backend to caldav for all ovidentia users'), $W->CheckBox(), 'set_caldav'));
86
	$common->addItem($W->LabelledWidget(caldav_translate('Set the caldav backend for the new created users'), $W->CheckBox()->setValue((bool) $default_backend), 'default_backend'));
87
	
88
	
89
	$form->addItem($W->LabelledWidget(caldav_translate('SSL peer verification for HTTPS serveurs'), $W->CheckBox()->setValue((bool) $verify_peer), 'verify_peer'));
90
	
91
	
92
	$form->addItem($W->LabelledWidget(
93
	    caldav_translate('Delete events on cancel'), 
94
	    $W->CheckBox()->setValue($deleteOnCancel), 
95
	    'deleteOnCancel',
96
	    caldav_translate('On SoGo, canceled events are displayed like the others events, use this option to really delete events when canceled by ovidentia.')
97
	));
98
	
99
	$form->addItem($W->SubmitButton()->setLabel(caldav_translate('Save')));
100
	
101
	$page->addItem($form);
102
	
103
	$addon = bab_getAddonInfosInstance('LibCaldav');
104
	
105
	
106
	$page->addItemMenu('configuration', caldav_translate('Configuration'), $addon->getUrl().'configuration');
107
	$page->addItemMenu('servers', caldav_translate('Servers'), $addon->getUrl().'configuration&idx=servers');
108
	$page->addItemMenu('resources', caldav_translate('Resources'), $addon->getUrl().'configuration&idx=resources');
109
	
110
	$page->setCurrentItemMenu('configuration');
111
	
112
	$page->displayHtml();
113
}
114
115
116
117
function caldav_saveConfiguration($configbyuser, $userCalendarUrl, $adminIdentifier, $adminPassword, $storagebackend, $verify_peer, $set_caldav, $default_backend, $deleteOnCancel)
118
{
119
	$babBody = bab_getBody();
120
121
	/* @var $caldav Func_CalendarBackend_Caldav */
122
	$caldav = bab_functionality::get('CalendarBackend/Caldav');
123
124 View Code Duplication
	if (!$caldav) {
125
		$babBody->addError(caldav_translate('Unable to instanciate "CalendarBackend/Caldav" functionality.'));
126
		$babBody->addError(caldav_translate('Please check that the LibCaldav addon is correctly installed.'));
127
		return false;
128
	}
129
	
130
	if ($configbyuser)
131
	{
132
		$userCalendarUrl = '';
133
		$adminIdentifier = '';
134
		$adminPassword = '';
135
	}
136
137
	$caldav->setDefaultUserCalendarUrl($userCalendarUrl);
138
	$caldav->setAdminIdentifier($adminIdentifier);
139
	$caldav->setAdminPassword($adminPassword);
140
	$caldav->setStorageBackend($storagebackend);
141
	$caldav->setVerifyPeer($verify_peer);
142
	
143
	if ($set_caldav)
144
	{
145
		require_once $GLOBALS['babInstallPath'].'utilit/calapi.php';
146
		
147
		if (!function_exists('bab_setPersonnalCalendarBackend'))
148
		{
149
			$babBody->addError(caldav_translate('Ovidentia 9.1.93 is required to set the caldendar backend on all users'));
150
		}
151
		
152
		$arr = bab_getGroupsMembers(BAB_REGISTERED_GROUP);
153
		foreach($arr as $user)
154
		{
155
			bab_setPersonnalCalendarBackend($user['id'], $caldav);
156
		}
157
	}
158
	
159
	
160
	$registry = bab_getRegistryInstance();
161
	$registry->changeDirectory('/LibCaldav/');
162
	$registry->setKeyValue('default_backend', (bool) $default_backend);
163
	$registry->setKeyValue('deleteOnCancel', (bool) $deleteOnCancel);
164
	
165
166
	$babBody->babEcho('<div style="border: 1px solid #cca; padding: 1em; margin: 2em; background-color: #eec">' . caldav_translate('Configuration saved.') . '</div>');
167
168
	return true;
169
}
170
171
172
173
174
class caldav_servers
175
{
176
	private $res;
177
178
	public $t_name;
179
	public $t_url;
180
	public $t_add;
181
	public $addurl;
182
	
183
	public $altbg = true;
184
185
186 View Code Duplication
	public function __construct()
187
	{
188
		global $babDB;
189
		$addon = bab_getAddonInfosInstance('LibCaldav');
190
191
		$this->res = $babDB->db_query("SELECT * FROM libcaldav_servers");
192
193
194
		$this->t_name = caldav_translate('Name');
195
		$this->t_server_url = caldav_translate('Caldav Server Url');
196
		$this->t_user_calendar_path = caldav_translate('User calendar path');
197
		$this->t_add = caldav_translate('Add');
198
		$this->t_use_unique_id = caldav_translate('Use unique ID');
199
200
		$this->addurl = $addon->getUrl().'configuration&idx=server';
201
202
	}
203
204
	public function getnext()
205
	{
206
		global $babDB;
207
208
		if ($arr = $babDB->db_fetch_assoc($this->res))
209
		{
210
			$this->altbg = !$this->altbg;
211
			$addon = bab_getAddonInfosInstance('LibCaldav');
212
213
			$this->name = bab_toHtml($arr['name']);
214
			$this->server_url 	= bab_toHtml($arr['server_url']);
215
			$this->user_calendar_path 	= bab_toHtml($arr['user_calendar_path']);
216
			$this->use_unique_id = bab_toHtml(caldav_translate($arr['use_unique_id']));
217
			$this->editurl = bab_toHtml($addon->getUrl().'configuration&idx=server&server='.$arr['id']);
218
219
			return true;
220
		}
221
		return false;
222
	}
223
224 View Code Duplication
	public function display()
225
	{
226
		global $babBody;
227
		$addon = bab_getAddonInfosInstance('LibCaldav');
228
229
		$babBody->setTitle(caldav_translate('Availables servers for users configuration'));
230
		$babBody->babEcho(bab_printTemplate($this, $addon->getTemplatePath() . 'configuration.html', 'servers'));
231
232
		$babBody->addItemMenu('configuration', caldav_translate('Configuration'), $addon->getUrl().'configuration');
233
		$babBody->addItemMenu('servers', caldav_translate('Servers'), $addon->getUrl().'configuration&idx=servers');
234
		$babBody->addItemMenu('resources', caldav_translate('Resources'), $addon->getUrl().'configuration&idx=resources');
235
236
		$babBody->setCurrentItemMenu('servers');
237
	}
238
}
239
240
241
242
243
244
245
246
class caldav_resources
247
{
248
	private $res;
249
	
250
	public $t_name;
251
	public $t_url;
252
	public $t_add;
253
	public $addurl;
254
	
255
	public $altbg = true;
256
	
257
	
258 View Code Duplication
	public function __construct()
259
	{
260
		global $babDB;
261
		$addon = bab_getAddonInfosInstance('LibCaldav');
262
		
263
		$this->res = $babDB->db_query("SELECT * FROM libcaldav_resources");
264
		
265
		
266
		$this->t_name = caldav_translate('Name');
267
		$this->t_url = caldav_translate('Url');
268
		$this->t_add = caldav_translate('Add');
269
		$this->t_access = caldav_translate('Access');
270
		
271
		$this->addurl = $addon->getUrl().'configuration&idx=resource';
272
		
273
	}
274
	
275
	public function getnext()
276
	{
277
		global $babDB;
278
		
279
		if ($arr = $babDB->db_fetch_assoc($this->res))
280
		{
281
			$addon = bab_getAddonInfosInstance('LibCaldav');
282
			
283
			$this->altbg = !$this->altbg;
284
			
285
			$this->name = bab_toHtml($arr['name']);
286
			$this->url 	= bab_toHtml($arr['url']);
287
			$this->editurl = bab_toHtml($addon->getUrl().'configuration&idx=resource&resource='.$arr['id']);
288
			$this->accessurl = bab_toHtml($addon->getUrl().'configuration&idx=resourceaccess&id_resource='.$arr['id']);
289
			
290
			return true;
291
		}
292
		return false;
293
	}
294
	
295 View Code Duplication
	public function display()
296
	{
297
		global $babBody;
298
		$addon = bab_getAddonInfosInstance('LibCaldav');
299
		
300
		$babBody->setTitle(caldav_translate('Resources list'));
301
		$babBody->babEcho(bab_printTemplate($this, $addon->getTemplatePath() . 'configuration.html', 'resources'));
302
		
303
		$babBody->addItemMenu('configuration', caldav_translate('Configuration'), $addon->getUrl().'configuration');
304
		$babBody->addItemMenu('servers', caldav_translate('Servers'), $addon->getUrl().'configuration&idx=servers');
305
		$babBody->addItemMenu('resources', caldav_translate('Resources'), $addon->getUrl().'configuration&idx=resources');
306
		
307
		$babBody->setCurrentItemMenu('resources');
308
	}
309
}
310
311
312
313
class caldav_server_editor
314
{
315
	public function __construct()
316
	{
317
		global $babDB;
318
		
319
		$this->t_name = caldav_translate('Name');
320
		$this->t_server_url = caldav_translate('Caldav Server Url');
321
		$this->t_server_url_help = caldav_translate('Example: http://localhost/davical/caldav.php');
322
		$this->t_user_calendar_path = caldav_translate('User calendar path');
323
		$this->t_user_calendar_path_help = caldav_translate('%u will be replaced by the login id, example: /%u/home');
324
		$this->t_user_calendar_path_help2 = caldav_translate('if the login id contain an email address %n will be replaced by the username before @, otherwise it will be replaced by the full login id, example: /%n/home');
325
		$this->t_user_calendar_path_help3 = caldav_translate('If a unique id is needed, %c will be replaced by the unique id of the user, example : %c/ will give  https://url.yourservercaldav.com/calendars/%c/');
0 ignored issues
show
The property t_user_calendar_path_help3 does not seem to exist. Did you mean t_user_calendar_path?

An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name.

If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading.

Loading history...
326
		$this->t_need_unique_id = caldav_translate('Needs a unique id');
327
		$this->t_need_unique_id_help = caldav_translate("It means that the user will have to give his id which is contain in the Url of the calendar, example: https://dav.fruux.com/calendars/XXXXXXXXXXX/XXXXXXXXXXX/");
0 ignored issues
show
The property t_need_unique_id_help does not seem to exist. Did you mean t_need_unique_id?

An attempt at access to an undefined property has been detected. This may either be a typographical error or the property has been renamed but there are still references to its old name.

If you really want to allow access to undefined properties, you can define magic methods to allow access. See the php core documentation on Overloading.

Loading history...
328
		$this->t_record = caldav_translate('Save');
329
		$this->t_delete = caldav_translate('Delete');
330
		$this->t_confirm = caldav_translate('Do you really want to delete this server configuration?');
331
		
332
		$id = bab_rp('server');
333
		if (!empty($id))
334
		{
335
			$res = $babDB->db_query("SELECT * FROM libcaldav_servers WHERE id=".$babDB->quote($id));
336
			$arr = $babDB->db_fetch_assoc($res);
337
		
338
			if (!$arr)
339
			{
340
				throw new Exception('server not found');
341
			}
342
		
343
			$this->server = bab_toHtml($arr['id']);
344
			$this->name = bab_toHtml($arr['name']);
345
			$this->test = bab_toHtml("mdr");
0 ignored issues
show
The property test does not exist. Did you maybe forget to declare it?

In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code:

class MyClass { }

$x = new MyClass();
$x->foo = true;

Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion:

class MyClass {
    public $foo;
}

$x = new MyClass();
$x->foo = true;
Loading history...
346
			$this->server_url = bab_toHtml($arr['server_url']);
347
			$this->user_calendar_path = bab_toHtml($arr['user_calendar_path']);
348
			$this->use_unique_id = bab_toHtml(" ");
0 ignored issues
show
The property use_unique_id does not exist. Did you maybe forget to declare it?

In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code:

class MyClass { }

$x = new MyClass();
$x->foo = true;

Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion:

class MyClass {
    public $foo;
}

$x = new MyClass();
$x->foo = true;
Loading history...
349
			if($arr["use_unique_id"]=="true")
350
			{
351
			    $this->use_unique_id = bab_toHtml("checked");
352
			}
353
		
354
		} else {
355
			$this->server = '';
356
			$this->name = '';
357
			$this->server_url = '';
358
			$this->user_calendar_path = '';
359
			$this->use_unique_id='';
360
		}
361
		
362
	}
363
	
364 View Code Duplication
	public function display()
365
	{
366
		global $babBody;
367
		$addon = bab_getAddonInfosInstance('LibCaldav');
368
	
369
		$babBody->setTitle(caldav_translate('Edit server'));
370
		$babBody->babEcho(bab_printTemplate($this, $addon->getTemplatePath() . 'configuration.html', 'editserver'));
371
	
372
	}
373
}
374
375
class caldav_resource_editor
376
{
377
	public function __construct()
378
	{
379
		global $babDB;
380
		$addon = bab_getAddonInfosInstance('LibCaldav');
381
	
382
		
383
	
384
	
385
		$this->t_name = caldav_translate('Name');
386
		$this->t_name_help = caldav_translate('Name of calendar as displayed in the selection list');
387
		$this->t_url = caldav_translate('Url');
388
		$this->t_url_help = caldav_translate('Full url to the caldav calendar (ex: http://serveur/davical/caldav.php/user/home/)');
389
		$this->t_nickname = caldav_translate('Nickname');
390
		$this->t_password = caldav_translate('Password');
391
		$this->t_record = caldav_translate('Save');
392
		$this->t_delete = caldav_translate('Delete');
393
		$this->t_confirm = caldav_translate('Do you really want to delete this resource?');
394
	
395
		$this->addurl = $addon->getUrl().'configuration&idx=resource';
396
		
397
		
398
		$id = bab_rp('resource');
399
		if (!empty($id))
400
		{
401
			$res = $babDB->db_query("SELECT * FROM libcaldav_resources WHERE id=".$babDB->quote($id));
402
			$arr = $babDB->db_fetch_assoc($res);
403
			
404
			if (!$arr)
405
			{
406
				throw new Exception('resource not found');
407
			}
408
			
409
			$this->resource = bab_toHtml($arr['id']);
410
			$this->name = bab_toHtml($arr['name']);
411
			$this->url = bab_toHtml($arr['url']);
412
			$this->nickname = bab_toHtml($arr['nickname']);
413
			$this->password = bab_toHtml($arr['password']);
414
			
415
		} else {
416
			$this->resource = '';
417
			$this->name = '';
418
			$this->url = '';
419
			$this->nickname = '';
420
			$this->password = '';
421
		}
422
		
423
		
424
	
425
	}
426
	
427
	
428 View Code Duplication
	public function display()
429
	{
430
		$babBody = bab_getBody();
431
		$addon = bab_getAddonInfosInstance('LibCaldav');
432
	
433
		$babBody->setTitle(caldav_translate('Resource'));
434
		$babBody->babEcho(bab_printTemplate($this, $addon->getTemplatePath() . 'configuration.html', 'edit'));
435
436
	}
437
}
438
439
440
441
function caldav_deleteServer()
442
{
443
	require_once $GLOBALS['babInstallPath'].'/utilit/urlincl.php';
444
	global $babDB, $babBody;
445
	$id_server = bab_pp('id_server', null);
446
447
	if (empty($id_server))
448
	{
449
		return;
450
	}
451
	
452
	$registry = bab_getRegistryInstance();
453
	$registry->changeDirectory('/LibCaldav/Users/');
454
	$keys = array();
455
	while ($id_user = $registry->fetchChildDir())
456
	{
457
		$keys[] = $id_user.'server';
458
	}
459
	
460
461
	$res = $registry->getValueEx($keys);
462
	/*@var $res bab_RegistryIterator */
463
	
464
	foreach($res as $arr)
465
	{
466
		if (((int) $id_server) === (int) $arr['value'])
467
		{
468
			$babBody->addError(sprintf(caldav_translate('A user is associated to this server')));
469
			return false;
470
		}
471
	}
472
	
473
		
474
	$babDB->db_query('DELETE FROM libcaldav_servers WHERE id='.$babDB->quote($id_server));
475
	
476
477
	$url = bab_url::get_request('tg');
478
	$url->idx = 'servers';
479
	$url->location();
480
}
481
482
483
484
function caldav_deleteResource()
485
{
486
	require_once $GLOBALS['babInstallPath'].'/utilit/urlincl.php';
487
	global $babDB;
488
	$id_resource = bab_pp('id_resource', null);
489
	
490
	if (!empty($id_resource))
491
	{
492
		$babDB->db_query('DELETE FROM libcaldav_resources WHERE id='.$babDB->quote($id_resource));
493
	}
494
	
495
	$url = bab_url::get_request('tg');
496
	$url->idx = 'resources';
497
	$url->location();
498
}
499
500
501
502
503
504
function caldav_saveServer()
505
{
506
	require_once $GLOBALS['babInstallPath'].'/utilit/urlincl.php';
507
	global $babDB, $babBody;
508
509
	$id_server = bab_pp('id_server', null);
510
	$name = bab_pp('name');
511
	$server_url = bab_pp('server_url');
512
	$user_calendar_path = bab_pp('user_calendar_path');
513
	$use_unique_id = bab_pp('use_unique_id');
514
515
516
	if (empty($name))
517
	{
518
		$babBody->addError(caldav_translate('The name is mandatory'));
519
		return false;
520
	}
521
522
	if (empty($server_url))
523
	{
524
		$babBody->addError(caldav_translate('The server url is mandatory'));
525
		return false;
526
	}
527
	
528
	if (empty($user_calendar_path))
529
	{
530
		$babBody->addError(caldav_translate('The user calendar path is mandatory'));
531
		return false;
532
	}
533
	
534
	if(empty($use_unique_id))
535
	{
536
	    $use_unique_id = "false";
537
	}
538
	;
539
540
541 View Code Duplication
	if (!empty($id_server))
542
	{
543
		$babDB->db_query('
544
			UPDATE libcaldav_servers SET
545
				name='.$babDB->quote($name).',
546
				server_url='.$babDB->quote($server_url).',
547
				user_calendar_path='.$babDB->quote($user_calendar_path).',
548
                use_unique_id='.$babDB->quote($use_unique_id).' 
549
			WHERE id='.$babDB->quote($id_server)
550
		);
551
552
553
	} else {
554
555
		$babDB->db_query('
556
			INSERT INTO libcaldav_servers
557
				(name, server_url, user_calendar_path,use_unique_id)
558
			VALUES
559
				(
560
				'.$babDB->quote($name).',
561
				'.$babDB->quote($server_url).',
562
				'.$babDB->quote($user_calendar_path).',
563
                '.$babDB->quote($use_unique_id).'    
564
				)'
565
		);
566
567
	}
568
569
570
	$url = bab_url::get_request('tg');
571
	$url->idx = 'servers';
572
	$url->location();
573
}
574
575
576
577
578
function caldav_saveResource()
579
{
580
	require_once $GLOBALS['babInstallPath'].'/utilit/urlincl.php';
581
	global $babDB, $babBody;
582
	
583
	$id_resource = bab_pp('id_resource', null);
584
	$name = bab_pp('name');
585
	$url = bab_pp('url');
586
	$nickname = bab_pp('nickname');
587
	$password = bab_pp('password');
588
589
590
	if (empty($name))
591
	{
592
		$babBody->addError(caldav_translate('The name is mandatory'));
593
		return false;
594
	}
595
	
596
	if (empty($url))
597
	{
598
		$babBody->addError(caldav_translate('The url is mandatory'));
599
		return false;
600
	}
601
	
602
	
603 View Code Duplication
	if (!empty($id_resource))
604
	{
605
		$babDB->db_query('
606
			UPDATE libcaldav_resources SET 
607
				name='.$babDB->quote($name).',
608
				url='.$babDB->quote($url).',
609
				nickname='.$babDB->quote($nickname).',
610
				password='.$babDB->quote($password).' 
611
			WHERE id='.$babDB->quote($id_resource)
612
		);
613
		
614
		
615
	} else {
616
		
617
		$babDB->db_query('
618
				INSERT INTO libcaldav_resources 
619
					(name, url, nickname, password) 
620
				VALUES 
621
					(
622
						'.$babDB->quote($name).', 
623
						'.$babDB->quote($url).',
624
						'.$babDB->quote($nickname).',
625
						'.$babDB->quote($password).'
626
					)'
627
		);
628
		
629
	}
630
	
631
	
632
	$url = bab_url::get_request('tg');
633
	$url->idx = 'resources';
634
	$url->location();
635
}
636
637
638
if (!bab_isUserAdministrator())
639
{
640
	return;
641
}
642
643
644
$idx = bab_rp('idx');
645
646
switch($idx) {
647
	
648
	case 'saveResource':
649
		if (isset($_POST['delete']))
650
		{
651
			caldav_deleteResource();
652
		}
653
		caldav_saveResource();
654
	
655
	case 'resource':
656
		$resources = new caldav_resource_editor();
657
		$resources->display();
658
		break;
659
	
660
	case 'resources':
661
		$resources = new caldav_resources();
662
		$resources->display();
663
		break;
664
		
665
	case 'resourceaccess':
666
		require_once $GLOBALS['babInstallPath'].'admin/acl.php';
667
		require_once $GLOBALS['babInstallPath'].'utilit/urlincl.php';
668
		
669
		if (bab_rp('aclview'))
670
		{
671
			maclGroups();
672
			$url = bab_url::get_request('tg');
673
			$url->idx = 'resources';
674
			$url->location();
675
		}
676
		
677
		$macl = new macl(bab_rp('tg'), bab_rp('idx'), bab_rp('id_resource'), 'aclview');
678
		$macl->addtable('libcaldav_resource_groups', caldav_translate('Who can view this resource?'));
679
		$macl->babecho();
680
		break;
681
	
682
683
	case 'saveConfiguration':
684
		caldav_saveConfiguration(
685
			(bool) bab_rp('configbyuser'), 
686
			bab_rp('user_calendar_url'), 
687
			bab_rp('admin_identifier'), 
688
			bab_rp('admin_password'), 
689
			bab_rp('storagebackend'), 
690
			(bool) bab_rp('verify_peer'),
691
			(bool) bab_rp('set_caldav'),
692
			(bool) bab_rp('default_backend'),
693
			(bool) bab_rp('deleteOnCancel')
694
		);
695
		caldav_editConfiguration();
696
		break;
697
		
698
	case 'servers':
699
		$servers = new caldav_servers();
700
		$servers->display();
701
		break;
702
	
703
	case 'saveServer':
704
		if (isset($_POST['delete']))
705
		{
706
			if (!caldav_deleteServer())
707
			{
708
				$servers = new caldav_servers();
709
				$servers->display();
710
			}
711
		} else {
712
			caldav_saveServer();
713
		}
714
		break;
715
		
716
	case 'server':
717
		$server = new caldav_server_editor();
718
		$server->display();
719
		break;
720
721
	default:
722
	case 'configuration':
723
		caldav_editConfiguration();
724
		break;
725
}
726