changed the following table-names:

- phpgw_accounts --> egw_accounts
- phpgw_acl --> egw_acl
- phpgw_log(_msg) --> egw_log(_msg)
- phpgw_config --> egw_config
- phpgw_applications --> egw_applications
This requires code-changes in many apps. Quite often I was able to replace the db access, with calls to the appropreate classes.
This commit is contained in:
Ralf Becker 2005-11-02 11:45:52 +00:00
parent 0db87ad750
commit c85d34c0fe
52 changed files with 1224 additions and 1312 deletions

View File

@ -38,7 +38,7 @@ else
if (($all_accounts = $GLOBALS['egw']->accounts->search(array('type'=>'both'))))
{
$all_accounts = array_keys($all_accounts);
$GLOBALS['egw']->db->query("DELETE FROM phpgw_acl WHERE acl_account NOT IN (".implode(',',$all_accounts).") OR acl_appname='phpgw_group' AND acl_location NOT IN ('".implode("','",$all_accounts)."')",__LINE__,__FILE__);
$GLOBALS['egw']->db->query("DELETE FROM egw_acl WHERE acl_account NOT IN (".implode(',',$all_accounts).") OR acl_appname='phpgw_group' AND acl_location NOT IN ('".implode("','",$all_accounts)."')",__LINE__,__FILE__);
$deleted = $GLOBALS['egw']->db->affected_rows();
}
echo '<p align="center">'.lang('%1 ACL records of not (longer) existing accounts deleted.',$deleted)."</p>\n";

View File

@ -85,14 +85,6 @@
$account_id = (int)$_POST['account_id'];
$GLOBALS['egw']->db->lock(
Array(
'phpgw_accounts',
'phpgw_app_sessions',
'phpgw_acl'
)
);
$old_group_list = $GLOBALS['egw']->acl->get_ids_for_location($account_id,1,'phpgw_group');
@reset($old_group_list);
@ -115,8 +107,6 @@
$GLOBALS['egw']->accounts->delete($account_id);
$GLOBALS['egw']->db->unlock();
Header('Location: '.$GLOBALS['egw']->link('/index.php','menuaction=admin.uiaccounts.list_groups'));
$GLOBALS['egw']->common->egw_exit();
}
@ -141,20 +131,13 @@
$singleHookValues = $GLOBALS['hook_values']+array('location' => 'deleteaccount');
$db = clone($GLOBALS['egw']->db);
$db->query('SELECT app_name,app_order FROM phpgw_applications WHERE app_enabled!=0 ORDER BY app_order',__LINE__,__FILE__);
if($db->num_rows())
foreach($GLOBALS['egw_info']['apps'] as $appname => $data)
{
while($db->next_record())
{
$appname = $db->f('app_name');
if($appname <> 'admin' || $appname <> 'preferences')
if($appname != 'admin' && $appname != 'preferences')
{
$GLOBALS['egw']->hooks->single($singleHookValues,$appname);
}
}
}
$GLOBALS['egw']->hooks->single('deleteaccount','preferences');
$GLOBALS['egw']->hooks->single('deleteaccount','admin');
@ -213,19 +196,6 @@
$this->validate_group($group_info);
$GLOBALS['egw']->db->lock(
Array(
'phpgw_accounts',
'phpgw_nextid',
'phpgw_preferences',
'phpgw_sessions',
'phpgw_acl',
'phpgw_applications',
'phpgw_app_sessions',
'phpgw_hooks'
)
);
$group =& CreateObject('phpgwapi.accounts',$group_info['account_id'],'g');
$group->acct_type = 'g';
$account_info = array(
@ -291,8 +261,6 @@
{
$cd = 37;
}
$GLOBALS['egw']->db->unlock();
}
ExecMethod('admin.uiaccounts.list_groups');
@ -430,20 +398,6 @@
$this->validate_group($group_info);
// Lock tables
$GLOBALS['egw']->db->lock(
Array(
'phpgw_accounts',
'phpgw_preferences',
'phpgw_config',
'phpgw_applications',
'phpgw_hooks',
'phpgw_sessions',
'phpgw_acl',
'phpgw_app_sessions'
)
);
$group =& CreateObject('phpgwapi.accounts',$group_info['account_id'],'g');
$old_group_info = $group->read_repository();
@ -547,8 +501,6 @@
// for LDAP to update the memberuid attribute
$group->save_repository();
$GLOBALS['egw']->db->unlock();
ExecMethod('admin.uiaccounts.list_groups');
return False;
}

View File

@ -27,19 +27,6 @@
$userData['account_email'] = $userData['email'];
}
$GLOBALS['egw']->db->lock(
Array(
'phpgw_accounts',
'phpgw_nextid',
'phpgw_preferences',
'phpgw_sessions',
'phpgw_acl',
'phpgw_applications',
'phpgw_app_sessions',
'phpgw_hooks'
)
);
$GLOBALS['egw']->accounts->create($userData);
$userData['account_id'] = $GLOBALS['egw']->accounts->name2id($userData['account_lid']);
@ -104,8 +91,6 @@
$apps->account_apps = array(array());
$apps_after = array(array());
$GLOBALS['egw']->db->unlock();
return $userData['account_id'];
}
}

View File

