thomascube
2007-08-15 6b603da6f16591b63f809ef967554d260bd0d891
LDAP improvements

7 files modified
42 ■■■■ changed files
CHANGELOG 7 ●●●●● patch | view | raw | blame | history
config/main.inc.php.dist 4 ●●● patch | view | raw | blame | history
program/include/main.inc 5 ●●●● patch | view | raw | blame | history
program/include/rcube_contacts.inc 7 ●●●●● patch | view | raw | blame | history
program/include/rcube_ldap.inc 13 ●●●● patch | view | raw | blame | history
program/js/app.js 1 ●●●● patch | view | raw | blame | history
program/steps/addressbook/copy.inc 5 ●●●● patch | view | raw | blame | history
CHANGELOG
@@ -1,6 +1,13 @@
CHANGELOG RoundCube Webmail
---------------------------
2007/08/15 (thomasb)
----------
- Applied patch for LDAP contacts listing by Glen Ogilvie
- Applied patch for more address fields in LDAP contacts (#1484402)
- Close LDAP connections on script shutdown
2007/08/13 (thomasb)
----------
- Add alternative for getallheaders() (fix #1484508)
config/main.inc.php.dist
@@ -202,8 +202,10 @@
 *  'search_fields' => array('mail', 'cn'),  // fields to search in
 *  'name_field'    => 'cn',    // this field represents the contact's name
 *  'email_field'   => 'mail',  // this field represents the contact's e-mail
 *  'surname_field' => 'sn',    // this field represents the contact's last name
 *  'firstname_field' => 'gn',  // this field represents the contact's first name
 *  'scope'         => 'sub',   // search mode: sub|base|list
 *  'filter'        => '',      // will be &'d with search field ex: (status=act)
 *  'filter'        => '',      // used for basic listing (if not empty) and will be &'d with search queries. ex: (status=act)
 *  'fuzzy_search'  => true);   // server allows wildcard search
 */
program/include/main.inc
@@ -299,7 +299,7 @@
 */
function rcmail_shutdown()
  {
  global $IMAP;
  global $IMAP, $CONTACTS;
  
  if (is_object($IMAP))
    {
@@ -307,6 +307,9 @@
    $IMAP->write_cache();
    }
    
  if (is_object($CONTACTS))
    $CONTACTS->close();
  // before closing the database connection, write session data
  session_write_close();
  }
program/include/rcube_contacts.inc
@@ -128,6 +128,13 @@
  
  
  /**
   * Close connection to source
   * Called on script shutdown
   */
  function close(){}
  /**
   * List the current set of contact records
   *
   * @param  array  List of cols to show
program/include/rcube_ldap.inc
@@ -58,7 +58,6 @@
      if (preg_match('/^(.+)_field$/', $prop, $matches))
        $this->fieldmap[$matches[1]] = $value;
    
    // $this->filter = "(dn=*)";
    $this->connect();
  }
@@ -142,7 +141,10 @@
  function close()
  {
    if ($this->conn)
    {
      @ldap_unbind($this->conn);
      $this->conn = null;
    }
  }
@@ -212,6 +214,13 @@
   */
  function list_records($cols=null, $subset=0)
  {
    // add general filter to query
    if (!empty($this->prop['filter']))
    {
      $filter = $this->prop['filter'];
      $this->set_search_set($filter);
    }
    // exec LDAP search if no result resource is stored
    if ($this->conn && !$this->ldap_result)
      $this->_exec_search();
@@ -442,4 +451,4 @@
}
?>
?>
program/js/app.js
@@ -2253,6 +2253,7 @@
      {
      page = 1;
      this.env.current_page = page;
      this.reset_qsearch();
      }
    this.select_folder(src, this.env.source);
program/steps/addressbook/copy.inc
@@ -36,8 +36,11 @@
    $OUTPUT->show_message('copyerror', 'error');
  else
    $OUTPUT->show_message('copysuccess', 'notice', array('nr' => count($success)));
  // close connection to second address directory
  $TARGET->close();
}
// send response
$OUTPUT->send();