diff --git a/phpgwapi/inc/class.setup.inc.php b/phpgwapi/inc/class.setup.inc.php
index ca9e5fa0a3..2cfde0e90a 100644
--- a/phpgwapi/inc/class.setup.inc.php
+++ b/phpgwapi/inc/class.setup.inc.php
@@ -814,5 +814,100 @@
}
return 'phpgw_hooks';
}
+
+ function setup_account_object()
+ {
+ if (!is_object($GLOBALS['phpgw']->accounts))
+ {
+ if (!is_object($this->db))
+ {
+ $this->loaddb();
+ }
+ /* Load up some configured values */
+ $this->db->query("SELECT config_name,config_value FROM phpgw_config ".
+ "WHERE config_name LIKE 'ldap%' OR config_name LIKE 'account_%'",__LINE__,__FILE__);
+ while ($this->db->next_record())
+ {
+ $GLOBALS['phpgw_info']['server'][$this->db->f('config_name')] = $this->db->f('config_value');
+ }
+ if (!is_object($GLOBALS['phpgw']))
+ {
+ $GLOBALS['phpgw'] = CreateObject('phpgwapi.phpgw');
+ }
+ copyobj($this->db,$GLOBALS['phpgw']->db);
+ $GLOBALS['phpgw']->common = CreateObject('phpgwapi.common');
+ $GLOBALS['phpgw']->accounts = CreateObject('phpgwapi.accounts');
+
+ if(($GLOBALS['phpgw_info']['server']['account_repository'] == 'ldap') &&
+ !$GLOBALS['phpgw']->accounts->ds)
+ {
+ printf("Error: Error connecting to LDAP server %s!
",$GLOBALS['phpgw_info']['server']['ldap_host']);
+ exit;
+ }
+ }
+ }
+
+ /*!
+ @function add_account
+ @abstract add an user account or a user group
+ @param username string alphanumerical username or groupname (account_lid)
+ @param first, last string first / last name
+ @param $passwd string cleartext pw
+ @param $group string/boolean Groupname for users primary group or False for a group, default 'Default'
+ @param $changepw boolean user has right to change pw, default False
+ @returns the numerical user-id
+ @note if the $username already exists, only the id is returned, no new user / group gets created
+ */
+ function add_account($username,$first,$last,$passwd,$group='default',$changepw=False)
+ {
+ $this->setup_account_object();
+
+ $groupid = $group ? $GLOBALS['phpgw']->accounts->name2id($group) : False;
+
+ if (!($accountid = $GLOBALS['phpgw']->accounts->name2id($username)))
+ {
+ $accountid = $accountid ? $acountid : $GLOBALS['phpgw']->accounts->create(array(
+ 'account_type' => $group ? 'u' : 'g',
+ 'account_lid' => $username,
+ 'account_passwd' => $passwd,
+ 'account_firstname' => $first,
+ 'account_lastname' => $last,
+ 'account_status' => 'A',
+ 'account_primary_group' => $groupid,
+ 'account_expires' => -1
+ ));
+ }
+ if ($groupid)
+ {
+ $this->add_acl('phpgw_group',$groupid,$accountid);
+ }
+ $this->add_acl('preferences','changepassword',$accountid,(int) $changepw);
+
+ return $accountid;
+ }
+
+ /*!
+ @function add_acl
+ @abstract Add ACL rights
+ @param $app string/array with app-names
+ @param $locations string eg. run
+ @param $account int/string accountid or account_lid
+ @param $rights int rights to set, default 1
+ */
+ function add_acl($apps,$location,$account,$rights=1)
+ {
+ if (!is_int($account))
+ {
+ $this->setup_account_object();
+ $account = $GLOBALS['phpgw']->accounts->name2id($account);
+ }
+ if (!is_object($this->db)) $this->loaddb();
+
+ if (!is_array($apps)) $apps = array($apps);
+ foreach($apps as $app)
+ {
+ $this->db->query("INSERT INTO phpgw_acl(acl_appname,acl_location,acl_account,acl_rights) VALUES('$app','$location',$account,$rights)");
+ }
+ }
}
?>