@ -14,6 +14,8 @@
class soapplications
{
var $db;
var $applications_table = 'egw_applications';
var $hooks_table = 'phpgw_hooks';
function soapplications()
{
@ -22,7 +24,7 @@
function read($app_name)
{
$sql = "SELECT * FROM phpgw_applications WHERE app_name='$app_name'";
$sql = "SELECT * FROM $this->applications_table WHERE app_name='$app_name'";
$this->db->query($sql,__LINE__,__FILE__);
$this->db->next_record();
@ -38,7 +40,7 @@
function get_list()
{
$this->db->query('SELECT * FROM phpgw_applications WHERE app_enabled!=3',__LINE__,__FILE__);
$this->db->query("SELECT * FROM $this->applications_table WHERE app_enabled != 3",__LINE__,__FILE__);
if($this->db->num_rows())
{
while ($this->db->next_record())
@ -64,11 +66,11 @@
/* Yes, the sequence should work, but after a mass import in setup (new install)
it does not work on pg
*/
$sql = 'SELECT MAX(app_id) from phpgw_applications';
$sql = "SELECT MAX(app_id) from $this->applications_table";
$this->db->query($sql,__LINE__,__FILE__);
$this->db->next_record();
$app_id = $this->db->f(0) + 1;
$sql = 'INSERT INTO phpgw_applications (app_id,app_name,app_enabled,app_order) VALUES('
$sql = "INSERT INTO $this->applications_table (app_id,app_name,app_enabled,app_order) VALUES("
. $app_id . ",'" . addslashes($data['n_app_name']) . "','"
. $data['n_app_status'] . "','" . $data['app_order'] . "')";
@ -78,7 +80,7 @@
function save($data)
{
$sql = "UPDATE phpgw_applications SET "
$sql = "UPDATE $this->applications_table SET "
. "app_enabled='" . $data['n_app_status'] . "',app_order='" . $data['app_order']
. "' WHERE app_name='" . $data['app_name'] . "'";
@ -88,7 +90,7 @@
function exists($app_name)
{
$this->db->query("SELECT COUNT(app_name) FROM phpgw_applications WHERE app_name='" . addslashes($app_name) . "'",__LINE__,__FILE__);
$this->db->query("SELECT COUNT(app_name) FROM $this->applications_table WHERE app_name='" . addslashes($app_name) . "'",__LINE__,__FILE__);
$this->db->next_record();
if ($this->db->f(0) != 0)
@ -100,19 +102,19 @@
function app_order()
{
$this->db->query('SELECT (MAX(app_order)+1) FROM phpgw_applications',__LINE__,__FILE__);
$this->db->query("SELECT MAX(app_order)+1 FROM $this->applications_table",__LINE__,__FILE__);
$this->db->next_record();
return $this->db->f(0);
}
function delete($app_name)
{
$this->db->query("DELETE FROM phpgw_applications WHERE app_name='$app_name'",__LINE__,__FILE__);
$this->db->query("DELETE FROM $this->applications_table WHERE app_name='$app_name'",__LINE__,__FILE__);
}
function register_hook($app)
{
$this->db->query("INSERT INTO phpgw_hooks(hook_appname,hook_location,hook_filename) "
$this->db->query("INSERT INTO $this->hooks_table (hook_appname,hook_location,hook_filename) "
. "VALUES ('".$app['app_name']."','".$app['hook']."','hook_".$app['hook'].".inc.php')",__LINE__,__FILE__
);
}

View File

@ -156,11 +156,11 @@
#print "<br>DN: $accountDN<br>";
ldap_mod_replace ($ldap, $accountDN, $newData);
// also update the account_email field in phpgw_accounts
// also update the account_email field in egw_accounts
// when using sql account storage
if($GLOBALS['egw_info']['server']['account_repository'] == 'sql')
{
$this->db->update('phpgw_accounts',array(
$this->db->update('egw_accounts',array(
'account_email' => $_accountData["mail"]
),
array(

View File

@ -17,6 +17,9 @@
class solog
{
var $db;
var $accounts_table = 'egw_accounts';
var $log_table = 'egw_log';
var $msg_table = 'egw_log_msg';
var $owner;
var $error_cols = '';
var $error_cols_e = '';
@ -38,16 +41,16 @@
{
$this->error_cols = array();
/* fields from phpgw_log table */
$clist = $this->db->metadata('phpgw_log');
/* fields from log table */
$clist = $this->db->metadata($this->log_table);
for ($i=0; $i<count($clist); $i++)
{
$name = $clist[$i]['name'];
$this->error_cols[$name] = array();
}
/* fields from phpgw_log_msg table */
$clist = $this->db->metadata('phpgw_log_msg');
/* fields from msg table */
$clist = $this->db->metadata($this->msg_table);
for ($i=0; $i<count($clist); $i++)
{
$name = $clist[$i]['name'];
@ -64,8 +67,8 @@
/* Get Columns for Errors */
$this->error_cols_e = $this->get_error_cols();
/* Enhance with Columns for phpgw_accounts */
$clist = $this->db->metadata('phpgw_accounts');
/* Enhance with Columns from accounts-table */
$clist = $this->db->metadata($this->accounts_table);
for ($i=0; $i<count($clist); $i++)
{
$name = $clist[$i]['name'];
@ -81,21 +84,21 @@
/* Fixed From */
if (!isset($parms['from']))
{
$parms['from'] = array('phpgw_accounts');
$parms['from'] = array($this->accounts_table);
}
else
{
$parms['from'][] = 'phpgw_accounts';
$parms['from'][] = $this->accounts_table;
}
/* Fix Where */
if (!isset($parms['where']))
{
$parms['where'] = array('phpgw_log.log_user = phpgw_accounts.account_id');
$parms['where'] = array("$this->log_table.log_user = $this->accounts_table.account_id");
}
else
{
$parms['where'][] = 'phpgw_log.log_user = phpgw_accounts.account_id';
$parms['where'][] = "$this->log_table.log_user = $this->accounts_table.account_id";
}
/* Fix Default Fields */
@ -110,9 +113,9 @@
function get_no_errors()
{
/* Get max ErrorId */
$this->db->query("select count(*) as max_id from phpgw_log, phpgw_log_msg WHERE phpgw_log.log_id = phpgw_log_msg.log_msg_log_id",__LINE__,__FILE__);
$this->db->next_record();
return $this->db->f('max_id');
$this->db->query("select count(*) as max_id from $this->log_table, $this->msg_table WHERE $this->log_table.log_id = $this->msg_table.log_msg_log_id",__LINE__,__FILE__);
return $this->db->next_record() ? $this->db->f('max_id') : 0;
}
function get_error($parms)
@ -124,24 +127,24 @@
$fields = $parms['fields'];
/* Build From_Clause */
$from_clause = 'FROM phpgw_log, phpgw_log_msg ';
$from_clause = "FROM $this->log_table , $this->msg_table ";
if (isset($from))
{
$from[] = 'phpgw_log';
$from[] = 'phpgw_log_msg';
$from[] = $this->log_table;
$from[] = $this->msg_table;
$from_clause = 'FROM '.implode(', ' , $from).' ';
}
/* Build Where_Clause */
$where_clause = 'WHERE phpgw_log.log_id = phpgw_log_msg.log_msg_log_id ';
$where_clause = "WHERE $this->log_table.log_id = $this->msg_table.log_msg_log_id ";
if (isset($where))
{
$where[] = 'phpgw_log.log_id = phpgw_log_msg.log_msg_log_id';
$where[] = "$this->log_table.log_id = $this->msg_table.log_msg_log_id";
$where_clause = 'WHERE ' . implode(' AND ',$where) . ' ';
}
/* Build Order_By_Clause */
$orderby_clause = 'ORDER BY phpgw_log.log_id, phpgw_log_msg.log_msg_seq_no ';
$orderby_clause = "ORDER BY $this->log_table.log_id, $this->msg_table.log_msg_seq_no ";
if (isset($orderby))
{
$orderby_clause = 'ORDER BY ' . implode(', ',$orderby);
@ -155,20 +158,11 @@
$rows = array();
/* Do Select */
@reset($fields);
while(list($key,$val) = @each($fields))
{
$fkeys .= $key . ',';
}
$fkeys = substr($fkeys,0,-1);
$select = 'SELECT ' . $fkeys . ' ' . $from_clause . $where_clause . $orderby_clause;
$select = 'SELECT ' . implode(',',array_keys($fields)) . ' ' . $from_clause . $where_clause . $orderby_clause;
$this->db->query($select,__LINE__,__FILE__);
while($this->db->next_record())
{
reset($fields);
while(list($fname,$fopt) = each($fields))
foreach($fields as $fname => $fopt)
{
$this_row[$fname]['value'] = $this->db->f($fname);
}

View File

@ -26,7 +26,7 @@ if($GLOBALS['egw_info']['flags']['currentapp'] != 'home' &&
{
$_returnhtml = array();
$app_name = $GLOBALS['egw_info']['flags']['currentapp'];
$GLOBALS['egw']->db->query("SELECT app_name,app_version FROM phpgw_applications WHERE app_name='$app_name' OR app_name='phpgwapi'",__LINE__,__FILE__);
$GLOBALS['egw']->db->query("SELECT app_name,app_version FROM egw_applications WHERE app_name='$app_name' OR app_name='phpgwapi'",__LINE__,__FILE__);
while($GLOBALS['egw']->db->next_record())
{
$_db_version = $GLOBALS['egw']->db->f('app_version');

View File

@ -15,9 +15,5 @@
if((int)$GLOBALS['hook_values']['account_id'] > 0)
{
$GLOBALS['egw']->accounts->delete((int)$GLOBALS['hook_values']['account_id']);
$GLOBALS['egw']->db->lock(Array('phpgw_acl'));
$GLOBALS['egw']->db->query("DELETE FROM phpgw_acl WHERE acl_location='" . (int)$GLOBALS['hook_values']['account_id']
. "' OR acl_account=".(int)$GLOBALS['hook_values']['account_id'],__LINE__,__FILE__);
$GLOBALS['egw']->db->unlock();
$GLOBALS['egw']->acl->delete_account((int)$GLOBALS['hook_values']['account_id']);
}
?>

View File

@ -42,10 +42,8 @@ class updates {
function showUpdates() {
$updates = array();
if ((isset($GLOBALS['egw_info']['user']['apps']['admin']) &&
$GLOBALS['egw_info']['user']['apps']['admin']) &&
(isset($GLOBALS['egw_info']['server']['checkfornewversion']) &&
$GLOBALS['egw_info']['server']['checkfornewversion']))
if (isset($GLOBALS['egw_info']['user']['apps']['admin']) && $GLOBALS['egw_info']['user']['apps']['admin'] &&
isset($GLOBALS['egw_info']['server']['checkfornewversion']) && $GLOBALS['egw_info']['server']['checkfornewversion'])
{
$GLOBALS['egw']->network =& CreateObject('phpgwapi.network');
@ -62,16 +60,14 @@ class updates {
if($GLOBALS['egw']->common->cmp_version_long($GLOBALS['egw_info']['server']['versions']['phpgwapi'],$line_found[1]))
{
$updates['egroupware'] = '<p>There is a new version of eGroupWare available. <a href="'
. 'http://www.egroupware.org">http://www.egroupware.org</a></p>';
$updates['egroupware'] = '<p>'.lang('There is a new version of eGroupWare available').
' <a href="http://www.egroupware.org">www.egroupware.org</a></p>';
}
$_found = False;
$GLOBALS['egw']->db->query("select app_name,app_version from phpgw_applications",__LINE__,__FILE__);
while($GLOBALS['egw']->db->next_record())
foreach($GLOBALS['egw_info']['apps'] as $_app_name => $data)
{
$_db_version = $GLOBALS['egw']->db->f('app_version');
$_app_name = $GLOBALS['egw']->db->f('app_name');
$_db_version = $data['version'];
$_app_dir = $GLOBALS['egw']->common->get_app_dir($_app_name);
$_versionfile = $_app_dir . '/setup/setup.inc.php';
if($_app_dir && file_exists($_versionfile))
@ -102,7 +98,4 @@ class updates {
}
return $updates;
}
}
?>

View File

@ -291,47 +291,55 @@
$expiredate = time() + ( ( 60 * 60 ) * (30 * 24) );
}
$default_group_id = $this->name2id($GLOBALS['egw_info']['server']['default_group_lid']);
if (!$default_group_id)
{
$default_group_id = (int) $this->name2id('Default');
}
$primary_group = $GLOBALS['auto_create_acct']['primary_group'] &&
$this->get_type((int)$GLOBALS['auto_create_acct']['primary_group']) == 'g' ?
(int) $GLOBALS['auto_create_acct']['primary_group'] : $default_group_id;
$acct_info = array(
'account_lid' => $accountname,
'account_type' => 'u',
'account_passwd' => $passwd,
'account_firstname' => '',
'account_lastname' => '',
'account_firstname' => $GLOBALS['auto_create_acct']['firstname'] ? $GLOBALS['auto_create_acct']['firstname'] : 'New',
'account_lastname' => $GLOBALS['auto_create_acct']['lastname'] ? $GLOBALS['auto_create_acct']['lastname'] : 'User',
'account_status' => $account_status,
'account_expires' => mktime(2,0,0,date('n',$expiredate), (int)date('d',$expiredate), date('Y',$expiredate))
'account_expires' => mktime(2,0,0,date('n',$expiredate), (int)date('d',$expiredate), date('Y',$expiredate)),
'account_primary_group' => $primary_group,
);
if (isset($GLOBALS['auto_create_acct']['email']) == True && $GLOBALS['auto_create_acct']['email'] != '')
{
$acct_info['account_email'] = $GLOBALS['auto_create_acct']['email'];
}
elseif(isset($GLOBALS['egw_info']['server']['mail_suffix']) == True && $GLOBALS['egw_info']['server']['mail_suffix'] != '')
{
$acct_info['account_email'] = $accountname . '@' . $GLOBALS['egw_info']['server']['mail_suffix'];
}
$this->create($acct_info);
$accountid = $this->name2id($accountname);
$this->db->transaction_begin();
if (!$default_prefs)
if ($accountid)
{
$default_prefs = 'a:5:{s:6:"common";a:10:{s:9:"maxmatchs";s:2:"15";s:12:"template_set";s:8:"verdilak";s:5:"theme";s:6:"purple";s:13:"navbar_format";s:5:"icons";s:9:"tz_offset";N;s:10:"dateformat";s:5:"m/d/Y";s:10:"timeformat";s:2:"12";s:4:"lang";s:2:"en";s:11:"default_app";N;s:8:"currency";s:1:"$";}s:11:"addressbook";a:1:{s:0:"";s:4:"True";}:s:8:"calendar";a:4:{s:13:"workdaystarts";s:1:"7";s:11:"workdayends";s:2:"15";s:13:"weekdaystarts";s:6:"Monday";s:15:"defaultcalendar";s:9:"month.php";}}';
// $defaultprefs = 'a:5:{s:6:"common";a:1:{s:0:"";s:2:"en";}s:11:"addressbook";a:1:{s:0:"";s:4:"True";}s:8:"calendar";a:1:{s:0:"";s:13:"workdaystarts";}i:15;a:1:{s:0:"";s:11:"workdayends";}s:6:"Monday";a:1:{s:0:"";s:13:"weekdaystarts";}}';
$this->db->query("insert into phpgw_preferences (preference_owner, preference_value) values ('".$accountid."', '$default_prefs')",__LINE__,__FILE__);
}
if (!$default_acls)
/* If we have a primary_group, add it as "regular" eGW group (via ACL) too. */
if ($primary_group)
{
$apps = Array(
'addressbook',
'calendar',
'email',
'notes',
'todo',
'phpwebhosting',
'manual'
);
$this->db->query("insert into phpgw_acl (acl_appname, acl_location, acl_account, acl_rights)values('preferences', 'changepassword', ".$accountid.", 1)",__LINE__,__FILE__);
$this->db->query("insert into phpgw_acl (acl_appname, acl_location, acl_account, acl_rights) values('phpgw_group', '1', ".$accountid.", 1)",__LINE__,__FILE__);
@reset($apps);
while(list($key,$app) = each($apps))
{
$this->db->query("INSERT INTO phpgw_acl (acl_appname, acl_location, acl_account, acl_rights) VALUES ('".$app."', 'run', ".$accountid.", 1)",__LINE__,__FILE__);
$GLOBALS['egw']->acl->add_repository('phpgw_group', $primary_group,$accountid,1);
}
// call hook to notify other apps about the new account
$GLOBALS['hook_values']['account_lid'] = $acct_info['account_lid'];
$GLOBALS['hook_values']['account_id'] = $accountid;
$GLOBALS['hook_values']['new_passwd'] = $acct_info['account_passwd'];
$GLOBALS['hook_values']['account_status'] = $acct_info['account_status'];
$GLOBALS['hook_values']['account_firstname'] = $acct_info['account_firstname'];
$GLOBALS['hook_values']['account_lastname'] = $acct_info['account_lastname'];
$GLOBALS['egw']->hooks->process($GLOBALS['hook_values']+array(
'location' => 'addaccount'
),False,True); /* called for every app now, not only enabled ones */
}
$this->db->transaction_commit();
return $accountid;
}
}

View File

@ -1007,15 +1007,10 @@
{
if($primary_group)
{
$this->db->query("INSERT INTO phpgw_acl (acl_appname, acl_location, acl_account, acl_rights) VALUES('phpgw_group', "
. $primary_group . ", " . $accountid . ", 1)",__LINE__,__FILE__);
$GLOBALS['egw']->acl->add_repository('phpgw_group', $primary_group,$accountid,1);
}
/* FIXME - we are assuming the auth method is capable of password changing
* $this->db->query("INSERT INTO phpgw_acl (acl_appname, acl_location, acl_account, acl_rights)VALUES('preferences', 'changepassword', ".$accountid.", 1)",__LINE__,__FILE__);
*/
/* if we have an mail address set it in the uesrs' email preference */
/* if we have an mail address set it in the users' email preference */
if (isset($GLOBALS['auto_create_acct']['email']) && $GLOBALS['auto_create_acct']['email'] != '')
{
$GLOBALS['egw']->acl->acl($accountid); /* needed als preferences::save_repository calls acl */
@ -1037,7 +1032,7 @@
/* commit the new account transaction */
$this->db->transaction_commit();
/* does anyone know what the heck this is required for? */
// call hook to notify interested apps about the new account
$GLOBALS['hook_values']['account_lid'] = $acct_info['account_lid'];
$GLOBALS['hook_values']['account_id'] = $accountid;
$GLOBALS['hook_values']['new_passwd'] = $acct_info['account_passwd'];
@ -1101,4 +1096,25 @@
return $allValues[0]['dn'];
}
/**
* Update the last login timestamps and the IP
*
* @param int $account_id
* @param string $ip
* @return int lastlogin time
*/
function update_lastlogin($_account_id, $ip)
{
$entry['phpgwaccountlastlogin'] = time();
$entry['phpgwaccountlastloginfrom'] = $ip;
$sri = ldap_search($this->ds, $GLOBALS['egw_info']['server']['ldap_context'], 'uidnumber=' . (int)$_account_id);
$allValues = ldap_get_entries($ds, $sri);
$dn = $allValues[0]['dn'];
@ldap_modify($ds, $dn, $entry);
return $allValues[0]['phpgwaccountlastlogin'][0];
}
}

View File

@ -26,9 +26,7 @@
/* $Id$ */
/**
* @class_start accounts
* Class for handling user and group accounts
*
*/
class accounts_
{
@ -40,7 +38,7 @@
function accounts_()
{
$this->db = clone($GLOBALS['egw']->db);
$this->table = 'phpgw_accounts';
$this->table = 'egw_accounts';
$this->db->set_app('phpgwapi'); // to load the right table-definitions for insert, select, update, ...
}
@ -224,8 +222,7 @@
);
}
$this->db->query("SELECT count(*) FROM $this->table $whereclause");
$this->db->next_record();
$this->total = $this->db->f(0);
$this->total = $this->db->next_record() ? $this->db->f(0) : 0;
return $accounts;
}
@ -392,11 +389,10 @@
/* If we have a primary_group, add it as "regular" eGW group (via ACL) too. */
if ($primary_group)
{
$this->db->query("insert into phpgw_acl (acl_appname, acl_location, acl_account, acl_rights) values('phpgw_group', "
. $primary_group . ', ' . $accountid . ', 1)',__LINE__,__FILE__);
$GLOBALS['egw']->acl->add_repository('phpgw_group', $primary_group,$accountid,1);
}
/* if we have an mail address set it in the uesrs' email preference */
/* if we have an mail address set it in the users' email preference */
if (isset($GLOBALS['auto_create_acct']['email']) && $GLOBALS['auto_create_acct']['email'] != '')
{
$GLOBALS['egw']->acl->acl($accountid); /* needed als preferences::save_repository calls acl */
@ -418,7 +414,7 @@
/* commit the new account transaction */
$this->db->transaction_commit();
/* does anyone know what the heck this is required for? */
// call hook to notify interested apps about the new account
$GLOBALS['hook_values']['account_lid'] = $acct_info['account_lid'];
$GLOBALS['hook_values']['account_id'] = $accountid;
$GLOBALS['hook_values']['new_passwd'] = $acct_info['account_passwd'];
@ -456,7 +452,26 @@
return True;
}
}
/**
* @class_end accounts
* Update the last login timestamps and the IP
*
* @param int $account_id
* @param string $ip
* @return int lastlogin time
*/
function update_lastlogin($account_id, $ip)
{
$this->db->select($this->table,'account_lastlogin',array('account_id'=>$account_id),__LINE__,__FILE__);
$previous_login = $this->db->next_record() ? $this->db->f('account_lastlogin') : false;
$this->db->update($this->table,array(
'account_lastloginfrom' => $ip,
'account_lastlogin' => time(),
),array(
'account_id' => $account_id,
),__LINE__,__FILE__);
return $previous_login;
}
}

View File

@ -59,7 +59,7 @@
/**
* @var string $table_name name of the acl_table
*/
var $table_name = 'phpgw_acl';
var $table_name = 'egw_acl';
/**
* ACL constructor for setting account id
@ -317,7 +317,8 @@
* get specific rights for this->account_id for an app location
*
* @param string $location app location
* @param string $appname optional defaults to currentapp
* @param string $appname='' optional defaults to currentapp
* @param int $account_id=0 optional defaults to $this->account_id
* @return int $rights
*/
function get_specific_rights($location, $appname = '')
@ -428,6 +429,84 @@
return $this->db->affected_rows();
}
/**
* Get rights for a given account, location and application
*
* @param int $account_id
* @param string $location
* @param string $appname='' defaults to current app
* @return int/boolean rights or false if none exist
*/
function get_specific_rights_for_account($account_id,$location,$appname='')
{
if (!$appname) $appname = $GLOBALS['egw_info']['flags']['currentapp'];
$this->db->select($this->table_name,'acl_rights',array(
'acl_location' => $location,
'acl_account' => $account_id,
'acl_appname' => $appname,
),__LINE__,__FILE__);
return $this->db->next_record() ? $this->db->f('acl_rights') : false;
}
/**
* Get all rights for a given location and application
*
* @param string $location
* @param string $appname='' defaults to current app
* @return array with account => rights pairs
*/
function get_all_rights($location,$appname='')
{
if (!$appname) $appname = $GLOBALS['egw_info']['flags']['currentapp'];
$this->db->select($this->table_name,'acl_account,acl_rights',array(
'acl_location' => $location,
'acl_appname' => $appname,
),__LINE__,__FILE__);
$rights = array();
while($this->db->next_record())
{
$rights[$this->db->f('acl_account')] = $this->db->f('acl_rights');
}
return $rights;
}
/**
* Get the rights for all locations
*
* @param int $account_id
* @param string $appname='' defaults to current app
* @param boolean $use_memberships=true
* @return array with location => rights pairs
*/
function get_all_location_rights($account_id,$appname='',$use_memberships=true)
{
if (!$appname) $appname = $GLOBALS['egw_info']['flags']['currentapp'];
$acounts = array($account_id);
if ($use_memberships)
{
foreach((array)$GLOBALS['egw']->accounts->membership($account_id) as $group)
{
$accounts[] = $group['account_id'];
}
}
$this->db->select($this->table_name,'acl_location,acl_rights',array(
'acl_account' => $accounts,
'acl_appname' => $appname,
),__LINE__,__FILE__);
$rights = array();
while($this->db->next_record())
{
$rights[$this->db->f('acl_location')] |= $this->db->f('acl_rights');
}
return $rights;
}
/**
* get application list for an account id
*

View File

@ -22,16 +22,17 @@
/* $Id$ */
/*!
@class applications
@abstract functions for managing and installing apps
@discussion Author: skeeter
/**
* functions for managing and installing apps
*
* Author: skeeter
*/
class applications
{
var $account_id;
var $data = Array();
var $db;
var $table_name = 'egw_applications';
var $public_functions = array(
'list_methods' => True,
'read' => True
@ -42,14 +43,16 @@
* Standard constructor for setting $this->account_id *
\**************************************************************************/
/*!
@function applications
@abstract standard constructor for setting $this->account_id
@param $account_id account id
/**
* standard constructor for setting $this->account_id
*
* @param $account_id account id
*/
function applications($account_id = '')
{
$this->db = $GLOBALS['phpgw']->db;
$this->db = clone($GLOBALS['egw']->db);
$this->db->set_app('phpgwapi');
$this->account_id = get_account_id($account_id);
$this->xmlrpc_methods[] = array(
@ -99,15 +102,14 @@
* These are the standard $this->account_id specific functions *
\**************************************************************************/
/*!
@function read_repository
@abstract read from repository
@discussion private should only be called from withing this class
/**
* read from repository
*
* private should only be called from withing this class
*/
function read_repository()
{
if (!isset($GLOBALS['phpgw_info']['apps']) ||
!is_array($GLOBALS['phpgw_info']['apps']))
if (!isset($GLOBALS['egw_info']['apps']) || !is_array($GLOBALS['egw_info']['apps']))
{
$this->read_installed_apps();
}
@ -116,27 +118,27 @@
{
return False;
}
$apps = $GLOBALS['phpgw']->acl->get_user_applications($this->account_id);
foreach($GLOBALS['phpgw_info']['apps'] as $app => $data)
$apps = $GLOBALS['egw']->acl->get_user_applications($this->account_id);
foreach($GLOBALS['egw_info']['apps'] as $app => $data)
{
if (isset($apps[$app]) && $apps[$app])
{
$this->data[$app] = array(
'title' => $GLOBALS['phpgw_info']['apps'][$app]['title'],
'title' => $GLOBALS['egw_info']['apps'][$app]['title'],
'name' => $app,
'enabled' => True,
'status' => $GLOBALS['phpgw_info']['apps'][$app]['status'],
'id' => $GLOBALS['phpgw_info']['apps'][$app]['id']
'status' => $GLOBALS['egw_info']['apps'][$app]['status'],
'id' => $GLOBALS['egw_info']['apps'][$app]['id']
);
}
}
return $this->data;
}
/*!
@function read()
@abstract read from the repository
@discussion pubic function that is used to determine what apps a user has rights to
/**
* read from the repository
*
* pubic function that is used to determine what apps a user has rights to
*/
function read()
{
@ -146,11 +148,11 @@
}
return $this->data;
}
/*!
@function add
@abstract add an app to a user profile
@discussion
@param $apps array containing apps to add for a user
/**
* add an app to a user profile
*
* @discussion
* @param $apps array containing apps to add for a user
*/
function add($apps)
{
@ -159,31 +161,31 @@
foreach($apps as $app)
{
$this->data[$app] = array(
'title' => $GLOBALS['phpgw_info']['apps'][$app]['title'],
'title' => $GLOBALS['egw_info']['apps'][$app]['title'],
'name' => $app,
'enabled' => True,
'status' => $GLOBALS['phpgw_info']['apps'][$app]['status'],
'id' => $GLOBALS['phpgw_info']['apps'][$app]['id']
'status' => $GLOBALS['egw_info']['apps'][$app]['status'],
'id' => $GLOBALS['egw_info']['apps'][$app]['id']
);
}
}
elseif(gettype($apps))
{
$this->data[$apps] = array(
'title' => $GLOBALS['phpgw_info']['apps'][$apps]['title'],
'title' => $GLOBALS['egw_info']['apps'][$apps]['title'],
'name' => $apps,
'enabled' => True,
'status' => $GLOBALS['phpgw_info']['apps'][$apps]['status'],
'id' => $GLOBALS['phpgw_info']['apps'][$apps]['id']
'status' => $GLOBALS['egw_info']['apps'][$apps]['status'],
'id' => $GLOBALS['egw_info']['apps'][$apps]['id']
);
}
return $this->data;
}
/*!
@function delete
@abstract delete an app from a user profile
@discussion
@param $appname appname to remove
/**
* delete an app from a user profile
*
* @discussion
* @param $appname appname to remove
*/
function delete($appname)
{
@ -193,32 +195,32 @@
}
return $this->data;
}
/*!
@function update_data
@abstract update the array(?)
@discussion
@param $data update the repository array(?)
/**
* update the array(?)
*
* @discussion
* @param $data update the repository array(?)
*/
function update_data($data)
{
$this->data = $data;
return $this->data;
}
/*!
@function save_repository()
@abstract save the repository
@discussion
/**
* save the repository
*
* @discussion
*/
function save_repository()
{
$num_rows = $GLOBALS['phpgw']->acl->delete_repository("%%", 'run', $this->account_id);
$num_rows = $GLOBALS['egw']->acl->delete_repository("%%", 'run', $this->account_id);
foreach($this->data as $app => $data)
{
if(!$this->is_system_enabled($app))
{
continue;
}
$GLOBALS['phpgw']->acl->add_repository($app,'run',$this->account_id,1);
$GLOBALS['egw']->acl->add_repository($app,'run',$this->account_id,1);
}
return $this->data;
}
@ -242,22 +244,22 @@
function read_account_specific()
{
if (!is_array($GLOBALS['phpgw_info']['apps']))
if (!is_array($GLOBALS['egw_info']['apps']))
{
$this->read_installed_apps();
}
if ($app_list = $GLOBALS['phpgw']->acl->get_app_list_for_id('run',1,$this->account_id))
if ($app_list = $GLOBALS['egw']->acl->get_app_list_for_id('run',1,$this->account_id))
{
foreach($app_list as $app)
{
if ($this->is_system_enabled($app))
{
$this->data[$app] = array(
'title' => $GLOBALS['phpgw_info']['apps'][$app]['title'],
'title' => $GLOBALS['egw_info']['apps'][$app]['title'],
'name' => $app,
'enabled' => True,
'status' => $GLOBALS['phpgw_info']['apps'][$app]['status'],
'id' => $GLOBALS['phpgw_info']['apps'][$app]['id']
'status' => $GLOBALS['egw_info']['apps'][$app]['status'],
'id' => $GLOBALS['egw_info']['apps'][$app]['id']
);
}
}
@ -269,25 +271,22 @@
* These are the generic functions. Not specific to $this->account_id *
\**************************************************************************/
/*!
@function read_installed_apps()
@abstract populate array with a list of installed apps
/**
* populate array with a list of installed apps
*
*/
function read_installed_apps()
{
$this->db->query('select * from phpgw_applications where app_enabled != 0 order by app_order asc',__LINE__,__FILE__);
if($this->db->num_rows())
{
$this->db->select($this->table_name,'*','app_enabled != 0',__LINE__,__FILE__,false,'ORDER BY app_order ASC');
while ($this->db->next_record())
{
$title = $app_name = $this->db->f('app_name');
if (@is_array($GLOBALS['phpgw_info']['user']['preferences']) &&
($t = lang($app_name)) != $app_name.'*')
if (@is_array($GLOBALS['egw_info']['user']['preferences']) && ($t = lang($app_name)) != $app_name.'*')
{
$title = $t;
}
$GLOBALS['phpgw_info']['apps'][$this->db->f('app_name')] = Array(
$GLOBALS['egw_info']['apps'][$this->db->f('app_name')] = Array(
'title' => $title,
'name' => $this->db->f('app_name'),
'enabled' => True,
@ -298,19 +297,19 @@
);
}
}
}
/*!
@function is_system_enabled
@abstract check if an app is enabled
@param $appname name of the app to check for
/**
* check if an app is enabled
*
* @param $appname name of the app to check for
*/
function is_system_enabled($appname)
{
if(!is_array($GLOBALS['phpgw_info']['apps']))
if(!is_array($GLOBALS['egw_info']['apps']))
{
$this->read_installed_apps();
}
if ($GLOBALS['phpgw_info']['apps'][$appname]['enabled'])
if ($GLOBALS['egw_info']['apps'][$appname]['enabled'])
{
return True;
}
@ -322,7 +321,7 @@
function id2name($id)
{
foreach($GLOBALS['phpgw_info']['apps'] as $appname => $app)
foreach($GLOBALS['egw_info']['apps'] as $appname => $app)
{
if((int)$app['id'] == (int)$id)
{
@ -334,11 +333,10 @@
function name2id($appname)
{
if(is_array($GLOBALS['phpgw_info']['apps'][$appname]))
if(is_array($GLOBALS['egw_info']['apps'][$appname]))
{
return $GLOBALS['phpgw_info']['apps'][$appname]['id'];
return $GLOBALS['egw_info']['apps'][$appname]['id'];
}
return 0;
}
}
?>

View File

@ -33,10 +33,10 @@
var $seeded = False;
var $error = '';
/*!
@function randomstring
@abstract return a random string of size $size
@param $size int-size of random string to return
/**
* return a random string of size $size
*
* @param $size int-size of random string to return
*/
function randomstring($size)
{
@ -62,11 +62,12 @@
return $s;
}
/*!
@function encrypt_password
@abstract encrypt password
@abstract uses the encryption type set in setup and calls the appropriate encryption functions
@param $password password to encrypt
/**
* encrypt password
*
* uses the encryption type set in setup and calls the appropriate encryption functions
*
* @param $password password to encrypt
*/
function encrypt_password($password,$sql=False)
{
@ -77,14 +78,15 @@
return $this->encrypt_ldap($password);
}
/*!
@function compare_password
@abstract compagres an encrypted password
@abstract encryption type set in setup and calls the appropriate encryption functions
@param $cleartext cleartext password
@param $encrypted encrypted password
@param $type type of encryption
@param $username used as optional key of encryption for md5_hmac
/**
* compagres an encrypted password
*
* encryption type set in setup and calls the appropriate encryption functions
*
* @param $cleartext cleartext password
* @param $encrypted encrypted password
* @param $type type of encryption
* @param $username used as optional key of encryption for md5_hmac
*/
function compare_password($cleartext,$encrypted,$type,$username='')
{
@ -109,15 +111,16 @@
}
}
/*!
@function encrypt_ldap
@abstract encrypt password for ldap
@abstract uses the encryption type set in setup and calls the appropriate encryption functions
@param $password password to encrypt
/**
* encrypt password for ldap
*
* uses the encryption type set in setup and calls the appropriate encryption functions
*
* @param $password password to encrypt
*/
function encrypt_ldap($password)
{
$type = strtolower($GLOBALS['phpgw_info']['server']['ldap_encryption_type']);
$type = strtolower($GLOBALS['egw_info']['server']['ldap_encryption_type']);
$salt = '';
switch($type)
{
@ -163,12 +166,12 @@
return $e_password;
}
/* Create a password for storage in the phpgw_accounts table */
/* Create a password for storage in the accounts table */
function encrypt_sql($password)
{
/* Grab configured type, or default to md5() (old method) */
$type = @$GLOBALS['phpgw_info']['server']['sql_encryption_type']
? strtolower($GLOBALS['phpgw_info']['server']['sql_encryption_type'])
$type = @$GLOBALS['egw_info']['server']['sql_encryption_type']
? strtolower($GLOBALS['egw_info']['server']['sql_encryption_type'])
: 'md5';
switch($type)
{

View File

@ -81,7 +81,7 @@
}
}
$account = CreateObject('phpgwapi.accounts',$username,'u');
$account =& CreateObject('phpgwapi.accounts',$username,'u');
if ($account->account_id)
{
return true;
@ -110,14 +110,5 @@
{
return false; // Cant change passwd in ADS
}
function update_lastlogin($_account_id, $ip)
{
$account =& CreateObject('phpgwapi.accounts',$_account_id,'u');
$account->read_repository();
$account->data['lastlogin'] = time();
$account->data['lastloginfrom'] = $ip;
$account->save_repository();
}
}
?>

View File

@ -44,17 +44,4 @@
{
return False;
}
// Since there account data will still be stored in SQL, this should be safe to do. (jengo)
function update_lastlogin($account_id, $ip)
{
$GLOBALS['egw']->db->query("SELECT account_lastlogin FROM phpgw_accounts WHERE account_id=" . (int)$account_id,__LINE__,__FILE__);
$GLOBALS['egw']->db->next_record();
$this->previous_login = $GLOBALS['egw']->db->f('account_lastlogin');
$GLOBALS['egw']->db->query("UPDATE phpgw_accounts SET account_lastloginfrom='"
. "$ip', account_lastlogin='" . time()
. "' WHERE account_id=" . (int)$account_id,__LINE__,__FILE__);
}
}
?>

View File

@ -29,6 +29,13 @@
{
var $previous_login = -1;
/**
* authentication against LDAP
*
* @param string $username username of account to authenticate
* @param string $passwd corresponding password
* @return boolean true if successful authenticated, false otherwise
*/
function authenticate($username, $passwd)
{
if (ereg('[()|&=*,<>!~]',$username))
@ -91,7 +98,7 @@
{
if ($GLOBALS['egw_info']['server']['account_repository'] != 'ldap')
{
$account = CreateObject('phpgwapi.accounts',$username,'u');
$account =& CreateObject('phpgwapi.accounts',$username,'u');
if (!$account->account_id && $GLOBALS['egw_info']['server']['auto_create_acct'])
{
// create a global array with all availible info about that account
@ -119,15 +126,23 @@
return False;
}
function change_password($old_passwd, $new_passwd, $_account_id='')
/**
* changes password in LDAP
*
* @param string $old_passwd must be cleartext or empty to not to be checked
* @param string $new_passwd must be cleartext
* @param int $account_id account id of user whose passwd should be changed
* @return boolean true if password successful changed, false otherwise
*/
function change_password($old_passwd, $new_passwd, $account_id=0)
{
if ('' == $_account_id)
if (!$_account_id)
{
$username = $GLOBALS['egw_info']['user']['account_lid'];
}
else
{
$username = $GLOBALS['egw']->accounts->id2name($_account_id);
$username = $GLOBALS['egw']->accounts->id2name($account_id);
}
$filter = $GLOBALS['egw_info']['server']['ldap_search_filter'] ? $GLOBALS['egw_info']['server']['ldap_search_filter'] : '(uid=%user)';
$filter = str_replace(array('%user','%domain'),array($username,$GLOBALS['egw_info']['user']['domain']),$filter);
@ -139,41 +154,14 @@
$entry['userpassword'] = $this->encrypt_password($new_passwd);
$dn = $allValues[0]['dn'];
if (!@ldap_modify($ds, $dn, $entry))
if ($old_passwd && $GLOBALS['egw']->auth->encrypt_password($old_passwd) != $allValues[0]['userpassword'] || !@ldap_modify($ds, $dn, $entry))
{
return false;
}
if($old_passwd) // if old password given (not called by admin) update the password in the session
{
$GLOBALS['egw']->session->appsession('password','phpgwapi',$new_passwd);
}
return $entry['userpassword'];
}
function update_lastlogin($_account_id, $ip)
{
if ($GLOBALS['egw_info']['server']['account_repository'] == 'ldap')
{
$entry['phpgwaccountlastlogin'] = time();
$entry['phpgwaccountlastloginfrom'] = $ip;
$ds = $GLOBALS['egw']->common->ldapConnect();
$sri = ldap_search($ds, $GLOBALS['egw_info']['server']['ldap_context'], 'uidnumber=' . (int)$_account_id);
$allValues = ldap_get_entries($ds, $sri);
$dn = $allValues[0]['dn'];
$this->previous_login = $allValues[0]['phpgwaccountlastlogin'][0];
@ldap_modify($ds, $dn, $entry);
}
else
{
$GLOBALS['egw']->db->query("SELECT account_lastlogin FROM phpgw_accounts WHERE account_id=" . (int)$_account_id,__LINE__,__FILE__);
$GLOBALS['egw']->db->next_record();
$this->previous_login = $GLOBALS['egw']->db->f('account_lastlogin');
$GLOBALS['egw']->db->query("UPDATE phpgw_accounts SET account_lastloginfrom='"
. "$ip', account_lastlogin='" . time()
. "' WHERE account_id=" . (int)$_account_id,__LINE__,__FILE__);
}
}
}
?>

View File

@ -29,8 +29,6 @@
function authenticate($username, $passwd)
{
error_reporting(error_reporting() - 2);
if ($GLOBALS['egw_info']['server']['mail_login_type'] == 'vmailmgr')
{
$username = $username . '@' . $GLOBALS['egw_info']['server']['mail_suffix'];
@ -76,33 +74,17 @@
.':'.$GLOBALS['egw_info']['server']['mail_port'].'}INBOX', $username , $passwd);
}
error_reporting(error_reporting() + 2);
if ($mailauth == False)
{
return False;
}
else
{
imap_close($mailauth);
return True;
}
}
function change_password($old_passwd, $new_passwd)
{
return False;
}
// Since there account data will still be stored in SQL, this should be safe to do. (jengo)
function update_lastlogin($account_id, $ip)
{
$GLOBALS['egw']->db->query("SELECT account_lastlogin FROM phpgw_accounts WHERE account_id=" . (int)$account_id,__LINE__,__FILE__);
$GLOBALS['egw']->db->next_record();
$this->previous_login = $GLOBALS['egw']->db->f('account_lastlogin');
$GLOBALS['egw']->db->query("UPDATE phpgw_accounts SET account_lastloginfrom='"
. "$ip', account_lastlogin='" . time()
. "' WHERE account_id=" . (int)$account_id,__LINE__,__FILE__);
}
}
?>

View File

@ -57,14 +57,4 @@
// can't change passwords unless server runs as root (bad idea)
return( False );
}
function update_lastlogin($account_id, $ip)
{
$account_id = get_account_id($account_id);
$GLOBALS['egw']->db->query("update phpgw_accounts set account_lastloginfrom='"
. "$ip', account_lastlogin='" . time()
. "' where account_id='$account_id'",__LINE__,__FILE__);
}
}
?>

View File

@ -28,25 +28,12 @@
{
return True;
}
else
{
return False;
}
}
function change_password($old_passwd, $new_passwd, $account_id='')
{
// deny password changes.
return( False );
}
function update_lastlogin($account_id, $ip)
{
$account_id = get_account_id($account_id);
$GLOBALS['egw']->db->query('UPDATE phpgw_accounts SET account_lastloginfrom='
. $GLOBALS['egw']->db->quote($ip).', account_lastlogin=' . time()
. ' WHERE account_id='.(int)$account_id,__LINE__,__FILE__);
return False;
}
}
?>

View File

@ -34,98 +34,90 @@
function auth_()
{
copyobj($GLOBALS['egw']->db,$this->db);
$this->type = @$GLOBALS['egw_info']['server']['sql_encryption_type']
? strtolower($GLOBALS['egw_info']['server']['sql_encryption_type'])
: 'md5';
$this->db = clone($GLOBALS['egw']->db);
$this->db->set_app('phpgwapi');
$this->table = 'egw_accounts';
$this->type = @$GLOBALS['egw_info']['server']['sql_encryption_type'] ?
strtolower($GLOBALS['egw_info']['server']['sql_encryption_type']) : 'md5';
}
/*!
@function authenticate
@abstract password authentication against password stored in sql datababse
@param $username username of account to authenticate
@param $passwd corresponding password
@param $passwd_type 'text' for cleartext passwords
/**
* password authentication against password stored in sql datababse
*
* @param string $username username of account to authenticate
* @param string $passwd corresponding password
* @param string $passwd_type='text' 'text' for cleartext passwords (default)
* @return boolean true if successful authenticated, false otherwise
*/
function authenticate($username, $passwd, $passwd_type)
function authenticate($username, $passwd, $passwd_type='text')
{
/* normal web form login */
if($passwd_type == 'text')
{
$this->db->query("SELECT account_lid,account_pwd,account_lastlogin FROM phpgw_accounts WHERE account_lid = '$username' AND "
. " account_type='u' AND "
. " account_status ='A'",__LINE__,__FILE__);
$this->db->next_record();
$this->db->select($this->table,'account_lid,account_pwd,account_lastlogin',array(
'account_lid' => $username,
'account_type' => 'u',
'account_status' => 'A'
),__LINE__,__FILE__);
if($GLOBALS['egw_info']['server']['case_sensitive_username'] == true)
if(!$this->db->next_record() || !$this->db->f('account_pwd') ||
$GLOBALS['egw_info']['server']['case_sensitive_username'] && $this->db->f('account_lid') != $username)
{
if($this->db->f('account_lid') != $username) return false;
return false;
}
if(!$this->db->f('account_pwd')) return false;
if(!$this->compare_password($passwd,$this->db->f('account_pwd'),$this->type,strtolower($username)))
{
$match = false;
// do we have to migrate an old password ?
if($GLOBALS['egw_info']['server']['pwd_migration_allowed'])
if($GLOBALS['egw_info']['server']['pwd_migration_allowed'] && !emplty($GLOBALS['egw_info']['server']['pwd_migration_types']))
{
if(!isset($GLOBALS['egw_info']['server']['pwd_migration_types'])) return false;
$allowed_types = explode(',', $GLOBALS['egw_info']['server']['pwd_migration_types']);
foreach($allowed_types as $num => $type)
foreach(explode(',', $GLOBALS['egw_info']['server']['pwd_migration_types']) as $type)
{
if($this->compare_password($passwd,$this->db->f('account_pwd'),$type,strtolower($username)))
{
$account_id = $GLOBALS['egw_info']['user']['account_id'];
$encrypted_passwd = $this->encrypt_sql($passwd);
$this->_update_passwd($encrypted_passwd,$passwd,$account_id,false,__FILE__);
$this->_update_passwd($encrypted_passwd,$passwd,$account_id);
$match = true;
break;
}
return false;
}
}
else
{
return false;
if (!$match) return false;
}
}
/* if this point is reached, auth was successfull */
$this->previous_login = $this->db->f('account_lastlogin');
return true;
}
/* Auth via crypted password. NOTE: mail needs cleartext password to authenticate against mailserver! */
else
{
$this->db->query("SELECT * FROM phpgw_accounts WHERE account_lid = '$username' AND "
. "account_pwd='" . $passwd . "' AND account_status ='A'",__LINE__,__FILE__);
$this->db->next_record();
$this->db->select($this->table,'account_lid,account_lastlogin',array(
'account_lid' => $username,
'account_type' => 'u',
'account_status' => 'A',
'account_pwd' => $passwd,
),__LINE__,__FILE__);
if($GLOBALS['egw_info']['server']['case_sensitive_username'] == true)
{
if($this->db->f('account_lid') != $username)
if(!$this->db->next_record() ||
$GLOBALS['egw_info']['server']['case_sensitive_username'] && $this->db->f('account_lid') != $username)
{
return false;
}
}
if($this->db->f('account_lid'))
{
// if this point is reached, auth was successfull
$this->previous_login = $this->db->f('account_lastlogin');
return True;
}
else
{
return False;
}
}
return true;
}
/*!
@function change_password
@abstract changes password in sql datababse
@param $old_passwd must be cleartext
@param $new_passwd must be cleartext
@param $account_id account id of user whose passwd should be changed
/**
* changes password in sql datababse
*
* @param string $old_passwd must be cleartext
* @param string $new_passwd must be cleartext
* @param int $account_id account id of user whose passwd should be changed
* @return boolean true if password successful changed, false otherwise
*/
function change_password($old_passwd, $new_passwd, $account_id = '')
function change_password($old_passwd, $new_passwd, $account_id=0)
{
$admin = True;
// Don't allow password changes for other accounts when using XML-RPC
@ -135,56 +127,49 @@
$account_id = $GLOBALS['egw_info']['user']['account_id'];
}
$this->db->query("SELECT account_pwd FROM phpgw_accounts WHERE account_id = " . (int)$account_id
. " AND " // . " account_type='u' AND "
. " account_status ='A'",__LINE__,__FILE__);
$this->db->next_record();
if(!$this->db->f('account_pwd')) return false;
$this->db->select($this->table,'account_pwd',array(
'account_id' => $account_id,
'account_type' => 'u',
'account_status' => 'A',
),__LINE__,__FILE__);
if(!$this->db->next_record()) return false; // account not found
/* Check the old_passwd to make sure this is legal */
if(!$admin)
{
if(!$this->compare_password($old_passwd,$this->db->f('account_pwd'),$this->type,strtolower($username)))
if(!$admin && !$this->compare_password($old_passwd,$this->db->f('account_pwd'),$this->type,strtolower($username)))
{
return false;
}
}
/* old password ok, or admin called the function from the admin application (no old passwd available).*/
$encrypted_passwd = $this->encrypt_sql($new_passwd);
return $this->_update_passwd($encrypted_passwd,$new_passwd,$account_id,$admin,__FILE__);
return $this->_update_passwd($this->encrypt_sql($new_passwd),$new_passwd,$account_id,$admin);
}
function _update_passwd($encrypted_passwd,$new_passwd,$account_id,$admin=False,$file='')
{
/* This should only be called from this file */
if($file != EGW_API_INC . SEP . 'class.auth_sql.inc.php')
{
return False;
}
$this->db->query("UPDATE phpgw_accounts SET account_pwd='" . $encrypted_passwd . "',"
. "account_lastpwd_change='" . time()
. "' WHERE account_id=" . (int)$account_id,__LINE__,__FILE__);
$this->db->next_record();
if($this->db->affected_rows())
/**
* changes password in sql datababse
*
* @internal
* @param string $encrypted_passwd
* @param string $new_passwd cleartext
* @param int $account_id account id of user whose passwd should be changed
* @param boolean $admin=false called by admin, if not update password in the session
* @return boolean true if password successful changed, false otherwise
*/
function _update_passwd($encrypted_passwd,$new_passwd,$account_id,$admin=false)
{
$this->db->update($this->table,array(
'account_pwd' => $encrypted_passwd,
'account_lastpwd_change' => time(),
),array(
'account_id' => $account_id,
),__LINE__,__FILE__);
if(!$this->db->affected_rows()) return false;
if(!$admin)
{
$GLOBALS['egw']->session->appsession('password','phpgwapi',$new_passwd);
}
return $encrypted_passwd;
}
else
{
return False;
}
}
function update_lastlogin($account_id, $ip)
{
$GLOBALS['egw']->db->query("UPDATE phpgw_accounts SET account_lastloginfrom='"
. "$ip', account_lastlogin='" . time()
. "' WHERE account_id=" . (int)$account_id,__LINE__,__FILE__);
}
}
?>

View File

@ -31,6 +31,8 @@
function auth_()
{
$this->db = clone($GLOBALS['egw']->db);
$this->db->set_app('phpgwapi');
$this->table = 'egw_accounts';
}
function authenticate($username, $passwd)
@ -41,6 +43,16 @@
{
echo "<b>Debug SQL: uid - $username passwd - $passwd</b>";
}
$this->db->select($this->table,'account_lid,account_pwd',array(
'account_lid' => $username,
'account_status' => 'A',
'account_type' => 'u',
),__LINE__,__FILE__);
if (!$this->db->next_record() || $GLOBALS['egw_info']['server']['case_sensitive_username'] && $db->f('account_lid') != $username)
{
return false;
}
# Apache + mod_ssl provide the data in the environment
# Certificate (chain) verification occurs inside mod_ssl
@ -48,33 +60,10 @@
if(!isset($_SERVER['SSL_CLIENT_S_DN']))
{
# if we're not doing SSL authentication, behave like auth_sql
$this->db->query("SELECT * FROM phpgw_accounts WHERE account_lid = '$username' AND "
. "account_pwd='" . md5($passwd) . "' AND account_status ='A'",__LINE__,__FILE__);
$this->db->next_record();
return $this->compare_password($passwd,$this->db->f('account_pwd'),$this->type,strtolower($username));
}
else
{
# use username only for authentication, ignore X.509 subject in $passwd for now
$this->db->query("SELECT * FROM phpgw_accounts WHERE account_lid = '$username' AND account_status ='A'",__LINE__,__FILE__);
$this->db->next_record();
}
if($GLOBALS['egw_info']['server']['case_sensitive_username'] == true)
{
if($db->f('account_lid') != $username)
{
return false;
}
}
if($this->db->f('account_lid'))
{
return True;
}
else
{
return False;
}
}
function change_password($old_passwd, $new_passwd, $account_id = '')
{
@ -83,25 +72,17 @@
$account_id = $GLOBALS['egw_info']['user']['account_id'];
}
$encrypted_passwd = md5($new_passwd);
$encrypted_passwd = $this->encrypt_sql($new_passwd);
$GLOBALS['egw']->db->query("UPDATE phpgw_accounts SET account_pwd='" . md5($new_passwd) . "',"
. "account_lastpwd_change='" . time() . "' WHERE account_id=" . (int)$account_id,__LINE__,__FILE__);
$GLOBALS['egw']->db->update($this->table,array(
'account_pwd' => $encrypted_passwd,
'account_lastpwd_change' => time(),
),array(
'account_id' => $account_id,
),__LINE__,__FILE__);
$GLOBALS['egw']->session->appsession('password','phpgwapi',$new_passwd);
return $encrypted_passwd;
}
function update_lastlogin($account_id, $ip)
{
$GLOBALS['egw']->db->query("SELECT account_lastlogin FROM phpgw_accounts WHERE account_id=" . (int)$account_id,__LINE__,__FILE__);
$GLOBALS['egw']->db->next_record();
$this->previous_login = $GLOBALS['egw']->db->f('account_lastlogin');
$GLOBALS['egw']->db->query("UPDATE phpgw_accounts SET account_lastloginfrom='"
. "$ip', account_lastlogin='" . time()
. "' WHERE account_id=" . (int)$account_id,__LINE__,__FILE__);
}
}
?>

View File

@ -37,21 +37,21 @@
}
unset($d1);unset($d2);unset($d3);
/*!
@class common
@abstract common class that contains commonly used functions
/**
* common class that contains commonly used functions
*
*/
class common
{
var $debug_info; // An array with debugging info from the API
var $found_files;
/*!
@function cmp_version
@abstract Compares two Version strings and return 1 if str2 is newest (bigger version number) than str1
@discussion This function checks for major version only.
@param $str1
@param $str2
/**
* Compares two Version strings and return 1 if str2 is newest (bigger version number) than str1
*
* This function checks for major version only.
* @param $str1
* @param $str2
*/
function cmp_version($str1,$str2,$debug=False)
{
@ -77,12 +77,12 @@
}
}
/*!
@function cmp_version_long
@abstract Compares two Version strings and return 1 if str2 is newest (bigger version number) than str1
@discussion This function checks all fields. cmp_version() checks release version only.
@param $str1
@param $str2
/**
* Compares two Version strings and return 1 if str2 is newest (bigger version number) than str1
*
* This function checks all fields. cmp_version() checks release version only.
* @param $str1
* @param $str2
*/
function cmp_version_long($str1,$str2,$debug=False)
{
@ -114,11 +114,11 @@
}
// Convert an array into the format needed for the access column.
/*!
@function array_to_string
@abstract Convert an array into the format needed for the access column
@param $access
@param $array
/**
* Convert an array into the format needed for the access column
*
* @param $access
* @param $array
*/
function array_to_string($access,$array)
{
@ -175,11 +175,11 @@
}
// This is used for searching the access fields
/*!
@function sql_search
@abstract this function is used for searching the access fields
@param $table
@param $owner
/**
* this function is used for searching the access fields
*
* @param $table
* @param $owner
*/
function sql_search($table,$owner=0)
{
@ -201,10 +201,10 @@
}
// return a array of installed languages
/*!
@function getInstalledLanguages
@abstract return an array of installed languages
@result $installedLanguages; an array containing the installed languages
/**
* return an array of installed languages
*
* @return $installedLanguages; an array containing the installed languages
*/
function getInstalledLanguages()
{
@ -220,11 +220,11 @@
// return the preferred language of the users
// it's using HTTP_ACCEPT_LANGUAGE (send from the users browser)
// and ...(to find out which languages are installed)
/*!
@function getPreferredLanguage
@abstract return the preferred langugae of the users
@discussion it uses HTTP_ACCEPT_LANGUAGE (from the users browser) <br>
and .... to find out which languages are installed
/**
* return the preferred langugae of the users
*
* it uses HTTP_ACCEPT_LANGUAGE (from the users browser) <br>
* and .... to find out which languages are installed
*/
function getPreferredLanguage()
{
@ -257,13 +257,13 @@
return $retValue;
}
/*!
@function ldap_addslashes
@abstract escapes a string for use in searchfilters meant for ldap_search.
Escaped Characters are: '*', '(', ')', ' ', '\', NUL
It's actually a PHP-Bug, that we have to escape space.
For all other Characters, refer to RFC2254.
@param $string either a string to be escaped, or an array of values to be escaped
/**
* escapes a string for use in searchfilters meant for ldap_search.
*
* Escaped Characters are: '*', '(', ')', ' ', '\', NUL
* It's actually a PHP-Bug, that we have to escape space.
* For all other Characters, refer to RFC2254.
* @param $string either a string to be escaped, or an array of values to be escaped
*/
function ldap_addslashes($string='')
{
@ -271,12 +271,12 @@
}
// connect to the ldap server and return a handle
/*!
@function ldapConnect
@abstract connect to the ldap server and return a handle
@param $host ldap host
@param $dn ldap_root_dn
@param $passwd ldap_root_pw
/**
* connect to the ldap server and return a handle
*
* @param $host ldap host
* @param $dn ldap_root_dn
* @param $passwd ldap_root_pw
*/
function ldapConnect($host='', $dn='', $passwd='')
{
@ -319,6 +319,7 @@
}
printf("<b>Error: Can't connect to LDAP server %s!</b><br>",$host);
echo function_backtrace(1);
return False;
}
@ -340,18 +341,19 @@
}
printf("<b>Error: Can't bind to LDAP server: %s!</b><br>",$dn);
echo function_backtrace(1);
return False;
}
return $ds;
}
/*!
@function egw_exit
@abstract function to stop running an app
@discussion used to stop running an app in the middle of execution <br>
There may need to be some cleanup before hand
@param $call_footer boolean value to if true then call footer else exit
/**
* function to stop running an app
*
* used to stop running an app in the middle of execution <br>
* There may need to be some cleanup before hand
* @param $call_footer boolean value to if true then call footer else exit
*/
function egw_exit($call_footer = False)
{
@ -393,10 +395,10 @@
}
}
/*!
@function randomstring
@abstract return a random string of size $size
@param $size int-size of random string to return
/**
* return a random string of size $size
*
* @param $size int-size of random string to return
*/
function randomstring($size)
{
@ -422,10 +424,10 @@
return filesystem_separator();
}
/*!
@function error_list
@abstract This is used for reporting errors in a nice format.
@param $error - array of errors
/**
* This is used for reporting errors in a nice format.
*
* @param $error - array of errors
*/
function error_list($errors,$text='Error')
{
@ -443,13 +445,13 @@
return $html_error . '</table>';
}
/*!
@function check_owner
@abstract none yet
@param $record ?
@param $link ?
@param $label ?
@param $extravars
/**
* none yet
*
* @param $record ?
* @param $link ?
* @param $label ?
* @param $extravars
*/
// This is a depreciated function - use ACL instead (jengo)
function check_owner($record,$link,$label,$extravars = '')
@ -476,12 +478,12 @@
*/
}
/*!
@function display_fullname
@abstract return the fullname of a user
@param $lid account loginid
@param $firstname firstname
@param $lastname lastname
/**
* return the fullname of a user
*
* @param $lid account loginid
* @param $firstname firstname
* @param $lastname lastname
*/
function display_fullname($lid = '', $firstname = '', $lastname = '')
{
@ -529,10 +531,10 @@
return $name;
}
/*!
@function grab_owner_name
@abstract grab the owner name
@param $id account id
/**
* grab the owner name
*
* @param $id account id
*/
function grab_owner_name($accountid = '')
{
@ -540,18 +542,18 @@
return $this->display_fullname($lid,$fname,$lname);
}
/*!
@function create_tabs
@abstract create tabs
@param array $tabs an array repersenting the tabs you wish to display, each element
in the array is an array of 3 elements, 'label' which is the
text displaed on the tab (you should pass translated string,
create_tabs will not do <code>lang()</code> for you), 'link'
which is the uri, 'target', the frame name or '_blank' to show
page in a new browser window.
@param mixed $selected the tab whos key is $selected will be displayed as current tab
@param $fontsize optional
@return string return html that displays the tabs
/**
* create tabs
*
* @param array $tabs an array repersenting the tabs you wish to display, each element
* * * in the array is an array of 3 elements, 'label' which is the
* * * text displaed on the tab (you should pass translated string,
* * * create_tabs will not do <code>lang()</code> for you), 'link'
* * * which is the uri, 'target', the frame name or '_blank' to show
* * * page in a new browser window.
* @param mixed $selected the tab whos key is $selected will be displayed as current tab
* @param $fontsize optional
* @return string return html that displays the tabs
*/
function create_tabs($tabs, $selected, $fontsize = '')
{
@ -638,11 +640,11 @@
return $output_text;
}
/*!
@function get_app_dir
@abstract get directory of application
@discussion $appname can either be passed or derived from $GLOBALS['egw_info']['flags']['currentapp'];
@param $appname name of application
/**
* get directory of application
*
* $appname can either be passed or derived from $GLOBALS['egw_info']['flags']['currentapp'];
* @param $appname name of application
*/
function get_app_dir($appname = '')
{
@ -672,11 +674,11 @@
}
}
/*!
@function get_inc_dir
@abstract get inc (include dir) of application
@discussion $appname can either be passed or derived from $GLOBALS['egw_info']['flags']['currentapp'];
@param $appname name of application
/**
* get inc (include dir) of application
*
* $appname can either be passed or derived from $GLOBALS['egw_info']['flags']['currentapp'];
* @param $appname name of application
*/
function get_inc_dir($appname = '')
{
@ -706,11 +708,11 @@
}
}
/*!
@function list_themes
@abstract list themes available
@note themes can either be css file like in HEAD (if the template has a css-dir and has css-files in is) \
or ordinary .14 themes-files
/**
* list themes available
*
* themes can either be css file like in HEAD (if the template has a css-dir and has css-files in is) \
* or ordinary .14 themes-files
*/
function list_themes()
{
@ -776,10 +778,10 @@
return $list;
}
/*!
@function get_tpl_dir
@abstract get template dir of an application
@param $appname appication name optional can be derived from $GLOBALS['egw_info']['flags']['currentapp'];
/**
* get template dir of an application
*
* @param $appname appication name optional can be derived from $GLOBALS['egw_info']['flags']['currentapp'];
*/
function get_tpl_dir($appname = '')
{
@ -832,11 +834,11 @@
}
}
/*!
@function is_image_dir
@abstract checks if image_dir exists and has more than just a navbar-icon
@note this is just a workaround for idots, better to use find_image, which has a fallback \
on a per image basis to the default dir
/**
* checks if image_dir exists and has more than just a navbar-icon
*
* this is just a workaround for idots, better to use find_image, which has a fallback \
* on a per image basis to the default dir
*/
function is_image_dir($dir)
{
@ -858,10 +860,10 @@
return False;
}
/*!
@function get_image_dir
@abstract get image dir of an application
@param $appname application name optional can be derived from $GLOBALS['egw_info']['flags']['currentapp'];
/**
* get image dir of an application
*
* @param $appname application name optional can be derived from $GLOBALS['egw_info']['flags']['currentapp'];
*/
function get_image_dir($appname = '')
{
@ -897,10 +899,10 @@
}
}
/*!
@function get_image_path
@abstract get image path of an application
@param $appname appication name optional can be derived from $GLOBALS['egw_info']['flags']['currentapp'];
/**
* get image path of an application
*
* @param $appname appication name optional can be derived from $GLOBALS['egw_info']['flags']['currentapp'];
*/
function get_image_path($appname = '')
{
@ -1109,10 +1111,10 @@
}
}
/*!
@function navbar
@abstract none yet
@discussion *someone wanna add some detail here*
/**
* none yet
*
* *someone wanna add some detail here*
*/
function navbar()
{
@ -1205,9 +1207,9 @@
$GLOBALS['egw_info']['navbar']['logout']['icon_hover'] = $this->image_on('phpgwapi',Array('logout','nonav'),'-over');
}
/*!
@function app_header
@abstract load header.inc.php for an application
/**
* load header.inc.php for an application
*
*/
function app_header()
{
@ -1217,9 +1219,9 @@
}
}
/*!
@function egw_header
@abstract load the phpgw header
/**
* load the phpgw header
*
*/
function egw_header()
{
@ -1261,7 +1263,7 @@
*/
function get_css()
{
$tpl = createObject('phpgwapi.Template', $this->get_tpl_dir('phpgwapi'));
$tpl =& CreateObject('phpgwapi.Template', $this->get_tpl_dir('phpgwapi'));
$tpl->set_file('css', 'css.tpl');
$tpl->set_var($GLOBALS['egw_info']['theme']);
$app_css = '';
@ -1350,7 +1352,7 @@
if ($GLOBALS['egw_info']['flags']['include_xajax'])
{
require_once(EGW_SERVER_ROOT.'/phpgwapi/inc/xajax.inc.php');
$xajax = new xajax($GLOBALS['egw']->link('/xajax.php'));
$xajax =& new xajax($GLOBALS['egw']->link('/xajax.php'));
$xajax->registerFunction("doXMLHTTP");
$java_script .= $xajax->getJavascript();
@ -1408,46 +1410,47 @@
return @pack('H' . $len, $data);
}
/*!
@function encrypt
@abstract encrypt data passed to the function
@param $data data (string?) to be encrypted
/**
* encrypt data passed to the function
*
* @param $data data (string?) to be encrypted
*/
function encrypt($data)
{
return $GLOBALS['egw']->crypto->encrypt($data);
}
/*!
@function decrypt
@abstract decrypt $data
@param $data data to be decrypted
/**
* decrypt $data
*
* @param $data data to be decrypted
*/
function decrypt($data)
{
return $GLOBALS['egw']->crypto->decrypt($data);
}
/*!
@function encrypt_password
@abstract legacy wrapper for newer auth class function, encrypt_password
@abstract uses the encryption type set in setup and calls the appropriate encryption functions
@param $password password to encrypt
/**
* legacy wrapper for newer auth class function, encrypt_password
*
* uses the encryption type set in setup and calls the appropriate encryption functions
*
* @param $password password to encrypt
*/
function encrypt_password($password,$sql=False)
{
if(!@is_object($GLOBALS['egw']->auth))
{
$GLOBALS['egw']->auth = CreateObject('phpgwapi.auth');
$GLOBALS['egw']->auth =& CreateObject('phpgwapi.auth');
}
return $GLOBALS['egw']->auth->encrypt_password($password,$sql);
}
/*!
@function find_portal_order
@abstract find the current position of the app is the users portal_order preference
@param $app application id to find current position - required
@discussion No discussion
/**
* find the current position of the app is the users portal_order preference
*
* @param $app application id to find current position - required
* No discussion
*/
function find_portal_order($app)
{
@ -1468,9 +1471,9 @@
return -1;
}
/*!
@function hook
@abstract temp wrapper to new hooks class
/**
* temp wrapper to new hooks class
*
*/
function hook($location, $appname = '', $no_permission_check = False)
{
@ -1478,9 +1481,9 @@
return $GLOBALS['egw']->hooks->process($location, $order, $no_permission_check);
}
/*!
@function hook_single
@abstract temp wrapper to new hooks class
/**
* temp wrapper to new hooks class
*
*/
// Note: $no_permission_check should *ONLY* be used when it *HAS* to be. (jengo)
function hook_single($location, $appname = '', $no_permission_check = False)
@ -1489,9 +1492,9 @@
return $GLOBALS['egw']->hooks->single($location, $order, $no_permission_check);
}
/*!
@function hook_count
@abstract temp wrapper to new hooks class
/**
* temp wrapper to new hooks class
*
*/
function hook_count($location)
{
@ -1502,23 +1505,23 @@
/* Wrapper to the session->appsession() */
function appsession($data = '##NOTHING##')
{
$this->debug_info[] = '$phpgw->common->appsession() is a depreciated function'
. ' - use $phpgw->session->appsession() instead';
$this->debug_info[] = "\$GLOBALS['egw']->common->appsession() is a depreciated function"
. " - use \$GLOBALS['egw']->session->appsession() instead";
return $GLOBALS['egw']->session->appsession('default','',$data);
}
/*!
@function show_date
@abstract show current date
@param $t time - optional can be pulled from user preferences
@param $format - optional can be pulled from user prefernces
/**
* show current date
*
* @param $t time - optional can be pulled from user preferences
* @param $format - optional can be pulled from user prefernces
*/
function show_date($t = '', $format = '')
{
if(!is_object($GLOBALS['egw']->datetime))
{
$GLOBALS['egw']->datetime = createobject('phpgwapi.datetime');
$GLOBALS['egw']->datetime =& CreateObject('phpgwapi.datetime');
}
if (!$t)
@ -1544,13 +1547,12 @@
return adodb_date($format,$t);
}
/*!
@function dateformatorder
@abstract
@param $yearstr year - string
@param $monthstr month - string
@param $day day - string
@param $add_seperator boolean defaults to false
/**
* @abstract
* @param $yearstr year - string
* @param $monthstr month - string
* @param $day day - string
* @param $add_seperator boolean defaults to false
*/
function dateformatorder($yearstr,$monthstr,$daystr,$add_seperator = False)
{
@ -1572,12 +1574,12 @@
}
}
/*!
@function formattime
@abstract format the time takes settings from user preferences
@param $hour hour
@param $min minutes
@param $sec defaults to ''
/**
* format the time takes settings from user preferences
*
* @param $hour hour
* @param $min minutes
* @param $sec defaults to ''
*/
function formattime($hour,$min,$sec='')
{
@ -1618,10 +1620,10 @@
}
// This is not the best place for it, but it needs to be shared bewteen Aeromail and SM
/*!
@function get_email_passwd_ex
@abstract uses code in /email class msg to obtain the appropriate password for email
@param (none - it will abtain the info it needs on its own)
/**
* uses code in /email class msg to obtain the appropriate password for email
*
* @param (none - it will abtain the info it needs on its own)
*/
/*
function get_email_passwd_ex()
@ -1633,7 +1635,7 @@
}
else
{
$GLOBALS['egw']->msg = CreateObject('email.mail_msg');
$GLOBALS['egw']->msg =& CreateObject('email.mail_msg');
$do_free_me = True;
}
// use the Msg class to obtain the appropriate password
@ -1656,12 +1658,12 @@
*/
// This is not the best place for it, but it needs to be shared bewteen Aeromail and SM
/*!
@function create_emailpreferences
@abstract create email preferences
@discussion This is not the best place for it, but it needs to be shared between Aeromail and SM
@param $prefs
@param $account_id -optional defaults to : phpgw_info['user']['account_id']
/**
* create email preferences
*
* This is not the best place for it, but it needs to be shared between Aeromail and SM
* @param $prefs
* @param $account_id -optional defaults to : phpgw_info['user']['account_id']
*/
function create_emailpreferences($prefs='',$accountid='')
{
@ -1673,7 +1675,7 @@
}
else
{
$GLOBALS['egw']->msg = CreateObject('email.mail_msg');
$GLOBALS['egw']->msg =& CreateObject('email.mail_msg');
$do_free_me = True;
}
@ -1772,10 +1774,10 @@
*/
// This will be moved into the applications area.
/*!
@function check_code
@abstract ?
@discussion This will be moved into the applications area
/**
* ?
*
* This will be moved into the applications area
*/
function check_code($code)
{
@ -1863,12 +1865,12 @@
}
return $s;
}
/*!
@function phpgw_error
@abstract process error message
@param $error error
@param $line line
@param $file file
/**
* process error message
*
* @param $error error
* @param $line line
* @param $file file
*/
function phpgw_error($error,$line = '', $file = '')
{
@ -1885,10 +1887,10 @@
exit;
}
/*!
@function create_phpcode_from_array
@abstract create phpcode from array
@param $array - array
/**
* create phpcode from array
*
* @param $array - array
*/
function create_phpcode_from_array($array)
{
@ -1934,10 +1936,10 @@
}
// This will return the full phpgw_info array, used for debugging
/*!
@function debug_list_array_contents
@abstract return the full phpgw_info array for debugging
@param array - array
/**
* return the full phpgw_info array for debugging
*
* @param array - array
*/
function debug_list_array_contents($array)
{
@ -1978,9 +1980,9 @@
}
// This will return a list of functions in the API
/*!
@function debug_list_core_functions
@abstract return a list of functionsin the API
/**
* return a list of functionsin the API
*
*/
function debug_list_core_functions()
{
@ -1992,9 +1994,9 @@
}
// This will return a value for the next id an app/class may need to insert values into ldap.
/*!
@function next_id
@abstract return the next higher value for an integer, and increment it in the db.
/**
* return the next higher value for an integer, and increment it in the db.
*
*/
function next_id($appname,$min=0,$max=0)
{
@ -2034,9 +2036,9 @@
// This will return a value for the last id entered, which an app may need to check
// values for ldap.
/*!
@function last_id
@abstract return the current id in the next_id table for a particular app/class.
/**
* return the current id in the next_id table for a particular app/class.
*
*/
function last_id($appname,$min=0,$max=0)
{

View File

@ -28,6 +28,7 @@
var $appname;
var $config_data; // actual config-data
var $read_data; // config-data as read from db
var $table = 'egw_config';
function config($appname = '')
{
@ -44,7 +45,6 @@
$this->db = clone($GLOBALS['egw_setup']->db);
}
$this->db->set_app('phpgwapi');
$this->table = 'phpgw_config';
$this->appname = $appname;
}
@ -75,13 +75,12 @@
/**
* updates the whole repository for $this->appname, you have to call read_repository() before (!)
*
*/
function save_repository()
{
if (is_array($this->config_data))
{
$this->db->lock(array('phpgw_config'));
$this->db->lock(array($this->table));
foreach($this->config_data as $name => $value)
{
$this->save_value($name,$value);
@ -137,7 +136,7 @@
*/
function delete_repository()
{
$this->db->delete("delete from phpgw_config where config_app='" . $this->appname . "'",__LINE__,__FILE__);
$this->db->delete($this->table,array('config_app' => $this->appname),__LINE__,__FILE__);
}
/**
@ -149,6 +148,7 @@
{
unset($this->config_data[$variable_name]);
}
/**
* sets a single value in the repositry, you need to call save_repository after
*
@ -160,4 +160,3 @@
$this->config_data[$variable_name] = $variable_data;
}
}
?>

View File

@ -39,9 +39,9 @@
*/
function db_backup()
{
if (is_object($GLOBALS['phpgw_setup']->oProc)) // schema_proc already instanciated, use it
if (is_object($GLOBALS['egw_setup']->oProc)) // schema_proc already instanciated, use it
{
$this->schema_proc = $GLOBALS['phpgw_setup']->oProc;
$this->schema_proc = $GLOBALS['egw_setup']->oProc;
}
else
{
@ -50,25 +50,24 @@
$this->db = $this->schema_proc->m_odb;
$this->adodb = &$GLOBALS['egw']->ADOdb;
if (is_object($GLOBALS['phpgw_setup'])) // called from setup
if (is_object($GLOBALS['egw_setup'])) // called from setup
{
$tables = $this->adodb->MetaTables('TABLES');
if (in_array('phpgw_config',$tables))
if ($GLOBALS['egw_setup']->config_table)
{
$this->db->query("SELECT config_value FROM phpgw_config WHERE config_app='phpgwapi' AND config_name='backup_dir'",__LINE__,__FILE__);
$this->db->query("SELECT config_value FROM {$GLOBALS['egw_setup']->config_table} WHERE config_app='phpgwapi' AND config_name='backup_dir'",__LINE__,__FILE__);
$this->db->next_record();
if (!($this->backup_dir = $this->db->f(0)))
{
$this->db->query("SELECT config_value FROM phpgw_config WHERE config_app='phpgwapi' AND config_name='files_dir'",__LINE__,__FILE__);
$this->db->query("SELECT config_value FROM {$GLOBALS['egw_setup']->config_table} WHERE config_app='phpgwapi' AND config_name='files_dir'",__LINE__,__FILE__);
$this->db->next_record();
$this->backup_dir = $this->db->f(0).'/db_backup';
}
$this->db->query("SELECT config_value FROM phpgw_config WHERE config_app='phpgwapi' AND config_name='system_charset'",__LINE__,__FILE__);
$this->db->query("SELECT config_value FROM {$GLOBALS['egw_setup']->config_table} WHERE config_app='phpgwapi' AND config_name='system_charset'",__LINE__,__FILE__);
$this->db->next_record();
$this->charset = $this->db->f(0);
if (!$this->charset)
{
$this->db->query("SELECT content FROM phpgw_lang WHERE message_id='charset' AND app_name='common' AND lang!='en'",__LINE__,__FILE__);
$this->db->query("SELECT content FROM {$GLOBALS['egw_setup']->lang_table} WHERE message_id='charset' AND app_name='common' AND lang!='en'",__LINE__,__FILE__);
$this->db->next_record();
$this->charset = $this->db->f(0);
}

View File

@ -40,7 +40,7 @@
* @var egw_db-object $db instance of the db-object
*/
var $db;
var $config_table = 'phpgw_config';
var $config_table = 'egw_config';
/**
* Constructor: Instantiates the sub-classes

View File

@ -27,6 +27,8 @@
'clearstack',
'astable'
);
var $log_table = 'egw_log';
var $msg_table = 'egw_log_msg';
function message($parms)
{
@ -104,19 +106,19 @@
function commit()
{
$db = $GLOBALS['phpgw']->db;
// $db->lock('phpgw_log');
$db->query("insert into phpgw_log (log_date, log_user, log_app, log_severity) values "
."('". $GLOBALS['phpgw']->db->to_timestamp(time())
."','".(int)$GLOBALS['phpgw']->session->account_id
."','".$GLOBALS['phpgw_info']['flags']['currentapp']."'"
$db = clone($GLOBALS['egw']->db);
// $db->lock($this->log_table);
$db->query("insert into $this->log_table (log_date, log_user, log_app, log_severity) values "
."('". $GLOBALS['egw']->db->to_timestamp(time())
."','".(int)$GLOBALS['egw']->session->account_id
."','".$GLOBALS['egw_info']['flags']['currentapp']."'"
.",'".$this->severity()."'"
.")"
,__LINE__,__FILE__
);
$log_id = $db->get_last_insert_id('phpgw_log','log_id');
// $db->query('select max(log_id) as lid from phpgw_log');
$log_id = $db->get_last_insert_id($this->log_table,'log_id');
// $db->query('select max(log_id) as lid from $this->log_table');
// $db->next_record();
// $log_id = $db->f('lid');
// $db->unlock();
@ -125,12 +127,12 @@
for ($i = 0; $i < count($errorstack); $i++)
{
$err = $errorstack[$i];
$db->query("insert into phpgw_log_msg "
$db->query("insert into $this->msg_table "
."(Log_msg_log_id, log_msg_seq_no, log_msg_date, log_msg_severity, "
."log_msg_code, log_msg_msg, log_msg_parms, log_msg_file, log_msg_line) values "
."(" . $log_id
."," . $i
.", '" . $GLOBALS['phpgw']->db->to_timestamp($err->timestamp)
.", '" . $GLOBALS['egw']->db->to_timestamp($err->timestamp)
."', '". $err->severity . "'"
.", '". $err->code . "'"
.", '". $db->db_addslashes($err->msg) . "'"
@ -194,7 +196,7 @@
$html .= "\t<tr bgcolor=".'"'.$color.'"'.">\n";
$html .= "\t\t<td align=center>".$i."</td>\n";
$html .= "\t\t<td>".$GLOBALS['phpgw']->common->show_date($err->timestamp)."</td>\n";
$html .= "\t\t<td>".$GLOBALS['egw']->common->show_date($err->timestamp)."</td>\n";
$html .= "\t\t<td>".$err->app."&nbsp </td>\n";
$html .= "\t\t<td align=center>".$err->severity."</td>\n";
$html .= "\t\t<td>".$err->code."</td>\n";

View File

@ -27,6 +27,8 @@
'clearstack',
'astable'
);
var $log_table = 'egw_log';
var $msg_table = 'egw_log_msg';
function message($etext,$p0='',$p1='',$p2='',$p3='',$p4='',$p5='',$p6='',$p7='',$p8='',$p9='')
{
@ -82,11 +84,11 @@
function commit()
{
$db = $GLOBALS['phpgw']->db;
$db->query("insert into phpgw_log (log_date, log_user, log_app, log_severity) values "
."('". $GLOBALS['phpgw']->db->to_timestamp(time())
."','".$GLOBALS['phpgw']->session->account_id
."','".$GLOBALS['phpgw_info']['flags']['currentapp']."'"
$db = clone($GLOBALS['egw']->db);
$db->query("insert into $this->log_table (log_date, log_user, log_app, log_severity) values "
."('". $GLOBALS['egw']->db->to_timestamp(time())
."','".$GLOBALS['egw']->session->account_id
."','".$GLOBALS['egw_info']['flags']['currentapp']."'"
.",'".$this->severity()."'"
.")"
,__LINE__,__FILE__);
@ -95,11 +97,11 @@
for ($i = 0; $i < count($errorstack); $i++)
{
$err = $errorstack[$i];
$db->query("insert into phpgw_log_msg "
$db->query("insert into $this->msg_table "
. "(log_msg_seq_no, log_msg_date, "
. "log_msg_severity, log_msg_code, log_msg_msg, log_msg_parms) values "
. "(" . $i
. ", '" . $GLOBALS['phpgw']->db->to_timestamp($err->timestamp)
. ", '" . $GLOBALS['egw']->db->to_timestamp($err->timestamp)
. "', '". $err->severity . "'"
. ", '". $err->code . "'"
. ", '". $err->msg . "'"
@ -162,8 +164,8 @@
$html .= "\t<tr bgcolor=".'"'.$color.'"'.">\n";
$html .= "\t\t<td align=center>".$i."</td>\n";
$html .= "\t\t<td>".$GLOBALS['phpgw']->common->show_date($err->timestamp)."</td>\n";
$html .= "\t\t<td>".$GLOBALS['phpgw_info']['flags']['currentapp']."&nbsp </td>\n";
$html .= "\t\t<td>".$GLOBALS['egw']->common->show_date($err->timestamp)."</td>\n";
$html .= "\t\t<td>".$GLOBALS['egw_info']['flags']['currentapp']."&nbsp </td>\n";
$html .= "\t\t<td align=center>".$err->severity."</td>\n";
$html .= "\t\t<td>".$err->code."</td>\n";
$html .= "\t\t<td>".$err->langmsg()."</td>\n";

View File

@ -580,7 +580,7 @@
$this->log_access($this->sessionid,$login,$user_ip,$this->account_id);
}
$this->appsession('account_previous_login','phpgwapi',$GLOBALS['egw']->auth->previous_login);
$GLOBALS['egw']->auth->update_lastlogin($this->account_id,$user_ip);
$GLOBALS['egw']->accounts->update_lastlogin($this->account_id,$user_ip);
$GLOBALS['egw']->db->transaction_commit();
//if (!$this->sessionid) echo "<p>session::create(login='$login') = '$this->sessionid': lid='$this->account_lid', domain='$this->account_domain'</p>\n";
@ -873,7 +873,7 @@
$this->log_access($this->sessionid,$login,$user_ip,$this->account_id);
$this->appsession('account_previous_login','phpgwapi',$GLOBALS['egw']->auth->previous_login);
$GLOBALS['egw']->auth->update_lastlogin($this->account_id,$user_ip);
$GLOBALS['egw']->accounts->update_lastlogin($this->account_id,$user_ip);
$GLOBALS['egw']->db->transaction_commit();
return array($this->sessionid,$this->kp3);

View File

@ -53,7 +53,7 @@
}
else
{
$GLOBALS['phpgw']->db->query("SELECT config_value FROM phpgw_config WHERE config_app='phpgwapi' AND config_name='system_charset'",__LINE__,__FILE__);
$GLOBALS['phpgw']->db->query("SELECT config_value FROM egw_config WHERE config_app='phpgwapi' AND config_name='system_charset'",__LINE__,__FILE__);
if($GLOBALS['phpgw']->db->next_record())
{
$this->system_charset = $GLOBALS['phpgw']->db->f(0);

View File

@ -60,7 +60,7 @@
$this->db->set_app('phpgwapi');
$this->lang_table = 'phpgw_lang';
$this->languages_table = 'phpgw_languages';
$this->config_table = 'phpgw_config';
$this->config_table = 'egw_config';
if (!isset($GLOBALS['egw_setup']))
{

View File

@ -131,7 +131,7 @@
/*
function system_listApps()
{
$GLOBALS['phpgw']->db->query("SELECT * FROM phpgw_applications WHERE app_enabled<3",__LINE__,__FILE__);
$GLOBALS['phpgw']->db->query("SELECT * FROM egw_applications WHERE app_enabled<3",__LINE__,__FILE__);
$apps = array();
if($GLOBALS['phpgw']->db->num_rows())
{

View File

@ -904,7 +904,7 @@
function _xmlrpcs_listApps($server,$m)
{
$m->getParam(0);
$GLOBALS['egw']->db->query("SELECT * FROM phpgw_applications WHERE app_enabled<3",__LINE__,__FILE__);
$GLOBALS['egw']->db->query("SELECT * FROM egw_applications WHERE app_enabled<3",__LINE__,__FILE__);
if($GLOBALS['egw']->db->num_rows())
{
while($GLOBALS['egw']->db->next_record())

View File

@ -150,9 +150,20 @@
$oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('zt','Chinese(Taiwan)')");
$oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('zu','Zulu')");
$oProc->query("INSERT INTO phpgw_config (config_app, config_name, config_value) VALUES ('phpgwapi','sessions_checkip','True')");
$oProc->query("INSERT INTO phpgw_config (config_app, config_name, config_value) VALUES ('phpgwapi','image_type','1')");
$oProc->query("INSERT INTO phpgw_config (config_app, config_name, config_value) VALUES ('phpgwapi','asyncservice','fallback')");
foreach(array(
'sessions_checkip' => 'True',
'image_type' => '1',
'asyncservice' => 'fallback',
) as $name => $value)
{
$oProc->insert($GLOBALS['egw_setup']->config_table,array(
'config_value' => $value,
),array(
'config_app' => 'phpgwapi',
'config_name' => $name,
),__FILE__,__LINE__);
}
$oProc->query("INSERT INTO phpgw_interserv(server_name,server_host,server_url,trust_level,trust_rel,server_mode) VALUES ('eGW demo',NULL,'http://www.egroupware.org/egroupware/xmlrpc.php',99,0,'xmlrpc')");

View File

@ -13,17 +13,17 @@
/* Basic information about this app */
$setup_info['phpgwapi']['name'] = 'phpgwapi';
$setup_info['phpgwapi']['title'] = 'phpgwapi';
$setup_info['phpgwapi']['version'] = '1.0.1.012';
$setup_info['phpgwapi']['title'] = 'API';
$setup_info['phpgwapi']['version'] = '1.0.1.014';
$setup_info['phpgwapi']['versions']['current_header'] = '1.28';
$setup_info['phpgwapi']['enable'] = 3;
$setup_info['phpgwapi']['app_order'] = 1;
/* The tables this app creates */
$setup_info['phpgwapi']['tables'][] = 'phpgw_config';
$setup_info['phpgwapi']['tables'][] = 'phpgw_applications';
$setup_info['phpgwapi']['tables'][] = 'phpgw_acl';
$setup_info['phpgwapi']['tables'][] = 'phpgw_accounts';
$setup_info['phpgwapi']['tables'][] = 'egw_config';
$setup_info['phpgwapi']['tables'][] = 'egw_applications';
$setup_info['phpgwapi']['tables'][] = 'egw_acl';
$setup_info['phpgwapi']['tables'][] = 'egw_accounts';
$setup_info['phpgwapi']['tables'][] = 'phpgw_preferences';
$setup_info['phpgwapi']['tables'][] = 'phpgw_sessions';
$setup_info['phpgwapi']['tables'][] = 'phpgw_app_sessions';
@ -35,8 +35,8 @@
$setup_info['phpgwapi']['tables'][] = 'phpgw_categories';
$setup_info['phpgwapi']['tables'][] = 'phpgw_addressbook';
$setup_info['phpgwapi']['tables'][] = 'phpgw_addressbook_extra';
$setup_info['phpgwapi']['tables'][] = 'phpgw_log';
$setup_info['phpgwapi']['tables'][] = 'phpgw_log_msg';
$setup_info['phpgwapi']['tables'][] = 'egw_log';
$setup_info['phpgwapi']['tables'][] = 'egw_log_msg';
$setup_info['phpgwapi']['tables'][] = 'phpgw_interserv';
$setup_info['phpgwapi']['tables'][] = 'egw_vfs';
$setup_info['phpgwapi']['tables'][] = 'phpgw_history_log';

View File

@ -13,7 +13,7 @@
// $Source$
$phpgw_baseline = array(
'phpgw_config' => array(
'egw_config' => array(
'fd' => array(
'config_app' => array('type' => 'varchar','precision' => '50','nullable' => False),
'config_name' => array('type' => 'varchar','precision' => '255','nullable' => False),
@ -24,7 +24,7 @@
'ix' => array(),
'uc' => array()
),
'phpgw_applications' => array(
'egw_applications' => array(
'fd' => array(
'app_id' => array('type' => 'auto','precision' => '4','nullable' => False),
'app_name' => array('type' => 'varchar','precision' => '25','nullable' => False),
@ -38,7 +38,7 @@
'ix' => array(array('app_enabled','app_order')),
'uc' => array('app_name')
),
'phpgw_acl' => array(
'egw_acl' => array(
'fd' => array(
'acl_appname' => array('type' => 'varchar','precision' => '50','nullable' => False),
'acl_location' => array('type' => 'varchar','precision' => '255','nullable' => False),
@ -50,7 +50,7 @@
'ix' => array('acl_account',array('acl_location','acl_account'),array('acl_appname','acl_account')),
'uc' => array()
),
'phpgw_accounts' => array(
'egw_accounts' => array(
'fd' => array(
'account_id' => array('type' => 'auto','nullable' => False),
'account_lid' => array('type' => 'varchar','precision' => '25','nullable' => False),
@ -262,7 +262,7 @@
'ix' => array(),
'uc' => array()
),
'phpgw_log' => array(
'egw_log' => array(
'fd' => array(
'log_id' => array('type' => 'auto','precision' => '4','nullable' => False),
'log_date' => array('type' => 'timestamp','nullable' => False),
@ -275,7 +275,7 @@
'ix' => array(),
'uc' => array()
),
'phpgw_log_msg' => array(
'egw_log_msg' => array(
'fd' => array(
'log_msg_log_id' => array('type' => 'int','precision' => '4','nullable' => False),
'log_msg_seq_no' => array('type' => 'int','precision' => '4','nullable' => False),
@ -448,7 +448,7 @@
'quota' => array('type' => 'int','precision' => '4','nullable' => False)
),
'pk' => array('account_id'),
'fk' => array('account_id' => array('phpgw_accounts' => 'account_id')),
'fk' => array('account_id' => array('egw_accounts' => 'account_id')),
'ix' => array(),
'uc' => array()
),
@ -459,7 +459,7 @@
'acl_rights' => array('type' => 'int','precision' => '4','nullable' => False)
),
'pk' => array('account_id','file_id'),
'fk' => array('account_id' => array('phpgw_accounts' => 'account_id'),'file_id' => array('phpgw_vfs2_files' => 'file_id')),
'fk' => array('account_id' => array('egw_accounts' => 'account_id'),'file_id' => array('phpgw_vfs2_files' => 'file_id')),
'ix' => array(),
'uc' => array()
),

View File

@ -43,12 +43,12 @@
$test[] = '1.0.0.004';
function phpgwapi_upgrade1_0_0_004()
{
$GLOBALS['phpgw_setup']->oProc->RenameColumn('phpgw_async','id','async_id');
$GLOBALS['phpgw_setup']->oProc->RenameColumn('phpgw_async','next','async_next');
$GLOBALS['phpgw_setup']->oProc->RenameColumn('phpgw_async','times','async_times');
$GLOBALS['phpgw_setup']->oProc->RenameColumn('phpgw_async','method','async_method');
$GLOBALS['phpgw_setup']->oProc->RenameColumn('phpgw_async','data','async_data');
$GLOBALS['phpgw_setup']->oProc->RenameColumn('phpgw_async','account_id','async_account_id');
$GLOBALS['egw_setup']->oProc->RenameColumn('phpgw_async','id','async_id');
$GLOBALS['egw_setup']->oProc->RenameColumn('phpgw_async','next','async_next');
$GLOBALS['egw_setup']->oProc->RenameColumn('phpgw_async','times','async_times');
$GLOBALS['egw_setup']->oProc->RenameColumn('phpgw_async','method','async_method');
$GLOBALS['egw_setup']->oProc->RenameColumn('phpgw_async','data','async_data');
$GLOBALS['egw_setup']->oProc->RenameColumn('phpgw_async','account_id','async_account_id');
$GLOBALS['setup_info']['phpgwapi']['currentver'] = '1.0.1.001';
return $GLOBALS['setup_info']['phpgwapi']['currentver'];
@ -93,12 +93,12 @@
function phpgwapi_upgrade1_0_1_001()
{
// removing the ACL entries of deleted accounts
$GLOBALS['phpgw_setup']->setup_account_object();
$GLOBALS['egw_setup']->setup_account_object();
if (($all_accounts = $GLOBALS['phpgw']->accounts->search(array('type'=>'both'))))
{
$all_accounts = array_keys($all_accounts);
$GLOBALS['phpgw_setup']->oProc->query("DELETE FROM phpgw_acl WHERE acl_account NOT IN (".implode(',',$all_accounts).")",__LINE__,__FILE__);
$GLOBALS['phpgw_setup']->oProc->query("DELETE FROM phpgw_acl WHERE acl_appname='phpgw_group' AND acl_location NOT IN ('".implode("','",$all_accounts)."')",__LINE__,__FILE__);
$GLOBALS['egw_setup']->oProc->query("DELETE FROM phpgw_acl WHERE acl_account NOT IN (".implode(',',$all_accounts).")",__LINE__,__FILE__);
$GLOBALS['egw_setup']->oProc->query("DELETE FROM phpgw_acl WHERE acl_appname='phpgw_group' AND acl_location NOT IN ('".implode("','",$all_accounts)."')",__LINE__,__FILE__);
}
$GLOBALS['setup_info']['phpgwapi']['currentver'] = '1.0.1.002';
return $GLOBALS['setup_info']['phpgwapi']['currentver'];
@ -108,26 +108,26 @@
$test[] = '1.0.1.002';
function phpgwapi_upgrade1_0_1_002()
{
$GLOBALS['phpgw_setup']->oProc->RenameColumn('phpgw_vfs','file_id','vfs_file_id');
$GLOBALS['phpgw_setup']->oProc->RenameColumn('phpgw_vfs','owner_id','vfs_owner_id');
$GLOBALS['phpgw_setup']->oProc->RenameColumn('phpgw_vfs','createdby_id','vfs_createdby_id');
$GLOBALS['phpgw_setup']->oProc->RenameColumn('phpgw_vfs','modifiedby_id','vfs_modifiedby_id');
$GLOBALS['phpgw_setup']->oProc->RenameColumn('phpgw_vfs','created','vfs_created');
$GLOBALS['phpgw_setup']->oProc->RenameColumn('phpgw_vfs','modified','vfs_modified');
$GLOBALS['phpgw_setup']->oProc->RenameColumn('phpgw_vfs','size','vfs_size');
$GLOBALS['phpgw_setup']->oProc->RenameColumn('phpgw_vfs','mime_type','vfs_mime_type');
$GLOBALS['phpgw_setup']->oProc->RenameColumn('phpgw_vfs','deleteable','vfs_deleteable');
$GLOBALS['phpgw_setup']->oProc->RenameColumn('phpgw_vfs','comment','vfs_comment');
$GLOBALS['phpgw_setup']->oProc->RenameColumn('phpgw_vfs','app','vfs_app');
$GLOBALS['phpgw_setup']->oProc->RenameColumn('phpgw_vfs','directory','vfs_directory');
$GLOBALS['phpgw_setup']->oProc->RenameColumn('phpgw_vfs','name','vfs_name');
$GLOBALS['phpgw_setup']->oProc->RenameColumn('phpgw_vfs','link_directory','vfs_link_directory');
$GLOBALS['phpgw_setup']->oProc->RenameColumn('phpgw_vfs','link_name','vfs_link_name');
$GLOBALS['phpgw_setup']->oProc->RenameColumn('phpgw_vfs','version','vfs_version');
$GLOBALS['phpgw_setup']->oProc->RenameColumn('phpgw_vfs','content','vfs_content');
$GLOBALS['phpgw_setup']->oProc->RenameTable('phpgw_vfs','egw_vfs');
$GLOBALS['egw_setup']->oProc->RenameColumn('phpgw_vfs','file_id','vfs_file_id');
$GLOBALS['egw_setup']->oProc->RenameColumn('phpgw_vfs','owner_id','vfs_owner_id');
$GLOBALS['egw_setup']->oProc->RenameColumn('phpgw_vfs','createdby_id','vfs_createdby_id');
$GLOBALS['egw_setup']->oProc->RenameColumn('phpgw_vfs','modifiedby_id','vfs_modifiedby_id');
$GLOBALS['egw_setup']->oProc->RenameColumn('phpgw_vfs','created','vfs_created');
$GLOBALS['egw_setup']->oProc->RenameColumn('phpgw_vfs','modified','vfs_modified');
$GLOBALS['egw_setup']->oProc->RenameColumn('phpgw_vfs','size','vfs_size');
$GLOBALS['egw_setup']->oProc->RenameColumn('phpgw_vfs','mime_type','vfs_mime_type');
$GLOBALS['egw_setup']->oProc->RenameColumn('phpgw_vfs','deleteable','vfs_deleteable');
$GLOBALS['egw_setup']->oProc->RenameColumn('phpgw_vfs','comment','vfs_comment');
$GLOBALS['egw_setup']->oProc->RenameColumn('phpgw_vfs','app','vfs_app');
$GLOBALS['egw_setup']->oProc->RenameColumn('phpgw_vfs','directory','vfs_directory');
$GLOBALS['egw_setup']->oProc->RenameColumn('phpgw_vfs','name','vfs_name');
$GLOBALS['egw_setup']->oProc->RenameColumn('phpgw_vfs','link_directory','vfs_link_directory');
$GLOBALS['egw_setup']->oProc->RenameColumn('phpgw_vfs','link_name','vfs_link_name');
$GLOBALS['egw_setup']->oProc->RenameColumn('phpgw_vfs','version','vfs_version');
$GLOBALS['egw_setup']->oProc->RenameColumn('phpgw_vfs','content','vfs_content');
$GLOBALS['egw_setup']->oProc->RenameTable('phpgw_vfs','egw_vfs');
$GLOBALS['phpgw_setup']->oProc->RefreshTable('egw_vfs',array(
$GLOBALS['egw_setup']->oProc->RefreshTable('egw_vfs',array(
'fd' => array(
'vfs_file_id' => array('type' => 'auto','nullable' => False),
'vfs_owner_id' => array('type' => 'int','precision' => '4','nullable' => False),
@ -160,7 +160,7 @@
$test[] = '1.0.1.003';
function phpgwapi_upgrade1_0_1_003()
{
$GLOBALS['phpgw_setup']->oProc->CreateTable(
$GLOBALS['egw_setup']->oProc->CreateTable(
'egw_api_content_history', array(
'fd' => array(
'sync_appname' => array('type' => 'varchar','precision' => '60','nullable' => False),
@ -186,13 +186,13 @@
$test[] = '1.0.1.004';
function phpgwapi_upgrade1_0_1_004()
{
$GLOBALS['phpgw_setup']->oProc->AlterColumn('egw_api_content_history','sync_added',array(
$GLOBALS['egw_setup']->oProc->AlterColumn('egw_api_content_history','sync_added',array(
'type' => 'timestamp'
));
$GLOBALS['phpgw_setup']->oProc->AlterColumn('egw_api_content_history','sync_modified',array(
$GLOBALS['egw_setup']->oProc->AlterColumn('egw_api_content_history','sync_modified',array(
'type' => 'timestamp'
));
$GLOBALS['phpgw_setup']->oProc->AlterColumn('egw_api_content_history','sync_deleted',array(
$GLOBALS['egw_setup']->oProc->AlterColumn('egw_api_content_history','sync_deleted',array(
'type' => 'timestamp'
));
@ -207,7 +207,7 @@
* VFS version 2 *
\*********************************************************************/
$GLOBALS['phpgw_setup']->oProc->CreateTable(
$GLOBALS['egw_setup']->oProc->CreateTable(
'phpgw_vfs2_mimetypes', array(
'fd' => array(
'mime_id' => array('type' => 'auto','nullable' => False),
@ -225,7 +225,7 @@
)
);
$GLOBALS['phpgw_setup']->oProc->CreateTable(
$GLOBALS['egw_setup']->oProc->CreateTable(
'phpgw_vfs2_files' , array(
'fd' => array(
'file_id' => array('type' => 'auto','nullable' => False),
@ -254,7 +254,7 @@
)
);
$GLOBALS['phpgw_setup']->oProc->CreateTable(
$GLOBALS['egw_setup']->oProc->CreateTable(
'phpgw_vfs2_customfields' , array(
'fd' => array(
'customfield_id' => array('type' => 'auto','nullable' => False),
@ -271,7 +271,7 @@
)
);
$GLOBALS['phpgw_setup']->oProc->CreateTable(
$GLOBALS['egw_setup']->oProc->CreateTable(
'phpgw_vfs2_quota' , array(
'fd' => array(
'account_id' => array('type' => 'int','precision' => 4,'nullable' => false),
@ -284,7 +284,7 @@
)
);
$GLOBALS['phpgw_setup']->oProc->CreateTable(
$GLOBALS['egw_setup']->oProc->CreateTable(
'phpgw_vfs2_shares' , array(
'fd' => array(
'account_id' => array('type' => 'int','precision' => 4,'nullable' => false),
@ -298,7 +298,7 @@
)
);
$GLOBALS['phpgw_setup']->oProc->CreateTable(
$GLOBALS['egw_setup']->oProc->CreateTable(
'phpgw_vfs2_versioning' , array(
'fd' => array(
'version_id' => array('type' => 'auto', 'nullable' => false),
@ -320,7 +320,7 @@
)
);
$GLOBALS['phpgw_setup']->oProc->CreateTable(
$GLOBALS['egw_setup']->oProc->CreateTable(
'phpgw_vfs2_customfields_data' , array(
'fd' => array(
'file_id' => array('type' => 'int','precision' => 4,'nullable' => false),
@ -334,7 +334,7 @@
)
);
$GLOBALS['phpgw_setup']->oProc->CreateTable(
$GLOBALS['egw_setup']->oProc->CreateTable(
'phpgw_vfs2_prefixes' , array(
'fd' => array(
'prefix_id' => array('type' => 'auto','nullable' => false),
@ -360,7 +360,7 @@
include PHPGW_INCLUDE_ROOT.'/phpgwapi/setup/default_records_mime.inc.php';
$GLOBALS['phpgw_setup']->oProc->query("INSERT INTO phpgw_vfs2_files (mime_id,owner_id,createdby_id,size,directory,name)
$GLOBALS['egw_setup']->oProc->query("INSERT INTO phpgw_vfs2_files (mime_id,owner_id,createdby_id,size,directory,name)
SELECT mime_id,0,0,4096,'/','' FROM phpgw_vfs2_mimetypes WHERE mime='Directory'");
if ($GLOBALS['DEBUG'])
@ -377,7 +377,7 @@
$test[] = '1.0.1.006';
function phpgwapi_upgrade1_0_1_006()
{
$GLOBALS['phpgw_setup']->oProc->RenameTable('phpgw_async','egw_async');
$GLOBALS['egw_setup']->oProc->RenameTable('phpgw_async','egw_async');
$GLOBALS['setup_info']['phpgwapi']['currentver'] = '1.0.1.007';
return $GLOBALS['setup_info']['phpgwapi']['currentver'];
@ -387,23 +387,23 @@
function phpgwapi_upgrade1_0_1_007()
{
//Creating cached values for modified and modifiedby_id
$GLOBALS['phpgw_setup']->oProc->AddColumn('phpgw_vfs2_files', 'modifiedby_id', array('type' => 'int','precision' => 4));
$GLOBALS['phpgw_setup']->oProc->AddColumn('phpgw_vfs2_files', 'modified', array('type' => 'timestamp', 'nullable' => true));
$GLOBALS['egw_setup']->oProc->AddColumn('phpgw_vfs2_files', 'modifiedby_id', array('type' => 'int','precision' => 4));
$GLOBALS['egw_setup']->oProc->AddColumn('phpgw_vfs2_files', 'modified', array('type' => 'timestamp', 'nullable' => true));
//Updating existing values
$sql = "SELECT max(modified) as mod, file_id, modifiedby_id from phpgw_vfs2_versioning group by file_id";
$GLOBALS['phpgw_setup']->oProc->m_odb->query($sql,__LINE__,__FILE__);
$GLOBALS['egw_setup']->oProc->m_odb->query($sql,__LINE__,__FILE__);
$files_to_change = array();
while ($GLOBALS['phpgw_setup']->oProc->m_odb->next_record())
while ($GLOBALS['egw_setup']->oProc->m_odb->next_record())
{
$files_to_change[] = $GLOBALS['phpgw_setup']->oProc->m_odb->Record;
$files_to_change[] = $GLOBALS['egw_setup']->oProc->m_odb->Record;
}
foreach ($files_to_change as $key => $val)
{
$GLOBALS['phpgw_setup']->oProc->m_odb->update('phpgw_vfs2_files',
$GLOBALS['egw_setup']->oProc->m_odb->update('phpgw_vfs2_files',
array(
'modified' => $val['mod'],
'modifiedby_id' => $val['modifiedby_id']
@ -419,7 +419,7 @@
$test[] = '1.0.1.008';
function phpgwapi_upgrade1_0_1_008()
{
$GLOBALS['phpgw_setup']->oProc->CreateTable(
$GLOBALS['egw_setup']->oProc->CreateTable(
'egw_contentmap', array(
'fd' => array(
'map_id' => array('type' => 'varchar', 'precision' => '255', 'nullable' => False),
@ -435,7 +435,7 @@
)
);
$GLOBALS['phpgw_setup']->oProc->CreateTable(
$GLOBALS['egw_setup']->oProc->CreateTable(
'egw_syncmldevinfo', array(
'fd' => array(
'dev_id' => array('type' => 'varchar', 'precision' => '255', 'nullable' => False),
@ -457,7 +457,7 @@
)
);
$GLOBALS['phpgw_setup']->oProc->CreateTable(
$GLOBALS['egw_setup']->oProc->CreateTable(
'egw_syncmlsummary', array(
'fd' => array(
'dev_id' => array('type' => 'varchar', 'precision' => '255', 'nullable' => False),
@ -485,7 +485,7 @@
include(EGW_SERVER_ROOT . '/home/setup/setup.inc.php');
$home_version = $setup_info['home']['version'];
$GLOBALS['phpgw_setup']->db->insert('phpgw_applications',array(
$GLOBALS['egw_setup']->db->insert($GLOBALS['egw_setup']->applications_table,array(
'app_enabled' => $setup_info['home']['enable'],
'app_order' => $setup_info['home']['app_order'],
'app_version' => $setup_info['home']['version'],
@ -495,19 +495,19 @@
),__LINE__,__FILE__);
// give all users and groups with preferences rights, rights for the home app.
$GLOBALS['phpgw_setup']->db->select('phpgw_acl','acl_account',array(
$GLOBALS['egw_setup']->db->select('phpgw_acl','acl_account',array(
'acl_appname' => 'preferences',
'acl_location' => 'run',
'acl_rights' => 1,
),__LINE__,__FILE__);
$accounts_with_preference_rights = array();
while (($row = $GLOBALS['phpgw_setup']->db->row(true)))
while (($row = $GLOBALS['egw_setup']->db->row(true)))
{
$accounts_with_preference_rights[] = $row['acl_account'];
}
foreach($accounts_with_preference_rights as $account)
{
$GLOBALS['phpgw_setup']->db->insert('phpgw_acl',array(
$GLOBALS['egw_setup']->db->insert('phpgw_acl',array(
'acl_rights' => 1,
),array(
'acl_appname' => 'home',
@ -524,18 +524,18 @@
$test[] = '1.0.1.010';
function phpgwapi_upgrade1_0_1_010()
{
$GLOBALS['phpgw_setup']->oProc->AlterColumn('phpgw_sessions','session_ip',array(
$GLOBALS['egw_setup']->oProc->AlterColumn('phpgw_sessions','session_ip',array(
'type' => 'varchar',
'precision' => '40'
));
$GLOBALS['phpgw_setup']->oProc->AlterColumn('phpgw_access_log','ip',array(
$GLOBALS['egw_setup']->oProc->AlterColumn('phpgw_access_log','ip',array(
'type' => 'varchar',
'precision' => '40',
'nullable' => False
));
$GLOBALS['phpgw_setup']->oProc->AlterColumn('phpgw_access_log','loginid',array(
$GLOBALS['egw_setup']->oProc->AlterColumn('phpgw_access_log','loginid',array(
'type' => 'varchar',
'precision' => '128'
));
@ -548,15 +548,15 @@
function phpgwapi_upgrade1_0_1_011()
{
// moving the egw_links table into the API
if ($GLOBALS['phpgw_setup']->oProc->GetTableDefinition('phpgw_links'))
if ($GLOBALS['egw_setup']->oProc->GetTableDefinition('phpgw_links'))
{
// table exists with old name ==> rename it to new one
$GLOBALS['phpgw_setup']->oProc->RenameTable('phpgw_links','egw_links');
$GLOBALS['egw_setup']->oProc->RenameTable('phpgw_links','egw_links');
}
elseif (!$GLOBALS['phpgw_setup']->oProc->GetTableDefinition('egw_links'))
elseif (!$GLOBALS['egw_setup']->oProc->GetTableDefinition('egw_links'))
{
// table does not exist at all (infolog not installed) ==> create it
$GLOBALS['phpgw_setup']->oProc->CreateTable('egw_links',array(
$GLOBALS['egw_setup']->oProc->CreateTable('egw_links',array(
'fd' => array(
'link_id' => array('type' => 'auto','nullable' => False),
'link_app1' => array('type' => 'varchar','precision' => '25','nullable' => False),
@ -574,9 +574,34 @@
));
}
// move the link-configuration to the api
$GLOBALS['phpgw_setup']->oProc->query('UPDATE '.$GLOBALS['phpgw_setup']->config_table." SET config_app='phpgwapi' WHERE config_app='infolog' AND config_name IN ('link_pathes','send_file_ips')",__LINE__,__FILE__);
$GLOBALS['egw_setup']->oProc->query('UPDATE '.$GLOBALS['egw_setup']->config_table." SET config_app='phpgwapi' WHERE config_app='infolog' AND config_name IN ('link_pathes','send_file_ips')",__LINE__,__FILE__);
$GLOBALS['setup_info']['phpgwapi']['currentver'] = '1.0.1.012';
return $GLOBALS['setup_info']['phpgwapi']['currentver'];
}
?>
$test[] = '1.0.1.012';
function phpgwapi_upgrade1_0_1_012()
{
$GLOBALS['egw_setup']->oProc->RenameTable('phpgw_accounts','egw_accounts');
$GLOBALS['egw_setup']->accounts_table = 'egw_accounts';
$GLOBALS['egw_setup']->oProc->RenameTable('phpgw_acl','egw_acl');
$GLOBALS['egw_setup']->acl_table = 'egw_acl';
$GLOBALS['egw_setup']->oProc->RenameTable('phpgw_log','egw_log');
$GLOBALS['egw_setup']->oProc->RenameTable('phpgw_log_msg','egw_log_msg');
$GLOBALS['setup_info']['phpgwapi']['currentver'] = '1.0.1.013';
return $GLOBALS['setup_info']['phpgwapi']['currentver'];
}
$test[] = '1.0.1.013';
function phpgwapi_upgrade1_0_1_013()
{
$GLOBALS['egw_setup']->oProc->RenameTable('phpgw_config','egw_config');
$GLOBALS['egw_setup']->config_table = 'egw_config';
$GLOBALS['egw_setup']->oProc->RenameTable('phpgw_applications','egw_applications');
$GLOBALS['egw_setup']->applications_table = 'egw_applications';
$GLOBALS['setup_info']['phpgwapi']['currentver'] = '1.0.1.014';
return $GLOBALS['setup_info']['phpgwapi']['currentver'];
}

View File

@ -16,7 +16,7 @@
{
$file['Change your Password'] = $GLOBALS['egw']->link('/index.php','menuaction=preferences.uipassword.change');
}
$file['change your settings'] = $GLOBALS['egw']->link('/index.php','menuaction=preferences.uisettings.index&appname=preferences');
$file['common preferences'] = $GLOBALS['egw']->link('/index.php','menuaction=preferences.uisettings.index&appname=preferences');
display_section('preferences',$file);
?>

View File

@ -14,64 +14,18 @@
class so_acl
{
var $db;
function so_acl()
{
$this->db = clone($GLOBALS['egw']->db);
$this->db->set_app('resources');
}
function get_rights($location)
{
$result = array();
$sql = "SELECT acl_account, acl_rights from phpgw_acl WHERE acl_appname = 'resources' AND acl_location = '$location'";
$this->db->query($sql,__LINE__,__FILE__);
while($this->db->next_record())
{
$result[$this->db->f('acl_account')] = $this->db->f('acl_rights');
}
return $result;
return $GLOBALS['egw']->acl->get_all_rights($location,'news_admin');
}
function remove_location($location)
{
$sql = "delete from phpgw_acl where acl_appname='resources' and acl_location='$location'";
$this->db->query($sql,__LINE__,__FILE__);
$GLOBALS['egw']->acl->delete_repository('news_admin',$location,false);
}
/**
* gets permissions for resources of user
*
* This function is needed, cause eGW api dosn't provide a usefull function for that topic!
* Using api-functions for that, would resault bad performace :-(
* autor of news_admin ?
*
* @param int $user user_id we want to get perms for
* @param bool $inc_groups get rights due to groupmembership of user
*
*/
function get_permissions($user, $inc_groups)
{
$groups = $GLOBALS['egw']->acl->get_location_list_for_id('phpgw_group', 1, $user);
$result = array();
$sql = 'SELECT acl_location, acl_rights FROM phpgw_acl ';
$sql .= "WHERE acl_appname = 'resources' ";
if($inc_groups)
{
$sql .= 'AND acl_account IN('. (int)$user;
$sql .= ($groups ? ',' . implode(',', $groups) : '');
$sql .= ')';
}
else
{
$sql .= 'AND acl_account ='. (int)$user;
}
$this->db->query($sql,__LINE__,__FILE__);
while ($this->db->next_record())
{
$result[$this->db->f('acl_location')] |= $this->db->f('acl_rights');
}
return $result;
return $GLOBALS['egw']->acl->get_all_location_rights($user,'sitemgr',$inc_groups);
}
}

View File

@ -160,7 +160,7 @@
// delete all application categories and ACL
$GLOBALS['egw_setup']->db->query("DELETE FROM phpgw_categories WHERE cat_appname='$appname'",__LINE__,__FILE__);
$GLOBALS['egw_setup']->db->query("DELETE FROM phpgw_acl WHERE acl_appname='$appname'",__LINE__,__FILE__);
$GLOBALS['egw_setup']->db->query("DELETE FROM {$GLOBALS['egw_setup']->acl_table} WHERE acl_appname='$appname'",__LINE__,__FILE__);
}
}

View File

@ -49,15 +49,6 @@
/* Check api version, use correct table */
$setup_info = $GLOBALS['egw_setup']->detection->get_db_versions();
if($GLOBALS['egw_setup']->alessthanb($setup_info['phpgwapi']['currentver'], '0.9.10pre7'))
{
$configtbl = 'config';
}
else
{
$configtbl = 'phpgw_config';
}
$newsettings = $_POST['newsettings'];
if(@get_var('submit',Array('POST')) && @$newsettings)
@ -83,11 +74,7 @@
print_debug('TZ_OFFSET',$newsettings['tz_offset']);
$GLOBALS['egw_setup']->db->transaction_begin();
/* This is only temp: */
$GLOBALS['egw_setup']->db->query("DELETE FROM $configtbl WHERE config_name='useframes'");
$GLOBALS['egw_setup']->db->query("INSERT INTO $configtbl (config_app,config_name, config_value) values ('phpgwapi','useframes','never')");
while(list($setting,$value) = @each($newsettings))
foreach($newsettings as $setting => $value)
{
if($GLOBALS['egw_info']['server']['found_validation_hook'] && @function_exists($setting))
{
@ -99,55 +86,32 @@
/* Bail out, stop writing config data */
break;
}
else
{
/* echo '<br />Updating: ' . $setting . '=' . $value; */
}
/* Don't erase passwords, since we also do not print them below */
if($value || (!stristr($setting,'passwd') && !stristr($setting,'password') && !stristr($setting,'root_pw')))
if(empty($value) && !(stristr($setting,'passwd') || stristr($setting,'password') || stristr($setting,'root_pw')))
{
@$GLOBALS['egw_setup']->db->query("DELETE FROM $configtbl WHERE config_name='" . $setting . "'");
$GLOBALS['egw_setup']->db->delete($GLOBALS['egw_setup']->config_table,array(
'config_name' => $setting,
'config_app' => 'phpgwapi',
),__LINE__,__FILE__);
}
if($value)
elseif($value)
{
$GLOBALS['egw_setup']->db->query("INSERT INTO $configtbl (config_app,config_name, config_value) VALUES ('phpgwapi','" . $GLOBALS['egw_setup']->db->db_addslashes($setting)
. "','" . $GLOBALS['egw_setup']->db->db_addslashes($value) . "')");
}
}
}
else
{
if($value || (!stristr($setting,'passwd') && !stristr($setting,'password') && !stristr($setting,'root_pw')))
{
@$GLOBALS['egw_setup']->db->query("DELETE FROM $configtbl WHERE config_name='" . $setting . "'");
}
if($value)
{
$GLOBALS['egw_setup']->db->query("INSERT INTO $configtbl (config_app,config_name, config_value) VALUES ('phpgwapi','" . $GLOBALS['egw_setup']->db->db_addslashes($setting)
. "','" . $GLOBALS['egw_setup']->db->db_addslashes($value) . "')");
}
$GLOBALS['egw_setup']->db->insert($GLOBALS['egw_setup']->config_table,array(
'config_value' => $value,
),array(
'config_name' => $setting,
'config_app' => 'phpgwapi',
),__LINE__,__FILE__);
}
}
if(!$GLOBALS['error'])
{
$GLOBALS['egw_setup']->db->transaction_commit();
/* Add cleaning of app_sessions per skeeter, but with a check for the table being there, just in case */
$tablenames = $GLOBALS['egw_setup']->db->table_names();
while(list($key,$val) = @each($tablenames))
{
$tables[] = $val['table_name'];
}
if(in_array('phpgw_app_sessions',$tables))
{
$GLOBALS['egw_setup']->db->lock(array('phpgw_app_sessions'));
@$GLOBALS['egw_setup']->db->query("DELETE FROM phpgw_app_sessions WHERE sessionid = '0' and loginid = '0' and app = 'phpgwapi' and location = 'config'",__LINE__,__FILE__);
@$GLOBALS['egw_setup']->db->query("DELETE FROM phpgw_app_sessions WHERE app = 'phpgwapi' and location = 'phpgw_info_cache'",__LINE__,__FILE__);
$GLOBALS['egw_setup']->db->unlock();
}
if($newsettings['auth_type'] == 'ldap')
{
Header('Location: '.$newsettings['webserver_url'].'/setup/ldap.php');
Header('Location: ldap.php');
exit;
}
else
@ -160,8 +124,8 @@
$GLOBALS['egw_setup']->html->show_header(lang('Configuration'),False,'config',$GLOBALS['egw_setup']->ConfigDomain . '(' . $GLOBALS['egw_domain'][$GLOBALS['egw_setup']->ConfigDomain]['db_type'] . ')');
@$GLOBALS['egw_setup']->db->query("SELECT * FROM $configtbl");
while(@$GLOBALS['egw_setup']->db->next_record())
$GLOBALS['egw_setup']->db->select($GLOBALS['egw_setup']->config_table,'*',false,__LINES__,__FILES__);
while($GLOBALS['egw_setup']->db->next_record())
{
$GLOBALS['current_config'][$GLOBALS['egw_setup']->db->f('config_name')] = $GLOBALS['egw_setup']->db->f('config_value');
}
@ -177,8 +141,8 @@
var $db;
}
$GLOBALS['egw'] = new phpgw;
$GLOBALS['egw']->common = CreateObject('phpgwapi.common');
$GLOBALS['egw']->db = $GLOBALS['egw_setup']->db;
$GLOBALS['egw']->common =& CreateObject('phpgwapi.common');
$GLOBALS['egw']->db =& $GLOBALS['egw_setup']->db;
$t = CreateObject('setup.Template',$GLOBALS['egw']->common->get_tpl_dir('setup'));

View File

@ -27,8 +27,15 @@
class setup
{
var $db;
var $config_table = 'phpgw_config';
var $applications_table = 'phpgw_applications';
var $config_table = 'egw_config';
var $applications_table = 'egw_applications';
var $acl_table = 'egw_acl';
var $accounts_table = 'egw_accounts';
var $prefs_table = 'phpgw_preferences';
var $lang_table = 'phpgw_lang';
var $languages_table = 'phpgw_languages';
var $hooks_table = 'phpgw_hooks';
var $cats_table = 'phpgw_categories';
var $oProc;
var $detection = '';
@ -49,10 +56,6 @@
/* The setup application needs these */
$this->html = $html ? CreateObject('setup.setup_html') : '';
$this->translation = $translation ? CreateObject('setup.setup_translation') : '';
// $this->tbl_apps = $this->get_apps_table_name();
// $this->tbl_config = $this->get_config_table_name();
$this->tbl_hooks = $this->get_hooks_table_name();
}
/**
@ -85,8 +88,13 @@
{
$this->db->Halt_On_Error = 'no'; // table might not be created at that stage
$this->set_table_names(); // sets/checks config- and applications-table-name
// Set the DB's client charset if a system-charset is set
$this->db->query("select config_value from phpgw_config WHERE config_app='phpgwapi' and config_name='system_charset'",__LINE__,__FILE__);
$this->db->select($this->config_table,'config_value',array(
'config_app' => 'phpgwapi',
'config_name' => 'system_charset',
),__LINE__,__FILE__);
if ($this->db->next_record() && $this->db->f(0))
{
$this->db->Link_ID->SetCharSet($this->db->f(0));
@ -426,15 +434,6 @@
}
$enable = (int)$enable;
/*
Use old applications table if the currentver is less than 0.9.10pre8,
but not if the currentver = '', which probably means new install.
*/
if($this->alessthanb($setup_info['phpgwapi']['currentver'],'0.9.10pre8') && ($setup_info['phpgwapi']['currentver'] != ''))
{
$this->applications_table = 'applications';
}
if($GLOBALS['DEBUG'])
{
echo '<br>register_app(): ' . $appname . ', version: ' . $setup_info[$appname]['version'] . ', table: ' . $appstbl . '<br>';
@ -861,17 +860,6 @@
}
}
function get_hooks_table_name()
{
if(@$this->alessthanb($GLOBALS['setup_info']['phpgwapi']['currentver'],'0.9.8pre5') &&
@$GLOBALS['setup_info']['phpgwapi']['currentver'] != '')
{
/* No phpgw_hooks table yet. */
return False;
}
return 'phpgw_hooks';
}
function setup_account_object()
{
if (!is_object($GLOBALS['egw']->accounts))
@ -881,7 +869,7 @@
$this->loaddb();
}
/* Load up some configured values */
$this->db->query("SELECT config_name,config_value FROM phpgw_config "
$this->db->query("SELECT config_name,config_value FROM $this->config_table "
. "WHERE config_name LIKE 'ldap%' OR config_name LIKE 'account_%' OR config_name LIKE '%encryption%'",__LINE__,__FILE__);
while($this->db->next_record())
{
@ -1005,12 +993,54 @@
}
foreach($apps as $app)
{
$this->db->query("DELETE FROM phpgw_acl WHERE acl_appname='$app' AND acl_location='$location' AND acl_account=$account");
$this->db->query("DELETE FROM $this->acl_table WHERE acl_appname='$app' AND acl_location='$location' AND acl_account=$account");
if ($rights)
{
$this->db->query("INSERT INTO phpgw_acl(acl_appname,acl_location,acl_account,acl_rights) VALUES('$app','$location',$account,$rights)");
$this->db->query("INSERT INTO $this->acl_table (acl_appname,acl_location,acl_account,acl_rights) VALUES('$app','$location',$account,$rights)");
}
}
}
/**
* checks if one of the given tables exist, returns the first match
*
* @param array $tables array with possible table-names
* @return string/boolean tablename or false
*/
function table_exist($tables)
{
static $table_names;
if (!$table_names) $table_names = $this->db->table_names();
if (!$table_names) return false;
foreach($table_names as $data)
{
if (($key = array_search($data['table_name'],$tables)) !== false)
{
return $tables[$key];
}
}
return false;
}
/**
* Checks and set the names of the tables, which get accessed before an update: eg. config- and applications-table
*
* Other tables can always use the most up to date name
*/
function set_table_names()
{
foreach(array(
'config_table' => array('egw_config','phpgw_config','config'),
'applications_table' => array('egw_applications','phpgw_applications','applications'),
'lang_table' => array('egw_lang','phpgw_lang','lang'),
'languages_table' => array('egw_languages','phpgw_languages','languages'),
) as $name => $tables)
{
$this->$name = $this->table_exist($tables);
//echo "<p>setup::set_table_names: $name = '{$this->$name}'</p>\n";
}
}
}
?>

View File

@ -42,20 +42,15 @@
{
$tname = Array();
$GLOBALS['egw_setup']->db->Halt_On_Error = 'no';
$tables = $GLOBALS['egw_setup']->db->table_names();
foreach($tables as $key => $val)
{
$tname[] = $val['table_name'];
}
$newapps = in_array('phpgw_applications',$tname);
$oldapps = in_array('applications',$tname);
if((count($tables) > 0) && (is_array($tables)) && ($newapps || $oldapps))
$GLOBALS['egw_setup']->set_table_names();
if($GLOBALS['egw_setup']->applications_table)
{
/* one of these tables exists. checking for post/pre beta version */
if($newapps)
if($GLOBALS['egw_setup']->applications_table != 'applications')
{
$GLOBALS['egw_setup']->db->query('SELECT * FROM phpgw_applications',__LINE__,__FILE__);
$GLOBALS['egw_setup']->db->select($GLOBALS['egw_setup']->applications_table,'*',false,__LINE__,__FILE__);
while(@$GLOBALS['egw_setup']->db->next_record())
{
$setup_info[$GLOBALS['egw_setup']->db->f('app_name')]['currentver'] = $GLOBALS['egw_setup']->db->f('app_version');
@ -80,7 +75,7 @@
}
$setup_info['phpgwapi']['version'] = $tmp; /* restore the file version */
}
elseif($oldapps)
else
{
$GLOBALS['egw_setup']->db->query('select * from applications');
while(@$GLOBALS['egw_setup']->db->next_record())
@ -267,6 +262,8 @@
$GLOBALS['egw_setup']->db->connect();
error_reporting($old);
}
$GLOBALS['egw_setup']->set_table_names();
if (!$GLOBALS['egw_setup']->db->Link_ID)
{
$GLOBALS['egw_info']['setup']['header_msg'] = 'Stage 1 (Create Database)';
@ -293,10 +290,10 @@
else
{
/* no tables, so checking if we can create them */
$GLOBALS['egw_setup']->db->query('CREATE TABLE phpgw_testrights ( testfield varchar(5) NOT NULL )');
$GLOBALS['egw_setup']->db->query('CREATE TABLE egw_testrights ( testfield varchar(5) NOT NULL )');
if(!$GLOBALS['egw_setup']->db->Errno)
{
$GLOBALS['egw_setup']->db->query('DROP TABLE phpgw_testrights');
$GLOBALS['egw_setup']->db->query('DROP TABLE egw_testrights');
$GLOBALS['egw_info']['setup']['header_msg'] = 'Stage 3 (Install Applications)';
return 3;
}
@ -316,19 +313,7 @@
return '';
}
/* Since 0.9.10pre6 config table is named as phpgw_config */
$ver = explode('.',@$GLOBALS['egw_info']['server']['versions']['phpgwapi']);
$config_table = $ver[0] > 0 || (int)$ver[2] > 10 ? 'phpgw_config' : 'config';
if(ereg("([0-9]+)(pre)([0-9]+)",$ver[2],$regs))
{
if(($regs[1] == '10') && ($regs[3] >= '6'))
{
$config_table = 'phpgw_config';
}
}
@$GLOBALS['egw_setup']->db->query("select config_value from $config_table where config_name='freshinstall'");
$GLOBALS['egw_setup']->db->select($GLOBALS['egw_setup']->config_table,'config_value',array('config_name'=>'freshinstall'),__LINE__,__FILE__);
$configured = $GLOBALS['egw_setup']->db->next_record() ? $GLOBALS['egw_setup']->db->f('config_value') : False;
if($configed)
{
@ -353,18 +338,7 @@
{
$GLOBALS['setup_info'] = $GLOBALS['egw_setup']->detection->get_db_versions($GLOBALS['setup_info']);
}
if($GLOBALS['egw_setup']->alessthanb($GLOBALS['setup_info']['phpgwapi']['currentver'], '0.9.14.501') ||
ereg('0\.9\.15\.00[01]{1,1}',$GLOBALS['setup_info']['phpgwapi']['currentver']))
{
$langtbl = 'lang';
$languagestbl = 'languages';
}
else
{
$langtbl = 'phpgw_lang';
$languagestbl = 'phpgw_languages';
}
$GLOBALS['egw_setup']->db->query($q = "SELECT DISTINCT lang FROM $langtbl",__LINE__,__FILE__);
$GLOBALS['egw_setup']->db->query($q = "SELECT DISTINCT lang FROM {$GLOBALS['egw_setup']->lang_table}",__LINE__,__FILE__);
if($GLOBALS['egw_setup']->db->num_rows() == 0)
{
$GLOBALS['egw_info']['setup']['header_msg'] = 'Stage 3 (No languages installed)';
@ -378,7 +352,7 @@
}
foreach($GLOBALS['egw_info']['setup']['installed_langs'] as $key => $value)
{
$sql = "SELECT lang_name FROM $languagestbl WHERE lang_id = '".$value."'";
$sql = "SELECT lang_name FROM {$GLOBALS['egw_setup']->languages_table} WHERE lang_id = '".$value."'";
$GLOBALS['egw_setup']->db->query($sql);
if ($GLOBALS['egw_setup']->db->next_record())
{

View File

@ -231,12 +231,14 @@
}
}
foreach($GLOBALS['current_config'] as $setting => $value)
foreach($GLOBALS['current_config'] as $name => $value)
{
$setting = $GLOBALS['egw_setup']->db->db_addslashes($setting);
$value = $GLOBALS['egw_setup']->db->db_addslashes($value);
@$GLOBALS['egw_setup']->db->query("DELETE FROM phpgw_config WHERE config_app='phpgwapi' AND config_name='$setting'",__LINE__,__FILE__);
$GLOBALS['egw_setup']->db->query("INSERT INTO phpgw_config (config_app,config_name, config_value) VALUES ('phpgwapi','$setting','$value')");
$GLOBALS['egw_setup']->db->insert($GLOBALS['egw_setup']->config_table,array(
'config_value' => $value,
),array(
'config_app' => 'phpgwapi',
'config_name' => $name,
),__FILE__,__LINE__);
}
}

View File

@ -440,7 +440,7 @@ function check_dir($dir,&$msg,$check_in_docroot=false)
$setup_tpl->set_var('ldap_table_data','&nbsp;');
break;
case 10:
$GLOBALS['egw_setup']->db->query("SELECT config_name,config_value FROM phpgw_config WHERE config_app='phpgwapi'");
$GLOBALS['egw_setup']->db->select($GLOBALS['egw_setup']->config_table,'config_name,config_value',array('config_app' => 'phpgwapi'),__LINE__,__FILE__);
while($GLOBALS['egw_setup']->db->next_record())
{
$config[$GLOBALS['egw_setup']->db->f(0)] = $GLOBALS['egw_setup']->db->f(1);
@ -451,7 +451,12 @@ function check_dir($dir,&$msg,$check_in_docroot=false)
$config['backup_dir'] = $config['files_dir'].'/db_backup';
if (!is_dir($config['backup_dir']) && mkdir($config['backup_dir']))
{
$GLOBALS['egw_setup']->db->query("INSERT INTO phpgw_config (config_app,config_name,config_value) VALUES ('phpgwapi','backup_dir',".$GLOBALS['egw_setup']->db->quote($config['backup_dir']).')',__LINE__,__FILE__);
$GLOBALS['egw_setup']->db->insert($GLOBALS['egw_setup']->config_table,array(
'config_value' => $config['backup_dir'],
),array(
'config_app' => 'phpgwapi',
'config_name' => 'backup_dir',
),__LINE__,__FILE__);
}
}
$config_msg = '';

View File

@ -51,7 +51,9 @@
'T_alert_msg' => 'msg_alert_msg.tpl'
));
$GLOBALS['egw_setup']->db->query("SELECT config_name,config_value FROM phpgw_config WHERE config_name LIKE 'ldap%'",__LINE__,__FILE__);
$GLOBALS['egw_setup']->db->select($GLOBALS['egw_setup']->config_table,'config_name,config_value',array(
"config_name LIKE 'ldap%'",
),__LINE__,__FILE__);
while ($GLOBALS['egw_setup']->db->next_record())
{
$config[$GLOBALS['egw_setup']->db->f('config_name')] = $GLOBALS['egw_setup']->db->f('config_value');
@ -86,7 +88,7 @@
exit;
}
$sql = "SELECT * FROM phpgw_accounts WHERE account_type='u'";
$sql = "SELECT * FROM ".$GLOBALS['egw_setup']->accounts_table." WHERE account_type='u'";
$GLOBALS['egw_setup']->db->query($sql,__LINE__,__FILE__);
while($GLOBALS['egw_setup']->db->next_record())
{
@ -100,7 +102,7 @@
$account_info[$i]['account_primary_group'] = $GLOBALS['egw_setup']->db->f('account_primary_group');
}
$sql = "SELECT * FROM phpgw_accounts WHERE account_type='g'";
$sql = "SELECT * FROM ".$GLOBALS['egw_setup']->accounts_table." WHERE account_type='g'";
$GLOBALS['egw_setup']->db->query($sql,__LINE__,__FILE__);
while($GLOBALS['egw_setup']->db->next_record())
{

View File

@ -56,7 +56,9 @@
$phpgw->applications = CreateObject('phpgwapi.applications');
$applications = $phpgw->applications;
$GLOBALS['egw_setup']->db->query("SELECT config_name,config_value FROM phpgw_config WHERE config_name LIKE 'ldap%' OR config_name='account_repository'",__LINE__,__FILE__);
$GLOBALS['egw_setup']->db->select($GLOBALS['egw_setup']->config_table,'config_name,config_value',array(
"config_name LIKE 'ldap%' OR config_name='account_repository'",
),__LINE__,__FILE__);
while($GLOBALS['egw_setup']->db->next_record())
{
$config[$GLOBALS['egw_setup']->db->f('config_name')] = $GLOBALS['egw_setup']->db->f('config_value');
@ -129,7 +131,7 @@
$group_info = array();
}
$GLOBALS['egw_setup']->db->query("SELECT app_name FROM phpgw_applications WHERE app_enabled!='0' AND app_enabled!='3' ORDER BY app_name",__LINE__,__FILE__);
$GLOBALS['egw_setup']->db->select($GLOBALS['egw_setup']->applications_table,'app_name','app_enabled != 0 AND app_enabled != 3',__LINE__,__FILE__);
while($GLOBALS['egw_setup']->db->next_record())
{
$apps[$GLOBALS['egw_setup']->db->f('app_name')] = lang($GLOBALS['egw_setup']->db->f('app_name'));

View File

@ -51,7 +51,9 @@
'T_alert_msg' => 'msg_alert_msg.tpl'
));
$GLOBALS['egw_setup']->db->query("SELECT config_name,config_value FROM phpgw_config WHERE config_name LIKE 'ldap%' OR config_name='account_repository'",__LINE__,__FILE__);
$GLOBALS['egw_setup']->db->select($GLOBALS['egw_setup']->config_table,'config_name,config_value',array(
"config_name LIKE 'ldap%' OR config_name='account_repository'",
),__LINE__,__FILE__);
while($GLOBALS['egw_setup']->db->next_record())
{
$config[$GLOBALS['egw_setup']->db->f('config_name')] = $GLOBALS['egw_setup']->db->f('config_value');
@ -111,7 +113,7 @@
$group_info = array();
}
$GLOBALS['egw_setup']->db->query("SELECT app_name FROM phpgw_applications WHERE app_enabled!='0' AND app_enabled!='3' ORDER BY app_name",__LINE__,__FILE__);
$GLOBALS['egw_setup']->db->select($GLOBALS['egw_setup']->applications_table,'app_name','app_enabled != 0 AND app_enabled != 3',__LINE__,__FILE__);
while($GLOBALS['egw_setup']->db->next_record())
{
$apps[$GLOBALS['egw_setup']->db->f('app_name')] = lang($GLOBALS['egw_setup']->db->f('app_name'));

View File

@ -91,9 +91,10 @@
if($_POST['delete_all'])
{
/* Now, clear out existing tables */
$GLOBALS['egw_setup']->db->query('DELETE FROM phpgw_accounts');
$GLOBALS['egw_setup']->db->query('DELETE FROM phpgw_preferences');
$GLOBALS['egw_setup']->db->query('DELETE FROM phpgw_acl');
foreach(array($GLOBALS['egw_setup']->accounts_table,$GLOBALS['egw_setup']->prefs_table,$GLOBALS['egw_setup']->acl_table) as $table)
{
$GLOBALS['egw_setup']->db->delete($table,'1=1');
}
}
/* Create the demo groups */
$defaultgroupid = (int)$GLOBALS['egw_setup']->add_account('Default','Default','Group',False,False);
@ -112,7 +113,7 @@
// give admin access to all apps, to save us some support requests
$all_apps = array();
$GLOBALS['egw_setup']->db->query('SELECT app_name FROM phpgw_applications WHERE app_enabled<3');
$GLOBALS['egw_setup']->db->select($GLOBALS['egw_setup']->applications_table,'app_name','app_enabled < 3',__LINE__,__FILE__);
while ($GLOBALS['egw_setup']->db->next_record())
{
$all_apps[] = $GLOBALS['egw_setup']->db->f('app_name');

View File

@ -144,8 +144,12 @@
}
}
}
@$GLOBALS['egw_setup']->db->query("DELETE FROM phpgw_config WHERE config_app='phpgwapi' AND config_name='system_charset'",__LINE__,__FILE__);
$GLOBALS['egw_setup']->db->query("INSERT INTO phpgw_config (config_app,config_name,config_value) VALUES ('phpgwapi','system_charset','$to')",__LINE__,__FILE__);
$GLOBALS['egw_setup']->db->insert($GLOBALS['egw_setup']->config_table,array(
'config_value' => $to,
),array(
'config_app' => 'phpgwapi',
'config_name' => 'systemcharset',
),__LINE__,__FILE__);
}
$setup_tpl->set_var('stage_title',$stage_title);