diff --git a/phpgwapi/inc/class.accounts.inc.php b/phpgwapi/inc/class.accounts.inc.php
index 84e65ffbe6..589422ea98 100644
--- a/phpgwapi/inc/class.accounts.inc.php
+++ b/phpgwapi/inc/class.accounts.inc.php
@@ -1,4 +1,29 @@
*
+ * and Bettina Gille [ceb@phpgroupware.org] *
+ * shared functions for other account repository managers *
+ * Copyright (C) 2000 - 2002 Joseph Engo *
+ * Copyright (C) 2003 Joseph Engo, Bettina Gille *
+ * -------------------------------------------------------------------------*
+ * This library is part of the eGroupWare API *
+ * http://www.egroupware.org *
+ * ------------------------------------------------------------------------ *
+ * This library is free software; you can redistribute it and/or modify it *
+ * under the terms of the GNU Lesser General Public License as published by *
+ * the Free Software Foundation; either version 2.1 of the License, *
+ * or any later version. *
+ * This library is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
+ * See the GNU Lesser General Public License for more details. *
+ * You should have received a copy of the GNU Lesser General Public License *
+ * along with this library; if not, write to the Free Software Foundation, *
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
+ \**************************************************************************/
+ /* $Id$ */
+
if (empty($GLOBALS['phpgw_info']['server']['account_repository']))
{
if (!empty($GLOBALS['phpgw_info']['server']['auth_type']))
@@ -10,6 +35,828 @@
$GLOBALS['phpgw_info']['server']['account_repository'] = 'sql';
}
}
- include(PHPGW_API_INC . '/class.accounts_' . $GLOBALS['phpgw_info']['server']['account_repository'] . '.inc.php');
- include(PHPGW_API_INC . '/class.accounts_shared.inc.php');
-?>
+ include_once(PHPGW_API_INC . '/class.accounts_' . $GLOBALS['phpgw_info']['server']['account_repository'] . '.inc.php');
+
+ /*
+ Dont know where to put this (seek3r)
+ This is where it belongs (jengo)
+ This is where it ended up (milosch)
+ Moved again at least temporarily since sql and ldap use it.
+ */
+ $GLOBALS['phpgw_info']['server']['global_denied_users'] = array(
+ 'root' => True, 'bin' => True, 'daemon' => True,
+ 'adm' => True, 'lp' => True, 'sync' => True,
+ 'shutdown' => True, 'halt' => True, 'ldap' => True,
+ 'mail' => True, 'news' => True, 'uucp' => True,
+ 'operator' => True, 'games' => True, 'gopher' => True,
+ 'nobody' => True, 'xfs' => True, 'pgsql' => True,
+ 'mysql' => True, 'postgres' => True, 'oracle' => True,
+ 'ftp' => True, 'gdm' => True, 'named' => True,
+ 'alias' => True, 'web' => True, 'sweep' => True,
+ 'cvs' => True, 'qmaild' => True, 'qmaill' => True,
+ 'qmaillog' => True, 'qmailp' => True, 'qmailq' => True,
+ 'qmailr' => True, 'qmails' => True, 'rpc' => True,
+ 'rpcuser' => True, 'amanda' => True, 'apache' => True,
+ 'pvm' => True, 'squid' => True, 'ident' => True,
+ 'nscd' => True, 'mailnull' => True, 'cyrus' => True,
+ 'backup' => True
+ );
+
+ $GLOBALS['phpgw_info']['server']['global_denied_groups'] = array(
+ 'root' => True, 'bin' => True, 'daemon' => True,
+ 'sys' => True, 'adm' => True, 'tty' => True,
+ 'disk' => True, 'lp' => True, 'mem' => True,
+ 'kmem' => True, 'wheel' => True, 'mail' => True,
+ 'uucp' => True, 'man' => True, 'games' => True,
+ 'dip' => True, 'ftp' => True, 'nobody' => True,
+ 'floppy' => True, 'xfs' => True, 'console' => True,
+ 'utmp' => True, 'pppusers' => True, 'popusers' => True,
+ 'slipusers' => True, 'slocate' => True, 'mysql' => True,
+ 'dnstools' => True, 'web' => True, 'named' => True,
+ 'dba' => True, 'oinstall' => True, 'oracle' => True,
+ 'gdm' => True, 'sweep' => True, 'cvs' => True,
+ 'postgres' => True, 'qmail' => True, 'nofiles' => True,
+ 'ldap' => True, 'backup' => True
+ );
+
+ /*!
+ @class_start accounts
+ @abstract Class for handling user and group accounts
+ */
+
+ class accounts extends accounts_
+ {
+ var $memberships = array();
+ var $members = array();
+ var $xmlrpc_methods = array();
+ // enables the session-cache
+ var $use_session_cache = True;
+
+ /**************************************************************************\
+ * Standard constructor for setting $this->account_id *
+ * This constructor sets the account id, if string is sent, converts to id *
+ * I might move this to the accounts_shared if it stays around *
+ \**************************************************************************/
+ function accounts($account_id = '', $account_type='')
+ {
+ // enable the caching in the session onyl for ldap
+ $this->use_session_cache = $GLOBALS['phpgw_info']['server']['account_repository'] == 'ldap';
+
+ $this->db = $GLOBALS['phpgw']->db;
+
+ if($account_id != '')
+ {
+ $this->account_id = get_account_id($account_id);
+ }
+
+ if($account_type != '')
+ {
+ $this->account_type = $account_type;
+ }
+
+ $this->accounts_(); // call constructor of extended class
+
+ $this->xmlrpc_methods[] = array(
+ 'name' => 'get_list',
+ 'description' => 'Returns a list of accounts and/or groups'
+ );
+ $this->xmlrpc_methods[] = array(
+ 'name' => 'name2id',
+ 'description' => 'Cross reference account_lid with account_id'
+ );
+ $this->xmlrpc_methods[] = array(
+ 'name' => 'id2name',
+ 'description' => 'Cross reference account_id with account_lid'
+ );
+ }
+
+ /**
+ * Sets up the account-data cache
+ *
+ * The cache is shared between all instances of the account-class and it can be save in the session,
+ * if use_session_cache is set to True
+ */
+ function setup_cache()
+ {
+ if ($this->use_session_cache && // are we supposed to use a session-cache
+ !@$GLOBALS['phpgw_info']['accounts']['session_cache_setup'] && // is it already setup
+ // is the account-class ready (startup !)
+ is_object($GLOBALS['phpgw']->session) && $GLOBALS['phpgw']->session->account_id)
+ {
+ // setting up the session-cache
+ $GLOBALS['phpgw_info']['accounts']['cache'] = $GLOBALS['phpgw']->session->appsession('accounts_cache','phpgwapi');
+ $GLOBALS['phpgw_info']['accounts']['session_cache_setup'] = True;
+ //echo "accounts::setup_cache() cache=
".print_r($GLOBALS['phpgw_info']['accounts']['cache'],True)."
\n";
+ }
+ if (!isset($this->cache))
+ {
+ $this->cache = &$GLOBALS['phpgw_info']['accounts']['cache'];
+ }
+ }
+
+ /**
+ * Saves the account-data cache in the session
+ *
+ * Gets called from common::phpgw_final()
+ */
+ function save_session_cache()
+ {
+ if ($this->use_session_cache && // are we supposed to use a session-cache
+ $GLOBALS['phpgw_info']['accounts']['session_cache_setup'] && // is it already setup
+ // is the account-class ready (startup !)
+ is_object($GLOBALS['phpgw']->session))
+ {
+ $GLOBALS['phpgw']->session->appsession('accounts_cache','phpgwapi',$GLOBALS['phpgw_info']['accounts']['cache']);
+ }
+ }
+
+ function get_list($_type='both',$start = '',$sort = '', $order = '', $query = '', $offset = '')
+ {
+ //echo "accounts::get_list(".print_r($_type,True).",start='$start',sort='$sort',order='$order',query='$query',offset='$offset')
\n";
+ $this->setup_cache();
+ $account_list = &$this->cache['account_list'];
+
+ // For XML-RPC
+ if (is_array($_type))
+ {
+ $p = $_type[0];
+ $_type = $p['type'];
+ $start = $p['start'];
+ $order = $p['order'];
+ $query = $p['query'];
+ $offset = $p['offset'];
+ }
+ else
+ {
+ $p = array(
+ 'type' => $_type,
+ 'start' => $start,
+ 'order' => $order,
+ 'query' => $query,
+ 'offset' => $offset
+ );
+ }
+ $serial = serialize($p);
+
+ if (isset($account_list[$serial]))
+ {
+ $this->total = $account_list[$serial]['total'];
+ }
+ else
+ {
+ $account_list[$serial]['data'] = accounts_::get_list($_type,$start,$sort,$order,$query,$offset);
+ $account_list[$serial]['total'] = $this->total;
+ }
+ return $account_list[$serial]['data'];
+ }
+
+ function is_expired()
+ {
+ if ($this->data['expires'] != -1 && $this->data['expires'] < time())
+ {
+ return True;
+ }
+ else
+ {
+ return False;
+ }
+ }
+
+ /**
+ * Invalidate the cache (or parts of it) after change in $account_id
+ *
+ * Atm simplest approach - delete it all ;-)
+ */
+ function cache_invalidate($account_id)
+ {
+ //echo "accounts::cache_invalidate($account_id)
\n";
+ $GLOBALS['phpgw_info']['accounts']['cache'] = array();
+ }
+
+ function save_repository()
+ {
+ $this->cache_invalidate($this->account_id);
+ accounts_::save_repository();
+ }
+
+ function delete($accountid)
+ {
+ $this->cache_invalidate($accountid);
+ accounts_::delete($accountid);
+ }
+
+ function create($account_info,$default_prefs=True)
+ {
+ $account_id = accounts_::create($account_info,$default_prefs);
+ $this->cache_invalidate($account_id);
+
+ return $account_id;
+ }
+
+ function read_repository()
+ {
+ $this->setup_cache();
+ $account_data = &$this->cache['account_data'];
+
+ if (isset($account_data[$this->account_id]))
+ {
+ return $this->data = $account_data[$this->account_id];
+ }
+ return $account_data[$this->account_id] = accounts_::read_repository();
+ }
+
+ function read()
+ {
+ if (count($this->data) == 0)
+ {
+ $this->read_repository();
+ }
+
+ reset($this->data);
+ return $this->data;
+ }
+
+ function update_data($data)
+ {
+ reset($data);
+ $this->data = Array();
+ $this->data = $data;
+
+ reset($this->data);
+ return $this->data;
+ }
+
+ function membership($accountid = '')
+ {
+ $this->setup_cache();
+ $membership_list = &$this->cache['membership_list'];
+
+ $account_id = get_account_id($accountid);
+
+ if (isset($membership_list[$account_id]))
+ {
+ return $membership_list[$account_id];
+ }
+
+ $security_equals = Array();
+ $security_equals = $GLOBALS['phpgw']->acl->get_location_list_for_id('phpgw_group', 1, $account_id);
+
+ if ($security_equals == False)
+ {
+ return $membership_list[$account_id] = False;
+ }
+
+ $this->memberships = Array();
+
+ for ($idx=0; $idxmemberships[] = Array('account_id' => $groups, 'account_name' => $this->id2name($groups));
+ }
+
+ return $membership_list[$account_id] = $this->memberships;
+ }
+
+ function member($accountid = '')
+ {
+ $account_id = get_account_id($accountid);
+
+ $security_equals = Array();
+ $acl = CreateObject('phpgwapi.acl');
+ $security_equals = $acl->get_ids_for_location($account_id, 1, 'phpgw_group');
+ unset($acl);
+
+ if ($security_equals == False)
+ {
+ return False;
+ }
+
+ for ($idx=0; $idxid2name((int)$security_equals[$idx]);
+ $this->members[] = Array('account_id' => (int)$security_equals[$idx], 'account_name' => $name);
+ }
+
+ return $this->members;
+ }
+
+ /*!
+ @function get_nextid
+ @abstract Using the common functions next_id and last_id, find the next available account_id
+ @param $account_type (optional, default to 'u')
+ */
+ function get_nextid($account_type='u')
+ {
+ $min = $GLOBALS['phpgw_info']['server']['account_min_id'] ? $GLOBALS['phpgw_info']['server']['account_min_id'] : 0;
+ $max = $GLOBALS['phpgw_info']['server']['account_max_id'] ? $GLOBALS['phpgw_info']['server']['account_max_id'] : 0;
+
+ if ($account_type == 'g')
+ {
+ $type = 'groups';
+ }
+ else
+ {
+ $type = 'accounts';
+ }
+ $nextid = (int)$GLOBALS['phpgw']->common->last_id($type,$min,$max);
+
+ /* Loop until we find a free id */
+ $free = 0;
+ while (!$free)
+ {
+ $account_lid = '';
+ //echo '
calling search for id: '.$nextid;
+ if ($this->exists($nextid))
+ {
+ $nextid = (int)$GLOBALS['phpgw']->common->next_id($type,$min,$max);
+ }
+ else
+ {
+ $account_lid = $this->id2name($nextid);
+ /* echo '
calling search for lid: '.$account_lid . '(from account_id=' . $nextid . ')'; */
+ if ($this->exists($account_lid))
+ {
+ $nextid = (int)$GLOBALS['phpgw']->common->next_id($type,$min,$max);
+ }
+ else
+ {
+ $free = True;
+ }
+ }
+ }
+ if ($GLOBALS['phpgw_info']['server']['account_max_id'] &&
+ ($nextid > $GLOBALS['phpgw_info']['server']['account_max_id']))
+ {
+ return False;
+ }
+ /* echo '
using'.$nextid;exit; */
+ return $nextid;
+ }
+
+ /**
+ * returns a array of users and groups seperated, including all members of groups, which i.e.
+ * have acl access for an application
+ * needed to stay compatible with phpgw
+ *
+ * @param $app_users (array, default to 0)
+ */
+ function return_members($app_users = 0)
+ {
+ for ($i = 0;$iaccounts->get_type($app_users[$i]);
+ if($type == 'g')
+ {
+ $add_users['groups'][] = $app_users[$i];
+ $members[] = $GLOBALS['phpgw']->acl->get_ids_for_location($app_users[$i],1,'phpgw_group');
+ }
+ else
+ {
+ $add_users['users'][] = $app_users[$i];
+ }
+ }
+
+ $i = count($add_users['users']);
+
+ while(is_array($members) && list(,$mem) = each($members))
+ {
+ for($j=0;$jsetup_cache();
+ $name_list = &$this->cache['name_list'];
+
+ if(@isset($name_list[$account_lid]) && $name_list[$account_lid])
+ {
+ return $name_list[$account_lid];
+ }
+
+ /* Don't bother searching for empty account_lid */
+ if(empty($account_lid))
+ {
+ return False;
+ }
+ return $name_list[$account_lid] = accounts_::name2id($account_lid);
+ }
+
+ function id2name($account_id)
+ {
+ $this->setup_cache();
+ $id_list = &$this->cache['id_list'];
+
+ if (! $account_id)
+ {
+ return False;
+ }
+
+ if($id_list[$account_id])
+ {
+ return $id_list[$account_id];
+ }
+ return $id_list[$account_id] = accounts_::id2name($account_id);
+ }
+
+ function get_type($accountid)
+ {
+ $this->setup_cache();
+ $account_type = &$this->cache['account_type'];
+
+ $account_id = get_account_id($accountid);
+
+ if (isset($this->account_type) && $account_id == $this->account_id)
+ {
+ return $this->account_type;
+ }
+
+ if(@isset($account_type[$account_id]) && @$account_type[$account_id])
+ {
+ return $account_type[$account_id];
+ }
+ elseif($account_id == '')
+ {
+ return False;
+ }
+ return $account_type[$account_id] = accounts_::get_type($account_id);
+ }
+
+ function get_account_name($accountid,&$lid,&$fname,&$lname)
+ {
+ $this->setup_cache();
+ $account_name = &$this->cache['account_name'];
+
+ $account_id = get_account_id($accountid);
+ if(isset($account_name[$account_id]))
+ {
+ $lid = $account_name[$account_id]['lid'];
+ $fname = $account_name[$account_id]['fname'];
+ $lname = $account_name[$account_id]['lname'];
+ return $account_name[$account_id] !== False;
+ }
+ $Ok = accounts_::get_account_name($accountid,$lid,$fname,$lname);
+
+ $account_name[$account_id] = array(
+ 'lid' => $lid,
+ 'fname' => $fname,
+ 'lname' => $lname,
+ );
+ return $Ok;
+ }
+
+ function get_account_data($account_id)
+ {
+ $this->account_id = $account_id;
+ $this->read_repository();
+
+ $data[$this->data['account_id']]['lid'] = $this->data['account_lid'];
+ $data[$this->data['account_id']]['firstname'] = $this->data['firstname'];
+ $data[$this->data['account_id']]['lastname'] = $this->data['lastname'];
+ $data[$this->data['account_id']]['fullname'] = $this->data['fullname'];
+ $data[$this->data['account_id']]['type'] = $this->data['account_type'];
+
+ return $data;
+ }
+
+ function accounts_popup($app)
+ {
+ $group_id = get_var('group_id',array('GET','POST'));
+
+ /*if(isset($_GET['group_id']))
+ {
+ $group_id = $_GET['group_id'];
+ }*/
+
+ if(isset($_POST['query']))
+ {
+ $GLOBALS['query'] = $_POST['query'];
+ }
+
+ if(isset($_POST['start']))
+ {
+ $start = (int)$_POST['start'];
+ }
+ else
+ {
+ $start = 0;
+ }
+
+ if(isset($_GET['order']))
+ {
+ $order = $_GET['order'];
+ }
+ else
+ {
+ $order = 'account_lid';
+ }
+
+ if(isset($_GET['sort']))
+ {
+ $sort = $_GET['sort'];
+ }
+ else
+ {
+ $sort = 'ASC';
+ }
+
+ $this->nextmatchs = CreateObject('phpgwapi.nextmatchs');
+
+ $GLOBALS['phpgw']->template->set_root($GLOBALS['phpgw']->common->get_tpl_dir('phpgwapi'));
+
+ $GLOBALS['phpgw']->template->set_file(array('accounts_list_t' => 'accounts_popup.tpl'));
+ $GLOBALS['phpgw']->template->set_block('accounts_list_t','group_cal','cal');
+ $GLOBALS['phpgw']->template->set_block('accounts_list_t','group_other','other');
+ $GLOBALS['phpgw']->template->set_block('accounts_list_t','group_all','all');
+
+ $GLOBALS['phpgw']->template->set_block('accounts_list_t','bla_intro','ibla');
+ $GLOBALS['phpgw']->template->set_block('accounts_list_t','other_intro','iother');
+ $GLOBALS['phpgw']->template->set_block('accounts_list_t','all_intro','iall');
+
+
+ $GLOBALS['phpgw']->template->set_block('accounts_list_t','accounts_list','list');
+
+
+ $GLOBALS['phpgw']->template->set_var('title',$GLOBALS['phpgw_info']['site_title']);
+ $GLOBALS['phpgw']->template->set_var('charset',$GLOBALS['phpgw']->translation->charset());
+ $GLOBALS['phpgw']->template->set_var('font',$GLOBALS['phpgw_info']['theme']['font']);
+ $GLOBALS['phpgw']->template->set_var('lang_search',lang('search'));
+ $GLOBALS['phpgw']->template->set_var('lang_groups',lang('user groups'));
+ $GLOBALS['phpgw']->template->set_var('lang_accounts',lang('user accounts'));
+
+ $GLOBALS['phpgw']->template->set_var('img',$GLOBALS['phpgw']->common->image('phpgwapi','select'));
+ $GLOBALS['phpgw']->template->set_var('lang_select_user',lang('Select user'));
+ $GLOBALS['phpgw']->template->set_var('lang_select_group',lang('Select group'));
+ $GLOBALS['phpgw']->template->set_var('css_file',$GLOBALS['phpgw_info']['server']['webserver_url'] . SEP . 'phpgwapi' . SEP . 'templates'
+ . SEP . 'idots' . SEP . 'css' . SEP . 'idots.css');
+
+ switch($app)
+ {
+ case 'calendar':
+ $action = 'calendar.uicalendar.accounts_popup';
+ $GLOBALS['phpgw']->template->set_var('select_name',"participants[]'][0]");
+ $GLOBALS['phpgw']->template->set_var('js_function','ExchangeAccountSelect');
+ $GLOBALS['phpgw']->template->fp('ibla','bla_intro',True);
+ $GLOBALS['phpgw']->template->fp('iall','all_intro',True);
+ break;
+ case 'admin':
+ $action = 'admin.uiaccounts.accounts_popup';
+ $GLOBALS['phpgw']->template->set_var('select_name',"account_user[]']");
+ $GLOBALS['phpgw']->template->set_var('js_function','ExchangeAccountSelect');
+ $GLOBALS['phpgw']->template->set_var('lang_perm',lang('group name'));
+ $GLOBALS['phpgw']->template->fp('iother','other_intro',True);
+ break;
+ case 'projects':
+ $action = 'projects.uiprojects.accounts_popup';
+ $GLOBALS['phpgw']->template->set_var('select_name',"values[coordinator]']");
+ $GLOBALS['phpgw']->template->set_var('js_function','ExchangeAccountText');
+ $GLOBALS['phpgw']->template->fp('iother','other_intro',True);
+ $GLOBALS['phpgw']->template->fp('iall','all_intro',True);
+ break;
+ case 'e_projects':
+ $action = 'projects.uiprojects.e_accounts_popup';
+ $app = 'projects';
+ $GLOBALS['phpgw']->template->set_var('select_name',"employees[]']");
+ $GLOBALS['phpgw']->template->set_var('js_function','ExchangeAccountSelect');
+ $GLOBALS['phpgw']->template->fp('iother','other_intro',True);
+ $GLOBALS['phpgw']->template->fp('iall','all_intro',True);
+ break;
+ }
+
+ $GLOBALS['phpgw']->template->set_var('lang_perm',lang('Groups with permission for %1',lang($app)));
+ $GLOBALS['phpgw']->template->set_var('lang_nonperm',lang('Groups without permission for %1',lang($app)));
+
+ $link_data = array
+ (
+ 'menuaction' => $action,
+ 'group_id' => $group_id
+ );
+
+ $app_groups = array();
+
+ if ($app != 'admin')
+ {
+ $user_groups = $this->membership($this->account);
+
+ $app_user = $GLOBALS['phpgw']->acl->get_ids_for_location('run',1,$app);
+ for ($i = 0;$iget_type($app_user[$i]);
+ if($type == 'g')
+ {
+ $app_groups[] = $app_user[$i];
+ $members[] = $GLOBALS['phpgw']->acl->get_ids_for_location($app_user[$i],1,'phpgw_group');
+ }
+ }
+
+ $i = count($app_user);
+ while(is_array($members) && list(,$mem) = each($members))
+ {
+ for($j=0;$jget_list('groups');
+ $all_user = $this->get_list('accounts');
+
+ while(is_array($all_groups) && list(,$agroup) = each($all_groups))
+ {
+ $user_groups[] = array
+ (
+ 'account_id' => $agroup['account_id'],
+ 'account_name' => $agroup['account_firstname']
+ );
+ }
+
+ for($j=0;$jtemplate->set_var('tr_color',$this->nextmatchs->alternate_row_color($tr_color));
+ //$link_data['group_id'] = $group['account_id'];
+ $GLOBALS['phpgw']->template->set_var('link_user_group',$GLOBALS['phpgw']->link('/index.php','menuaction=' . $action . '&group_id=' . $group['account_id']));
+ $GLOBALS['phpgw']->template->set_var('name_user_group',$group['account_name']);
+ $GLOBALS['phpgw']->template->set_var('account_display',$GLOBALS['phpgw']->common->grab_owner_name($group['account_id']));
+ $GLOBALS['phpgw']->template->set_var('accountid',$group['account_id']);
+ switch($app)
+ {
+ case 'calendar': $GLOBALS['phpgw']->template->fp('cal','group_cal',True); break;
+ default: $GLOBALS['phpgw']->template->fp('other','group_other',True); break;
+ }
+ }
+ else
+ {
+ if ($app != 'admin')
+ {
+ $GLOBALS['phpgw']->template->set_var('link_all_group',$GLOBALS['phpgw']->link('/index.php','menuaction=' . $action . '&group_id=' . $group['account_id']));
+ $GLOBALS['phpgw']->template->set_var('name_all_group',$group['account_name']);
+ $GLOBALS['phpgw']->template->set_var('accountid',$group['account_id']);
+ $GLOBALS['phpgw']->template->fp('all','group_all',True);
+ }
+ }
+ }
+
+ if (!$GLOBALS['query'])
+ {
+ if (isset($group_id) && !empty($group_id))
+ {
+ //echo 'GROUP_ID: ' . $group_id;
+ $users = $GLOBALS['phpgw']->acl->get_ids_for_location($group_id,1,'phpgw_group');
+
+ for ($i=0;$iaccounts->account_id = $users[$i];
+ $GLOBALS['phpgw']->accounts->read_repository();
+
+ switch ($order)
+ {
+ case 'account_firstname':
+ $id = $GLOBALS['phpgw']->accounts->data['firstname'];
+ break;
+ case 'account_lastname':
+ $id = $GLOBALS['phpgw']->accounts->data['lastname'];
+ break;
+ case 'account_lid':
+ default:
+ $id = $GLOBALS['phpgw']->accounts->data['account_lid'];
+ break;
+ }
+ $id .= $GLOBALS['phpgw']->accounts->data['lastname']; // default sort-order
+ $id .= $GLOBALS['phpgw']->accounts->data['firstname'];
+ $id .= $GLOBALS['phpgw']->accounts->data['account_id']; // make our index unique
+
+ $val_users[$id] = array
+ (
+ 'account_id' => $GLOBALS['phpgw']->accounts->data['account_id'],
+ 'account_lid' => $GLOBALS['phpgw']->accounts->data['account_lid'],
+ 'account_firstname' => $GLOBALS['phpgw']->accounts->data['firstname'],
+ 'account_lastname' => $GLOBALS['phpgw']->accounts->data['lastname']
+ );
+ }
+ }
+
+ if (is_array($val_users))
+ {
+ if ($sort != 'DESC')
+ {
+ ksort($val_users);
+ }
+ else
+ {
+ krsort($val_users);
+ }
+ }
+ $val_users = array_values($val_users); // get a numeric index
+ }
+ $total = count($val_users);
+ }
+ else
+ {
+ switch($app)
+ {
+ case 'calendar': $select = 'both'; break;
+ default: $select = 'accounts'; break;
+ }
+ $entries = $this->get_list($select,$start,$sort,$order,$GLOBALS['query']);
+ $total = $this->total;
+ for ($i=0;$i $entries[$i]['account_id'],
+ 'account_lid' => $entries[$i]['account_lid'],
+ 'account_firstname' => $entries[$i]['account_firstname'],
+ 'account_lastname' => $entries[$i]['account_lastname']
+ );
+ }
+ }
+ }
+
+// --------------------------------- nextmatch ---------------------------
+
+ $left = $this->nextmatchs->left('/index.php',$start,$total,$link_data);
+ $right = $this->nextmatchs->right('/index.php',$start,$total,$link_data);
+ $GLOBALS['phpgw']->template->set_var('left',$left);
+ $GLOBALS['phpgw']->template->set_var('right',$right);
+
+ $GLOBALS['phpgw']->template->set_var('lang_showing',$this->nextmatchs->show_hits($total,$start));
+
+// -------------------------- end nextmatch ------------------------------------
+
+ $GLOBALS['phpgw']->template->set_var('search_action',$GLOBALS['phpgw']->link('/index.php',$link_data));
+ $GLOBALS['phpgw']->template->set_var('search_list',$this->nextmatchs->search(array('query' => $GLOBALS['query'], 'search_obj' => 1)));
+
+// ---------------- list header variable template-declarations --------------------------
+
+// -------------- list header variable template-declaration ------------------------
+ $GLOBALS['phpgw']->template->set_var('th_bg',$GLOBALS['phpgw_info']['theme']['th_bg']);
+ $GLOBALS['phpgw']->template->set_var('sort_lid',$this->nextmatchs->show_sort_order($sort,'account_lid',$order,'/index.php',lang('LoginID'),$link_data));
+ $GLOBALS['phpgw']->template->set_var('sort_firstname',$this->nextmatchs->show_sort_order($sort,'account_firstname',$order,'/index.php',lang('Firstname'),$link_data));
+ $GLOBALS['phpgw']->template->set_var('sort_lastname',$this->nextmatchs->show_sort_order($sort,'account_lastname',$order,'/index.php',lang('Lastname'),$link_data));
+
+// ------------------------- end header declaration --------------------------------
+ $stop = $start + $this->nextmatchs->maxmatches;
+ for ($i=$start;$itemplate->set_var('tr_color',$this->nextmatchs->alternate_row_color($tr_color));
+ $firstname = $val_users[$i]['account_firstname'];
+ if (!$firstname) { $firstname = ' '; }
+ $lastname = $val_users[$i]['account_lastname'];
+ if (!$lastname) { $lastname = ' '; }
+
+// ---------------- template declaration for list records --------------------------
+
+ $GLOBALS['phpgw']->template->set_var(array
+ (
+ 'lid' => $val_users[$i]['account_lid'],
+ 'firstname' => $firstname,
+ 'lastname' => $lastname,
+ 'accountid' => $val_users[$i]['account_id'],
+ 'account_display' => $GLOBALS['phpgw']->common->grab_owner_name($val_users[$i]['account_id'])
+ ));
+
+ $GLOBALS['phpgw']->template->fp('list','accounts_list',True);
+ }
+
+ $GLOBALS['phpgw']->template->set_var('start',$start);
+ $GLOBALS['phpgw']->template->set_var('sort',$sort);
+ $GLOBALS['phpgw']->template->set_var('order',$order);
+ $GLOBALS['phpgw']->template->set_var('query',$GLOBALS['query']);
+ $GLOBALS['phpgw']->template->set_var('group_id',$group_id);
+
+ $GLOBALS['phpgw']->template->set_var('lang_done',lang('done'));
+ $GLOBALS['phpgw']->template->pfp('out','accounts_list_t',True);
+ $GLOBALS['phpgw']->common->phpgw_exit();
+ }
+ }
+ /*!
+ @class_end accounts
+ */
diff --git a/phpgwapi/inc/class.accounts_shared.inc.php b/phpgwapi/inc/class.accounts_shared.inc.php
deleted file mode 100644
index 36e129bb41..0000000000
--- a/phpgwapi/inc/class.accounts_shared.inc.php
+++ /dev/null
@@ -1,849 +0,0 @@
- *
- * and Bettina Gille [ceb@phpgroupware.org] *
- * shared functions for other account repository managers *
- * Copyright (C) 2000 - 2002 Joseph Engo *
- * Copyright (C) 2003 Joseph Engo, Bettina Gille *
- * -------------------------------------------------------------------------*
- * This library is part of the eGroupWare API *
- * http://www.egroupware.org *
- * ------------------------------------------------------------------------ *
- * This library is free software; you can redistribute it and/or modify it *
- * under the terms of the GNU Lesser General Public License as published by *
- * the Free Software Foundation; either version 2.1 of the License, *
- * or any later version. *
- * This library is distributed in the hope that it will be useful, but *
- * WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
- * See the GNU Lesser General Public License for more details. *
- * You should have received a copy of the GNU Lesser General Public License *
- * along with this library; if not, write to the Free Software Foundation, *
- * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
- \**************************************************************************/
- /* $Id$ */
-
- /*
- Dont know where to put this (seek3r)
- This is where it belongs (jengo)
- This is where it ended up (milosch)
- Moved again at least temporarily since sql and ldap use it.
- */
- $GLOBALS['phpgw_info']['server']['global_denied_users'] = array(
- 'root' => True, 'bin' => True, 'daemon' => True,
- 'adm' => True, 'lp' => True, 'sync' => True,
- 'shutdown' => True, 'halt' => True, 'ldap' => True,
- 'mail' => True, 'news' => True, 'uucp' => True,
- 'operator' => True, 'games' => True, 'gopher' => True,
- 'nobody' => True, 'xfs' => True, 'pgsql' => True,
- 'mysql' => True, 'postgres' => True, 'oracle' => True,
- 'ftp' => True, 'gdm' => True, 'named' => True,
- 'alias' => True, 'web' => True, 'sweep' => True,
- 'cvs' => True, 'qmaild' => True, 'qmaill' => True,
- 'qmaillog' => True, 'qmailp' => True, 'qmailq' => True,
- 'qmailr' => True, 'qmails' => True, 'rpc' => True,
- 'rpcuser' => True, 'amanda' => True, 'apache' => True,
- 'pvm' => True, 'squid' => True, 'ident' => True,
- 'nscd' => True, 'mailnull' => True, 'cyrus' => True,
- 'backup' => True
- );
-
- $GLOBALS['phpgw_info']['server']['global_denied_groups'] = array(
- 'root' => True, 'bin' => True, 'daemon' => True,
- 'sys' => True, 'adm' => True, 'tty' => True,
- 'disk' => True, 'lp' => True, 'mem' => True,
- 'kmem' => True, 'wheel' => True, 'mail' => True,
- 'uucp' => True, 'man' => True, 'games' => True,
- 'dip' => True, 'ftp' => True, 'nobody' => True,
- 'floppy' => True, 'xfs' => True, 'console' => True,
- 'utmp' => True, 'pppusers' => True, 'popusers' => True,
- 'slipusers' => True, 'slocate' => True, 'mysql' => True,
- 'dnstools' => True, 'web' => True, 'named' => True,
- 'dba' => True, 'oinstall' => True, 'oracle' => True,
- 'gdm' => True, 'sweep' => True, 'cvs' => True,
- 'postgres' => True, 'qmail' => True, 'nofiles' => True,
- 'ldap' => True, 'backup' => True
- );
-
- /*!
- @class_start accounts
- @abstract Class for handling user and group accounts
- */
-
- class accounts extends accounts_
- {
- var $memberships = array();
- var $members = array();
- var $xmlrpc_methods = array();
- // enables the session-cache
- var $use_session_cache = True;
-
- /**************************************************************************\
- * Standard constructor for setting $this->account_id *
- * This constructor sets the account id, if string is sent, converts to id *
- * I might move this to the accounts_shared if it stays around *
- \**************************************************************************/
- function accounts($account_id = '', $account_type='')
- {
- // enable the caching in the session onyl for ldap
- $this->use_session_cache = $GLOBALS['phpgw_info']['server']['account_repository'] == 'ldap';
-
- $this->db = $GLOBALS['phpgw']->db;
-
- if($account_id != '')
- {
- $this->account_id = get_account_id($account_id);
- }
-
- if($account_type != '')
- {
- $this->account_type = $account_type;
- }
-
- $this->accounts_(); // call constructor of extended class
-
- $this->xmlrpc_methods[] = array(
- 'name' => 'get_list',
- 'description' => 'Returns a list of accounts and/or groups'
- );
- $this->xmlrpc_methods[] = array(
- 'name' => 'name2id',
- 'description' => 'Cross reference account_lid with account_id'
- );
- $this->xmlrpc_methods[] = array(
- 'name' => 'id2name',
- 'description' => 'Cross reference account_id with account_lid'
- );
- }
-
- /**
- * Sets up the account-data cache
- *
- * The cache is shared between all instances of the account-class and it can be save in the session,
- * if use_session_cache is set to True
- */
- function setup_cache()
- {
- if ($this->use_session_cache && // are we supposed to use a session-cache
- !@$GLOBALS['phpgw_info']['accounts']['session_cache_setup'] && // is it already setup
- // is the account-class ready (startup !)
- is_object($GLOBALS['phpgw']->session) && $GLOBALS['phpgw']->session->account_id)
- {
- // setting up the session-cache
- $GLOBALS['phpgw_info']['accounts']['cache'] = $GLOBALS['phpgw']->session->appsession('accounts_cache','phpgwapi');
- $GLOBALS['phpgw_info']['accounts']['session_cache_setup'] = True;
- //echo "accounts::setup_cache() cache=".print_r($GLOBALS['phpgw_info']['accounts']['cache'],True)."
\n";
- }
- if (!isset($this->cache))
- {
- $this->cache = &$GLOBALS['phpgw_info']['accounts']['cache'];
- }
- }
-
- /**
- * Saves the account-data cache in the session
- *
- * Gets called from common::phpgw_final()
- */
- function save_session_cache()
- {
- if ($this->use_session_cache && // are we supposed to use a session-cache
- $GLOBALS['phpgw_info']['accounts']['session_cache_setup'] && // is it already setup
- // is the account-class ready (startup !)
- is_object($GLOBALS['phpgw']->session))
- {
- $GLOBALS['phpgw']->session->appsession('accounts_cache','phpgwapi',$GLOBALS['phpgw_info']['accounts']['cache']);
- }
- }
-
- function get_list($_type='both',$start = '',$sort = '', $order = '', $query = '', $offset = '')
- {
- //echo "accounts::get_list(".print_r($_type,True).",start='$start',sort='$sort',order='$order',query='$query',offset='$offset')
\n";
- $this->setup_cache();
- $account_list = &$this->cache['account_list'];
-
- // For XML-RPC
- if (is_array($_type))
- {
- $p = $_type[0];
- $_type = $p['type'];
- $start = $p['start'];
- $order = $p['order'];
- $query = $p['query'];
- $offset = $p['offset'];
- }
- else
- {
- $p = array(
- 'type' => $_type,
- 'start' => $start,
- 'order' => $order,
- 'query' => $query,
- 'offset' => $offset
- );
- }
- $serial = serialize($p);
-
- if (isset($account_list[$serial]))
- {
- $this->total = $account_list[$serial]['total'];
- }
- else
- {
- $account_list[$serial]['data'] = accounts_::get_list($_type,$start,$sort,$order,$query,$offset);
- $account_list[$serial]['total'] = $this->total;
- }
- return $account_list[$serial]['data'];
- }
-
- function is_expired()
- {
- if ($this->data['expires'] != -1 && $this->data['expires'] < time())
- {
- return True;
- }
- else
- {
- return False;
- }
- }
-
- /**
- * Invalidate the cache (or parts of it) after change in $account_id
- *
- * Atm simplest approach - delete it all ;-)
- */
- function cache_invalidate($account_id)
- {
- //echo "accounts::cache_invalidate($account_id)
\n";
- $GLOBALS['phpgw_info']['accounts']['cache'] = array();
- }
-
- function save_repository()
- {
- $this->cache_invalidate($this->account_id);
- accounts_::save_repository();
- }
-
- function delete($accountid)
- {
- $this->cache_invalidate($accountid);
- accounts_::delete($accountid);
- }
-
- function create($account_info,$default_prefs=True)
- {
- $account_id = accounts_::create($account_info,$default_prefs);
- $this->cache_invalidate($account_id);
-
- return $account_id;
- }
-
- function read_repository()
- {
- $this->setup_cache();
- $account_data = &$this->cache['account_data'];
-
- if (isset($account_data[$this->account_id]))
- {
- return $this->data = $account_data[$this->account_id];
- }
- return $account_data[$this->account_id] = accounts_::read_repository();
- }
-
- function read()
- {
- if (count($this->data) == 0)
- {
- $this->read_repository();
- }
-
- reset($this->data);
- return $this->data;
- }
-
- function update_data($data)
- {
- reset($data);
- $this->data = Array();
- $this->data = $data;
-
- reset($this->data);
- return $this->data;
- }
-
- function membership($accountid = '')
- {
- $this->setup_cache();
- $membership_list = &$this->cache['membership_list'];
-
- $account_id = get_account_id($accountid);
-
- if (isset($membership_list[$account_id]))
- {
- return $membership_list[$account_id];
- }
-
- $security_equals = Array();
- $security_equals = $GLOBALS['phpgw']->acl->get_location_list_for_id('phpgw_group', 1, $account_id);
-
- if ($security_equals == False)
- {
- return $membership_list[$account_id] = False;
- }
-
- $this->memberships = Array();
-
- for ($idx=0; $idxmemberships[] = Array('account_id' => $groups, 'account_name' => $this->id2name($groups));
- }
-
- return $membership_list[$account_id] = $this->memberships;
- }
-
- function member($accountid = '')
- {
- $account_id = get_account_id($accountid);
-
- $security_equals = Array();
- $acl = CreateObject('phpgwapi.acl');
- $security_equals = $acl->get_ids_for_location($account_id, 1, 'phpgw_group');
- unset($acl);
-
- if ($security_equals == False)
- {
- return False;
- }
-
- for ($idx=0; $idxid2name((int)$security_equals[$idx]);
- $this->members[] = Array('account_id' => (int)$security_equals[$idx], 'account_name' => $name);
- }
-
- return $this->members;
- }
-
- /*!
- @function get_nextid
- @abstract Using the common functions next_id and last_id, find the next available account_id
- @param $account_type (optional, default to 'u')
- */
- function get_nextid($account_type='u')
- {
- $min = $GLOBALS['phpgw_info']['server']['account_min_id'] ? $GLOBALS['phpgw_info']['server']['account_min_id'] : 0;
- $max = $GLOBALS['phpgw_info']['server']['account_max_id'] ? $GLOBALS['phpgw_info']['server']['account_max_id'] : 0;
-
- if ($account_type == 'g')
- {
- $type = 'groups';
- }
- else
- {
- $type = 'accounts';
- }
- $nextid = (int)$GLOBALS['phpgw']->common->last_id($type,$min,$max);
-
- /* Loop until we find a free id */
- $free = 0;
- while (!$free)
- {
- $account_lid = '';
- //echo '
calling search for id: '.$nextid;
- if ($this->exists($nextid))
- {
- $nextid = (int)$GLOBALS['phpgw']->common->next_id($type,$min,$max);
- }
- else
- {
- $account_lid = $this->id2name($nextid);
- /* echo '
calling search for lid: '.$account_lid . '(from account_id=' . $nextid . ')'; */
- if ($this->exists($account_lid))
- {
- $nextid = (int)$GLOBALS['phpgw']->common->next_id($type,$min,$max);
- }
- else
- {
- $free = True;
- }
- }
- }
- if ($GLOBALS['phpgw_info']['server']['account_max_id'] &&
- ($nextid > $GLOBALS['phpgw_info']['server']['account_max_id']))
- {
- return False;
- }
- /* echo '
using'.$nextid;exit; */
- return $nextid;
- }
-
- /**
- * returns a array of users and groups seperated, including all members of groups, which i.e.
- * have acl access for an application
- * needed to stay compatible with phpgw
- *
- * @param $app_users (array, default to 0)
- */
- function return_members($app_users = 0)
- {
- for ($i = 0;$iaccounts->get_type($app_users[$i]);
- if($type == 'g')
- {
- $add_users['groups'][] = $app_users[$i];
- $members[] = $GLOBALS['phpgw']->acl->get_ids_for_location($app_users[$i],1,'phpgw_group');
- }
- else
- {
- $add_users['users'][] = $app_users[$i];
- }
- }
-
- $i = count($add_users['users']);
-
- while(is_array($members) && list(,$mem) = each($members))
- {
- for($j=0;$jsetup_cache();
- $name_list = &$this->cache['name_list'];
-
- if(@isset($name_list[$account_lid]) && $name_list[$account_lid])
- {
- return $name_list[$account_lid];
- }
-
- /* Don't bother searching for empty account_lid */
- if(empty($account_lid))
- {
- return False;
- }
- return $name_list[$account_lid] = accounts_::name2id($account_lid);
- }
-
- function id2name($account_id)
- {
- $this->setup_cache();
- $id_list = &$this->cache['id_list'];
-
- if (! $account_id)
- {
- return False;
- }
-
- if($id_list[$account_id])
- {
- return $id_list[$account_id];
- }
- return $id_list[$account_id] = accounts_::id2name($account_id);
- }
-
- function get_type($accountid)
- {
- $this->setup_cache();
- $account_type = &$this->cache['account_type'];
-
- $account_id = get_account_id($accountid);
-
- if (isset($this->account_type) && $account_id == $this->account_id)
- {
- return $this->account_type;
- }
-
- if(@isset($account_type[$account_id]) && @$account_type[$account_id])
- {
- return $account_type[$account_id];
- }
- elseif($account_id == '')
- {
- return False;
- }
- return $account_type[$account_id] = accounts_::get_type($account_id);
- }
-
- function get_account_name($accountid,&$lid,&$fname,&$lname)
- {
- $this->setup_cache();
- $account_name = &$this->cache['account_name'];
-
- $account_id = get_account_id($accountid);
- if(isset($account_name[$account_id]))
- {
- $lid = $account_name[$account_id]['lid'];
- $fname = $account_name[$account_id]['fname'];
- $lname = $account_name[$account_id]['lname'];
- return $account_name[$account_id] !== False;
- }
- $Ok = accounts_::get_account_name($accountid,$lid,$fname,$lname);
-
- $account_name[$account_id] = array(
- 'lid' => $lid,
- 'fname' => $fname,
- 'lname' => $lname,
- );
- return $Ok;
- }
-
- function get_account_data($account_id)
- {
- $this->account_id = $account_id;
- $this->read_repository();
-
- $data[$this->data['account_id']]['lid'] = $this->data['account_lid'];
- $data[$this->data['account_id']]['firstname'] = $this->data['firstname'];
- $data[$this->data['account_id']]['lastname'] = $this->data['lastname'];
- $data[$this->data['account_id']]['fullname'] = $this->data['fullname'];
- $data[$this->data['account_id']]['type'] = $this->data['account_type'];
-
- return $data;
- }
-
- function accounts_popup($app)
- {
- $group_id = get_var('group_id',array('GET','POST'));
-
- /*if(isset($_GET['group_id']))
- {
- $group_id = $_GET['group_id'];
- }*/
-
- if(isset($_POST['query']))
- {
- $GLOBALS['query'] = $_POST['query'];
- }
-
- if(isset($_POST['start']))
- {
- $start = (int)$_POST['start'];
- }
- else
- {
- $start = 0;
- }
-
- if(isset($_GET['order']))
- {
- $order = $_GET['order'];
- }
- else
- {
- $order = 'account_lid';
- }
-
- if(isset($_GET['sort']))
- {
- $sort = $_GET['sort'];
- }
- else
- {
- $sort = 'ASC';
- }
-
- $this->nextmatchs = CreateObject('phpgwapi.nextmatchs');
-
- $GLOBALS['phpgw']->template->set_root($GLOBALS['phpgw']->common->get_tpl_dir('phpgwapi'));
-
- $GLOBALS['phpgw']->template->set_file(array('accounts_list_t' => 'accounts_popup.tpl'));
- $GLOBALS['phpgw']->template->set_block('accounts_list_t','group_cal','cal');
- $GLOBALS['phpgw']->template->set_block('accounts_list_t','group_other','other');
- $GLOBALS['phpgw']->template->set_block('accounts_list_t','group_all','all');
-
- $GLOBALS['phpgw']->template->set_block('accounts_list_t','bla_intro','ibla');
- $GLOBALS['phpgw']->template->set_block('accounts_list_t','other_intro','iother');
- $GLOBALS['phpgw']->template->set_block('accounts_list_t','all_intro','iall');
-
-
- $GLOBALS['phpgw']->template->set_block('accounts_list_t','accounts_list','list');
-
-
- $GLOBALS['phpgw']->template->set_var('title',$GLOBALS['phpgw_info']['site_title']);
- $GLOBALS['phpgw']->template->set_var('charset',$GLOBALS['phpgw']->translation->charset());
- $GLOBALS['phpgw']->template->set_var('font',$GLOBALS['phpgw_info']['theme']['font']);
- $GLOBALS['phpgw']->template->set_var('lang_search',lang('search'));
- $GLOBALS['phpgw']->template->set_var('lang_groups',lang('user groups'));
- $GLOBALS['phpgw']->template->set_var('lang_accounts',lang('user accounts'));
-
- $GLOBALS['phpgw']->template->set_var('img',$GLOBALS['phpgw']->common->image('phpgwapi','select'));
- $GLOBALS['phpgw']->template->set_var('lang_select_user',lang('Select user'));
- $GLOBALS['phpgw']->template->set_var('lang_select_group',lang('Select group'));
- $GLOBALS['phpgw']->template->set_var('css_file',$GLOBALS['phpgw_info']['server']['webserver_url'] . SEP . 'phpgwapi' . SEP . 'templates'
- . SEP . 'idots' . SEP . 'css' . SEP . 'idots.css');
-
- switch($app)
- {
- case 'calendar':
- $action = 'calendar.uicalendar.accounts_popup';
- $GLOBALS['phpgw']->template->set_var('select_name',"participants[]'][0]");
- $GLOBALS['phpgw']->template->set_var('js_function','ExchangeAccountSelect');
- $GLOBALS['phpgw']->template->fp('ibla','bla_intro',True);
- $GLOBALS['phpgw']->template->fp('iall','all_intro',True);
- break;
- case 'admin':
- $action = 'admin.uiaccounts.accounts_popup';
- $GLOBALS['phpgw']->template->set_var('select_name',"account_user[]']");
- $GLOBALS['phpgw']->template->set_var('js_function','ExchangeAccountSelect');
- $GLOBALS['phpgw']->template->set_var('lang_perm',lang('group name'));
- $GLOBALS['phpgw']->template->fp('iother','other_intro',True);
- break;
- case 'projects':
- $action = 'projects.uiprojects.accounts_popup';
- $GLOBALS['phpgw']->template->set_var('select_name',"values[coordinator]']");
- $GLOBALS['phpgw']->template->set_var('js_function','ExchangeAccountText');
- $GLOBALS['phpgw']->template->fp('iother','other_intro',True);
- $GLOBALS['phpgw']->template->fp('iall','all_intro',True);
- break;
- case 'e_projects':
- $action = 'projects.uiprojects.e_accounts_popup';
- $app = 'projects';
- $GLOBALS['phpgw']->template->set_var('select_name',"employees[]']");
- $GLOBALS['phpgw']->template->set_var('js_function','ExchangeAccountSelect');
- $GLOBALS['phpgw']->template->fp('iother','other_intro',True);
- $GLOBALS['phpgw']->template->fp('iall','all_intro',True);
- break;
- }
-
- $GLOBALS['phpgw']->template->set_var('lang_perm',lang('Groups with permission for %1',lang($app)));
- $GLOBALS['phpgw']->template->set_var('lang_nonperm',lang('Groups without permission for %1',lang($app)));
-
- $link_data = array
- (
- 'menuaction' => $action,
- 'group_id' => $group_id
- );
-
- $app_groups = array();
-
- if ($app != 'admin')
- {
- $user_groups = $this->membership($this->account);
-
- $app_user = $GLOBALS['phpgw']->acl->get_ids_for_location('run',1,$app);
- for ($i = 0;$iget_type($app_user[$i]);
- if($type == 'g')
- {
- $app_groups[] = $app_user[$i];
- $members[] = $GLOBALS['phpgw']->acl->get_ids_for_location($app_user[$i],1,'phpgw_group');
- }
- }
-
- $i = count($app_user);
- while(is_array($members) && list(,$mem) = each($members))
- {
- for($j=0;$jget_list('groups');
- $all_user = $this->get_list('accounts');
-
- while(is_array($all_groups) && list(,$agroup) = each($all_groups))
- {
- $user_groups[] = array
- (
- 'account_id' => $agroup['account_id'],
- 'account_name' => $agroup['account_firstname']
- );
- }
-
- for($j=0;$jtemplate->set_var('tr_color',$this->nextmatchs->alternate_row_color($tr_color));
- //$link_data['group_id'] = $group['account_id'];
- $GLOBALS['phpgw']->template->set_var('link_user_group',$GLOBALS['phpgw']->link('/index.php','menuaction=' . $action . '&group_id=' . $group['account_id']));
- $GLOBALS['phpgw']->template->set_var('name_user_group',$group['account_name']);
- $GLOBALS['phpgw']->template->set_var('account_display',$GLOBALS['phpgw']->common->grab_owner_name($group['account_id']));
- $GLOBALS['phpgw']->template->set_var('accountid',$group['account_id']);
- switch($app)
- {
- case 'calendar': $GLOBALS['phpgw']->template->fp('cal','group_cal',True); break;
- default: $GLOBALS['phpgw']->template->fp('other','group_other',True); break;
- }
- }
- else
- {
- if ($app != 'admin')
- {
- $GLOBALS['phpgw']->template->set_var('link_all_group',$GLOBALS['phpgw']->link('/index.php','menuaction=' . $action . '&group_id=' . $group['account_id']));
- $GLOBALS['phpgw']->template->set_var('name_all_group',$group['account_name']);
- $GLOBALS['phpgw']->template->set_var('accountid',$group['account_id']);
- $GLOBALS['phpgw']->template->fp('all','group_all',True);
- }
- }
- }
-
- if (!$GLOBALS['query'])
- {
- if (isset($group_id) && !empty($group_id))
- {
- //echo 'GROUP_ID: ' . $group_id;
- $users = $GLOBALS['phpgw']->acl->get_ids_for_location($group_id,1,'phpgw_group');
-
- for ($i=0;$iaccounts->account_id = $users[$i];
- $GLOBALS['phpgw']->accounts->read_repository();
-
- switch ($order)
- {
- case 'account_firstname':
- $id = $GLOBALS['phpgw']->accounts->data['firstname'];
- break;
- case 'account_lastname':
- $id = $GLOBALS['phpgw']->accounts->data['lastname'];
- break;
- case 'account_lid':
- default:
- $id = $GLOBALS['phpgw']->accounts->data['account_lid'];
- break;
- }
- $id .= $GLOBALS['phpgw']->accounts->data['lastname']; // default sort-order
- $id .= $GLOBALS['phpgw']->accounts->data['firstname'];
- $id .= $GLOBALS['phpgw']->accounts->data['account_id']; // make our index unique
-
- $val_users[$id] = array
- (
- 'account_id' => $GLOBALS['phpgw']->accounts->data['account_id'],
- 'account_lid' => $GLOBALS['phpgw']->accounts->data['account_lid'],
- 'account_firstname' => $GLOBALS['phpgw']->accounts->data['firstname'],
- 'account_lastname' => $GLOBALS['phpgw']->accounts->data['lastname']
- );
- }
- }
-
- if (is_array($val_users))
- {
- if ($sort != 'DESC')
- {
- ksort($val_users);
- }
- else
- {
- krsort($val_users);
- }
- }
- $val_users = array_values($val_users); // get a numeric index
- }
- $total = count($val_users);
- }
- else
- {
- switch($app)
- {
- case 'calendar': $select = 'both'; break;
- default: $select = 'accounts'; break;
- }
- $entries = $this->get_list($select,$start,$sort,$order,$GLOBALS['query']);
- $total = $this->total;
- for ($i=0;$i $entries[$i]['account_id'],
- 'account_lid' => $entries[$i]['account_lid'],
- 'account_firstname' => $entries[$i]['account_firstname'],
- 'account_lastname' => $entries[$i]['account_lastname']
- );
- }
- }
- }
-
-// --------------------------------- nextmatch ---------------------------
-
- $left = $this->nextmatchs->left('/index.php',$start,$total,$link_data);
- $right = $this->nextmatchs->right('/index.php',$start,$total,$link_data);
- $GLOBALS['phpgw']->template->set_var('left',$left);
- $GLOBALS['phpgw']->template->set_var('right',$right);
-
- $GLOBALS['phpgw']->template->set_var('lang_showing',$this->nextmatchs->show_hits($total,$start));
-
-// -------------------------- end nextmatch ------------------------------------
-
- $GLOBALS['phpgw']->template->set_var('search_action',$GLOBALS['phpgw']->link('/index.php',$link_data));
- $GLOBALS['phpgw']->template->set_var('search_list',$this->nextmatchs->search(array('query' => $GLOBALS['query'], 'search_obj' => 1)));
-
-// ---------------- list header variable template-declarations --------------------------
-
-// -------------- list header variable template-declaration ------------------------
- $GLOBALS['phpgw']->template->set_var('th_bg',$GLOBALS['phpgw_info']['theme']['th_bg']);
- $GLOBALS['phpgw']->template->set_var('sort_lid',$this->nextmatchs->show_sort_order($sort,'account_lid',$order,'/index.php',lang('LoginID'),$link_data));
- $GLOBALS['phpgw']->template->set_var('sort_firstname',$this->nextmatchs->show_sort_order($sort,'account_firstname',$order,'/index.php',lang('Firstname'),$link_data));
- $GLOBALS['phpgw']->template->set_var('sort_lastname',$this->nextmatchs->show_sort_order($sort,'account_lastname',$order,'/index.php',lang('Lastname'),$link_data));
-
-// ------------------------- end header declaration --------------------------------
- $stop = $start + $this->nextmatchs->maxmatches;
- for ($i=$start;$itemplate->set_var('tr_color',$this->nextmatchs->alternate_row_color($tr_color));
- $firstname = $val_users[$i]['account_firstname'];
- if (!$firstname) { $firstname = ' '; }
- $lastname = $val_users[$i]['account_lastname'];
- if (!$lastname) { $lastname = ' '; }
-
-// ---------------- template declaration for list records --------------------------
-
- $GLOBALS['phpgw']->template->set_var(array
- (
- 'lid' => $val_users[$i]['account_lid'],
- 'firstname' => $firstname,
- 'lastname' => $lastname,
- 'accountid' => $val_users[$i]['account_id'],
- 'account_display' => $GLOBALS['phpgw']->common->grab_owner_name($val_users[$i]['account_id'])
- ));
-
- $GLOBALS['phpgw']->template->fp('list','accounts_list',True);
- }
-
- $GLOBALS['phpgw']->template->set_var('start',$start);
- $GLOBALS['phpgw']->template->set_var('sort',$sort);
- $GLOBALS['phpgw']->template->set_var('order',$order);
- $GLOBALS['phpgw']->template->set_var('query',$GLOBALS['query']);
- $GLOBALS['phpgw']->template->set_var('group_id',$group_id);
-
- $GLOBALS['phpgw']->template->set_var('lang_done',lang('done'));
- $GLOBALS['phpgw']->template->pfp('out','accounts_list_t',True);
- $GLOBALS['phpgw']->common->phpgw_exit();
- }
- }
- /*!
- @class_end accounts
- */