- Timestamp:
- 03/27/13 09:38:13 (10 years ago)
- Location:
- trunk/prototype/modules/calendar
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/prototype/modules/calendar/interceptors/DBMapping.php
r8045 r8058 1634 1634 //TODO - Criar conceito separado para participantes externos e remover o criterio notExternal 1635 1635 public function findExternalPaticipants(&$uri, &$result, &$criteria, $original) { 1636 if (Config::me('uidNumber') && !isset($criteria['notExternal'])) { 1637 $newuri['concept'] = 'user'; 1638 $newuri['service'] = 'PostgreSQL'; 1639 1640 $newCriteria = $original['criteria']; 1641 $valid = true; 1642 1643 $newCriteria['filter'] = array('AND', $newCriteria['filter'], array('=', 'owner', Config::me('uidNumber'))); 1644 $externalUsers = Controller::find($newuri, $original['properties'] ? $original['properties'] : null, $newCriteria); 1645 1646 if (is_array($externalUsers)) { 1647 foreach ($externalUsers as $i => $v) 1648 $externalUsers[$i]['isExternal'] = '1'; 1649 } 1650 else 1651 $externalUsers = array(); 1652 1653 if (!is_array($result)) 1654 $result = array(); 1655 1656 return array_merge($result, $externalUsers); 1657 } 1636 if (Config::me('uidNumber') && !isset($criteria['notExternal'])) { 1637 $newuri['concept'] = 'user'; 1638 $newuri['service'] = 'PostgreSQL'; 1639 1640 $newCriteria = $original['criteria']; 1641 $valid = true; 1642 1643 $newCriteria['filter'] = array('AND', $newCriteria['filter'], array('=', 'owner', Config::me('uidNumber'))); 1644 $externalUsers = Controller::find($newuri, $original['properties'] ? $original['properties'] : null, $newCriteria ); 1645 1646 if (!is_array($result)) 1647 $result = array(); 1648 1649 if (is_array($externalUsers)) { 1650 foreach ($externalUsers as $i => $v) 1651 $externalUsers[$i]['isExternal'] = '1'; 1652 } 1653 else 1654 $externalUsers = array(); 1655 1656 $result = array_merge($result, $externalUsers); 1657 1658 1659 if(isset($original['criteria']['externalCatalogs']) && $original['criteria']['externalCatalogs'] == true) 1660 { 1661 $externalCatalogs = self::findExternalCatalogContacts($original['criteria']['filter'][2]); 1662 1663 foreach($externalCatalogs as $i => $v) 1664 { 1665 $exist = false; 1666 foreach($result as $vv) 1667 { 1668 if($v['mail'] == $vv['mail'] ) 1669 $exist = true; 1670 } 1671 if(!$exist) 1672 $result[] = $v; 1673 } 1674 } 1675 1676 1677 if(isset($original['criteria']['personalContacts']) && $original['criteria']['personalContacts'] == true) 1678 { 1679 $personalContacts = self::findPersonalContacts($original['criteria']['filter'][2]); 1680 1681 foreach($personalContacts as $i => $v) 1682 { 1683 $exist = false; 1684 foreach($result as $vv) 1685 { 1686 if($v['mail'] == $vv['mail'] ) 1687 $exist = true; 1688 } 1689 if(!$exist) 1690 $result[] = $v; 1691 } 1692 } 1693 1694 return $result ; 1695 } 1658 1696 } 1659 1697 … … 1774 1812 && ($timestamp >= ~PHP_INT_MAX); 1775 1813 } 1814 1815 static function findExternalCatalogContacts( $search ) 1816 { 1817 $result = array(); 1818 $external_srcs = array(); 1819 $external_mappings = array(); 1820 1821 include_once dirname(__DIR__) .'/../../../contactcenter/setup/external_catalogs.inc.php'; 1822 1823 $search = str_replace(' ', '*', $search) ; 1824 $search = '*' . $search . '*'; 1825 1826 foreach($external_srcs as $i => $v) 1827 { 1828 $con = ldap_connect($v['host']); 1829 1830 ldap_set_option( $con , LDAP_OPT_PROTOCOL_VERSION , 3 ); 1831 1832 if( isset( $v['acc'] ) && isset( $v['pw'] ) ) 1833 ldap_bind( $con, $v['acc'], $v['pw'] ); 1834 1835 $fields = array(); 1836 $fields[] = $external_mappings[$i]['contact.names_ordered'][0]; 1837 $fields[] = $external_mappings[$i]['contact.connection.typeof_connection.contact_connection_type_name']['email'][0]; 1838 1839 $ldapFilter = '(&(objectClass='.$v['obj'].')(|('.$fields[0].'='.$search.')('.$fields[1].'='.$search.')))'; 1840 $sr = ldap_search( $con, utf8_encode($v['dn']) , $ldapFilter , $fields ); 1841 if($sr) 1842 { 1843 $search = ldap_get_entries($con, $sr); 1844 1845 for ($j = 0; $j < $search["count"]; ++$j) { 1846 $tmp = array(); 1847 $tmp['name'] = $search[$j][$fields[0]][0]; 1848 $tmp['mail'] = $search[$j][$fields[1]][0]; 1849 $tmp['isExternal'] = '1'; 1850 1851 $result[] = $tmp; 1852 } 1853 } 1854 } 1855 return $result; 1856 } 1857 1858 static function findPersonalContacts($search_for) 1859 { 1860 1861 $query = 'select' 1862 1863 . ' C.id_connection,' 1864 . ' A.id_contact,' 1865 . ' A.names_ordered,' 1866 . ' A.alias,' 1867 . ' A.birthdate,' 1868 . ' A.sex,' 1869 . ' A.pgp_key,' 1870 . ' A.notes,' 1871 . ' A.web_page,' 1872 . ' A.corporate_name,' 1873 . ' A.job_title,' 1874 . ' A.department,' 1875 . ' C.connection_name,' 1876 . ' C.connection_value,' 1877 . ' B.id_typeof_contact_connection,' 1878 . ' phpgw_cc_contact_addrs.id_typeof_contact_address,' 1879 . ' phpgw_cc_addresses.address1,' 1880 . ' phpgw_cc_addresses.address2,' 1881 . ' phpgw_cc_addresses.complement,' 1882 . ' phpgw_cc_addresses.postal_code,' 1883 . ' phpgw_cc_city.city_name,' 1884 . ' phpgw_cc_state.state_name,' 1885 . ' phpgw_cc_addresses.id_country' 1886 ; 1887 1888 $query .= ' from' 1889 . ' phpgw_cc_contact A' 1890 . ' inner join phpgw_cc_contact_conns B on ( A.id_contact = B.id_contact )' 1891 . ' inner join phpgw_cc_connections C on ( B.id_connection = C.id_connection )' 1892 . ' left join phpgw_cc_contact_addrs on ( A.id_contact = phpgw_cc_contact_addrs.id_contact )' 1893 . ' left join phpgw_cc_addresses on ( phpgw_cc_contact_addrs.id_address = phpgw_cc_addresses.id_address )' 1894 . ' left join phpgw_cc_city on ( phpgw_cc_addresses.id_city = phpgw_cc_city.id_city )' 1895 . ' left join phpgw_cc_state on ( phpgw_cc_addresses.id_state = phpgw_cc_state.id_state)' 1896 ; 1897 1898 $query .= ' where ' 1899 . 'A.id_owner=' . Config::me('uidNumber') 1900 . ' and lower(translate(names_ordered, \'áàâãäéèêëíìïóòôõöúùûüÁÀÂÃÄÉÈÊËÍÌÏÓÒÔÕÖÚÙÛÜçÇñÑ\',\'aaaaaeeeeiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcCnN\'))' 1901 . ' LIKE lower(translate(\'%' . $search_for . '%\', \'áàâãäéèêëíìïóòôõöúùûüÁÀÂÃÄÉÈÊËÍÌÏÓÒÔÕÖÚÙÛÜçÇñÑ\',\'aaaaaeeeeiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcCnN\'))'; 1902 1903 //Se não existir parametro na busca, limita os usuarios no resultado da pesquisa. 1904 if(!$search_for){ 1905 $query .= 'LIMIT 11'; 1906 } 1907 1908 $r = Controller::service('PostgreSQL')->execResultSql($query); 1909 1910 1911 $all_contacts = array(); 1912 foreach( $r as $i => $object ) 1913 { 1914 if ( ! array_key_exists( $object[ 'id_contact' ], $all_contacts ) ) 1915 $all_contacts[ $object[ 'id_contact' ] ] = array( 1916 'connection_value' => '', 1917 'telephonenumber' => '', 1918 'mobile' => '', 1919 'cn' => '', 1920 'id_contact' => '', 1921 'id_connection' => '', 1922 'alias' => '', 1923 'birthdate' => '', 1924 'sex' => '', 1925 'pgp_key' => '', 1926 'notes' => '', 1927 'web_page' => '', 1928 'corporate_name' => '', 1929 'job_title' => '', 1930 'department' => '', 1931 'mail' => '', 1932 'aternative-mail' => '', 1933 'business-phone' => '', 1934 'business-address' => '', 1935 'business-complement' => '', 1936 'business-postal_code' => '', 1937 'business-city_name' => '', 1938 'business-state_name' => '', 1939 'business-id_country' => '', 1940 'business-fax' => '', 1941 'business-pager' => '', 1942 'business-mobile' => '', 1943 'business-address-2' => '', 1944 'home-phone' => '', 1945 'home-address' => '', 1946 'home-complement' => '', 1947 'home-postal_code' => '', 1948 'home-city_name' => '', 1949 'home-state_name' => '', 1950 'home-fax' => '', 1951 'home-pager' => '', 1952 'home-address-2' => '' 1953 1954 1955 ); 1956 1957 switch( $object[ 'id_typeof_contact_connection' ] ) 1958 { 1959 case 1 : 1960 $all_contacts[ $object[ 'id_contact' ] ][ 'connection_value' ] = $object[ 'connection_value' ]; 1961 switch ( strtolower( $object[ 'connection_name' ] ) ) 1962 { 1963 case 'alternativo' : 1964 $all_contacts[ $object[ 'id_contact' ] ][ 'alternative-mail' ] = $object[ 'connection_value' ]; 1965 break; 1966 case 'principal' : 1967 $all_contacts[ $object[ 'id_contact' ] ][ 'mail' ] = $object[ 'connection_value' ]; 1968 break; 1969 } 1970 break; 1971 case 2 : 1972 $all_contacts[ $object[ 'id_contact' ] ][ 'telephonenumber' ] = $object[ 'connection_value' ]; 1973 switch ( strtolower( $object[ 'connection_name' ] ) ) 1974 { 1975 case 'casa' : 1976 $all_contacts[ $object[ 'id_contact' ] ][ 'home-phone' ] = $object[ 'connection_value' ]; 1977 break; 1978 case 'celular' : 1979 $all_contacts[ $object[ 'id_contact' ] ][ 'mobile' ] = $object[ 'connection_value' ]; 1980 break; 1981 case 'trabalho' : 1982 $all_contacts[ $object[ 'id_contact' ] ][ 'business-phone' ] = $object[ 'connection_value' ]; 1983 break; 1984 case 'fax' : 1985 $all_contacts[ $object[ 'id_contact' ] ][ 'home-fax' ] = $object[ 'connection_value' ]; 1986 break; 1987 case 'pager' : 1988 $all_contacts[ $object[ 'id_contact' ] ][ 'home-pager' ] = $object[ 'connection_value' ]; 1989 break; 1990 case 'celular corporativo' : 1991 $all_contacts[ $object[ 'id_contact' ] ][ 'business-mobile' ] = $object[ 'connection_value' ]; 1992 break; 1993 case 'pager corporativo' : 1994 $all_contacts[ $object[ 'id_contact' ] ][ 'business-pager' ] = $object[ 'connection_value' ]; 1995 break; 1996 case 'fax corporativo' : 1997 $all_contacts[ $object[ 'id_contact' ] ][ 'business-fax' ] = $object[ 'connection_value' ]; 1998 break; 1999 } 2000 break; 2001 } 2002 2003 $all_contacts[ $object[ 'id_contact' ] ][ 'cn' ] = utf8_encode($object[ 'names_ordered' ]); 2004 $all_contacts[ $object[ 'id_contact' ] ][ 'id_contact' ] = $object[ 'id_contact' ]; 2005 $all_contacts[ $object[ 'id_contact' ] ][ 'id_connection' ] = $object[ 'id_connection' ]; 2006 $all_contacts[ $object[ 'id_contact' ] ][ 'alias' ] = $object[ 'alias' ]; 2007 $all_contacts[ $object[ 'id_contact' ] ][ 'birthdate' ] = $object[ 'birthdate' ]; 2008 $all_contacts[ $object[ 'id_contact' ] ][ 'sex' ] = $object[ 'sex' ]; 2009 $all_contacts[ $object[ 'id_contact' ] ][ 'pgp_key' ] = $object[ 'pgp_key' ]; 2010 $all_contacts[ $object[ 'id_contact' ] ][ 'notes' ] = $object[ 'notes' ]; 2011 $all_contacts[ $object[ 'id_contact' ] ][ 'web_page' ] = $object[ 'web_page' ]; 2012 $all_contacts[ $object[ 'id_contact' ] ][ 'corporate_name' ]= $object[ 'corporate_name' ]; 2013 $all_contacts[ $object[ 'id_contact' ] ][ 'job_title' ] = $object[ 'job_title' ]; 2014 $all_contacts[ $object[ 'id_contact' ] ][ 'department' ] = $object[ 'department' ]; 2015 2016 switch( $object[ 'id_typeof_contact_address' ] ) 2017 { 2018 case 1 : 2019 $all_contacts[ $object[ 'id_contact' ] ][ 'business-address' ] = $object[ 'address1' ]; 2020 $all_contacts[ $object[ 'id_contact' ] ][ 'business-address-2' ] = $object[ 'address2' ]; 2021 $all_contacts[ $object[ 'id_contact' ] ][ 'business-complement' ] = $object[ 'complement' ]; 2022 $all_contacts[ $object[ 'id_contact' ] ][ 'business-postal_code' ] = $object[ 'postal_code' ]; 2023 $all_contacts[ $object[ 'id_contact' ] ][ 'business-city_name' ] = $object[ 'city_name' ]; 2024 $all_contacts[ $object[ 'id_contact' ] ][ 'business-state_name' ] = $object[ 'state_name' ]; 2025 $all_contacts[ $object[ 'id_contact' ] ][ 'business-id_country' ] = $object[ 'id_country' ]; 2026 break; 2027 case 2 : 2028 $all_contacts[ $object[ 'id_contact' ] ][ 'home-address' ] = $object[ 'address1' ]; 2029 $all_contacts[ $object[ 'id_contact' ] ][ 'home-address-2' ] = $object[ 'address2' ]; 2030 $all_contacts[ $object[ 'id_contact' ] ][ 'home-complement' ] = $object[ 'complement' ]; 2031 $all_contacts[ $object[ 'id_contact' ] ][ 'home-postal_code' ] = $object[ 'postal_code' ]; 2032 $all_contacts[ $object[ 'id_contact' ] ][ 'home-city_name' ] = $object[ 'city_name' ]; 2033 $all_contacts[ $object[ 'id_contact' ] ][ 'home-state_name' ] = $object[ 'state_name' ]; 2034 $all_contacts[ $object[ 'id_contact' ] ][ 'home-id_country' ] = $object[ 'id_country' ]; 2035 break; 2036 } 2037 } 2038 $all = array_values($all_contacts); 2039 2040 $result = array(); 2041 foreach($all as $i => $v) 2042 { 2043 if(!$v['mail']) continue; 2044 2045 $tmp = array(); 2046 $tmp['mail'] = $v['mail']; 2047 $tmp['name'] = $v['cn']; 2048 $tmp['isExternal'] = '1'; 2049 $result[] = $tmp; 2050 } 2051 2052 return $result; 2053 2054 } 1776 2055 } 1777 2056 -
trunk/prototype/modules/calendar/js/helpers.js
r8052 r8058 1583 1583 blkAddAtendee.find('.add-attendee-search input').keydown(function(event) { 1584 1584 1585 if(event.keyCode == '13' || typeof(event.keyCode) == 'undefined') { 1586 var result = DataLayer.get('user', ["*", "name", $(this).val()], true);1585 if(event.keyCode == '13' || typeof(event.keyCode) == 'undefined') { 1586 var result = DataLayer.get('user', { 'filter' : ["*", "name", $(this).val()], criteria: { 'externalCatalogs' : true , 'personalContacts' : true } }, true); 1587 1587 1588 1588 /** … … 1602 1602 if ($(event.target).is('input')) { 1603 1603 old_item = $(event.target).parents('li'); 1604 1605 var userId = old_item.find('.id').html(); 1606 1607 if(userId == '') 1608 { 1609 var userId = DataLayer.put('user', { 1610 name: old_item.find('.name').html(), 1611 mail: old_item.find('.mail').html(), 1612 isExternal: '1' 1613 }); 1614 } 1615 1604 1616 newAttendeeId = DataLayer.put('participant', { 1605 user: old_item.find('.id').html(),1617 user: userId, 1606 1618 isExternal: old_item.find('.isExternal').html() 1607 1619 });
Note: See TracChangeset
for help on using the changeset viewer.