diff --git a/plugins/personal/connectivity/class_opengwAccount.inc b/plugins/personal/connectivity/class_opengwAccount.inc
index 0980c8867f7c18662b1160a01c081b37e841beb7..02b075d56e93147b24c9f892f09c76ade1f972dd 100644 (file)
class opengwAccount extends plugin
{
- /* Definitions */
- var $plHeadline = "Opengroupware account";
- var $plDescription = "This does something";
-
- /* CLI vars */
- var $cli_summary = "Manage users webdav account";
- var $cli_description = "Some longer text\nfor help";
- var $cli_parameters = array("eins" => "Eins ist toll", "zwei" => "Zwei ist noch besser");
-
- /* attribute list for save action */
- var $attributes= array();
- var $objectclasses= array("gosaWebdavAccount");
-
- var $handle = NULL;
-
- function opengwAccount ($config, $dn= NULL)
- {
- plugin::plugin ($config, $dn);
- $this->handle = new ogw("ogo","","vserver-18","ogo");//username,$password,$host,$db
- $info['login'] = $this->uid;
- if($this->handle->CheckExistence()){
- $this->info = $this->handle->GetInfo();
- }else{
- /* Generic attributes */
- $info['salutation'] = $this->attrs['vocation'];
- $info['name'] = $this->attrs['sn'];
- $info['firstname'] = $this->attrs['givenName'];
- $info['login'] = $this->attrs['uid'];
- $info['description'] = $info['firstname']." ".$info['name'];
- $info['degree'] = $this->attrs['academicTitle'];
- $info['birthday'] = $this->attrs['dateOfBirth'];
-
- if($this->attrs['gender'] == "F"){
- $info['sex'] = "female";
- }else{
- $info['sex'] = "male";
- }
+ /* Definitions */
+ var $plHeadline = "Opengroupware account";
+ var $plDescription = "This does something";
- /* address settings */
- $info['street'] = $this->attrs['street'];//"iweg 2";
- $info['zip'] = $this->attrs['postalCode'];//"59821";
-// $info['country'] = $this->attrs[''];//"Arnbserg";
- $info['zipcity'] = $info['zip']." ".$info['country'];
-// $info['state'] = $this->attrs[''];//"Germany";
-
- /* the email address*/
- $info['value_string'] = $this->attrs['mail'];
-
- /* telephone number */
- $info['number'] = $this->attrs['telephoneNumber'];
-
- /* Selectable in GOsa */
- $info['template_user_id'] = 10130;
- $info['is_locked'] = 0;
- $info['LocationTeamID'] = "";
- $info['TeamIDis'] = array();
- }
- $this->info = $info;
- $this->handle->SetInfos($info);
- }
+ /* CLI vars */
+ var $cli_summary = "Manage users webdav account";
+ var $cli_description = "Some longer text\nfor help";
+ var $cli_parameters = array("eins" => "Eins ist toll", "zwei" => "Zwei ist noch besser");
- function execute()
- {
- /* Show tab dialog headers */
- $display= "";
+ /* attribute list for save action */
+ var $attributes = array();
+ var $objectclasses = array();
- print_a($this->info);
+ var $SetPassword = false;
- /* Show main page */
- $smarty= get_smarty();
+ /* Attribute mapping opengroupware->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"
+ );
- if ($this->is_account){
- $smarty->assign("is_account", "true");
- } else {
- $smarty->assign("is_account", "false");
- }
- $display.= $smarty->fetch (get_template_path('opengw.tpl', TRUE, dirname(__FILE__)));
- return ($display);
- }
+ var $serverCon = false;
+ var $handle = NULL;
+ var $is_account = false;
+ var $initialy_was_account = false;
+ var $OGWPassword = "";
- function remove_from_parent()
- {
- if(chkacl($this->acl,"webdavAccount")==""){
- /* Cancel if there's nothing to do here */
- if (!$this->initially_was_account){
- return;
- }
+ function opengwAccount ($config, $dn= NULL)
+ {
+ plugin::plugin ($config, $dn);
- plugin::remove_from_parent();
- $ldap= $this->config->get_ldap_link();
+ $this->info=array();
- $ldap->cd($this->dn);
- @DEBUG (DEBUG_LDAP, __LINE__, __FUNCTION__, __FILE__,
- $this->attributes, "Save");
- $ldap->modify($this->attrs);
- show_ldap_error($ldap->get_error());
+ /* is no account and was no account */
+ $this->initialy_was_account = false;
+ $this->is_account = false;
- /* Optionally execute a command after we're done */
- $this->handle_post_events('remove');
- }
- }
+ /* 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();
+
+ /* 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));
+ }
- /* Save data to object */
- function save_object()
- {
- /* Do we need to flip is_account state? */
- if (isset($_POST['connectivityTab'])){
- if (isset($_POST['webdav'])){
- if (!$this->is_account && $_POST['webdav'] == "B"){
- $this->is_account= TRUE;
+ /* 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 .= "<input ".$dis." type='checkbox' value='".$id['company_id']."'
+ checked name='team_".base64_encode($id['description'])."'>".$id['description']."<br>";
+ }else{
+ $str .= "<input ".$dis." type='checkbox' value='".$id['company_id']."'
+ name='team_".base64_encode($id['description'])."'>".$id['description']."<br>";
+ }
+ }
+ $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","");
}
- } else {
- $this->is_account= FALSE;
+ $smarty->assign("OGWPassword","");
+ $smarty->assign("OGWPasswordCHK"," ");
+ }else{
+ $smarty->assign("OGWPasswordACL","");
+ $smarty->assign("OGWPassword",$this->OGWPassword);
+ $smarty->assign("OGWPasswordCHK"," checked ");
}
- }
-
- plugin::save_object();
- if (isset($_POST["WEBDAVStatus"])){
- $this->WEBDAVStatus = "disabled";
- } else {
- $this->WEBDAVStatus = "enabled";
- }
- }
+ */
+ $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 to LDAP */
- function save()
- {
- if(chkacl($this->acl,"webdavAccount")==""){
- plugin::save();
- /* Write back to ldap */
- $ldap= $this->config->get_ldap_link();
- $ldap->cd($this->dn);
- $ldap->modify($this->attrs);
- show_ldap_error($ldap->get_error());
+ /* 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;
+ }
- /* Optionally execute a command after we're done */
- if ($this->initially_was_account == $this->is_account){
- if ($this->is_modified){
- $this->handle_post_events("mofify");
+ 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']);
}
- } else {
- $this->handle_post_events("add");
}
- }
+ */
+
+ /* 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
}
}
-
// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
?>