@@ -32,7 +32,7 @@ |
||
32 | 32 | { |
33 | 33 | $GLOBALS['egw_info']['flags']['currentapp'] = 'etemplate'; |
34 | 34 | $GLOBALS['egw_info']['flags']['app_header'] = 'et2 Widgets'; |
35 | - //'js_link_registry' => True, |
|
35 | + //'js_link_registry' => True, |
|
36 | 36 | |
37 | 37 | // Widget browser code |
38 | 38 | Api\Framework::includeJS('/api/js/etemplate/widget_browser.js'); |
@@ -807,11 +807,11 @@ discard block |
||
807 | 807 | } |
808 | 808 | |
809 | 809 | /** |
810 | - * Add seconds between 1601-01-01 and 1970-01-01 and multiply by 10000000 |
|
811 | - * |
|
812 | - * @param long $unixTime |
|
813 | - * @return long windowsTime |
|
814 | - */ |
|
810 | + * Add seconds between 1601-01-01 and 1970-01-01 and multiply by 10000000 |
|
811 | + * |
|
812 | + * @param long $unixTime |
|
813 | + * @return long windowsTime |
|
814 | + */ |
|
815 | 815 | public static function convertUnixTimeToWindowsTime($unixTime) |
816 | 816 | { |
817 | 817 | return ($unixTime + 11644477200) * 10000000; |
@@ -1263,10 +1263,10 @@ discard block |
||
1263 | 1263 | } |
1264 | 1264 | |
1265 | 1265 | /** |
1266 | - * Convert 8bit characters e.g. accented characters to UTF8 encoded characters |
|
1267 | - * |
|
1268 | - * Extended to use mbstring to convert from arbitrary charset to utf-8 |
|
1269 | - */ |
|
1266 | + * Convert 8bit characters e.g. accented characters to UTF8 encoded characters |
|
1267 | + * |
|
1268 | + * Extended to use mbstring to convert from arbitrary charset to utf-8 |
|
1269 | + */ |
|
1270 | 1270 | protected function encode8Bit(&$item, $key) |
1271 | 1271 | { |
1272 | 1272 | if ($this->charset != 'utf-8' && $key != 'password') |
@@ -1294,29 +1294,29 @@ discard block |
||
1294 | 1294 | return $this->userClass; |
1295 | 1295 | } |
1296 | 1296 | |
1297 | - /** |
|
1298 | - * Get the group class interface |
|
1299 | - * |
|
1300 | - * @return adLDAPGroups |
|
1301 | - */ |
|
1302 | - public function group() { |
|
1303 | - if (!$this->groupClass) { |
|
1304 | - $this->groupClass = new adLDAPGroups($this); |
|
1305 | - } |
|
1306 | - return $this->groupClass; |
|
1307 | - } |
|
1308 | - |
|
1309 | - /** |
|
1310 | - * Get the utils class interface |
|
1311 | - * |
|
1312 | - * @return adLDAPUtils |
|
1313 | - */ |
|
1314 | - public function utilities() { |
|
1315 | - if (!$this->utilClass) { |
|
1316 | - $this->utilClass = new adLDAPUtils($this); |
|
1317 | - } |
|
1318 | - return $this->utilClass; |
|
1319 | - } |
|
1297 | + /** |
|
1298 | + * Get the group class interface |
|
1299 | + * |
|
1300 | + * @return adLDAPGroups |
|
1301 | + */ |
|
1302 | + public function group() { |
|
1303 | + if (!$this->groupClass) { |
|
1304 | + $this->groupClass = new adLDAPGroups($this); |
|
1305 | + } |
|
1306 | + return $this->groupClass; |
|
1307 | + } |
|
1308 | + |
|
1309 | + /** |
|
1310 | + * Get the utils class interface |
|
1311 | + * |
|
1312 | + * @return adLDAPUtils |
|
1313 | + */ |
|
1314 | + public function utilities() { |
|
1315 | + if (!$this->utilClass) { |
|
1316 | + $this->utilClass = new adLDAPUtils($this); |
|
1317 | + } |
|
1318 | + return $this->utilClass; |
|
1319 | + } |
|
1320 | 1320 | } |
1321 | 1321 | |
1322 | 1322 | /** |
@@ -1405,45 +1405,45 @@ discard block |
||
1405 | 1405 | return true; |
1406 | 1406 | } |
1407 | 1407 | |
1408 | - /** |
|
1409 | - * Encode a password for transmission over LDAP |
|
1410 | - * |
|
1411 | - * Extended to use mbstring to convert from arbitrary charset to UTF-16LE |
|
1412 | - * |
|
1413 | - * @param string $password The password to encode |
|
1414 | - * @return string |
|
1415 | - */ |
|
1416 | - public function encodePassword($password) |
|
1417 | - { |
|
1418 | - $password="\"".$password."\""; |
|
1419 | - if (function_exists('mb_convert_encoding')) |
|
1420 | - { |
|
1421 | - return mb_convert_encoding($password, 'UTF-16LE', $this->adldap->charset); |
|
1422 | - } |
|
1423 | - $encoded=""; |
|
1424 | - for ($i=0; $i <strlen($password); $i++){ $encoded.="{$password{$i}}\000"; } |
|
1425 | - return $encoded; |
|
1426 | - } |
|
1427 | - |
|
1428 | - /** |
|
1429 | - * Set a password |
|
1430 | - * |
|
1431 | - * Requires "Reset password" priviledges from bind user! |
|
1432 | - * |
|
1408 | + /** |
|
1409 | + * Encode a password for transmission over LDAP |
|
1410 | + * |
|
1411 | + * Extended to use mbstring to convert from arbitrary charset to UTF-16LE |
|
1412 | + * |
|
1413 | + * @param string $password The password to encode |
|
1414 | + * @return string |
|
1415 | + */ |
|
1416 | + public function encodePassword($password) |
|
1417 | + { |
|
1418 | + $password="\"".$password."\""; |
|
1419 | + if (function_exists('mb_convert_encoding')) |
|
1420 | + { |
|
1421 | + return mb_convert_encoding($password, 'UTF-16LE', $this->adldap->charset); |
|
1422 | + } |
|
1423 | + $encoded=""; |
|
1424 | + for ($i=0; $i <strlen($password); $i++){ $encoded.="{$password{$i}}\000"; } |
|
1425 | + return $encoded; |
|
1426 | + } |
|
1427 | + |
|
1428 | + /** |
|
1429 | + * Set a password |
|
1430 | + * |
|
1431 | + * Requires "Reset password" priviledges from bind user! |
|
1432 | + * |
|
1433 | 1433 | * We can NOT set password with ldap_add or ldap_modify, it needs ldap_mod_replace, at least under Win2008r2! |
1434 | 1434 | * |
1435 | - * @param string $dn |
|
1436 | - * @param string $password |
|
1437 | - * @return boolean |
|
1438 | - */ |
|
1439 | - public function setPassword($dn, $password) |
|
1440 | - { |
|
1441 | - $result = ldap_mod_replace($ds=$this->adldap->getLdapConnection(), $dn, array( |
|
1442 | - 'unicodePwd' => $this->encodePassword($password), |
|
1443 | - )); |
|
1444 | - if (!$result) error_log(__METHOD__."('$dn', '$password') ldap_mod_replace($ds, '$dn', \$password) returned FALSE: ".ldap_error($ds)); |
|
1445 | - return $result; |
|
1446 | - } |
|
1435 | + * @param string $dn |
|
1436 | + * @param string $password |
|
1437 | + * @return boolean |
|
1438 | + */ |
|
1439 | + public function setPassword($dn, $password) |
|
1440 | + { |
|
1441 | + $result = ldap_mod_replace($ds=$this->adldap->getLdapConnection(), $dn, array( |
|
1442 | + 'unicodePwd' => $this->encodePassword($password), |
|
1443 | + )); |
|
1444 | + if (!$result) error_log(__METHOD__."('$dn', '$password') ldap_mod_replace($ds, '$dn', \$password) returned FALSE: ".ldap_error($ds)); |
|
1445 | + return $result; |
|
1446 | + } |
|
1447 | 1447 | |
1448 | 1448 | /** |
1449 | 1449 | * Check if we can to a real password change, not just a password reset |
@@ -1457,30 +1457,30 @@ discard block |
||
1457 | 1457 | return function_exists('ldap_modify_batch'); |
1458 | 1458 | } |
1459 | 1459 | |
1460 | - /** |
|
1461 | - * Set the password of a user - This must be performed over SSL |
|
1462 | - * |
|
1463 | - * @param string $username The username to modify |
|
1464 | - * @param string $password The new password |
|
1465 | - * @param bool $isGUID Is the username passed a GUID or a samAccountName |
|
1466 | - * @param string $old_password old password for password change, if supported |
|
1467 | - * @return bool |
|
1468 | - */ |
|
1469 | - public function password($username, $password, $isGUID = false, $old_password=null) |
|
1470 | - { |
|
1471 | - if ($username === NULL) { return false; } |
|
1472 | - if ($password === NULL) { return false; } |
|
1473 | - if (!$this->adldap->getLdapBind()) { return false; } |
|
1474 | - if (!$this->adldap->getUseSSL() && !$this->adldap->getUseTLS()) { |
|
1475 | - throw new adLDAPException('SSL must be configured on your webserver and enabled in the class to set passwords.'); |
|
1476 | - } |
|
1477 | - |
|
1478 | - $userDn = $this->dn($username, $isGUID); |
|
1479 | - if ($userDn === false) { |
|
1480 | - return false; |
|
1481 | - } |
|
1482 | - |
|
1483 | - $add=array(); |
|
1460 | + /** |
|
1461 | + * Set the password of a user - This must be performed over SSL |
|
1462 | + * |
|
1463 | + * @param string $username The username to modify |
|
1464 | + * @param string $password The new password |
|
1465 | + * @param bool $isGUID Is the username passed a GUID or a samAccountName |
|
1466 | + * @param string $old_password old password for password change, if supported |
|
1467 | + * @return bool |
|
1468 | + */ |
|
1469 | + public function password($username, $password, $isGUID = false, $old_password=null) |
|
1470 | + { |
|
1471 | + if ($username === NULL) { return false; } |
|
1472 | + if ($password === NULL) { return false; } |
|
1473 | + if (!$this->adldap->getLdapBind()) { return false; } |
|
1474 | + if (!$this->adldap->getUseSSL() && !$this->adldap->getUseTLS()) { |
|
1475 | + throw new adLDAPException('SSL must be configured on your webserver and enabled in the class to set passwords.'); |
|
1476 | + } |
|
1477 | + |
|
1478 | + $userDn = $this->dn($username, $isGUID); |
|
1479 | + if ($userDn === false) { |
|
1480 | + return false; |
|
1481 | + } |
|
1482 | + |
|
1483 | + $add=array(); |
|
1484 | 1484 | |
1485 | 1485 | if (empty($old_password) || !function_exists('ldap_modify_batch')) { |
1486 | 1486 | $add["unicodePwd"][0] = $this->encodePassword($password); |
@@ -1502,76 +1502,76 @@ discard block |
||
1502 | 1502 | ); |
1503 | 1503 | $result = ldap_modify_batch($this->adldap->getLdapConnection(), $userDn, $mods); |
1504 | 1504 | } |
1505 | - if ($result === false){ |
|
1506 | - $err = ldap_errno($this->adldap->getLdapConnection()); |
|
1507 | - if ($err) { |
|
1508 | - $msg = 'Error ' . $err . ': ' . ldap_err2str($err) . '.'; |
|
1509 | - if($err == 53) { |
|
1510 | - $msg .= ' Your password might not match the password policy.'; |
|
1511 | - } |
|
1512 | - throw new adLDAPException($msg); |
|
1513 | - } |
|
1514 | - else { |
|
1515 | - return false; |
|
1516 | - } |
|
1517 | - } |
|
1518 | - |
|
1519 | - return true; |
|
1520 | - } |
|
1521 | - |
|
1522 | - /** |
|
1523 | - * Modify a user |
|
1524 | - * |
|
1525 | - * @param string $username The username to query |
|
1526 | - * @param array $attributes The attributes to modify. Note if you set the enabled attribute you must not specify any other attributes |
|
1527 | - * @param bool $isGUID Is the username passed a GUID or a samAccountName |
|
1528 | - * @return bool |
|
1529 | - */ |
|
1530 | - public function modify($username, $attributes, $isGUID = false) |
|
1531 | - { |
|
1532 | - if ($username === NULL) { return "Missing compulsory field [username]"; } |
|
1533 | - if (array_key_exists("password", $attributes) && !$this->adldap->getUseSSL() && !$this->adldap->getUseTLS()) { |
|
1534 | - throw new adLDAPException('SSL/TLS must be configured on your webserver and enabled in the class to set passwords.'); |
|
1535 | - } |
|
1536 | - |
|
1537 | - // Find the dn of the user |
|
1538 | - $userDn = $this->dn($username, $isGUID); |
|
1539 | - if ($userDn === false) { |
|
1540 | - return false; |
|
1541 | - } |
|
1542 | - |
|
1543 | - // Translate the update to the LDAP schema |
|
1544 | - $mod = $this->adldap->adldap_schema($attributes); |
|
1545 | - |
|
1546 | - // Check to see if this is an enabled status update |
|
1547 | - if (!$mod && !array_key_exists("enabled", $attributes)){ |
|
1548 | - return false; |
|
1549 | - } |
|
1550 | - |
|
1551 | - // Set the account control attribute (only if specified) |
|
1552 | - if (array_key_exists("enabled", $attributes)){ |
|
1553 | - if ($attributes["enabled"]){ |
|
1554 | - $controlOptions = array("NORMAL_ACCOUNT"); |
|
1555 | - } |
|
1556 | - else { |
|
1557 | - $controlOptions = array("NORMAL_ACCOUNT", "ACCOUNTDISABLE"); |
|
1558 | - } |
|
1559 | - $mod["userAccountControl"][0] = $this->accountControl($controlOptions); |
|
1560 | - } |
|
1505 | + if ($result === false){ |
|
1506 | + $err = ldap_errno($this->adldap->getLdapConnection()); |
|
1507 | + if ($err) { |
|
1508 | + $msg = 'Error ' . $err . ': ' . ldap_err2str($err) . '.'; |
|
1509 | + if($err == 53) { |
|
1510 | + $msg .= ' Your password might not match the password policy.'; |
|
1511 | + } |
|
1512 | + throw new adLDAPException($msg); |
|
1513 | + } |
|
1514 | + else { |
|
1515 | + return false; |
|
1516 | + } |
|
1517 | + } |
|
1518 | + |
|
1519 | + return true; |
|
1520 | + } |
|
1521 | + |
|
1522 | + /** |
|
1523 | + * Modify a user |
|
1524 | + * |
|
1525 | + * @param string $username The username to query |
|
1526 | + * @param array $attributes The attributes to modify. Note if you set the enabled attribute you must not specify any other attributes |
|
1527 | + * @param bool $isGUID Is the username passed a GUID or a samAccountName |
|
1528 | + * @return bool |
|
1529 | + */ |
|
1530 | + public function modify($username, $attributes, $isGUID = false) |
|
1531 | + { |
|
1532 | + if ($username === NULL) { return "Missing compulsory field [username]"; } |
|
1533 | + if (array_key_exists("password", $attributes) && !$this->adldap->getUseSSL() && !$this->adldap->getUseTLS()) { |
|
1534 | + throw new adLDAPException('SSL/TLS must be configured on your webserver and enabled in the class to set passwords.'); |
|
1535 | + } |
|
1536 | + |
|
1537 | + // Find the dn of the user |
|
1538 | + $userDn = $this->dn($username, $isGUID); |
|
1539 | + if ($userDn === false) { |
|
1540 | + return false; |
|
1541 | + } |
|
1542 | + |
|
1543 | + // Translate the update to the LDAP schema |
|
1544 | + $mod = $this->adldap->adldap_schema($attributes); |
|
1545 | + |
|
1546 | + // Check to see if this is an enabled status update |
|
1547 | + if (!$mod && !array_key_exists("enabled", $attributes)){ |
|
1548 | + return false; |
|
1549 | + } |
|
1550 | + |
|
1551 | + // Set the account control attribute (only if specified) |
|
1552 | + if (array_key_exists("enabled", $attributes)){ |
|
1553 | + if ($attributes["enabled"]){ |
|
1554 | + $controlOptions = array("NORMAL_ACCOUNT"); |
|
1555 | + } |
|
1556 | + else { |
|
1557 | + $controlOptions = array("NORMAL_ACCOUNT", "ACCOUNTDISABLE"); |
|
1558 | + } |
|
1559 | + $mod["userAccountControl"][0] = $this->accountControl($controlOptions); |
|
1560 | + } |
|
1561 | 1561 | // we can NOT set password with ldap_add or ldap_modify, it needs ldap_mod_replace, at least under Win2008r2 |
1562 | 1562 | unset($mod['unicodePwd']); |
1563 | 1563 | |
1564 | 1564 | if ($mod) |
1565 | 1565 | { |
1566 | - // Do the update |
|
1567 | - $result = @ldap_modify($ds=$this->adldap->getLdapConnection(), $userDn, $mod); |
|
1568 | - if ($result == false) { |
|
1566 | + // Do the update |
|
1567 | + $result = @ldap_modify($ds=$this->adldap->getLdapConnection(), $userDn, $mod); |
|
1568 | + if ($result == false) { |
|
1569 | 1569 | if (isset($mod['unicodePwd'])) $mod['unicodePwd'] = '***'; |
1570 | 1570 | error_log(__METHOD__."(".array2string($attributes).") ldap_modify($ds, '$userDn', ".array2string($mod).") returned ".array2string($result)." ldap_error()=".ldap_error($ds)); |
1571 | - return false; |
|
1572 | - } |
|
1571 | + return false; |
|
1572 | + } |
|
1573 | 1573 | } |
1574 | - if (array_key_exists("password",$attributes) && !$this->setPassword($userDn, $attributes['password'])) |
|
1574 | + if (array_key_exists("password",$attributes) && !$this->setPassword($userDn, $attributes['password'])) |
|
1575 | 1575 | { |
1576 | 1576 | return false; |
1577 | 1577 | } |
@@ -1636,23 +1636,23 @@ discard block |
||
1636 | 1636 | return $this->adldap->encode8bit($item, $key); |
1637 | 1637 | } |
1638 | 1638 | |
1639 | - /** |
|
1640 | - * Escape strings for the use in LDAP filters |
|
1641 | - * |
|
1642 | - * DEVELOPERS SHOULD BE DOING PROPER FILTERING IF THEY'RE ACCEPTING USER INPUT |
|
1643 | - * Ported from Perl's Net::LDAP::Util escape_filter_value |
|
1644 | - * |
|
1645 | - * @param string $str The string the parse |
|
1646 | - * @author Port by Andreas Gohr <[email protected]> |
|
1647 | - * @return string |
|
1648 | - */ |
|
1649 | - public function ldapSlashes($str){ |
|
1650 | - return preg_replace_callback( |
|
1651 | - '/([\x00-\x1F\*\(\)\\\\])/', |
|
1652 | - function ($matches) { |
|
1653 | - return "\\".join("", unpack("H2", $matches[1])); |
|
1654 | - }, |
|
1655 | - $str |
|
1656 | - ); |
|
1657 | - } |
|
1639 | + /** |
|
1640 | + * Escape strings for the use in LDAP filters |
|
1641 | + * |
|
1642 | + * DEVELOPERS SHOULD BE DOING PROPER FILTERING IF THEY'RE ACCEPTING USER INPUT |
|
1643 | + * Ported from Perl's Net::LDAP::Util escape_filter_value |
|
1644 | + * |
|
1645 | + * @param string $str The string the parse |
|
1646 | + * @author Port by Andreas Gohr <[email protected]> |
|
1647 | + * @return string |
|
1648 | + */ |
|
1649 | + public function ldapSlashes($str){ |
|
1650 | + return preg_replace_callback( |
|
1651 | + '/([\x00-\x1F\*\(\)\\\\])/', |
|
1652 | + function ($matches) { |
|
1653 | + return "\\".join("", unpack("H2", $matches[1])); |
|
1654 | + }, |
|
1655 | + $str |
|
1656 | + ); |
|
1657 | + } |
|
1658 | 1658 | } |
@@ -962,7 +962,7 @@ |
||
962 | 962 | 'account_fullname' => 'cn', |
963 | 963 | ); |
964 | 964 | if (!isset($to_ldap[$which]) || $account_type === 'g') { |
965 | - return False; |
|
965 | + return False; |
|
966 | 966 | } |
967 | 967 | |
968 | 968 | $sri = ldap_search($this->ds, $this->user_context, '(&('.$to_ldap[$which].'=' . $name . ')(objectclass=posixaccount))', array('uidNumber')); |
@@ -29,15 +29,15 @@ discard block |
||
29 | 29 | */ |
30 | 30 | const LEVEL = Api\Cache::INSTANCE; |
31 | 31 | |
32 | - /** |
|
33 | - * Retrieve cached data. |
|
34 | - * |
|
35 | - * @param string $key Object ID to query. |
|
36 | - * @param integer $lifetime Lifetime of the object in seconds. |
|
37 | - * |
|
38 | - * @return mixed Cached data, or false if none was found. |
|
39 | - */ |
|
40 | - public function get($key, $lifetime = 0) |
|
32 | + /** |
|
33 | + * Retrieve cached data. |
|
34 | + * |
|
35 | + * @param string $key Object ID to query. |
|
36 | + * @param integer $lifetime Lifetime of the object in seconds. |
|
37 | + * |
|
38 | + * @return mixed Cached data, or false if none was found. |
|
39 | + */ |
|
40 | + public function get($key, $lifetime = 0) |
|
41 | 41 | { |
42 | 42 | unset($lifetime); // not (yet) used, but required by function signature |
43 | 43 | |
@@ -46,54 +46,54 @@ discard block |
||
46 | 46 | return !is_null($ret) ? $ret : false; |
47 | 47 | } |
48 | 48 | |
49 | - /** |
|
50 | - * Store an object in the cache. |
|
51 | - * |
|
52 | - * @param string $key Object ID used as the caching key. |
|
53 | - * @param mixed $data Data to store in the cache. |
|
54 | - * @param integer $lifetime Object lifetime - i.e. the time before the |
|
55 | - * data becomes available for garbage |
|
56 | - * collection. If 0 will not be GC'd. |
|
57 | - */ |
|
58 | - public function set($key, $data, $lifetime = 0) |
|
49 | + /** |
|
50 | + * Store an object in the cache. |
|
51 | + * |
|
52 | + * @param string $key Object ID used as the caching key. |
|
53 | + * @param mixed $data Data to store in the cache. |
|
54 | + * @param integer $lifetime Object lifetime - i.e. the time before the |
|
55 | + * data becomes available for garbage |
|
56 | + * collection. If 0 will not be GC'd. |
|
57 | + */ |
|
58 | + public function set($key, $data, $lifetime = 0) |
|
59 | 59 | { |
60 | 60 | Api\Cache::setCache(self::LEVEL, 'mail', $key, $data, $lifetime); |
61 | 61 | } |
62 | 62 | |
63 | - /** |
|
64 | - * Checks if a given key exists in the cache, valid for the given |
|
65 | - * lifetime. |
|
66 | - * |
|
67 | - * @param string $key Cache key to check. |
|
68 | - * @param integer $lifetime Lifetime of the key in seconds. |
|
69 | - * |
|
70 | - * @return boolean Existence. |
|
71 | - */ |
|
72 | - public function exists($key, $lifetime = 0) |
|
63 | + /** |
|
64 | + * Checks if a given key exists in the cache, valid for the given |
|
65 | + * lifetime. |
|
66 | + * |
|
67 | + * @param string $key Cache key to check. |
|
68 | + * @param integer $lifetime Lifetime of the key in seconds. |
|
69 | + * |
|
70 | + * @return boolean Existence. |
|
71 | + */ |
|
72 | + public function exists($key, $lifetime = 0) |
|
73 | 73 | { |
74 | 74 | unset($lifetime); // not (yet) used, but required by function signature |
75 | 75 | |
76 | 76 | return !is_null(Api\Cache::getCache(self::LEVEL, 'mail', $key)); |
77 | 77 | } |
78 | 78 | |
79 | - /** |
|
80 | - * Expire any existing data for the given key. |
|
81 | - * |
|
82 | - * @param string $key Cache key to expire. |
|
83 | - * |
|
84 | - * @return boolean Success or failure. |
|
85 | - */ |
|
86 | - public function expire($key) |
|
79 | + /** |
|
80 | + * Expire any existing data for the given key. |
|
81 | + * |
|
82 | + * @param string $key Cache key to expire. |
|
83 | + * |
|
84 | + * @return boolean Success or failure. |
|
85 | + */ |
|
86 | + public function expire($key) |
|
87 | 87 | { |
88 | 88 | Api\Cache::unsetCache(self::LEVEL, 'mail', $key); |
89 | 89 | } |
90 | 90 | |
91 | - /** |
|
92 | - * Clears all data from the cache. |
|
93 | - * |
|
94 | - * @throws Horde_Cache_Exception |
|
95 | - */ |
|
96 | - public function clear() |
|
91 | + /** |
|
92 | + * Clears all data from the cache. |
|
93 | + * |
|
94 | + * @throws Horde_Cache_Exception |
|
95 | + */ |
|
96 | + public function clear() |
|
97 | 97 | { |
98 | 98 | Api\Cache::flush(self::LEVEL, self::APP); |
99 | 99 | } |
@@ -37,28 +37,28 @@ discard block |
||
37 | 37 | var $icServer; |
38 | 38 | |
39 | 39 | /** |
40 | - * @var string name of active script queried from Sieve server |
|
41 | - */ |
|
40 | + * @var string name of active script queried from Sieve server |
|
41 | + */ |
|
42 | 42 | var $scriptName; |
43 | 43 | |
44 | 44 | /** |
45 | - * @var $rules containing the rules |
|
46 | - */ |
|
45 | + * @var $rules containing the rules |
|
46 | + */ |
|
47 | 47 | var $rules; |
48 | 48 | |
49 | 49 | /** |
50 | - * @var $vacation containing the vacation |
|
51 | - */ |
|
50 | + * @var $vacation containing the vacation |
|
51 | + */ |
|
52 | 52 | var $vacation; |
53 | 53 | |
54 | 54 | /** |
55 | - * @var $emailNotification containing the emailNotification |
|
56 | - */ |
|
55 | + * @var $emailNotification containing the emailNotification |
|
56 | + */ |
|
57 | 57 | var $emailNotification; |
58 | 58 | |
59 | 59 | /** |
60 | - * @var object $error the last PEAR error object |
|
61 | - */ |
|
60 | + * @var object $error the last PEAR error object |
|
61 | + */ |
|
62 | 62 | var $error; |
63 | 63 | |
64 | 64 | /** |
@@ -170,11 +170,11 @@ discard block |
||
170 | 170 | function setEmailNotification(array $_emailNotification, $_scriptName=null) |
171 | 171 | { |
172 | 172 | if ($_emailNotification['externalEmail'] == '' || !preg_match("/\@/",$_emailNotification['externalEmail'])) { |
173 | - $_emailNotification['status'] = 'off'; |
|
174 | - $_emailNotification['externalEmail'] = ''; |
|
175 | - } |
|
173 | + $_emailNotification['status'] = 'off'; |
|
174 | + $_emailNotification['externalEmail'] = ''; |
|
175 | + } |
|
176 | 176 | |
177 | - $script = $this->retrieveRules($_scriptName); |
|
177 | + $script = $this->retrieveRules($_scriptName); |
|
178 | 178 | $script->emailNotification = $_emailNotification; |
179 | 179 | $ret = $script->updateScript($this); |
180 | 180 | $this->error = $script->errstr; |
@@ -32,14 +32,14 @@ discard block |
||
32 | 32 | } |
33 | 33 | } |
34 | 34 | |
35 | - /** |
|
36 | - * Hook called before an account get deleted |
|
37 | - * |
|
38 | - * @param array $data |
|
39 | - * @param int $data['account_id'] numerical id |
|
40 | - * @param string $data['account_lid'] account-name |
|
41 | - * @param int $data['new_owner'] account-id of new owner, or false if data should get deleted |
|
42 | - */ |
|
35 | + /** |
|
36 | + * Hook called before an account get deleted |
|
37 | + * |
|
38 | + * @param array $data |
|
39 | + * @param int $data['account_id'] numerical id |
|
40 | + * @param string $data['account_lid'] account-name |
|
41 | + * @param int $data['new_owner'] account-id of new owner, or false if data should get deleted |
|
42 | + */ |
|
43 | 43 | static function deleteaccount(array $data) |
44 | 44 | { |
45 | 45 | self::run_plugin_hooks('deleteAccount', $data); |
@@ -48,25 +48,25 @@ discard block |
||
48 | 48 | Account::delete(0, $data['account_id']); |
49 | 49 | } |
50 | 50 | |
51 | - /** |
|
52 | - * Hook called before a group get deleted |
|
53 | - * |
|
54 | - * @param array $data |
|
55 | - * @param int $data['account_id'] numerical id |
|
56 | - * @param string $data['account_name'] account-name |
|
57 | - */ |
|
51 | + /** |
|
52 | + * Hook called before a group get deleted |
|
53 | + * |
|
54 | + * @param array $data |
|
55 | + * @param int $data['account_id'] numerical id |
|
56 | + * @param string $data['account_name'] account-name |
|
57 | + */ |
|
58 | 58 | static function deletegroup(array $data) |
59 | 59 | { |
60 | 60 | Account::delete(0, $data['account_id']); |
61 | 61 | } |
62 | 62 | |
63 | 63 | /** |
64 | - * Hook called when an account get added or edited |
|
65 | - * |
|
66 | - * @param array $data |
|
67 | - * @param int $data['account_id'] numerical id |
|
68 | - * @param string $data['account_lid'] account-name |
|
69 | - * @param string $data['account_email'] email |
|
64 | + * Hook called when an account get added or edited |
|
65 | + * |
|
66 | + * @param array $data |
|
67 | + * @param int $data['account_id'] numerical id |
|
68 | + * @param string $data['account_lid'] account-name |
|
69 | + * @param string $data['account_email'] email |
|
70 | 70 | */ |
71 | 71 | static function addaccount(array $data) |
72 | 72 | { |
@@ -425,20 +425,20 @@ discard block |
||
425 | 425 | } |
426 | 426 | |
427 | 427 | /** |
428 | - * this static function is a wrapper for fckEditor to create some reuseable layouts |
|
429 | - * |
|
430 | - * @param string $_name name and id of the input-field |
|
431 | - * @param string $_content of the tinymce (will be run through htmlspecialchars !!!), default '' |
|
432 | - * @param string $_mode display mode of the tinymce editor can be: simple, extended or advanced |
|
433 | - * @param array $_options (toolbar_expanded true/false) |
|
434 | - * @param string $_height ='400px' |
|
435 | - * @param string $_width ='100%' |
|
436 | - * @param string $_start_path ='' if passed activates the browser for image at absolute path passed |
|
437 | - * @param boolean $_purify =true run $_content through htmlpurifier before handing it to fckEditor |
|
438 | - * @param mixed (boolean/string) $_focusToBody=false USED only for CKEDIOR true means yes, focus on top, you may specify TOP or BOTTOM (to focus on the end of the editor area) |
|
439 | - * @param string $_executeJSAfterInit ='' Javascript to be executed after InstanceReady of CKEditor |
|
440 | - * @return string the necessary html for the textarea |
|
441 | - */ |
|
428 | + * this static function is a wrapper for fckEditor to create some reuseable layouts |
|
429 | + * |
|
430 | + * @param string $_name name and id of the input-field |
|
431 | + * @param string $_content of the tinymce (will be run through htmlspecialchars !!!), default '' |
|
432 | + * @param string $_mode display mode of the tinymce editor can be: simple, extended or advanced |
|
433 | + * @param array $_options (toolbar_expanded true/false) |
|
434 | + * @param string $_height ='400px' |
|
435 | + * @param string $_width ='100%' |
|
436 | + * @param string $_start_path ='' if passed activates the browser for image at absolute path passed |
|
437 | + * @param boolean $_purify =true run $_content through htmlpurifier before handing it to fckEditor |
|
438 | + * @param mixed (boolean/string) $_focusToBody=false USED only for CKEDIOR true means yes, focus on top, you may specify TOP or BOTTOM (to focus on the end of the editor area) |
|
439 | + * @param string $_executeJSAfterInit ='' Javascript to be executed after InstanceReady of CKEditor |
|
440 | + * @return string the necessary html for the textarea |
|
441 | + */ |
|
442 | 442 | static function fckEditor($_name, $_content, $_mode, $_options=array('toolbar_expanded' =>'true'), |
443 | 443 | $_height='400px', $_width='100%',$_start_path='',$_purify=true, $_focusToBody=false, $_executeJSAfterInit='') |
444 | 444 | { |
@@ -509,21 +509,21 @@ discard block |
||
509 | 509 | } |
510 | 510 | |
511 | 511 | /** |
512 | - * this static function is a wrapper for tinymce to create some reuseable layouts |
|
513 | - * |
|
514 | - * Please note: if you did not run init_tinymce already you this static function need to be called before the call to phpgw_header() !!! |
|
515 | - * |
|
516 | - * @param string $_name name and id of the input-field |
|
517 | - * @param string $_mode display mode of the tinymce editor can be: simple, extended or advanced |
|
518 | - * @param string $_content ='' of the tinymce (will be run through htmlspecialchars !!!), default '' |
|
519 | - * @param string $_height ='400px' |
|
520 | - * @param string $_width ='100%' |
|
521 | - * @param boolean $_purify =true |
|
522 | - * @param string $_border ='0px' NOT used for CKEditor |
|
523 | - * @param mixed (boolean/string) $_focusToBody=false USED only for CKEDIOR true means yes, focus on top, you may specify TOP or BOTTOM (to focus on the end of the editor area) |
|
524 | - * @param string $_executeJSAfterInit ='' Javascript to be executed after InstanceReady of CKEditor |
|
525 | - * @return string the necessary html for the textarea |
|
526 | - */ |
|
512 | + * this static function is a wrapper for tinymce to create some reuseable layouts |
|
513 | + * |
|
514 | + * Please note: if you did not run init_tinymce already you this static function need to be called before the call to phpgw_header() !!! |
|
515 | + * |
|
516 | + * @param string $_name name and id of the input-field |
|
517 | + * @param string $_mode display mode of the tinymce editor can be: simple, extended or advanced |
|
518 | + * @param string $_content ='' of the tinymce (will be run through htmlspecialchars !!!), default '' |
|
519 | + * @param string $_height ='400px' |
|
520 | + * @param string $_width ='100%' |
|
521 | + * @param boolean $_purify =true |
|
522 | + * @param string $_border ='0px' NOT used for CKEditor |
|
523 | + * @param mixed (boolean/string) $_focusToBody=false USED only for CKEDIOR true means yes, focus on top, you may specify TOP or BOTTOM (to focus on the end of the editor area) |
|
524 | + * @param string $_executeJSAfterInit ='' Javascript to be executed after InstanceReady of CKEditor |
|
525 | + * @return string the necessary html for the textarea |
|
526 | + */ |
|
527 | 527 | static function fckEditorQuick($_name, $_mode, $_content='', $_height='400px', $_width='100%',$_purify=true, $_border='0px',$_focusToBody=false,$_executeJSAfterInit='') |
528 | 528 | { |
529 | 529 | if (!self::htmlarea_availible() || $_mode == 'ascii') |
@@ -31,17 +31,17 @@ |
||
31 | 31 | class Ldap |
32 | 32 | { |
33 | 33 | /** |
34 | - * Holds the LDAP link identifier |
|
35 | - * |
|
36 | - * @var resource $ds |
|
37 | - */ |
|
34 | + * Holds the LDAP link identifier |
|
35 | + * |
|
36 | + * @var resource $ds |
|
37 | + */ |
|
38 | 38 | var $ds; |
39 | 39 | |
40 | 40 | /** |
41 | - * Holds the detected information about the connected ldap server |
|
42 | - * |
|
43 | - * @var Ldap\ServerInfo $ldapserverinfo |
|
44 | - */ |
|
41 | + * Holds the detected information about the connected ldap server |
|
42 | + * |
|
43 | + * @var Ldap\ServerInfo $ldapserverinfo |
|
44 | + */ |
|
45 | 45 | var $ldapserverinfo; |
46 | 46 | |
47 | 47 | /** |
@@ -407,7 +407,7 @@ discard block |
||
407 | 407 | * @param string $db_val stored value / hash (from database) |
408 | 408 | * @param string &$type detected crypt type on return |
409 | 409 | * @return boolean True on successful comparison |
410 | - */ |
|
410 | + */ |
|
411 | 411 | static function crypt_compare($form_val, $db_val, &$type) |
412 | 412 | { |
413 | 413 | // detect type of hash by salt part of $db_val |
@@ -706,7 +706,7 @@ discard block |
||
706 | 706 | * @param string $form_val user input value for comparison |
707 | 707 | * @param string $db_val stored value (from database) |
708 | 708 | * @return boolean True on successful comparison |
709 | - */ |
|
709 | + */ |
|
710 | 710 | static function smd5_compare($form_val,$db_val) |
711 | 711 | { |
712 | 712 | /* Start with the first char after {SMD5} */ |
@@ -728,7 +728,7 @@ discard block |
||
728 | 728 | * @param string $form_val user input value for comparison |
729 | 729 | * @param string $db_val stored value (from database) |
730 | 730 | * @return boolean True on successful comparison |
731 | - */ |
|
731 | + */ |
|
732 | 732 | static function sha_compare($form_val,$db_val) |
733 | 733 | { |
734 | 734 | /* Start with the first char after {SHA} */ |
@@ -745,7 +745,7 @@ discard block |
||
745 | 745 | * @param string $form_val user input value for comparison |
746 | 746 | * @param string $db_val stored value (from database) |
747 | 747 | * @return boolean True on successful comparison |
748 | - */ |
|
748 | + */ |
|
749 | 749 | static function ssha_compare($form_val,$db_val) |
750 | 750 | { |
751 | 751 | /* Start with the first char after {SSHA} */ |