Changeset 317
- Timestamp:
- 06/17/08 14:43:30 (16 years ago)
- Location:
- trunk/expressoAdmin1_2
- Files:
-
- 18 added
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/expressoAdmin1_2/controller.php
r2 r317 21 21 else 22 22 return $_SESSION['response'] = 'false'; 23 23 24 24 // Load dinamically class file. 25 25 if($app == '$this') 26 26 $filename = 'inc/class.'.$class.'.inc.php'; 27 else if( strpos($app, '$this/') !== false) 28 { 29 $filename = str_replace('$this/','',$app) . '.php'; 30 include_once($filename); 31 exit; 32 } 27 33 else 28 34 $filename = '../'.$app.'/inc/class.'.$class.'.inc.php'; 29 35 30 include_once($filename); 36 include_once($filename); 31 37 32 38 // Create new Object (class loaded). -
trunk/expressoAdmin1_2/inc/class.functions.inc.php
r283 r317 49 49 { 50 50 case list_users: 51 if ($array_acl[acl_add_users] || $array_acl[acl_edit_users] || $array_acl[acl_delete_users] || $array_acl[acl_change_users_password] || $array_acl[acl_change_users_quote] || $array_acl[acl_edit_sambausers_attributes] || $array_acl[acl_view_users] || $array_acl[acl_manipulate_corporative_information] )51 if ($array_acl[acl_add_users] || $array_acl[acl_edit_users] || $array_acl[acl_delete_users] || $array_acl[acl_change_users_password] || $array_acl[acl_change_users_quote] || $array_acl[acl_edit_sambausers_attributes] || $array_acl[acl_view_users] || $array_acl[acl_manipulate_corporative_information] || $array_acl[acl_edit_users_phonenumber] ) 52 52 return true; 53 53 break; … … 85 85 return true; 86 86 break; 87 88 case list_institutional_accounts: 89 if ($array_acl[acl_add_institutional_accounts] || $array_acl[acl_edit_institutional_accounts] || $array_acl[acl_delete_institutional_accounts]) 90 return true; 91 break; 92 87 93 88 94 default: … … 288 294 289 295 // Make a array read humam 290 // Last acl: 1.073.741.824 296 // Last acl: 2.147.483.648 -> edit users phonephone 297 // Last acl: 4.294.967.296 -> add institutional accounts 298 // Last acl: 8.589.934.592 -> edit institutional accounts 299 // Last acl: 17.179.869.184 -> remove institutional accounts 291 300 function make_array_acl($acl) 292 301 { … … 322 331 "acl_manipulate_corporative_information", 323 332 "acl_edit_users_picture", 324 "acl_edit_scl_email_lists" 333 "acl_edit_scl_email_lists", 334 "acl_edit_users_phonenumber", 335 "acl_add_institutional_accounts", 336 "acl_edit_institutional_accounts", 337 "acl_remove_institutional_accounts" 325 338 ); 326 339 … … 334 347 $bin = '1' . $bin; 335 348 336 $array_acl[$right] = $ acl & bindec($bin);337 } 349 $array_acl[$right] = $this->safeBitCheck(bindec($bin), $acl); 350 } 338 351 return $array_acl; 339 /* 340 $array_acl['acl_add_users'] = $acl & 1; 341 $array_acl['acl_edit_users'] = $acl & 2; 342 $array_acl['acl_delete_users'] = $acl & 4; 343 //8 344 $array_acl['acl_add_groups'] = $acl & 16; 345 $array_acl['acl_edit_groups'] = $acl & 32; 346 $array_acl['acl_delete_groups'] = $acl & 64; 347 $array_acl['acl_change_users_password'] = $acl & 128; 348 $array_acl['acl_add_maillists'] = $acl & 256; 349 $array_acl['acl_edit_maillists'] = $acl & 512; 350 $array_acl['acl_delete_maillists'] = $acl & 1024; 351 //2048 352 $array_acl['acl_create_sectors'] = $acl & 4096; 353 $array_acl['acl_edit_sectors'] = $acl & 8192; 354 $array_acl['acl_delete_sectors'] = $acl & 16384; 355 $array_acl['acl_edit_sambausers_attributes'] = $acl & 32768; 356 $array_acl['acl_view_global_sessions'] = $acl & 65536; 357 $array_acl['acl_view_logs'] = $acl & 131072; 358 $array_acl['acl_change_users_quote'] = $acl & 262144; 359 $array_acl['acl_set_user_default_password'] = $acl & 524288; 360 $array_acl['acl_create_computers'] = $acl & 1048576; 361 $array_acl['acl_edit_computers'] = $acl & 2097152; 362 $array_acl['acl_delete_computers'] = $acl & 4194304; 363 $array_acl['acl_rename_users'] = $acl & 8388608; 364 $array_acl['acl_edit_sambadomains'] = $acl & 16777216; 365 $array_acl['acl_view_users'] = $acl & 33554432; 366 $array_acl['acl_edit_email_groups'] = $acl & 67108864; 367 $array_acl['acl_empty_user_inbox'] = $acl & 134217728; 368 $array_acl['acl_manipulate_corporative_information'] = $acl & 268435456; 369 $array_acl['acl_edit_users_picture'] = $acl & 536870912; 370 return $array_acl; 371 */ 352 } 353 354 function safeBitCheck($number,$comparison) 355 { 356 $binNumber = base_convert($number,10,2); 357 $binComparison = strrev(base_convert($comparison,10,2)); 358 $str = strlen($binNumber); 359 360 if ( ($str <= strlen($binComparison)) && ($binComparison{$str-1}==="1") ) 361 return '1'; 362 else 363 return '0'; 372 364 } 373 365 … … 748 740 } 749 741 742 function lang($key) 743 { 744 if ($_SESSION['phpgw_info']['expressoAdmin']['lang'][$key]) 745 return $_SESSION['phpgw_info']['expressoAdmin']['lang'][$key]; 746 else 747 return $key . '*'; 748 } 750 749 } 751 750 -
trunk/expressoAdmin1_2/inc/class.group.inc.php
r86 r317 52 52 //Retira os uids duplicados se existir 53 53 $array_tmp = array(); 54 $array_tmp = array_unique($params['members']);54 $array_tmp = @array_unique($params['members']); 55 55 $params['members'] = $array_tmp; 56 56 … … 67 67 $id = $next_id['id']; 68 68 } 69 // Pega ID do BD e incrementa de 1.70 //$id = (($this->db_functions->get_next_id()) + 1);71 // Incrementa o id no BD.72 //$this->db_functions->increment_id($id,'groups');73 69 74 70 // Cria array para incluir no LDAP … … 90 86 $group_info['mail'] = $params['email']; 91 87 92 if ( count($params['members']))88 if ( (count($params['members'])) && (is_array($params['members'])) ) 93 89 { 94 90 foreach ($params['members'] as $index => $uidnumber) … … 122 118 { 123 119 $return['status'] = false; 124 $return['msg'] .= $result['msg']; 120 if ($result['error_number'] == '65') 121 $return['msg'] .= "Não foi possível criar este grupo pois os schemas do servidor LDAP estão desatualizados.\n" . 122 "O Administrador deve atualizar o diretório /etc/ldap/schema/ e re-inicializar o ldap.\n". 123 "Uma versão atualizada deste arquivo pode ser encontrada no site:\n" . 124 "www.expressolivre.org -> Downloads -> schema.tgz"; 125 else 126 $return['msg'] .= $result['msg']; 125 127 } 126 128 … … 215 217 { 216 218 $return['status'] = false; 217 $return['msg'] .= $result['msg']; 219 if ($result['error_number'] == '65') 220 $return['msg'] .= "Não foi possível salvar alguns atributos deste grupo pois os schemas do servidor LDAP estão desatualizados.\n" . 221 "O Administrador deve atualizar o diretório /etc/ldap/schema/ e re-inicializar o ldap.\n". 222 "Uma versão atualizada deste arquivo pode ser encontrada no site:\n" . 223 "www.expressolivre.org -> Downloads -> schema.tgz"; 224 else 225 $return['msg'] .= $result['msg']; 218 226 } 219 227 } … … 283 291 { 284 292 $result = $this->ldap_functions->add_user_attributes($dn, $ldap_add); 293 285 294 if (!$result['status']) 286 295 { 287 296 $return['status'] = false; 288 $return['msg'] .= $result['msg']; 297 if ($result['error_number'] == '65') 298 $return['msg'] .= "Não foi possível adicionar alguns atributos deste gruupo pois os schemas do servidor LDAP estão desatualizados.\n" . 299 "O Administrador deve atualizar o diretório /etc/ldap/schema/ e re-inicializar o ldap.\n". 300 "Uma versão atualizada deste arquivo pode ser encontrada no site:\n" . 301 "www.expressolivre.org -> Downloads -> schema.tgz"; 302 else 303 $return['msg'] .= $result['msg']; 289 304 } 290 305 } -
trunk/expressoAdmin1_2/inc/class.ldap_functions.inc.php
r221 r317 616 616 if (!@ldap_add ( $this->ldap, $dn, $entry )) 617 617 { 618 $result['status'] = false; 619 $result['msg'] = "Erro na funcao ldap_functions->ldap_add_entry ($dn).\nRetorno do servidor:" . ldap_error($this->ldap); 618 $result['status'] = false; 619 $result['error_number'] = ldap_errno($this->ldap); 620 $result['msg'] = "Erro na funcao ldap_functions->ldap_add_entry ($dn).\nRetorno do servidor:" . ldap_errno($this->ldap) . ldap_error($this->ldap); 620 621 } 621 622 else … … 743 744 { 744 745 $result['status'] = false; 745 $result['msg'] = "Erro na funcao ldap_functions->add_user2maillist ($mail).\nRetorno do servidor:" . ldap_error($ldapMasterConnect); 746 if (ldap_errno($ldapMasterConnect) == '50') 747 { 748 $result['msg'] = "Erro na funcao ldap_functions->add_user2maillist.\n" . 749 "O usuário utilizado para gravação no LDAP, DEVE ter direito de escrita.\n". 750 "O usuário " . $_SESSION['phpgw_info']['expresso']['cc_ldap_server']['acc'] . " não tem este direito.\n". 751 "Edite \"Configuração Global do Catálogo\", no módulo Administrador, Catálogo de Endereços e adicione um usuário com direitos de escrita."; 752 } 753 else 754 $result['msg'] = "Erro na funcao ldap_functions->add_user2maillist.\nRetorno do servidor:" . ldap_error($ldapMasterConnect); 746 755 } 747 756 … … 794 803 { 795 804 $result['status'] = false; 796 $result['msg'] = "Erro na funcao ldap_functions->remove_user2maillist ($mail).\n\nRetorno do servidor:" . ldap_error($this->ldap); 805 if (ldap_errno($ldapMasterConnect) == '50') 806 { 807 $result['msg'] = "Erro na funcao ldap_functions->add_user2maillist.\n" . 808 "O usuário utilizado para gravação no LDAP, DEVE ter direito de escrita.\n". 809 "O usuário " . $_SESSION['phpgw_info']['expresso']['cc_ldap_server']['acc'] . " não tem este direito.\n". 810 "Edite \"Configuração Global do Catálogo\", no módulo Administrador, Catálogo de Endereços e adicione um usuário com direitos de escrita."; 811 } 812 else 813 $result['msg'] = "Erro na funcao ldap_functions->add_user2maillist.\nRetorno do servidor:" . ldap_error($ldapMasterConnect); 797 814 } 798 815 ldap_close($ldapMasterConnect); … … 1271 1288 { 1272 1289 $return['status'] = false; 1290 $return['error_number'] = ldap_errno($this->ldap); 1273 1291 $return['msg'] = 'Erro em ldap_funcitons->replace_user_attributes: ' . ldap_error($this->ldap); 1274 1292 } … … 1284 1302 { 1285 1303 $return['status'] = false; 1304 $return['error_number'] = ldap_errno($this->ldap); 1286 1305 $return['msg'] = 'Erro em ldap_funcitons->add_user_attributes: ' . ldap_error($this->ldap); 1287 1306 } … … 1360 1379 } 1361 1380 } 1362 1381 1382 //INSTITUTIONAL ACCOUNTS 1383 $attrs = array(); 1384 $attrs['mailForwardingAddress'] = $user_info['mail']; 1385 1386 $justthese = array("dn"); 1387 $filter="(&(phpgwAccountType=i)(mailforwardingaddress=".$user_info['mail']."))"; 1388 $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 1389 $entries = ldap_get_entries($this->ldap, $search); 1390 1391 for ($i=0; $i<$entries['count']; $i++) 1392 { 1393 if ( !@ldap_mod_del($this->ldap, $entries[$i]['dn'], $attrs) ) 1394 { 1395 $result['status'] = false; 1396 $result['msg'] = "Erro na funcao ldap_functions->delete_user, instutional_accounts.\nRetorno do servidor:" . ldap_error($this->ldap); 1397 } 1398 } 1399 1363 1400 // MAILLISTS 1364 1401 $attrs = array(); … … 1387 1424 { 1388 1425 $return['status'] = false; 1389 $return['msg'] .= 'Erro em ldap_funcitons->delete_user, listas de email: ' . ldap_error($this->ldap); 1426 if (ldap_errno($ldapMasterConnect) == '50') 1427 { 1428 $result['msg'] = "Erro na funcao ldap_functions->add_user2maillist.\n" . 1429 "O usuário utilizado para gravação no LDAP, DEVE ter direito de escrita.\n". 1430 "O usuário " . $_SESSION['phpgw_info']['expresso']['cc_ldap_server']['acc'] . " não tem este direito.\n". 1431 "Edite \"Configuração Global do Catálogo\", no módulo Administrador, Catálogo de Endereços e adicione um usuário com direitos de escrita."; 1432 } 1433 else 1434 $result['msg'] = "Erro na funcao ldap_functions->add_user2maillist.\nRetorno do servidor:" . ldap_error($ldapMasterConnect); 1390 1435 } 1391 1436 } … … 1601 1646 return $return; 1602 1647 } 1648 function exist_domain_name_sid($sambadomainname, $sambasid) 1649 { 1650 $context = $GLOBALS['phpgw_info']['server']['ldap_context']; 1651 1652 $justthese = array("dn","sambaDomainName"); 1653 $filter="(&(objectClass=sambaDomain)(sambaSID=$sambasid)(sambaDomainName=$sambadomainname))"; 1654 $search = ldap_search($this->ldap, $context, $filter, $justthese); 1655 $count_entries = ldap_count_entries($this->ldap, $search); 1656 1657 if ($count_entries > 0) 1658 return true; 1659 else 1660 return false; 1661 } 1603 1662 1604 1663 function add_sambadomain($sambadomainname, $sambasid, $context) … … 1615 1674 { 1616 1675 $return['status'] = false; 1617 $return['msg'] = "Erro na funcao ldap_functions->add_sambadomain ($dn).\nRetorno do servidor: " . ldap_error($this->ldap);1676 $return['msg'] = "Erro ao adicionar Samba Domain"; 1618 1677 } 1619 1678 else … … 1670 1729 } 1671 1730 1672 1731 function create_institutional_accounts($params) 1732 { 1733 /* Begin: Access verification */ 1734 if (!$this->functions->check_acl($_SESSION['phpgw_info']['expresso']['user']['account_lid'], 'add_institutional_accounts')) 1735 { 1736 $return['status'] = false; 1737 $return['msg'] = $this->functions->lang('You do not have right to create institutional accounts') . "."; 1738 return $return; 1739 } 1740 1741 $access_granted = false; 1742 foreach ($this->manager_contexts as $idx=>$manager_context) 1743 { 1744 if (stristr($params['context'], $manager_context)) 1745 { 1746 $access_granted = true; 1747 break; 1748 } 1749 } 1750 if (!$access_granted) 1751 { 1752 $return['status'] = false; 1753 $return['msg'] = $this->functions->lang('You do not have access to this organization') . "."; 1754 return $return; 1755 } 1756 /* End: Access verification */ 1757 1758 /* Begin: Validation */ 1759 if ( (empty($params['cn'])) || (empty($params['mail'])) ) 1760 { 1761 $result['status'] = false; 1762 $result['msg'] = $this->functions->lang('Field mail or name is empty'); 1763 return $result; 1764 } 1765 1766 if (! eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$", $params['mail']) ) 1767 { 1768 $result['status'] = false; 1769 $result['msg'] = $this->functions->lang('Field mail is not formed correcty') . '.'; 1770 return $result; 1771 } 1772 1773 $uid = 'institutional_account_' . $params['mail']; 1774 $dn = "uid=$uid," . $params['context']; 1775 1776 $filter = "(mail=".$params['mail'].")"; 1777 $justthese = array("cn"); 1778 $search = @ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 1779 $entries = @ldap_get_entries($this->ldap,$search); 1780 if ($entries['count'] != 0) 1781 { 1782 $result['status'] = false; 1783 $result['msg'] = $this->functions->lang('Field mail already in use'); 1784 return $result; 1785 } 1786 /* End: Validation */ 1787 1788 $info = array(); 1789 $info['cn'] = $params['cn']; 1790 $info['sn'] = $params['cn']; 1791 $info['uid'] = $uid; 1792 $info['mail'] = $params['mail']; 1793 $info['phpgwAccountType'] = 'i'; 1794 $info['objectClass'][] = 'inetOrgPerson'; 1795 $info['objectClass'][] = 'phpgwAccount'; 1796 $info['objectClass'][] = 'top'; 1797 $info['objectClass'][] = 'person'; 1798 $info['objectClass'][] = 'qmailUser'; 1799 $info['objectClass'][] = 'organizationalPerson'; 1800 1801 if ($params['accountStatus'] == 'on') 1802 { 1803 $info['accountStatus'] = 'active'; 1804 } 1805 if ($params['phpgwAccountVisible'] == 'on') 1806 { 1807 $info['phpgwAccountVisible'] = '-1'; 1808 } 1809 1810 if (!empty($params['owners'])) 1811 { 1812 foreach($params['owners'] as $index=>$uidnumber) 1813 { 1814 $info['mailForwardingAddress'][] = $this->uidnumber2mail($uidnumber); 1815 } 1816 } 1817 1818 $result = array(); 1819 if (!@ldap_add ( $this->ldap, $dn, $info )) 1820 { 1821 $result['status'] = false; 1822 $result['msg'] = $this->functions->lang('Error in function') . ' ldap_functions->create_institutional_accounts'; 1823 $result['msg'] .= "\n" . $this->functions->lang('Server return') . ': ' . ldap_error($this->ldap); 1824 } 1825 else 1826 $result['status'] = true; 1827 1828 return $result; 1829 } 1830 1831 function save_institutional_accounts($params) 1832 { 1833 /* Begin: Access verification */ 1834 if (!$this->functions->check_acl($_SESSION['phpgw_info']['expresso']['user']['account_lid'], 'edit_institutional_accounts')) 1835 { 1836 $return['status'] = false; 1837 $return['msg'] = $this->functions->lang('You do not have right to edit institutional accounts') . "."; 1838 return $return; 1839 } 1840 $access_granted = false; 1841 foreach ($this->manager_contexts as $idx=>$manager_context) 1842 { 1843 if (stristr($params['context'], $manager_context)) 1844 { 1845 $access_granted = true; 1846 break; 1847 } 1848 } 1849 if (!$access_granted) 1850 { 1851 $return['status'] = false; 1852 $return['msg'] = $this->functions->lang('You do not have access to this organization') . "."; 1853 return $return; 1854 } 1855 /* End: Access verification */ 1856 1857 /* Begin: Validation */ 1858 if ( (empty($params['cn'])) || (empty($params['mail'])) ) 1859 { 1860 $result['status'] = false; 1861 $result['msg'] = $this->functions->lang('Field mail or name is empty') . '.'; 1862 return $result; 1863 } 1864 1865 if (! eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$", $params['mail']) ) 1866 { 1867 $result['status'] = false; 1868 $result['msg'] = $this->functions->lang('Field mail is not formed correcty') . '.'; 1869 return $result; 1870 } 1871 1872 $uid = 'institutional_account_' . $params['mail']; 1873 $dn = strtolower("uid=$uid," . $params['context']); 1874 $anchor = strtolower($params['anchor']); 1875 1876 $filter = "(mail=".$params['mail'].")"; 1877 $justthese = array("cn"); 1878 $search = @ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 1879 $entries = @ldap_get_entries($this->ldap,$search); 1880 1881 if ( ($entries['count'] > 1) || (($entries['count'] == 1) && ($entries[0]['dn'] != $anchor)) ) 1882 { 1883 $result['status'] = false; 1884 $result['msg'] = $this->functions->lang('Field mail already in use.'); 1885 return $result; 1886 } 1887 /* End: Validation */ 1888 1889 $result = array(); 1890 $result['status'] = true; 1891 1892 if ($anchor != $dn) 1893 { 1894 if (!@ldap_rename($this->ldap, $anchor, "uid=$uid", $params['context'], true)) 1895 { 1896 $result['status'] = false; 1897 $result['msg'] = $this->functions->lang('Error in function') . ' ldap_functions->save_institutional_accounts: ldap_rename'; 1898 $result['msg'] .= "\n" . $this->functions->lang('Server return') . ': ' . ldap_error($this->ldap); 1899 } 1900 } 1901 1902 $info = array(); 1903 $info['cn'] = $params['cn']; 1904 $info['sn'] = $params['cn']; 1905 $info['uid'] = $uid; 1906 $info['mail'] = $params['mail']; 1907 1908 if ($params['accountStatus'] == 'on') 1909 $info['accountStatus'] = 'active'; 1910 else 1911 $info['accountStatus'] = array(); 1912 1913 if ($params['phpgwAccountVisible'] == 'on') 1914 $info['phpgwAccountVisible'] = '-1'; 1915 else 1916 $info['phpgwAccountVisible'] = array(); 1917 1918 if (!empty($params['owners'])) 1919 { 1920 foreach($params['owners'] as $index=>$uidnumber) 1921 { 1922 $mailForwardingAddress = $this->uidnumber2mail($uidnumber); 1923 if ($mailForwardingAddress != '') 1924 $info['mailForwardingAddress'][] = $mailForwardingAddress; 1925 } 1926 } 1927 else 1928 $info['mailForwardingAddress'] = array(); 1929 1930 if (!@ldap_modify ( $this->ldap, $dn, $info )) 1931 { 1932 $result['status'] = false; 1933 $result['msg'] = $this->functions->lang('Error in function') . ' ldap_functions->save_institutional_accounts: ldap_modify'; 1934 $result['msg'] .= "\n" . $this->functions->lang('Server return') . ': ' . ldap_error($this->ldap); 1935 } 1936 1937 return $result; 1938 } 1939 1940 function get_institutional_accounts($params) 1941 { 1942 if (!$this->functions->check_acl($_SESSION['phpgw_info']['expresso']['user']['account_lid'], 'list_institutional_accounts')) 1943 { 1944 $return['status'] = false; 1945 $return['msg'] = $this->functions->lang('You do not have right to list institutional accounts') . "."; 1946 return $return; 1947 } 1948 1949 $input = $params['input']; 1950 $justthese = array("cn", "mail", "uid"); 1951 $trs = array(); 1952 1953 foreach ($this->manager_contexts as $idx=>$context) 1954 { 1955 $institutional_accounts = ldap_search($this->ldap, $context, ("(&(phpgwAccountType=i)(|(mail=$input*)(cn=*$input*)))"), $justthese); 1956 $entries = ldap_get_entries($this->ldap, $institutional_accounts); 1957 1958 for ($i=0; $i<$entries['count']; $i++) 1959 { 1960 $tr = "<tr class='normal' onMouseOver=this.className='selected' onMouseOut=this.className='normal'><td onClick=edit_institutional_account('".$entries[$i]['uid'][0]."')>" . $entries[$i]['cn'][0] . "</td><td onClick=edit_institutional_account('".$entries[$i]['uid'][0]."')>" . $entries[$i]['mail'][0] . "</td><td align='center' onClick=delete_institutional_accounts('".$entries[$i]['uid'][0]."')><img HEIGHT='16' WIDTH='16' src=./expressoAdmin1_2/templates/default/images/delete.png></td></tr>"; 1961 $trs[$tr] = $entries[$i]['cn'][0]; 1962 } 1963 } 1964 1965 $trs_string = ''; 1966 if (count($trs)) 1967 { 1968 natcasesort($trs); 1969 foreach ($trs as $tr=>$cn) 1970 { 1971 $trs_string .= $tr; 1972 } 1973 } 1974 1975 $return['status'] = 'true'; 1976 $return['trs'] = $trs_string; 1977 return $return; 1978 } 1979 1980 function get_institutional_account_data($params) 1981 { 1982 if (!$this->functions->check_acl($_SESSION['phpgw_info']['expresso']['user']['account_lid'], 'edit_institutional_accounts')) 1983 { 1984 $return['status'] = false; 1985 $return['msg'] = $this->functions->lang('You do not have right to list institutional accounts') . "."; 1986 return $return; 1987 } 1988 1989 $uid = $params['uid']; 1990 $justthese = array("accountStatus", "phpgwAccountVisible", "cn", "mail", "mailForwardingAddress"); 1991 1992 $institutional_accounts = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], ("(&(phpgwAccountType=i)(uid=$uid))"), $justthese); 1993 $entrie = ldap_get_entries($this->ldap, $institutional_accounts); 1994 1995 if ($entrie['count'] != 1) 1996 { 1997 $return['status'] = 'false'; 1998 $return['msg'] = 'Problemas carregando dados.'; 1999 } 2000 else 2001 { 2002 $tmp_user_context = split(",", $entrie[0]['dn']); 2003 $tmp_reverse_user_context = array_reverse($tmp_user_context); 2004 array_pop($tmp_reverse_user_context); 2005 $return['user_context'] = implode(",", array_reverse($tmp_reverse_user_context)); 2006 2007 $return['status'] = 'true'; 2008 $return['accountStatus'] = $entrie[0]['accountstatus'][0]; 2009 $return['phpgwAccountVisible'] = $entrie[0]['phpgwaccountvisible'][0]; 2010 $return['cn'] = $entrie[0]['cn'][0]; 2011 $return['mail'] = $entrie[0]['mail'][0]; 2012 2013 if ($entrie[0]['mailforwardingaddress']['count'] > 0) 2014 { 2015 $a_cn = array(); 2016 for ($i=0; $i<$entrie[0]['mailforwardingaddress']['count']; $i++) 2017 { 2018 $tmp = $this->mailforwardingaddress2uidnumber($entrie[0]['mailforwardingaddress'][$i]); 2019 if (!$tmp) {} 2020 else 2021 $a_cn[$tmp['uidnumber']] = $tmp['cn']; 2022 } 2023 natcasesort($a_cn); 2024 foreach($a_cn as $uidnumber => $cn) 2025 { 2026 $return['owners'] .= '<option value='. $uidnumber .'>' . $cn . '</option>'; 2027 } 2028 } 2029 } 2030 2031 return $return; 2032 } 2033 2034 function mailforwardingaddress2uidnumber($mail) 2035 { 2036 $justthese = array("uidnumber","cn"); 2037 $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], ("(&(phpgwAccountType=u)(mail=$mail))"), $justthese); 2038 $entrie = ldap_get_entries($this->ldap, $search); 2039 if ($entrie['count'] != 1) 2040 return false; 2041 else 2042 { 2043 $return['uidnumber'] = $entrie[0]['uidnumber'][0]; 2044 $return['cn'] = $entrie[0]['cn'][0]; 2045 return $return; 2046 } 2047 } 2048 2049 function delete_institutional_account_data($params) 2050 { 2051 if (!$this->functions->check_acl($_SESSION['phpgw_info']['expresso']['user']['account_lid'], 'remove_institutional_accounts')) 2052 { 2053 $return['status'] = false; 2054 $return['msg'] = $this->functions->lang('You do not have right to delete institutional accounts') . "."; 2055 return $return; 2056 } 2057 2058 $uid = $params['uid']; 2059 $return['status'] = true; 2060 2061 $justthese = array("cn"); 2062 $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], ("(&(phpgwAccountType=i)(uid=$uid))"), $justthese); 2063 $entrie = ldap_get_entries($this->ldap, $search); 2064 if ($entrie['count'] > 1) 2065 { 2066 $return['status'] = false; 2067 $return['msg'] = $this->functions->lang('More then one uid was found'); 2068 return $return; 2069 } 2070 if ($entrie['count'] == 0) 2071 { 2072 $return['status'] = false; 2073 $return['msg'] = $this->functions->lang('No uid was found'); 2074 return $return; 2075 } 2076 2077 $dn = $entrie[0]['dn']; 2078 if (!@ldap_delete($this->ldap, $dn)) 2079 { 2080 $return['status'] = false; 2081 $return['msg'] = $this->functions->lang('Error in function') . " ldap_functions->delete_institutional_accounts: ldap_delete"; 2082 $return['msg'] .= "\n" . $this->functions->lang('Server return') . ': ' . ldap_error($this->ldap); 2083 return $return; 2084 } 2085 2086 return $return; 2087 } 2088 2089 function replace_mail_from_institutional_account($newMail, $oldMail) 2090 { 2091 $filter = "(&(phpgwAccountType=i)(mailforwardingaddress=$oldMail))"; 2092 $justthese = array("dn"); 2093 $search = ldap_search($this->ldap, $GLOBALS['phpgw_info']['server']['ldap_context'], $filter, $justthese); 2094 $entries = ldap_get_entries($this->ldap, $search); 2095 $result['status'] = true; 2096 for ($i=0; $i<$entries['count']; $i++) 2097 { 2098 $attrs['mailforwardingaddress'] = $oldMail; 2099 $res1 = @ldap_mod_del($this->ldap, $entries[$i]['dn'], $attrs); 2100 $attrs['mailforwardingaddress'] = $newMail; 2101 $res2 = @ldap_mod_add($this->ldap, $entries[$i]['dn'], $attrs); 2102 2103 if ((!$res1) || (!$res2)) 2104 { 2105 $result['status'] = false; 2106 $return['msg'] = $this->functions->lang('Error in function') . " ldap_functions->replace_mail_from_institutional_account."; 2107 } 2108 } 2109 2110 return $result; 2111 } 1673 2112 } 1674 2113 ?> -
trunk/expressoAdmin1_2/inc/class.uiaccounts.inc.php
r309 r317 62 62 $context_display .= '<br>'.$tmp_context; 63 63 } 64 65 64 // Verifica se o administrador tem acesso. 66 65 if (!$this->functions->check_acl($account_lid,'list_users')) … … 136 135 ($this->functions->check_acl($account_lid,'edit_sambausers_attributes')) || 137 136 ($this->functions->check_acl($account_lid,'change_users_quote')) || 138 ($this->functions->check_acl($account_lid,'manipulate_corporative_information')) 137 ($this->functions->check_acl($account_lid,'manipulate_corporative_information')) || 138 ($this->functions->check_acl($account_lid,'edit_users_phonenumber')) 139 139 ) 140 140 $can_edit = True; … … 369 369 (!$this->functions->check_acl($manager_account_lid,'edit_sambausers_attributes')) && 370 370 (!$this->functions->check_acl($manager_account_lid,'view_users')) && 371 (!$this->functions->check_acl($manager_account_lid,'manipulate_corporative_information')) 371 (!$this->functions->check_acl($manager_account_lid,'manipulate_corporative_information')) && 372 (!$this->functions->check_acl($manager_account_lid,'edit_users_phonenumber')) 372 373 ) 373 374 { … … 385 386 $disabled = 'disabled'; 386 387 $disabled_samba = ''; 388 } 389 // SOMENTE ALTERAÇÃO DE TELEFONE 390 if ((!$this->functions->check_acl($manager_account_lid,'edit_users')) && ($this->functions->check_acl($manager_account_lid,'edit_users_phonenumber'))) 391 { 392 $disabled = 'disabled'; 393 $disabled_phonenumber = ''; 387 394 } 388 395 // TOTAIS MENOS O SAMBA -
trunk/expressoAdmin1_2/inc/class.uidomains.inc.php
r309 r317 178 178 return; 179 179 } 180 181 $return = $this->ldap_functions->add_sambadomain(strtoupper($_POST['sambadomainname']), $_POST['sambasid'], $_POST['context']); 182 if (!$return['status']) 183 { 184 $_POST['error_messages'] = $return['msg']; 185 ExecMethod('expressoAdmin1_2.uidomains.add'); 186 return; 180 181 if (!$this->ldap_functions->exist_domain_name_sid($_POST['sambadomainname'], $_POST['sambasid'])) 182 { 183 $return = $this->ldap_functions->add_sambadomain(strtoupper($_POST['sambadomainname']), $_POST['sambasid'], $_POST['context']); 184 if (!$return['status']) 185 { 186 $_POST['error_messages'] = $return['msg']; 187 ExecMethod('expressoAdmin1_2.uidomains.add'); 188 return; 189 } 187 190 } 188 191 -
trunk/expressoAdmin1_2/inc/class.uimanagers.inc.php
r309 r317 256 256 //Cria vetor da ACL 257 257 $manager_acl = $this->functions->make_array_acl($manager['acl']); 258 259 258 //Pesquisa no Banco e pega os valores dos apps. 260 259 $query = "SELECT * FROM phpgw_expressoadmin_apps WHERE manager_lid = '" . $_GET['manager_lid'] . "' AND context = '" . $_GET['context'] . "'"; … … 327 326 { 328 327 if ($first_time) 329 $p->set_var($atribute, $manager_acl[$atribute] != '' ? 'checked' : '');328 $p->set_var($atribute, $manager_acl[$atribute] === '1' ? 'checked' : ''); 330 329 else 331 $p->set_var($atribute, $_POST[$atribute] != '' ? 'checked' : '');330 $p->set_var($atribute, $_POST[$atribute] === '1' ? 'checked' : ''); 332 331 } 333 332 // Setar os langs do tpl. -
trunk/expressoAdmin1_2/inc/class.user.inc.php
r309 r317 132 132 if (($this->current_config['expressoAdmin_samba_support'] == 'true') && ($params['use_attrs_samba'] == 'on')) 133 133 { 134 135 // Qualquer um que crie um usuário, deve ter permissão para adicionar a senha samba. 134 136 // Verifica o acesso do gerente aos atributos samba 135 if ($this->functions->check_acl($_SESSION['phpgw_session']['session_lid'], 'edit_sambausers_attributes'))136 {137 //if ($this->functions->check_acl($_SESSION['phpgw_session']['session_lid'], 'edit_sambausers_attributes')) 138 //{ 137 139 //Verifica se o binario para criar as senhas do samba exite. 138 140 if (!is_file('/home/expressolivre/mkntpwd')) … … 162 164 $user_info['sambaPwdMustChange'] = '2147483647'; 163 165 } 164 }166 //} 165 167 } 166 168 … … 292 294 (!$this->functions->check_acl($manager_account_lid,'change_users_password')) && 293 295 (!$this->functions->check_acl($manager_account_lid,'edit_sambausers_attributes')) && 294 (!$this->functions->check_acl($manager_account_lid,'manipulate_corporative_information')) 296 (!$this->functions->check_acl($manager_account_lid,'manipulate_corporative_information')) && 297 (!$this->functions->check_acl($manager_account_lid,'edit_users_phonenumber')) 295 298 ) 296 299 { … … 340 343 $ldap_mod_replace['mail'] = $new_values['mail']; 341 344 $this->ldap_functions->replace_user2maillists($new_values['mail'], $old_values['mail']); 345 $this->ldap_functions->replace_mail_from_institutional_account($new_values['mail'], $old_values['mail']); 342 346 $this->db_functions->write_log("alterado mail do usuario",'',$dn,'',''); 343 347 } … … 354 358 } 355 359 */ 356 if (($diff['telephonenumber']) && ($old_values['telephonenumber'] != ''))357 {358 $ldap_mod_replace['telephonenumber'] = $new_values['telephonenumber'];359 $this->db_functions->write_log("alterado telephonenumber do usuario",'',$dn,'','');360 }361 360 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 362 361 // Passwd Expired - Com atributo … … 397 396 398 397 $this->db_functions->write_log("alterado password do usuario",'',$dn,'',''); 398 } 399 } 400 401 if ( ($this->functions->check_acl($_SESSION['phpgw_session']['session_lid'], 'edit_users')) || 402 ($this->functions->check_acl($_SESSION['phpgw_session']['session_lid'], 'edit_users_phonenumber')) ) 403 { 404 if (($diff['telephonenumber']) && ($old_values['telephonenumber'] != '')) 405 { 406 $ldap_mod_replace['telephonenumber'] = $new_values['telephonenumber']; 407 $this->db_functions->write_log("alterado telephonenumber do usuario",'',$dn,'',''); 399 408 } 400 409 } -
trunk/expressoAdmin1_2/index.php
r309 r317 35 35 $var = Array( 36 36 'lang_user_accounts' => lang('User Accounts'), 37 'lang_institutional_accounts'=> lang('Institutional Accounts'), 37 38 'lang_user_groups' => lang('User Groups'), 38 39 'lang_email_lists' => lang('Email Lists'), … … 47 48 $template->pfp('out','body'); 48 49 50 /* save lang and session */ 51 /* 52 if (!empty($GLOBALS['phpgw_info']['expresso'])) 53 { 54 $_SESSION['phpgw_info']['expresso'] = $GLOBALS['phpgw_info']['expresso']; 55 }*/ 56 57 if (empty($_SESSION['phpgw_info']['expressoAdmin']['lang'])) 58 { 59 $_SESSION['phpgw_info']['expressoAdmin']['user']['preferences']['common']['lang'] = $GLOBALS['phpgw_info']['user']['preferences']['common']['lang']; 60 $fn = './setup/phpgw_'.$_SESSION['phpgw_info']['expressoAdmin']['user']['preferences']['common']['lang'].'.lang'; 61 if (file_exists($fn)) 62 { 63 $fp = fopen($fn,'r'); 64 while ($data = fgets($fp,16000)) 65 { 66 list($message_id,$app_name,$null,$content) = explode("\t",substr($data,0,-1)); 67 $_SESSION['phpgw_info']['expressoAdmin']['lang'][$message_id] = $content; 68 } 69 fclose($fp); 70 } 71 } 72 49 73 $GLOBALS['phpgw']->common->phpgw_footer(); 50 74 ?> -
trunk/expressoAdmin1_2/js/jscode/connector.js
r18 r317 46 46 var div = document.getElementById('divProgressBar'); 47 47 48 if(! div) { 48 if(! div) { 49 try{ 49 50 div = document.createElement("DIV"); 50 51 div.style.visibility = "hidden"; … … 79 80 document.body.appendChild(div); 80 81 } 82 } 83 catch(e){} 81 84 } 82 85 } … … 340 343 var data = _thisObject.unserialize(oxmlhttp.responseText); 341 344 if(debug_controller) { 342 document.getElementById("debug_controller").innerHTML += oxmlhttp.responseText; 343 document.getElementById("debug_controller").innerHTML += "<br>-------------------------------------------------------------------------------------<br>"; 345 try{ 346 document.getElementById("debug_controller").innerHTML += oxmlhttp.responseText; 347 document.getElementById("debug_controller").innerHTML += "<br>-------------------------------------------------------------------------------------<br>"; 348 } 349 catch(e){} 344 350 } 345 351 handler(data); … … 421 427 { 422 428 div = document.getElementById('divProgressBar'); 423 div.style.visibility = 'hidden'; 424 this.isVisibleBar = false; 429 if ( (div) && (this.isVisibleBar) ) 430 { 431 div.style.visibility = 'hidden'; 432 this.isVisibleBar = false; 433 } 425 434 } 426 435 427 436 cConnector.prototype.showProgressBar = function() 428 437 { 429 div = document.getElementById('divProgressBar'); 430 div.style.visibility = 'visible'; 431 this.isVisibleBar = true; 438 div = document.getElementById('divProgressBar'); 439 if(div) 440 { 441 div.style.visibility = 'visible'; 442 this.isVisibleBar = true; 443 } 444 else 445 this.isVisibleBar = false; 432 446 } 433 447 -
trunk/expressoAdmin1_2/js/jscode/maillists.js
r309 r317 320 320 var finderTimeout = ''; 321 321 322 // Funcoes 322 // Funcoes 323 323 function optionFinderTimeout(obj) 324 324 { -
trunk/expressoAdmin1_2/js/jscode/managers.js
r309 r317 2 2 function copy_manager(manager) 3 3 { 4 var new_manager = prompt("Digite o login do novo gerente:",""); 5 4 if (!(new_manager = prompt("Digite o login do novo gerente:",""))) 5 { 6 return; 7 } 8 6 9 var handler_copy_manager = function(data) 7 10 { -
trunk/expressoAdmin1_2/templates/default/accounts_form.tpl
r309 r317 42 42 <tr bgcolor={row_on}> 43 43 <td>{lang_search_organization}:</td> 44 <td><input type="text" id="organization_search" autocomplete="off" size=20 onKeyUp="javascript:search_organization(this.value, 'ea_combo_org_info');" onBlur="javascript:sinc_combos_org(context.value); get_available_groups(context.value); get_available_maillists(context.value); get_available_sambadomains(context.value, '{type}')"></td>44 <td><input type="text" id="organization_search" {disabled} autocomplete="off" size=20 onKeyUp="javascript:search_organization(this.value, 'ea_combo_org_info');" onBlur="javascript:sinc_combos_org(context.value); get_available_groups(context.value); get_available_maillists(context.value); get_available_sambadomains(context.value, '{type}')"></td> 45 45 </tr> 46 46 … … 86 86 <tr bgcolor={row_off}> 87 87 <td width="15%">{lang_phone}:</td> 88 <td width="35%"><input type="text" name="telephonenumber" id="telephonenumber" value="{telephonenumber}" autocomplete="off" {disable d} size=20onkeyUp="FormataValor(event, this);"></input> </td>88 <td width="35%"><input type="text" name="telephonenumber" id="telephonenumber" value="{telephonenumber}" autocomplete="off" {disable_phonenumber} size=20 maxlength=13 onkeyUp="FormataValor(event, this);"></input> </td> 89 89 <td> </td> 90 90 <td rowspan="4" width="35%" style="display:{display_picture}"> -
trunk/expressoAdmin1_2/templates/default/index.tpl
r309 r317 1 1 <!-- BEGIN body --> 2 <table width="90%" border="0" cellspacing=" 4" cellpadding="0" align="center">2 <table width="90%" border="0" cellspacing="10" cellpadding="0" align="center"> 3 3 <tr> 4 4 <td width="1%" align="center"> … … 7 7 <td> 8 8 <a href="../index.php?menuaction=expressoAdmin1_2.uiaccounts.list_users">{lang_user_accounts}</a> 9 </td> 10 </tr> 11 <tr> 12 <td width="1%" align="center"> 13 <img HEIGHT='24' WIDTH='24' src='./templates/default/images/institutional_account.png'> 14 </td> 15 <td> 16 <a href="../index.php?menuaction=expressoAdmin1_2.institutional_accounts.index">{lang_institutional_accounts}</a> 9 17 </td> 10 18 </tr> -
trunk/expressoAdmin1_2/templates/default/managers_form.tpl
r309 r317 55 55 56 56 <!-- BEGIN ACL CONTROL --> 57 <!-- last acl: 2147483648 --> 57 58 <table id="ea_table_acl"> 58 59 <tr bgcolor="{color_font2}"> … … 101 102 <td><input type="checkbox" name="acl_manipulate_corporative_information" value="268435456" {acl_manipulate_corporative_information}></td> 102 103 </tr> 104 103 105 <tr bgcolor="{color_font2}" align='right'> 104 106 <td>{lang_view_user}:</td> 105 107 <td><input type="checkbox" name="acl_view_users" value="33554432" {acl_view_users}></td> 108 109 <td>{lang_add_institutional_accounts}:</td> 110 <td><input type="checkbox" name="acl_add_institutional_accounts" value="4294967296" {acl_add_institutional_accounts}></td> 106 111 </tr> 107 112 <tr bgcolor="{color_font1}" align='right'> 108 113 <td>{lang_edit_users_picture}:</td> 109 114 <td><input type="checkbox" name="acl_edit_users_picture" value="536870912" {acl_edit_users_picture}></td> 110 </tr> 111 <tr bgcolor="{color_font2}" align='right'> 115 116 <td>{lang_edit_institutional_accounts}:</td> 117 <td><input type="checkbox" name="acl_edit_institutional_accounts" value="8589934592" {acl_edit_institutional_accounts}></td> 118 </tr> 119 <tr bgcolor="{color_font2}" align='right'> 120 <td>{lang_edit_users_phonenumber}:</td> 121 <td><input type="checkbox" name="acl_edit_users_phonenumber" value="2147483648" {acl_edit_users_phonenumber}></td> 122 123 <td>{lang_remove_institutional_accounts}:</td> 124 <td><input type="checkbox" name="acl_remove_institutional_accounts" value="17179869184" {acl_remove_institutional_accounts}></td> 125 </tr> 126 127 <tr bgcolor="{color_font1}" align='right'> 112 128 <td>{lang_change_users_password}:</td> 113 129 <td><input type="checkbox" name="acl_change_users_password" value="128" {acl_change_users_password}></td> 114 130 </tr> 115 <tr bgcolor="{color_font 1}" align='right'>131 <tr bgcolor="{color_font2}" align='right'> 116 132 <td>{lang_change_users_quote}:</td> 117 133 <td><input type="checkbox" name="acl_change_users_quote" value="262144" {acl_change_users_quote}></td> 118 134 </tr> 119 <tr bgcolor="{color_font 2}" align='right'>135 <tr bgcolor="{color_font1}" align='right'> 120 136 <td>{lang_set_default_users_password}:</td> 121 137 <td><input type="checkbox" name="acl_set_user_default_password" value="524288" {acl_set_user_default_password}></td> 122 138 </tr> 123 <tr bgcolor="{color_font 1}" align='right'>139 <tr bgcolor="{color_font2}" align='right'> 124 140 <td>{lang_empty_user_inbox}:</td> 125 141 <td><input type="checkbox" name="acl_empty_user_inbox" value="134217728" {acl_empty_user_inbox}></td>
Note: See TracChangeset
for help on using the changeset viewer.