@@ -265,7 +265,7 @@ discard block  | 
                                                    ||
| 265 | 265 | |
| 266 | 266 | // set session_timeout from global php.ini and default to 14400=4h, if not set  | 
                                                        
| 267 | 267 |  		if (!($GLOBALS['egw_info']['server']['sessions_timeout'] = ini_get('session.gc_maxlifetime'))) | 
                                                        
| 268 | -      	{ | 
                                                        |
| 268 | +		{ | 
                                                        |
| 269 | 269 |        		ini_set('session.gc_maxlifetime', $GLOBALS['egw_info']['server']['sessions_timeout']=14400); | 
                                                        
| 270 | 270 | }  | 
                                                        
| 271 | 271 | }  | 
                                                        
@@ -298,7 +298,10 @@ discard block  | 
                                                    ||
| 298 | 298 | */  | 
                                                        
| 299 | 299 | function commit_session()  | 
                                                        
| 300 | 300 |  	{ | 
                                                        
| 301 | - if (self::ERROR_LOG_DEBUG) error_log(__METHOD__."() sessionid=$this->sessionid, _SESSION[".self::EGW_SESSION_VAR.']='.array2string($_SESSION[self::EGW_SESSION_VAR]).' '.function_backtrace());  | 
                                                        |
| 301 | + if (self::ERROR_LOG_DEBUG)  | 
                                                        |
| 302 | +		{ | 
                                                        |
| 303 | + error_log(__METHOD__."() sessionid=$this->sessionid, _SESSION[".self::EGW_SESSION_VAR.']='.array2string($_SESSION[self::EGW_SESSION_VAR]).' '.function_backtrace());  | 
                                                        |
| 304 | + }  | 
                                                        |
| 302 | 305 | self::encrypt($this->kp3);  | 
                                                        
| 303 | 306 | |
| 304 | 307 | session_write_close();  | 
                                                        
@@ -360,7 +363,10 @@ discard block  | 
                                                    ||
| 360 | 363 | */  | 
                                                        
| 361 | 364 | static function log_session_usage(&$arr,$label,$recursion=true,$limit=1000)  | 
                                                        
| 362 | 365 |  	{ | 
                                                        
| 363 | - if (!is_array($arr)) return;  | 
                                                        |
| 366 | + if (!is_array($arr))  | 
                                                        |
| 367 | +		{ | 
                                                        |
| 368 | + return;  | 
                                                        |
| 369 | + }  | 
                                                        |
| 364 | 370 | |
| 365 | 371 | $sizes = array();  | 
                                                        
| 366 | 372 | foreach($arr as $key => &$data)  | 
                                                        
@@ -375,7 +381,10 @@ discard block  | 
                                                    ||
| 375 | 381 | if ($diff > $limit)  | 
                                                        
| 376 | 382 |  			{ | 
                                                        
| 377 | 383 |  				error_log("strlen({$label}[$key])=".Vfs::hsize($size).", diff=".Vfs::hsize($diff)); | 
                                                        
| 378 | - if ($recursion) self::log_session_usage($arr[$key],$label.'['.$key.']',$recursion,$limit);  | 
                                                        |
| 384 | + if ($recursion)  | 
                                                        |
| 385 | +				{ | 
                                                        |
| 386 | + self::log_session_usage($arr[$key],$label.'['.$key.']',$recursion,$limit);  | 
                                                        |
| 387 | + }  | 
                                                        |
| 379 | 388 | }  | 
                                                        
| 380 | 389 | }  | 
                                                        
| 381 | 390 | }  | 
                                                        
@@ -475,7 +484,10 @@ discard block  | 
                                                    ||
| 475 | 484 | $this->passwd = $passwd;  | 
                                                        
| 476 | 485 | $this->passwd_type = $passwd_type;  | 
                                                        
| 477 | 486 | }  | 
                                                        
| 478 | - if (self::ERROR_LOG_DEBUG) error_log(__METHOD__."($this->login,$this->passwd,$this->passwd_type,$no_session,$auth_check) starting ...");  | 
                                                        |
| 487 | + if (self::ERROR_LOG_DEBUG)  | 
                                                        |
| 488 | +			{ | 
                                                        |
| 489 | + error_log(__METHOD__."($this->login,$this->passwd,$this->passwd_type,$no_session,$auth_check) starting ...");  | 
                                                        |
| 490 | + }  | 
                                                        |
| 479 | 491 | |
| 480 | 492 | self::split_login_domain($login,$this->account_lid,$this->account_domain);  | 
                                                        
| 481 | 493 | // add domain to the login, if not already there  | 
                                                        
@@ -525,7 +537,10 @@ discard block  | 
                                                    ||
| 525 | 537 |  				{ | 
                                                        
| 526 | 538 | $this->log_access($this->reason,$login,$user_ip,0); // log unsuccessfull login  | 
                                                        
| 527 | 539 | }  | 
                                                        
| 528 | - if (self::ERROR_LOG_DEBUG) error_log(__METHOD__."($this->login,$this->passwd,$this->passwd_type,$no_session,$auth_check) UNSUCCESSFULL ($this->reason)");  | 
                                                        |
| 540 | + if (self::ERROR_LOG_DEBUG)  | 
                                                        |
| 541 | +				{ | 
                                                        |
| 542 | + error_log(__METHOD__."($this->login,$this->passwd,$this->passwd_type,$no_session,$auth_check) UNSUCCESSFULL ($this->reason)");  | 
                                                        |
| 543 | + }  | 
                                                        |
| 529 | 544 | return false;  | 
                                                        
| 530 | 545 | }  | 
                                                        
| 531 | 546 | |
@@ -550,10 +565,13 @@ discard block  | 
                                                    ||
| 550 | 565 | // --> allows this stateless protocolls which use basic auth to use sessions!  | 
                                                        
| 551 | 566 | if (($this->sessionid = self::get_sessionid(true)))  | 
                                                        
| 552 | 567 |  			{ | 
                                                        
| 553 | - if (session_status() !== PHP_SESSION_ACTIVE) // gives warning including password  | 
                                                        |
| 568 | + if (session_status() !== PHP_SESSION_ACTIVE)  | 
                                                        |
| 569 | +				{ | 
                                                        |
| 570 | + // gives warning including password  | 
                                                        |
| 554 | 571 |  				{ | 
                                                        
| 555 | 572 | session_id($this->sessionid);  | 
                                                        
| 556 | 573 | }  | 
                                                        
| 574 | + }  | 
                                                        |
| 557 | 575 | }  | 
                                                        
| 558 | 576 | else  | 
                                                        
| 559 | 577 |  			{ | 
                                                        
@@ -574,7 +592,10 @@ discard block  | 
                                                    ||
| 574 | 592 | $this->reason = 'account is expired';  | 
                                                        
| 575 | 593 | $this->cd_reason = self::CD_ACCOUNT_EXPIRED;  | 
                                                        
| 576 | 594 | |
| 577 | - if (self::ERROR_LOG_DEBUG) error_log(__METHOD__."($this->login,$this->passwd,$this->passwd_type,$no_session,$auth_check) UNSUCCESSFULL ($this->reason)");  | 
                                                        |
| 595 | + if (self::ERROR_LOG_DEBUG)  | 
                                                        |
| 596 | +				{ | 
                                                        |
| 597 | + error_log(__METHOD__."($this->login,$this->passwd,$this->passwd_type,$no_session,$auth_check) UNSUCCESSFULL ($this->reason)");  | 
                                                        |
| 598 | + }  | 
                                                        |
| 578 | 599 | return false;  | 
                                                        
| 579 | 600 | }  | 
                                                        
| 580 | 601 | |
@@ -590,7 +611,10 @@ discard block  | 
                                                    ||
| 590 | 611 | $this->cd_reason = $e->getCode();  | 
                                                        
| 591 | 612 | $this->reason = $e->getMessage();  | 
                                                        
| 592 | 613 | $this->log_access($this->reason, $login, $user_ip, 0); // log unsuccessfull login  | 
                                                        
| 593 | - if (self::ERROR_LOG_DEBUG) error_log(__METHOD__."($this->login,$this->passwd,$this->passwd_type,$no_session,$auth_check,$fail_on_forced_password_change,'$check_2fa') UNSUCCESSFULL ($this->reason)");  | 
                                                        |
| 614 | + if (self::ERROR_LOG_DEBUG)  | 
                                                        |
| 615 | +					{ | 
                                                        |
| 616 | + error_log(__METHOD__."($this->login,$this->passwd,$this->passwd_type,$no_session,$auth_check,$fail_on_forced_password_change,'$check_2fa') UNSUCCESSFULL ($this->reason)");  | 
                                                        |
| 617 | + }  | 
                                                        |
| 594 | 618 | return false;  | 
                                                        
| 595 | 619 | }  | 
                                                        
| 596 | 620 | }  | 
                                                        
@@ -619,24 +643,33 @@ discard block  | 
                                                    ||
| 619 | 643 | 'passwd' => $this->passwd,  | 
                                                        
| 620 | 644 | 'account_domain' => $this->account_domain,  | 
                                                        
| 621 | 645 | 'user_ip' => $user_ip,  | 
                                                        
| 622 | - ),'',true))) // true = run hooks from all apps, not just the ones the current user has perms to run  | 
                                                        |
| 646 | + ),'',true)))  | 
                                                        |
| 647 | +			{ | 
                                                        |
| 648 | + // true = run hooks from all apps, not just the ones the current user has perms to run  | 
                                                        |
| 623 | 649 |  			{ | 
                                                        
| 624 | 650 | foreach($hook_result as $reason)  | 
                                                        
| 625 | 651 |  				{ | 
                                                        
| 626 | 652 | if ($reason) // called hook requests to deny the session  | 
                                                        
| 627 | 653 |  					{ | 
                                                        
| 628 | 654 | $this->reason = $this->cd_reason = $reason;  | 
                                                        
| 655 | + }  | 
                                                        |
| 629 | 656 | $this->log_access($this->reason,$login,$user_ip,0); // log unsuccessfull login  | 
                                                        
| 630 | - if (self::ERROR_LOG_DEBUG) error_log(__METHOD__."($this->login,$this->passwd,$this->passwd_type,$no_session,$auth_check) UNSUCCESSFULL ($this->reason)");  | 
                                                        |
| 657 | + if (self::ERROR_LOG_DEBUG)  | 
                                                        |
| 658 | +						{ | 
                                                        |
| 659 | + error_log(__METHOD__."($this->login,$this->passwd,$this->passwd_type,$no_session,$auth_check) UNSUCCESSFULL ($this->reason)");  | 
                                                        |
| 660 | + }  | 
                                                        |
| 631 | 661 | return false;  | 
                                                        
| 632 | 662 | }  | 
                                                        
| 633 | 663 | }  | 
                                                        
| 634 | 664 | }  | 
                                                        
| 635 | 665 | $GLOBALS['egw']->db->transaction_begin();  | 
                                                        
| 636 | 666 | $this->register_session($this->login,$user_ip,$now,$this->session_flags);  | 
                                                        
| 637 | - if ($this->session_flags != 'A') // dont log anonymous sessions  | 
                                                        |
| 667 | + if ($this->session_flags != 'A')  | 
                                                        |
| 668 | +			{ | 
                                                        |
| 669 | + // dont log anonymous sessions  | 
                                                        |
| 638 | 670 |  			{ | 
                                                        
| 639 | 671 | $this->sessionid_access_log = $this->log_access($this->sessionid,$login,$user_ip,$this->account_id);  | 
                                                        
| 672 | + }  | 
                                                        |
| 640 | 673 | // We do NOT log anonymous sessions to not block website and also to cope with  | 
                                                        
| 641 | 674 | // high rate anon endpoints might be called creating a bottleneck in the egw_accounts table.  | 
                                                        
| 642 | 675 |  				Cache::setSession('phpgwapi', 'account_previous_login', $GLOBALS['egw']->auth->previous_login); | 
                                                        
@@ -663,7 +696,10 @@ discard block  | 
                                                    ||
| 663 | 696 | self::egw_setcookie(self::REMEMBER_ME_COOKIE, $token, $expiration);  | 
                                                        
| 664 | 697 | }  | 
                                                        
| 665 | 698 | |
| 666 | - if (self::ERROR_LOG_DEBUG) error_log(__METHOD__."($this->login,$this->passwd,$this->passwd_type,$no_session,$auth_check) successfull sessionid=$this->sessionid");  | 
                                                        |
| 699 | + if (self::ERROR_LOG_DEBUG)  | 
                                                        |
| 700 | +			{ | 
                                                        |
| 701 | + error_log(__METHOD__."($this->login,$this->passwd,$this->passwd_type,$no_session,$auth_check) successfull sessionid=$this->sessionid");  | 
                                                        |
| 702 | + }  | 
                                                        |
| 667 | 703 | |
| 668 | 704 | // hook called once session is created  | 
                                                        
| 669 | 705 | Hooks::process(array(  | 
                                                        
@@ -1130,10 +1166,13 @@ discard block  | 
                                                    ||
| 1130 | 1166 |  		//error_log(__METHOD__."('$login', '$ip') false_ip=$false_ip, false_id=$false_id --> blocked=".array2string($blocked)); | 
                                                        
| 1131 | 1167 | |
| 1132 | 1168 | if ($blocked && $GLOBALS['egw_info']['server']['admin_mails'] &&  | 
                                                        
| 1133 | - $GLOBALS['egw_info']['server']['login_blocked_mail_time'] < time()-5*60) // max. one mail every 5mins  | 
                                                        |
| 1169 | + $GLOBALS['egw_info']['server']['login_blocked_mail_time'] < time()-5*60)  | 
                                                        |
| 1170 | +		{ | 
                                                        |
| 1171 | + // max. one mail every 5mins  | 
                                                        |
| 1134 | 1172 |  		{ | 
                                                        
| 1135 | 1173 |  			try { | 
                                                        
| 1136 | 1174 | $mailer = new Mailer();  | 
                                                        
| 1175 | + }  | 
                                                        |
| 1137 | 1176 | // notify admin(s) via email  | 
                                                        
| 1138 | 1177 |  				$mailer->setFrom('eGroupWare@'.$GLOBALS['egw_info']['server']['mail_suffix']); | 
                                                        
| 1139 | 1178 |  				$mailer->addHeader('Subject', lang("eGroupWare: login blocked for user '%1', IP %2",$login,$ip)); | 
                                                        
@@ -1211,7 +1250,10 @@ discard block  | 
                                                    ||
| 1211 | 1250 |  		{ | 
                                                        
| 1212 | 1251 | $sessionid = null;  | 
                                                        
| 1213 | 1252 | }  | 
                                                        
| 1214 | - if (self::ERROR_LOG_DEBUG) error_log(__METHOD__."() _SERVER[REQUEST_URI]='$_SERVER[REQUEST_URI]' returning ".print_r($sessionid,true));  | 
                                                        |
| 1253 | + if (self::ERROR_LOG_DEBUG)  | 
                                                        |
| 1254 | +		{ | 
                                                        |
| 1255 | + error_log(__METHOD__."() _SERVER[REQUEST_URI]='$_SERVER[REQUEST_URI]' returning ".print_r($sessionid,true));  | 
                                                        |
| 1256 | + }  | 
                                                        |
| 1215 | 1257 | return $sessionid;  | 
                                                        
| 1216 | 1258 | }  | 
                                                        
| 1217 | 1259 | |
@@ -1241,7 +1283,10 @@ discard block  | 
                                                    ||
| 1241 | 1283 | */  | 
                                                        
| 1242 | 1284 | function verify($sessionid=null,$kp3=null)  | 
                                                        
| 1243 | 1285 |  	{ | 
                                                        
| 1244 | -		if (self::ERROR_LOG_DEBUG) error_log(__METHOD__."('$sessionid','$kp3') ".function_backtrace()); | 
                                                        |
| 1286 | + if (self::ERROR_LOG_DEBUG)  | 
                                                        |
| 1287 | +		{ | 
                                                        |
| 1288 | +			error_log(__METHOD__."('$sessionid','$kp3') ".function_backtrace()); | 
                                                        |
| 1289 | + }  | 
                                                        |
| 1245 | 1290 | |
| 1246 | 1291 | $fill_egw_info_and_repositories = !$GLOBALS['egw_info']['flags']['restored_from_session'];  | 
                                                        
| 1247 | 1292 | |
@@ -1257,7 +1302,10 @@ discard block  | 
                                                    ||
| 1257 | 1302 | |
| 1258 | 1303 | if (!$this->sessionid)  | 
                                                        
| 1259 | 1304 |  		{ | 
                                                        
| 1260 | -			if (self::ERROR_LOG_DEBUG) error_log(__METHOD__."('$sessionid') get_sessionid()='".self::get_sessionid()."' No session ID"); | 
                                                        |
| 1305 | + if (self::ERROR_LOG_DEBUG)  | 
                                                        |
| 1306 | +			{ | 
                                                        |
| 1307 | +				error_log(__METHOD__."('$sessionid') get_sessionid()='".self::get_sessionid()."' No session ID"); | 
                                                        |
| 1308 | + }  | 
                                                        |
| 1261 | 1309 | return false;  | 
                                                        
| 1262 | 1310 | }  | 
                                                        
| 1263 | 1311 | |
@@ -1278,14 +1326,20 @@ discard block  | 
                                                    ||
| 1278 | 1326 | // check if we have a eGroupware session --> return false if not (but dont destroy it!)  | 
                                                        
| 1279 | 1327 | if (is_null($_SESSION) || !isset($_SESSION[self::EGW_SESSION_VAR]))  | 
                                                        
| 1280 | 1328 |  		{ | 
                                                        
| 1281 | -			if (self::ERROR_LOG_DEBUG) error_log(__METHOD__."('$sessionid') session does NOT exist!"); | 
                                                        |
| 1329 | + if (self::ERROR_LOG_DEBUG)  | 
                                                        |
| 1330 | +			{ | 
                                                        |
| 1331 | +				error_log(__METHOD__."('$sessionid') session does NOT exist!"); | 
                                                        |
| 1332 | + }  | 
                                                        |
| 1282 | 1333 | return false;  | 
                                                        
| 1283 | 1334 | }  | 
                                                        
| 1284 | 1335 | $session =& $_SESSION[self::EGW_SESSION_VAR];  | 
                                                        
| 1285 | 1336 | |
| 1286 | 1337 | if ($session['session_dla'] <= time() - $GLOBALS['egw_info']['server']['sessions_timeout'])  | 
                                                        
| 1287 | 1338 |  		{ | 
                                                        
| 1288 | -			if (self::ERROR_LOG_DEBUG) error_log(__METHOD__."('$sessionid') session timed out!"); | 
                                                        |
| 1339 | + if (self::ERROR_LOG_DEBUG)  | 
                                                        |
| 1340 | +			{ | 
                                                        |
| 1341 | +				error_log(__METHOD__."('$sessionid') session timed out!"); | 
                                                        |
| 1342 | + }  | 
                                                        |
| 1289 | 1343 | $this->destroy($sessionid,$kp3);  | 
                                                        
| 1290 | 1344 | return false;  | 
                                                        
| 1291 | 1345 | }  | 
                                                        
@@ -1313,7 +1367,10 @@ discard block  | 
                                                    ||
| 1313 | 1367 | $this->account_id = $GLOBALS['egw']->accounts->name2id($this->account_lid,'account_lid','u');  | 
                                                        
| 1314 | 1368 | if (!$this->account_id)  | 
                                                        
| 1315 | 1369 |  		{ | 
                                                        
| 1316 | -			if (self::ERROR_LOG_DEBUG) error_log("*** Session::verify($sessionid) !accounts::name2id('$this->account_lid')"); | 
                                                        |
| 1370 | + if (self::ERROR_LOG_DEBUG)  | 
                                                        |
| 1371 | +			{ | 
                                                        |
| 1372 | +				error_log("*** Session::verify($sessionid) !accounts::name2id('$this->account_lid')"); | 
                                                        |
| 1373 | + }  | 
                                                        |
| 1317 | 1374 | return false;  | 
                                                        
| 1318 | 1375 | }  | 
                                                        
| 1319 | 1376 | |
@@ -1340,7 +1397,10 @@ discard block  | 
                                                    ||
| 1340 | 1397 | |
| 1341 | 1398 | if ($GLOBALS['egw']->accounts->is_expired($GLOBALS['egw_info']['user']))  | 
                                                        
| 1342 | 1399 |  		{ | 
                                                        
| 1343 | -			if (self::ERROR_LOG_DEBUG) error_log("*** Session::verify($sessionid) accounts is expired"); | 
                                                        |
| 1400 | + if (self::ERROR_LOG_DEBUG)  | 
                                                        |
| 1401 | +			{ | 
                                                        |
| 1402 | +				error_log("*** Session::verify($sessionid) accounts is expired"); | 
                                                        |
| 1403 | + }  | 
                                                        |
| 1344 | 1404 | return false;  | 
                                                        
| 1345 | 1405 | }  | 
                                                        
| 1346 | 1406 |  		$this->passwd = base64_decode(Cache::getSession('phpgwapi', 'password')); | 
                                                        
@@ -1351,7 +1411,10 @@ discard block  | 
                                                    ||
| 1351 | 1411 | }  | 
                                                        
| 1352 | 1412 | if ($this->account_domain != $GLOBALS['egw_info']['user']['domain'])  | 
                                                        
| 1353 | 1413 |  		{ | 
                                                        
| 1354 | -			if (self::ERROR_LOG_DEBUG) error_log("*** Session::verify($sessionid) wrong domain"); | 
                                                        |
| 1414 | + if (self::ERROR_LOG_DEBUG)  | 
                                                        |
| 1415 | +			{ | 
                                                        |
| 1416 | +				error_log("*** Session::verify($sessionid) wrong domain"); | 
                                                        |
| 1417 | + }  | 
                                                        |
| 1355 | 1418 | return false;  | 
                                                        
| 1356 | 1419 | }  | 
                                                        
| 1357 | 1420 | |
@@ -1360,7 +1423,10 @@ discard block  | 
                                                    ||
| 1360 | 1423 | if (strtoupper(substr(PHP_OS,0,3)) != 'WIN' && (!$GLOBALS['egw_info']['user']['session_ip'] ||  | 
                                                        
| 1361 | 1424 | $GLOBALS['egw_info']['user']['session_ip'] != $this->getuser_ip()))  | 
                                                        
| 1362 | 1425 |  			{ | 
                                                        
| 1363 | -				if (self::ERROR_LOG_DEBUG) error_log("*** Session::verify($sessionid) wrong IP"); | 
                                                        |
| 1426 | + if (self::ERROR_LOG_DEBUG)  | 
                                                        |
| 1427 | +				{ | 
                                                        |
| 1428 | +					error_log("*** Session::verify($sessionid) wrong IP"); | 
                                                        |
| 1429 | + }  | 
                                                        |
| 1364 | 1430 | return false;  | 
                                                        
| 1365 | 1431 | }  | 
                                                        
| 1366 | 1432 | }  | 
                                                        
@@ -1373,7 +1439,10 @@ discard block  | 
                                                    ||
| 1373 | 1439 | }  | 
                                                        
| 1374 | 1440 | if (!$this->account_lid)  | 
                                                        
| 1375 | 1441 |  		{ | 
                                                        
| 1376 | -			if (self::ERROR_LOG_DEBUG) error_log("*** Session::verify($sessionid) !account_lid"); | 
                                                        |
| 1442 | + if (self::ERROR_LOG_DEBUG)  | 
                                                        |
| 1443 | +			{ | 
                                                        |
| 1444 | +				error_log("*** Session::verify($sessionid) !account_lid"); | 
                                                        |
| 1445 | + }  | 
                                                        |
| 1377 | 1446 | return false;  | 
                                                        
| 1378 | 1447 | }  | 
                                                        
| 1379 | 1448 | |
@@ -1392,13 +1461,19 @@ discard block  | 
                                                    ||
| 1392 | 1461 | $_REQUEST[self::EGW_SESSION_NAME] === $this->sessionid &&  | 
                                                        
| 1393 | 1462 | (!isset($_COOKIE[self::EGW_SESSION_NAME]) || $_COOKIE[self::EGW_SESSION_NAME] !== $_REQUEST[self::EGW_SESSION_NAME]))  | 
                                                        
| 1394 | 1463 |  		{ | 
                                                        
| 1395 | -			if (self::ERROR_LOG_DEBUG) error_log("--> Session::verify($sessionid) SUCCESS, but NO required cookies set --> setting them now"); | 
                                                        |
| 1464 | + if (self::ERROR_LOG_DEBUG)  | 
                                                        |
| 1465 | +			{ | 
                                                        |
| 1466 | +				error_log("--> Session::verify($sessionid) SUCCESS, but NO required cookies set --> setting them now"); | 
                                                        |
| 1467 | + }  | 
                                                        |
| 1396 | 1468 | self::egw_setcookie(self::EGW_SESSION_NAME,$this->sessionid);  | 
                                                        
| 1397 | 1469 |  			self::egw_setcookie('kp3',$this->kp3); | 
                                                        
| 1398 | 1470 |  			self::egw_setcookie('domain',$this->account_domain); | 
                                                        
| 1399 | 1471 | }  | 
                                                        
| 1400 | 1472 | |
| 1401 | -		if (self::ERROR_LOG_DEBUG) error_log("--> Session::verify($sessionid) SUCCESS"); | 
                                                        |
| 1473 | + if (self::ERROR_LOG_DEBUG)  | 
                                                        |
| 1474 | +		{ | 
                                                        |
| 1475 | +			error_log("--> Session::verify($sessionid) SUCCESS"); | 
                                                        |
| 1476 | + }  | 
                                                        |
| 1402 | 1477 | |
| 1403 | 1478 | return true;  | 
                                                        
| 1404 | 1479 | }  | 
                                                        
@@ -1418,14 +1493,20 @@ discard block  | 
                                                    ||
| 1418 | 1493 | }  | 
                                                        
| 1419 | 1494 | $this->log_access($sessionid); // log logout-time  | 
                                                        
| 1420 | 1495 | |
| 1421 | - if (self::ERROR_LOG_DEBUG) error_log(__METHOD__."($sessionid,$kp3)");  | 
                                                        |
| 1496 | + if (self::ERROR_LOG_DEBUG)  | 
                                                        |
| 1497 | +		{ | 
                                                        |
| 1498 | + error_log(__METHOD__."($sessionid,$kp3)");  | 
                                                        |
| 1499 | + }  | 
                                                        |
| 1422 | 1500 | |
| 1423 | - if (is_numeric($sessionid)) // do we have a access-log-id --> get PHP session id  | 
                                                        |
| 1501 | + if (is_numeric($sessionid))  | 
                                                        |
| 1502 | +		{ | 
                                                        |
| 1503 | + // do we have a access-log-id --> get PHP session id  | 
                                                        |
| 1424 | 1504 |  		{ | 
                                                        
| 1425 | 1505 | $sessionid = $GLOBALS['egw']->db->select(self::ACCESS_LOG_TABLE,'session_php',array(  | 
                                                        
| 1426 | 1506 | 'sessionid' => $sessionid,  | 
                                                        
| 1427 | 1507 | ),__LINE__,__FILE__)->fetchColumn();  | 
                                                        
| 1428 | 1508 | }  | 
                                                        
| 1509 | + }  | 
                                                        |
