global_filename = $address_book_global_filename; $this->sname = _("Global address book"); $this->open(true); } // Open the addressbook file and store the file pointer. // Use $file as the file to open, or the class' own // filename property. If $param is empty and file is // open, do nothing. function open($new = false) { $this->error = ''; // Return true is file is open and $new is unset if($this->filehandle && !$new) return true; // Check that new file exists if (! file_exists($this->global_filename) || ! is_readable($this->global_filename)) return $this->set_error($this->global_filename . ': ' . _("No such file or directory")); // Close old file, if any if ($this->filehandle) $this->close(); // Open file, read only. $fh = @fopen($this->global_filename, 'r'); $this->writeable = false; if(! $fh) return $this->set_error($this->global_filename . ': ' . _("Open failed")); $this->filehandle = &$fh; return true; } // Close the file and forget the filehandle function close() { @fclose($this->filehandle); $this->filehandle = 0; $this->global_filename = ''; $this->writable = false; } // ========================== Public ======================== // Search the file function search($expr) { // To be replaced by advanded search expression parsing if(is_array($expr)) return; // Make regexp from glob'ed expression // May want to quote other special characters like (, ), -, [, ], etc. $expr = str_replace('?', '.', $expr); $expr = str_replace('*', '.*', $expr); $res = array(); if(!$this->open()) return false; @rewind($this->filehandle); while ($row = @fgetcsv($this->filehandle, 2048, '|')) { $line = join(' ', $row); if (eregi($expr, $line)) { $res[] = array('nickname' => $row[0], 'name' => $row[1] . ' ' . $row[2], 'firstname' => $row[1], 'lastname' => $row[2], 'email' => $row[3], 'label' => $row[4], 'backend' => $this->bnum, 'source' => &$this->sname); } } return $res; } // Lookup alias function lookup($alias) { if (empty($alias)) return array(); $alias = strtolower($alias); $this->open(); @rewind($this->filehandle); while ($row = @fgetcsv($this->filehandle, 2048, '|')) { if (strtolower($row[0]) == $alias) { return array('nickname' => $row[0], 'name' => $row[1] . ' ' . $row[2], 'firstname' => $row[1], 'lastname' => $row[2], 'email' => $row[3], 'label' => $row[4], 'backend' => $this->bnum, 'source' => &$this->sname); } } return array(); } // List all addresses function list_addr() { $res = array(); $this->open(); @rewind($this->filehandle); while ($row = @fgetcsv($this->filehandle, 2048, '|')) { $res[] = array('nickname' => $row[0], 'name' => $row[1] . ' ' . $row[2], 'firstname' => $row[1], 'lastname' => $row[2], 'email' => $row[3], 'label' => $row[4], 'backend' => $this->bnum, 'source' => &$this->sname); } return $res; } // Add address function add($userdata) { $this->set_error(_("Can not modify global address book")); return false; } // Delete address function remove($alias) { $this->set_error(_("Can not modify global address book")); return false; } // Modify address function modify($alias, $userdata) { $this->set_error(_("Can not modify global address book")); return false; } } // End of class abook_local_file ?>