** $Id$
**/
- $addressbook_php = true;
+ if (defined ('addressbook_php'))
+ return;
+ define ('addressbook_php', true);
+
+ // This is the path to the global site-wide addressbook.
+ // It looks and feels just like a user's .abook file
+ // If this is in the data directory, use "$data_dir/global.abook"
+ // If not, specify the path as though it was accessed from the
+ // src/ directory ("../global.abook" -> in main directory)
+ //
+ // If you don't want a global site-wide addressbook, comment these
+ // two lines out. (They are disabled by default.)
+ //
+ // The global addressbook is unmodifiable by anyone. You must actually
+ // use a shell script or whatnot to modify the contents.
+ //
+ //global $data_dir;
+ //$address_book_global_filename = "$data_dir/global.abook";
+
+
// Include backends here.
- include('../functions/abook_local_file.php');
- include('../functions/abook_ldap_server.php');
+ require_once('../functions/abook_local_file.php');
+ require_once('../functions/abook_ldap_server.php');
- // Un-comment if you're using database backend
- // include('../functions/abook_database.php');
+ // Use this if you wanna have a global address book
+ if (isset($address_book_global_filename))
+ include_once('../functions/abook_global_file.php');
+
+ // Only load database backend if database is configured
+ global $addrbook_dsn;
+ if(isset($addrbook_dsn))
+ include_once('../functions/abook_database.php');
// Create and initialize an addressbook object.
// Returns the created object
function addressbook_init($showerr = true, $onlylocal = false) {
- global $data_dir, $username, $ldap_server;
+ global $data_dir, $username, $ldap_server, $address_book_global_filename;
+ global $addrbook_dsn;
// Create a new addressbook object
$abook = new AddressBook;
- // Always add a local backend
-
- // Use *either* file-based *or* database addressbook. Remove
- // and insert comments to enable the one you want.
-
- // ------ BEGIN Initialize file-based personal addressbook ------
- $filename = sprintf('%s%s.abook', $data_dir, $username);
- $r = $abook->add_backend('local_file', Array('filename' => $filename,
- 'create' => true));
+ // Always add a local backend. We use *either* file-based *or* a
+ // database addressbook. If $addrbook_dsn is set, the database
+ // backend is used. If not, addressbooks are stores in files.
+ if(isset($addrbook_dsn) && !empty($addrbook_dsn)) {
+ // Database
+ $r = $abook->add_backend('database', Array('dsn' => $addrbook_dsn,
+ 'owner' => $username,
+ 'table' => 'address'));
+ if(!$r && $showerr) {
+ printf(_("Error initializing addressbook database."));
+ exit;
+ }
+ } else {
+ // File
+ $filename = sprintf('%s%s.abook', $data_dir, $username);
+ $r = $abook->add_backend('local_file', Array('filename' => $filename,
+ 'create' => true));
+ if(!$r && $showerr) {
+ printf(_("Error opening file %s"), $filename);
+ exit;
+ }
+
+ }
- if(!$r && $showerr) {
- printf(_("Error opening file %s"), $filename);
- exit;
+ // This would be for the global addressbook
+ if (isset($address_book_global_filename)) {
+ $r = $abook->add_backend('global_file');
+ if (!$r && $showerr) {
+ printf(_("Error initializing global addressbook."));
+ exit;
+ }
}
- // ------ END Initialize file-based personal addressbook ------
-
- // ------ BEGIN Initialize database-based personal addressbook ------
- // $r = $abook->add_backend('database', Array('dsn' => 'mysql://dbuser@host/dbname',
- // 'owner' => $username,
- // 'table' => 'address'));
- // if(!$r && $showerr) {
- // printf(_("Error initializing addressbook: %s"), $filename);
- // exit;
- // }
- // ------ END Initialize database-based personal addressbook ------
if($onlylocal)
return $abook;
// Load configured LDAP servers (if PHP has LDAP support)
- if(is_array($ldap_server) && function_exists('ldap_connect')) {
+ if(isset($ldap_server) && is_array($ldap_server) &&
+ function_exists('ldap_connect')) {
reset($ldap_server);
while(list($undef,$param) = each($ldap_server)) {
if(is_array($param)) {
$ret = array();
for($i = 1 ; $i <= $this->numbackends ; $i++) {
if(empty($type) || $type == $this->backends[$i]->btype) {
- array_push($ret, &$this->backends[$i]);
+ $ret[] = &$this->backends[$i];
}
}
return $ret;
$userdata['nickname'] = $userdata['email'];
}
- if(eregi('[ \:\|\#\"\!]', $userdata['nickname'])) {
+ if(eregi('[ \\:\\|\\#\\"\\!]', $userdata['nickname'])) {
$this->error = _("Nickname contain illegal characters");
return false;
}
}
-?>
+?>
\ No newline at end of file