| 1429 | 1510 | |
| 1430 | 1511 | Hooks::process(array(  | 
                                                        
| 1431 | 1512 | 'location' => 'session_destroyed',  | 
                                                        
@@ -1435,7 +1516,10 @@ discard block  | 
                                                    ||
| 1435 | 1516 | // Only do the following, if where working with the current user  | 
                                                        
| 1436 | 1517 | if (!$GLOBALS['egw_info']['user']['sessionid'] || $sessionid == $GLOBALS['egw_info']['user']['sessionid'])  | 
                                                        
| 1437 | 1518 |  		{ | 
                                                        
| 1438 | - if (self::ERROR_LOG_DEBUG) error_log(__METHOD__." ********* about to call session_destroy!");  | 
                                                        |
| 1519 | + if (self::ERROR_LOG_DEBUG)  | 
                                                        |
| 1520 | +			{ | 
                                                        |
| 1521 | + error_log(__METHOD__." ********* about to call session_destroy!");  | 
                                                        |
| 1522 | + }  | 
                                                        |
| 1439 | 1523 | session_unset();  | 
                                                        
| 1440 | 1524 | @session_destroy();  | 
                                                        
| 1441 | 1525 | // we need to (re-)load the eGW session-handler, as session_destroy unloads custom session-handlers  | 
                                                        
@@ -1530,7 +1614,10 @@ discard block  | 
                                                    ||
| 1530 | 1614 | }  | 
                                                        
| 1531 | 1615 | else  | 
                                                        
| 1532 | 1616 |  		{ | 
                                                        
| 1533 | - if ($othervars) $extravars .= ($extravars?'&':'').$othervars;  | 
                                                        |
| 1617 | + if ($othervars)  | 
                                                        |
| 1618 | +			{ | 
                                                        |
| 1619 | + $extravars .= ($extravars?'&':'').$othervars;  | 
                                                        |
| 1620 | + }  | 
                                                        |
| 1534 | 1621 | }  | 
                                                        
| 1535 | 1622 | |
| 1536 | 1623 | // parse extravars string into the vars array  | 
                                                        
@@ -1539,7 +1626,11 @@ discard block  | 
                                                    ||
| 1539 | 1626 |  			foreach(explode('&',$extravars) as $expr) | 
                                                        
| 1540 | 1627 |  			{ | 
                                                        
| 1541 | 1628 |  				list($var,$val) = explode('=', $expr,2); | 
                                                        
| 1542 | -				if (strpos($val,'%26') != false) $val = str_replace('%26','&',$val);	// make sure to not double encode & | 
                                                        |
| 1629 | + if (strpos($val,'%26') != false)  | 
                                                        |
| 1630 | +				{ | 
                                                        |
| 1631 | +					$val = str_replace('%26','&',$val); | 
                                                        |
| 1632 | + }  | 
                                                        |
| 1633 | + // make sure to not double encode &  | 
                                                        |
| 1543 | 1634 | if (substr($var,-2) == '[]')  | 
                                                        
| 1544 | 1635 |  				{ | 
                                                        
| 1545 | 1636 | $vars[substr($var,0,-2)][] = $val;  | 
                                                        
@@ -1636,14 +1727,22 @@ discard block  | 
                                                    ||
| 1636 | 1727 |  		{ | 
                                                        
| 1637 | 1728 | self::set_cookiedomain();  | 
                                                        
| 1638 | 1729 | }  | 
                                                        
| 1639 | - if (self::ERROR_LOG_DEBUG) error_log(__METHOD__."($cookiename,$cookievalue,$cookietime,$cookiepath,".self::$cookie_domain.")");  | 
                                                        |
| 1730 | + if (self::ERROR_LOG_DEBUG)  | 
                                                        |
| 1731 | +		{ | 
                                                        |
| 1732 | + error_log(__METHOD__."($cookiename,$cookievalue,$cookietime,$cookiepath,".self::$cookie_domain.")");  | 
                                                        |
| 1733 | + }  | 
                                                        |
| 1640 | 1734 | |
| 1641 | 1735 | // if we are installed in iOS as web-app, we must not set a cookietime==0 (session-cookie),  | 
                                                        
| 1642 | 1736 | // as every change between apps will cause the cookie to get lost  | 
                                                        
| 1643 | 1737 | static $is_iOS = null;  | 
                                                        
| 1644 | -		if (!$cookietime && !isset($is_iOS)) $is_iOS = (bool)preg_match('/^(iPhone|iPad|iPod)/i', Header\UserAgent::mobile()); | 
                                                        |
| 1738 | + if (!$cookietime && !isset($is_iOS))  | 
                                                        |
| 1739 | +		{ | 
                                                        |
| 1740 | +			$is_iOS = (bool)preg_match('/^(iPhone|iPad|iPod)/i', Header\UserAgent::mobile()); | 
                                                        |
| 1741 | + }  | 
                                                        |
| 1645 | 1742 | |
| 1646 | - if(!headers_sent()) // gives only a warning, but can not send the cookie anyway  | 
                                                        |
| 1743 | + if(!headers_sent())  | 
                                                        |
| 1744 | +		{ | 
                                                        |
| 1745 | + // gives only a warning, but can not send the cookie anyway  | 
                                                        |
| 1647 | 1746 |  		{ | 
                                                        
| 1648 | 1747 | setcookie($cookiename, $cookievalue,  | 
                                                        
| 1649 | 1748 | !$cookietime && $is_iOS ? time()+self::IOS_SESSION_COOKIE_LIFETIME : $cookietime,  | 
                                                        
@@ -1651,6 +1750,7 @@ discard block  | 
                                                    ||
| 1651 | 1750 | // if called via HTTPS, only send cookie for https and only allow cookie access via HTTP (true)  | 
                                                        
| 1652 | 1751 | empty($GLOBALS['egw_info']['server']['insecure_cookies']) && Header\Http::schema() === 'https', true);  | 
                                                        
| 1653 | 1752 | }  | 
                                                        
| 1753 | + }  | 
                                                        |
| 1654 | 1754 | }  | 
                                                        
| 1655 | 1755 | |
| 1656 | 1756 | /**  | 
                                                        
@@ -1702,15 +1802,25 @@ discard block  | 
                                                    ||
| 1702 | 1802 | */  | 
                                                        
| 1703 | 1803 | public static function search_instance($login,$domain_requested,&$default_domain,$server_names,array $domains=null)  | 
                                                        
| 1704 | 1804 |  	{ | 
                                                        
| 1705 | -		if (self::ERROR_LOG_DEBUG) error_log(__METHOD__."('$login','$domain_requested',".array2string($default_domain).".".array2string($server_names).".".array2string($domains).")"); | 
                                                        |
| 1805 | + if (self::ERROR_LOG_DEBUG)  | 
                                                        |
| 1806 | +		{ | 
                                                        |
| 1807 | +			error_log(__METHOD__."('$login','$domain_requested',".array2string($default_domain).".".array2string($server_names).".".array2string($domains).")"); | 
                                                        |
| 1808 | + }  | 
                                                        |
| 1706 | 1809 | |
| 1707 | - if (is_null($domains)) $domains = $GLOBALS['egw_domain'];  | 
                                                        |
| 1810 | + if (is_null($domains))  | 
                                                        |
| 1811 | +		{ | 
                                                        |
| 1812 | + $domains = $GLOBALS['egw_domain'];  | 
                                                        |
| 1813 | + }  | 
                                                        |
| 1708 | 1814 | |
| 1709 | - if (!isset($default_domain) || !isset($domains[$default_domain])) // allow to overwrite the default domain  | 
                                                        |
| 1815 | + if (!isset($default_domain) || !isset($domains[$default_domain]))  | 
                                                        |
| 1816 | +		{ | 
                                                        |
| 1817 | + // allow to overwrite the default domain  | 
                                                        |
| 1710 | 1818 |  		{ | 
                                                        
| 1711 | 1819 | foreach((array)$server_names as $server_name)  | 
                                                        
| 1712 | 1820 |  			{ | 
                                                        
| 1713 | -				list($server_name) = explode(':', $server_name);	// remove port from HTTP_HOST | 
                                                        |
| 1821 | +				list($server_name) = explode(':', $server_name); | 
                                                        |
| 1822 | + }  | 
                                                        |
| 1823 | + // remove port from HTTP_HOST  | 
                                                        |
| 1714 | 1824 | if(isset($domains[$server_name]))  | 
                                                        
| 1715 | 1825 |  				{ | 
                                                        
| 1716 | 1826 | $default_domain = $server_name;  | 
                                                        
@@ -1735,11 +1845,14 @@ discard block  | 
                                                    ||
| 1735 | 1845 | }  | 
                                                        
| 1736 | 1846 | }  | 
                                                        
| 1737 | 1847 | }  | 
                                                        
| 1738 | - if (isset($login)) // on login  | 
                                                        |
| 1848 | + if (isset($login))  | 
                                                        |
| 1849 | +		{ | 
                                                        |
| 1850 | + // on login  | 
                                                        |
| 1739 | 1851 |  		{ | 
                                                        
| 1740 | 1852 | if (strpos($login,'@') === false || count($domains) == 1)  | 
                                                        
| 1741 | 1853 |  			{ | 
                                                        
| 1742 | 1854 | $login .= '@' . (isset($_POST['logindomain']) ? $_POST['logindomain'] : $default_domain);  | 
                                                        
| 1855 | + }  | 
                                                        |
| 1743 | 1856 | }  | 
                                                        
| 1744 | 1857 |  			$parts = explode('@',$login); | 
                                                        
| 1745 | 1858 | $domain = array_pop($parts);  | 
                                                        
@@ -1753,7 +1866,10 @@ discard block  | 
                                                    ||
| 1753 | 1866 |  		{ | 
                                                        
| 1754 | 1867 | $domain = $default_domain;  | 
                                                        
| 1755 | 1868 | }  | 
                                                        
| 1756 | - if (self::ERROR_LOG_DEBUG) error_log(__METHOD__."() default_domain=".array2string($default_domain).', login='.array2string($login)." returning ".array2string($domain));  | 
                                                        |
| 1869 | + if (self::ERROR_LOG_DEBUG)  | 
                                                        |
| 1870 | +		{ | 
                                                        |
| 1871 | + error_log(__METHOD__."() default_domain=".array2string($default_domain).', login='.array2string($login)." returning ".array2string($domain));  | 
                                                        |
| 1872 | + }  | 
                                                        |
| 1757 | 1873 | |
| 1758 | 1874 | return $domain;  | 
                                                        
| 1759 | 1875 | }  | 
                                                        
@@ -1792,14 +1908,20 @@ discard block  | 
                                                    ||
| 1792 | 1908 |  		{ | 
                                                        
| 1793 | 1909 |  			list(, $action) = explode('.ajax_exec.template.', $_GET['menuaction']); | 
                                                        
| 1794 | 1910 | |
| 1795 | - if (empty($action)) $action = $_GET['menuaction'];  | 
                                                        |
| 1911 | + if (empty($action))  | 
                                                        |
| 1912 | +			{ | 
                                                        |
| 1913 | + $action = $_GET['menuaction'];  | 
                                                        |
| 1914 | + }  | 
                                                        |
| 1796 | 1915 | }  | 
                                                        
| 1797 | 1916 | else  | 
                                                        
| 1798 | 1917 |  		{ | 
                                                        
| 1799 | 1918 | $action = $_SERVER['PHP_SELF'];  | 
                                                        
| 1800 | 1919 | // remove EGroupware path, if not installed in webroot  | 
                                                        
| 1801 | 1920 | $egw_path = $GLOBALS['egw_info']['server']['webserver_url'];  | 
                                                        
| 1802 | - if ($egw_path[0] != '/') $egw_path = parse_url($egw_path,PHP_URL_PATH);  | 
                                                        |
| 1921 | + if ($egw_path[0] != '/')  | 
                                                        |
| 1922 | +			{ | 
                                                        |
| 1923 | + $egw_path = parse_url($egw_path,PHP_URL_PATH);  | 
                                                        |
| 1924 | + }  | 
                                                        |
| 1803 | 1925 | if ($action == '/Microsoft-Server-ActiveSync')  | 
                                                        
| 1804 | 1926 |  			{ | 
                                                        
| 1805 | 1927 | $action .= '?Cmd='.$_GET['Cmd'].'&DeviceId='.$_GET['DeviceId'];  | 
                                                        
@@ -1832,7 +1954,10 @@ discard block  | 
                                                    ||
| 1832 | 1954 | |
| 1833 | 1955 | $_SESSION[self::EGW_SESSION_VAR]['session_dla'] = time();  | 
                                                        
| 1834 | 1956 | $_SESSION[self::EGW_SESSION_VAR]['session_action'] = $this->action;  | 
                                                        
| 1835 | - if (self::ERROR_LOG_DEBUG) error_log(__METHOD__.'() _SESSION['.self::EGW_SESSION_VAR.']='.array2string($_SESSION[self::EGW_SESSION_VAR]));  | 
                                                        |
| 1957 | + if (self::ERROR_LOG_DEBUG)  | 
                                                        |
| 1958 | +		{ | 
                                                        |
| 1959 | + error_log(__METHOD__.'() _SESSION['.self::EGW_SESSION_VAR.']='.array2string($_SESSION[self::EGW_SESSION_VAR]));  | 
                                                        |
| 1960 | + }  | 
                                                        |
| 1836 | 1961 | |
| 1837 | 1962 | return $this->action;  | 
                                                        
| 1838 | 1963 | }  | 
                                                        
@@ -1974,14 +2099,20 @@ discard block  | 
                                                    ||
| 1974 | 2099 | self::cache_control();  | 
                                                        
| 1975 | 2100 | $ok = session_start();  | 
                                                        
| 1976 | 2101 | self::decrypt();  | 
                                                        
| 1977 | - if (self::ERROR_LOG_DEBUG) error_log(__METHOD__."() sessionid=$sessionid, _SESSION[".self::EGW_SESSION_VAR.']='.array2string($_SESSION[self::EGW_SESSION_VAR]));  | 
                                                        |
| 2102 | + if (self::ERROR_LOG_DEBUG)  | 
                                                        |
| 2103 | +					{ | 
                                                        |
| 2104 | + error_log(__METHOD__."() sessionid=$sessionid, _SESSION[".self::EGW_SESSION_VAR.']='.array2string($_SESSION[self::EGW_SESSION_VAR]));  | 
                                                        |
| 2105 | + }  | 
                                                        |
| 1978 | 2106 | return $ok;  | 
                                                        
| 1979 | 2107 | }  | 
                                                        
| 1980 | 2108 | break;  | 
                                                        
| 1981 | 2109 | case PHP_SESSION_ACTIVE:  | 
                                                        
| 1982 | 2110 | return true; // session created by MServer  | 
                                                        
| 1983 | 2111 | }  | 
                                                        
| 1984 | - if (self::ERROR_LOG_DEBUG) error_log(__METHOD__."() no active session!");  | 
                                                        |
| 2112 | + if (self::ERROR_LOG_DEBUG)  | 
                                                        |
| 2113 | +		{ | 
                                                        |
| 2114 | + error_log(__METHOD__."() no active session!");  | 
                                                        |
| 2115 | + }  | 
                                                        |
| 1985 | 2116 | |
| 1986 | 2117 | return false;  | 
                                                        
| 1987 | 2118 | }  | 
                                                        
@@ -2039,9 +2170,12 @@ discard block  | 
                                                    ||
| 2039 | 2170 | error_log(__METHOD__."($expire) called, but header already sent in $file: $line");  | 
                                                        
| 2040 | 2171 | return;  | 
                                                        
| 2041 | 2172 | }  | 
                                                        
| 2042 | -				if($expire === true)	// same behavior as session_cache_limiter('private_no_expire') | 
                                                        |
| 2173 | + if($expire === true)  | 
                                                        |
| 2174 | +				{ | 
                                                        |
| 2175 | +					// same behavior as session_cache_limiter('private_no_expire') | 
                                                        |
| 2043 | 2176 |  				{ | 
                                                        
| 2044 | 2177 |  					header('Cache-Control: private, max-age='.(60*session_cache_expire())); | 
                                                        
| 2178 | + }  | 
                                                        |
| 2045 | 2179 |  					header_remove('Expires'); | 
                                                        
| 2046 | 2180 | }  | 
                                                        
| 2047 | 2181 | elseif ($private)  | 
                                                        
@@ -2055,10 +2189,13 @@ discard block  | 
                                                    ||
| 2055 | 2189 |  					header('Expires: ' . gmdate('D, d M Y H:i:s', time()+$expire) . ' GMT'); | 
                                                        
| 2056 | 2190 | }  | 
                                                        
| 2057 | 2191 | // remove Pragma header, might be set by old header  | 
                                                        
| 2058 | -				if (function_exists('header_remove'))	// PHP 5.3+ | 
                                                        |
| 2192 | +				if (function_exists('header_remove')) | 
                                                        |
| 2193 | +				{ | 
                                                        |
| 2194 | + // PHP 5.3+  | 
                                                        |
| 2059 | 2195 |  				{ | 
                                                        
| 2060 | 2196 |  					header_remove('Pragma'); | 
                                                        
| 2061 | 2197 | }  | 
                                                        
| 2198 | + }  | 
                                                        |
| 2062 | 2199 | else  | 
                                                        
| 2063 | 2200 |  				{ | 
                                                        
| 2064 | 2201 |  					header('Pragma:'); | 
                                                        
@@ -1014,12 +1014,12 @@ discard block  | 
                                                    ||
| 1014 | 1014 | foreach (is_array($value) && $parameters[$key]['VALUE']!='DATE' ? $value : array($value) as $valueID => $valueData)  | 
                                                        
| 1015 | 1015 |  				{ | 
                                                        
| 1016 | 1016 | $valueData = Api\Translation::convert($valueData,Api\Translation::charset(),$charset);  | 
                                                        
| 1017 | - $paramData = (array) Api\Translation::convert(is_array($value) ?  | 
                                                        |
| 1018 | - $parameters[$key][$valueID] : $parameters[$key],  | 
                                                        |
| 1019 | - Api\Translation::charset(),$charset);  | 
                                                        |
| 1020 | - $valuesData = (array) Api\Translation::convert($values[$key],  | 
                                                        |
| 1021 | - Api\Translation::charset(),$charset);  | 
                                                        |
| 1022 | -	                $content = $valueData . implode(';', $valuesData); | 
                                                        |
| 1017 | + $paramData = (array) Api\Translation::convert(is_array($value) ?  | 
                                                        |
| 1018 | + $parameters[$key][$valueID] : $parameters[$key],  | 
                                                        |
| 1019 | + Api\Translation::charset(),$charset);  | 
                                                        |
| 1020 | + $valuesData = (array) Api\Translation::convert($values[$key],  | 
                                                        |
| 1021 | + Api\Translation::charset(),$charset);  | 
                                                        |
| 1022 | +					$content = $valueData . implode(';', $valuesData); | 
                                                        |
| 1023 | 1023 | |
| 1024 | 1024 |  					if ($version == '1.0' && (preg_match('/[^\x20-\x7F]/', $content) || | 
                                                        
| 1025 | 1025 |  						($paramData['CN'] && preg_match('/[^\x20-\x7F]/', $paramData['CN'])))) | 
                                                        
@@ -3165,7 +3165,7 @@ discard block  | 
                                                    ||
| 3165 | 3165 | array2string($event)."\n",3,$this->logfile);  | 
                                                        
| 3166 | 3166 | }  | 
                                                        
| 3167 | 3167 |  		//Horde::logMessage("vevent2egw:\n" . print_r($event, true), | 
                                                        
| 3168 | - // __FILE__, __LINE__, PEAR_LOG_DEBUG);  | 
                                                        |
| 3168 | + // __FILE__, __LINE__, PEAR_LOG_DEBUG);  | 
                                                        |
| 3169 | 3169 | return $event;  | 
                                                        
| 3170 | 3170 | }  | 
                                                        
| 3171 | 3171 | |
@@ -54,39 +54,39 @@ discard block  | 
                                                    ||
| 54 | 54 | * @var array $priority_egw2ical conversion of the priority egw => ical  | 
                                                        
| 55 | 55 | */  | 
                                                        
| 56 | 56 | var $priority_egw2ical = array(  | 
                                                        
| 57 | - 0 => 0, // undefined  | 
                                                        |
| 58 | - 1 => 9, // low  | 
                                                        |
| 59 | - 2 => 5, // normal  | 
                                                        |
| 60 | - 3 => 1, // high  | 
                                                        |
| 57 | + 0 => 0, // undefined  | 
                                                        |
| 58 | + 1 => 9, // low  | 
                                                        |
| 59 | + 2 => 5, // normal  | 
                                                        |
| 60 | + 3 => 1, // high  | 
                                                        |
| 61 | 61 | );  | 
                                                        
| 62 | 62 | |
| 63 | 63 | /**  | 
                                                        
| 64 | 64 | * @var array $priority_ical2egw conversion of the priority ical => egw  | 
                                                        
| 65 | 65 | */  | 
                                                        
| 66 | 66 | var $priority_ical2egw = array(  | 
                                                        
| 67 | - 0 => 0, // undefined  | 
                                                        |
| 68 | - 9 => 1, 8 => 1, 7 => 1, 6 => 1, // low  | 
                                                        |
| 69 | - 5 => 2, // normal  | 
                                                        |
| 70 | - 4 => 3, 3 => 3, 2 => 3, 1 => 3, // high  | 
                                                        |
| 67 | + 0 => 0, // undefined  | 
                                                        |
| 68 | + 9 => 1, 8 => 1, 7 => 1, 6 => 1, // low  | 
                                                        |
| 69 | + 5 => 2, // normal  | 
                                                        |
| 70 | + 4 => 3, 3 => 3, 2 => 3, 1 => 3, // high  | 
                                                        |
| 71 | 71 | );  | 
                                                        
| 72 | 72 | |
| 73 | 73 | /**  | 
                                                        
| 74 | 74 | * @var array $priority_egw2funambol conversion of the priority egw => funambol  | 
                                                        
| 75 | 75 | */  | 
                                                        
| 76 | 76 | var $priority_egw2funambol = array(  | 
                                                        
| 77 | - 0 => 1, // undefined (mapped to normal since undefined does not exist)  | 
                                                        |
| 78 | - 1 => 0, // low  | 
                                                        |
| 79 | - 2 => 1, // normal  | 
                                                        |
| 80 | - 3 => 2, // high  | 
                                                        |
| 77 | + 0 => 1, // undefined (mapped to normal since undefined does not exist)  | 
                                                        |
| 78 | + 1 => 0, // low  | 
                                                        |
| 79 | + 2 => 1, // normal  | 
                                                        |
| 80 | + 3 => 2, // high  | 
                                                        |
| 81 | 81 | );  | 
                                                        
| 82 | 82 | |
| 83 | 83 | /**  | 
                                                        
| 84 | 84 | * @var array $priority_funambol2egw conversion of the priority funambol => egw  | 
                                                        
| 85 | 85 | */  | 
                                                        
| 86 | 86 | var $priority_funambol2egw = array(  | 
                                                        
| 87 | - 0 => 1, // low  | 
                                                        |
| 88 | - 1 => 2, // normal  | 
                                                        |
| 89 | - 2 => 3, // high  | 
                                                        |
| 87 | + 0 => 1, // low  | 
                                                        |
| 88 | + 1 => 2, // normal  | 
                                                        |
| 89 | + 2 => 3, // high  | 
                                                        |
| 90 | 90 | );  | 
                                                        
| 91 | 91 | |
| 92 | 92 | /**  | 
                                                        
@@ -156,7 +156,7 @@ discard block  | 
                                                    ||
| 156 | 156 | * @var boolean  | 
                                                        
| 157 | 157 | */  | 
                                                        
| 158 | 158 | var $log = false;  | 
                                                        
| 159 | - var $logfile="/tmp/log-vcal";  | 
                                                        |
| 159 | + var $logfile = "/tmp/log-vcal";  | 
                                                        |
| 160 | 160 | |
| 161 | 161 | /**  | 
                                                        
| 162 | 162 | * Event callback  | 
                                                        
@@ -203,7 +203,7 @@ discard block  | 
                                                    ||
| 203 | 203 | * @param int|string $current_user =0 uid of current user to only export that one as participant for method=REPLY  | 
                                                        
| 204 | 204 | * @return string|boolean string with iCal or false on error (e.g. no permission to read the event)  | 
                                                        
| 205 | 205 | */  | 
                                                        
| 206 | - function &exportVCal($events, $version='1.0', $method='PUBLISH', $recur_date=0, $principalURL='', $charset='UTF-8', $current_user=0)  | 
                                                        |
| 206 | + function &exportVCal($events, $version = '1.0', $method = 'PUBLISH', $recur_date = 0, $principalURL = '', $charset = 'UTF-8', $current_user = 0)  | 
                                                        |
| 207 | 207 |  	{ | 
                                                        
| 208 | 208 | if ($this->log)  | 
                                                        
| 209 | 209 |  		{ | 
                                                        
@@ -234,13 +234,13 @@ discard block  | 
                                                    ||
| 234 | 234 | |
| 235 | 235 | if (!is_array($this->supportedFields)) $this->setSupportedFields();  | 
                                                        
| 236 | 236 | |
| 237 | - if ($this->productManufacturer == '' )  | 
                                                        |
| 237 | + if ($this->productManufacturer == '')  | 
                                                        |
| 238 | 238 |  		{	// syncevolution is broken | 
                                                        
| 239 | 239 | $version = '2.0';  | 
                                                        
| 240 | 240 | }  | 
                                                        
| 241 | 241 | |
| 242 | 242 | $vcal = new Horde_Icalendar;  | 
                                                        
| 243 | -		$vcal->setAttribute('PRODID','-//EGroupware//NONSGML EGroupware Calendar '.$GLOBALS['egw_info']['apps']['calendar']['version'].'//'. | 
                                                        |
| 243 | +		$vcal->setAttribute('PRODID', '-//EGroupware//NONSGML EGroupware Calendar '.$GLOBALS['egw_info']['apps']['calendar']['version'].'//'. | 
                                                        |
| 244 | 244 | strtoupper($GLOBALS['egw_info']['user']['preferences']['common']['lang']));  | 
                                                        
| 245 | 245 |  		$vcal->setAttribute('VERSION', $version); | 
                                                        
| 246 | 246 |  		if ($method) $vcal->setAttribute('METHOD', $method); | 
                                                        
@@ -270,15 +270,15 @@ discard block  | 
                                                    ||
| 270 | 270 | if ($this->log)  | 
                                                        
| 271 | 271 |  						{ | 
                                                        
| 272 | 272 | error_log(__FILE__.'['.__LINE__.'] '.__METHOD__.  | 
                                                        
| 273 | - '() User does not have the permission to read event ' . $event['id']. "\n",  | 
                                                        |
| 274 | - 3,$this->logfile);  | 
                                                        |
| 273 | + '() User does not have the permission to read event '.$event['id']."\n",  | 
                                                        |
| 274 | + 3, $this->logfile);  | 
                                                        |
| 275 | 275 | }  | 
                                                        
| 276 | 276 | return -1; // Permission denied  | 
                                                        
| 277 | 277 | }  | 
                                                        
| 278 | 278 | }  | 
                                                        
| 279 | 279 | else  | 
                                                        
| 280 | 280 |  				{ | 
                                                        
| 281 | - $retval = false; // Entry does not exist  | 
                                                        |
| 281 | + $retval = false; // Entry does not exist  | 
                                                        |
| 282 | 282 | if ($this->log)  | 
                                                        
| 283 | 283 |  					{ | 
                                                        
| 284 | 284 | error_log(__FILE__.'['.__LINE__.'] '.__METHOD__.  | 
                                                        
@@ -292,7 +292,7 @@ discard block  | 
                                                    ||
| 292 | 292 | if ($this->log)  | 
                                                        
| 293 | 293 |  			{ | 
                                                        
| 294 | 294 | error_log(__FILE__.'['.__LINE__.'] '.__METHOD__.  | 
                                                        
| 295 | - '() export event UID: ' . $event['uid'] . ".\n",  | 
                                                        |
| 295 | + '() export event UID: '.$event['uid'].".\n",  | 
                                                        |
| 296 | 296 | 3, $this->logfile);  | 
                                                        
| 297 | 297 | }  | 
                                                        
| 298 | 298 | |
@@ -325,8 +325,8 @@ discard block  | 
                                                    ||
| 325 | 325 | if ($this->log)  | 
                                                        
| 326 | 326 |  			{ | 
                                                        
| 327 | 327 | error_log(__FILE__.'['.__LINE__.'] '.__METHOD__.  | 
                                                        
| 328 | -					'(' . $event['id']. ',' . $recurrence . ")\n" . | 
                                                        |
| 329 | - array2string($event)."\n",3,$this->logfile);  | 
                                                        |
| 328 | +					'('.$event['id'].','.$recurrence.")\n". | 
                                                        |
| 329 | + array2string($event)."\n", 3, $this->logfile);  | 
                                                        |
| 330 | 330 | }  | 
                                                        
| 331 | 331 | |
| 332 | 332 | if ($recurrence)  | 
                                                        
@@ -347,7 +347,7 @@ discard block  | 
                                                    ||
| 347 | 347 |  						{ | 
                                                        
| 348 | 348 | error_log(__FILE__.'['.__LINE__.'] '.__METHOD__.  | 
                                                        
| 349 | 349 | "(, $recurrence) Gratuitous pseudo exception, skipped ...\n",  | 
                                                        
| 350 | - 3,$this->logfile);  | 
                                                        |
| 350 | + 3, $this->logfile);  | 
                                                        |
| 351 | 351 | }  | 
                                                        
| 352 | 352 | continue; // unsupported status only exception  | 
                                                        
| 353 | 353 | }  | 
                                                        
@@ -357,13 +357,13 @@ discard block  | 
                                                    ||
| 357 | 357 | $days = $this->so->get_recurrence_exceptions($master, $tzid, 0, 0, 'rrule');  | 
                                                        
| 358 | 358 | if ($this->log)  | 
                                                        
| 359 | 359 |  					{ | 
                                                        
| 360 | - error_log(__FILE__.'['.__LINE__.'] '.__METHOD__."()\n" .  | 
                                                        |
| 361 | - array2string($days)."\n",3,$this->logfile);  | 
                                                        |
| 360 | + error_log(__FILE__.'['.__LINE__.'] '.__METHOD__."()\n".  | 
                                                        |
| 361 | + array2string($days)."\n", 3, $this->logfile);  | 
                                                        |
| 362 | 362 | }  | 
                                                        
| 363 | 363 | $recurrence = $days[$recurrence]; // use remote representation  | 
                                                        
| 364 | 364 | }  | 
                                                        
| 365 | 365 | // force single event  | 
                                                        
| 366 | -				foreach (array('recur_enddate','recur_interval','recur_exception','recur_data','recur_date','id','etag') as $name) | 
                                                        |
| 366 | +				foreach (array('recur_enddate', 'recur_interval', 'recur_exception', 'recur_data', 'recur_date', 'id', 'etag') as $name) | 
                                                        |
| 367 | 367 |  				{ | 
                                                        
| 368 | 368 | unset($event[$name]);  | 
                                                        
| 369 | 369 | }  | 
                                                        
@@ -371,7 +371,7 @@ discard block  | 
                                                    ||
| 371 | 371 | }  | 
                                                        
| 372 | 372 | |
| 373 | 373 | // check if tzid of event (not only recuring ones) is already added to export  | 
                                                        
| 374 | - if ($tzid && $tzid != 'UTC' && !in_array($tzid,$vtimezones_added))  | 
                                                        |
| 374 | + if ($tzid && $tzid != 'UTC' && !in_array($tzid, $vtimezones_added))  | 
                                                        |
