add_hook('create_user', array($this, 'create_user')); $this->add_hook('create_identity', array($this, 'create_identity')); } public function create_user($p) { // read prefs and add email address $this->read_squirrel_prefs($p['user']); if ($this->prefs['email_address']) $p['user_email'] = $this->prefs['email_address']; return $p; } public function create_identity($p) { // only execute on login if ($p['login'] && $this->prefs) { if ($this->prefs['full_name']) $p['record']['name'] = $this->prefs['full_name']; if ($this->prefs['email_address']) $p['record']['email'] = $this->prefs['email_address']; if ($this->prefs['signature']) $p['record']['signature'] = $this->prefs['signature']; // copy address book $rcmail = rcmail::get_instance(); $contacts = $rcmail->get_address_book(null, true); if ($contacts && count($this->abook)) { foreach ($this->abook as $rec) $contacts->insert($rec, true); } // mark identity as complete for following hooks $p['complete'] = true; } return $p; } private function read_squirrel_prefs($uname) { $this->load_config(); $rcmail = rcmail::get_instance(); if ($srcdir = $rcmail->config->get('squirrelmail_data_dir')) { $prefsfile = slashify($srcdir) . $uname . '.pref'; $abookfile = slashify($srcdir) . $uname . '.abook'; $sigfile = slashify($srcdir) . $uname . '.sig'; if (is_readable($prefsfile)) { $this->prefs = array(); foreach (file($prefsfile) as $line) { list($key, $value) = explode('=', $line); $this->prefs[$key] = utf8_encode(rtrim($value)); } // also read signature file if exists if (is_readable($sigfile)) { $this->prefs['signature'] = utf8_encode(file_get_contents($sigfile)); } // parse addres book file if (filesize($abookfile)) { foreach(file($abookfile) as $line) { list($rec['name'], $rec['firstname'], $rec['surname'], $rec['email']) = explode('|', utf8_encode(rtrim($line))); if ($rec['name'] && $rec['email']) $this->abook[] = $rec; } } } } } } ?>