roundcubemail/program/include/rcmail.php
public function get_address_sources($writeable = false, $skip_hidden = false)
    {
        $abook_type   = (string) $this->config->get('address_book_type');
        $ldap_config  = (array) $this->config->get('ldap_public');
        $autocomplete = (array) $this->config->get('autocomplete_addressbooks');
        $list         = array();

        // We are using the DB address book or a plugin address book
        if (!empty($abook_type) && strtolower($abook_type) != 'ldap') {
            if (!isset($this->address_books['0'])) {
                $this->address_books['0'] = new rcube_contacts($this->db, $this->get_user_id());
            }

            $list['0'] = array(
                'id'       => '0',
                'name'     => $this->gettext('personaladrbook'),
                'groups'   => $this->address_books['0']->groups,
                'readonly' => $this->address_books['0']->readonly,
                'undelete' => $this->address_books['0']->undelete && $this->config->get('undo_timeout'),
                'autocomplete' => in_array('sql', $autocomplete),
            );
        }

        if (!empty($ldap_config)) {
            foreach ($ldap_config as $id => $prop) {
                // handle misconfiguration
                if (empty($prop) || !is_array($prop)) {
                    continue;
                }

                $list[$id] = array(
                    'id'       => $id,
                    'name'     => html::quote($prop['name']),
                    'groups'   => !empty($prop['groups']) || !empty($prop['group_filters']),
                    'readonly' => !$prop['writable'],
                    'hidden'   => $prop['hidden'],
                    'autocomplete' => in_array($id, $autocomplete)
                );
            }
        }

        $plugin = $this->plugins->exec_hook('addressbooks_list', array('sources' => $list));
        $list   = $plugin['sources'];

        foreach ($list as $idx => $item) {
            // register source for shutdown function
            if (!is_object($this->address_books[$item['id']])) {
                $this->address_books[$item['id']] = $item;
            }
            // remove from list if not writeable as requested
            if ($writeable && $item['readonly']) {
                unset($list[$idx]);
            }
            // remove from list if hidden as requested
            else if ($skip_hidden && $item['hidden']) {
                unset($list[$idx]);
            }
        }

        return $list;
    }
public function get_address_sources($writeable = false, $skip_hidden = false)
    {
        $abook_type   = (string) $this->config->get('address_book_type');
        $ldap_config  = (array) $this->config->get('ldap_public');
        $autocomplete = (array) $this->config->get('autocomplete_addressbooks');
        $list         = array();

        // We are using the DB address book or a plugin address book
        if (!empty($abook_type) && strtolower($abook_type) != 'ldap') {
            if (!isset($this->address_books['0'])) {
                $this->address_books['0'] = new rcube_contacts($this->db, $this->get_user_id());
            }

            $list['0'] = array(
                'id'       => '0',
                'name'     => $this->gettext('personaladrbook'),
                'groups'   => $this->address_books['0']->groups,
                'readonly' => $this->address_books['0']->readonly,
                'undelete' => $this->address_books['0']->undelete && $this->config->get('undo_timeout'),
                'autocomplete' => in_array('sql', $autocomplete),
            );
        }

        if (!empty($ldap_config)) {
            foreach ($ldap_config as $id => $prop) {
                // handle misconfiguration
                if (empty($prop) || !is_array($prop)) {
                    continue;
                }

                $list[$id] = array(
                    'id'       => $id,
                    'name'     => html::quote($prop['name']),
                    'groups'   => !empty($prop['groups']) || !empty($prop['group_filters']),
                    'readonly' => !$prop['writable'],
                    'hidden'   => $prop['hidden'],
                    'autocomplete' => in_array($id, $autocomplete)
                );
            }
        }

        $plugin = $this->plugins->exec_hook('addressbooks_list', array('sources' => $list));
        $list   = $plugin['sources'];

        foreach ($list as $idx => $item) {
            // register source for shutdown function
            if (!is_object($this->address_books[$item['id']])) {
                $this->address_books[$item['id']] = $item;
            }
            // remove from list if not writeable as requested
            if ($writeable && $item['readonly']) {
                unset($list[$idx]);
            }
            // remove from list if hidden as requested
            else if ($skip_hidden && $item['hidden']) {
                unset($list[$idx]);
            }
        }

        return $list;
    }
public function get_address_sources ( $ writeable = false , $ skip_hidden = false ) { $ abook_type = ( string ) $ this -> config -> get ( 'address_book_type' ) ; $ ldap_config = ( array ) $ this -> config -> get ( 'ldap_public' ) ; $ autocomplete = ( array ) $ this -> config -> get ( 'autocomplete_addressbooks' ) ; $ list = array ( ) ; // We are using the DB address book or a plugin address book if ( ! empty ( $ abook_type ) && strtolower ( $ abook_type ) != 'ldap' ) { if ( ! isset ( $ this -> address_books [ '0' ] ) ) { $ this -> address_books [ '0' ] = new rcube_contacts ( $ this -> db , $ this -> get_user_id ( ) ) ; } $ list [ '0' ] = array ( 'id' => '0' , 'name' => $ this -> gettext ( 'personaladrbook' ) , 'groups' => $ this -> address_books [ '0' ] -> groups , 'readonly' => $ this -> address_books [ '0' ] -> readonly , 'undelete' => $ this -> address_books [ '0' ] -> undelete && $ this -> config -> get ( 'undo_timeout' ) , 'autocomplete' => in_array ( 'sql' , $ autocomplete ) , ) ; } if ( ! empty ( $ ldap_config ) ) { foreach ( $ ldap_config as $ id => $ prop ) { // handle misconfiguration if ( empty ( $ prop ) || ! is_array ( $ prop ) ) { continue ; } $ list [ $ id ] = array ( 'id' => $ id , 'name' => html :: quote ( $ prop [ 'name' ] ) , 'groups' => ! empty ( $ prop [ 'groups' ] ) || ! empty ( $ prop [ 'group_filters' ] ) , 'readonly' => ! $ prop [ 'writable' ] , 'hidden' => $ prop [ 'hidden' ] , 'autocomplete' => in_array ( $ id , $ autocomplete ) ) ; } } $ plugin = $ this -> plugins -> exec_hook ( 'addressbooks_list' , array ( 'sources' => $ list ) ) ; $ list = $ plugin [ 'sources' ] ; foreach ( $ list as $ idx => $ item ) { // register source for shutdown function if ( ! is_object ( $ this -> address_books [ $ item [ 'id' ] ] ) ) { $ this -> address_books [ $ item [ 'id' ] ] = $ item ; } // remove from list if not writeable as requested if ( $ writeable && $ item [ 'readonly' ] ) { unset ( $ list [ $ idx ] ) ; } // remove from list if hidden as requested else if ( $ skip_hidden && $ item [ 'hidden' ] ) { unset ( $ list [ $ idx ] ) ; } } return $ list ; }
Return address books list

@param boolean $writeable   True if the address book needs to be writeable
@param boolean $skip_hidden True if the address book needs to be not hidden

@return array Address books array
Return address books list