| 375 | 375 |  			{ | 
                                                        
| 376 | 376 | // check if we have vtimezone component data for tzid of event, if not default to user timezone (default to server tz)  | 
                                                        
| 377 | 377 | if (calendar_timezones::add_vtimezone($vcal, $tzid) ||  | 
                                                        
@@ -389,7 +389,7 @@ discard block  | 
                                                    ||
| 389 | 389 |  			{ | 
                                                        
| 390 | 390 | // Append UID to DESCRIPTION  | 
                                                        
| 391 | 391 |  				if (!preg_match('/\[UID:.+\]/m', $event['description'])) { | 
                                                        
| 392 | - $event['description'] .= "\n[UID:" . $event['uid'] . "]";  | 
                                                        |
| 392 | + $event['description'] .= "\n[UID:".$event['uid']."]";  | 
                                                        |
| 393 | 393 | }  | 
                                                        
| 394 | 394 | }  | 
                                                        
| 395 | 395 | |
@@ -410,14 +410,14 @@ discard block  | 
                                                    ||
| 410 | 410 | $exceptions = array();  | 
                                                        
| 411 | 411 | |
| 412 | 412 | // dont use "virtual" exceptions created by participant status for GroupDAV or file export  | 
                                                        
| 413 | -				if (!in_array($this->productManufacturer,array('file','groupdav'))) | 
                                                        |
| 413 | +				if (!in_array($this->productManufacturer, array('file', 'groupdav'))) | 
                                                        |
| 414 | 414 |  				{ | 
                                                        
| 415 | 415 | $filter = isset($this->supportedFields['participants']) ? 'rrule' : 'tz_rrule';  | 
                                                        
| 416 | 416 | $exceptions = $this->so->get_recurrence_exceptions($event, $tzid, 0, 0, $filter);  | 
                                                        
| 417 | 417 | if ($this->log)  | 
                                                        
| 418 | 418 |  					{ | 
                                                        
| 419 | - error_log(__FILE__.'['.__LINE__.'] '.__METHOD__."(EXCEPTIONS)\n" .  | 
                                                        |
| 420 | - array2string($exceptions)."\n",3,$this->logfile);  | 
                                                        |
| 419 | + error_log(__FILE__.'['.__LINE__.'] '.__METHOD__."(EXCEPTIONS)\n".  | 
                                                        |
| 420 | + array2string($exceptions)."\n", 3, $this->logfile);  | 
                                                        |
| 421 | 421 | }  | 
                                                        
| 422 | 422 | }  | 
                                                        
| 423 | 423 | elseif (is_array($event['recur_exception']))  | 
                                                        
@@ -434,8 +434,8 @@ discard block  | 
                                                    ||
| 434 | 434 | if ($this->log)  | 
                                                        
| 435 | 435 |  					{ | 
                                                        
| 436 | 436 | error_log(__FILE__.'['.__LINE__.'] '.__METHOD__.  | 
                                                        
| 437 | -							'(' . $event['id'] . ") [$icalFieldName] not supported\n", | 
                                                        |
| 438 | - 3,$this->logfile);  | 
                                                        |
| 437 | +							'('.$event['id'].") [$icalFieldName] not supported\n", | 
                                                        |
| 438 | + 3, $this->logfile);  | 
                                                        |
| 439 | 439 | }  | 
                                                        
| 440 | 440 | continue;  | 
                                                        
| 441 | 441 | }  | 
                                                        
@@ -452,23 +452,23 @@ discard block  | 
                                                    ||
| 452 | 452 | |
| 453 | 453 | if (!($info = $this->resource_info($uid))) continue;  | 
                                                        
| 454 | 454 | |
| 455 | -							if (in_array($status, array('X','E'))) continue;	// dont include deleted participants | 
                                                        |
| 455 | +							if (in_array($status, array('X', 'E'))) continue; // dont include deleted participants | 
                                                        |
| 456 | 456 | |
| 457 | 457 | if ($this->log)  | 
                                                        
| 458 | 458 |  							{ | 
                                                        
| 459 | - error_log(__FILE__.'['.__LINE__.'] '.__METHOD__ .  | 
                                                        |
| 460 | - '()attendee:' . array2string($info) ."\n",3,$this->logfile);  | 
                                                        |
| 459 | + error_log(__FILE__.'['.__LINE__.'] '.__METHOD__.  | 
                                                        |
| 460 | + '()attendee:'.array2string($info)."\n", 3, $this->logfile);  | 
                                                        |
| 461 | 461 | }  | 
                                                        
| 462 | 462 |  							$participantCN = str_replace(array('\\', ',', ';', ':'), | 
                                                        
| 463 | 463 |  												array('\\\\', '\\,', '\\;', '\\:'), | 
                                                        
| 464 | 464 | trim(empty($info['cn']) ? $info['name'] : $info['cn']));  | 
                                                        
| 465 | 465 | if ($version == '1.0')  | 
                                                        
| 466 | 466 |  							{ | 
                                                        
| 467 | -								$participantURL = trim('"' . $participantCN . '"' . (empty($info['email']) ? '' : ' <' . $info['email'] .'>')); | 
                                                        |
| 467 | +								$participantURL = trim('"'.$participantCN.'"'.(empty($info['email']) ? '' : ' <'.$info['email'].'>')); | 
                                                        |
| 468 | 468 | }  | 
                                                        
| 469 | 469 | else  | 
                                                        
| 470 | 470 |  							{ | 
                                                        
| 471 | - $participantURL = empty($info['email']) ? '' : 'mailto:' . $info['email'];  | 
                                                        |
| 471 | + $participantURL = empty($info['email']) ? '' : 'mailto:'.$info['email'];  | 
                                                        |
| 472 | 472 | }  | 
                                                        
| 473 | 473 |  							// RSVP={TRUE|FALSE}	// resonse expected, not set in eGW => status=U | 
                                                        
| 474 | 474 | $rsvp = $status == 'U' ? 'TRUE' : 'FALSE';  | 
                                                        
@@ -496,7 +496,7 @@ discard block  | 
                                                    ||
| 496 | 496 | ($members = $GLOBALS['egw']->accounts->members($uid, true)) && in_array($this->user, $members))  | 
                                                        
