Code

Starting move
[gosa.git] / plugins / personal / connectivity / class_kolabAccount.inc
diff --git a/plugins/personal/connectivity/class_kolabAccount.inc b/plugins/personal/connectivity/class_kolabAccount.inc
deleted file mode 100644 (file)
index c72977d..0000000
+++ /dev/null
@@ -1,486 +0,0 @@
-<?php
-class kolabAccount extends plugin
-{
-  /* Definitions */
-  var $plHeadline       = "Kolab";
-  var $plDescription    = "This does something";
-
-  /* Kolab attributes */
-  var $kolabInvitationPolicy  = array();
-  var $kolabFreeBusyFuture    = 60;
-  var $unrestrictedMailSize   = 0;
-  var $calFBURL               = "";
-  var $kolabDelegate          = array();
-
-  /* attribute list for save action */
-  var $attributes     = array("kolabFreeBusyFuture", "unrestrictedMailSize", "calFBURL","kolabDelegate","kolabInvitationPolicy");
-  var $objectclasses  = array("kolabInetOrgPerson");
-
-  /* Helper */
-  var $imapping= array();
-  var $mail_Account   = false;
-  var $ReadOnly = false;
-  var $view_logged = FALSE;
-  var $uid = "";
-
-  function kolabAccount (&$config, $dn= NULL,$parent = NULL)
-  {
-    plugin::plugin ($config, $dn, $parent);
-
-    /* Setting uid to default */
-    if(isset($this->attrs['uid'][0])){
-      $this->uid = $this->attrs['uid'][0];
-    }
-
-    /* Pull arrays */
-    foreach(array("kolabDelegate", "kolabInvitationPolicy") as $attr){
-      if (isset($this->attrs["$attr"]["count"])){
-        $tmp = array();
-        for ($i= 0; $i<$this->attrs["$attr"]["count"]; $i++){
-          $tmp[]=$this->attrs["$attr"][$i];
-        }
-        $this->$attr = $tmp;
-      }
-    }
-
-    /* If this one is empty, preset with ACT_MANUAL for anonymous users */
-    if (count ($this->kolabInvitationPolicy) == 0){
-       $this->kolabInvitationPolicy= array("ACT_MANUAL");
-    }
-
-    /* Check is account state */
-    $this->is_account = false;
-    if(count($this->kolabDelegate)){
-      $this->is_account = true;
-    }
-    foreach(array("calFBURL","unrestrictedMailSize") as $attr){
-      if(!empty($this->$attr)){
-        $this->is_account = true;
-      }
-    } 
-
-    /* Transfer account states for this union */
-    if (isset($this->parent->by_object['mailAccount']) && $this->parent->by_object['mailAccount']->is_account){
-      $this->mail_Account = true;
-     }elseif( isset($this->attrs) && isset($this->attrs['kolabHomeServer'])){
-       $this->mail_Account= true;
-     }else{
-       $this->is_account  = false;
-      $this->mail_Account = false;
-    }
-  }
-
-
-  function execute()
-  {
-         /* Call parent execute */
-       plugin::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= "";
-
-    /* Show main page */
-    $smarty= get_smarty();
-
-    /* Load attributes */
-    foreach($this->attributes as $val){
-      $smarty->assign("$val", $this->$val);
-    }
-
-    $tmp = $this->plInfo();
-    foreach($tmp['plProvidedAcls'] as $acl => $description){
-      $smarty->assign($acl."ACL",$this->getacl($acl,$this->ReadOnly));
-      $smarty->assign($acl."_W", $this->acl_is_writeable($acl,$this->ReadOnly));
-    }
-    $smarty->assign("is_account" ,  $this->is_account); 
-
-    if($this->ReadOnly){
-      $smarty->assign("is_removeable",false); 
-      $smarty->assign("is_createable",false); 
-    }else{
-      $smarty->assign("is_removeable",$this->acl_is_removeable()); 
-      $smarty->assign("is_createable",$this->acl_is_createable()); 
-    }
-
-    /* Check for invitation action */
-    $nr= 0;
-    while (isset($_POST["policy$nr"])){
-      if (isset($_POST["add$nr"])){
-        $this->kolabInvitationPolicy[]= ": ACT_MANUAL";
-      }
-      if (isset($_POST["remove$nr"])){
-        $new= array();
-        foreach ($this->kolabInvitationPolicy as $entry){
-          if (!preg_match("/^".$this->imapping[$nr].":/", $entry)){
-            $new[]= $entry;
-          }
-        }
-        $this->kolabInvitationPolicy= $new;
-      }
-      $nr++;
-    }
-
-    /* Unify addresses */
-    $new= array();
-    foreach($this->kolabInvitationPolicy as $value){
-      $address= preg_replace('/^([^:]+:).*$/', '\1', $value);
-      $new[$address]= $value;
-    }
-    $this->kolabInvitationPolicy= array();
-    foreach($new as $value){
-      $this->kolabInvitationPolicy[]= $value;
-    }
-
-    /* Add delegation */
-    if (isset($_POST['add_delegation'])){
-      if ($_POST['delegate_address'] != ""){
-
-        /* Valid email address specified? */
-        $address= $_POST['delegate_address'];
-        $valid= FALSE;
-        if (!is_email($address)){
-          if (!is_email($address, TRUE)){
-              print_red (_("You're trying to add an invalid email address to the list of delegations."));
-          }
-        } else {
-
-          $ldap= $this->config->get_ldap_link();
-          $ldap->cd ($this->config->current['BASE']);
-          $ldap->search('(mail='.$address.')',array("mail"));
-          if ($ldap->count() == 0){
-            print_red (_("The mail address you're trying to add is no primary mail address of an existing user."));
-          } else {
-            $valid= TRUE;
-          }
-        }
-
-        if ($valid){
-          /* Add it */
-          if ($this->acl_is_writeable("kolabDelegate")){
-            $this->addDelegate ($address);
-            $this->is_modified= TRUE;
-          }
-
-        }
-      }
-    }
-
-    /* Delete forward email addresses */
-    if ((isset($_POST['delete_delegation'])) && (isset($_POST['delegate_list']))){
-      if (count($_POST['delegate_list']) && $this->acl_is_writeable("kolabDelegate")){
-        $this->delDelegate ($_POST['delegate_list']);
-      }
-    }
-
-    /* Assemble policies */
-    $policies= array( 'ACT_ALWAYS_ACCEPT'       => _("Always accept"),
-                      'ACT_ALWAYS_REJECT'       => _("Always reject"),
-                      'ACT_REJECT_IF_CONFLICTS' => _("Reject if conflicts"),
-                      'ACT_MANUAL_IF_CONFLICTS' => _("Manual if conflicts"),
-                      'ACT_MANUAL'              => _("Manual"));
-    $smarty->assign('policies', $policies);
-
-    /* Adjust checkbox */
-    if ($this->unrestrictedMailSize){
-      $smarty->assign('unrestrictedMailSizeState', "checked");
-    } else {
-      $smarty->assign('unrestrictedMailSizeState', "");
-    }
-
-    /* Transfer delegation list */
-    if (!count($this->kolabDelegate)){
-      /* Smarty will produce <option value=""></option> and tidy don't like that, so tell smarty to create no option (array();)*/
-      $smarty->assign("kolabDelegate", array());
-    } else {
-      $smarty->assign("kolabDelegate", $this->kolabDelegate);
-    }
-
-    $smarty->assign("mail_account",$this->mail_Account);
-
-    /* Create InvitationPolicy table */
-    $invitation= "";
-    $this->imapping= array();
-    $nr= 0;
-    $changeState  = "";
-    foreach ($this->kolabInvitationPolicy as $entry){
-
-      if($this->acl_is_writeable("kolabInvitationPolicy")){
-        $changeState .= "changeState('address".$nr."'); \n changeState('policy".$nr."'); \n
-          changeState('add".$nr."'); \n changeState('remove".$nr."'); \n";
-      }
-
-      if(!$this->acl_is_writeable("kolabInvitationPolicy")){
-        $dis = " disabled ";
-      }else{
-        if($this->is_account){
-          $dis = " ";
-        }else{
-          $dis = " disabled ";
-        }
-      }
-      $invitation.= "<tr><td>";
-
-      if(!$this->acl_is_readable("kolabInvitationPolicy"))    {
-      }
-
-      /* The default entry does not have colons... */
-      if (!preg_match('/:/', $entry)){
-        $invitation.= _("Anonymous");
-        $name= "";
-        $mode= $entry;
-      } else {
-        $name= preg_replace('/:.*$/', '', $entry);
-        $mode= preg_replace('/^[^:]*: */', '', $entry);
-
-        if(!$this->acl_is_readable("kolabInvitationPolicy")){
-          $name='';
-        }
-        $invitation.= "<input name=\"address$nr\" size=16 maxlength=60  value=\"$name\" id='address".$nr."' ".$dis.">";
-      }
-      $invitation.= "</td>";
-
-      /* Add mode switch */
-      $invitation.= "<td><select size=\"1\" name=\"policy$nr\" id='policy".$nr."' ".$dis.">";
-      foreach($policies as $key => $value){
-        if ($key == $mode){
-          $invitation.= "<option value=\"$key\" selected>$value</option>";
-        } else {
-          $invitation.= "<option value=\"$key\">$value</option>";
-        }
-      }
-      
-      /* Assign buttons */
-      $button= "";
-      if ($nr == count($this->kolabInvitationPolicy)-1){
-        $button= "<input type=submit name=\"add$nr\" value=\""._("Add")."\" id='add".$nr."' ".$dis.">";
-      }
-      if ($nr != 0) {
-        $button.= "<input type=submit name=\"remove$nr\" value=\""._("Remove")."\" id='remove".$nr."' ".$dis.">";
-      }
-      
-      $invitation.= "</select>&nbsp;$button</td></tr>\n";
-      $this->imapping[$nr]= $name;
-      $nr++;
-    }
-    $smarty->assign("invitation", $invitation);
-    $smarty->assign("changeState", $changeState);
-    $smarty->assign("kolabState",$this->is_account);
-    $display.= $smarty->fetch (get_template_path('kolab.tpl', TRUE, dirname(__FILE__)));
-
-
-    return ($display);
-  }
-
-  function remove_from_parent()
-  {
-    if(!$this->initially_was_account){
-      return;
-    }
-  
-    /* Optionally execute a command after we're done */
-    plugin::remove_from_parent();
-    
-    if(!in_array("kolabInetOrgPerson",$this->attrs['objectClass'])){
-      $this->attrs['objectClass'][] = "kolabInetOrgPerson";
-    }
-
-    $ldap = $this->config->get_ldap_linK(); 
-    $ldap->cd($this->config->current['BASE']);
-    $ldap->cd ($this->dn);
-    $ldap->modify($this->attrs);
-
-    /* Log last action */
-    new log("remove","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error());
-
-    $this->handle_post_events('remove',array("uid" => $this->uid));
-    show_ldap_error($ldap->get_error(), sprintf(_("Removing of user/kolab account with dn '%s' failed."),$this->dn));
-  }
-
-
-  function check()
-  {
-    /* Call common method to give check the hook */
-    $message= plugin::check();
-
-    /* FBFuture is in days... */
-    if ($this->kolabFreeBusyFuture != "" && !preg_match('/^[0-9]+$/', $this->kolabFreeBusyFuture)){
-      $message[]= _("The value specified as Free Busy future needs to be an integer.");
-    }
-
-    /* Check for URL scheme... */
-    if(!empty($this->calFBURL) && !preg_match("/http+(s)*:\/\//",$this->calFBURL)){
-      $message[]= _("The value specified as Free Busy Information URL is invalid.");
-    }
-
-    /* Check invitation policy for existing mail addresses */
-    foreach($this->kolabInvitationPolicy as $policy){
-      
-      /* Ignore anonymous string */
-      if (!preg_match('/:/', $policy)){
-        continue;
-      }
-      
-      $address= preg_replace('/^([^:]+).*$/', '\1', $policy);
-      if (!is_email($address)){
-        if (!is_email($address, TRUE)){
-          $message[]= sprintf(_("The invitation policy entry for address '%s' is not valid."), $address);
-        }
-      } else {
-
-        $ldap= $this->config->get_ldap_link();
-        $ldap->cd ($this->config->current['BASE']);
-        $ldap->search('(mail='.$address.')',array("mail"));
-        if ($ldap->count() == 0){
-          $message[]= sprintf(_("There's no mail user with address '%s' for your invitation policy!"), $address);
-        } else {
-          $valid= TRUE;
-        }
-      }
-    }
-
-    return ($message);
-  }
-
-  /* Save data to object */
-  function save_object()
-  {
-    /* Do we need to flip is_account state? */
-    if (isset($_POST['connectivityTab'])){
-
-      if(isset($_POST["kolabState"])){
-        if($this->acl_is_createable()){
-          $this->is_account = true;
-        }
-      }else{
-        if($this->acl_is_removeable()){
-          $this->is_account = false;
-        }
-      }
-      
-      if ($this->acl_is_writeable("unrestrictedMailSize")){
-        if (isset($_POST['unrestrictedMailSize']) && $_POST['unrestrictedMailSize'] == 1){
-          $this->unrestrictedMailSize= 1;
-        } else {
-          $this->unrestrictedMailSize= 0;
-        }
-      }
-    }
-
-    plugin::save_object();
-
-    /* Save changes done in invitation policies */
-    if($this->acl_is_writeable("kolabInvitationPolicy")){
-      $nr= 0;
-      $this->kolabInvitationPolicy= array();
-      while (isset($_POST["policy$nr"])){
-
-        /* Anonymous? */
-        if (!isset($_POST["address$nr"])){
-          $this->kolabInvitationPolicy[]= $_POST["policy$nr"];
-        } else {
-          $this->kolabInvitationPolicy[]= $_POST["address$nr"].": ".$_POST["policy$nr"];
-        }
-
-        $nr++;
-      }
-
-      /* If this one is empty, preset with ACT_MANUAL for anonymous users */
-      if (count ($this->kolabInvitationPolicy) == 0){
-        $this->kolabInvitationPolicy= array("ACT_MANUAL");
-      }
-    }
-  }
-
-
-  /* Save to LDAP */
-  function save()
-  {
-    /* Check mailmethod before doing something useful */
-    plugin::save();
-
-    /* Transfer arrays */
-    $this->attrs['kolabDelegate']= $this->kolabDelegate;
-    $this->attrs['kolabInvitationPolicy']= $this->kolabInvitationPolicy;
-
-    /* unrestrictedMailSize is boolean */
-    if($this->attrs['unrestrictedMailSize']){
-      $this->attrs['unrestrictedMailSize'] = "TRUE";
-    }else{
-      $this->attrs['unrestrictedMailSize'] = "FALSE";
-    }
-  
-    /* Write back to ldap */
-    $ldap= $this->config->get_ldap_link();
-    $ldap->cd($this->dn);
-    $this->cleanup();
-    $ldap->modify ($this->attrs); 
-
-    /* Log last action */
-    if($this->initially_was_account){
-      new log("modify","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error());
-    }else{
-      new log("create","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error());
-    }
-
-    show_ldap_error($ldap->get_error(), sprintf(_("Saving of user/kolab account with dn '%s' failed."),$this->dn));
-
-    /* Optionally execute a command after we're done */
-    if ($this->initially_was_account == $this->is_account){
-      if ($this->is_modified){
-        $this->handle_post_events("modify",array("uid" => $this->uid));
-      }
-    } else {
-      $this->handle_post_events("add",array("uid" => $this->uid));
-    }
-  }
-
-
-  /* Add entry to delegation list */
-  function addDelegate($address)
-  {
-    $this->kolabDelegate[]= $address;
-    $this->kolabDelegate= array_unique ($this->kolabDelegate);
-
-    sort ($this->kolabDelegate);
-    reset ($this->kolabDelegate);
-    $this->is_modified= TRUE;
-  }
-
-  function delDelegate($addresses)
-  {
-    $this->kolabDelegate= array_remove_entries ($addresses, $this->kolabDelegate);
-    $this->is_modified= TRUE;
-  }
-
-
-  /* Return plugin informations for acl handling  */
-  static function plInfo()
-  {
-    return (array(     
-          "plShortName"     => _("Kolab"),
-          "plDescription"   => _("Kolab account settings")."&nbsp;:&nbsp;<u>"._("Connectivity addon")."</u>",
-          "plSelfModify"    => TRUE,
-          "plDepends"       => array("user"),
-          "plPriority"      => 20,                                 // Position in tabs
-          "plSection"     => array("personal" => _("My account")),
-          "plCategory"    => array("users"),
-          "plOptions"       => array(),
-
-          "plProvidedAcls"  => array(
-            "kolabFreeBusyFuture"   => _("Free busy future"),
-            "unrestrictedMailSize"  => _("Mail size restriction"),
-            "calFBURL"              => _("Free busy information"),
-            "kolabDelegate"         => _("Delegations"),
-            "kolabInvitationPolicy" => _("Invitation policy"))
-          ));
-  }
-}
-
-// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
-?>