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; var $view_logged = FALSE; var $uid = ""; function opengwAccount (&$config, $dn= NULL) { plugin::plugin ($config, $dn); /* Setting uid to default */ if(isset($this->attrs['uid'][0])){ $this->uid = $this->attrs['uid'][0]; } $this->info=array(); /* is no account and was no account */ $this->initialy_was_account = false; $this->is_account = false; /* Get configurations */ if($this->config->search("opengwAccount", 'USERNAME',array('tabs'))){ $atr = array(); $atr['LOGIN'] = $this->config->search("opengwAccount", 'USERNAME',array('tabs')); $atr['PASSWORD']= $this->config->search("opengwAccount", 'PASSWORD',array('tabs')); $atr['SERVER'] = $this->config->search("opengwAccount", 'DATAHOST',array('tabs')); $atr['DB'] = $this->config->search("opengwAccount", 'DATABASE',array('tabs')); $this->serverCon = $atr; }elseif(isset($this->config->data['SERVERS']['OPENGROUPWARE'])){ $this->serverCon = $this->config->data['SERVERS']['OPENGROUPWARE']; }else{ $this->serverCon = array(); } /* check if datebase funktions are available, and if database configurations are available */ if(is_callable("pg_connect") && count($this->serverCon)){ $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() { /* Log view */ if($this->is_account && !$this->view_logged){ $this->view_logged = TRUE; new log("view","users/".get_class($this),$this->dn); } /* Show tab dialog headers */ $display= ""; $smarty= get_smarty(); $smarty->assign("serverCon",count($this->serverCon)); $smarty->assign("validTeams",""); $smarty->assign("is_account", " "); $smarty->assign("OGWstate"," disabled "); $smarty->assign("validLocationTeam",array(" ")); $smarty->assign("validLocationTeams",array(" ")); $smarty->assign("LocationTeam",0); $smarty->assign("validTemplateUser",array(" ")); $smarty->assign("validTemplateUsers",array(" ")); $smarty->assign("TemplateUser",0); $smarty->assign("is_lockedCHK", " "); $smarty->assign("is_locked", " "); /* set default values */ $tmp = $this->plInfo(); foreach($tmp['plProvidedAcls'] as $acl => $desc){ $smarty->assign($acl."ACL",$this->getacl($acl,$this->ReadOnly)); } if((!$this->ReadOnly)&&(($this->is_account && $this->acl_is_removeable()) || (!$this->is_account && $this->acl_is_createable()))) { $smarty->assign('opengwAccountACL', ""); }else{ $smarty->assign('opengwAccountACL', " disabled "); } if(count($this->serverCon)) /* Check database extension */ if(!is_callable("pg_connect") && count($this->serverCon)){ msg_dialog::display(_("Configuration error"), msgPool::missingext("postgresql"), ERROR_DIALOG); }elseif(count($this->serverCon)){ /* Check if config exists */ if($this->config->search("opengwAccount", 'DATABASE',array('tabs')) == ""){ msg_dialog::display(_("Configuration error"), msgPool::noserver(_("Open Groupware database")), ERROR_DIALOG); }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){ msg_dialog::display(_("Configuration error"), msgPool::dbconnect(_("Open Groupware")), ERROR_DIALOG); }else{ /* 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){ $dis = ""; }else{ $dis = " disabled "; } if($this->acl_is_readable("Teams")){ 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 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']); } } } $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"); new log("remove","users/".get_class($this),$this->dn); } } /* Save data to object */ function save_object() { /* get post data */ if($this->is_account){ /* Get selected team chkboxes */ $this->info['TeamIDis'] = array(); if($this->acl_is_writeable("Teams")) { 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->acl_is_writeable("LocationTeam")){ $this->info['LocationTeamID'] = $_POST['LocationTeam']; } /* Get template user */ if(isset($_POST['TemplateUser']) && $this->acl_is_writeable("TemplateUser") ){ $this->info['template_user_id'] = $_POST['TemplateUser']; } /* get lock status */ if($this->acl_is_writeable("Locked")){ 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'])){ if($this->acl_is_createable()){ $this->is_account = $_POST['is_account']; } }else{ if($this->acl_is_removeable()){ $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"); new log("modify","users/".get_class($this),$this->dn); }else{ $this->handle->Perform("ADD"); new log("create","users/".get_class($this),$this->dn); } } 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 */ static function plInfo() { return (array( "plShortName" => _("Opengroupware"), "plDescription" => _("Open groupware account settings")." : "._("Connectivity addon")."", "plSelfModify" => TRUE, "plDepends" => array("user"), "plPriority" => 26, // Position in tabs "plSection" => array("personal" => _("My account")), "plCategory" => array("users"), "plOptions" => array(), "plProvidedAcls" => array( "LocationTeam" => _("Location team"), "TemplateUser" => _("Template user"), "Locked" => _("Locked"), "Teams" => _("Teams")) )); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?>