| 497 | 497 |  									{ | 
                                                        
| 498 | 498 | $user = $this->resource_info($this->user);  | 
                                                        
| 499 | - $attributes['ATTENDEE'][] = 'mailto:' . $user['email'];  | 
                                                        |
| 499 | + $attributes['ATTENDEE'][] = 'mailto:'.$user['email'];  | 
                                                        |
| 500 | 500 | $parameters['ATTENDEE'][] = array(  | 
                                                        
| 501 | 501 | 'CN' => $user['name'],  | 
                                                        
| 502 | 502 | 'ROLE' => 'REQ-PARTICIPANT',  | 
                                                        
@@ -538,7 +538,7 @@ discard block  | 
                                                    ||
| 538 | 538 | if (!empty($rsvp)) $options['RSVP'] = $rsvp;  | 
                                                        
| 539 | 539 | if (!empty($info['email']) && $participantURL != 'mailto:'.$info['email'])  | 
                                                        
| 540 | 540 |  							{ | 
                                                        
| 541 | - $options['EMAIL'] = $info['email']; // only add EMAIL attribute, if not already URL, as eg. Akonadi is reported to have problems with it  | 
                                                        |
| 541 | + $options['EMAIL'] = $info['email']; // only add EMAIL attribute, if not already URL, as eg. Akonadi is reported to have problems with it  | 
                                                        |
| 542 | 542 | }  | 
                                                        
| 543 | 543 | if ($info['type'] != 'e') $options['X-EGROUPWARE-UID'] = (string)$uid;  | 
                                                        
| 544 | 544 | if ($quantity > 1)  | 
                                                        
@@ -552,7 +552,7 @@ discard block  | 
                                                    ||
| 552 | 552 | break;  | 
                                                        
| 553 | 553 | |
| 554 | 554 | case 'CLASS':  | 
                                                        
| 555 | - if ($event['public']) continue 2; // public is default, no need to export, fails CalDAVTester if added as default  | 
                                                        |
| 555 | + if ($event['public']) continue 2; // public is default, no need to export, fails CalDAVTester if added as default  | 
                                                        |
| 556 | 556 | $attributes['CLASS'] = $event['public'] ? 'PUBLIC' : 'PRIVATE';  | 
                                                        
| 557 | 557 | // Apple iCal on OS X uses X-CALENDARSERVER-ACCESS: CONFIDENTIAL on VCALANDAR (not VEVENT!)  | 
                                                        
| 558 | 558 | if (!$event['public'] && $this->productManufacturer == 'groupdav')  | 
                                                        
@@ -564,16 +564,16 @@ discard block  | 
                                                    ||
| 564 | 564 | case 'ORGANIZER':  | 
                                                        
| 565 | 565 | if (!$organizerURL)  | 
                                                        
| 566 | 566 |  						{ | 
                                                        
| 567 | - $organizerCN = '"' . trim($GLOBALS['egw']->accounts->id2name($event['owner'],'account_firstname')  | 
                                                        |
| 568 | - . ' ' . $GLOBALS['egw']->accounts->id2name($event['owner'],'account_lastname')) . '"';  | 
                                                        |
| 569 | - $organizerEMail = $GLOBALS['egw']->accounts->id2name($event['owner'],'account_email');  | 
                                                        |
| 567 | + $organizerCN = '"'.trim($GLOBALS['egw']->accounts->id2name($event['owner'], 'account_firstname')  | 
                                                        |
| 568 | + . ' '.$GLOBALS['egw']->accounts->id2name($event['owner'], 'account_lastname')).'"';  | 
                                                        |
| 569 | + $organizerEMail = $GLOBALS['egw']->accounts->id2name($event['owner'], 'account_email');  | 
                                                        |
| 570 | 570 | if ($version == '1.0')  | 
                                                        
| 571 | 571 |  							{ | 
                                                        
| 572 | - $organizerURL = trim($organizerCN . (empty($organizerURL) ? '' : ' <' . $organizerURL .'>'));  | 
                                                        |
| 572 | + $organizerURL = trim($organizerCN.(empty($organizerURL) ? '' : ' <'.$organizerURL.'>'));  | 
                                                        |
| 573 | 573 | }  | 
                                                        
| 574 | 574 | else  | 
                                                        
| 575 | 575 |  							{ | 
                                                        
| 576 | - $organizerURL = empty($organizerEMail) ? '' : 'mailto:' . $organizerEMail;  | 
                                                        |
| 576 | + $organizerURL = empty($organizerEMail) ? '' : 'mailto:'.$organizerEMail;  | 
                                                        |
| 577 | 577 | }  | 
                                                        
| 578 | 578 | $organizerUID = $event['owner'];  | 
                                                        
| 579 | 579 | }  | 
                                                        
@@ -592,7 +592,7 @@ discard block  | 
                                                    ||
| 592 | 592 | case 'DTSTART':  | 
                                                        
| 593 | 593 | if (empty($event['whole_day']))  | 
                                                        
| 594 | 594 |  						{ | 
                                                        
| 595 | - $attributes['DTSTART'] = self::getDateTime($event['start'],$tzid,$parameters['DTSTART']);  | 
                                                        |
| 595 | + $attributes['DTSTART'] = self::getDateTime($event['start'], $tzid, $parameters['DTSTART']);  | 
                                                        |
| 596 | 596 | }  | 
                                                        
| 597 | 597 | break;  | 
                                                        
| 598 | 598 | |
@@ -603,27 +603,27 @@ discard block  | 
                                                    ||
| 603 | 603 | if ($tzid == 'UTC' && $event['end'] - $event['start'] <= 86400)  | 
                                                        
| 604 | 604 | $attributes['duration'] = $event['end'] - $event['start'];  | 
                                                        
| 605 | 605 | else  | 
                                                        
| 606 | - $attributes['DTEND'] = self::getDateTime($event['end'],$tzid,$parameters['DTEND']);  | 
                                                        |
| 606 | + $attributes['DTEND'] = self::getDateTime($event['end'], $tzid, $parameters['DTEND']);  | 
                                                        |
| 607 | 607 | }  | 
                                                        
| 608 | 608 | else  | 
                                                        
| 609 | 609 |  						{ | 
                                                        
| 610 | 610 | // write start + end of whole day events as dates  | 
                                                        
| 611 | - $event['end-nextday'] = $event['end'] + 12*3600; // we need the date of the next day, as DTEND is non-inclusive (= exclusive) in rfc2445  | 
                                                        |
| 612 | -							foreach (array('start' => 'DTSTART','end-nextday' => 'DTEND') as $f => $t) | 
                                                        |
| 611 | + $event['end-nextday'] = $event['end'] + 12 * 3600; // we need the date of the next day, as DTEND is non-inclusive (= exclusive) in rfc2445  | 
                                                        |
| 612 | +							foreach (array('start' => 'DTSTART', 'end-nextday' => 'DTEND') as $f => $t) | 
                                                        |
| 613 | 613 |  							{ | 
                                                        
| 614 | - $time = new Api\DateTime($event[$f],Api\DateTime::$server_timezone);  | 
                                                        |
| 615 | - $arr = Api\DateTime::to($time,'array');  | 
                                                        |
| 616 | -								$vevent->setAttribute($t, array('year' => $arr['year'],'month' => $arr['month'],'mday' => $arr['day']), | 
                                                        |
| 614 | + $time = new Api\DateTime($event[$f], Api\DateTime::$server_timezone);  | 
                                                        |
| 615 | + $arr = Api\DateTime::to($time, 'array');  | 
                                                        |
| 616 | +								$vevent->setAttribute($t, array('year' => $arr['year'], 'month' => $arr['month'], 'mday' => $arr['day']), | 
                                                        |
| 617 | 617 |  									array('VALUE' => 'DATE')); | 
                                                        
| 618 | 618 | }  | 
                                                        
| 619 | 619 | unset($attributes['DTSTART']);  | 
                                                        
| 620 | 620 | // Outlook does NOT care about type of DTSTART/END, only setting X-MICROSOFT-CDO-ALLDAYEVENT is used to determine an event is a whole-day event  | 
                                                        
| 621 | -							$vevent->setAttribute('X-MICROSOFT-CDO-ALLDAYEVENT','TRUE'); | 
                                                        |
| 621 | +							$vevent->setAttribute('X-MICROSOFT-CDO-ALLDAYEVENT', 'TRUE'); | 
                                                        |
| 622 | 622 | }  | 
                                                        
| 623 | 623 | break;  | 
                                                        
| 624 | 624 | |
| 625 | 625 | case 'RRULE':  | 
                                                        
| 626 | - if ($event['recur_type'] == MCAL_RECUR_NONE) break; // no recuring event  | 
                                                        |
| 626 | + if ($event['recur_type'] == MCAL_RECUR_NONE) break; // no recuring event  | 
                                                        |
| 627 | 627 | $rriter = calendar_rrule::event2rrule($event, false, $tzid);  | 
                                                        
| 628 | 628 | $rrule = $rriter->generate_rrule($version);  | 
                                                        
| 629 | 629 | if ($event['recur_enddate'])  | 
                                                        
@@ -650,16 +650,16 @@ discard block  | 
                                                    ||
| 650 | 650 |  						{ | 
                                                        
| 651 | 651 | if ($event['recur_enddate'] && $tzid)  | 
                                                        
| 652 | 652 |  							{ | 
                                                        
| 653 | - $rrule['UNTIL'] = self::getDateTime($rrule['UNTIL'],$tzid);  | 
                                                        |
| 653 | + $rrule['UNTIL'] = self::getDateTime($rrule['UNTIL'], $tzid);  | 
                                                        |
| 654 | 654 | }  | 
                                                        
| 655 | 655 | $attributes['RRULE'] = $rrule['FREQ'].' '.$rrule['UNTIL'];  | 
                                                        
| 656 | 656 | }  | 
                                                        
| 657 | 657 | else // $version == '2.0'  | 
                                                        
| 658 | 658 |  						{ | 
                                                        
| 659 | 659 | $attributes['RRULE'] = '';  | 
                                                        
| 660 | - foreach($rrule as $n => $v)  | 
                                                        |
| 660 | + foreach ($rrule as $n => $v)  | 
                                                        |
| 661 | 661 |  							{ | 
                                                        
| 662 | - $attributes['RRULE'] .= ($attributes['RRULE']?';':'').$n.'='.$v;  | 
                                                        |
| 662 | + $attributes['RRULE'] .= ($attributes['RRULE'] ? ';' : '').$n.'='.$v;  | 
                                                        |
| 663 | 663 | }  | 
                                                        
| 664 | 664 | }  | 
                                                        
| 665 | 665 | break;  | 
                                                        
@@ -683,9 +683,9 @@ discard block  | 
                                                    ||
| 683 | 683 | // use 'DATE' instead of 'DATE-TIME' on whole day events  | 
                                                        
| 684 | 684 | foreach ($event['recur_exception'] as $id => $timestamp)  | 
                                                        
| 685 | 685 |  								{ | 
                                                        
| 686 | - $time = new Api\DateTime($timestamp,Api\DateTime::$server_timezone);  | 
                                                        |
| 686 | + $time = new Api\DateTime($timestamp, Api\DateTime::$server_timezone);  | 
                                                        |
| 687 | 687 | $time->setTimezone(self::$tz_cache[$event['tzid']]);  | 
                                                        
| 688 | - $arr = Api\DateTime::to($time,'array');  | 
                                                        |
| 688 | + $arr = Api\DateTime::to($time, 'array');  | 
                                                        |
| 689 | 689 | $days[$id] = array(  | 
                                                        
| 690 | 690 | 'year' => $arr['year'],  | 
                                                        
| 691 | 691 | 'month' => $arr['month'],  | 
                                                        
@@ -700,21 +700,21 @@ discard block  | 
                                                    ||
| 700 | 700 | break;  | 
                                                        
| 701 | 701 | |
| 702 | 702 | case 'PRIORITY':  | 
                                                        
| 703 | - if (!$event['priority']) continue 2; // 0=undefined is default, no need to export, fails CalDAVTester if our default is added  | 
                                                        |
| 703 | + if (!$event['priority']) continue 2; // 0=undefined is default, no need to export, fails CalDAVTester if our default is added  | 
                                                        |
| 704 | 704 | if ($this->productManufacturer == 'funambol' &&  | 
                                                        
| 705 | 705 | (strpos($this->productName, 'outlook') !== false  | 
                                                        
| 706 | 706 | || strpos($this->productName, 'pocket pc') !== false))  | 
                                                        
| 707 | 707 |  						{ | 
                                                        
| 708 | - $attributes['PRIORITY'] = (int) $this->priority_egw2funambol[$event['priority']];  | 
                                                        |
| 708 | + $attributes['PRIORITY'] = (int)$this->priority_egw2funambol[$event['priority']];  | 
                                                        |
| 709 | 709 | }  | 
                                                        
| 710 | 710 | else  | 
                                                        
| 711 | 711 |  						{ | 
                                                        
| 712 | - $attributes['PRIORITY'] = (int) $this->priority_egw2ical[$event['priority']];  | 
                                                        |
| 712 | + $attributes['PRIORITY'] = (int)$this->priority_egw2ical[$event['priority']];  | 
                                                        |
| 713 | 713 | }  | 
                                                        
| 714 | 714 | break;  | 
                                                        
| 715 | 715 | |
| 716 | 716 | case 'TRANSP':  | 
                                                        
| 717 | - if (!$event['non_blocking']) continue 2; // OPAQUE is default, no need to export, fails CalDAVTester if added as default  | 
                                                        |
| 717 | + if (!$event['non_blocking']) continue 2; // OPAQUE is default, no need to export, fails CalDAVTester if added as default  | 
                                                        |
| 718 | 718 | if ($version == '1.0')  | 
                                                        
| 719 | 719 |  						{ | 
                                                        
| 720 | 720 | $attributes['TRANSP'] = ($event['non_blocking'] ? 1 : 0);  | 
                                                        
@@ -753,13 +753,13 @@ discard block  | 
                                                    ||
| 753 | 753 | // We handle a pseudo exception  | 
                                                        
| 754 | 754 | if (empty($event['whole_day']))  | 
                                                        
| 755 | 755 |  							{ | 
                                                        
| 756 | - $attributes[$icalFieldName] = self::getDateTime($recur_date,$tzid,$parameters[$icalFieldName]);  | 
                                                        |
| 756 | + $attributes[$icalFieldName] = self::getDateTime($recur_date, $tzid, $parameters[$icalFieldName]);  | 
                                                        |
| 757 | 757 | }  | 
                                                        
| 758 | 758 | else  | 
                                                        
| 759 | 759 |  							{ | 
                                                        
| 760 | - $time = new Api\DateTime($recur_date,Api\DateTime::$server_timezone);  | 
                                                        |
| 760 | + $time = new Api\DateTime($recur_date, Api\DateTime::$server_timezone);  | 
                                                        |
| 761 | 761 | $time->setTimezone(self::$tz_cache[$event['tzid']]);  | 
                                                        
| 762 | - $arr = Api\DateTime::to($time,'array');  | 
                                                        |
| 762 | + $arr = Api\DateTime::to($time, 'array');  | 
                                                        |
| 763 | 763 | $vevent->setAttribute($icalFieldName, array(  | 
                                                        
| 764 | 764 | 'year' => $arr['year'],  | 
                                                        
| 765 | 765 | 'month' => $arr['month'],  | 
                                                        
@@ -771,17 +771,17 @@ discard block  | 
                                                    ||
| 771 | 771 | elseif ($event['recurrence'] && $event['reference'])  | 
                                                        
| 772 | 772 |  						{ | 
                                                        
| 773 | 773 | // $event['reference'] is a calendar_id, not a timestamp  | 
                                                        
| 774 | - if (!($revent = $this->read($event['reference']))) break; // referenced event does not exist  | 
                                                        |
| 774 | + if (!($revent = $this->read($event['reference']))) break; // referenced event does not exist  | 
                                                        |
| 775 | 775 | |
| 776 | 776 | if (empty($revent['whole_day']))  | 
                                                        
| 777 | 777 |  							{ | 
                                                        
| 778 | - $attributes[$icalFieldName] = self::getDateTime($event['recurrence'],$tzid,$parameters[$icalFieldName]);  | 
                                                        |
| 778 | + $attributes[$icalFieldName] = self::getDateTime($event['recurrence'], $tzid, $parameters[$icalFieldName]);  | 
                                                        |
| 779 | 779 | }  | 
                                                        
| 780 | 780 | else  | 
                                                        
| 781 | 781 |  							{ | 
                                                        
| 782 | - $time = new Api\DateTime($event['recurrence'],Api\DateTime::$server_timezone);  | 
                                                        |
| 782 | + $time = new Api\DateTime($event['recurrence'], Api\DateTime::$server_timezone);  | 
                                                        |
| 783 | 783 | $time->setTimezone(self::$tz_cache[$event['tzid']]);  | 
                                                        
| 784 | - $arr = Api\DateTime::to($time,'array');  | 
                                                        |
| 784 | + $arr = Api\DateTime::to($time, 'array');  | 
                                                        |
| 785 | 785 | $vevent->setAttribute($icalFieldName, array(  | 
                                                        
| 786 | 786 | 'year' => $arr['year'],  | 
                                                        
| 787 | 787 | 'month' => $arr['month'],  | 
                                                        
@@ -808,9 +808,9 @@ discard block  | 
                                                    ||
| 808 | 808 | $noTruncate = $this->clientProperties[$icalFieldName]['NoTruncate'];  | 
                                                        
| 809 | 809 | if ($this->log && $size > 0)  | 
                                                        
| 810 | 810 |  							{ | 
                                                        
| 811 | - error_log(__FILE__.'['.__LINE__.'] '.__METHOD__ .  | 
                                                        |
| 812 | - "() $icalFieldName Size: $size, NoTruncate: " .  | 
                                                        |
| 813 | - ($noTruncate ? 'TRUE' : 'FALSE') . "\n",3,$this->logfile);  | 
                                                        |
| 811 | + error_log(__FILE__.'['.__LINE__.'] '.__METHOD__.  | 
                                                        |
| 812 | + "() $icalFieldName Size: $size, NoTruncate: ".  | 
                                                        |
| 813 | + ($noTruncate ? 'TRUE' : 'FALSE')."\n", 3, $this->logfile);  | 
                                                        |
| 814 | 814 | }  | 
                                                        
| 815 | 815 |  							//Horde::logMessage("vCalendar $icalFieldName Size: $size, NoTruncate: " . | 
                                                        
| 816 | 816 | // ($noTruncate ? 'TRUE' : 'FALSE'), __FILE__, __LINE__, PEAR_LOG_DEBUG);  | 
                                                        
@@ -828,8 +828,8 @@ discard block  | 
                                                    ||
| 828 | 828 |  							{ | 
                                                        
| 829 | 829 | if ($this->log)  | 
                                                        
| 830 | 830 |  								{ | 
                                                        
| 831 | - error_log(__FILE__.'['.__LINE__.'] '.__METHOD__ .  | 
                                                        |
| 832 | - "() $icalFieldName omitted due to maximum size $size\n",3,$this->logfile);  | 
                                                        |
| 831 | + error_log(__FILE__.'['.__LINE__.'] '.__METHOD__.  | 
                                                        |
| 832 | + "() $icalFieldName omitted due to maximum size $size\n", 3, $this->logfile);  | 
                                                        |
| 833 | 833 | }  | 
                                                        
| 834 | 834 |  								//Horde::logMessage("vCalendar $icalFieldName omitted due to maximum size $size", | 
                                                        
| 835 | 835 | // __FILE__, __LINE__, PEAR_LOG_WARNING);  | 
                                                        
@@ -839,8 +839,8 @@ discard block  | 
                                                    ||
| 839 | 839 | $value = substr($value, 0, $size - 1);  | 
                                                        
| 840 | 840 | if ($this->log)  | 
                                                        
| 841 | 841 |  							{ | 
                                                        
| 842 | - error_log(__FILE__.'['.__LINE__.'] '.__METHOD__ .  | 
                                                        |
| 843 | - "() $icalFieldName truncated to maximum size $size\n",3,$this->logfile);  | 
                                                        |
| 842 | + error_log(__FILE__.'['.__LINE__.'] '.__METHOD__.  | 
                                                        |
| 843 | + "() $icalFieldName truncated to maximum size $size\n", 3, $this->logfile);  | 
                                                        |
| 844 | 844 | }  | 
                                                        
| 845 | 845 |  							//Horde::logMessage("vCalendar $icalFieldName truncated to maximum size $size", | 
                                                        
| 846 | 846 | // __FILE__, __LINE__, PEAR_LOG_INFO);  | 
                                                        
@@ -855,7 +855,7 @@ discard block  | 
                                                    ||
| 855 | 855 | // for CalDAV add all X-Properties previously parsed  | 
                                                        
| 856 | 856 | if ($this->productManufacturer == 'groupdav' || $this->productManufacturer == 'file')  | 
                                                        
| 857 | 857 |  			{ | 
                                                        
| 858 | - foreach($event as $name => $value)  | 
                                                        |
| 858 | + foreach ($event as $name => $value)  | 
                                                        |
| 859 | 859 |  				{ | 
                                                        
| 860 | 860 | if (substr($name, 0, 2) == '##')  | 
                                                        
| 861 | 861 |  					{ | 
                                                        
@@ -933,8 +933,8 @@ discard block  | 
                                                    ||
| 933 | 933 | $values['AALARM']['repeat count'] = '';  | 
                                                        
| 934 | 934 | $values['AALARM']['display text'] = $description;  | 
                                                        
| 935 | 935 | }  | 
                                                        
| 936 | - $attributes['DALARM'] = self::getDateTime($alarmData['time'],$tzid,$parameters['DALARM']);  | 
                                                        |
| 937 | - $attributes['AALARM'] = self::getDateTime($alarmData['time'],$tzid,$parameters['AALARM']);  | 
                                                        |
| 936 | + $attributes['DALARM'] = self::getDateTime($alarmData['time'], $tzid, $parameters['DALARM']);  | 
                                                        |
| 937 | + $attributes['AALARM'] = self::getDateTime($alarmData['time'], $tzid, $parameters['AALARM']);  | 
                                                        |
| 938 | 938 | // lets take only the first alarm  | 
                                                        
| 939 | 939 | break;  | 
                                                        
| 940 | 940 | }  | 
                                                        
@@ -971,7 +971,7 @@ discard block  | 
                                                    ||
| 971 | 971 | $alarmData['offset'] = false;  | 
                                                        
| 972 | 972 | }  | 
                                                        
| 973 | 973 | |
| 974 | -					$valarm = Horde_Icalendar::newComponent('VALARM',$vevent); | 
                                                        |
| 974 | +					$valarm = Horde_Icalendar::newComponent('VALARM', $vevent); | 
                                                        |
| 975 | 975 | if ($alarmData['offset'] !== false)  | 
                                                        
| 976 | 976 |  					{ | 
                                                        
| 977 | 977 |  						$valarm->setAttribute('TRIGGER', -$alarmData['offset'], | 
                                                        
@@ -980,7 +980,7 @@ discard block  | 
                                                    ||
| 980 | 980 | else  | 
                                                        
| 981 | 981 |  					{ | 
                                                        
| 982 | 982 |  						$params = array('VALUE' => 'DATE-TIME'); | 
                                                        
| 983 | - $value = self::getDateTime($alarmData['time'],$tzid,$params);  | 
                                                        |
| 983 | + $value = self::getDateTime($alarmData['time'], $tzid, $params);  | 
                                                        |
| 984 | 984 |  						$valarm->setAttribute('TRIGGER', $value, $params); | 
                                                        
| 985 | 985 | }  | 
                                                        
| 986 | 986 | if (!empty($alarmData['uid']))  | 
                                                        
@@ -991,7 +991,7 @@ discard block  | 
                                                    ||
| 991 | 991 | // set evtl. existing attributes set by iCal clients not used by EGroupware  | 
                                                        
| 992 | 992 | if (isset($alarmData['attrs']))  | 
                                                        
| 993 | 993 |  					{ | 
                                                        
| 994 | - foreach($alarmData['attrs'] as $attr => $data)  | 
                                                        |
| 994 | + foreach ($alarmData['attrs'] as $attr => $data)  | 
                                                        |
| 995 | 995 |  						{ | 
                                                        
| 996 | 996 | $valarm->setAttribute($attr, $data['value'], $data['params']);  | 
                                                        
| 997 | 997 | }  | 
                                                        
@@ -999,11 +999,11 @@ discard block  | 
                                                    ||
| 999 | 999 | // set default ACTION and DESCRIPTION, if not set by a client  | 
                                                        
| 1000 | 1000 | if (!isset($alarmData['attrs']) || !isset($alarmData['attrs']['ACTION']))  | 
                                                        
| 1001 | 1001 |  					{ | 
                                                        
| 1002 | -						$valarm->setAttribute('ACTION','DISPLAY'); | 
                                                        |
| 1002 | +						$valarm->setAttribute('ACTION', 'DISPLAY'); | 
                                                        |
| 1003 | 1003 | }  | 
                                                        
| 1004 | 1004 | if (!isset($alarmData['attrs']) || !isset($alarmData['attrs']['DESCRIPTION']))  | 
                                                        
| 1005 | 1005 |  					{ | 
                                                        
| 1006 | -						$valarm->setAttribute('DESCRIPTION',$event['title'] ? $event['title'] : $description); | 
                                                        |
| 1006 | +						$valarm->setAttribute('DESCRIPTION', $event['title'] ? $event['title'] : $description); | 
                                                        |
| 1007 | 1007 | }  | 
                                                        
| 1008 | 1008 | $vevent->addComponent($valarm);  | 
                                                        
| 1009 | 1009 | }  | 
                                                        
@@ -1011,15 +1011,15 @@ discard block  | 
                                                    ||
| 1011 | 1011 | |
| 1012 | 1012 | foreach ($attributes as $key => $value)  | 
                                                        
| 1013 | 1013 |  			{ | 
                                                        
| 1014 | - foreach (is_array($value) && $parameters[$key]['VALUE']!='DATE' ? $value : array($value) as $valueID => $valueData)  | 
                                                        |
| 1014 | + foreach (is_array($value) && $parameters[$key]['VALUE'] != 'DATE' ? $value : array($value) as $valueID => $valueData)  | 
                                                        |
| 1015 | 1015 |  				{ | 
                                                        
| 1016 | - $valueData = Api\Translation::convert($valueData,Api\Translation::charset(),$charset);  | 
                                                        |
| 1017 | - $paramData = (array) Api\Translation::convert(is_array($value) ?  | 
                                                        |
| 1016 | + $valueData = Api\Translation::convert($valueData, Api\Translation::charset(), $charset);  | 
                                                        |
| 1017 | + $paramData = (array)Api\Translation::convert(is_array($value) ?  | 
                                                        |
| 1018 | 1018 | $parameters[$key][$valueID] : $parameters[$key],  | 
                                                        
| 1019 | - Api\Translation::charset(),$charset);  | 
                                                        |
| 1020 | - $valuesData = (array) Api\Translation::convert($values[$key],  | 
                                                        |
| 1021 | - Api\Translation::charset(),$charset);  | 
                                                        |
| 1022 | -	                $content = $valueData . implode(';', $valuesData); | 
                                                        |
| 1019 | + Api\Translation::charset(), $charset);  | 
                                                        |
| 1020 | + $valuesData = (array)Api\Translation::convert($values[$key],  | 
                                                        |
| 1021 | + Api\Translation::charset(), $charset);  | 
                                                        |
| 1022 | +	                $content = $valueData.implode(';', $valuesData); | 
                                                        |
| 1023 | 1023 | |
| 1024 | 1024 |  					if ($version == '1.0' && (preg_match('/[^\x20-\x7F]/', $content) || | 
                                                        
| 1025 | 1025 |  						($paramData['CN'] && preg_match('/[^\x20-\x7F]/', $paramData['CN'])))) | 
                                                        
@@ -1069,10 +1069,10 @@ discard block  | 
                                                    ||
| 1069 | 1069 | $retval = $events_exported ? $vcal->exportvCalendar() : false;  | 
                                                        
| 1070 | 1070 | if ($this->log)  | 
                                                        
| 1071 | 1071 |   		{ | 
                                                        
| 1072 | - error_log(__FILE__.'['.__LINE__.'] '.__METHOD__ .  | 
                                                        |
| 1073 | - "() '$this->productManufacturer','$this->productName'\n",3,$this->logfile);  | 
                                                        |
| 1074 | - error_log(__FILE__.'['.__LINE__.'] '.__METHOD__ .  | 
                                                        |
| 1075 | - "()\n".array2string($retval)."\n",3,$this->logfile);  | 
                                                        |
| 1072 | + error_log(__FILE__.'['.__LINE__.'] '.__METHOD__.  | 
                                                        |
| 1073 | + "() '$this->productManufacturer','$this->productName'\n", 3, $this->logfile);  | 
                                                        |
| 1074 | + error_log(__FILE__.'['.__LINE__.'] '.__METHOD__.  | 
                                                        |
| 1075 | + "()\n".array2string($retval)."\n", 3, $this->logfile);  | 
                                                        |
| 1076 | 1076 | }  | 
                                                        
| 1077 | 1077 | |
| 1078 | 1078 | // hack to fix iCalendar exporting EXDATE always postfixed with a Z  | 
                                                        
@@ -1091,15 +1091,15 @@ discard block  | 
                                                    ||
| 1091 | 1091 | * @param array &$params=null parameter array to set TZID  | 
                                                        
| 1092 | 1092 | * @return mixed attribute value to set: integer timestamp if $tzid == 'UTC' otherwise Ymd\THis string IN $tzid  | 
                                                        
| 1093 | 1093 | */  | 
                                                        
| 1094 | - static function getDateTime($time,$tzid,array &$params=null)  | 
                                                        |
| 1094 | + static function getDateTime($time, $tzid, array &$params = null)  | 
                                                        |
| 1095 | 1095 |  	{ | 
                                                        
| 1096 | 1096 | if (empty($tzid) || $tzid == 'UTC')  | 
                                                        
| 1097 | 1097 |  		{ | 
                                                        
| 1098 | - return Api\DateTime::to($time,'ts');  | 
                                                        |
| 1098 | + return Api\DateTime::to($time, 'ts');  | 
                                                        |
| 1099 | 1099 | }  | 
                                                        
| 1100 | - if (!is_a($time,'DateTime'))  | 
                                                        |
| 1100 | + if (!is_a($time, 'DateTime'))  | 
                                                        |
| 1101 | 1101 |  		{ | 
                                                        
| 1102 | - $time = new Api\DateTime($time,Api\DateTime::$server_timezone);  | 
                                                        |
| 1102 | + $time = new Api\DateTime($time, Api\DateTime::$server_timezone);  | 
                                                        |
| 1103 | 1103 | }  | 
                                                        
| 1104 | 1104 | if (!isset(self::$tz_cache[$tzid]))  | 
                                                        
| 1105 | 1105 |  		{ | 
                                                        
@@ -1134,11 +1134,11 @@ discard block  | 
                                                    ||
| 1134 | 1134 | * @param string $caldav_name=null name from CalDAV client or null (to use default)  | 
                                                        
| 1135 | 1135 | * @return int|boolean|null cal_id > 0 on success, false on failure or 0 for a failed etag|permission denied or null for "403 Forbidden"  | 
                                                        
| 1136 | 1136 | */  | 
                                                        
| 1137 | - function importVCal($_vcalData, $cal_id=-1, $etag=null, $merge=false, $recur_date=0, $principalURL='', $user=null, $charset=null, $caldav_name=null,$skip_notification=false)  | 
                                                        |
| 1137 | + function importVCal($_vcalData, $cal_id = -1, $etag = null, $merge = false, $recur_date = 0, $principalURL = '', $user = null, $charset = null, $caldav_name = null, $skip_notification = false)  | 
                                                        |
| 1138 | 1138 |  	{ | 
                                                        
| 1139 | 1139 | //error_log(__METHOD__."(, $cal_id, $etag, $merge, $recur_date, $principalURL, $user, $charset, $caldav_name)");  | 
                                                        
| 1140 | 1140 | $this->events_imported = 0;  | 
                                                        
| 1141 | - $replace = $delete_exceptions= false;  | 
                                                        |
| 1141 | + $replace = $delete_exceptions = false;  | 
                                                        |
| 1142 | 1142 | |
| 1143 | 1143 | if (!is_array($this->supportedFields)) $this->setSupportedFields();  | 
                                                        
| 1144 | 1144 | |
@@ -1146,7 +1146,7 @@ discard block  | 
                                                    ||
| 1146 | 1146 |  		{ | 
                                                        
| 1147 | 1147 | return false;  | 
                                                        
| 1148 | 1148 | }  | 
                                                        
| 1149 | - if (!is_array($events)) $cal_id = -1; // just to be sure, as iterator does NOT allow array access (eg. $events[0])  | 
                                                        |
| 1149 | + if (!is_array($events)) $cal_id = -1; // just to be sure, as iterator does NOT allow array access (eg. $events[0])  | 
                                                        |
| 1150 | 1150 | |
| 1151 | 1151 | if ($cal_id > 0)  | 
                                                        
| 1152 | 1152 |  		{ | 
                                                        
@@ -1154,7 +1154,7 @@ discard block  | 
                                                    ||
| 1154 | 1154 |  			{ | 
                                                        
| 1155 | 1155 | $replace = $recur_date == 0;  | 
                                                        
| 1156 | 1156 | $events[0]['id'] = $cal_id;  | 
                                                        
| 1157 | - if (!is_null($etag)) $events[0]['etag'] = (int) $etag;  | 
                                                        |
| 1157 | + if (!is_null($etag)) $events[0]['etag'] = (int)$etag;  | 
                                                        |
| 1158 | 1158 | if ($recur_date) $events[0]['recurrence'] = $recur_date;  | 
                                                        
| 1159 | 1159 | }  | 
                                                        
| 1160 | 1160 |  			elseif (($foundEvent = $this->find_event(array('id' => $cal_id), 'exact')) && | 
                                                        
@@ -1196,9 +1196,9 @@ discard block  | 
                                                    ||
| 1196 | 1196 | if (!is_array($event)) continue; // the iterator may return false  | 
                                                        
| 1197 | 1197 | |
| 1198 | 1198 | // Run event through callback  | 
                                                        
| 1199 | - if($this->event_callback && is_callable($this->event_callback))  | 
                                                        |
| 1199 | + if ($this->event_callback && is_callable($this->event_callback))  | 
                                                        |
| 1200 | 1200 |  			{ | 
                                                        
| 1201 | - if(!call_user_func_array($this->event_callback, array(&$event)))  | 
                                                        |
| 1201 | + if (!call_user_func_array($this->event_callback, array(&$event)))  | 
                                                        |
| 1202 | 1202 |  				{ | 
                                                        
| 1203 | 1203 | // Callback cancelled event  | 
                                                        
| 1204 | 1204 | continue;  | 
                                                        
@@ -1216,7 +1216,7 @@ discard block  | 
                                                    ||
| 1216 | 1216 |  			{ | 
                                                        
| 1217 | 1217 | error_log(__FILE__.'['.__LINE__.'] '.__METHOD__  | 
                                                        
| 1218 | 1218 | ."($cal_id, $etag, $recur_date, $principalURL, $user, $charset)\n"  | 
                                                        
| 1219 | - . array2string($event)."\n",3,$this->logfile);  | 
                                                        |
| 1219 | + . array2string($event)."\n", 3, $this->logfile);  | 
                                                        |
| 1220 | 1220 | }  | 
                                                        
| 1221 | 1221 | |
| 1222 | 1222 | $updated_id = false;  | 
                                                        
@@ -1239,14 +1239,14 @@ discard block  | 
                                                    ||
| 1239 | 1239 |  					{ | 
                                                        
| 1240 | 1240 | if ($delete_exceptions)  | 
                                                        
| 1241 | 1241 |  						{ | 
                                                        
| 1242 | - $this->delete($id,0,false,$skip_notification);  | 
                                                        |
| 1242 | + $this->delete($id, 0, false, $skip_notification);  | 
                                                        |
| 1243 | 1243 | }  | 
                                                        
| 1244 | 1244 | else  | 
                                                        
| 1245 | 1245 |  						{ | 
                                                        
| 1246 | 1246 | if (!($exception = $this->read($id))) continue;  | 
                                                        
| 1247 | 1247 |  							$exception['uid'] = Api\CalDAV::generate_uid('calendar', $id); | 
                                                        
| 1248 | 1248 | $exception['reference'] = $exception['recurrence'] = 0;  | 
                                                        
| 1249 | - $this->update($exception, true,true,false,true,$msg,$skip_notification);  | 
                                                        |
| 1249 | + $this->update($exception, true, true, false, true, $msg, $skip_notification);  | 
                                                        |
| 1250 | 1250 | }  | 
                                                        
| 1251 | 1251 | }  | 
                                                        
| 1252 | 1252 | }  | 
                                                        
@@ -1263,7 +1263,7 @@ discard block  | 
                                                    ||
| 1263 | 1263 |  				{ | 
                                                        
| 1264 | 1264 | error_log(__FILE__.'['.__LINE__.'] '.__METHOD__  | 
                                                        
| 1265 | 1265 | . "(UPDATE Event)\n"  | 
                                                        
| 1266 | - . array2string($event_info['stored_event'])."\n",3,$this->logfile);  | 
                                                        |
| 1266 | + . array2string($event_info['stored_event'])."\n", 3, $this->logfile);  | 
                                                        |
| 1267 | 1267 | }  | 
                                                        
| 1268 | 1268 | if (empty($event['uid']))  | 
                                                        
| 1269 | 1269 |  				{ | 
                                                        
@@ -1285,7 +1285,7 @@ discard block  | 
                                                    ||
| 1285 | 1285 | if ($this->log)  | 
                                                        
| 1286 | 1286 |  								{ | 
                                                        
| 1287 | 1287 | error_log(__FILE__.'['.__LINE__.'] '.__METHOD__.  | 
                                                        
| 1288 | - "() Restore status for $uid\n",3,$this->logfile);  | 
                                                        |
| 1288 | + "() Restore status for $uid\n", 3, $this->logfile);  | 
                                                        |
| 1289 | 1289 | }  | 
                                                        
| 1290 | 1290 | $event['participants'][$uid] = $event_info['stored_event']['participants'][$uid];  | 
                                                        
| 1291 | 1291 | }  | 
                                                        
@@ -1320,7 +1320,7 @@ discard block  | 
                                                    ||
| 1320 | 1320 | if ($this->log)  | 
                                                        
| 1321 | 1321 |  					{ | 
                                                        
| 1322 | 1322 | error_log(__FILE__.'['.__LINE__.'] '.__METHOD__.  | 
                                                        
| 1323 | - "()[MERGE]\n",3,$this->logfile);  | 
                                                        |
| 1323 | + "()[MERGE]\n", 3, $this->logfile);  | 
                                                        |
| 1324 | 1324 | }  | 
                                                        
| 1325 | 1325 | // overwrite with server data for merge  | 
                                                        
| 1326 | 1326 | foreach ($event_info['stored_event'] as $key => $value)  | 
                                                        
@@ -1328,7 +1328,7 @@ discard block  | 
                                                    ||
| 1328 | 1328 | switch ($key)  | 
                                                        
| 1329 | 1329 |  						{ | 
                                                        
| 1330 | 1330 | case 'participants_types':  | 
                                                        
| 1331 | - continue 2; // +1 for switch  | 
                                                        |
| 1331 | + continue 2; // +1 for switch  | 
                                                        |
| 1332 | 1332 | |
| 1333 | 1333 | case 'participants':  | 
                                                        
| 1334 | 1334 | foreach ($event_info['stored_event']['participants'] as $uid => $status)  | 
                                                        
@@ -1350,7 +1350,7 @@ discard block  | 
                                                    ||
| 1350 | 1350 | else  | 
                                                        
| 1351 | 1351 |  				{ | 
                                                        
| 1352 | 1352 | // no merge  | 
                                                        
| 1353 | - if(!isset($this->supportedFields['category']))  | 
                                                        |
| 1353 | + if (!isset($this->supportedFields['category']))  | 
                                                        |
| 1354 | 1354 |  					{ | 
                                                        
| 1355 | 1355 | $event['category'] = $event_info['stored_event']['category'];  | 
                                                        
| 1356 | 1356 | }  | 
                                                        
@@ -1362,7 +1362,7 @@ discard block  | 
                                                    ||
| 1362 | 1362 | if ($this->log)  | 
                                                        
| 1363 | 1363 |  						{ | 
                                                        
| 1364 | 1364 | error_log(__FILE__.'['.__LINE__.'] '.__METHOD__.  | 
                                                        
| 1365 | - "() No participants\n",3,$this->logfile);  | 
                                                        |
| 1365 | + "() No participants\n", 3, $this->logfile);  | 
                                                        |
| 1366 | 1366 | }  | 
                                                        
| 1367 | 1367 | |
| 1368 | 1368 | // If this is an updated meeting, and the client doesn't support  | 
                                                        
@@ -1381,7 +1381,7 @@ discard block  | 
                                                    ||
| 1381 | 1381 | if ($this->log)  | 
                                                        
| 1382 | 1382 |  								{ | 
                                                        
| 1383 | 1383 | error_log(__FILE__.'['.__LINE__.'] '.__METHOD__.  | 
                                                        
| 1384 | - "() Restore resource $uid to status $status\n",3,$this->logfile);  | 
                                                        |
| 1384 | + "() Restore resource $uid to status $status\n", 3, $this->logfile);  | 
                                                        |
| 1385 | 1385 | }  | 
                                                        
| 1386 | 1386 | // Add it back in  | 
                                                        
| 1387 | 1387 | $event['participants'][$uid] = $status;  | 
                                                        
@@ -1469,8 +1469,7 @@ discard block  | 
                                                    ||
| 1469 | 1469 | }  | 
                                                        
| 1470 | 1470 | // for resources check which new-status to give (eg. with direct booking permision 'A' instead 'U')  | 
                                                        
| 1471 | 1471 | $event['participants'][$user] = calendar_so::combine_status(  | 
                                                        
| 1472 | - $user < 0 || !isset($this->resources[$user[0]]['new_status']) ? 'U' :  | 
                                                        |
| 1473 | - ExecMethod($this->resources[$user[0]]['new_status'], substr($user, 1)));  | 
                                                        |
| 1472 | + $user < 0 || !isset($this->resources[$user[0]]['new_status']) ? 'U' : ExecMethod($this->resources[$user[0]]['new_status'], substr($user, 1)));  | 
                                                        |
| 1474 | 1473 | }  | 
                                                        
| 1475 | 1474 | }  | 
                                                        
| 1476 | 1475 | // check if an owner is set and the current user has add rights  | 
                                                        
@@ -1535,9 +1534,9 @@ discard block  | 
                                                    ||
| 1535 | 1534 | |
| 1536 | 1535 | if ($this->log)  | 
                                                        
| 1537 | 1536 |  			{ | 
                                                        
| 1538 | -				error_log(__FILE__.'['.__LINE__.'] '.__METHOD__ . '(' | 
                                                        |
| 1539 | - . $event_info['type'] . ")\n"  | 
                                                        |
| 1540 | - . array2string($event)."\n",3,$this->logfile);  | 
                                                        |
| 1537 | +				error_log(__FILE__.'['.__LINE__.'] '.__METHOD__.'(' | 
                                                        |
| 1538 | + . $event_info['type'].")\n"  | 
                                                        |
| 1539 | + . array2string($event)."\n", 3, $this->logfile);  | 
                                                        |
| 1541 | 1540 | }  | 
                                                        
| 1542 | 1541 | |
| 1543 | 1542 | // Android (any maybe others) delete recurrences by setting STATUS: CANCELLED  | 
                                                        
@@ -1545,10 +1544,10 @@ discard block  | 
                                                    ||
| 1545 | 1544 |  			if (in_array($event_info['type'], array('SERIES-EXCEPTION', 'SERIES-EXCEPTION-PROPAGATE', 'SERIES-PSEUDO-EXCEPTION')) && | 
                                                        
| 1546 | 1545 | $event['status'] == 'CANCELLED')  | 
                                                        
| 1547 | 1546 |  			{ | 
                                                        
| 1548 | - if (!$this->delete($event['id'] ? $event['id'] : $cal_id, $event['recurrence'],false,$skip_notification))  | 
                                                        |
| 1547 | + if (!$this->delete($event['id'] ? $event['id'] : $cal_id, $event['recurrence'], false, $skip_notification))  | 
                                                        |
| 1549 | 1548 |  				{ | 
                                                        
| 1550 | 1549 | // delete fails (because no rights), reject recurrence  | 
                                                        
| 1551 | - $this->set_status($event['id'] ? $event['id'] : $cal_id, $this->user, 'R', $event['recurrence'],false,true,$skip_notification);  | 
                                                        |
| 1550 | + $this->set_status($event['id'] ? $event['id'] : $cal_id, $this->user, 'R', $event['recurrence'], false, true, $skip_notification);  | 
                                                        |
| 1552 | 1551 | }  | 
                                                        
| 1553 | 1552 | continue;  | 
                                                        
| 1554 | 1553 | }  | 
                                                        
@@ -1560,7 +1559,7 @@ discard block  | 
                                                    ||
| 1560 | 1559 | if ($this->log)  | 
                                                        
| 1561 | 1560 |  					{ | 
                                                        
| 1562 | 1561 | error_log(__FILE__.'['.__LINE__.'] '.__METHOD__.  | 
                                                        
| 1563 | - "(): event SINGLE\n",3,$this->logfile);  | 
                                                        |
| 1562 | + "(): event SINGLE\n", 3, $this->logfile);  | 
                                                        |
| 1564 | 1563 | }  | 
                                                        
| 1565 | 1564 | |
| 1566 | 1565 | // update the event  | 
                                                        
@@ -1570,7 +1569,7 @@ discard block  | 
                                                    ||
| 1570 | 1569 | $event['reference'] = 0;  | 
                                                        
| 1571 | 1570 | $event_to_store = $event; // prevent $event from being changed by the update method  | 
                                                        
| 1572 | 1571 | $this->server2usertime($event_to_store);  | 
                                                        
| 1573 | - $updated_id = $this->update($event_to_store, true,true,false,true,$msg,$skip_notification);  | 
                                                        |
| 1572 | + $updated_id = $this->update($event_to_store, true, true, false, true, $msg, $skip_notification);  | 
                                                        |
| 1574 | 1573 | unset($event_to_store);  | 
                                                        
| 1575 | 1574 | }  | 
                                                        
| 1576 | 1575 | break;  | 
                                                        
@@ -1579,7 +1578,7 @@ discard block  | 
                                                    ||
| 1579 | 1578 | if ($this->log)  | 
                                                        
| 1580 | 1579 |  					{ | 
                                                        
| 1581 | 1580 | error_log(__FILE__.'['.__LINE__.'] '.__METHOD__.  | 
                                                        
| 1582 | - "(): event SERIES-MASTER\n",3,$this->logfile);  | 
                                                        |
| 1581 | + "(): event SERIES-MASTER\n", 3, $this->logfile);  | 
                                                        |
| 1583 | 1582 | }  | 
                                                        
| 1584 | 1583 | |
| 1585 | 1584 | // remove all known pseudo exceptions and update the event  | 
                                                        
@@ -1589,8 +1588,8 @@ discard block  | 
                                                    ||
| 1589 | 1588 | $days = $this->so->get_recurrence_exceptions($event_info['stored_event'], $this->tzid, 0, 0, $filter);  | 
                                                        
| 1590 | 1589 | if ($this->log)  | 
                                                        
| 1591 | 1590 |  						{ | 
                                                        
| 1592 | - error_log(__FILE__.'['.__LINE__.'] '.__METHOD__."(EXCEPTIONS MAPPING):\n" .  | 
                                                        |
| 1593 | - array2string($days)."\n",3,$this->logfile);  | 
                                                        |
| 1591 | + error_log(__FILE__.'['.__LINE__.'] '.__METHOD__."(EXCEPTIONS MAPPING):\n".  | 
                                                        |
| 1592 | + array2string($days)."\n", 3, $this->logfile);  | 
                                                        |
| 1594 | 1593 | }  | 
                                                        
| 1595 | 1594 | if (is_array($days))  | 
                                                        
| 1596 | 1595 |  						{ | 
                                                        
@@ -1608,7 +1607,7 @@ discard block  | 
                                                    ||
| 1608 | 1607 | |
| 1609 | 1608 | $event_to_store = $event; // prevent $event from being changed by the update method  | 
                                                        
| 1610 | 1609 | $this->server2usertime($event_to_store);  | 
                                                        
| 1611 | - $updated_id = $this->update($event_to_store, true,true,false,true,$msg,$skip_notification);  | 
                                                        |
| 1610 | + $updated_id = $this->update($event_to_store, true, true, false, true, $msg, $skip_notification);  | 
                                                        |
| 1612 | 1611 | unset($event_to_store);  | 
                                                        
| 1613 | 1612 | }  | 
                                                        
| 1614 | 1613 | break;  | 
                                                        
@@ -1618,7 +1617,7 @@ discard block  | 
                                                    ||
| 1618 | 1617 | if ($this->log)  | 
                                                        
| 1619 | 1618 |  					{ | 
                                                        
| 1620 | 1619 | error_log(__FILE__.'['.__LINE__.'] '.__METHOD__.  | 
                                                        
| 1621 | - "(): event SERIES-EXCEPTION\n",3,$this->logfile);  | 
                                                        |
| 1620 | + "(): event SERIES-EXCEPTION\n", 3, $this->logfile);  | 
                                                        |
| 1622 | 1621 | }  | 
                                                        
| 1623 | 1622 | |
| 1624 | 1623 | // update event  | 
                                                        
@@ -1674,13 +1673,13 @@ discard block  | 
                                                    ||
| 1674 | 1673 | $event['owner'] = $event_info['master_event']['owner'];  | 
                                                        
| 1675 | 1674 | $event_to_store = $event_info['master_event']; // prevent the master_event from being changed by the update method  | 
                                                        
| 1676 | 1675 | $this->server2usertime($event_to_store);  | 
                                                        
| 1677 | - $this->update($event_to_store, true,true,false,true,$msg,$skip_notification);  | 
                                                        |
| 1676 | + $this->update($event_to_store, true, true, false, true, $msg, $skip_notification);  | 
                                                        |
| 1678 | 1677 | unset($event_to_store);  | 
                                                        
| 1679 | 1678 | }  | 
                                                        
| 1680 | 1679 | |
| 1681 | 1680 | $event_to_store = $event; // prevent $event from being changed by update method  | 
                                                        
| 1682 | 1681 | $this->server2usertime($event_to_store);  | 
                                                        
| 1683 | - $updated_id = $this->update($event_to_store, true,true,false,true,$msg,$skip_notification);  | 
                                                        |
| 1682 | + $updated_id = $this->update($event_to_store, true, true, false, true, $msg, $skip_notification);  | 
                                                        |
| 1684 | 1683 | unset($event_to_store);  | 
                                                        
| 1685 | 1684 | }  | 
                                                        
| 1686 | 1685 | break;  | 
                                                        
@@ -1689,7 +1688,7 @@ discard block  | 
                                                    ||
| 1689 | 1688 | if ($this->log)  | 
                                                        
| 1690 | 1689 |  					{ | 
                                                        
| 1691 | 1690 | error_log(__FILE__.'['.__LINE__.'] '.__METHOD__.  | 
                                                        
| 1692 | - "(): event SERIES-PSEUDO-EXCEPTION\n",3,$this->logfile);  | 
                                                        |
| 1691 | + "(): event SERIES-PSEUDO-EXCEPTION\n", 3, $this->logfile);  | 
                                                        |
| 1693 | 1692 | }  | 
                                                        
| 1694 | 1693 |  					//Horde::logMessage('importVCAL event SERIES-PSEUDO-EXCEPTION', | 
                                                        
| 1695 | 1694 | // __FILE__, __LINE__, PEAR_LOG_DEBUG);  | 
                                                        
@@ -1710,7 +1709,7 @@ discard block  | 
                                                    ||
| 1710 | 1709 | // save the series master with the adjusted exceptions  | 
                                                        
| 1711 | 1710 | $event_to_store = $event_info['master_event']; // prevent the master_event from being changed by the update method  | 
                                                        
| 1712 | 1711 | $this->server2usertime($event_to_store);  | 
                                                        
| 1713 | - $updated_id = $this->update($event_to_store, true, true, false, false,$msg,$skip_notification);  | 
                                                        |
| 1712 | + $updated_id = $this->update($event_to_store, true, true, false, false, $msg, $skip_notification);  | 
                                                        |
| 1714 | 1713 | unset($event_to_store);  | 
                                                        
| 1715 | 1714 | }  | 
                                                        
| 1716 | 1715 | |
@@ -1737,13 +1736,13 @@ discard block  | 
                                                    ||
| 1737 | 1736 | if ($event_info['acl_edit'])  | 
                                                        
| 1738 | 1737 |  							{ | 
                                                        
| 1739 | 1738 | // update all participants if we have the right to do that  | 
                                                        
| 1740 | - $this->update_status($event, $event_info['stored_event'],0,$skip_notification);  | 
                                                        |
| 1739 | + $this->update_status($event, $event_info['stored_event'], 0, $skip_notification);  | 
                                                        |
| 1741 | 1740 | }  | 
                                                        
| 1742 | 1741 | elseif (isset($event['participants'][$this->user]) || isset($event_info['stored_event']['participants'][$this->user]))  | 
                                                        
| 1743 | 1742 |  							{ | 
                                                        
| 1744 | 1743 | // update the users status only  | 
                                                        
| 1745 | 1744 | $this->set_status($event_info['stored_event']['id'], $this->user,  | 
                                                        
| 1746 | - ($event['participants'][$this->user] ? $event['participants'][$this->user] : 'R'), 0, true,true,$skip_notification);  | 
                                                        |
| 1745 | + ($event['participants'][$this->user] ? $event['participants'][$this->user] : 'R'), 0, true, true, $skip_notification);  | 
                                                        |
| 1747 | 1746 | }  | 
                                                        
| 1748 | 1747 | }  | 
                                                        
| 1749 | 1748 | break;  | 
                                                        
@@ -1755,13 +1754,13 @@ discard block  | 
                                                    ||
| 1755 | 1754 | if ($event_info['acl_edit'])  | 
                                                        
| 1756 | 1755 |  							{ | 
                                                        
| 1757 | 1756 | // update all participants if we have the right to do that  | 
                                                        
| 1758 | - $this->update_status($event, $event_info['stored_event'], $recurrence,$skip_notification);  | 
                                                        |
| 1757 | + $this->update_status($event, $event_info['stored_event'], $recurrence, $skip_notification);  | 
                                                        |
| 1759 | 1758 | }  | 
                                                        
| 1760 | 1759 | elseif (isset($event['participants'][$this->user]) || isset($event_info['master_event']['participants'][$this->user]))  | 
                                                        
| 1761 | 1760 |  							{ | 
                                                        
| 1762 | 1761 | // update the users status only  | 
                                                        
| 1763 | 1762 | $this->set_status($event_info['master_event']['id'], $this->user,  | 
                                                        
| 1764 | - ($event['participants'][$this->user] ? $event['participants'][$this->user] : 'R'), $recurrence, true,true,$skip_notification);  | 
                                                        |
| 1763 | + ($event['participants'][$this->user] ? $event['participants'][$this->user] : 'R'), $recurrence, true, true, $skip_notification);  | 
                                                        |
| 1765 | 1764 | }  | 
                                                        
| 1766 | 1765 | }  | 
                                                        
| 1767 | 1766 | break;  | 
                                                        
@@ -1778,7 +1777,7 @@ discard block  | 
                                                    ||
| 1778 | 1777 | break;  | 
                                                        
| 1779 | 1778 | |
| 1780 | 1779 | case 'SERIES-PSEUDO-EXCEPTION':  | 
                                                        
| 1781 | - $return_id = is_array($event_info['master_event']) ? $event_info['master_event']['id'] . ':' . $event['recurrence'] : false;  | 
                                                        |
| 1780 | + $return_id = is_array($event_info['master_event']) ? $event_info['master_event']['id'].':'.$event['recurrence'] : false;  | 
                                                        |
| 1782 | 1781 | break;  | 
                                                        
| 1783 | 1782 | |
| 1784 | 1783 | case 'SERIES-EXCEPTION-PROPAGATE':  | 
                                                        
@@ -1791,7 +1790,7 @@ discard block  | 
                                                    ||
| 1791 | 1790 |  					{ | 
                                                        
| 1792 | 1791 | // we did not have sufficient rights to propagate the status only exception to a real one  | 
                                                        
| 1793 | 1792 | // we have to keep the SERIES-PSEUDO-EXCEPTION id and keep the event untouched  | 
                                                        
| 1794 | - $return_id = $event_info['master_event']['id'] . ':' . $event['recurrence'];  | 
                                                        |
| 1793 | + $return_id = $event_info['master_event']['id'].':'.$event['recurrence'];  | 
                                                        |
| 1795 | 1794 | }  | 
                                                        
| 1796 | 1795 | break;  | 
                                                        
| 1797 | 1796 | }  | 
                                                        
@@ -1805,8 +1804,8 @@ discard block  | 
                                                    ||
| 1805 | 1804 | if ($this->log)  | 
                                                        
| 1806 | 1805 |  			{ | 
                                                        
| 1807 | 1806 | $event_info['stored_event'] = $this->read($event_info['stored_event']['id']);  | 
                                                        
| 1808 | - error_log(__FILE__.'['.__LINE__.'] '.__METHOD__."()[$updated_id]\n" .  | 
                                                        |
| 1809 | - array2string($event_info['stored_event'])."\n",3,$this->logfile);  | 
                                                        |
| 1807 | + error_log(__FILE__.'['.__LINE__.'] '.__METHOD__."()[$updated_id]\n".  | 
                                                        |
| 1808 | + array2string($event_info['stored_event'])."\n", 3, $this->logfile);  | 
                                                        |
| 1810 | 1809 | }  | 
                                                        
| 1811 | 1810 | }  | 
                                                        
| 1812 | 1811 | date_default_timezone_set($GLOBALS['egw_info']['server']['server_timezone']);  | 
                                                        
@@ -1828,19 +1827,19 @@ discard block  | 
                                                    ||
| 1828 | 1827 | * @return mixed on success: int $cal_id > 0, on error or conflicts false.  | 
                                                        
| 1829 | 1828 | * Conflicts are passed to $this->conflict_callback  | 
                                                        
| 1830 | 1829 | */  | 
                                                        
| 1831 | - public function update(&$event,$ignore_conflicts=false,$touch_modified=true,$ignore_acl=false,$updateTS=true,&$messages=null, $skip_notification=false)  | 
                                                        |
| 1830 | + public function update(&$event, $ignore_conflicts = false, $touch_modified = true, $ignore_acl = false, $updateTS = true, &$messages = null, $skip_notification = false)  | 
                                                        |
| 1832 | 1831 |  	{ | 
                                                        
| 1833 | - if($this->conflict_callback !== null)  | 
                                                        |
| 1832 | + if ($this->conflict_callback !== null)  | 
                                                        |
| 1834 | 1833 |  		{ | 
                                                        
| 1835 | 1834 | // calendar_ical overrides search(), which breaks conflict checking  | 
                                                        
| 1836 | 1835 | // so we make sure to use the original from parent  | 
                                                        
| 1837 | 1836 | static $bo = null;  | 
                                                        
| 1838 | - if(!$bo)  | 
                                                        |
| 1837 | + if (!$bo)  | 
                                                        |
| 1839 | 1838 |  			{ | 
                                                        
| 1840 | 1839 | $bo = new calendar_boupdate();  | 
                                                        
| 1841 | 1840 | }  | 
                                                        
| 1842 | 1841 | $conflicts = $bo->conflicts($event);  | 
                                                        
| 1843 | - if(is_array($conflicts) && count($conflicts) > 0)  | 
                                                        |
| 1842 | + if (is_array($conflicts) && count($conflicts) > 0)  | 
                                                        |
| 1844 | 1843 |  			{ | 
                                                        
| 1845 | 1844 | call_user_func_array($this->conflict_callback, array(&$event, &$conflicts));  | 
                                                        
| 1846 | 1845 | return false;  | 
                                                        
@@ -1861,11 +1860,11 @@ discard block  | 
                                                    ||
| 1861 | 1860 |  	{ | 
                                                        
| 1862 | 1861 |  		if ($this->debug) error_log(__METHOD__."(".array2string($event).', old_alarms='.array2string($old_alarms).", $user,)"); | 
                                                        
| 1863 | 1862 | $modified = 0;  | 
                                                        
| 1864 | - foreach($event['alarm'] as &$alarm)  | 
                                                        |
| 1863 | + foreach ($event['alarm'] as &$alarm)  | 
                                                        |
| 1865 | 1864 |  		{ | 
                                                        
| 1866 | 1865 | // check if alarm is already stored or from other users  | 
                                                        
| 1867 | 1866 | $found = false;  | 
                                                        
| 1868 | - foreach($old_alarms as $id => $old_alarm)  | 
                                                        |
| 1867 | + foreach ($old_alarms as $id => $old_alarm)  | 
                                                        |
| 1869 | 1868 |  			{ | 
                                                        
| 1870 | 1869 | // not current users alarm --> ignore  | 
                                                        
| 1871 | 1870 | if (!$old_alarm['all'] && $old_alarm['owner'] != $user)  | 
                                                        
@@ -1881,7 +1880,7 @@ discard block  | 
                                                    ||
| 1881 | 1880 | break;  | 
                                                        
| 1882 | 1881 | }  | 
                                                        
| 1883 | 1882 | }  | 
                                                        
| 1884 | - if ($this->debug) error_log(__METHOD__."($event[title] (#$event[id]), ..., $user) processing ".($found?'existing':'new')." alarm ".array2string($alarm));  | 
                                                        |
| 1883 | + if ($this->debug) error_log(__METHOD__."($event[title] (#$event[id]), ..., $user) processing ".($found ? 'existing' : 'new')." alarm ".array2string($alarm));  | 
                                                        |
| 1885 | 1884 | if (!empty($alarm['attrs']['X-LIC-ERROR']))  | 
                                                        
| 1886 | 1885 |  			{ | 
                                                        
| 1887 | 1886 | if ($this->debug) error_log(__METHOD__."($event[title] (#$event[id]), ..., $user) ignored X-LIC-ERROR=".array2string($alarm['X-LIC-ERROR']));  | 
                                                        
@@ -1909,7 +1908,7 @@ discard block  | 
                                                    ||
| 1909 | 1908 | }  | 
                                                        
| 1910 | 1909 | }  | 
                                                        
| 1911 | 1910 | // remove all old alarms left from current user  | 
                                                        
| 1912 | - foreach($old_alarms as $id => $old_alarm)  | 
                                                        |
| 1911 | + foreach ($old_alarms as $id => $old_alarm)  | 
                                                        |
| 1913 | 1912 |  		{ | 
                                                        
| 1914 | 1913 | // not current users alarm --> ignore  | 
                                                        
| 1915 | 1914 | if (!$old_alarm['all'] && $old_alarm['owner'] != $user)  | 
                                                        
@@ -1932,7 +1931,7 @@ discard block  | 
                                                    ||
| 1932 | 1931 | * @param string $what ='value'  | 
                                                        
| 1933 | 1932 | * @return mixed  | 
                                                        
| 1934 | 1933 | */  | 
                                                        
| 1935 | - static function _get_attribute($components,$name,$what='value')  | 
                                                        |
| 1934 | + static function _get_attribute($components, $name, $what = 'value')  | 
                                                        |
| 1936 | 1935 |  	{ | 
                                                        
| 1937 | 1936 | foreach ($components as $attribute)  | 
                                                        
| 1938 | 1937 |  		{ | 
                                                        
@@ -1967,7 +1966,7 @@ discard block  | 
                                                    ||
| 1967 | 1966 | case 'DURATION':  | 
                                                        
| 1968 | 1967 | if (isset($vattr['params']['RELATED']) && $vattr['params']['RELATED'] == 'END')  | 
                                                        
| 1969 | 1968 |  							{ | 
                                                        
| 1970 | - $alarm['offset'] = $duration -$vattr['value'];  | 
                                                        |
| 1969 | + $alarm['offset'] = $duration - $vattr['value'];  | 
                                                        |
| 1971 | 1970 | }  | 
                                                        
| 1972 | 1971 | elseif (isset($vattr['params']['RELATED']) && $vattr['params']['RELATED'] != 'START')  | 
                                                        
| 1973 | 1972 |  							{ | 
                                                        
@@ -1983,7 +1982,7 @@ discard block  | 
                                                    ||
| 1983 | 1982 | $alarm['time'] = $vattr['value'];  | 
                                                        
| 1984 | 1983 | break;  | 
                                                        
| 1985 | 1984 | default:  | 
                                                        
| 1986 | -							error_log('VALARM/TRIGGER: unsupported value type:' . $vtype); | 
                                                        |
| 1985 | +							error_log('VALARM/TRIGGER: unsupported value type:'.$vtype); | 
                                                        |
| 1987 | 1986 | }  | 
                                                        
| 1988 | 1987 | break;  | 
                                                        
| 1989 | 1988 | |
@@ -2008,9 +2007,9 @@ discard block  | 
                                                    ||
| 2008 | 2007 | return 0;  | 
                                                        
| 2009 | 2008 | }  | 
                                                        
| 2010 | 2009 | |
| 2011 | - function setSupportedFields($_productManufacturer='', $_productName='')  | 
                                                        |
| 2010 | + function setSupportedFields($_productManufacturer = '', $_productName = '')  | 
                                                        |
| 2012 | 2011 |  	{ | 
                                                        
| 2013 | - $state =& $_SESSION['SyncML.state'];  | 
                                                        |
| 2012 | + $state = & $_SESSION['SyncML.state'];  | 
                                                        |
| 2014 | 2013 | if (isset($state))  | 
                                                        
| 2015 | 2014 |  		{ | 
                                                        
| 2016 | 2015 | $deviceInfo = $state->getClientDeviceInfo();  | 
                                                        
@@ -2307,10 +2306,10 @@ discard block  | 
                                                    ||
| 2307 | 2306 | if ($this->log)  | 
                                                        
| 2308 | 2307 |  		{ | 
                                                        
| 2309 | 2308 | error_log(__FILE__.'['.__LINE__.'] '.__METHOD__.  | 
                                                        
| 2310 | -				'(' . $this->productManufacturer . | 
                                                        |
| 2311 | - ', '. $this->productName .', ' .  | 
                                                        |
| 2312 | - ($this->tzid ? $this->tzid : Api\DateTime::$user_timezone->getName()) .  | 
                                                        |
| 2313 | - ', ' . $this->calendarOwner . ")\n" , 3, $this->logfile);  | 
                                                        |
| 2309 | +				'('.$this->productManufacturer. | 
                                                        |
| 2310 | + ', '.$this->productName.', '.  | 
                                                        |
| 2311 | + ($this->tzid ? $this->tzid : Api\DateTime::$user_timezone->getName()).  | 
                                                        |
| 2312 | + ', '.$this->calendarOwner.")\n", 3, $this->logfile);  | 
                                                        |
| 2314 | 2313 | }  | 
                                                        
| 2315 | 2314 | |
| 2316 | 2315 |  		//Horde::logMessage('setSupportedFields(' . $this->productManufacturer . ', ' | 
                                                        
@@ -2328,12 +2327,12 @@ discard block  | 
                                                    ||
| 2328 | 2327 | * utf-8 for new format, iso-8859-1 for old format.  | 
                                                        
| 2329 | 2328 | * @return Iterator|array|boolean Iterator if resource given or array of events on success, false on failure  | 
                                                        
| 2330 | 2329 | */  | 
                                                        
| 2331 | - function icaltoegw($_vcalData, $principalURL='', $charset=null)  | 
                                                        |
| 2330 | + function icaltoegw($_vcalData, $principalURL = '', $charset = null)  | 
                                                        |
| 2332 | 2331 |  	{ | 
                                                        
| 2333 | 2332 | if ($this->log)  | 
                                                        
| 2334 | 2333 |  		{ | 
                                                        
| 2335 | - error_log(__FILE__.'['.__LINE__.'] '.__METHOD__."($principalURL, $charset)\n" .  | 
                                                        |
| 2336 | - array2string($_vcalData)."\n",3,$this->logfile);  | 
                                                        |
| 2334 | + error_log(__FILE__.'['.__LINE__.'] '.__METHOD__."($principalURL, $charset)\n".  | 
                                                        |
| 2335 | + array2string($_vcalData)."\n", 3, $this->logfile);  | 
                                                        |
| 2337 | 2336 | }  | 
                                                        
| 2338 | 2337 | |
| 2339 | 2338 | if (!is_array($this->supportedFields)) $this->setSupportedFields();  | 
                                                        
@@ -2368,14 +2367,14 @@ discard block  | 
                                                    ||
| 2368 | 2367 | if ($this->log)  | 
                                                        
| 2369 | 2368 |  			{ | 
                                                        
| 2370 | 2369 | error_log(__FILE__.'['.__LINE__.'] '.__METHOD__.  | 
                                                        
| 2371 | - "(): No vCalendar Container found!\n",3,$this->logfile);  | 
                                                        |
| 2370 | + "(): No vCalendar Container found!\n", 3, $this->logfile);  | 
                                                        |
| 2372 | 2371 | }  | 
                                                        
| 2373 | 2372 | date_default_timezone_set($GLOBALS['egw_info']['server']['server_timezone']);  | 
                                                        
| 2374 | 2373 | return false;  | 
                                                        
| 2375 | 2374 | }  | 
                                                        
| 2376 | 2375 | foreach ($vcal->getComponents() as $component)  | 
                                                        
| 2377 | 2376 |  		{ | 
                                                        
| 2378 | - if (($event = $this->_ical2egw_callback($component,$this->tzid,$principalURL,$vcal)))  | 
                                                        |
| 2377 | + if (($event = $this->_ical2egw_callback($component, $this->tzid, $principalURL, $vcal)))  | 
                                                        |
| 2379 | 2378 |  			{ | 
                                                        
| 2380 | 2379 | $events[] = $event;  | 
                                                        
| 2381 | 2380 | }  | 
                                                        
@@ -2420,13 +2419,13 @@ discard block  | 
                                                    ||
| 2420 | 2419 | * @param Horde_Icalendar $container =null container to access attributes on container  | 
                                                        
| 2421 | 2420 | * @return array|boolean event array or false if $component is no Horde_Icalendar_Vevent  | 
                                                        
| 2422 | 2421 | */  | 
                                                        
| 2423 | - function _ical2egw_callback(Horde_Icalendar $component, $tzid, $principalURL='', Horde_Icalendar $container=null)  | 
                                                        |
| 2422 | + function _ical2egw_callback(Horde_Icalendar $component, $tzid, $principalURL = '', Horde_Icalendar $container = null)  | 
                                                        |
| 2424 | 2423 |  	{ | 
                                                        
| 2425 | 2424 | //unset($component->_container); _debug_array($component);  | 
                                                        
| 2426 | 2425 | |
| 2427 | 2426 | if ($this->log)  | 
                                                        
| 2428 | 2427 |  		{ | 
                                                        
| 2429 | - error_log(__FILE__.'['.__LINE__.'] '.__METHOD__.'() '.get_class($component)." found\n",3,$this->logfile);  | 
                                                        |
| 2428 | + error_log(__FILE__.'['.__LINE__.'] '.__METHOD__.'() '.get_class($component)." found\n", 3, $this->logfile);  | 
                                                        |
| 2430 | 2429 | }  | 
                                                        
| 2431 | 2430 | |
| 2432 | 2431 | // eg. Mozilla holiday calendars contain only a X-WR-TIMEZONE on vCalendar component  | 
                                                        
@@ -2486,16 +2485,16 @@ discard block  | 
                                                    ||
| 2486 | 2485 | * @param Horde_Icalendar $container =null container to access attributes on container  | 
                                                        
| 2487 | 2486 | * @return array|boolean event on success, false on failure  | 
                                                        
| 2488 | 2487 | */  | 
                                                        
| 2489 | - function vevent2egw($component, $version, $supportedFields, $principalURL='', $check_component='Horde_Icalendar_Vevent', Horde_Icalendar $container=null)  | 
                                                        |
| 2488 | + function vevent2egw($component, $version, $supportedFields, $principalURL = '', $check_component = 'Horde_Icalendar_Vevent', Horde_Icalendar $container = null)  | 
                                                        |
| 2490 | 2489 |  	{ | 
                                                        
| 2491 | - unset($principalURL); // not longer used, but required in function signature  | 
                                                        |
| 2490 | + unset($principalURL); // not longer used, but required in function signature  | 
                                                        |
| 2492 | 2491 | |
| 2493 | 2492 | if ($check_component && !is_a($component, $check_component))  | 
                                                        
| 2494 | 2493 |  		{ | 
                                                        
| 2495 | 2494 | if ($this->log)  | 
                                                        
| 2496 | 2495 |  			{ | 
                                                        
| 2497 | - error_log(__FILE__.'['.__LINE__.'] '.__METHOD__.'()' .  | 
                                                        |
| 2498 | - get_class($component)." found\n",3,$this->logfile);  | 
                                                        |
| 2496 | + error_log(__FILE__.'['.__LINE__.'] '.__METHOD__.'()'.  | 
                                                        |
| 2497 | + get_class($component)." found\n", 3, $this->logfile);  | 
                                                        |
| 2499 | 2498 | }  | 
                                                        
| 2500 | 2499 | return false;  | 
                                                        
| 2501 | 2500 | }  | 
                                                        
@@ -2511,12 +2510,12 @@ discard block  | 
                                                    ||
| 2511 | 2510 | |
| 2512 | 2511 | $isDate = false;  | 
                                                        
| 2513 | 2512 | $event = array();  | 
                                                        
| 2514 | - $alarms = array();  | 
                                                        |
| 2513 | + $alarms = array();  | 
                                                        |
| 2515 | 2514 | $organizer_status = $organizer_uid = null;  | 
                                                        
| 2516 | - $vcardData = array(  | 
                                                        |
| 2515 | + $vcardData = array(  | 
                                                        |
| 2517 | 2516 | 'recur_type' => MCAL_RECUR_NONE,  | 
                                                        
| 2518 | 2517 | 'recur_exception' => array(),  | 
                                                        
| 2519 | - 'priority' => 0, // iCalendar default is 0=undefined, not EGroupware 5=normal  | 
                                                        |
| 2518 | + 'priority' => 0, // iCalendar default is 0=undefined, not EGroupware 5=normal  | 
                                                        |
| 2520 | 2519 | 'public' => 1,  | 
                                                        
| 2521 | 2520 | );  | 
                                                        
| 2522 | 2521 | // we need to parse DTSTART, DTEND or DURATION (in that order!) first  | 
                                                        
@@ -2535,7 +2534,7 @@ discard block  | 
                                                    ||
| 2535 | 2534 | $isDate = true;  | 
                                                        
| 2536 | 2535 | }  | 
                                                        
| 2537 | 2536 | $dtstart_ts = is_numeric($attributes['value']) ? $attributes['value'] : $this->date2ts($attributes['value']);  | 
                                                        
| 2538 | - $vcardData['start'] = $dtstart_ts;  | 
                                                        |
| 2537 | + $vcardData['start'] = $dtstart_ts;  | 
                                                        |
| 2539 | 2538 | |
| 2540 | 2539 | // set event timezone from dtstart, if specified there  | 
                                                        
| 2541 | 2540 | if (!empty($attributes['params']['TZID']))  | 
                                                        
@@ -2553,18 +2552,18 @@ discard block  | 
                                                    ||
| 2553 | 2552 | }  | 
                                                        
| 2554 | 2553 | else  | 
                                                        
| 2555 | 2554 |  							{ | 
                                                        
| 2556 | - error_log(__METHOD__ . '() unknown TZID='  | 
                                                        |
| 2557 | - . $attributes['params']['TZID'] . ', defaulting to timezone "'  | 
                                                        |
| 2558 | - . date_default_timezone_get() . '".'.array2string($tz));  | 
                                                        |
| 2559 | - $event['tzid'] = date_default_timezone_get(); // default to current timezone  | 
                                                        |
| 2555 | + error_log(__METHOD__.'() unknown TZID='  | 
                                                        |
| 2556 | + . $attributes['params']['TZID'].', defaulting to timezone "'  | 
                                                        |
| 2557 | + . date_default_timezone_get().'".'.array2string($tz));  | 
                                                        |
| 2558 | + $event['tzid'] = date_default_timezone_get(); // default to current timezone  | 
                                                        |
| 2560 | 2559 | }  | 
                                                        
| 2561 | 2560 | }  | 
                                                        
| 2562 | - catch(Exception $e)  | 
                                                        |
| 2561 | + catch (Exception $e)  | 
                                                        |
| 2563 | 2562 |  						{ | 
                                                        
| 2564 | - error_log(__METHOD__ . '() unknown TZID='  | 
                                                        |
| 2565 | - . $attributes['params']['TZID'] . ', defaulting to timezone "'  | 
                                                        |
| 2566 | - . date_default_timezone_get() . '".'.$e->getMessage());  | 
                                                        |
| 2567 | - $event['tzid'] = date_default_timezone_get(); // default to current timezone  | 
                                                        |
| 2563 | + error_log(__METHOD__.'() unknown TZID='  | 
                                                        |
| 2564 | + . $attributes['params']['TZID'].', defaulting to timezone "'  | 
                                                        |
| 2565 | + . date_default_timezone_get().'".'.$e->getMessage());  | 
                                                        |
| 2566 | + $event['tzid'] = date_default_timezone_get(); // default to current timezone  | 
                                                        |
| 2568 | 2567 | }  | 
                                                        
| 2569 | 2568 | }  | 
                                                        
| 2570 | 2569 | // if no timezone given and one is specified in class (never the case for CalDAV)  | 
                                                        
@@ -2588,11 +2587,11 @@ discard block  | 
                                                    ||
| 2588 | 2587 | |
| 2589 | 2588 | case 'DTEND':  | 
                                                        
| 2590 | 2589 | $dtend_ts = is_numeric($attributes['value']) ? $attributes['value'] : $this->date2ts($attributes['value']);  | 
                                                        
| 2591 | -					if (date('H:i:s',$dtend_ts) == '00:00:00') | 
                                                        |
| 2590 | +					if (date('H:i:s', $dtend_ts) == '00:00:00') | 
                                                        |
| 2592 | 2591 |  					{ | 
                                                        
| 2593 | 2592 | $dtend_ts -= 1;  | 
                                                        
| 2594 | 2593 | }  | 
                                                        
| 2595 | - $vcardData['end'] = $dtend_ts;  | 
                                                        |
| 2594 | + $vcardData['end'] = $dtend_ts;  | 
                                                        |
| 2596 | 2595 | break;  | 
                                                        
| 2597 | 2596 | |
| 2598 | 2597 | case 'DURATION': // clients can use DTSTART+DURATION, instead of DTSTART+DTEND  | 
                                                        
@@ -2612,7 +2611,7 @@ discard block  | 
                                                    ||
| 2612 | 2611 | if ($this->log)  | 
                                                        
| 2613 | 2612 |  			{ | 
                                                        
| 2614 | 2613 | error_log(__FILE__.'['.__LINE__.'] '.__METHOD__  | 
                                                        
| 2615 | - . "() DTSTART missing!\n",3,$this->logfile);  | 
                                                        |
| 2614 | + . "() DTSTART missing!\n", 3, $this->logfile);  | 
                                                        |
| 2616 | 2615 | }  | 
                                                        
| 2617 | 2616 | return false; // not a valid entry  | 
                                                        
| 2618 | 2617 | }  | 
                                                        
@@ -2631,7 +2630,7 @@ discard block  | 
                                                    ||
| 2631 | 2630 | case 'X-MICROSOFT-CDO-ALLDAYEVENT':  | 
                                                        
| 2632 | 2631 | if (isset($supportedFields['whole_day']))  | 
                                                        
| 2633 | 2632 |  					{ | 
                                                        
| 2634 | - $event['whole_day'] = (isset($attributes['value'])?strtoupper($attributes['value'])=='TRUE':true);  | 
                                                        |
| 2633 | + $event['whole_day'] = (isset($attributes['value']) ?strtoupper($attributes['value']) == 'TRUE' : true);  | 
                                                        |
| 2635 | 2634 | }  | 
                                                        
| 2636 | 2635 | break;  | 
                                                        
| 2637 | 2636 | case 'AALARM':  | 
                                                        
@@ -2661,12 +2660,12 @@ discard block  | 
                                                    ||
| 2661 | 2660 | $vcardData['recurrence'] = $attributes['value'];  | 
                                                        
| 2662 | 2661 | break;  | 
                                                        
| 2663 | 2662 | case 'LOCATION':  | 
                                                        
| 2664 | -					$vcardData['location']	= str_replace("\r\n", "\n", $attributes['value']); | 
                                                        |
| 2663 | +					$vcardData['location'] = str_replace("\r\n", "\n", $attributes['value']); | 
                                                        |
| 2665 | 2664 | break;  | 
                                                        
| 2666 | 2665 | case 'RRULE':  | 
                                                        
| 2667 | - unset($vcardData['recur_type']); // it wont be set by +=  | 
                                                        |
| 2666 | + unset($vcardData['recur_type']); // it wont be set by +=  | 
                                                        |
| 2668 | 2667 | $vcardData += calendar_rrule::parseRrule($attributes['value']);  | 
                                                        
| 2669 | - if (!empty($vcardData['recur_enddate'])) self::check_fix_endate ($vcardData);  | 
                                                        |
| 2668 | + if (!empty($vcardData['recur_enddate'])) self::check_fix_endate($vcardData);  | 
                                                        |
| 2670 | 2669 | break;  | 
                                                        
| 2671 | 2670 | case 'EXDATE': // current Horde_Icalendar returns dates, no timestamps  | 
                                                        
| 2672 | 2671 | if ($attributes['values'])  | 
                                                        
@@ -2712,11 +2711,11 @@ discard block  | 
                                                    ||
| 2712 | 2711 | (strpos($this->productName, 'outlook') !== false  | 
                                                        
| 2713 | 2712 | || strpos($this->productName, 'pocket pc') !== false))  | 
                                                        
| 2714 | 2713 |  					{ | 
                                                        
| 2715 | - $vcardData['priority'] = (int) $this->priority_funambol2egw[$attributes['value']];  | 
                                                        |
| 2714 | + $vcardData['priority'] = (int)$this->priority_funambol2egw[$attributes['value']];  | 
                                                        |
| 2716 | 2715 | }  | 
                                                        
| 2717 | 2716 | else  | 
                                                        
| 2718 | 2717 |  					{ | 
                                                        
| 2719 | - $vcardData['priority'] = (int) $this->priority_ical2egw[$attributes['value']];  | 
                                                        |
| 2718 | + $vcardData['priority'] = (int)$this->priority_ical2egw[$attributes['value']];  | 
                                                        |
| 2720 | 2719 | }  | 
                                                        
| 2721 | 2720 | break;  | 
                                                        
| 2722 | 2721 | case 'CATEGORIES':  | 
                                                        
@@ -2730,10 +2729,10 @@ discard block  | 
                                                    ||
| 2730 | 2729 | }  | 
                                                        
| 2731 | 2730 | break;  | 
                                                        
| 2732 | 2731 | case 'ORGANIZER':  | 
                                                        
| 2733 | - $event['organizer'] = $attributes['value']; // no egw field, but needed in AS  | 
                                                        |
| 2734 | - if (strtolower(substr($event['organizer'],0,7)) == 'mailto:')  | 
                                                        |
| 2732 | + $event['organizer'] = $attributes['value']; // no egw field, but needed in AS  | 
                                                        |
| 2733 | + if (strtolower(substr($event['organizer'], 0, 7)) == 'mailto:')  | 
                                                        |
| 2735 | 2734 |  					{ | 
                                                        
| 2736 | - $event['organizer'] = substr($event['organizer'],7);  | 
                                                        |
| 2735 | + $event['organizer'] = substr($event['organizer'], 7);  | 
                                                        |
| 2737 | 2736 | }  | 
                                                        
| 2738 | 2737 | if (!empty($attributes['params']['CN']))  | 
                                                        
| 2739 | 2738 |  					{ | 
                                                        
@@ -2772,19 +2771,19 @@ discard block  | 
                                                    ||
| 2772 | 2771 | }  | 
                                                        
| 2773 | 2772 | // try parsing email and cn from attendee  | 
                                                        
| 2774 | 2773 |  					elseif (preg_match('/mailto:([@.a-z0-9_-]+)|mailto:"?([.a-z0-9_ -]*)"?[ ]*<([@.a-z0-9_-]*)>/i', | 
                                                        
| 2775 | - $attributes['value'],$matches))  | 
                                                        |
| 2774 | + $attributes['value'], $matches))  | 
                                                        |
