ldap */
var $attrsToUse = array( "salutation" =>"vocation",
"name" =>"sn",
"firstname" =>"givenName",
"login" =>"uid",
"degree" =>"academicTitle",
"birthday" =>"dateOfBirth",
"sex" =>"gender",
"street" =>"street",
"zip" =>"postalCode",
"value_string"=>"mail",
"number" =>"telephoneNumber"
);
var $serverCon = false;
var $handle = NULL;
var $is_account = false;
var $initialy_was_account = false;
var $OGWPassword = "";
var $ReadOnly = false;
function opengwAccount ($config, $dn= NULL)
{
plugin::plugin ($config, $dn);
$this->info=array();
/* is no account and was no account */
$this->initialy_was_account = false;
$this->is_account = false;
/* check if datebase funktions are available, and if database configurations are available */
if(is_callable("pg_connect")){
/* Get configurations */
if(search_config($this->config->data,"opengwAccount","USERNAME")){
$atr = array();
$atr['LOGIN'] = search_config($this->config->data,"opengwAccount","USERNAME");
$atr['PASSWORD']= search_config($this->config->data,"opengwAccount","PASSWORD");
$atr['SERVER'] = search_config($this->config->data,"opengwAccount","DATAHOST");
$atr['DB'] = search_config($this->config->data,"opengwAccount","DATABASE");
$this->serverCon = $atr;
}else{
$this->serverCon = $this->config->data['SERVERS']['OPENGROUPWARE'];
}
$this->handle = new ogw($this->serverCon['LOGIN'],$this->serverCon['PASSWORD'],$this->serverCon['SERVER'],$this->serverCon['DB']);
/* Check if current configuration allows database connection */
if($this->handle->connected){
/* Set login name, to check if this is_account */
if(isset($this->attrs['uid'][0])){
$this->handle->info['login'] = $this->attrs['uid'][0];
}else{
$this->handle->info['login'] = "";
}
/* If this is account get data from database first */
if($this->handle->CheckExistence()){
$this->info = $this->handle->GetInfos($this->attrs['uid'][0]);
/* This is an account */
$this->initialy_was_account = true;
$this->is_account= true;
}else{
/* this is no account */
$this->initialy_was_account = false;
$this->is_account= false;
/* Selectable in GOsa */
$this->info['template_user_id'] = 0;
$this->info['is_locked'] = 0;
$this->info['LocationTeamID'] = 0;
$this->info['TeamIDis'] = array();
}
/* Set settings from ldap */
foreach($this->attrsToUse as $name=>$attr){
if(isset($this->attrs[$attr][0])){
$this->info[$name] = $this->attrs[$attr][0];
}else{
$this->info[$name] = false;
}
}
/* Description is displayed as 'Nickname' */
$this->info['description'] = $this->info['login'];
if($this->info['sex'] == "F"){
$this->info['sex'] = "female";
}else{
$this->info['sex'] = "male";
}
}
/* Transmit data back to ogw handle */
$this->handle->SetInfos($this->info);
}
}
function execute()
{
/* Show tab dialog headers */
$display= "";
$smarty= get_smarty();
print_red(_("New ACLs are not implemeneted yet."));
/* set default values */
foreach(array("validLocationTeam","validTemplateUser","validLocationTeams","validTemplateUsers") as $ar){
$smarty->assign($ar,array());
}
$smarty->assign("OGWstate"," disabled ");
foreach(array("LocationTeam","TemplateUser","is_locked","validTeams","opengwAccount","is_account"/*,"OGWPassword"*/) as $ar){
$smarty->assign($ar,"");
$smarty->assign($ar."CHK","");
$smarty->assign($ar."ACL"," disabled ");
}
/* Check database extension */
if(!is_callable("pg_connect")){
print_red(_("OpenGroupware: Your configuration is missing a postgresql extension. Can't perform any database queries."));
}else
/* Check if config exists */
if(search_config($this->config->data,"opengwAccount","DATABASE")==""){
print_red(_("OpenGroupware: Missing database configuration for opengroupware. Can't get or set any informations."));
}else{
/* Create handle */
$this->handle = new ogw($this->serverCon['LOGIN'],$this->serverCon['PASSWORD'],$this->serverCon['SERVER'],$this->serverCon['DB']);
/* Check if we are successfully connected to db */
if(!$this->handle->connected){
print_red(_("OpenGroupware: Can't connect to specified database. Please check given configuration twice."));
}else{
/* Show main page */
$smarty->assign("OGWstate"," disabled ");
foreach(array("LocationTeam","TemplateUser","is_locked","validTeams","opengwAccount"/*,"OGWPassword"*/) as $ar){
$smarty->assign($ar."ACL",chkacl($this->acl,$ar));
}
/* Assign LocationTeams */
$tmp = array(""=>"none");
foreach($this->handle->validLocationTeam as $id){
$tmp[$id['company_id']] = $id['description'];
}
$smarty->assign("validLocationTeam",$tmp);
$smarty->assign("validLocationTeams",array_flip($tmp));
$smarty->assign("LocationTeam",$this->info['LocationTeamID']);
/* Assign TemplateUsers*/
$tmp = array();
foreach($this->handle->validTemplateUser as $id){
$tmp[$id['company_id']] = $id['name'];
}
$smarty->assign("validTemplateUser",$tmp);
$smarty->assign("validTemplateUsers",array_flip($tmp));
$smarty->assign("TemplateUser",$this->info['template_user_id']);
/* Create Team membership */
$str = "";
if(($this->is_account)&&(chkacl($this->acl,"TeamIDs")=="")){
$dis = "";
}else{
$dis = " disabled ";
}
foreach($this->handle->validTeams as $id){
if(in_array($id['company_id'],$this->info['TeamIDis'])){
$str .= "".$id['description']."
";
}else{
$str .= "".$id['description']."
";
}
}
$smarty->assign("validTeams",$str);
/* Assign ogw checkbox */
if($this->is_account){
$smarty->assign("OGWstate","");
$smarty->assign("is_account", " checked ");
}else{
$smarty->assign("is_account", " ");
$smarty->assign("OGWstate"," disabled ");
}
/* Assign acls */
foreach(array("LocationTeam","TemplateUser","Teams","is_locked") as $atr){
$smarty->assign($atr."ACL",chkacl($this->acl,$atr));
}
/* Assign lock status */
if($this->info['is_locked']){
$smarty->assign("is_lockedCHK", " checked ");
}else{
$smarty->assign("is_lockedCHK", " ");
}
$smarty->assign("is_locked", $this->info['is_locked']);
}
}
/*
if($this->SetPassword == false){
if($_SESSION['js'] == 1){
$smarty->assign("OGWPasswordACL"," disabled ");
}else{
$smarty->assign("OGWPasswordACL","");
}
$smarty->assign("OGWPassword","");
$smarty->assign("OGWPasswordCHK"," ");
}else{
$smarty->assign("OGWPasswordACL","");
$smarty->assign("OGWPassword",$this->OGWPassword);
$smarty->assign("OGWPasswordCHK"," checked ");
}
*/
$display.= $smarty->fetch (get_template_path('opengw.tpl', TRUE, dirname(__FILE__)));
return ($display);
}
function remove_from_parent()
{
/* remove database entries */
if($this->initialy_was_account){
$this->handle = new ogw($this->serverCon['LOGIN'],$this->serverCon['PASSWORD'],$this->serverCon['SERVER'],$this->serverCon['DB']);
$this->handle->SetInfos($this->info);
$this->handle->Perform("REMOVE");
}
}
/* Save data to object */
function save_object()
{
/* get post data */
if($this->is_account){
/*
if(isset($_POST['SetPassword'])){
$this->SetPassword =true;
}else{
$this->SetPassword = false;
}
if((isset($_POST['OGWPassword']))&&($this->SetPassword)){
$this->OGWPassword = $_POST['OGWPassword'];
$pwd = new passwordMethodCrypt($this->config);
$this->info['password'] = preg_replace("/^{crypt}/","",$pwd->generate_hash($_POST['OGWPassword']));
}else{
if(isset($this->info['password'])){
unset($this->info['password']);
}
}
*/
/* Get selected team chkboxes */
$this->info['TeamIDis'] = array();
foreach($_POST as $name => $value ){
if(preg_match("/team_/i",$name)){
if(!in_array($value,$this->info['TeamIDis'])){
$this->info['TeamIDis'][]=$value;
}
}
}
/* Get location Team*/
if(isset($_POST['LocationTeam'])){
$this->info['LocationTeamID'] = $_POST['LocationTeam'];
}
/* Get template user */
if(isset($_POST['TemplateUser'])){
$this->info['template_user_id'] = $_POST['TemplateUser'];
}
/* get lock status */
if(isset($_POST['is_locked'])){
$this->info['is_locked'] = $_POST['is_locked'];
}else{
$this->info['is_locked'] = 0;
}
}
/* change account status */
if(isset($_POST['is_account'])){
$this->is_account = $_POST['is_account'];
}else{
$this->is_account = false;//$_POST['is_account'];
}
}
/* Save to LDAP */
function save()
{
/* Save data */
$this->handle = new ogw($this->serverCon['LOGIN'],$this->serverCon['PASSWORD'],$this->serverCon['SERVER'],$this->serverCon['DB']);
$this->handle->SetInfos($this->info);
$this->handle->checkInfos();
if($this->initialy_was_account){
$this->handle->Perform("EDIT");
}else{
$this->handle->Perform("ADD");
}
}
function PrepareForCopyPaste($src){
// Nothing to do, because this object can't be copied ... yet
}
/* Return plugin informations for acl handling
#FIXME This is only an enable/disable checkbox for this account, there is possibly a better solution available later */
function plInfo()
{
return (array(
"plShortName" => _("Opengroupware"),
"plDescription" => _("Open groupware account settings"),
"plSelfModify" => TRUE,
"plDepends" => array("user"),
"plPriority" => 3, // Position in tabs
"plSection" => "personal", // This belongs to personal
"plCategory" => array("users"),
"plOptions" => array(),
"plProvidedAcls" => array(
"opengwAccount" => "!!! FIXME "._("Open groupware account"))
));
}
}
// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
?>