accounts->name2id($login);
return $id;
}
function phpgw_id2name($id)
{
$login = $GLOBALS['phpgw']->accounts->id2name($id);
return $login;
}
function phpgw_get_accname($id)
{
$GLOBALS['phpgw']->accounts->get_account_name($id,$lid,$fname,$lname);
$fullname = $fname.' '.$lname;
return $fullname;
}
function phpgw_get_accemail($id)
{
$email = $GLOBALS['phpgw']->accounts->id2name($id, 'account_email');
return $email;
}
function phpgw_is_admin($id)
{
if($id == 0)
{
$id = $GLOBALS['phpgw_info']['user']['account_id'];
}
$acl = CreateObject('phpgwapi.acl',$id);
if ($acl->check('run',1,'admin'))
{
return true;
}
else
{
return false;
}
}
function read_repository2($id)
{
$login=$GLOBALS['phpgw']->accounts->id2name($id);
$ds = $GLOBALS['phpgw']->common->ldapConnect();
$user_context = $GLOBALS['phpgw_info']['server']['ldap_context'];
$group_context = $GLOBALS['phpgw_info']['server']['ldap_context'];
$justthese = array("gidnumber");
$sri = @ldap_search($ds, $group_context, ("(&(memberUid=" . $login.")(phpgwaccounttype=g))"), $justthese);
if(!$sri)
return null;
$allValues = ldap_get_entries($ds, $sri);
while (list($null,$allVals) = @each($allValues))
{
settype($allVals,'array');
if($data!=""){
$data=$data.",";
}
$data=$data. $allVals['gidnumber'][0];
}
//echo "
".$data;
return $data;
}
function get_account_name($account_id,$valor)
{
// $acct_type = $this->get_type($account_id);
$acct_type ='u';
/* jakjr: using justthese with ldap_search */
//$justthese = array("cn","uid","givenname","sn","gecos");
/* search the dn for the given uid */
$ds = $GLOBALS['phpgw']->common->ldapConnect();
$user_context = $GLOBALS['phpgw_info']['server']['ldap_context'];
$justthese = array("uidnumber", "cn", "mail","gecos","dn");
// $sri = @ldap_search($this->ds, "ou=usuarios,ou=cnti,dc=gob,dc=ve", ("(&(sn=*)(mail=*@*)(structuralObjectClass=inetOrgPerson)(deliveryMode=virtual))"), $justthese);
//if(($acct_type == 'g') && $this->group_context)
// {
// $sri = @ldap_search($this->ds, $this->group_context, '(gidnumber=' . (int)$account_id . ')', $justthese);
// }
// else
// {
$sri = @ldap_search($ds, $user_context, '(uidnumber=' . (int)$account_id . ')', $justthese);
//}
//echo $this->ds.",". $this->user_context.",". '(uidnumber=' . (int)$account_id . ')'.",". $justthese;
if(!$sri)
return False;
$allValues = ldap_get_entries($ds, $sri);
$retorna="";
if($acct_type =='g')
{
if($valor=='gecos') {
$retorna=$GLOBALS['phpgw']->translation->convert($allValues[0]['gecos'][0],'utf-8');
}
if($valor=='uidnumber') {
$retorna=$GLOBALS['phpgw']->translation->convert($allValues[0]['uidnumber'][0],'utf-8');
}
if($valor=='cn') {
$retorna=$GLOBALS['phpgw']->translation->convert($allValues[0]['cn'][0],'utf-8');
}
if($valor=='mail') {
$retorna=$GLOBALS['phpgw']->translation->convert($allValues[0]['mail'][0],'utf-8');
}
if($valor=='dn') {
$retorna=$GLOBALS['phpgw']->translation->convert($allValues[0]['dn'][0],'utf-8');
}
}
else
{
if($valor=='gecos') {
$retorna=$GLOBALS['phpgw']->translation->convert($allValues[0]['gecos'][0],'utf-8');
}
if($valor=='uidnumber') {
$retorna=$GLOBALS['phpgw']->translation->convert($allValues[0]['uidnumber'][0],'utf-8');
}
if($valor=='cn') {
$retorna=$GLOBALS['phpgw']->translation->convert($allValues[0]['cn'][0],'utf-8');
}
if($valor=='mail') {
$retorna=$GLOBALS['phpgw']->translation->convert($allValues[0]['mail'][0],'utf-8');
}
if($valor=='dn') {
$retorna=$GLOBALS['phpgw']->translation->convert($allValues[0]['dn'][0],'utf-8');
}
}
return $retorna;
}
function getUser($id)
{
//echo "llego";
$resArr["id"] = $id;
$resArr["login"] = phpgw_id2name($id);//get_account_name($id,'dn');
$resArr["fullName"] = phpgw_get_accname($id);
$resArr["email"] = phpgw_get_accemail($id);
$resArr["isAdmin"] = phpgw_is_admin($id);
$resArr["pwd"] = '';
$resArr["comment"] = '';
// echo "hhh".$resArr["login"]." ".$resArr["fullName"]." ".$resArr["isAdmin"];
return new User($resArr["id"], $resArr["login"], $resArr["pwd"], $resArr["fullName"], $resArr["email"], $resArr["comment"], $resArr["isAdmin"]);
}
function getUserByLogin($login)
{
$id = $this->phpgw_name2id($login);
$resArr["id"] = $id;
$resArr["login"] = $login;
$resArr["fullName"] = $this->phpgw_get_accname($id);
$resArr["email"] = $this->phpgw_get_accemail($id);
$resArr["isAdmin"] = $this->phpgw_is_admin($id);
$resArr["pwd"] = '';
$resArr["comment"] = '';
return new User($resArr["id"], $resArr["login"], $resArr["pwd"], $resArr["fullName"], $resArr["email"], $resArr["comment"], $resArr["isAdmin"]);
}
function getAllUsers()
{
$accounts = $GLOBALS['phpgw']->accounts->get_list('accounts');
for ($i = 0; $i < count($accounts); $i++)
{
$id = $accounts[$i]["account_id"];
$login = $accounts[$i]["account_lid"];
$fullName = $accounts[$i]['account_firstname'].' '.$accounts[$i]['account_lastname'];
$email = $accounts[$i]["account_email"];
$isAdmin = phpgw_is_admin($id);
$pwd = '';
$comment = '';
$users[$i] = new User($id, $login, $pwd, $fullName, $email, $comment, $isAdmin);
}
return $users;
}
function addUser($login, $pwd, $fullName, $email, $comment)
{
echo "add user is disabled \n";
/*GLOBAl $db;
$queryStr = "INSERT INTO phpgw_mydms_Users (login, pwd, fullName, email, comment, isAdmin) VALUES ('".$login."', '".$pwd."', '".$fullName."', '".$email."', '".$comment."', false)";
$res = $db->getResult($queryStr);
if (!$res)
return false;
return getUser($db->getInsertID('phpgw_mydms_Users','id'));*/
}
/**********************************************************************\
| User-Klasse |
\**********************************************************************/
class User
{
var $_id;
var $_login;
var $_pwd;
var $_fullName;
var $_email;
var $_comment;
var $_isAdmin;
function User($id, $login, $pwd, $fullName, $email, $comment, $isAdmin)
{
$this->_id = $id;
$this->_login = $login;
$this->_pwd = $pwd;
$this->_fullName = $fullName;
$this->_email = $email;
$this->_comment = $comment;
$this->_isAdmin = $isAdmin;
}
function add($id,$login,$fullName,$email,$isAdmin,$pwd,$comment)
{
$this->User = new User($id, $login, $pwd, $fullName, $email, $comment, $isAdmin);
}
function sortDataSet($s)
{
//Sort by the given parameter
switch($s)
{
case "fullName":
//Note use of array to reference member method of this object in callback
uasort($this->User,array($this,"cmpName"));
break;
case "login":
uasort($this->User,array($this,"cmpX"));
break;
case "id":
uasort($this->User,array($this,"cmpY"));
break;
case "added":
default:
//Re-sort array by original keys
ksort($this->User);
}
}
//Callback function for sorting by name
//$a and $b are dataItem objects
function cmpName($a,$b)
{
//Use sort() for simple alphabetical comparison
//Convert to lowercase to ensure consistent behaviour
$sortable = array(strtolower($a->_fullName),strtolower($b->_fullName));
$sorted = $sortable;
sort($sorted);
//If the names have switched position, return -1. Otherwise, return 1.
return ($sorted[0] == $sortable[0]) ? -1 : 1;
}
//Callback function for sorting by x
//$a and $b are dataItem objects
function cmpX($a,$b)
{
//Use sort() for simple alphabetical comparison
//Convert to lowercase to ensure consistent behaviour
$sortable = array(strtolower($a->x),strtolower($b->x));
$sorted = $sortable;
sort($sorted);
//If the names have switched position, return -1. Otherwise, return 1.
return ($sorted[0] == $sortable[0]) ? -1 : 1;
}
//Callback function for sorting by y
//$a and $b are dataItem objects
function cmpY($a,$b)
{
//If $a's y attribute >= $b's y attribute, return 1. Otherwise, return -1.
return ($a->y >= $b->y) ? 1 : -1;
}
function getID() { return $this->_id; }
function getLogin() { return $this->_login; }
function setLogin($newLogin)
{
GLOBAL $db;
$queryStr = "UPDATE phpgw_mydms_Users SET login ='" . $newLogin . "' WHERE id = " . $this->_id;
$res = $db->getResult($queryStr);
if (!$res)
return false;
$this->_login = $newLogin;
return true;
}
function getFullName() { return $this->_fullName; }
function setFullName($newFullName)
{
GLOBAL $db;
$queryStr = "UPDATE phpgw_mydms_Users SET fullname = '" . $newFullName . "' WHERE id = " . $this->_id;
$res = $db->getResult($queryStr);
if (!$res)
return false;
$this->_fullName = $newFullName;
return true;
}
function getPwd() { return $this->_pwd; }
function setPwd($newPwd)
{
GLOBAL $db;
$queryStr = "UPDATE phpgw_mydms_Users SET pwd ='" . $newPwd . "' WHERE id = " . $this->_id;
$res = $db->getResult($queryStr);
if (!$res)
return false;
$this->_pwd = $newPwd;
return true;
}
function getEmail() { return $this->_email; }
function setEmail($newEmail)
{
GLOBAL $db;
$queryStr = "UPDATE phpgw_mydms_Users SET email ='" . $newEmail . "' WHERE id = " . $this->_id;
$res = $db->getResult($queryStr);
if (!$res)
return false;
$this->_email = $newEmail;
return true;
}
function getComment() { return $this->_comment; }
function setComment($newComment)
{
GLOBAL $db;
$queryStr = "UPDATE phpgw_mydms_Users SET comment ='" . $newComment . "' WHERE id = " . $this->_id;
$res = $db->getResult($queryStr);
if (!$res)
return false;
$this->_comment = $newComment;
return true;
}
function isAdmin() { return $this->_isAdmin; }
function setAdmin($isAdmin)
{
GLOBAL $db;
$isAdmin = $isAdmin ? "1" : "0";
$queryStr = "UPDATE phpgw_mydms_Users SET isAdmin = " . $GLOBALS['phpgw']->db->quote($isAdmin) . " WHERE id = " . $this->_id;
if (!$db->getResult($queryStr))
return false;
$this->_isAdmin = $isAdmin;
return true;
}
/**
* Entfernt den Benutzer aus dem System.
* Dies ist jedoch nicht mit einem L�schen des entsprechenden Eintrags aus phpgw_mydms_Users geschehen - vielmehr
* muss daf�r gesorgt werden, dass der Benutzer nirgendwo mehr auftaucht. D.h. auch die Tabellen phpgw_mydms_ACLs,
* phpgw_mydms_Notify, phpgw_mydms_GroupMembers, phpgw_mydms_Folders, phpgw_mydms_Documents und phpgw_mydms_DocumentContent m�ssen ber�cksichtigt werden.
*/
function remove()
{
GLOBAL $db, $settings;
//Private Stichwortlisten l�schen
$queryStr = "SELECT phpgw_mydms_Keywords.id FROM phpgw_mydms_Keywords, phpgw_mydms_KeywordCategories WHERE phpgw_mydms_Keywords.category = phpgw_mydms_KeywordCategories.id AND phpgw_mydms_KeywordCategories.owner = " . $this->_id;
$resultArr = $db->getResultArray($queryStr);
if (count($resultArr) > 0) {
$queryStr = "DELETE FROM phpgw_mydms_Keywords WHERE ";
for ($i = 0; $i < count($resultArr); $i++) {
$queryStr .= "id = " . $resultArr[$i]["id"];
if ($i + 1 < count($resultArr))
$queryStr .= " OR ";
}
if (!$db->getResult($queryStr))
return false;
}
$queryStr = "DELETE FROM phpgw_mydms_KeywordCategories WHERE owner = " . $this->_id;
if (!$db->getResult($queryStr))
return false;
//Benachrichtigungen entfernen
$queryStr = "DELETE FROM phpgw_mydms_Notify WHERE userID = " . $this->_id;
if (!$db->getResult($queryStr))
return false;
//Der Besitz von Dokumenten oder Ordnern, deren bisheriger Besitzer der zu l�schende war, geht an den Admin �ber
$queryStr = "UPDATE phpgw_mydms_Folders SET owner = " . $settings->_adminID . " WHERE owner = " . $this->_id;
if (!$db->getResult($queryStr))
return false;
$queryStr = "UPDATE phpgw_mydms_Documents SET owner = " . $settings->_adminID . " WHERE owner = " . $this->_id;
if (!$db->getResult($queryStr))
return false;
$queryStr = "UPDATE phpgw_mydms_DocumentContent SET createdBy = " . $settings->_adminID . " WHERE createdBy = " . $this->_id;
if (!$db->getResult($queryStr))
return false;
//Verweise auf Dokumente: Private l�schen...
$queryStr = "DELETE FROM phpgw_mydms_DocumentLinks WHERE userID = " . $this->_id . " AND public = 0";
if (!$db->getResult($queryStr))
return false;
//... und �ffentliche an Admin �bergeben
$queryStr = "UPDATE phpgw_mydms_DocumentLinks SET userID = " . $settings->_adminID . " WHERE userID = " . $this->_id;
if (!$db->getResult($queryStr))
return false;
//Evtl. von diesem Benutzer gelockte Dokumente werden freigegeben
$queryStr = "UPDATE phpgw_mydms_Documents SET locked = -1 WHERE locked = " . $this->_id;
if (!$db->getResult($queryStr))
return false;
//User aus allen Gruppen l�schen
$queryStr = "DELETE FROM phpgw_mydms_GroupMembers WHERE userID = " . $this->_id;
if (!$db->getResult($queryStr))
return false;
//User aus allen ACLs streichen
$queryStr = "DELETE FROM phpgw_mydms_ACLs WHERE userID = " . $this->_id;
if (!$db->getResult($queryStr))
return false;
//Eintrag aus phpgw_mydms_Users l�schen
$queryStr = "DELETE FROM phpgw_mydms_Users WHERE id = " . $this->_id;
if (!$db->getResult($queryStr))
return false;
// unset($this);
return true;
}
function joinGroup($group)
{
if ($group->isMember($this))
return false;
if (!$group->addUser($this))
return false;
unset($this->_groups);
return true;
}
function leaveGroup($group)
{
if (!$group->isMember($this))
return false;
if (!$group->removeUser($this))
return false;
unset($this->_groups);
return true;
}
function getGroups()
{
$usergroups = $GLOBALS['phpgw']->accounts->membership($this->_id);
$this->_groups = array();
foreach($usergroups as $phpgw_group)
{
$group = getGroup($phpgw_group['account_id']);
array_push($this->_groups, $group);
}
return $this->_groups;
}
function isMemberOfGroup($group)
{
//echo "es miembro de".$this."
";
return $group->isMember($this);
}
function hasImage()
{
if (!isset($this->_hasImage))
{
GLOBAL $db;
$queryStr = "SELECT COUNT(*) AS num FROM phpgw_mydms_UserImages WHERE userID = " . $this->_id;
$resArr = $db->getResultArray($queryStr);
if (is_bool($resArr) && $resArr == false)
return false;
if ($resArr[0]["num"] == 0) $this->_hasImage = false;
else $this->_hasImage = true;
}
return $this->_hasImage;
}
function getImageURL()
{
GLOBAL $settings;
// if (!$this->hasImage())
// return false;
return $settings->_httpRoot . "out/out.UserImage.php?userid=" . $this->_id;
}
function setImage($tmpfile, $mimeType)
{
GLOBAL $db;
$fp = fopen($tmpfile, "rb");
if (!$fp) return false;
$content = fread($fp, filesize($tmpfile));
fclose($fp);
if ($this->hasImage())
$queryStr = "UPDATE phpgw_mydms_UserImages SET image = '".base64_encode($content)."', mimeType = '". $mimeType."' WHERE userID = " . $this->_id;
else
$queryStr = "INSERT INTO phpgw_mydms_UserImages (userID, image, mimeType) VALUES (" . $this->_id . ", '".base64_encode($content)."', '".$mimeType."')";
if (!$db->getResult($queryStr))
return false;
$this->_hasImage = true;
return true;
}
}
?>