| 2776 | 2775 |  					{ | 
                                                        
| 2777 | 2776 | $email = $matches[1] ? $matches[1] : $matches[3];  | 
                                                        
| 2778 | - $cn = isset($matches[2]) ? $matches[2]: '';  | 
                                                        |
| 2777 | + $cn = isset($matches[2]) ? $matches[2] : '';  | 
                                                        |
| 2779 | 2778 | }  | 
                                                        
| 2780 | 2779 | elseif (!empty($attributes['value']) &&  | 
                                                        
| 2781 | 2780 |  						preg_match('/"?([.a-z0-9_ -]*)"?[ ]*<([@.a-z0-9_-]*)>/i', | 
                                                        
| 2782 | - $attributes['value'],$matches))  | 
                                                        |
| 2781 | + $attributes['value'], $matches))  | 
                                                        |
| 2783 | 2782 |  					{ | 
                                                        
| 2784 | 2783 | $cn = $matches[1];  | 
                                                        
| 2785 | 2784 | $email = $matches[2];  | 
                                                        
| 2786 | 2785 | }  | 
                                                        
| 2787 | - elseif (strpos($attributes['value'],'@') !== false)  | 
                                                        |
| 2786 | + elseif (strpos($attributes['value'], '@') !== false)  | 
                                                        |
| 2788 | 2787 |  					{ | 
                                                        
| 2789 | 2788 | $email = $attributes['value'];  | 
                                                        
| 2790 | 2789 | }  | 
                                                        
@@ -2801,7 +2800,7 @@ discard block  | 
                                                    ||
| 2801 | 2800 | if ($this->log)  | 
                                                        
| 2802 | 2801 |  						{ | 
                                                        
| 2803 | 2802 | error_log(__FILE__.'['.__LINE__.'] '.__METHOD__  | 
                                                        
| 2804 | - . "(): Found X-EGROUPWARE-UID: '$uid'\n",3,$this->logfile);  | 
                                                        |
| 2803 | + . "(): Found X-EGROUPWARE-UID: '$uid'\n", 3, $this->logfile);  | 
                                                        |
| 2805 | 2804 | }  | 
                                                        
| 2806 | 2805 | }  | 
                                                        
| 2807 | 2806 | elseif ($attributes['value'] == 'Unknown')  | 
                                                        
@@ -2819,7 +2818,7 @@ discard block  | 
                                                    ||
| 2819 | 2818 | if ($this->log)  | 
                                                        
| 2820 | 2819 |  						{ | 
                                                        
| 2821 | 2820 | error_log(__FILE__.'['.__LINE__.'] '.__METHOD__  | 
                                                        
| 2822 | - . "() Found account: '$uid', '$cn', '$email'\n",3,$this->logfile);  | 
                                                        |
| 2821 | + . "() Found account: '$uid', '$cn', '$email'\n", 3, $this->logfile);  | 
                                                        |
| 2823 | 2822 | }  | 
                                                        
| 2824 | 2823 | }  | 
                                                        
| 2825 | 2824 | if (!$uid)  | 
                                                        
@@ -2836,9 +2835,9 @@ discard block  | 
                                                    ||
| 2836 | 2835 |  							$cn = str_replace(array('\\,', '\\;', '\\:', '\\\\'), | 
                                                        
| 2837 | 2836 |  										array(',', ';', ':', '\\'), | 
                                                        
| 2838 | 2837 | $attributes['params']['CN']);  | 
                                                        
| 2839 | - if ($cn[0] == '"' && substr($cn,-1) == '"')  | 
                                                        |
| 2838 | + if ($cn[0] == '"' && substr($cn, -1) == '"')  | 
                                                        |
| 2840 | 2839 |  							{ | 
                                                        
| 2841 | - $cn = substr($cn,1,-1);  | 
                                                        |
| 2840 | + $cn = substr($cn, 1, -1);  | 
                                                        |
| 2842 | 2841 | }  | 
                                                        
| 2843 | 2842 | // not searching for $cn, as match can be not unique or without an email address  | 
                                                        
| 2844 | 2843 | // --> notification will fail, better store just as email  | 
                                                        
@@ -2847,19 +2846,19 @@ discard block  | 
                                                    ||
| 2847 | 2846 | if ($this->log)  | 
                                                        
| 2848 | 2847 |  						{ | 
                                                        
| 2849 | 2848 | error_log(__FILE__.'['.__LINE__.'] '.__METHOD__  | 
                                                        
| 2850 | - . "() Search participant: '$cn', '$email'\n",3,$this->logfile);  | 
                                                        |
| 2849 | + . "() Search participant: '$cn', '$email'\n", 3, $this->logfile);  | 
                                                        |
| 2851 | 2850 | }  | 
                                                        
| 2852 | 2851 | |
| 2853 | 2852 | //elseif (//$attributes['params']['CUTYPE'] == 'GROUP'  | 
                                                        
| 2854 | -						if (preg_match('/(.*) '. lang('Group') . '/', $cn, $matches)) | 
                                                        |
| 2853 | +						if (preg_match('/(.*) '.lang('Group').'/', $cn, $matches)) | 
                                                        |
| 2855 | 2854 |  						{ | 
                                                        
| 2856 | 2855 | // we found a group  | 
                                                        
| 2857 | 2856 | if ($this->log)  | 
                                                        
| 2858 | 2857 |  							{ | 
                                                        
| 2859 | 2858 | error_log(__FILE__.'['.__LINE__.'] '.__METHOD__  | 
                                                        
| 2860 | - . "() Found group: '$matches[1]', '$cn', '$email'\n",3,$this->logfile);  | 
                                                        |
| 2859 | + . "() Found group: '$matches[1]', '$cn', '$email'\n", 3, $this->logfile);  | 
                                                        |
| 2861 | 2860 | }  | 
                                                        
| 2862 | - if (($uid = $GLOBALS['egw']->accounts->name2id($matches[1], 'account_lid', 'g')))  | 
                                                        |
| 2861 | + if (($uid = $GLOBALS['egw']->accounts->name2id($matches[1], 'account_lid', 'g')))  | 
                                                        |
| 2863 | 2862 |  							{ | 
                                                        
| 2864 | 2863 |  								//Horde::logMessage("vevent2egw: group participant $uid", | 
                                                        
| 2865 | 2864 | // __FILE__, __LINE__, PEAR_LOG_DEBUG);  | 
                                                        
@@ -2873,7 +2872,7 @@ discard block  | 
                                                    ||
| 2873 | 2872 |  										//Horde::logMessage("vevent2egw: set status to " . $status, | 
                                                        
| 2874 | 2873 | // __FILE__, __LINE__, PEAR_LOG_DEBUG);  | 
                                                        
| 2875 | 2874 | $vcardData['participants'][$this->user] =  | 
                                                        
| 2876 | - calendar_so::combine_status($status,$quantity,$role);  | 
                                                        |
| 2875 | + calendar_so::combine_status($status, $quantity, $role);  | 
                                                        |
| 2877 | 2876 | }  | 
                                                        
| 2878 | 2877 | }  | 
                                                        
| 2879 | 2878 | $status = 'U'; // keep the group  | 
                                                        
@@ -2882,36 +2881,36 @@ discard block  | 
                                                    ||
| 2882 | 2881 | }  | 
                                                        
| 2883 | 2882 | elseif (empty($searcharray))  | 
                                                        
| 2884 | 2883 |  						{ | 
                                                        
| 2885 | - continue 2; // participants without email AND CN --> ignore it  | 
                                                        |
| 2884 | + continue 2; // participants without email AND CN --> ignore it  | 
                                                        |
| 2886 | 2885 | }  | 
                                                        
| 2887 | 2886 | elseif ((list($data) = $this->addressbook->search($searcharray,  | 
                                                        
| 2888 | -							array('id','egw_addressbook.account_id as account_id','n_fn'), | 
                                                        |
| 2887 | +							array('id', 'egw_addressbook.account_id as account_id', 'n_fn'), | 
                                                        |
| 2889 | 2888 | 'egw_addressbook.account_id IS NOT NULL DESC, n_fn IS NOT NULL DESC',  | 
                                                        
| 2890 | - '','',false,'OR')))  | 
                                                        |
| 2889 | + '', '', false, 'OR')))  | 
                                                        |
| 2891 | 2890 |  						{ | 
                                                        
| 2892 | 2891 | // found an addressbook entry  | 
                                                        
| 2893 | 2892 | $uid = $data['account_id'] ? (int)$data['account_id'] : 'c'.$data['id'];  | 
                                                        
| 2894 | 2893 | if ($this->log)  | 
                                                        
| 2895 | 2894 |  							{ | 
                                                        
| 2896 | 2895 | error_log(__FILE__.'['.__LINE__.'] '.__METHOD__  | 
                                                        
| 2897 | - . "() Found addressbook entry: '$uid', '$cn', '$email'\n",3,$this->logfile);  | 
                                                        |
| 2896 | + . "() Found addressbook entry: '$uid', '$cn', '$email'\n", 3, $this->logfile);  | 
                                                        |
| 2898 | 2897 | }  | 
                                                        
| 2899 | 2898 | }  | 
                                                        
| 2900 | 2899 | else  | 
                                                        
| 2901 | 2900 |  						{ | 
                                                        
| 2902 | 2901 | if (!$email)  | 
                                                        
| 2903 | 2902 |  							{ | 
                                                        
| 2904 | - $email = '[email protected]'; // set dummy email to store the CN  | 
                                                        |
| 2903 | + $email = '[email protected]'; // set dummy email to store the CN  | 
                                                        |
| 2905 | 2904 | }  | 
                                                        
| 2906 | - $uid = 'e'. ($cn ? $cn . ' <' . $email . '>' : $email);  | 
                                                        |
| 2905 | + $uid = 'e'.($cn ? $cn.' <'.$email.'>' : $email);  | 
                                                        |
| 2907 | 2906 | if ($this->log)  | 
                                                        
| 2908 | 2907 |  							{ | 
                                                        
| 2909 | 2908 | error_log(__FILE__.'['.__LINE__.'] '.__METHOD__  | 
                                                        
| 2910 | - . "() Not Found, create dummy: '$uid', '$cn', '$email'\n",3,$this->logfile);  | 
                                                        |
| 2909 | + . "() Not Found, create dummy: '$uid', '$cn', '$email'\n", 3, $this->logfile);  | 
                                                        |
| 2911 | 2910 | }  | 
                                                        
| 2912 | 2911 | }  | 
                                                        
| 2913 | 2912 | }  | 
                                                        
| 2914 | - switch($attributes['name'])  | 
                                                        |
| 2913 | + switch ($attributes['name'])  | 
                                                        |
| 2915 | 2914 |  					{ | 
                                                        
| 2916 | 2915 | case 'ATTENDEE':  | 
                                                        
| 2917 | 2916 | if (!isset($attributes['params']['ROLE']) &&  | 
                                                        
@@ -2925,7 +2924,7 @@ discard block  | 
                                                    ||
| 2925 | 2924 | // keep role 'CHAIR' from an external organizer, even if he is a regular participant with a different role  | 
                                                        
| 2926 | 2925 | // as this is currently the only way to store an external organizer and send him iMip responses  | 
                                                        
| 2927 | 2926 | $q = $r = null;  | 
                                                        
| 2928 | - if (isset($vcardData['participants'][$uid]) && ($s=$vcardData['participants'][$uid]) &&  | 
                                                        |
| 2927 | + if (isset($vcardData['participants'][$uid]) && ($s = $vcardData['participants'][$uid]) &&  | 
                                                        |
| 2929 | 2928 | calendar_so::split_status($s, $q, $r) && $r == 'CHAIR')  | 
                                                        
| 2930 | 2929 |  								{ | 
                                                        
| 2931 | 2930 | $role = 'CHAIR';  | 
                                                        
@@ -2943,7 +2942,7 @@ discard block  | 
                                                    ||
| 2943 | 2942 | if (!$this->calendarOwner && is_numeric($uid) && $role == 'CHAIR')  | 
                                                        
| 2944 | 2943 |  										$component->getAttribute('ORGANIZER'); | 
                                                        
| 2945 | 2944 | }  | 
                                                        
| 2946 | - catch(Horde_Icalendar_Exception $e)  | 
                                                        |
| 2945 | + catch (Horde_Icalendar_Exception $e)  | 
                                                        |
| 2947 | 2946 |  								{ | 
                                                        
| 2948 | 2947 | // we can store the ORGANIZER as event owner  | 
                                                        
| 2949 | 2948 | $event['owner'] = $uid;  | 
                                                        
@@ -3002,7 +3001,7 @@ discard block  | 
                                                    ||
| 3002 | 3001 | break;  | 
                                                        
| 3003 | 3002 | |
| 3004 | 3003 | case 'ATTACH':  | 
                                                        
| 3005 | - if ($attributes['params'] && !empty($attributes['params']['FMTTYPE'])) break; // handeled by managed attachment code  | 
                                                        |
| 3004 | + if ($attributes['params'] && !empty($attributes['params']['FMTTYPE'])) break; // handeled by managed attachment code  | 
                                                        |
| 3006 | 3005 | // fall throught to store external attachment url  | 
                                                        
| 3007 | 3006 | default: // X- attribute or other by EGroupware unsupported property  | 
                                                        
| 3008 | 3007 | //error_log(__METHOD__."() $attributes[name] = ".array2string($attributes));  | 
                                                        
@@ -3080,7 +3079,7 @@ discard block  | 
                                                    ||
| 3080 | 3079 | if ($event['recur_type'] != MCAL_RECUR_NONE)  | 
                                                        
| 3081 | 3080 |  					{ | 
                                                        
| 3082 | 3081 | $event['reference'] = 0;  | 
                                                        
| 3083 | -						foreach (array('recur_interval','recur_enddate','recur_data','recur_exception','recur_count') as $r) | 
                                                        |
| 3082 | +						foreach (array('recur_interval', 'recur_enddate', 'recur_data', 'recur_exception', 'recur_count') as $r) | 
                                                        |
| 3084 | 3083 |  						{ | 
                                                        
| 3085 | 3084 | if (isset($vcardData[$r]))  | 
                                                        
| 3086 | 3085 |  							{ | 
                                                        
@@ -3103,12 +3102,12 @@ discard block  | 
                                                    ||
| 3103 | 3102 | // reset recure_enddate to 00:00:00 on the last day  | 
                                                        
| 3104 | 3103 | $rriter = calendar_rrule::event2rrule($event, false);  | 
                                                        
| 3105 | 3104 | $last = $rriter->normalize_enddate();  | 
                                                        
| 3106 | - if(!is_object($last))  | 
                                                        |
| 3105 | + if (!is_object($last))  | 
                                                        |
| 3107 | 3106 |  			{ | 
                                                        
| 3108 | - if($this->log)  | 
                                                        |
| 3107 | + if ($this->log)  | 
                                                        |
| 3109 | 3108 |  				{ | 
                                                        
| 3110 | - error_log(__FILE__.'['.__LINE__.'] '.__METHOD__ .  | 
                                                        |
| 3111 | - " Unable to determine recurrence end date. \n".array2string($event),3, $this->logfile);  | 
                                                        |
| 3109 | + error_log(__FILE__.'['.__LINE__.'] '.__METHOD__.  | 
                                                        |
| 3110 | + " Unable to determine recurrence end date. \n".array2string($event), 3, $this->logfile);  | 
                                                        |
| 3112 | 3111 | }  | 
                                                        
| 3113 | 3112 | return false;  | 
                                                        
| 3114 | 3113 | }  | 
                                                        
@@ -3117,16 +3116,16 @@ discard block  | 
                                                    ||
| 3117 | 3116 | $event['recur_enddate'] = Api\DateTime::to($last, 'server');  | 
                                                        
| 3118 | 3117 | }  | 
                                                        
| 3119 | 3118 | // translate COUNT into an enddate, as we only store enddates  | 
                                                        
| 3120 | - elseif($event['recur_count'])  | 
                                                        |
| 3119 | + elseif ($event['recur_count'])  | 
                                                        |
| 3121 | 3120 |  		{ | 
                                                        
| 3122 | 3121 | $rriter = calendar_rrule::event2rrule($event, false);  | 
                                                        
| 3123 | 3122 | $last = $rriter->count2date($event['recur_count']);  | 
                                                        
| 3124 | - if(!is_object($last))  | 
                                                        |
| 3123 | + if (!is_object($last))  | 
                                                        |
| 3125 | 3124 |  			{ | 
                                                        
| 3126 | - if($this->log)  | 
                                                        |
| 3125 | + if ($this->log)  | 
                                                        |
| 3127 | 3126 |  				{ | 
                                                        
| 3128 | 3127 | error_log(__FILE__.'['.__LINE__.'] '.__METHOD__,  | 
                                                        
| 3129 | - " Unable to determine recurrence end date. \n".array2string($event),3, $this->logfile);  | 
                                                        |
| 3128 | + " Unable to determine recurrence end date. \n".array2string($event), 3, $this->logfile);  | 
                                                        |
| 3130 | 3129 | }  | 
                                                        
| 3131 | 3130 | return false;  | 
                                                        
| 3132 | 3131 | }  | 
                                                        
@@ -3140,7 +3139,7 @@ discard block  | 
                                                    ||
| 3140 | 3139 | if ($this->productManufacturer == 'groupdav' && $container &&  | 
                                                        
| 3141 | 3140 |  				($x_calendarserver_access = $container->getAttribute('X-CALENDARSERVER-ACCESS'))) | 
                                                        
| 3142 | 3141 |  			{ | 
                                                        
| 3143 | - $event['public'] = (int)(strtoupper($x_calendarserver_access) == 'PUBLIC');  | 
                                                        |
| 3142 | + $event['public'] = (int)(strtoupper($x_calendarserver_access) == 'PUBLIC');  | 
                                                        |
| 3144 | 3143 | }  | 
                                                        
| 3145 | 3144 | //error_log(__METHOD__."() X-CALENDARSERVER-ACCESS=".array2string($x_calendarserver_access).' --> public='.array2string($event['public']));  | 
                                                        
| 3146 | 3145 | }  | 
                                                        
@@ -3161,15 +3160,15 @@ discard block  | 
                                                    ||
| 3161 | 3160 | |
| 3162 | 3161 | if ($this->log)  | 
                                                        
| 3163 | 3162 |  		{ | 
                                                        
| 3164 | - error_log(__FILE__.'['.__LINE__.'] '.__METHOD__."()\n" .  | 
                                                        |
| 3165 | - array2string($event)."\n",3,$this->logfile);  | 
                                                        |
| 3163 | + error_log(__FILE__.'['.__LINE__.'] '.__METHOD__."()\n".  | 
                                                        |
| 3164 | + array2string($event)."\n", 3, $this->logfile);  | 
                                                        |
| 3166 | 3165 | }  | 
                                                        
| 3167 | 3166 |  		//Horde::logMessage("vevent2egw:\n" . print_r($event, true), | 
                                                        
| 3168 | 3167 | // __FILE__, __LINE__, PEAR_LOG_DEBUG);  | 
                                                        
| 3169 | 3168 | return $event;  | 
                                                        
| 3170 | 3169 | }  | 
                                                        
| 3171 | 3170 | |
| 3172 | - function search($_vcalData, $contentID=null, $relax=false, $charset=null)  | 
                                                        |
| 3171 | + function search($_vcalData, $contentID = null, $relax = false, $charset = null)  | 
                                                        |
| 3173 | 3172 |  	{ | 
                                                        
| 3174 | 3173 | if (($events = $this->icaltoegw($_vcalData, $charset)))  | 
                                                        
| 3175 | 3174 |  		{ | 
                                                        
@@ -3190,8 +3189,8 @@ discard block  | 
                                                    ||
| 3190 | 3189 | }  | 
                                                        
| 3191 | 3190 | if ($this->log)  | 
                                                        
| 3192 | 3191 |  			{ | 
                                                        
| 3193 | - error_log(__FILE__.'['.__LINE__.'] '.__METHOD__."() found:\n" .  | 
                                                        |
| 3194 | - array2string($events)."\n",3,$this->logfile);  | 
                                                        |
| 3192 | + error_log(__FILE__.'['.__LINE__.'] '.__METHOD__."() found:\n".  | 
                                                        |
| 3193 | + array2string($events)."\n", 3, $this->logfile);  | 
                                                        |
| 3195 | 3194 | }  | 
                                                        
| 3196 | 3195 | }  | 
                                                        
| 3197 | 3196 | return array();  | 
                                                        
@@ -3230,23 +3229,23 @@ discard block  | 
                                                    ||
| 3230 | 3229 | * @param array $extra =null extra attributes to add  | 
                                                        
| 3231 | 3230 | * X-CALENDARSERVER-MASK-UID can be used to not include an event specified by this uid as busy  | 
                                                        
| 3232 | 3231 | */  | 
                                                        
| 3233 | - function freebusy($user,$end=null,$utc=true, $charset='UTF-8', $start=null, $method='PUBLISH', array $extra=null)  | 
                                                        |
| 3232 | + function freebusy($user, $end = null, $utc = true, $charset = 'UTF-8', $start = null, $method = 'PUBLISH', array $extra = null)  | 
                                                        |
| 3234 | 3233 |  	{ | 
                                                        
| 3235 | - if (!$start) $start = time(); // default now  | 
                                                        |
| 3236 | - if (!$end) $end = time() + 100*DAY_s; // default next 100 days  | 
                                                        |
| 3234 | + if (!$start) $start = time(); // default now  | 
                                                        |
| 3235 | + if (!$end) $end = time() + 100 * DAY_s; // default next 100 days  | 
                                                        |
| 3237 | 3236 | |
| 3238 | 3237 | $vcal = new Horde_Icalendar;  | 
                                                        
| 3239 | -		$vcal->setAttribute('PRODID','-//EGroupware//NONSGML EGroupware Calendar '.$GLOBALS['egw_info']['apps']['calendar']['version'].'//'. | 
                                                        |
| 3238 | +		$vcal->setAttribute('PRODID', '-//EGroupware//NONSGML EGroupware Calendar '.$GLOBALS['egw_info']['apps']['calendar']['version'].'//'. | 
                                                        |
| 3240 | 3239 | strtoupper($GLOBALS['egw_info']['user']['preferences']['common']['lang']));  | 
                                                        
| 3241 | -		$vcal->setAttribute('VERSION','2.0'); | 
                                                        |
| 3242 | -		$vcal->setAttribute('METHOD',$method); | 
                                                        |
| 3240 | +		$vcal->setAttribute('VERSION', '2.0'); | 
                                                        |
| 3241 | +		$vcal->setAttribute('METHOD', $method); | 
                                                        |
| 3243 | 3242 | |
| 3244 | -		$vfreebusy = Horde_Icalendar::newComponent('VFREEBUSY',$vcal); | 
                                                        |
| 3243 | +		$vfreebusy = Horde_Icalendar::newComponent('VFREEBUSY', $vcal); | 
                                                        |
| 3245 | 3244 | |
| 3246 | 3245 | $attributes = array(  | 
                                                        
| 3247 | 3246 | 'DTSTAMP' => time(),  | 
                                                        
| 3248 | - 'DTSTART' => $this->date2ts($start,true), // true = server-time  | 
                                                        |
| 3249 | - 'DTEND' => $this->date2ts($end,true), // true = server-time  | 
                                                        |
| 3247 | + 'DTSTART' => $this->date2ts($start, true), // true = server-time  | 
                                                        |
| 3248 | + 'DTEND' => $this->date2ts($end, true), // true = server-time  | 
                                                        |
| 3250 | 3249 | );  | 
                                                        
| 3251 | 3250 | if (!$utc)  | 
                                                        
| 3252 | 3251 |  		{ | 
                                                        
@@ -3257,9 +3256,9 @@ discard block  | 
                                                    ||
| 3257 | 3256 | }  | 
                                                        
| 3258 | 3257 | if (is_null($extra)) $extra = array(  | 
                                                        
| 3259 | 3258 | 'URL' => $this->freebusy_url($user),  | 
                                                        
| 3260 | - 'ORGANIZER' => 'mailto:'.$GLOBALS['egw']->accounts->id2name($user,'account_email'),  | 
                                                        |
| 3259 | + 'ORGANIZER' => 'mailto:'.$GLOBALS['egw']->accounts->id2name($user, 'account_email'),  | 
                                                        |
| 3261 | 3260 | );  | 
                                                        
| 3262 | - foreach($attributes+$extra as $attr => $value)  | 
                                                        |
| 3261 | + foreach ($attributes + $extra as $attr => $value)  | 
                                                        |
| 3263 | 3262 |  		{ | 
                                                        
| 3264 | 3263 | $vfreebusy->setAttribute($attr, $value);  | 
                                                        
| 3265 | 3264 | }  | 
                                                        
@@ -3291,22 +3290,22 @@ discard block  | 
                                                    ||
| 3291 | 3290 | |
| 3292 | 3291 | $fbdata[$fbtype][] = $event;  | 
                                                        
| 3293 | 3292 | }  | 
                                                        
| 3294 | - foreach($fbdata as $fbtype => $events)  | 
                                                        |
| 3293 | + foreach ($fbdata as $fbtype => $events)  | 
                                                        |
| 3295 | 3294 |  			{ | 
                                                        
| 3296 | - foreach($this->aggregate_periods($events, $start, $end) as $event)  | 
                                                        |
| 3295 | + foreach ($this->aggregate_periods($events, $start, $end) as $event)  | 
                                                        |
| 3297 | 3296 |  				{ | 
                                                        
| 3298 | 3297 | if ($utc)  | 
                                                        
| 3299 | 3298 |  					{ | 
                                                        
| 3300 | -						$vfreebusy->setAttribute('FREEBUSY',array(array( | 
                                                        |
| 3299 | +						$vfreebusy->setAttribute('FREEBUSY', array(array( | 
                                                        |
| 3301 | 3300 | 'start' => $event['start'],  | 
                                                        
| 3302 | 3301 | 'end' => $event['end'],  | 
                                                        
| 3303 | 3302 |  						)), array('FBTYPE' => $fbtype)); | 
                                                        
| 3304 | 3303 | }  | 
                                                        
| 3305 | 3304 | else  | 
                                                        
| 3306 | 3305 |  					{ | 
                                                        
| 3307 | -						$vfreebusy->setAttribute('FREEBUSY',array(array( | 
                                                        |
| 3308 | -							'start' => date('Ymd\THis',$event['start']), | 
                                                        |
| 3309 | -							'end' => date('Ymd\THis',$event['end']), | 
                                                        |
| 3306 | +						$vfreebusy->setAttribute('FREEBUSY', array(array( | 
                                                        |
| 3307 | +							'start' => date('Ymd\THis', $event['start']), | 
                                                        |
| 3308 | +							'end' => date('Ymd\THis', $event['end']), | 
                                                        |
| 3310 | 3309 |  						)), array('FBTYPE' => $fbtype)); | 
                                                        
| 3311 | 3310 | }  | 
                                                        
| 3312 | 3311 | }  | 
                                                        
@@ -3336,7 +3335,7 @@ discard block  | 
                                                    ||
| 3336 | 3335 | });  | 
                                                        
| 3337 | 3336 | |
| 3338 | 3337 | $fbdata = array();  | 
                                                        
| 3339 | - foreach($events as $event)  | 
                                                        |
| 3338 | + foreach ($events as $event)  | 
                                                        |
| 3340 | 3339 |  		{ | 
                                                        
| 3341 | 3340 | error_log(__METHOD__."(..., $start, $end) event[start]=$event[start], event[end]=$event[end], fbdata=".array2string($fbdata));  | 
                                                        
| 3342 | 3341 | if ($event['end'] <= $start || $event['start'] >= $end) continue;  | 
                                                        
@@ -3349,7 +3348,7 @@ discard block  | 
                                                    ||
| 3349 | 3348 | );  | 
                                                        
| 3350 | 3349 | continue;  | 
                                                        
| 3351 | 3350 | }  | 
                                                        
| 3352 | - $last =& $fbdata[count($fbdata)-1];  | 
                                                        |
| 3351 | + $last = & $fbdata[count($fbdata) - 1];  | 
                                                        |
| 3353 | 3352 | |
| 3354 | 3353 | if ($last['end'] >= $event['start'])  | 
                                                        
| 3355 | 3354 |  			{ | 
                                                        
@@ -3366,7 +3365,7 @@ discard block  | 
                                                    ||
| 3366 | 3365 | );  | 
                                                        
| 3367 | 3366 | }  | 
                                                        
| 3368 | 3367 | }  | 
                                                        
| 3369 | - $last =& $fbdata[count($fbdata)-1];  | 
                                                        |
| 3368 | + $last = & $fbdata[count($fbdata) - 1];  | 
                                                        |
| 3370 | 3369 | |
| 3371 | 3370 | if ($last['end'] > $end) $last['end'] = $end;  | 
                                                        
| 3372 | 3371 | |
@@ -183,7 +183,10 @@ discard block  | 
                                                    ||
| 183 | 183 | function __construct(&$_clientProperties = array())  | 
                                                        
| 184 | 184 |  	{ | 
                                                        
| 185 | 185 | parent::__construct();  | 
                                                        
| 186 | - if ($this->log) $this->logfile = $GLOBALS['egw_info']['server']['temp_dir']."/log-vcal";  | 
                                                        |
| 186 | + if ($this->log)  | 
                                                        |
| 187 | +		{ | 
                                                        |
| 188 | + $this->logfile = $GLOBALS['egw_info']['server']['temp_dir']."/log-vcal";  | 
                                                        |
| 189 | + }  | 
                                                        |
| 187 | 190 | $this->clientProperties = $_clientProperties;  | 
                                                        
| 188 | 191 | $this->vCalendar = new Horde_Icalendar;  | 
                                                        
| 189 | 192 | $this->addressbook = new Api\Contacts;  | 
                                                        
@@ -232,10 +235,14 @@ discard block  | 
                                                    ||
| 232 | 235 | 'ATTACH' => 'attachments',  | 
                                                        
| 233 | 236 | );  | 
                                                        
| 234 | 237 | |
| 235 | - if (!is_array($this->supportedFields)) $this->setSupportedFields();  | 
                                                        |
| 238 | + if (!is_array($this->supportedFields))  | 
                                                        |
| 239 | +		{ | 
                                                        |
| 240 | + $this->setSupportedFields();  | 
                                                        |
| 241 | + }  | 
                                                        |
| 236 | 242 | |
| 237 | 243 | if ($this->productManufacturer == '' )  | 
                                                        
| 238 | -		{	// syncevolution is broken | 
                                                        |
| 244 | +		{ | 
                                                        |
| 245 | +// syncevolution is broken  | 
                                                        |
| 239 | 246 | $version = '2.0';  | 
                                                        
| 240 | 247 | }  | 
                                                        
| 241 | 248 | |
@@ -243,10 +250,16 @@ discard block  | 
                                                    ||
| 243 | 250 |  		$vcal->setAttribute('PRODID','-//EGroupware//NONSGML EGroupware Calendar '.$GLOBALS['egw_info']['apps']['calendar']['version'].'//'. | 
                                                        
| 244 | 251 | strtoupper($GLOBALS['egw_info']['user']['preferences']['common']['lang']));  | 
                                                        
| 245 | 252 |  		$vcal->setAttribute('VERSION', $version); | 
                                                        
| 246 | -		if ($method) $vcal->setAttribute('METHOD', $method); | 
                                                        |
| 253 | + if ($method)  | 
                                                        |
| 254 | +		{ | 
                                                        |
| 255 | +			$vcal->setAttribute('METHOD', $method); | 
                                                        |
| 256 | + }  | 
                                                        |
| 247 | 257 | $events_exported = false;  | 
                                                        
| 248 | 258 | |
| 249 | - if (!is_array($events)) $events = array($events);  | 
                                                        |
| 259 | + if (!is_array($events))  | 
                                                        |
| 260 | +		{ | 
                                                        |
| 261 | + $events = array($events);  | 
                                                        |
| 262 | + }  | 
                                                        |
| 250 | 263 | |
| 251 | 264 | $vtimezones_added = array();  | 
                                                        
| 252 | 265 | foreach ($events as $event)  | 
                                                        
@@ -314,13 +327,19 @@ discard block  | 
                                                    ||
| 314 | 327 | }  | 
                                                        
| 315 | 328 |  				catch (Exception $e) { | 
                                                        
| 316 | 329 | // log unknown timezones  | 
                                                        
| 317 | - if (!empty($event['tzid'])) _egw_log_exception($e);  | 
                                                        |
| 330 | + if (!empty($event['tzid']))  | 
                                                        |
| 331 | +					{ | 
                                                        |
| 332 | + _egw_log_exception($e);  | 
                                                        |
| 333 | + }  | 
                                                        |
| 318 | 334 | // default for no timezone and unkown to user timezone  | 
                                                        
| 319 | 335 | self::$tz_cache[$event['tzid']] = Api\DateTime::$user_timezone;  | 
                                                        
| 320 | 336 | }  | 
                                                        
| 321 | 337 | }  | 
                                                        
| 322 | 338 | |
| 323 | - if ($this->so->isWholeDay($event)) $event['whole_day'] = true;  | 
                                                        |
| 339 | + if ($this->so->isWholeDay($event))  | 
                                                        |
| 340 | +			{ | 
                                                        |
| 341 | + $event['whole_day'] = true;  | 
                                                        |
| 342 | + }  | 
                                                        |
| 324 | 343 | |
| 325 | 344 | if ($this->log)  | 
                                                        
| 326 | 345 |  			{ | 
                                                        
@@ -331,7 +350,10 @@ discard block  | 
                                                    ||
| 331 | 350 | |
| 332 | 351 | if ($recurrence)  | 
                                                        
| 333 | 352 |  			{ | 
                                                        
| 334 | - if (!($master = $this->read($event['id'], 0, true, 'server'))) continue;  | 
                                                        |
| 353 | + if (!($master = $this->read($event['id'], 0, true, 'server')))  | 
                                                        |
| 354 | +				{ | 
                                                        |
| 355 | + continue;  | 
                                                        |
| 356 | + }  | 
                                                        |
| 335 | 357 | |
| 336 | 358 | if (!isset($this->supportedFields['participants']))  | 
                                                        
| 337 | 359 |  				{ | 
                                                        
@@ -388,7 +410,8 @@ discard block  | 
                                                    ||
| 388 | 410 | if ($this->productManufacturer != 'file' && $this->uidExtension)  | 
                                                        
| 389 | 411 |  			{ | 
                                                        
| 390 | 412 | // Append UID to DESCRIPTION  | 
                                                        
| 391 | -				if (!preg_match('/\[UID:.+\]/m', $event['description'])) { | 
                                                        |
| 413 | +				if (!preg_match('/\[UID:.+\]/m', $event['description'])) | 
                                                        |
| 414 | +				{ | 
                                                        |
| 392 | 415 | $event['description'] .= "\n[UID:" . $event['uid'] . "]";  | 
                                                        
| 393 | 416 | }  | 
                                                        
| 394 | 417 | }  | 
                                                        
@@ -448,11 +471,21 @@ discard block  | 
                                                    ||
| 448 | 471 | $quantity = $role = null;  | 
                                                        
| 449 | 472 | calendar_so::split_status($status, $quantity, $role);  | 
                                                        
| 450 | 473 | // do not include event owner/ORGANIZER as participant in his own calendar, if he is only participant  | 
                                                        
| 451 | - if (count($event['participants']) == 1 && $event['owner'] == $uid && $uid == $this->user) continue;  | 
                                                        |
| 474 | + if (count($event['participants']) == 1 && $event['owner'] == $uid && $uid == $this->user)  | 
                                                        |
| 475 | +							{ | 
                                                        |
| 476 | + continue;  | 
                                                        |
| 477 | + }  | 
                                                        |
| 452 | 478 | |
| 453 | - if (!($info = $this->resource_info($uid))) continue;  | 
                                                        |
| 479 | + if (!($info = $this->resource_info($uid)))  | 
                                                        |
| 480 | +							{ | 
                                                        |
| 481 | + continue;  | 
                                                        |
| 482 | + }  | 
                                                        |
| 454 | 483 | |
| 455 | -							if (in_array($status, array('X','E'))) continue;	// dont include deleted participants | 
                                                        |
| 484 | +							if (in_array($status, array('X','E'))) | 
                                                        |
| 485 | +							{ | 
                                                        |
| 486 | + continue;  | 
                                                        |
| 487 | + }  | 
                                                        |
| 488 | + // dont include deleted participants  | 
                                                        |
| 456 | 489 | |
| 457 | 490 | if ($this->log)  | 
                                                        
| 458 | 491 |  							{ | 
                                                        
@@ -531,16 +564,34 @@ discard block  | 
                                                    ||
| 531 | 564 | }  | 
                                                        
| 532 | 565 |  							// ROLE={CHAIR|REQ-PARTICIPANT|OPT-PARTICIPANT|NON-PARTICIPANT|X-*} | 
                                                        
| 533 | 566 | $options = array();  | 
                                                        
| 534 | - if (!empty($participantCN)) $options['CN'] = $participantCN;  | 
                                                        |
| 535 | - if (!empty($role)) $options['ROLE'] = $role;  | 
                                                        |
| 536 | - if (!empty($status)) $options['PARTSTAT'] = $status;  | 
                                                        |
| 537 | - if (!empty($cutype)) $options['CUTYPE'] = $cutype;  | 
                                                        |
| 538 | - if (!empty($rsvp)) $options['RSVP'] = $rsvp;  | 
                                                        |
| 567 | + if (!empty($participantCN))  | 
                                                        |
| 568 | +							{ | 
                                                        |
| 569 | + $options['CN'] = $participantCN;  | 
                                                        |
| 570 | + }  | 
                                                        |
| 571 | + if (!empty($role))  | 
                                                        |
| 572 | +							{ | 
                                                        |
| 573 | + $options['ROLE'] = $role;  | 
                                                        |
| 574 | + }  | 
                                                        |
| 575 | + if (!empty($status))  | 
                                                        |
| 576 | +							{ | 
                                                        |
| 577 | + $options['PARTSTAT'] = $status;  | 
                                                        |
| 578 | + }  | 
                                                        |
| 579 | + if (!empty($cutype))  | 
                                                        |
| 580 | +							{ | 
                                                        |
| 581 | + $options['CUTYPE'] = $cutype;  | 
                                                        |
| 582 | + }  | 
                                                        |
| 583 | + if (!empty($rsvp))  | 
                                                        |
| 584 | +							{ | 
                                                        |
| 585 | + $options['RSVP'] = $rsvp;  | 
                                                        |
| 586 | + }  | 
                                                        |
| 539 | 587 | if (!empty($info['email']) && $participantURL != 'mailto:'.$info['email'])  | 
                                                        
| 540 | 588 |  							{ | 
                                                        
| 541 | 589 | $options['EMAIL'] = $info['email']; // only add EMAIL attribute, if not already URL, as eg. Akonadi is reported to have problems with it  | 
                                                        
| 542 | 590 | }  | 
                                                        
| 543 | - if ($info['type'] != 'e') $options['X-EGROUPWARE-UID'] = (string)$uid;  | 
                                                        |
| 591 | + if ($info['type'] != 'e')  | 
                                                        |
| 592 | +							{ | 
                                                        |
| 593 | + $options['X-EGROUPWARE-UID'] = (string)$uid;  | 
                                                        |
| 594 | + }  | 
                                                        |
| 544 | 595 | if ($quantity > 1)  | 
                                                        
| 545 | 596 |  							{ | 
                                                        
| 546 | 597 | $options['X-EGROUPWARE-QUANTITY'] = (string)$quantity;  | 
                                                        
@@ -552,7 +603,11 @@ discard block  | 
                                                    ||
| 552 | 603 | break;  | 
                                                        
| 553 | 604 | |
| 554 | 605 | case 'CLASS':  | 
                                                        
| 555 | - if ($event['public']) continue 2; // public is default, no need to export, fails CalDAVTester if added as default  | 
                                                        |
| 606 | + if ($event['public'])  | 
                                                        |
| 607 | +						{ | 
                                                        |
| 608 | + continue 2;  | 
                                                        |
| 609 | + }  | 
                                                        |
| 610 | + // public is default, no need to export, fails CalDAVTester if added as default  | 
                                                        |
| 556 | 611 | $attributes['CLASS'] = $event['public'] ? 'PUBLIC' : 'PRIVATE';  | 
                                                        
| 557 | 612 | // Apple iCal on OS X uses X-CALENDARSERVER-ACCESS: CONFIDENTIAL on VCALANDAR (not VEVENT!)  | 
                                                        
| 558 | 613 | if (!$event['public'] && $this->productManufacturer == 'groupdav')  | 
                                                        
@@ -601,9 +656,12 @@ discard block  | 
                                                    ||
| 601 | 656 |  						{ | 
                                                        
| 602 | 657 | // Hack for CalDAVTester to export duration instead of endtime  | 
                                                        
| 603 | 658 | if ($tzid == 'UTC' && $event['end'] - $event['start'] <= 86400)  | 
                                                        
| 604 | - $attributes['duration'] = $event['end'] - $event['start'];  | 
                                                        |
| 605 | - else  | 
                                                        |
| 606 | - $attributes['DTEND'] = self::getDateTime($event['end'],$tzid,$parameters['DTEND']);  | 
                                                        |
| 659 | +							{ | 
                                                        |
| 660 | + $attributes['duration'] = $event['end'] - $event['start'];  | 
                                                        |
| 661 | + }  | 
                                                        |
| 662 | +							else { | 
                                                        |
| 663 | + $attributes['DTEND'] = self::getDateTime($event['end'],$tzid,$parameters['DTEND']);  | 
                                                        |
| 664 | + }  | 
                                                        |
| 607 | 665 | }  | 
                                                        
| 608 | 666 | else  | 
                                                        
| 609 | 667 |  						{ | 
                                                        
@@ -623,7 +681,11 @@ discard block  | 
                                                    ||
| 623 | 681 | break;  | 
                                                        
| 624 | 682 | |
| 625 | 683 | case 'RRULE':  | 
                                                        
| 626 | - if ($event['recur_type'] == MCAL_RECUR_NONE) break; // no recuring event  | 
                                                        |
| 684 | + if ($event['recur_type'] == MCAL_RECUR_NONE)  | 
                                                        |
| 685 | +						{ | 
                                                        |
| 686 | + break;  | 
                                                        |
| 687 | + }  | 
                                                        |
| 688 | + // no recuring event  | 
                                                        |
| 627 | 689 | $rriter = calendar_rrule::event2rrule($event, false, $tzid);  | 
                                                        
| 628 | 690 | $rrule = $rriter->generate_rrule($version);  | 
                                                        
| 629 | 691 | if ($event['recur_enddate'])  | 
                                                        
@@ -665,7 +727,10 @@ discard block  | 
                                                    ||
| 665 | 727 | break;  | 
                                                        
| 666 | 728 | |
| 667 | 729 | case 'EXDATE':  | 
                                                        
| 668 | - if ($event['recur_type'] == MCAL_RECUR_NONE) break;  | 
                                                        |
| 730 | + if ($event['recur_type'] == MCAL_RECUR_NONE)  | 
                                                        |
| 731 | +						{ | 
                                                        |
| 732 | + break;  | 
                                                        |
| 733 | + }  | 
                                                        |
| 669 | 734 | if (!empty($event['recur_exception']))  | 
                                                        
| 670 | 735 |  						{ | 
                                                        
| 671 | 736 | if (empty($event['whole_day']))  | 
                                                        
@@ -693,14 +758,21 @@ discard block  | 
                                                    ||
| 693 | 758 | );  | 
                                                        
| 694 | 759 | }  | 
                                                        
| 695 | 760 | $event['recur_exception'] = $days;  | 
                                                        
| 696 | - if ($version != '1.0') $parameters['EXDATE']['VALUE'] = 'DATE';  | 
                                                        |
| 761 | + if ($version != '1.0')  | 
                                                        |
| 762 | +								{ | 
                                                        |
| 763 | + $parameters['EXDATE']['VALUE'] = 'DATE';  | 
                                                        |
| 764 | + }  | 
                                                        |
| 697 | 765 | }  | 
                                                        
| 698 | 766 |  							$vevent->setAttribute('EXDATE', $event['recur_exception'], $parameters['EXDATE']); | 
                                                        
| 699 | 767 | }  | 
                                                        
| 700 | 768 | break;  | 
                                                        
| 701 | 769 | |
| 702 | 770 | case 'PRIORITY':  | 
                                                        
| 703 | - if (!$event['priority']) continue 2; // 0=undefined is default, no need to export, fails CalDAVTester if our default is added  | 
                                                        |
| 771 | + if (!$event['priority'])  | 
                                                        |
| 772 | +						{ | 
                                                        |
| 773 | + continue 2;  | 
                                                        |
| 774 | + }  | 
                                                        |
| 775 | + // 0=undefined is default, no need to export, fails CalDAVTester if our default is added  | 
                                                        |
| 704 | 776 | if ($this->productManufacturer == 'funambol' &&  | 
                                                        
| 705 | 777 | (strpos($this->productName, 'outlook') !== false  | 
                                                        
| 706 | 778 | || strpos($this->productName, 'pocket pc') !== false))  | 
                                                        
@@ -714,7 +786,11 @@ discard block  | 
                                                    ||
| 714 | 786 | break;  | 
                                                        
| 715 | 787 | |
| 716 | 788 | case 'TRANSP':  | 
                                                        
| 717 | - if (!$event['non_blocking']) continue 2; // OPAQUE is default, no need to export, fails CalDAVTester if added as default  | 
                                                        |
| 789 | + if (!$event['non_blocking'])  | 
                                                        |
| 790 | +						{ | 
                                                        |
| 791 | + continue 2;  | 
                                                        |
| 792 | + }  | 
                                                        |
| 793 | + // OPAQUE is default, no need to export, fails CalDAVTester if added as default  | 
                                                        |
| 718 | 794 | if ($version == '1.0')  | 
                                                        
| 719 | 795 |  						{ | 
                                                        
| 720 | 796 | $attributes['TRANSP'] = ($event['non_blocking'] ? 1 : 0);  | 
                                                        
@@ -771,7 +847,11 @@ discard block  | 
                                                    ||
| 771 | 847 | elseif ($event['recurrence'] && $event['reference'])  | 
                                                        
| 772 | 848 |  						{ | 
                                                        
| 773 | 849 | // $event['reference'] is a calendar_id, not a timestamp  | 
                                                        
| 774 | - if (!($revent = $this->read($event['reference']))) break; // referenced event does not exist  | 
                                                        |
| 850 | + if (!($revent = $this->read($event['reference'])))  | 
                                                        |
| 851 | +							{ | 
                                                        |
| 852 | + break;  | 
                                                        |
| 853 | + }  | 
                                                        |
| 854 | + // referenced event does not exist  | 
                                                        |
| 775 | 855 | |
| 776 | 856 | if (empty($revent['whole_day']))  | 
                                                        
| 777 | 857 |  							{ | 
                                                        
@@ -865,7 +945,10 @@ discard block  | 
                                                    ||
| 865 | 945 | if (count($attr) === 1 && !empty($attr['gzcompress']))  | 
                                                        
| 866 | 946 |  							{ | 
                                                        
| 867 | 947 | $attr = json_decode(gzuncompress(base64_decode($attr['gzcompress'])), true);  | 
                                                        
| 868 | - if (!is_array($attr)) continue;  | 
                                                        |
| 948 | + if (!is_array($attr))  | 
                                                        |
| 949 | +								{ | 
                                                        |
| 950 | + continue;  | 
                                                        |
| 951 | + }  | 
                                                        |
| 869 | 952 | }  | 
                                                        
| 870 | 953 | $vevent->setAttribute(substr($name, 2), $attr['value'], $attr['params'], true, $attr['values']);  | 
                                                        
| 871 | 954 | }  | 
                                                        
@@ -906,7 +989,10 @@ discard block  | 
                                                    ||
| 906 | 989 | foreach ((array)$event['alarm'] as $alarmData)  | 
                                                        
| 907 | 990 |  			{ | 
                                                        
| 908 | 991 | // skip over alarms that don't have the minimum required info  | 
                                                        
| 909 | - if (!isset($alarmData['offset']) && !isset($alarmData['time'])) continue;  | 
                                                        |
| 992 | + if (!isset($alarmData['offset']) && !isset($alarmData['time']))  | 
                                                        |
| 993 | +				{ | 
                                                        |
| 994 | + continue;  | 
                                                        |
| 995 | + }  | 
                                                        |
| 910 | 996 | |
| 911 | 997 | // skip alarms not being set for all users and alarms owned by other users  | 
                                                        
| 912 | 998 | if ($alarmData['all'] != true && $alarmData['owner'] != $this->user)  | 
                                                        
@@ -923,7 +1009,10 @@ discard block  | 
                                                    ||
| 923 | 1009 | |
| 924 | 1010 | if ($version == '1.0')  | 
                                                        
| 925 | 1011 |  				{ | 
                                                        
| 926 | - if ($event['title']) $description = $event['title'];  | 
                                                        |
| 1012 | + if ($event['title'])  | 
                                                        |
| 1013 | +					{ | 
                                                        |
| 1014 | + $description = $event['title'];  | 
                                                        |
| 1015 | + }  | 
                                                        |
| 927 | 1016 | if ($description)  | 
                                                        
| 928 | 1017 |  					{ | 
                                                        
| 929 | 1018 | $values['DALARM']['snooze_time'] = '';  | 
                                                        
@@ -943,7 +1032,10 @@ discard block  | 
                                                    ||
| 943 | 1032 | // VCalendar 2.0 / RFC 2445  | 
                                                        
| 944 | 1033 | |
| 945 | 1034 | // RFC requires DESCRIPTION for DISPLAY  | 
                                                        
| 946 | - if (!$event['title'] && !$description) $description = 'Alarm';  | 
                                                        |
| 1035 | + if (!$event['title'] && !$description)  | 
                                                        |
| 1036 | +					{ | 
                                                        |
| 1037 | + $description = 'Alarm';  | 
                                                        |
| 1038 | + }  | 
                                                        |
| 947 | 1039 | |
| 948 | 1040 | /* Disabling for now  | 
                                                        
| 949 | 1041 | // Lightning infinitly pops up alarms for recuring events, if the only use an offset  | 
                                                        
@@ -1078,7 +1170,7 @@ discard block  | 
                                                    ||
| 1078 | 1170 | // hack to fix iCalendar exporting EXDATE always postfixed with a Z  | 
                                                        
| 1079 | 1171 | // EXDATE can have multiple values and therefore be folded into multiple lines  | 
                                                        
| 1080 | 1172 |  		return preg_replace_callback("/\nEXDATE;TZID=[^:]+:[0-9TZ \n,]+/", function($matches) | 
                                                        
| 1081 | -			{ | 
                                                        |
| 1173 | +		{ | 
                                                        |
| 1082 | 1174 |  				return preg_replace('/([0-9 ])Z/', '$1', $matches[0]); | 
                                                        
| 1083 | 1175 | }, $retval);  | 
                                                        
| 1084 | 1176 | }  | 
                                                        
@@ -1140,13 +1232,20 @@ discard block  | 
                                                    ||
| 1140 | 1232 | $this->events_imported = 0;  | 
                                                        
| 1141 | 1233 | $replace = $delete_exceptions= false;  | 
                                                        
| 1142 | 1234 | |
| 1143 | - if (!is_array($this->supportedFields)) $this->setSupportedFields();  | 
                                                        |
| 1235 | + if (!is_array($this->supportedFields))  | 
                                                        |
| 1236 | +		{ | 
                                                        |
| 1237 | + $this->setSupportedFields();  | 
                                                        |
| 1238 | + }  | 
                                                        |
| 1144 | 1239 | |
| 1145 | 1240 | if (!($events = $this->icaltoegw($_vcalData, $principalURL, $charset)))  | 
                                                        
| 1146 | 1241 |  		{ | 
                                                        
| 1147 | 1242 | return false;  | 
                                                        
| 1148 | 1243 | }  | 
                                                        
| 1149 | - if (!is_array($events)) $cal_id = -1; // just to be sure, as iterator does NOT allow array access (eg. $events[0])  | 
                                                        |
| 1244 | + if (!is_array($events))  | 
                                                        |
| 1245 | +		{ | 
                                                        |
| 1246 | + $cal_id = -1;  | 
                                                        |
| 1247 | + }  | 
                                                        |
| 1248 | + // just to be sure, as iterator does NOT allow array access (eg. $events[0])  | 
                                                        |
| 1150 | 1249 | |
| 1151 | 1250 | if ($cal_id > 0)  | 
                                                        
| 1152 | 1251 |  		{ | 
                                                        
@@ -1154,8 +1253,14 @@ discard block  | 
                                                    ||
| 1154 | 1253 |  			{ | 
                                                        
| 1155 | 1254 | $replace = $recur_date == 0;  | 
                                                        
| 1156 | 1255 | $events[0]['id'] = $cal_id;  | 
                                                        
| 1157 | - if (!is_null($etag)) $events[0]['etag'] = (int) $etag;  | 
                                                        |
| 1158 | - if ($recur_date) $events[0]['recurrence'] = $recur_date;  | 
                                                        |
| 1256 | + if (!is_null($etag))  | 
                                                        |
| 1257 | +				{ | 
                                                        |
| 1258 | + $events[0]['etag'] = (int) $etag;  | 
                                                        |
| 1259 | + }  | 
                                                        |
| 1260 | + if ($recur_date)  | 
                                                        |
| 1261 | +				{ | 
                                                        |
| 1262 | + $events[0]['recurrence'] = $recur_date;  | 
                                                        |
| 1263 | + }  | 
                                                        |
| 1159 | 1264 | }  | 
                                                        
| 1160 | 1265 |  			elseif (($foundEvent = $this->find_event(array('id' => $cal_id), 'exact')) && | 
                                                        
| 1161 | 1266 | ($eventId = array_shift($foundEvent)) &&  | 
                                                        
@@ -1163,7 +1268,10 @@ discard block  | 
                                                    ||
| 1163 | 1268 |  			{ | 
                                                        
| 1164 | 1269 | foreach ($events as $k => $event)  | 
                                                        
| 1165 | 1270 |  				{ | 
                                                        
| 1166 | - if (!isset($event['uid'])) $events[$k]['uid'] = $egwEvent['uid'];  | 
                                                        |
| 1271 | + if (!isset($event['uid']))  | 
                                                        |
| 1272 | +					{ | 
                                                        |
| 1273 | + $events[$k]['uid'] = $egwEvent['uid'];  | 
                                                        |
| 1274 | + }  | 
                                                        |
| 1167 | 1275 | }  | 
                                                        
| 1168 | 1276 | }  | 
                                                        
| 1169 | 1277 | }  | 
                                                        
@@ -1193,7 +1301,11 @@ discard block  | 
                                                    ||
| 1193 | 1301 | $msg = null;  | 
                                                        
| 1194 | 1302 | foreach ($events as $event)  | 
                                                        
| 1195 | 1303 |  		{ | 
                                                        
| 1196 | - if (!is_array($event)) continue; // the iterator may return false  | 
                                                        |
| 1304 | + if (!is_array($event))  | 
                                                        |
| 1305 | +			{ | 
                                                        |
| 1306 | + continue;  | 
                                                        |
| 1307 | + }  | 
                                                        |
| 1308 | + // the iterator may return false  | 
                                                        |
| 1197 | 1309 | |
| 1198 | 1310 | // Run event through callback  | 
                                                        
| 1199 | 1311 | if($this->event_callback && is_callable($this->event_callback))  | 
                                                        
@@ -1206,7 +1318,10 @@ discard block  | 
                                                    ||
| 1206 | 1318 | }  | 
                                                        
| 1207 | 1319 | ++$this->events_imported;  | 
                                                        
| 1208 | 1320 | |
| 1209 | - if ($this->so->isWholeDay($event)) $event['whole_day'] = true;  | 
                                                        |
| 1321 | + if ($this->so->isWholeDay($event))  | 
                                                        |
| 1322 | +			{ | 
                                                        |
| 1323 | + $event['whole_day'] = true;  | 
                                                        |
| 1324 | + }  | 
                                                        |
| 1210 | 1325 | if (is_array($event['category']))  | 
                                                        
| 1211 | 1326 |  			{ | 
                                                        
| 1212 | 1327 | $event['category'] = $this->find_or_add_categories($event['category'],  | 
                                                        
@@ -1243,7 +1358,10 @@ discard block  | 
                                                    ||
| 1243 | 1358 | }  | 
                                                        
| 1244 | 1359 | else  | 
                                                        
| 1245 | 1360 |  						{ | 
                                                        
| 1246 | - if (!($exception = $this->read($id))) continue;  | 
                                                        |
| 1361 | + if (!($exception = $this->read($id)))  | 
                                                        |
| 1362 | +							{ | 
                                                        |
| 1363 | + continue;  | 
                                                        |
| 1364 | + }  | 
                                                        |
| 1247 | 1365 |  							$exception['uid'] = Api\CalDAV::generate_uid('calendar', $id); | 
                                                        
| 1248 | 1366 | $exception['reference'] = $exception['recurrence'] = 0;  | 
                                                        
| 1249 | 1367 | $this->update($exception, true,true,false,true,$msg,$skip_notification);  | 
                                                        
@@ -1343,7 +1461,10 @@ discard block  | 
                                                    ||
| 1343 | 1461 | break;  | 
                                                        
| 1344 | 1462 | |
| 1345 | 1463 | default:  | 
                                                        
| 1346 | - if (!empty($value)) $event[$key] = $value;  | 
                                                        |
| 1464 | + if (!empty($value))  | 
                                                        |
| 1465 | +								{ | 
                                                        |
| 1466 | + $event[$key] = $value;  | 
                                                        |
| 1467 | + }  | 
                                                        |
| 1347 | 1468 | }  | 
                                                        
| 1348 | 1469 | }  | 
                                                        
| 1349 | 1470 | }  | 
                                                        
@@ -1441,7 +1562,10 @@ discard block  | 
                                                    ||
| 1441 | 1562 | else // common adjustments for new events  | 
                                                        
| 1442 | 1563 |  			{ | 
                                                        
| 1443 | 1564 | unset($event['id']);  | 
                                                        
| 1444 | - if ($caldav_name) $event['caldav_name'] = $caldav_name;  | 
                                                        |
| 1565 | + if ($caldav_name)  | 
                                                        |
| 1566 | +				{ | 
                                                        |
| 1567 | + $event['caldav_name'] = $caldav_name;  | 
                                                        |
| 1568 | + }  | 
                                                        |
| 1445 | 1569 | // set non blocking all day depending on the user setting  | 
                                                        
| 1446 | 1570 | if (!empty($event['whole_day']) && $this->nonBlockingAllday)  | 
                                                        
| 1447 | 1571 |  				{ | 
                                                        
@@ -1489,7 +1613,10 @@ discard block  | 
                                                    ||
| 1489 | 1613 | || !isset($event['participants'][$event['owner']]))  | 
                                                        
| 1490 | 1614 |  				{ | 
                                                        
| 1491 | 1615 | $status = calendar_so::combine_status($event['owner'] == $this->user ? 'A' : 'U', 1, 'CHAIR');  | 
                                                        
| 1492 | - if (!is_array($event['participants'])) $event['participants'] = array();  | 
                                                        |
| 1616 | + if (!is_array($event['participants']))  | 
                                                        |
| 1617 | +					{ | 
                                                        |
| 1618 | + $event['participants'] = array();  | 
                                                        |
| 1619 | + }  | 
                                                        |
| 1493 | 1620 | $event['participants'][$event['owner']] = $status;  | 
                                                        
| 1494 | 1621 | }  | 
                                                        
| 1495 | 1622 | else  | 
                                                        
@@ -1642,7 +1769,10 @@ discard block  | 
                                                    ||
| 1642 | 1769 | $occurence = $exception = false;  | 
                                                        
| 1643 | 1770 | foreach ($event_info['master_event']['recur_exception'] as $exception)  | 
                                                        
| 1644 | 1771 |  								{ | 
                                                        
| 1645 | - if ($exception > $event['start']) break;  | 
                                                        |
| 1772 | + if ($exception > $event['start'])  | 
                                                        |
| 1773 | +									{ | 
                                                        |
| 1774 | + break;  | 
                                                        |
| 1775 | + }  | 
                                                        |
| 1646 | 1776 | $occurence = $exception;  | 
                                                        
| 1647 | 1777 | }  | 
                                                        
| 1648 | 1778 | if (!$occurence)  | 
                                                        
@@ -1732,12 +1862,15 @@ discard block  | 
                                                    ||
| 1732 | 1862 | case 'SERIES-MASTER':  | 
                                                        
| 1733 | 1863 | case 'SERIES-EXCEPTION':  | 
                                                        
| 1734 | 1864 | case 'SERIES-EXCEPTION-PROPAGATE':  | 
                                                        
| 1735 | - if (is_array($event_info['stored_event'])) // status update requires a stored event  | 
                                                        |
| 1865 | + if (is_array($event_info['stored_event']))  | 
                                                        |
| 1866 | +						{ | 
                                                        |
| 1867 | + // status update requires a stored event  | 
                                                        |
| 1736 | 1868 |  						{ | 
                                                        
| 1737 | 1869 | if ($event_info['acl_edit'])  | 
                                                        
| 1738 | 1870 |  							{ | 
                                                        
| 1739 | 1871 | // update all participants if we have the right to do that  | 
                                                        
| 1740 | 1872 | $this->update_status($event, $event_info['stored_event'],0,$skip_notification);  | 
                                                        
| 1873 | + }  | 
                                                        |
| 1741 | 1874 | }  | 
                                                        
| 1742 | 1875 | elseif (isset($event['participants'][$this->user]) || isset($event_info['stored_event']['participants'][$this->user]))  | 
                                                        
| 1743 | 1876 |  							{ | 
                                                        
@@ -1749,9 +1882,12 @@ discard block  | 
                                                    ||
| 1749 | 1882 | break;  | 
                                                        
| 1750 | 1883 | |
| 1751 | 1884 | case 'SERIES-PSEUDO-EXCEPTION':  | 
                                                        
| 1752 | - if (is_array($event_info['master_event'])) // status update requires a stored master event  | 
                                                        |
| 1885 | + if (is_array($event_info['master_event']))  | 
                                                        |
| 1886 | +						{ | 
                                                        |
| 1887 | + // status update requires a stored master event  | 
                                                        |
| 1753 | 1888 |  						{ | 
                                                        
| 1754 | 1889 | $recurrence = $this->date2usertime($event['recurrence']);  | 
                                                        
| 1890 | + }  | 
                                                        |
| 1755 | 1891 | if ($event_info['acl_edit'])  | 
                                                        
| 1756 | 1892 |  							{ | 
                                                        
| 1757 | 1893 | // update all participants if we have the right to do that  | 
                                                        
@@ -1859,7 +1995,10 @@ discard block  | 
                                                    ||
| 1859 | 1995 | */  | 
                                                        
| 1860 | 1996 | public function sync_alarms(array &$event, array $old_alarms, $user)  | 
                                                        
| 1861 | 1997 |  	{ | 
                                                        
| 1862 | -		if ($this->debug) error_log(__METHOD__."(".array2string($event).', old_alarms='.array2string($old_alarms).", $user,)"); | 
                                                        |
| 1998 | + if ($this->debug)  | 
                                                        |
| 1999 | +		{ | 
                                                        |
| 2000 | +			error_log(__METHOD__."(".array2string($event).', old_alarms='.array2string($old_alarms).", $user,)"); | 
                                                        |
| 2001 | + }  | 
                                                        |
| 1863 | 2002 | $modified = 0;  | 
                                                        
| 1864 | 2003 | foreach($event['alarm'] as &$alarm)  | 
                                                        
| 1865 | 2004 |  		{ | 
                                                        
@@ -1881,29 +2020,56 @@ discard block  | 
                                                    ||
| 1881 | 2020 | break;  | 
                                                        
| 1882 | 2021 | }  | 
                                                        
| 1883 | 2022 | }  | 
                                                        
| 1884 | - if ($this->debug) error_log(__METHOD__."($event[title] (#$event[id]), ..., $user) processing ".($found?'existing':'new')." alarm ".array2string($alarm));  | 
                                                        |
| 2023 | + if ($this->debug)  | 
                                                        |
| 2024 | +			{ | 
                                                        |
| 2025 | + error_log(__METHOD__."($event[title] (#$event[id]), ..., $user) processing ".($found?'existing':'new')." alarm ".array2string($alarm));  | 
                                                        |
| 2026 | + }  | 
                                                        |
| 1885 | 2027 | if (!empty($alarm['attrs']['X-LIC-ERROR']))  | 
                                                        
| 1886 | 2028 |  			{ | 
                                                        
| 1887 | - if ($this->debug) error_log(__METHOD__."($event[title] (#$event[id]), ..., $user) ignored X-LIC-ERROR=".array2string($alarm['X-LIC-ERROR']));  | 
                                                        |
| 2029 | + if ($this->debug)  | 
                                                        |
| 2030 | +				{ | 
                                                        |
| 2031 | + error_log(__METHOD__."($event[title] (#$event[id]), ..., $user) ignored X-LIC-ERROR=".array2string($alarm['X-LIC-ERROR']));  | 
                                                        |
| 2032 | + }  | 
                                                        |
| 1888 | 2033 | unset($alarm['attrs']['X-LIC-ERROR']);  | 
                                                        
| 1889 | 2034 | }  | 
                                                        
| 1890 | 2035 | // alarm not found --> add it  | 
                                                        
| 1891 | 2036 | if (!$found)  | 
                                                        
| 1892 | 2037 |  			{ | 
                                                        
| 1893 | 2038 | $alarm['owner'] = $user;  | 
                                                        
| 1894 | - if (!isset($alarm['time'])) $alarm['time'] = $event['start'] - $alarm['offset'];  | 
                                                        |
| 1895 | - if ($alarm['time'] < time()) calendar_so::shift_alarm($event, $alarm);  | 
                                                        |
| 1896 | - if ($this->debug) error_log(__METHOD__."() adding new alarm from client ".array2string($alarm));  | 
                                                        |
| 1897 | - if ($event['id']) $alarm['id'] = $this->save_alarm($event['id'], $alarm);  | 
                                                        |
| 2039 | + if (!isset($alarm['time']))  | 
                                                        |
| 2040 | +				{ | 
                                                        |
| 2041 | + $alarm['time'] = $event['start'] - $alarm['offset'];  | 
                                                        |
| 2042 | + }  | 
                                                        |
| 2043 | + if ($alarm['time'] < time())  | 
                                                        |
| 2044 | +				{ | 
                                                        |
| 2045 | + calendar_so::shift_alarm($event, $alarm);  | 
                                                        |
| 2046 | + }  | 
                                                        |
| 2047 | + if ($this->debug)  | 
                                                        |
| 2048 | +				{ | 
                                                        |
| 2049 | + error_log(__METHOD__."() adding new alarm from client ".array2string($alarm));  | 
                                                        |
| 2050 | + }  | 
                                                        |
| 2051 | + if ($event['id'])  | 
                                                        |
| 2052 | +				{ | 
                                                        |
| 2053 | + $alarm['id'] = $this->save_alarm($event['id'], $alarm);  | 
                                                        |
| 2054 | + }  | 
                                                        |
| 1898 | 2055 | ++$modified;  | 
                                                        
| 1899 | 2056 | }  | 
                                                        
| 1900 | 2057 | // existing alarm --> update it  | 
                                                        
| 1901 | 2058 | else  | 
                                                        
| 1902 | 2059 |  			{ | 
                                                        
| 1903 | - if (!isset($alarm['time'])) $alarm['time'] = $event['start'] - $alarm['offset'];  | 
                                                        |
| 1904 | - if ($alarm['time'] < time()) calendar_so::shift_alarm($event, $alarm);  | 
                                                        |
| 2060 | + if (!isset($alarm['time']))  | 
                                                        |
| 2061 | +				{ | 
                                                        |
| 2062 | + $alarm['time'] = $event['start'] - $alarm['offset'];  | 
                                                        |
| 2063 | + }  | 
                                                        |
| 2064 | + if ($alarm['time'] < time())  | 
                                                        |
| 2065 | +				{ | 
                                                        |
| 2066 | + calendar_so::shift_alarm($event, $alarm);  | 
                                                        |
| 2067 | + }  | 
                                                        |
| 1905 | 2068 | $alarm = array_merge($old_alarm, $alarm);  | 
                                                        
| 1906 | - if ($this->debug) error_log(__METHOD__."() updating existing alarm from client ".array2string($alarm));  | 
                                                        |
| 2069 | + if ($this->debug)  | 
                                                        |
| 2070 | +				{ | 
                                                        |
| 2071 | + error_log(__METHOD__."() updating existing alarm from client ".array2string($alarm));  | 
                                                        |
| 2072 | + }  | 
                                                        |
| 1907 | 2073 | $alarm['id'] = $this->save_alarm($event['id'], $alarm);  | 
                                                        
| 1908 | 2074 | ++$modified;  | 
                                                        
| 1909 | 2075 | }  | 
                                                        
@@ -1917,7 +2083,10 @@ discard block  | 
                                                    ||
| 1917 | 2083 | unset($old_alarm[$id]);  | 
                                                        
| 1918 | 2084 | continue;  | 
                                                        
| 1919 | 2085 | }  | 
                                                        
| 1920 | - if ($this->debug) error_log(__METHOD__."() deleting alarm '$id' deleted on client ".array2string($old_alarm));  | 
                                                        |
| 2086 | + if ($this->debug)  | 
                                                        |
| 2087 | +			{ | 
                                                        |
| 2088 | + error_log(__METHOD__."() deleting alarm '$id' deleted on client ".array2string($old_alarm));  | 
                                                        |
| 2089 | + }  | 
                                                        |
| 1921 | 2090 | $this->delete_alarm($id);  | 
                                                        
| 1922 | 2091 | ++$modified;  | 
                                                        
| 1923 | 2092 | }  | 
                                                        
@@ -2336,7 +2505,10 @@ discard block  | 
                                                    ||
| 2336 | 2505 | array2string($_vcalData)."\n",3,$this->logfile);  | 
                                                        
| 2337 | 2506 | }  | 
                                                        
| 2338 | 2507 | |
| 2339 | - if (!is_array($this->supportedFields)) $this->setSupportedFields();  | 
                                                        |
| 2508 | + if (!is_array($this->supportedFields))  | 
                                                        |
| 2509 | +		{ | 
                                                        |
| 2510 | + $this->setSupportedFields();  | 
                                                        |
| 2511 | + }  | 
                                                        |
| 2340 | 2512 | |
| 2341 | 2513 | // we use Api\CalDAV\IcalIterator only on resources, as calling importVCal() accesses single events like an array (eg. $events[0])  | 
                                                        
| 2342 | 2514 | if (is_resource($_vcalData))  | 
                                                        
@@ -2666,7 +2838,10 @@ discard block  | 
                                                    ||
| 2666 | 2838 | case 'RRULE':  | 
                                                        
| 2667 | 2839 | unset($vcardData['recur_type']); // it wont be set by +=  | 
                                                        
| 2668 | 2840 | $vcardData += calendar_rrule::parseRrule($attributes['value']);  | 
                                                        
| 2669 | - if (!empty($vcardData['recur_enddate'])) self::check_fix_endate ($vcardData);  | 
                                                        |
| 2841 | + if (!empty($vcardData['recur_enddate']))  | 
                                                        |
| 2842 | +					{ | 
                                                        |
| 2843 | + self::check_fix_endate ($vcardData);  | 
                                                        |
| 2844 | + }  | 
                                                        |
| 2670 | 2845 | break;  | 
                                                        
| 2671 | 2846 | case 'EXDATE': // current Horde_Icalendar returns dates, no timestamps  | 
                                                        
| 2672 | 2847 | if ($attributes['values'])  | 
                                                        
@@ -2750,7 +2925,10 @@ discard block  | 
                                                    ||
| 2750 | 2925 | if (isset($attributes['params']['STATUS']))  | 
                                                        
| 2751 | 2926 |  					{ | 
                                                        
| 2752 | 2927 | $status = $this->status_ical2egw[strtoupper($attributes['params']['STATUS'])];  | 
                                                        
| 2753 | - if (empty($status)) $status = 'X';  | 
                                                        |
| 2928 | + if (empty($status))  | 
                                                        |
| 2929 | +						{ | 
                                                        |
| 2930 | + $status = 'X';  | 
                                                        |
| 2931 | + }  | 
                                                        |
| 2754 | 2932 | }  | 
                                                        
| 2755 | 2933 | else  | 
                                                        
| 2756 | 2934 |  					{ | 
                                                        
@@ -2810,7 +2988,10 @@ discard block  | 
                                                    ||
| 2810 | 2988 | $uid = $this->user;  | 
                                                        
| 2811 | 2989 | }  | 
                                                        
| 2812 | 2990 | // check principal url from CalDAV here after X-EGROUPWARE-UID and to get optional X-EGROUPWARE-QUANTITY  | 
                                                        
| 2813 | - if (!$uid) $uid = Api\CalDAV\Principals::url2uid($attributes['value'], null, $cn);  | 
                                                        |
| 2991 | + if (!$uid)  | 
                                                        |
| 2992 | +					{ | 
                                                        |
| 2993 | + $uid = Api\CalDAV\Principals::url2uid($attributes['value'], null, $cn);  | 
                                                        |
| 2994 | + }  | 
                                                        |
| 2814 | 2995 | |
| 2815 | 2996 | // try to find an email address  | 
                                                        
| 2816 | 2997 | if (!$uid && $email && ($uid = $GLOBALS['egw']->accounts->name2id($email, 'account_email')))  | 
                                                        
@@ -2878,7 +3059,10 @@ discard block  | 
                                                    ||
| 2878 | 3059 | }  | 
                                                        
| 2879 | 3060 | $status = 'U'; // keep the group  | 
                                                        
| 2880 | 3061 | }  | 
                                                        
| 2881 | - else continue 2; // can't find this group  | 
                                                        |
| 3062 | +							else { | 
                                                        |
| 3063 | + continue 2;  | 
                                                        |
| 3064 | + }  | 
                                                        |
| 3065 | + // can't find this group  | 
                                                        |
| 2882 | 3066 | }  | 
                                                        
| 2883 | 3067 | elseif (empty($searcharray))  | 
                                                        
| 2884 | 3068 |  						{ | 
                                                        
@@ -2941,7 +3125,9 @@ discard block  | 
                                                    ||
| 2941 | 3125 | |
| 2942 | 3126 |  								try { | 
                                                        
| 2943 | 3127 | if (!$this->calendarOwner && is_numeric($uid) && $role == 'CHAIR')  | 
                                                        
| 2944 | -										$component->getAttribute('ORGANIZER'); | 
                                                        |
| 3128 | +									{ | 
                                                        |
| 3129 | +																			$component->getAttribute('ORGANIZER'); | 
                                                        |
| 3130 | + }  | 
                                                        |
| 2945 | 3131 | }  | 
                                                        
| 2946 | 3132 | catch(Horde_Icalendar_Exception $e)  | 
                                                        
| 2947 | 3133 |  								{ | 
                                                        
@@ -2981,7 +3167,10 @@ discard block  | 
                                                    ||
| 2981 | 3167 | }  | 
                                                        
| 2982 | 3168 | break;  | 
                                                        
| 2983 | 3169 | case 'CREATED': // will be written direct to the event  | 
                                                        
| 2984 | - if ($event['modified']) break;  | 
                                                        |
| 3170 | + if ($event['modified'])  | 
                                                        |
| 3171 | +					{ | 
                                                        |
| 3172 | + break;  | 
                                                        |
| 3173 | + }  | 
                                                        |
| 2985 | 3174 | // fall through  | 
                                                        
| 2986 | 3175 | case 'LAST-MODIFIED': // will be written direct to the event  | 
                                                        
| 2987 | 3176 | $event['modified'] = $attributes['value'];  | 
                                                        
@@ -3002,7 +3191,11 @@ discard block  | 
                                                    ||
| 3002 | 3191 | break;  | 
                                                        
| 3003 | 3192 | |
| 3004 | 3193 | case 'ATTACH':  | 
                                                        
| 3005 | - if ($attributes['params'] && !empty($attributes['params']['FMTTYPE'])) break; // handeled by managed attachment code  | 
                                                        |
| 3194 | + if ($attributes['params'] && !empty($attributes['params']['FMTTYPE']))  | 
                                                        |
| 3195 | +					{ | 
                                                        |
| 3196 | + break;  | 
                                                        |
| 3197 | + }  | 
                                                        |
| 3198 | + // handeled by managed attachment code  | 
                                                        |
| 3006 | 3199 | // fall throught to store external attachment url  | 
                                                        
| 3007 | 3200 | default: // X- attribute or other by EGroupware unsupported property  | 
                                                        
| 3008 | 3201 | //error_log(__METHOD__."() $attributes[name] = ".array2string($attributes));  | 
                                                        
@@ -3153,7 +3346,10 @@ discard block  | 
                                                    ||
| 3153 | 3346 | $event['end'] = $event['start'] + 60 * $this->cal_prefs['defaultlength'];  | 
                                                        
| 3154 | 3347 | }  | 
                                                        
| 3155 | 3348 | |
| 3156 | - if ($this->calendarOwner) $event['owner'] = $this->calendarOwner;  | 
                                                        |
| 3349 | + if ($this->calendarOwner)  | 
                                                        |
| 3350 | +		{ | 
                                                        |
| 3351 | + $event['owner'] = $this->calendarOwner;  | 
                                                        |
| 3352 | + }  | 
                                                        |
| 3157 | 3353 | |
| 3158 | 3354 | // parsing ATTACH attributes for managed attachments  | 
                                                        
| 3159 | 3355 |  		$event['attach-delete-by-put'] = $component->getAttributeDefault('X-EGROUPWARE-ATTACH-INCLUDED', null) === 'TRUE'; | 
                                                        
@@ -3179,7 +3375,10 @@ discard block  | 
                                                    ||
| 3179 | 3375 | $filter = $relax ? 'relax' : 'check';  | 
                                                        
| 3180 | 3376 | $event = array_shift($events);  | 
                                                        
| 3181 | 3377 | $eventId = -1;  | 
                                                        
| 3182 | - if ($this->so->isWholeDay($event)) $event['whole_day'] = true;  | 
                                                        |
| 3378 | + if ($this->so->isWholeDay($event))  | 
                                                        |
| 3379 | +				{ | 
                                                        |
| 3380 | + $event['whole_day'] = true;  | 
                                                        |
| 3381 | + }  | 
                                                        |
| 3183 | 3382 | if ($contentID)  | 
                                                        
| 3184 | 3383 |  				{ | 
                                                        
| 3185 | 3384 |  					$parts = preg_split('/:/', $contentID); | 
                                                        
@@ -3232,8 +3431,16 @@ discard block  | 
                                                    ||
| 3232 | 3431 | */  | 
                                                        
| 3233 | 3432 | function freebusy($user,$end=null,$utc=true, $charset='UTF-8', $start=null, $method='PUBLISH', array $extra=null)  | 
                                                        
| 3234 | 3433 |  	{ | 
                                                        
| 3235 | - if (!$start) $start = time(); // default now  | 
                                                        |
| 3236 | - if (!$end) $end = time() + 100*DAY_s; // default next 100 days  | 
                                                        |
| 3434 | + if (!$start)  | 
                                                        |
| 3435 | +		{ | 
                                                        |
| 3436 | + $start = time();  | 
                                                        |
| 3437 | + }  | 
                                                        |
| 3438 | + // default now  | 
                                                        |
| 3439 | + if (!$end)  | 
                                                        |
| 3440 | +		{ | 
                                                        |
| 3441 | + $end = time() + 100*DAY_s;  | 
                                                        |
| 3442 | + }  | 
                                                        |
| 3443 | + // default next 100 days  | 
                                                        |
| 3237 | 3444 | |
| 3238 | 3445 | $vcal = new Horde_Icalendar;  | 
                                                        
| 3239 | 3446 |  		$vcal->setAttribute('PRODID','-//EGroupware//NONSGML EGroupware Calendar '.$GLOBALS['egw_info']['apps']['calendar']['version'].'//'. | 
                                                        
@@ -3255,10 +3462,13 @@ discard block  | 
                                                    ||
| 3255 | 3462 |  				$attributes[$attr] = date('Ymd\THis', $value); | 
                                                        
| 3256 | 3463 | }  | 
                                                        
| 3257 | 3464 | }  | 
                                                        
| 3258 | - if (is_null($extra)) $extra = array(  | 
                                                        |
| 3465 | + if (is_null($extra))  | 
                                                        |
| 3466 | +		{ | 
                                                        |
| 3467 | + $extra = array(  | 
                                                        |
| 3259 | 3468 | 'URL' => $this->freebusy_url($user),  | 
                                                        
| 3260 | 3469 | 'ORGANIZER' => 'mailto:'.$GLOBALS['egw']->accounts->id2name($user,'account_email'),  | 
                                                        
| 3261 | 3470 | );  | 
                                                        
| 3471 | + }  | 
                                                        |
| 3262 | 3472 | foreach($attributes+$extra as $attr => $value)  | 
                                                        
| 3263 | 3473 |  		{ | 
                                                        
| 3264 | 3474 | $vfreebusy->setAttribute($attr, $value);  | 
                                                        
@@ -3276,18 +3486,30 @@ discard block  | 
                                                    ||
| 3276 | 3486 | |
| 3277 | 3487 | foreach ($events as $event)  | 
                                                        
| 3278 | 3488 |  			{ | 
                                                        
| 3279 | - if ($event['non_blocking']) continue;  | 
                                                        |
| 3280 | - if ($event['uid'] === $extra['X-CALENDARSERVER-MASK-UID']) continue;  | 
                                                        |
| 3489 | + if ($event['non_blocking'])  | 
                                                        |
| 3490 | +				{ | 
                                                        |
| 3491 | + continue;  | 
                                                        |
| 3492 | + }  | 
                                                        |
| 3493 | + if ($event['uid'] === $extra['X-CALENDARSERVER-MASK-UID'])  | 
                                                        |
| 3494 | +				{ | 
                                                        |
| 3495 | + continue;  | 
                                                        |
| 3496 | + }  | 
                                                        |
| 3281 | 3497 | $status = $event['participants'][$user];  | 
                                                        
| 3282 | 3498 | $quantity = $role = null;  | 
                                                        
| 3283 | 3499 | calendar_so::split_status($status, $quantity, $role);  | 
                                                        
| 3284 | - if ($status == 'R' || $role == 'NON-PARTICIPANT') continue;  | 
                                                        |
| 3500 | + if ($status == 'R' || $role == 'NON-PARTICIPANT')  | 
                                                        |
| 3501 | +				{ | 
                                                        |
| 3502 | + continue;  | 
                                                        |
| 3503 | + }  | 
                                                        |
| 3285 | 3504 | |
| 3286 | 3505 | $fbtype = $status == 'T' ? 'BUSY-TENTATIVE' : 'BUSY';  | 
                                                        
| 3287 | 3506 | |
| 3288 | 3507 | // hack to fix end-time to be non-inclusive  | 
                                                        
| 3289 | 3508 | // all-day events end in our data-model at 23:59:59 (of given TZ)  | 
                                                        
| 3290 | -				if (date('is', $event['end']) == '5959') ++$event['end']; | 
                                                        |
| 3509 | +				if (date('is', $event['end']) == '5959') | 
                                                        |
| 3510 | +				{ | 
                                                        |
| 3511 | + ++$event['end'];  | 
                                                        |
| 3512 | + }  | 
                                                        |
| 3291 | 3513 | |
| 3292 | 3514 | $fbdata[$fbtype][] = $event;  | 
                                                        
| 3293 | 3515 | }  | 
                                                        
@@ -3339,7 +3561,10 @@ discard block  | 
                                                    ||
| 3339 | 3561 | foreach($events as $event)  | 
                                                        
| 3340 | 3562 |  		{ | 
                                                        
| 3341 | 3563 | error_log(__METHOD__."(..., $start, $end) event[start]=$event[start], event[end]=$event[end], fbdata=".array2string($fbdata));  | 
                                                        
| 3342 | - if ($event['end'] <= $start || $event['start'] >= $end) continue;  | 
                                                        |
| 3564 | + if ($event['end'] <= $start || $event['start'] >= $end)  | 
                                                        |
| 3565 | +			{ | 
                                                        |
| 3566 | + continue;  | 
                                                        |
| 3567 | + }  | 
                                                        |
| 3343 | 3568 | |
| 3344 | 3569 | if (!$fbdata)  | 
                                                        
| 3345 | 3570 |  			{ | 
                                                        
@@ -3368,7 +3593,10 @@ discard block  | 
                                                    ||
| 3368 | 3593 | }  | 
                                                        
| 3369 | 3594 | $last =& $fbdata[count($fbdata)-1];  | 
                                                        
| 3370 | 3595 | |
| 3371 | - if ($last['end'] > $end) $last['end'] = $end;  | 
                                                        |
| 3596 | + if ($last['end'] > $end)  | 
                                                        |
| 3597 | +		{ | 
                                                        |
| 3598 | + $last['end'] = $end;  | 
                                                        |
| 3599 | + }  | 
                                                        |
| 3372 | 3600 | |
| 3373 | 3601 | error_log(__METHOD__."(..., $start, $end) returning ".array2string($fbdata));  | 
                                                        
| 3374 | 3602 | return $fbdata;  |