Code

Moved fax plugins
authorcajus <cajus@594d385d-05f5-0310-b6e9-bd551577e9d8>
Thu, 17 Jan 2008 08:08:33 +0000 (08:08 +0000)
committercajus <cajus@594d385d-05f5-0310-b6e9-bd551577e9d8>
Thu, 17 Jan 2008 08:08:33 +0000 (08:08 +0000)
git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@8421 594d385d-05f5-0310-b6e9-bd551577e9d8

36 files changed:
gosa-core/plugins/gofax/blocklists/class_blocklistGeneric.inc [deleted file]
gosa-core/plugins/gofax/blocklists/class_blocklistManagement.inc [deleted file]
gosa-core/plugins/gofax/blocklists/class_divListBlocklists.inc [deleted file]
gosa-core/plugins/gofax/blocklists/generic.tpl [deleted file]
gosa-core/plugins/gofax/blocklists/main.inc [deleted file]
gosa-core/plugins/gofax/blocklists/paste_generic.tpl [deleted file]
gosa-core/plugins/gofax/blocklists/remove.tpl [deleted file]
gosa-core/plugins/gofax/blocklists/tabs_blocklist.inc [deleted file]
gosa-core/plugins/gofax/faxaccount/class_gofaxAccount.inc [deleted file]
gosa-core/plugins/gofax/faxaccount/generic.tpl [deleted file]
gosa-core/plugins/gofax/faxaccount/lists.tpl [deleted file]
gosa-core/plugins/gofax/faxaccount/locals.tpl [deleted file]
gosa-core/plugins/gofax/faxaccount/main.inc [deleted file]
gosa-core/plugins/gofax/faxaccount/paste_generic.tpl [deleted file]
gosa-core/plugins/gofax/faxreports/class_faxreport.inc [deleted file]
gosa-core/plugins/gofax/faxreports/contents.tpl [deleted file]
gosa-core/plugins/gofax/faxreports/detail.tpl [deleted file]
gosa-core/plugins/gofax/faxreports/main.inc [deleted file]
gosa-plugins/gofax/gofax/blocklists/class_blocklistGeneric.inc [new file with mode: 0644]
gosa-plugins/gofax/gofax/blocklists/class_blocklistManagement.inc [new file with mode: 0644]
gosa-plugins/gofax/gofax/blocklists/class_divListBlocklists.inc [new file with mode: 0644]
gosa-plugins/gofax/gofax/blocklists/generic.tpl [new file with mode: 0644]
gosa-plugins/gofax/gofax/blocklists/main.inc [new file with mode: 0644]
gosa-plugins/gofax/gofax/blocklists/paste_generic.tpl [new file with mode: 0644]
gosa-plugins/gofax/gofax/blocklists/remove.tpl [new file with mode: 0644]
gosa-plugins/gofax/gofax/blocklists/tabs_blocklist.inc [new file with mode: 0644]
gosa-plugins/gofax/gofax/faxaccount/class_gofaxAccount.inc [new file with mode: 0644]
gosa-plugins/gofax/gofax/faxaccount/generic.tpl [new file with mode: 0644]
gosa-plugins/gofax/gofax/faxaccount/lists.tpl [new file with mode: 0644]
gosa-plugins/gofax/gofax/faxaccount/locals.tpl [new file with mode: 0644]
gosa-plugins/gofax/gofax/faxaccount/main.inc [new file with mode: 0644]
gosa-plugins/gofax/gofax/faxaccount/paste_generic.tpl [new file with mode: 0644]
gosa-plugins/gofax/gofax/faxreports/class_faxreport.inc [new file with mode: 0644]
gosa-plugins/gofax/gofax/faxreports/contents.tpl [new file with mode: 0644]
gosa-plugins/gofax/gofax/faxreports/detail.tpl [new file with mode: 0644]
gosa-plugins/gofax/gofax/faxreports/main.inc [new file with mode: 0644]

diff --git a/gosa-core/plugins/gofax/blocklists/class_blocklistGeneric.inc b/gosa-core/plugins/gofax/blocklists/class_blocklistGeneric.inc
deleted file mode 100644 (file)
index a6dab59..0000000
+++ /dev/null
@@ -1,371 +0,0 @@
-<?php
-
-define("BLOCK_LIST_RECEIVE" , 0);
-define("BLOCK_LIST_SEND" , 1);
-
-class blocklistGeneric extends plugin
-{
-  /* Definitions */
-  var $plHeadline= "FAX Blocklists";
-  var $plDescription= "This does something";
-
-  var $cn ="";
-  var $description = "";
-  var $base = "";  
-
-  var $type;
-  var $goFaxBlocklist = array();
-  var $readonly = FALSE;
-  var $view_logged = FALSE;
-  var $attributes = array("cn","description");
-
-  var $ignore_account = TRUE;
-  
-  function __construct($config,$dn = "new")
-  {
-    plugin::plugin($config,$dn);
-
-    /* Set default list type */
-    $this->type = BLOCK_LIST_SEND;
-
-    /* Load defined numbers */
-    if($dn != "new"){
-  
-      /* We will not be able to rename edited blocklists */
-      $this->readonly = TRUE;
-  
-      /* Get blocklist type and defined numbers */
-      if (in_array("goFaxSBlock",$this->attrs['objectClass'])){
-        if(isset($this->attrs["goFaxSBlocklist"])){
-          for ($i= 0; $i<$this->attrs["goFaxSBlocklist"]["count"]; $i++){
-            $this->goFaxBlocklist[]= $this->attrs["goFaxSBlocklist"][$i];
-          }
-        }
-        $this->type= BLOCK_LIST_SEND;
-      } elseif (in_array("goFaxRBlock",$this->attrs['objectClass'])){
-        if(isset($this->attrs["goFaxRBlocklist"])){
-          for ($i= 0; $i<$this->attrs["goFaxRBlocklist"]["count"]; $i++){
-            $this->goFaxBlocklist[]= $this->attrs["goFaxRBlocklist"][$i];
-          }
-        }
-        $this->type= BLOCK_LIST_RECEIVE;
-      }
-    }
-
-    /* Set base */
-    if ($this->dn == "new"){
-      if(session::is_set('CurrentMainBase')){
-        $this->base = session::get('CurrentMainBase');
-      }else{
-        $ui= get_userinfo();
-        $this->base= dn2base($ui->dn);
-      }
-    } else {
-      $this->base =preg_replace ("/^[^,]+,[^,]+,[^,]+,/","",$this->dn);
-    }
-  }
-
-  public function execute()
-  {
-    /* Log view */
-    if(!$this->view_logged){
-      $this->view_logged = TRUE;
-      new log("view","blocklist/".get_class($this),$this->dn);
-    }
-
-
-    /**************
-     * Base select dialog 
-     **************/
-
-    $once = true;
-    foreach($_POST as $name => $value){
-      if(preg_match("/^chooseBase/",$name) && $once){
-        $once = false;
-        $this->dialog = new baseSelectDialog($this->config,$this,$this->get_allowed_bases());
-        $this->dialog->setCurrentBase($this->base);
-      }
-    }
-
-    /* Dialog handling */
-    if(is_object($this->dialog)){
-      /* Must be called before save_object */
-      $this->dialog->save_object();
-
-      if($this->dialog->isClosed()){
-        $this->dialog = false;
-      }elseif($this->dialog->isSelected()){
-
-        /* A new base was selected, check if it is a valid one */
-        $tmp = $this->get_allowed_bases();
-        if(isset($tmp[$this->dialog->isSelected()])){
-          $this->base = $this->dialog->isSelected();
-        }
-        $this->dialog= false;
-
-      }else{
-        return($this->dialog->execute());
-      }
-    }
-
-
-    /***************
-      Add numer to blocklist
-     ***************/
-
-
-    /* Handle interactions: add */
-    if (isset($_POST['add_number']) && $_POST['number'] != ""){
-      if (tests::is_phone_nr($_POST['number']) || preg_match ("/^[\/0-9 ()\^\.\$+*-]+$/",$_POST['number'])){
-        $this->addNumber ($_POST['number']);
-      } else {
-        print_red (_("Please specify a valid phone number."));
-      }
-    }
-
-
-    /***************
-      Delete number from list
-     ***************/
-
-    /* Handle interactions: delete */
-    if (isset($_POST['delete_number']) && isset($_POST['numbers']) && count($_POST['numbers']) > 0){
-      $this->delNumber ($_POST['numbers']);
-    }
-
-
-    /***************
-      Template output
-     ***************/
-
-    $smarty = get_smarty();
-    foreach($this->attributes as $name){
-      $smarty->assign($name,$this->$name);
-    }
-    $tmp = $this->plInfo();
-    foreach($tmp['plProvidedAcls'] as $name => $translation){
-      $smarty->assign($name."ACL",$this->getacl($name));
-    }
-    $smarty->assign("goFaxBlocklist",$this->goFaxBlocklist);
-    $smarty->assign("cnACL",$this->getacl("cn",$this->readonly));
-    $smarty->assign("typeACL",$this->getacl("type",$this->readonly));
-    $smarty->assign("base",$this->base);
-    $smarty->assign("bases", $this->get_allowed_bases());
-    $smarty->assign("types", array(BLOCK_LIST_SEND => _("send"), BLOCK_LIST_RECEIVE => _("receive")));
-    $smarty->assign("type", $this->type);
-    return($smarty->fetch(get_template_path('generic.tpl', TRUE)));
-  }
-
-
-  public function save_object()
-  {
-    if(isset($_POST['blocklist_posted'])){
-      $tmp_cn = $this->cn;
-      plugin::save_object();
-      $this->cn = $tmp_cn;
-
-      /* Save base, since this is no LDAP attribute */
-      $tmp = $this->get_allowed_bases();
-      if(isset($_POST['base'])){
-        if(isset($tmp[$_POST['base']])){
-          $this->base= $_POST['base'];
-        }
-      }
-      $tmp = $this->attributes;
-      $tmp[] = "type";
-      foreach($tmp as $attr){
-        if(in_array($attr,array("cn","type")) && $this->readonly){
-          continue;
-        }elseif(isset($_POST[$attr]) && $this->acl_is_writeable($attr)){
-          $this->$attr = $_POST[$attr];
-        }
-      }
-    }
-  }
-
-
-  function remove_from_parent()
-  {
-    $ldap= $this->config->get_ldap_link();
-    $ldap->rmDir($this->dn);
-    new log("remove","gofaxlist/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error());
-    show_ldap_error($ldap->get_error(), sprintf(_("Removing of blocklist with dn '%s' failed."),$this->dn));
-    $this->handle_post_events("remove");
-  }
-
-
-  /* Check values */
-  function check()
-  {
-    /* Call common method to give check the hook */
-    $message= plugin::check();
-
-    /* check syntax: must cn */
-    if ($this->cn == ""){
-      $message[]= _("Required field 'Name' is not set.");
-    } else {
-      if (!tests::is_uid($this->cn)){
-        $message[]= _("Required field 'Name' contains invalid characters");
-      }
-      if ($this->dn == 'new'){
-        $ldap= $this->config->get_ldap_link();
-        $ldap->cd (get_ou('blocklistou').$this->config->current["BASE"]);
-        $ldap->search ("(&(|(objectClass=goFaxSBlock)(objectClass=goFaxRBlock))(cn=".$this->cn."))", array("cn"));
-        if ($ldap->count() != 0){
-          $message[]= _("Specified name is already used.");
-        }
-      }
-    }
-    return $message;
-  }
-
-
-  /* Save to LDAP */
-  function save()
-  {
-    plugin::save();
-
-    /* Type selection */
-    if ($this->type == BLOCK_LIST_SEND){
-      $type= "goFaxSBlocklist";
-      $this->attrs['objectClass']= "goFaxSBlock";
-    } else {
-      $type= "goFaxRBlocklist";
-      $this->attrs['objectClass']= "goFaxRBlock";
-    }
-
-    /* Add list */
-    if (count($this->goFaxBlocklist)){
-      $this->attrs[$type]= $this->goFaxBlocklist;
-    }
-
-    /* Write back to ldap */
-    $ldap= $this->config->get_ldap_link();
-    $ldap->cd($this->base);
-    $ldap->cat($this->dn, array('dn'));
-    if ($ldap->count()){
-      if (!isset($this->attrs[$type])){
-        $this->attrs[$type]= array();
-      }
-      $ldap->cd($this->dn);
-      $this->cleanup();
-      $ldap->modify($this->attrs);
-      new log("modify","faxblocklist/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error());
-      $this->handle_post_events("modify");
-    } else {
-      $ldap->cd($this->config->current['BASE']);
-      $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $this->dn));
-      $ldap->cd($this->dn);
-      $ldap->add($this->attrs);
-      new log("create","gofaxlist/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error());
-      $this->handle_post_events("add");
-    }
-    show_ldap_error($ldap->get_error(), sprintf(_("Saving of blocklist with dn '%s' failed."),$this->dn));
-  }
-
-
-  /* Add number */
-  function addNumber($number)
-  {
-    if (!in_array($number, $this->goFaxBlocklist)){
-      $this->goFaxBlocklist[]= $number;
-      sort($this->goFaxBlocklist);
-    }
-  }
-
-
-  /* Remove number from list */
-  function delNumber($numbers)
-  {
-    $tmp= array();
-    foreach ($this->goFaxBlocklist as $val){
-      if (!in_array($val, $numbers)){
-        $tmp[]= $val;
-      }
-    }
-    $this->goFaxBlocklist= $tmp;
-  }
-
-
-  function getCopyDialog()
-  { 
-    $smarty = get_smarty();
-    $smarty->assign("cn",$this->cn);
-    $str = $smarty->fetch(get_template_path("paste_generic.tpl",TRUE,dirname(__FILE__)));
-    $ret = array();
-    $ret['string'] = $str;
-    $ret['status'] = "";
-    return($ret);
-  }
-
-  function saveCopyDialog()
-  {
-    if(isset($_POST['cn'])){
-      $this->cn = get_post('cn');
-    }
-  }
-
-  
-  function PrepareForCopyPaste($source)
-  {
-    plugin::PrepareForCopyPaste($source);
-
-    /* We will not be able to rename edited blocklists */
-    $this->readonly = TRUE;
-
-    /* Get blocklist type and defined numbers */
-    if (in_array("goFaxSBlock",$source['objectClass'])){
-      if(isset($source["goFaxSBlocklist"])){
-        for ($i= 0; $i<$source["goFaxSBlocklist"]["count"]; $i++){
-          $this->goFaxBlocklist[]= $source["goFaxSBlocklist"][$i];
-        }
-      }
-      $this->type= BLOCK_LIST_SEND;
-    } elseif (in_array("goFaxRBlock",$source['objectClass'])){
-      if(isset($source["goFaxRBlocklist"])){
-        for ($i= 0; $i<$source["goFaxRBlocklist"]["count"]; $i++){
-          $this->goFaxBlocklist[]= $source["goFaxRBlocklist"][$i];
-        }
-      }
-      $this->type= BLOCK_LIST_RECEIVE;
-    }
-
-    /* Set base */
-    if ($this->dn == "new"){
-      if(session::is_set('CurrentMainBase')){
-        $this->base = session::get('CurrentMainBase');
-      }else{
-        $ui= get_userinfo();
-        $this->base= dn2base($ui->dn);
-      }
-    } else {
-      $this->base =preg_replace ("/^[^,]+,[^,]+,[^,]+,/","",$this->dn);
-    }
-  }
-
-
-  /* Return plugin informations for acl handling */
-  static function plInfo()
-  {
-    return (array(
-          "plShortName"       => _("Fax"),
-          "plDescription"     => _("Fax blocklists"),
-          "plSelfModify"      => FALSE,
-          "plDepends"         => array(),
-
-          "plPriority"    => 0,
-          "plSection"     => array("administration" => _("FAX Blocklists")),
-          "plCategory"    => array("gofaxlist"      => array("description" => _("Fax blocklists"),
-              "objectClass" => array("goFaxRBlock","goFaxSBlock"))),
-          "plProvidedAcls" => array(
-            "cn"              => _("Name"),
-            "description"     => _("Description"),
-            "base"            => _("Base"),
-            "goFaxBlocklist"  => _("Blocklist"),
-            "type"            => _("Blocklist type"))
-          ));
-  }
-
-}
-// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
-?>
diff --git a/gosa-core/plugins/gofax/blocklists/class_blocklistManagement.inc b/gosa-core/plugins/gofax/blocklists/class_blocklistManagement.inc
deleted file mode 100644 (file)
index 8c68cc4..0000000
+++ /dev/null
@@ -1,477 +0,0 @@
-<?php
-class blocklist extends plugin
-{
-  /* Definitions */
-  var $plHeadline= "FAX Blocklists";
-  var $plDescription= "This does something";
-
-  var $blocklists       = array();
-  var $DivListBlocklist = NULL;
-  var $CopyPasteHandler = NULL;
-
-  var $start_pasting_copied_objects = FALSE;
-  
-  function blocklist (&$config, $ui)
-  {
-    $this->ui     = $ui;
-    $this->dn     = "";
-    $this->config = &$config;
-    $this->base  = session::get('CurrentMainBase'); 
-    $this->DivListBlocklist = new divListBlocklist($this->config,$this);
-
-    /* Initialize copy&paste queue */
-    if ($this->config->boolValueIsTrue("main", "enableCopyPaste")){
-      $this->CopyPasteHandler= new CopyPasteHandler($this->config);
-    }
-  }
-
-
-  function execute()
-  {
-    /* Call parent execute */
-    plugin::execute();
-
-    session::set('LOCK_VARS_TO_USE',array("/^goFaxBlocklist_/","/^act$/","/^id$/","/^remove_multiple_blocklists/","/^item_selected/"));
-
-    /***************
-      Init vars 
-     ***************/
-
-    /* Get global smarty instance */
-    $smarty       = get_smarty();
-    $s_action     = "";                       // Contains the action to proceed
-    $s_entry      = "";                       // The value for s_action
-    $base_back    = "";                       // The Link for Backbutton
-
-
-    /***************
-      Fetch posts 
-     ***************/
-
-    /* Test Posts */
-    foreach($_POST as $key => $val){
-      // Post for delete
-      if(preg_match("/^goFaxBlocklist_del.*/",$key)){
-        $s_action = "del";
-        $s_entry  = preg_replace("/^goFaxBlocklist_del_/i","",$key);
-        // Post for edit
-      }elseif(preg_match("/^goFaxBlocklist_edit_.*/",$key)){
-        $s_action="edit";
-        $s_entry  = preg_replace("/^goFaxBlocklist_edit_/i","",$key);
-        // Post for new
-      }elseif(preg_match("/^goFaxBlocklist_new.*/",$key)){
-        $s_action="new";
-      }elseif(preg_match("/^remove_multiple_blocklists/",$key)){
-        $s_action="del_multiple";
-      }elseif(preg_match("/^copy/",$key)){
-        $s_action = "copy";
-        $s_entry= preg_replace("/^copy_/i", "", $key);
-      }elseif(preg_match("/^cut/",$key)){
-        $s_action = "cut";
-        $s_entry= preg_replace("/^cut_/i", "", $key);
-      }
-
-    }
-    if((isset($_GET['act']))&&($_GET['act']=="edit_entry")){
-      $s_action ="edit";
-      $s_entry  = $_GET['id'];
-    }
-
-    $s_entry  = preg_replace("/_.$/","",$s_entry);
-
-
-    /* handle C&P from layers menu */
-    if(isset($_POST['menu_action']) && preg_match("/^multiple_copy_systems/",$_POST['menu_action'])){
-      $s_action = "copy_multiple";
-    }
-    if(isset($_POST['menu_action']) && preg_match("/^multiple_cut_systems/",$_POST['menu_action'])){
-      $s_action = "cut_multiple";
-    }
-    if(isset($_POST['menu_action']) && preg_match("/^editPaste/",$_POST['menu_action'])){
-      $s_action = "editPaste";
-    }
-
-
-    /* Create options */
-    if(isset($_POST['menu_action']) && $_POST['menu_action'] == "goFaxBlocklist_new"){
-      $s_action = "new";
-    }
-
-    /* handle remove from layers menu */
-    if(isset($_POST['menu_action']) && preg_match("/^remove_multiple/",$_POST['menu_action'])){
-      $s_action = "del_multiple";
-    }
-
-
-    /***************
-      Handle copy & paste  
-     ***************/
-
-    $ret = $this->copyPasteHandling_from_queue($s_action,$s_entry);
-    if($ret){
-      return($ret);
-    }
-
-
-    /***************
-      Cancel some dialogs  
-     ***************/
-
-    /* Cancel dialog */
-    if (isset($_POST['edit_cancel']) || 
-        isset($_POST['delete_blocklist_cancel']) ||
-        isset($_POST['delete_lock'])){
-
-      del_lock ($this->dn);
-      $this->dialog = NULL;
-      session::un_set('objectinfo');
-    }
-
-
-    /***************
-      Save blocklist 
-     ***************/
-
-    /* What about finish? */
-    if (isset($_POST['edit_finish']) || isset($_POST['edit_apply'])){
-
-      /* No errors, save object */
-      $this->dialog->save_object();
-      $message= $this->check();
-      if (count ($message) == 0){
-
-        $this->dialog->save ();
-
-        if (!isset($_POST['edit_apply'])){
-          del_lock ($this->dn);
-          $this->dn= "";
-          $this->dialog = NULL;
-          session::un_set('objectinfo');
-        }
-      } else {
-        /* Errors found, show message */
-        show_errors ($message);
-      }
-    }
-
-
-    /***************
-      Create a new blocklist (dialog)
-     ***************/
-
-    /* Create new blocklist? */
-    if ($s_action=="new"){
-      $this->dn= "new";
-      $this->dialog = new faxblocktabs($this->config,$this->config->data['TABS']['FAXBLOCKTABS'],$this->dn);
-      $this->dialog->set_acl_base($this->base);
-    }
-
-
-    /***************
-      Edit blocklist 
-     ***************/
-
-    if ($s_action=="edit" && !is_object($this->dialog)){
-
-      $this->dn=$this->blocklists[$s_entry]['dn'];
-
-      if (($user= get_lock($this->dn)) != ""){
-        return(gen_locked_message($user, $this->dn));
-      }else{
-        add_lock ($this->dn, $this->ui->dn);
-      }
-      session::set('objectinfo',trim($this->dn));
-      $this->dialog = new faxblocktabs($this->config,$this->config->data['TABS']['FAXBLOCKTABS'],$this->dn);
-      $this->dialog->set_acl_base($this->dn);
-    }    
-
-
-    /***************
-      Display dialog  
-     ***************/
-
-    if(is_object($this->dialog) && ($this->dialog instanceof faxblocktabs)){
-      $this->dialog->save_object();
-      return($this->dialog->execute());
-    }
-
-
-    /********************
-      Delete MULTIPLE entries requested, display confirm dialog
-     ********************/
-
-    if ($s_action=="del_multiple"){
-
-      $this->dns = array();
-      $ids = $this->list_get_selected_items();
-
-      if(count($ids)){
-        foreach($ids as $id){
-          $dn = $this->blocklists[$id]['dn'];
-          if (($user= get_lock($dn)) != ""){
-            return(gen_locked_message ($user, $dn));
-          }
-          $this->dns[$id] = $dn;
-        }
-
-        $dns_names = "<br><pre>";
-        foreach($this->dns as $dn){
-          add_lock ($dn, $this->ui->dn);
-          $dns_names .= $dn."\n";
-        }
-        $dns_names .="</pre>";
-
-        /* Lock the current entry, so nobody will edit it during deletion */
-        $smarty->assign("info",     sprintf(_("You're about to delete the following blocklists(s) %s"), @LDAP::fix($dns_names)));
-        $smarty->assign("multiple", true);
-        return($smarty->fetch(get_template_path('remove.tpl', TRUE)));
-      }
-    }
-
-
-    /********************
-      Delete MULTIPLE entries confirmed
-     ********************/
-
-    /* Confirmation for deletion has been passed. */
-    if (isset($_POST['delete_multiple_blocklist_confirm'])){
-
-      /* Remove user by user and check acls before removeing them */
-      foreach($this->dns as $key => $dn){
-        if (preg_match("/d/",$this->ui->get_permissions($this->dn,"gofaxlist/blocklistGeneric"))){
-          $this->dn = $dn;
-          $this->dialog = new faxblocktabs($this->config,$this->config->data['TABS']['FAXBLOCKTABS'],$this->dn);
-          $this->dialog->delete();
-          $this->dialog = NULL;
-        } else {
-          print_red (sprintf(_("You are not allowed to delete the blocklist '%s'!"),$dn));
-        }
-        /* Remove lock file after successfull deletion */
-        del_lock ($dn);
-        unset($this->dns[$key]);
-      }
-      $this->reload();
-    }
-
-
-    /********************
-      Delete MULTIPLE entries Canceled
-     ********************/
-
-    /* Remove lock */
-    if(isset($_POST['delete_multiple_blocklist_cancel'])){
-      foreach($this->dns as $key => $dn){
-        del_lock ($dn);
-        unset($this->dns[$key]);
-      }
-    }
-
-
-    /***************
-      Remove blocklist
-     ***************/
-
-    /* Delete blocklist requested */
-    if ($s_action=="del"){
-      $this->dn=$this->blocklists[$s_entry]['dn'];
-
-      /* Check locking */
-      if (($user= get_lock($this->dn)) != ""){
-        session::set('dn',$this->dn);
-        return(gen_locked_message($user, $this->dn));
-      } else {
-
-        // Lock this dn for editing
-        add_lock ($this->dn, $this->ui->dn);
-        $smarty->assign("info", sprintf(_("You're about to delete the blocklist '%s'."), $this->dn));
-        $smarty->assign("multiple", false);
-        return($smarty->fetch(get_template_path('remove.tpl', TRUE)));
-      }
-    }
-
-
-    /***************
-      Remove blocklist confirmed
-     ***************/
-
-    /* Finally delete blocklist */
-    if (isset($_POST['delete_blocklist_confirm'])){
-      if (preg_match("/d/",$this->ui->get_permissions($this->dn,"gofaxlist/blocklistGeneric"))){
-        $this->dialog = new faxblocktabs($this->config,$this->config->data['TABS']['FAXBLOCKTABS'],$this->dn);
-        $this->dialog->delete();
-        $this->dialog = NULL;
-        del_lock ($this->dn);
-      } else {
-        print_red (_("You have no permission to remove this blocklist."));
-      }
-    }
-
-    /***************
-      Divlist dialog 
-     ***************/
-
-    /* Check if there is a snapshot dialog open */
-    $base = $this->DivListBlocklist->selectedBase;
-    if($str = $this->showSnapshotDialog($base,$this->get_used_snapshot_bases())){
-      return($str);
-    }
-
-    /* Display dialog with system list */
-    $this->DivListBlocklist->parent = $this;
-    $this->DivListBlocklist->execute();
-
-    /* Add departments if subsearch is disabled */
-    if(!$this->DivListBlocklist->SubSearch){
-      $this->DivListBlocklist->AddDepartments($this->DivListBlocklist->selectedBase,3,1);
-    }
-    $this->reload();
-    $this->DivListBlocklist->setEntries($this->blocklists);
-    return($this->DivListBlocklist->Draw());
-  }
-
-
-  function list_get_selected_items()
-  {
-    $ids = array();
-    foreach($_POST as $name => $value){
-      if(preg_match("/^item_selected_[0-9]*$/",$name)){
-        $id   = preg_replace("/^item_selected_/","",$name);
-        $ids[$id] = $id;
-      }
-    }
-    return($ids);
-  }
-
-
-  /* Return departments, that will be included within snapshot detection */
-  function get_used_snapshot_bases()
-  {
-    return(array(get_ou('blocklistou').$this->DivListBlocklist->selectedBase));
-  }
-
-
-  /* Reload the list of known blocklists */
-  function reload()
-  {
-    /* Init some vars */
-    $filter = $filter2      = "";
-    $base                   = $this->DivListBlocklist->selectedBase;
-    $Regex                  = $this->DivListBlocklist->Regex;
-    $SubSearch              = $this->DivListBlocklist->SubSearch;
-    $ShowSendBocklists      = $this->DivListBlocklist->ShowSendBocklists;
-    $ShowReceiveBlocklists  = $this->DivListBlocklist->ShowReceiveBlocklists;
-    $Flags                  = GL_SIZELIMIT;
-    $res = $res2            = array();
-
-    /* Append subsearch to Flags */
-    if($SubSearch){
-      $Flags |= GL_SUBSEARCH;
-    }else{
-      $base = get_ou('blocklistou').$base;
-    }  
-
-    /* Create filter */
-    if ($ShowSendBocklists){
-      $filter = "(&(objectClass=goFaxSBlock)(|(cn=".$Regex.")(goFaxSBlocklist=".$Regex.")))";
-      $res= get_list($filter, "gofaxlist", $base,array("*"), $Flags);
-    }
-    if ($ShowReceiveBlocklists){
-      $filter2= "(&(objectClass=goFaxRBlock)(|(cn=".$Regex.")(goFaxRBlocklist=".$Regex.")))";
-      $res2= get_list($filter2, "gofaxlist", $base,array("*"), $Flags);
-    }
-
-    $this->blocklists = array_merge($res,$res2);
-
-    /* appen && sort */
-    $tmp=array();
-    foreach($this->blocklists as $tkey => $val ){
-
-      $acl = $this->ui ->get_permissions($base,"gofaxlist/blocklist");
-      if(preg_match("/r/",$acl)){
-        $tmp[strtolower($val['cn'][0]).$val['cn'][0]]=$val;
-      }
-    }
-    ksort($tmp);
-    $this->blocklists=array();
-    foreach($tmp as $val){
-      $this->blocklists[]=$val;
-    }
-    reset ($this->blocklists);
-  }
-
-
-  /* Save data to object */
-  function save_object()
-  {
-    $this->DivListBlocklist->save_object();
-  }
-
-
-
-
-
-  function copyPasteHandling_from_queue($s_action,$s_entry)
-  {
-    /* Check if Copy & Paste is disabled */
-    if(!is_object($this->CopyPasteHandler)){
-      return("");
-    }
-
-    /* Add a single entry to queue */
-    if($s_action == "cut" || $s_action == "copy"){
-      /* Cleanup object queue */
-      $this->CopyPasteHandler->cleanup_queue();
-      $dn = $this->blocklists[$s_entry]['dn'];
-      $this->CopyPasteHandler->add_to_queue($dn,$s_action,"faxblocktabs","FAXBLOCKTABS","gofaxlist");
-    }
-
-    /* Add entries to queue */
-    if($s_action == "copy_multiple" || $s_action == "cut_multiple"){
-
-      /* Cleanup object queue */
-      $this->CopyPasteHandler->cleanup_queue();
-
-      /* Add new entries to CP queue */
-      foreach($this->list_get_selected_items() as $id){
-        $dn = $this->blocklists[$id]['dn'];
-
-        if($s_action == "copy_multiple"){
-          $this->CopyPasteHandler->add_to_queue($dn,"copy","faxblocktabs","FAXBLOCKTABS","gofaxlist");
-        }
-        if($s_action == "cut_multiple"){
-          $this->CopyPasteHandler->add_to_queue($dn,"cut","faxblocktabs","FAXBLOCKTABS","gofaxlist");
-        }
-      }
-    }
-
-    /* Start pasting entries */
-    if($s_action == "editPaste"){
-      $this->start_pasting_copied_objects = TRUE;
-    }
-
-    /* Return C&P dialog */
-    if($this->start_pasting_copied_objects && $this->CopyPasteHandler->entries_queued()){
-
-      /* Load entry from queue and set base */
-      $this->CopyPasteHandler->load_entry_from_queue();
-      $this->CopyPasteHandler->SetVar("base",$this->DivListBlocklist->selectedBase);
-
-      /* Get dialog */
-      $data = $this->CopyPasteHandler->execute();
-
-      /* Return dialog data */
-      if(!empty($data)){
-        return($data);
-      }
-    }
-
-    /* Automatically disable status for pasting */
-    if(!$this->CopyPasteHandler->entries_queued()){
-      $this->start_pasting_copied_objects = FALSE;
-    }
-    return("");
-  }
-
-}
-// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
-?>
diff --git a/gosa-core/plugins/gofax/blocklists/class_divListBlocklists.inc b/gosa-core/plugins/gofax/blocklists/class_divListBlocklists.inc
deleted file mode 100644 (file)
index 8b8a505..0000000
+++ /dev/null
@@ -1,291 +0,0 @@
-<?php
-
-class divListBlocklist extends MultiSelectWindow
-{
-
-  /* Current base */
-  var $selectedBase       = "";
-  var $departments        = array();
-
-  /* Regex */
-  var $Regex              = "*";
-
-  /* checkboxes */
-  var $ShowSendBocklists      ;
-  var $ShowReceiveBlocklists  ;
-
-  /* Subsearch checkbox */
-  var $SubSearch;
-
-  var $parent             ;
-  var $ui                 ;
-
-  function divListBlocklist (&$config, &$parent)
-  {
-    MultiSelectWindow::MultiSelectWindow($config, "Blocklists", "gofaxlist");
-    
-    $this->parent       = $parent;
-    $this->ui           = get_userinfo();
-
-    /* Set list strings */
-    $this->SetTitle(_("List of blocklists"));
-    $this->SetSummary(_("List of blocklists"));
-
-    /* Result page will look like a headpage */
-    $this->SetHeadpageMode();
-    $this->SetInformation(_("This menu allows you to create, delete and edit selected blocklists. Having a large size of lists, you might prefer the range selectors on top of the select box."));
-
-    $this->EnableAplhabet   (true);
-  
-    /* Disable buttonsm */
-    $this->EnableCloseButton(false);
-    $this->EnableSaveButton (false);
-
-    /* Dynamic action col, depending on snapshot icons */
-    $action_col_size = 100;
-    if($this->parent->snapshotEnabled()){
-      $action_col_size += 20;
-    }
-
-    /* Toggle all selected / deselected */
-    $chk = "<input type='checkbox' id='select_all' name='select_all'
-               onClick='toggle_all_(\"^item_selected_[0-9]*$\",\"select_all\");' >";
-
-    /* set Page header */
-    $this->AddHeader(array("string"=> $chk,          "attach"=>"style='width:20px;'"));
-    $this->AddHeader(array("string" => "&nbsp;", "attach" => "style='text-align:center;width:20px;'"));
-    $this->AddHeader(array("string" => _("Blocklist name")." / "._("Department"), "attach" => "style=''"));
-    $this->AddHeader(array("string" => _("Actions"), "attach" => "style='width:".$action_col_size."px;border-right:0px;text-align:right;'" ));
-
-    /* Add Checkboxes / SubSearch checkbox */
-    $this->AddCheckBox("ShowSendBocklists"     , _("Select to see send blocklists"),    _("Show send blocklists"),true);
-    $this->AddCheckBox("ShowReceiveBlocklists" , _("Select to see receive blocklists"), _("Show receive blocklists"),true);
-  
-    $this->AddCheckBox(SEPERATOR);
-    $this->AddCheckBox("SubSearch",  _("Select to search within subtrees"), _("Search in subtrees"), false);
-
-    /*                  Name                 ,Text                              ,Default  , Connect with alphabet  */
-    $this->AddRegex   ("Regex",     _("Regular expression for matching list names"),"*" , true);
-  }
-
-
-  function GenHeader()
-  {
-    /* Prepare departments,
-       which are shown in the listbox on top of the listbox
-     */
-    $options= "";
-
-    /* Get all departments within this subtree */
-    $base = $this->config->current['BASE'];
-
-    /* Add base */
-    $tmp = array();
-    $tmp[] = array("dn"=>$this->config->current['BASE']);
-    $tmp=  array_merge($tmp,get_list("(&(|(ou=*)(description=*))(objectClass=gosaDepartment))", $this->module, $base,
-                    array("ou", "description"), GL_SIZELIMIT | GL_SUBSEARCH));
-
-    $deps = array();
-    foreach($tmp as $tm){
-      $deps[$tm['dn']] = $tm['dn'];
-    }
-
-    /* Load possible departments */
-    $ui= get_userinfo();
-    $tdeps= $ui->get_module_departments("gofaxlist");
-    $ids = $this->config->idepartments;
-    $first = "";
-    $found = FALSE;
-    foreach($ids as $dep => $name){
-      if(isset($deps[$dep]) && in_array_ics($dep, $tdeps)){
-
-        /* Keep first base dn in mind, we could need this
-         *  info if no valid base was found
-         */
-        if(empty($first)) {
-          $first = $dep['dn'];
-        }
-
-        $value = $ids[$dep];
-        if ($this->selectedBase == $dep){
-          $found = TRUE;
-          $options.= "<option selected='selected' value='".$dep."'>$value</option>";
-        } else {
-          $options.= "<option value='".$dep."'>$value</option>";
-        }
-      }
-    }
-
-    /* The currently used base is not visible with your acl setup.
-     * Set base to first useable base.
-     */
-    if(!$found){
-      $this->selectedBase = $first;
-    }
-  
-    /* Get acls */
-    $ui       = get_userinfo();
-    $acl      = $ui->get_permissions($this->selectedBase,"gofaxlist/blocklist");
-    $acl_all  = $ui->has_complete_category_acls($this->selectedBase,"gofaxlist");
-
-    /* Add default header */
-    $listhead = MultiSelectWindow::get_default_header();
-
-    /* Append department selector */
-    $listhead .= "&nbsp;"._("Base")."&nbsp;<select name='CurrentMainBase' onChange='mainform.submit()' class='center'>$options</select>".
-      " <input class='center' type='image' src='images/list_submit.png' align='middle' 
-          title='"._("Submit department")."' name='submit_department' alt='"._("Submit")."'>&nbsp;";
-
-    /* Create Layers menu */
-    $s  = ".|"._("Actions")."|\n";
-    $s .= "..|<img src='images/list_new.png' alt='' border='0' class='center'>".
-      "&nbsp;"._("Create")."|\n";
-
-    /* Append create options */
-    if(preg_match("/c/",$acl)) {
-      $s.= "...|<input class='center' type='image' src='images/list_new_blocklist.png' alt=''>".
-        "&nbsp;"._("Blocklist")."|goFaxBlocklist_new|\n";
-    }
-
-    /* Multiple options */
-    $s.= "..|---|\n";
-    $s.= "..|<img src='images/edittrash.png' alt='' border='0' class='center'>".
-      "&nbsp;"._("Remove")."|"."remove_multiple|\n";
-
-    /* Add multiple copy & cut icons */
-    if(is_object($this->parent->CopyPasteHandler) && preg_match("/(c.*w|w.*c)/",$acl_all)){
-      $s.= "..|---|\n";
-      $s.= "..|<img src='images/editcopy.png' alt='' border='0' class='center'>".
-        "&nbsp;"._("Copy")."|"."multiple_copy_systems|\n";
-      $s.= "..|<img src='images/editcut.png' alt='' border='0' class='center'>".
-        "&nbsp;"._("Cut")."|"."multiple_cut_systems|\n";
-
-      if($this->parent->CopyPasteHandler->entries_queued()){
-        $img = "<img border='0' class='center' src='images/editpaste.png' alt=''>";
-        $s.="..|".$img."&nbsp;"._("Paste")."|editPaste|\n";
-      }else{
-        $img = "<img border='0' class='center' src='images/cant_editpaste.png' alt=''>";
-        $s.="..|".$img."&nbsp;"._("Paste")."\n";
-      }
-    }
-
-    /* Add snapshot icons */
-    if(preg_match("/(c.*w|w.*c)/",$acl_all)){
-      $s .= "..|---|\n";
-      $s .= $this->get_snapshot_header(TRUE);
-    }
-
-    $this->SetDropDownHeaderMenu($s);
-
-    $this->SetListHeader($listhead);
-  }
-
-  function execute()
-  {
-    $this->ClearElementsList();
-    $this->GenHeader();
-  }
-
-  function setEntries($list)
-  {
-    // User and Template  Images
-    $blockimg = "<img class='center' src='images/list_blocklist.png' alt='User' title='%s'>";
-    $editlink = "<a href='?plug=".$_GET['plug']."&amp;id=%s&amp;act=edit_entry'>%s</a>";
-
-    /* Dynamic action col, depending on snapshot icons */
-    $action_col_size = 100;
-    if($this->parent->snapshotEnabled()){
-      $action_col_size += 20;
-    }
-
-    /* Append to list */
-    $ui = get_userinfo();
-    foreach($list as $key => $val){
-
-      $acl = $ui->get_permissions($val['dn'],"gofaxlist/blocklist");
-      if(!preg_match("/r/",$acl)){
-        continue;
-      }  
-
-      /* Edit link ; requires read access */
-      $action= "<input class='center' type='image' src='images/edit.png' alt='"._("edit")."'     name='goFaxBlocklist_edit_%KEY%' title='"._("Edit user")."'>";
-
-      
-      /* Create snapshot ; requires write access && create access */
-      if(preg_match("/w/",$acl) && preg_match("/c/",$acl)){
-        $action.= $this->GetSnapShotActions($val['dn']);
-      }
-     
-      /* Add copy & cut icons */
-      if(preg_match("/(c.*w|w.*c)/",$acl) && $this->parent->CopyPasteHandler){
-        $action .= "<input class='center' type='image'
-          src='images/editcut.png' alt='"._("cut")."' name='cut_%KEY%' title='"._("Cut this entry")."'>&nbsp;";
-        $action.= "<input class='center' type='image'
-          src='images/editcopy.png' alt='"._("copy")."' name='copy_%KEY%' title='"._("Copy this entry")."'>&nbsp;";
-      }
-
-      /* Delete entry ; requires remove access */
-      if(preg_match("/d/",$acl)){
-        $action.= "<input class='center' type='image' src='images/edittrash.png' alt='"._("delete")."' name='goFaxBlocklist_del_%KEY%' title='"._("Delete user")."'>";
-      }
-      
-      // Generate Array to Add
-      if(isset($val["description"][0])){
-        $display= $val["cn"][0]." [".$val["description"][0]."]";
-      }else{
-        $display= $val["cn"][0];
-      }
-
-      /* Cutted objects should be displayed in light grey */
-      if(isset($this->parent->CopyPasteHandler->queue) && is_array($this->parent->CopyPasteHandler->queue)){
-        foreach($this->parent->CopyPasteHandler->queue as $queue_key => $queue_data){
-          if($queue_data['dn'] == $val['dn']) {
-            $display = "<font color='#999999'>".$display."</font>";
-            break;
-          }
-        }
-      }
-
-      
-      /* Create each field */
-      $field0 = array("string" => "<input type='checkbox' id='item_selected_".$key."' name='item_selected_".$key."'>" ,
-                      "attach" => "style='width:20px;'");
-      $field1 = array("string" => sprintf($blockimg,$val['dn']), "attach" => "style='text-align:center;width:20px;'");
-      $field2 = array("string" => sprintf($editlink,$key,$display), "attach" => "style='' title='".preg_replace('/ /', '&nbsp;', @LDAP::fix($val['dn']))."'");
-      $field3 = array("string" => preg_replace("/%KEY%/", "$key", $action), "attach" => "style='width:".$action_col_size."px;border-right:0px;text-align:right;'");
-      $this->AddElement( array($field0,$field1,$field2,$field3));
-    }
-
-    /* Create summary string for list footer */
-    $num_deps=0;
-    if(!$this->SubSearch){
-      $num_deps = count($this->Added_Departments);
-    }
-    $num_objs = count($list);
-
-    $num_obj_str = _("Number of listed blocklists");
-    $num_dep_str = _("Number of listed departments");
-
-    $str = "<img class='center' src='images/list_blocklist.png'
-              title='".$num_obj_str."' alt='".$num_obj_str."'>&nbsp;".$num_objs."&nbsp;&nbsp;&nbsp;&nbsp;";
-    $str.= "<img class='center' src='images/folder.png'
-              title='".$num_dep_str."' alt='".$num_dep_str."'>&nbsp;".$num_deps."&nbsp;&nbsp;&nbsp;&nbsp;";
-
-    $this->set_List_Bottom_Info($str);
-
-  }
-
-  function Save()
-  {
-    MultiSelectWindow :: Save();  
-  }
-
-  function save_object()
-  {
-    /* Save automatic created POSTs like regex, checkboxes */
-    MultiSelectWindow :: save_object();   
-  }
-}
-// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
-?>
diff --git a/gosa-core/plugins/gofax/blocklists/generic.tpl b/gosa-core/plugins/gofax/blocklists/generic.tpl
deleted file mode 100644 (file)
index df9f84a..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-<h2><img class="center" alt="" align="middle" src="images/rightarrow.png"> {t}Generic{/t}</h2>
-<table summary="" style="width:100%; vertical-align:top; text-align:left;">
-
- <tr>
-   <td style="width:50%; vertical-align:top;">
-    <table summary="">
-     <tr>
-      <td><LABEL for="cn">{t}List name{/t}</LABEL>{$must}</td>
-      <td>
-
-{render acl=$cnACL}
-       <input name="cn" id="cn" size=25 maxlength=60 value="{$cn}" title="{t}Name of blocklist{/t}">
-{/render}
-      </td>
-     </tr>
-     <tr>
-      <td><LABEL for="base">{t}Base{/t}</LABEL>{$must}</td>
-      <td>
-{render acl=$baseACL}
-      <select id="base" size="1" name="base" title="{t}Choose subtree to place group in{/t}">
-       {html_options options=$bases selected=$base}
-      </select>
-{/render}
-
-{render acl=$baseACL disable_picture='images/folder_gray.png'}
-        <input type="image" name="chooseBase" src="images/folder.png" class="center" title="{t}Select a base{/t}">
-{/render}
-      </td>
-     </tr>
-    </table>
-   </td>
-
-  <td style="border-left:1px solid #A0A0A0">
-   &nbsp;
-  </td>
-
-   <td style="vertical-align:top;">
-    <table summary="">
-     <tr>
-       <td><LABEL for="type">{t}Type{/t}</LABEL></td>
-       <td>
-{render acl=$typeACL}
-        <select size="1" id="type" name="type" title="{t}Select wether to filter incoming or outgoing calls{/t}">
-               {html_options options=$types selected=$type}
-               <option disabled>&nbsp;</option>
-        </select>
-{/render}
-        </td>
-      </tr>
-      <tr>
-       <td><LABEL for="description">{t}Description{/t}</LABEL></td>
-       <td>
-{render acl=$descriptionACL}
-         <input name="description" id="description" size=25 maxlength=80 value="{$description}" title="{t}Descriptive text for this blocklist{/t}">
-{/render}
-       </td>
-      </tr>
-    </table>
-   </td>
- </tr>
-</table>
-
-<p class="plugbottom" style="margin-bottom:0px; padding:0px;">&nbsp;</p>
-
-<table summary="" style="width:100%">
- <tr>
-   <td style="width:50%;">
-     <h2><img class="center" alt="" align="middle" src="images/false.png"> {t}Blocked numbers{/t}</h2>
-{render acl=$goFaxBlocklistACL}
-     <select style="width:100%; height:200px;" name="numbers[]" size=15 multiple>
-      {html_options values=$goFaxBlocklist output=$goFaxBlocklist}
-         <option disabled>&nbsp;</option>
-     </select>
-{/render}
-     <br>
-{render acl=$goFaxBlocklistACL}
-     <input id="number" name="number" size=25 maxlength=60 >&nbsp;
-{/render}
-{render acl=$goFaxBlocklistACL}
-     <input type=submit value="{t}Add{/t}" name="add_number">&nbsp;
-{/render}
-{render acl=$goFaxBlocklistACL}
-     <input type=submit value="{t}Delete{/t}" name="delete_number">
-{/render}
-   </td>
-  <td style="border-left:1px solid #A0A0A0">
-   &nbsp;
-  </td>
-   <td style="vertical-align:top;" >
-     <h2><img class="center" alt="" align="middle" src="images/info_small.png"> {t}Information{/t}</h2>
-     <p>
-      {t}Numbers can also contain wild cards.{/t}
-     </p>
-   </td>
- </tr>
-</table>
-
-<p class="plugbottom">
-  <input type=submit name="edit_finish" style="width:80px" value="{t}Ok{/t}">
-  <input type=submit name="edit_apply" value="{t}Apply{/t}">
-  <input type=submit name="edit_cancel" value="{t}Cancel{/t}">
-</p>
-<input type='hidden' name='blocklist_posted' value="1">
-<!-- Place cursor -->
-<script language="JavaScript" type="text/javascript">
-  <!-- // First input field on page
-       focus_field('n');
-  -->
-</script>
diff --git a/gosa-core/plugins/gofax/blocklists/main.inc b/gosa-core/plugins/gofax/blocklists/main.inc
deleted file mode 100644 (file)
index 4a0f3c5..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-if ($remove_lock){
-        if(session::is_set('blocklist')){
-                $blocklist = session::get('blocklist');
-                del_lock ($ui->dn);
-                session::un_set ('blocklist');
-        }
-} else {
-       /* Create blocklist object on demand */
-       if (!session::is_set('blocklist') || (isset($_GET['reset']) && $_GET['reset'] == 1)){
-               $blocklist= new blocklist($config, $ui);
-               $blocklist->set_acl_category("gofaxlist");
-               session::set('blocklist',$blocklist);
-       }
-       $blocklist = session::get('blocklist');
-       $blocklist->save_object();
-       $output= $blocklist->execute();
-
-       /* Reset requested? */
-       if (isset($_GET['reset']) && $_GET['reset'] == 1){
-               del_lock ($ui->dn);
-               session::un_set ('blocklist');
-       }
-
-       /* Page header*/
-       if (session::is_set('objectinfo')){
-               $display= print_header(get_template_path('images/blocklists.png'), _("Blocklist management"), "<img alt=\"\"align=\"middle\" src=\"".get_template_path('images/closedlock.png')."\"> ".@LDAP::fix(session::get('objectinfo')));
-       } else {
-               $display= print_header(get_template_path('images/blocklists.png'), _("Blocklist management"));
-       }
-       $display.= $output;
-
-       session::set('blocklist',$blocklist);
-}
-?>
diff --git a/gosa-core/plugins/gofax/blocklists/paste_generic.tpl b/gosa-core/plugins/gofax/blocklists/paste_generic.tpl
deleted file mode 100644 (file)
index ac4cef9..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<table summary="">
- <tr>
-  <td><LABEL for="cn">{t}List name{/t}</LABEL></td>
-  <td>
-   <input name="cn" id="cn" size=25 maxlength=60 value="{$cn}" title="{t}Name of blocklist{/t}">
-  </td>
- </tr>
-</table>
diff --git a/gosa-core/plugins/gofax/blocklists/remove.tpl b/gosa-core/plugins/gofax/blocklists/remove.tpl
deleted file mode 100644 (file)
index ebea1e3..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<div style="font-size:18px;">
- <img alt="" src="images/button_cancel.png" align=top>&nbsp;{t}Warning{/t}
-</div>
-<p>
- {$info}
- {t}Please double check if your really want to do this since there is no way for GOsa to get your data back.{/t}
-</p>
-
-<p>
- {t}So - if you're sure - press 'Delete' to continue or 'Cancel' to abort.{/t}
-</p>
-
-<p class="plugbottom">
-       {if $multiple}
-               <input type=submit name="delete_multiple_blocklist_confirm" value="{t}Delete{/t}">
-               &nbsp;
-               <input type=submit name="delete_multiple_blocklist_cancel" value="{t}Cancel{/t}">
-       {else}
-               <input type=submit name="delete_blocklist_confirm" value="{t}Delete{/t}">
-               &nbsp;
-               <input type=submit name="delete_blocklist_cancel" value="{t}Cancel{/t}">
-       {/if}
-</p>
-
diff --git a/gosa-core/plugins/gofax/blocklists/tabs_blocklist.inc b/gosa-core/plugins/gofax/blocklists/tabs_blocklist.inc
deleted file mode 100644 (file)
index 32a6747..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-class faxblocktabs extends tabs
-{
-  function faxblocktabs($config, $data, $dn)
-  {
-    tabs::tabs($config, $data, $dn, 'gofaxlist');
-
-    /* Add references/acls/snapshots */
-    $this->addSpecialTabs();
-  }
-
-  function save($ignore_account= FALSE)
-  {
-    $baseobject= $this->by_object['blocklistGeneric'];
-
-    /* Check for new 'dn', in order to propagate the 'dn' to all plugins */
-    $new_dn= "cn=".$baseobject->cn.",".get_ou('blocklistou').$baseobject->base;
-
-    /* Move group? */
-    if ($this->dn != $new_dn){
-
-      /* Write entry on new 'dn' */
-      if ($this->dn != "new"){
-        $baseobject->move($this->dn, $new_dn);
-        $this->by_object['blocklistGeneric']= $baseobject;
-      }
-
-      /* Happen to use the new one */
-      $this->dn= $new_dn;
-    }
-
-    tabs::save();
-  }
-
-}
-// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
-?>
diff --git a/gosa-core/plugins/gofax/faxaccount/class_gofaxAccount.inc b/gosa-core/plugins/gofax/faxaccount/class_gofaxAccount.inc
deleted file mode 100644 (file)
index 63f22ce..0000000
+++ /dev/null
@@ -1,981 +0,0 @@
-<?php
-
-class gofaxAccount extends plugin
-{
-  /* Definitions */
-  var $plHeadline= "FAX";
-  var $plDescription= "This does something";
-
-  /* CLI vars */
-  var $cli_summary= "Manage users fax account";
-  var $cli_description= "Some longer text\nfor help";
-  var $cli_parameters= array("eins" => "Eins ist toll", "zwei" => "Zwei ist noch besser");
-
-
-  /* Department list shown in the divSelectList*/
-  var $departments;
-
-  /* Fax attributes */
-  var $goFaxDeliveryMode= "";
-  var $facsimileTelephoneNumber= "";
-  var $goFaxIsEnabled= 1;
-  var $goFaxPrinter= "";
-  var $goFaxDivertNumber= "";
-  var $goFaxLanguage= "";
-  var $goFaxFormat= "";
-  var $goFaxRBlocklist = array();
-  var $goFaxRBlockgroups= array();
-  var $goFaxSBlocklist= array();
-  var $goFaxSBlockgroups= array();
-  var $mail= "";
-  var $facsimileAlternateTelephoneNumber= array();
-  var $fax_formats = array("pdf","ps","png","mtiff","tiff");  
-
-  /* Internal variables */
-  var $printerList= array();
-  var $has_mailAccount= FALSE;
-  var $locals_dialog= FALSE;
-  var $in_blocklist_dialog= FALSE;
-  var $out_blocklist_dialog= FALSE;
-  var $current_blocklist= array();
-  var $view_logged = FALSE;
-
-  /* Copy & paste variables */
-  var $CopyPasteVars=array("facsimileTelephoneNumber");//,"goFaxRBlocklist","goFaxRBlockgroups","goFaxSBlocklist","goFaxSBlockgroups");
-
-  /* attribute list for save action */
-  var $attributes= array("goFaxDeliveryMode", "goFaxIsEnabled","facsimileAlternateTelephoneNumber","goFaxRBlocklist","goFaxRBlockgroups","goFaxSBlocklist","goFaxSBlockgroups","goFaxPrinter", "goFaxDivertNumber", "goFaxLanguage", "goFaxFormat", "mail","facsimileTelephoneNumber");
-
-  var $uid ="";
-
-  var $objectclasses= array("goFaxAccount");
-
-  /* Enable multiple edit support */
-  var $multiple_support = TRUE;
-
-  function gofaxAccount (&$config, $dn= NULL)
-  {
-    /* General initialization */
-    plugin::plugin ($config, $dn);
-
-    /* Set uid, it is used in handle_post_events */
-    if(isset($this->attrs['uid'])){
-      $this->uid = $this->attrs['uid'][0];
-    }
-
-    /* Hickert : 11.11.05
-     * Added to be able to handle department selection in divSelelect
-     */
-    if(!session::is_set("Fax_Filter")){
-      $Fax_Filter = array();
-      $Fax_Filter['depselect'] = $this->config->current['BASE'];
-      session::set('Fax_Filter',$Fax_Filter);
-    }
-
-    if ($dn != "new"){
-      /* Get arrays */
-      foreach (array("goFaxRBlocklist", "goFaxRBlockgroups", "goFaxSBlocklist",
-            "goFaxSBlockgroups", "facsimileAlternateTelephoneNumber") as $val){
-        $this->$val =array();
-        if (isset($this->attrs["$val"]["count"])){
-          for ($i= 0; $i<$this->attrs["$val"]["count"]; $i++){
-            array_push($this->$val, $this->attrs["$val"][$i]);
-          }
-        }
-      }
-
-      /* Set up has_mailAccount */
-      if (in_array("gosaMailAccount", $this->attrs['objectClass'])){
-        $this->has_mailAccount= TRUE;
-      }
-    }
-
-    /* Load printer list */
-    $this->printerList=get_printer_list();
-
-    /* Check if the currently selected printer is still available. 
-       If not, append current printer to list of available.
-       It could be possible, that we are not allowed to view printers and so the list is empty ...  */
-    if(!empty($this->goFaxPrinter) && !isset($this->printerList[$this->goFaxPrinter])) {
-      $this->printerList[$this->goFaxPrinter] = "[".$this->goFaxPrinter."]";
-    }
-
-    /* Get global filter config */
-    if (!session::is_set("faxfilter")){
-      $ui= get_userinfo();
-      $base= get_base_from_people($ui->dn);
-      $faxfilter= array( "depselect"       => $base,
-          "fuser"            => "*",
-          "regex"           => "");
-      session::set("faxfilter", $faxfilter);
-    }
-  }
-
-  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);
-    }
-
-    /* Hickert : 11.11.05
-     * Added to be able to handle department selection in divSelelect
-     */
-    if((isset($_GET['act']))&&($_GET['act']=="dep_open")){
-
-      $Fax_Filter = session::get('Fax_Filter');
-      if(strlen(base64_decode($_GET['dep_id']))>= strlen($this->config->current['BASE'])){
-        $Fax_Filter['depselect']= base64_decode($_GET['dep_id']);
-      }else{
-        $Fax_Filter['depselect']= $this->config->current['BASE'];
-      }
-      session::set('Fax_Filter',$Fax_Filter);
-    }
-
-    /* Edit mode specifies if we are editing from my accout */
-    $edit_mode = (!is_object($this->parent) && !session::is_set('edit'));
-
-    /* Load smarty stuff */
-    $smarty= get_smarty();
-
-    /* Check if mail account is active. We'll display an additional
-       mail address field if this is not the case. Some people may
-       want goFax, but have a mailserver which is not managed with
-       GOsa */
-    if (!@isset($this->parent->by_object['mailAccount'])) {
-      $smarty->assign("has_mailaccount", $this->has_mailAccount?"true":"false");
-    } elseif ( !$this->parent->by_object['mailAccount']->is_account){
-      $smarty->assign("has_mailaccount", "false");
-      $this->has_mailAccount= false;
-    } else {
-      $smarty->assign("has_mailaccount", "true");
-    }
-
-
-    $display = "";
-    if(!$this->multiple_support_active){    
-
-      /* Do we need to flip is_account state? */
-      if (isset($_POST['modify_state'])){
-        $this->is_account= !$this->is_account;
-      }
-
-      /* Do we represent a valid account? */
-      if (!$this->is_account && $this->parent === NULL){
-        $display= "<img alt=\"\" src=\"images/stop.png\" align=\"middle\">&nbsp;<b>".
-          _("This account has no fax extensions.")."</b>";
-        $display.= back_to_main();
-        return ($display);
-      }
-
-      /* Show tab dialog headers */
-      $display= "";
-      if ($this->parent !== NULL){
-        if ($this->is_account){
-          $display= $this->show_disable_header(_("Remove fax account"),
-              _("This account has fax features enabled. You can disable them by clicking below."));
-        } else {
-          $display= $this->show_enable_header(_("Create fax account"),
-              _("This account has fax features disabled. You can enable them by clicking below."));
-          return ($display);
-        }
-      }
-    }
-
-    /* Trigger Add local fax alternatives dialog */
-    if (isset($_POST['add_local_alternate'])){
-      if($this->acl_is_writeable("facsimileAlternateTelephoneNumber",$edit_mode)){
-        $this->locals_dialog= TRUE;    
-        $this->dialog= TRUE;   
-      }
-    }
-
-    /* Add alternatives from dialog */
-    if (isset($_POST['add_locals_finish']) && isset($_POST['local_list'])){
-      if($this->acl_is_writeable("facsimileAlternateTelephoneNumber",$edit_mode)){
-        foreach ($_POST['local_list'] as $val){
-          $this->addAlternate($val);
-          $this->is_modified= TRUE;
-        }
-      }
-    }
-
-    /* Add alternatives */
-    if (isset($_POST['add_alternate']) && !empty($_POST['forward_address']) && tests::is_phone_nr($_POST['forward_address'])){ 
-      if($this->acl_is_writeable("facsimileAlternateTelephoneNumber",$edit_mode)){
-        $this->addAlternate($_POST['forward_address']);
-      }
-    }
-
-    /* Delete alternate fax number */
-    if (isset($_POST['delete_alternate']) && isset($_POST['alternate_list']) && count($_POST['alternate_list'])){ 
-      if($this->acl_is_writeable("facsimileAlternateTelephoneNumber",$edit_mode)){
-        $this->delAlternate ($_POST['alternate_list']);
-      }
-    }
-
-
-    /* Edit incoming blocklists */
-    if (isset($_POST['edit_incoming'])){
-      if($this->acl_is_writeable("goFaxRBlocklist",$edit_mode))  {
-        $this->current_blocklist= array_merge($this->goFaxRBlocklist,$this->goFaxRBlockgroups);
-        sort($this->current_blocklist);
-        reset($this->current_blocklist);
-
-        $this->in_blocklist_dialog= TRUE;
-        $this->dialog= TRUE;
-      }
-    }
-
-    /* Edit outgoing blocklists */
-    if (isset($_POST['edit_outgoing'])){
-      $this->current_blocklist= array_merge($this->goFaxSBlocklist,$this->goFaxSBlockgroups);
-      sort($this->current_blocklist);
-      reset($this->current_blocklist);
-
-      $this->out_blocklist_dialog= TRUE;
-      $this->dialog= TRUE;
-    }
-
-    /* Add number to blocklist (dialog) */
-    if (isset($_POST['add_blocklist_number']) && $_POST['block_number'] != ""){
-      if (!tests::is_phone_nr($_POST['block_number'])){
-        print_red (_("You're trying to add an invalid phone number."));
-      } else {
-        array_push($this->current_blocklist, $_POST['block_number']);
-        $this->current_blocklist= array_unique($this->current_blocklist);
-        sort($this->current_blocklist);
-        reset($this->current_blocklist);
-      }
-    }
-
-    /* Hickert : 11.11.05
-     * Add selection from divSelelect to our Blocklist 
-     */
-    /* Add list to blocklist */
-    if (isset($_POST['add_blocklist'])){
-      foreach($_POST as $name => $value){
-        if(preg_match("/ADDLIST_/i",$name)){
-          $this->current_blocklist= array_merge($this->current_blocklist, array(base64_decode($value)));
-
-        }
-      } 
-      $this->current_blocklist= array_unique($this->current_blocklist);
-      sort($this->current_blocklist);
-      reset($this->current_blocklist);
-    }
-
-    /* Add list to blocklist */
-    if (isset($_GET['add'])){
-      if(!is_array($this->current_blocklist)) $this->current_blocklist=array();
-      $this->current_blocklist= array_merge($this->current_blocklist, array( base64_decode($_GET['add'])));
-      $this->current_blocklist= array_unique($this->current_blocklist);
-      sort($this->current_blocklist);
-      reset($this->current_blocklist);
-    }
-
-    /* Delete from blocklist */
-    if (isset($_POST['delete_blocklist_number']) && isset($_POST['block_list'])){
-      $tmp= array();
-      foreach($this->current_blocklist as $val){
-        if (!in_array($val, $_POST['block_list'])){
-          $tmp[]= $val;
-        }
-      }
-      $this->current_blocklist= $tmp;
-    }
-
-
-    /* Blocklist edit finished */
-    if (isset($_POST['edit_blocklists_finish'])){
-
-      /* Incoming or outgoing? */
-      if ($this->in_blocklist_dialog){
-        $this->goFaxRBlocklist = array();
-        $this->goFaxRBlockgroups = array();
-
-        foreach ($this->current_blocklist as $val){
-          if (tests::is_phone_nr($val)){
-            $this->goFaxRBlocklist[]=$val;
-          } else {
-            $this->goFaxRBlockgroups[]= $val;
-          }
-        }
-      } else {
-        $this->goFaxSBlocklist = array();
-        $this->goFaxSBlockgroups = array();
-
-        /* Transfer values to ourself */
-        foreach ($this->current_blocklist as $val){
-          if (tests::is_phone_nr($val)){
-            $this->goFaxSBlocklist[]=$val;
-          } else {
-            $this->goFaxSBlockgroups[]= $val;
-          }
-        }
-      }
-      $this->is_modified= TRUE;
-    }
-
-
-    /* Set departments */
-    if ($this->locals_dialog || $this->in_blocklist_dialog || $this->out_blocklist_dialog){
-      
-      $list= array ();
-      $ldap= $this->config->get_ldap_link();
-      if (isset ($_POST['department'])){
-        $ldap->cd ($_POST['department']);
-      } else {
-        $ldap->cd ($this->config->current['BASE']);
-      }
-    }
-
-    /* Cancel  dialogs */
-    if (isset($_POST['add_locals_cancel']) || isset($_POST['edit_blocklists_finish']) ||
-        isset($_POST['edit_blocklists_cancel']) || isset($_POST['add_locals_finish'])){
-
-      $this->locals_dialog= FALSE;
-      $this->in_blocklist_dialog= FALSE;
-      $this->out_blocklist_dialog= FALSE;
-      $this->dialog= FALSE;
-    }
-
-    /* Manage locals dialog */
-    if ($this->locals_dialog){
-
-      /* Save data */
-      $faxfilter= session::get("faxfilter");
-      foreach( array("depselect", "fuser", "regex") as $type){
-        if (isset($_POST[$type])){
-          $faxfilter[$type]= $_POST[$type];
-        }
-      }
-      if (isset($_GET['search'])){
-        $s= mb_substr($_GET['search'], 0, 1, "UTF8")."*";
-        if ($s == "**"){
-          $s= "*";
-        }
-        $faxfilter['fuser']= $s;
-      }
-
-      if ($faxfilter['regex'] != '*' && $faxfilter['regex'] != ""){
-        $regex= $faxfilter['regex'];
-        $filter= "(facimileTelephoneNumber=$regex)";
-      } else {
-        $filter= "";
-      }
-      if ($faxfilter['fuser'] != ""){
-        $user= $faxfilter['fuser'];
-        $filter= "$filter(|(uid=$user)(cn=$user)(givenName=$user)(sn=$user))";
-      }
-
-      $base= $faxfilter['depselect'];
-      $res= get_list("(&(objectClass=goFaxAccount)$filter)", "gofax", $base, 
-                     array("sn", "givenName", "facsimileTelephoneNumber"), GL_SIZELIMIT | GL_SUBSEARCH);
-
-      foreach ($res as $attrs){
-        $list[$attrs['facsimileTelephoneNumber'][0]]=
-          $attrs['sn'][0].", ".
-          $attrs['givenName'][0]." [".
-          $attrs['facsimileTelephoneNumber'][0]."]";
-      }
-
-      /* Show dialog */
-      $smarty->assign("search_image", get_template_path('images/search.png'));
-      $smarty->assign("usearch_image", get_template_path('images/search_user.png'));
-      $smarty->assign("tree_image", get_template_path('images/tree.png'));
-      $smarty->assign("infoimage", get_template_path('images/info.png'));
-      $smarty->assign("launchimage", get_template_path('images/small_filter.png'));
-      $smarty->assign("departments", $this->config->idepartments);
-      $smarty->assign("list", $list);
-      if (isset($_POST['depselect'])){
-        $smarty->assign("depselect", $_POST['depselect']);
-      }
-      $smarty->assign("deplist", $this->config->idepartments);
-      $smarty->assign("apply", apply_filter());
-      $smarty->assign("alphabet", generate_alphabet());
-      $smarty->assign("hint", print_sizelimit_warning());
-      foreach( array("depselect", "fuser", "regex") as $type){
-        $smarty->assign("$type", $faxfilter[$type]);
-      }
-      $smarty->assign("hint", print_sizelimit_warning());
-
-      $display.= $smarty->fetch (get_template_path('locals.tpl', TRUE, dirname(__FILE__)));
-      return ($display);
-    }
-
-
-    /* Manage incoming blocklists */
-    if ($this->in_blocklist_dialog){
-
-      /* This handles the divSelectBox */
-
-      /* The base specifies the current position in the ldap tree 
-       * The current base was specified by $_GET['dep_id'] before. Or contains the default value.
-       */
-      $Fax_Filter = session::get('Fax_Filter');
-      $base = $Fax_Filter['depselect'];
-      $ldap->cd($base);
-
-      /* Ge all Blocklists */
-      $ldap->search ("(objectClass=goFaxRBlock)",array("cn","description"));
-      while ($attrs= $ldap->fetch()){
-
-        /* Generate list depending on description */
-        if(isset($attrs['description'][0])){
-          $list[$attrs['cn'][0]]=
-            $attrs['description'][0].
-            " [".$attrs['cn'][0]."]";
-        }else{
-          $list[$attrs['cn'][0]]= $attrs['cn'][0];
-        }
-      }
-
-      /* Create our divselect box */
-      $divSel = new divSelectBox("divSelectPredefined");
-      $divSel->setHeight(296);
-
-      /* NEW LIST MANAGMENT
-       * We also need to search for the departments
-       * So we are able to navigate like in konquerer
-       */
-      $this->departments= array();
-   
-      /* Get all departments within the current department */ 
-      $Fax_Filter = session::get('Fax_Filter');
-      $base = $Fax_Filter['depselect'];
-      $ldap->ls("(objectClass=gosaDepartment)",$base);
-
-      /* Base back is used to go one department up in our ldap tree */
-      $base_back = preg_replace("/^[^,]+,/","",$base);
-
-      /* Only show base_back if it is needed */
-      if((strlen($base_back)>= strlen($this->config->current['BASE']))&&($base!=$this->config->current['BASE'])){
-        $this->departments[preg_replace("/^[^,]+,/","",$base)] = ".. - ["._("back")."]"; 
-      }
-
-      /* Fetch all returned departments an add them to our divlist */
-      while($value = $ldap->fetch()){
-        if($value["description"][0]!=".."){
-          $this->departments[$value['dn']]=@LDAP::fix(convert_department_dn($value['dn'])." - [".$value["description"][0]."]");
-        }else{
-          $this->departments[$value['dn']]=$value["description"][0];
-        }
-      }
-      /* END NEW LIST MANAGMENT
-       */
-
-      // This links specifies the department open link 
-      $linkopen = "<a href='?plug=".$_GET['plug']."&amp;act=dep_open&amp;dep_id=%s'>%s</a>";
-
-      /* Insert departments in divsel */
-      foreach($this->departments as $key=> $val){
-        if(!isset($this->config->departments[trim($key)])){
-          $this->config->departments[trim($key)]="";
-        }
-        $field1 = array("string" => "<img src='images/folder.png' alt='department'>","attach"=>"style='width:16px;text-align:center;'");
-        $field2 = array("string" => sprintf($linkopen,base64_encode($key),$val),"attach"=>" style='border:none'");
-        $divSel->AddEntry(array($field1,$field2));
-      }
-
-      /* Append predefined Blocklists */
-      foreach($list as $entry => $value){
-        $divSel->AddEntry(array(
-              array("string"=>"<input type='checkbox' value='".base64_encode($entry)."' name='ADDLIST_".base64_encode($entry)."'>"),
-              array("string"=>$value,"attach"=>"style='border:0px;'")
-              ));
-      }
-
-      /* Show dialog */
-      $smarty->assign("cblocklist", $this->current_blocklist);
-      $smarty->assign("departments", $this->config->idepartments);
-      $smarty->assign("divSelectPredefined", $divSel->DrawList());
-      $display.= $smarty->fetch (get_template_path('lists.tpl', TRUE, dirname(__FILE__)));
-      return ($display);
-    }
-
-    /* Manage outgoing blocklists */
-
-    if ($this->out_blocklist_dialog){
-
-      /* This handles the divSelectBox */
-
-      /* The base specifies the current position in the ldap tree
-       * The current base was specified by $_GET['dep_id'] before. Or contains the default value.
-       */
-      $Fax_Filter = session::get('Fax_Filter');
-      $base = $Fax_Filter['depselect'];
-      $ldap->cd($base);
-
-      /* Ge all Blocklists */ 
-      $ldap->search ("(objectClass=goFaxSBlock)",array("cn","description"));
-      while ($attrs= $ldap->fetch()){
-        if(isset($attrs['description'][0])){
-          $list[$attrs['cn'][0]]=
-            $attrs['description'][0].
-            " [".$attrs['cn'][0]."]";
-        }else{
-          $list[$attrs['cn'][0]]= $attrs['cn'][0];
-        }
-      }
-
-      /*Create DivSel*/
-      $divSel = new divSelectBox("divSelectPredefined");
-      $divSel->setHeight(296);
-
-      /* NEW LIST MANAGMENT
-       * We also need to search for the departments
-       * So we are able to navigate like in konquerer
-       */
-      $this->departments= array();
-      $ldap->ls("(objectClass=gosaDepartment)",$base);
-
-      /* Generate Back url, and append if it is needed */
-      $base_back = preg_replace("/^[^,]+,/","",$base);
-      if((strlen($base_back)>= strlen($this->config->current['BASE']))&&($base!=$this->config->current['BASE'])){
-        $this->departments[preg_replace("/^[^,]+,/","",$base)] = ".. - ["._("back")."]";
-      }
-
-      /* Get all departments */
-      while($value = $ldap->fetch()){
-        if(isset($value["description"][0])){
-          $this->departments[$value['dn']]=@LDAP::fix(convert_department_dn($value['dn'])." - [".$value["description"][0]."]");
-        }else{
-          $this->departments[$value['dn']]=$value["description"][0];
-        }
-      }
-      /* END NEW LIST MANAGMENT
-       */
-
-      // Defining Links
-      $linkopen = "<a href='?plug=".$_GET['plug']."&amp;act=dep_open&amp;dep_id=%s'>%s</a>";
-
-      /* Insert departments in divlist*/
-      foreach($this->departments as $key=> $val){
-        if(!isset($this->config->departments[trim($key)])){
-          $this->config->departments[trim($key)]="";
-        }
-
-        $field1 = array("string" => "<img src='images/folder.png' alt='department'>","attach"=>"style='width:16px;text-align:center;'");
-        $field2 = array("string" => sprintf($linkopen,base64_encode($key),$val),"attach"=>" style='border:none'");
-        $divSel->AddEntry(array($field1,$field2));
-      }
-
-      /* Append Blocklits */
-      foreach($list as $entry => $value){
-        $divSel->AddEntry(array(
-              array("string"=>"<input type='checkbox' value='".base64_encode($entry)."' name='ADDLIST_".base64_encode($entry)."'>"),
-              array("string"=>$value,"attach"=>"style='border:0px;'")
-              ));
-      }
-
-      /* Show dialog */
-      $smarty->assign("cblocklist", $this->current_blocklist);
-      $smarty->assign("departments", $this->config->idepartments);
-      $smarty->assign("divSelectPredefined", $divSel->DrawList());
-      $display.= $smarty->fetch (get_template_path('lists.tpl', TRUE, dirname(__FILE__)));
-      return ($display);
-    }
-
-
-    /* Show main page */
-    $smarty->assign("languages", get_languages(TRUE));
-
-    $smarty->assign("formats",  $this->fax_formats);
-    $smarty->assign("printers", $this->printerList);
-
-    /* Load attributes */
-    foreach(array("goFaxIsEnabled", "goFaxDeliveryMode", "facsimileTelephoneNumber",
-          "goFaxPrinter", "goFaxLanguage", "goFaxFormat", 
-          "facsimileAlternateTelephoneNumber", "mail") as $val){
-
-      $smarty->assign("$val", $this->$val);
-    }
-
-    $tmp = $this->plInfo();
-    foreach($tmp['plProvidedAcls'] as $acl => $desc){
-      $smarty->assign($acl."ACL",$this->getacl($acl,$edit_mode));
-    }
-
-    /* Load checkboxes */
-    if ($this->goFaxIsEnabled == "1"){
-      $smarty->assign("goFaxIsEnabled", "");
-    } else {
-      $smarty->assign("goFaxIsEnabled", "checked");
-    }
-    /* goFaxAccount has "mail" as must! Block if no mailaddress is specified... */
-    if ($this->goFaxDeliveryMode & 32) {
-      $smarty->assign("faxtomail", "checked");
-    } else {
-      $smarty->assign("faxtomail", "");
-    }
-    if ($this->goFaxDeliveryMode & 64) {
-      $smarty->assign("faxtoprinter", "checked");
-    } else {
-      $smarty->assign("faxtoprinter", "");
-    }
-
-    foreach($this->attributes as $attr){
-      if(in_array($attr,$this->multi_boxes)) {
-        $smarty->assign("use_".$attr,TRUE);
-      }else{
-        $smarty->assign("use_".$attr,FALSE);
-      }
-    }
-    foreach(array("goFaxIsEnabled","edit_outgoing","edit_incoming","faxtomail","faxtoprinter") as $attr){
-      if(in_array($attr,$this->multi_boxes)) {
-        $smarty->assign("use_".$attr,TRUE);
-      }else{
-        $smarty->assign("use_".$attr,FALSE);
-      }
-    }
-  
-    $smarty->assign("multiple_support",$this->multiple_support_active);
-    $display.= $smarty->fetch (get_template_path('generic.tpl', TRUE, dirname(__FILE__)));
-    return ($display);
-  }
-
-  function remove_from_parent()
-  {
-    /* Cancel if there's nothing to do here */
-    if (!$this->initially_was_account){
-      return;
-    }
-
-    plugin::remove_from_parent();
-
-    /* Adapt mail settings if needed */
-    if ((isset($this->parent->by_object['mailAccount']->is_account)) && ($this->parent->by_object['mailAccount']->is_account)){
-      unset($this->attrs['mail']);
-    }
-
-    $ldap= $this->config->get_ldap_link();
-    $ldap->cd($this->dn);
-    $this->cleanup();
-    $ldap->modify ($this->attrs); 
-
-    new log("remove","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error());
-
-    show_ldap_error($ldap->get_error(), sprintf(_("Removing of user/fax account with dn '%s' failed."),$this->dn));
-
-    /* Optionally execute a command after we're done */
-    $this->handle_post_events('remove',array("uid"=> $this->uid));
-  }
-
-
-  /* Check formular input */
-  function check()
-  {
-    /* Call common method to give check the hook */
-    $message= plugin::check();
-
-    /* must: facsimileTelephoneNumber */
-    if ($this->facsimileTelephoneNumber == ""){
-      $message[]= _("The required field 'Fax' is not set.");
-    }
-
-    if (!tests::is_phone_nr($this->facsimileTelephoneNumber)){
-      $message[]= _("Please enter a valid telephone number in the 'Fax' field.");
-    }
-
-    /* IF mail is specified (which is only the case if there's no mail account
-       present), check if it's valid..  */
-    if (@isset($this->parent->by_object['mailAccount']) &&
-        $this->goFaxDeliveryMode & 32){
-      if ($this->mail == ""){
-        $message[]= _("Mail delivery is checked, but no address has been specified.");
-      } elseif (!tests::is_email($this->mail)){
-        $message[]= _("The mail address you've entered is invalid.");
-      }
-    }
-
-    // IE Fix, IE lets you choose disabled option, stupid browser ... 
-    if((empty($this->goFaxPrinter))&&($this->goFaxDeliveryMode & 64)){
-      $message[]= _("Deliver fax to printer, is only possible if valid printer is given. Please correct your choice.");
-    }
-
-    return ($message);
-  }
-
-  /* Save data to object */
-  function save_object()
-  {
-    $edit_mode = (!is_object($this->parent) && !session::is_set('edit'));
-    if (isset($_POST['faxTab'])){
-      plugin::save_object();
-
-
-      $tmp = 0+$this->goFaxDeliveryMode;
-
-      if($this->acl_is_writeable("faxtomail",$edit_mode)){
-        if (isset($_POST["faxtomail"]) && $_POST["faxtomail"] == 1){  
-          $tmp |= 32;
-        }elseif($tmp & 32){
-          $tmp &= (!32);
-        }
-      }
-      if($this->acl_is_writeable("faxtoprinter",$edit_mode)){
-        if (isset($_POST["faxtoprinter"]) && $_POST["faxtoprinter"] == 1){  
-          $tmp |= 64;
-        }elseif($tmp & 64){
-          $tmp &= !64;
-        }
-      }
-      $this->goFaxDeliveryMode = $tmp;
-
-      if($this->acl_is_writeable("goFaxIsEnabled",$edit_mode)){
-        if (isset($_POST["goFaxIsEnabled"]) && $_POST["goFaxIsEnabled"] == "1"){
-          $this->goFaxIsEnabled= "0";
-        } else {
-          $this->goFaxIsEnabled= "1";
-        }
-      }
-
-    
-      if (isset($_POST['mail']) && $this->acl_is_writeable("faxtomail",$edit_mode)){
-        $this->mail= $_POST['mail'];
-      }
-
-      /* Check if mail account is active and correct the internal
-         reference to represent the current status. */
-      if(isset($this->parent)){
-        if (isset($this->parent->by_object['mailAccount']->is_account)&&($this->parent->by_object['mailAccount']->is_account)){
-          $this->has_mailAccount= TRUE;
-        }
-      }
-    }
-
-  }
-
-
-  /* Save to LDAP */
-  function save()
-  {
-    plugin::save();
-
-    /* Save arrays */
-    foreach (array("goFaxRBlocklist", "goFaxRBlockgroups", "goFaxSBlocklist",
-          "goFaxSBlockgroups", "facsimileAlternateTelephoneNumber") as $val){
-
-      $this->attrs[$val]= $this->$val;
-    }
-
-    if(!$this->attrs['goFaxDeliveryMode']){
-      $this->attrs['goFaxDeliveryMode'] = 0;
-    }
-  
-    /* Do not save mail address ... it was possibly changed by mail plugin */
-    /* Adapt mail settings if needed */
-    if ((isset($this->parent->by_object['mailAccount']->is_account)) && ($this->parent->by_object['mailAccount']->is_account)){
-      unset($this->attrs['mail']);
-    }
-
-    /* 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/fax 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("mofidy",array("uid" => $this->uid));
-      }
-    } else {
-      $this->handle_post_events("add",array("uid" => $this->uid));
-    }
-
-  }
-
-
-  /* Adapt from template, using 'dn' */
-  function adapt_from_template($dn)
-  {
-    plugin::adapt_from_template($dn);
-
-    foreach (array("goFaxRBlocklist", "goFaxRBlockgroups", "goFaxSBlocklist",
-          "goFaxSBlockgroups", "facsimileAlternateTelephoneNumber") as $val){
-
-      if (isset($this->attrs[$val])){
-        $this->$val= $this->attrs[$val];
-      }
-    }
-  }
-
-
-
-  /* Add alternate fax recipient */
-  function addAlternate($number)
-  {
-    $this->facsimileAlternateTelephoneNumber[]= "$number";
-    $this->facsimileAlternateTelephoneNumber=
-      array_unique ($this->facsimileAlternateTelephoneNumber);
-
-    sort ($this->facsimileAlternateTelephoneNumber);
-    reset ($this->facsimileAlternateTelephoneNumber);
-  }
-
-  function delAlternate($numbers)
-  {
-    $this->facsimileAlternateTelephoneNumber= array_remove_entries ($numbers,
-        $this->facsimileAlternateTelephoneNumber);
-  }
-
-  function getCopyDialog()
-  {
-    $str    = "";
-    $smarty = get_smarty();
-    $smarty->assign("facsimileTelephoneNumber", $this->facsimileTelephoneNumber);
-    $str['string']   = $smarty->fetch(get_template_path("paste_generic.tpl",TRUE,dirname(__FILE__)));
-    $str['status'] ="";
-    return($str);
-  }
-
-  function SaveCopyDialog()
-  {
-    if(isset($_POST['facsimileTelephoneNumber'])){
-      $this->facsimileTelephoneNumber = $_POST['facsimileTelephoneNumber'];
-    }
-  }
-
-
-  /* Return plugin informations for acl handling 
-      #FIXME some attributes are still missing in this plugin acls */
-  static function plInfo()
-  {
-    return (array(  
-          "plShortName"     => _("Fax"),
-          "plDescription"   => _("Fax account settings"),
-          "plSelfModify"    => TRUE,
-          "plDepends"       => array("user"),
-          "plPriority"      => 6,             
-          "plSection"       => "personal",  
-          "plCategory"      => array("users"),
-          "plOptions"       => array(),
-
-          "plProvidedAcls"  => array(
-            "goFaxIsEnabled"                    => _("Enable/Disable fax"),
-            "goFaxRBlocklist"                   => _("Receive blocklist"),
-            "goFaxSBlocklist"                   => _("Send blocklist"),
-            "facsimileTelephoneNumber"          => _("Fax number"), // goFaxDeliveryMode
-            "facsimileAlternateTelephoneNumber" => _("Alternate fax number"), // goFaxDeliveryMode
-            "faxtomail"                         => _("Deliver fax as mail"),
-            "faxtoprinter"                      => _("Deliver fax to printer"),
-            "goFaxFormat"                       => _("Delivery format"),
-            "goFaxLanguage"                     => _("Language"))
-          ));
-  }
-
-  /* Multiple edit support 
-   */
-  
-  /* Execute */
-  function multiple_execute()
-  {
-    return($this->execute());
-  }
-
-  function multiple_save_object()
-  {
-    if (isset($_POST['faxTab'])){
-      plugin::multiple_save_object();
-      foreach(array("goFaxIsEnabled","edit_outgoing","edit_incoming","faxtomail","faxtoprinter") as $attr){
-        if(isset($_POST["use_".$attr])){
-          $this->multi_boxes[] = $attr;
-        }
-      }
-
-      $tmp = 0+$this->goFaxDeliveryMode;
-      if(in_array("faxtomail",$this->multi_boxes)){
-        if (isset($_POST["faxtomail"]) && $_POST["faxtomail"] == 1){
-          $tmp |= 32;
-        }elseif($tmp & 32){
-          $tmp &= (!32);
-        }
-      }
-      if(in_array("faxtoprinter",$this->multi_boxes)){
-        if (isset($_POST["faxtoprinter"]) && $_POST["faxtoprinter"] == 1){
-          $tmp |= 64;
-        }elseif($tmp & 64){
-          $tmp &= !64;
-        }
-      }
-      $this->goFaxDeliveryMode = $tmp;
-
-        if (isset($_POST["goFaxIsEnabled"]) && $_POST["goFaxIsEnabled"] == "1"){
-          $this->goFaxIsEnabled= "0";
-        } else {
-          $this->goFaxIsEnabled= "1";
-        }
-      if (isset($_POST['mail']) && in_array("mail",$this->multi_boxes)){
-        $this->mail= $_POST['mail'];
-      }
-    }
-  }
-
-  function get_multi_edit_values()
-  {
-    $ret = plugin::get_multi_edit_values();
-    if(in_array("goFaxIsEnabled",$this->multi_boxes)){
-      $ret['goFaxIsEnabled'] = $this->goFaxIsEnabled;
-    }
-    if(in_array("faxtoprinter",$this->multi_boxes)){
-      $ret['faxtoprinter'] = $this->goFaxDeliveryMode & 64;
-    }
-    if(in_array("faxtomail",$this->multi_boxes)){
-      $ret['faxtomail'] = $this->goFaxDeliveryMode & 32;
-    }
-
-    if(in_array("edit_incoming",$this->multi_boxes)){
-      $ret['goFaxRBlocklist'] = $this->goFaxRBlocklist;
-      $ret['goFaxRBlockgroups'] = $this->goFaxRBlockgroups;
-    }
-    if(in_array("edit_outgoing",$this->multi_boxes)){
-      $ret['goFaxSBlocklist'] = $this->goFaxSBlocklist;
-      $ret['goFaxSBlockgroups'] = $this->goFaxSBlockgroups;
-    }
-    return($ret);
-  }
-
-  function multiple_check()
-  {
-    $message = plugin::multiple_check();
-    return($message);
-  }
-
-  function set_multi_edit_values($values)
-  {
-    plugin::set_multi_edit_values($values);
-
-    if(isset($values['faxtoprinter'])){
-      if($values['faxtoprinter']){
-        $this->goFaxDeliveryMode |= 64;
-      }else{
-        $this->goFaxDeliveryMode &= !64;
-      }
-    }
-    if(isset($values['faxtomail'])){
-      if($values['faxtomail']){
-        $this->goFaxDeliveryMode |= 32;
-      }else{
-        $this->goFaxDeliveryMode &= !32;
-      }
-    }
-  }
-}
-
-// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
-?>
diff --git a/gosa-core/plugins/gofax/faxaccount/generic.tpl b/gosa-core/plugins/gofax/faxaccount/generic.tpl
deleted file mode 100644 (file)
index eb98dbb..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-<table summary="" style="width:100%; vertical-align:top; text-align:left;" cellpadding="0" border="0">
-
- <!-- Headline container -->
- <tr>
-   <td style="width:50%; vertical-align:top;">
-     <h2><img class="center" alt="" align="middle" src="images/rightarrow.png" />&nbsp;{t}Generic{/t}</h2>
-
-     <table summary="">
-       <tr>
-         <td><label for="facsimileTelephoneNumber">{t}Fax{/t}</label>{$must}</td>
-         <td>
-{if $multiple_support}
-       <input name="dummy1" value="{t}Multiple edit{/t}" disabled id="facsimileTelephoneNumber">
-{else}
-{render acl=$facsimileTelephoneNumberACL}
-           <input name="facsimileTelephoneNumber" id="facsimileTelephoneNumber" size=20 maxlength=65
-               value="{$facsimileTelephoneNumber}" title="{t}Fax number for GOfax to trigger on{/t}">
-{/render}
-{/if}
-
-         </td>
-       </tr>
-       <tr>
-         <td><label for="goFaxLanguage">{t}Language{/t}</label></td>
-        <td>
-
-{render acl=$goFaxLanguageACL checkbox=$multiple_support checked=$use_goFaxLanguage}
-           <select size="1" name="goFaxLanguage" id="goFaxLanguage" 
-               title="{t}Specify the GOfax communication language for fax to mail gateway{/t}">
-                       {html_options options=$languages selected=$goFaxLanguage}
-           </select>
-{/render}
-
-         </td>
-       </tr>
-       <tr>
-         <td><label for="goFaxFormat">{t}Delivery format{/t}</label></td>
-         <td>
-
-{render acl=$goFaxFormatACL checkbox=$multiple_support checked=$use_goFaxFormat}
-           <select id="goFaxFormat" size="1" name="goFaxFormat" title="{t}Specify delivery format for fax to mail gateway{/t}">
-           {html_options values=$formats output=$formats selected=$goFaxFormat}
-           </select>
-{/render}
-         </td>
-       </tr>
-     </table>
-     
-   </td>
-   <td style="border-left:1px solid #A0A0A0">
-    &nbsp;
-   </td>
-   <td style="vertical-align:top; width:100%">
-     <h2><img class="center" alt="" align="middle" src="images/printer.png" />&nbsp;{t}Delivery methods{/t}</h2>
-
-{render acl=$goFaxIsEnabledACL checkbox=$multiple_support checked=$use_goFaxIsEnabled}
-     <input type=checkbox name="goFaxIsEnabled" value="1" {$goFaxIsEnabled} class="center">
-{/render}
-     {t}Temporary disable fax usage{/t}<br>
-
-     {if $has_mailaccount eq "false"}
-{render acl=$faxtomailACL checkbox=$multiple_support checked=$use_faxtomail}
-     <input type=checkbox name="faxtomail" value="1" {$faxtomail} class="center">
-{/render}
-      <label for="mail">{t}Deliver fax as mail to{/t}</label>&nbsp;
-{render acl=$faxtomailACL checkbox=$multiple_support checked=$use_mail}
-      <input name="mail" id="mail" size=25 maxlength=65 value="{$mail}" class="center">
-{/render}
-     {else}
-{render acl=$faxtomailACL checkbox=$multiple_support checked=$use_faxtomail}
-     <input type=checkbox name="faxtomail" value="1" {$faxtomail} class="center">
-{/render}
-      {t}Deliver fax as mail{/t}
-     {/if}
-     <br>
-
-{render acl=$faxtoprinterACL checkbox=$multiple_support checked=$use_faxtoprinter}
-     <input type=checkbox name="faxtoprinter" value="1" {$faxtoprinter} class="center">
-{/render}
-     {t}Deliver fax to printer{/t}&nbsp;
-{render acl=$faxtoprinterACL checkbox=$multiple_support checked=$use_goFaxPrinter}
-     <select size="1" name="goFaxPrinter">
-      {html_options options=$printers selected=$goFaxPrinter}
-               <option disabled>&nbsp;</option>
-     </select>
-{/render}
-   </td>
- </tr>
-</table>
-
-<p class="seperator">&nbsp;</p>
-
-<table summary="" style="width:100%; vertical-align:top; text-align:left;" cellpadding=4 border=0>
-  <tr>
-    <td style="width:50%; border-right:1px solid #A0A0A0">
-
-       {if !$multiple_support}
-
-    <h2><img class="center" alt="" align="middle" src="images/fax_small.png">&nbsp;{t}Alternate fax numbers{/t}</h2>
-{render acl=$facsimileAlternateTelephoneNumberACL}
-    <select style="width:100%" name="alternate_list[]" size="10" multiple>
-                       {html_options values=$facsimileAlternateTelephoneNumber output=$facsimileAlternateTelephoneNumber}
-                       <option disabled>&nbsp;</option>
-    </select>
-{/render}
-    <br>
-{render acl=$facsimileAlternateTelephoneNumberACL}
-    <input name="forward_address" size=20 align="middle" maxlength=65 value="">
-{/render}
-{render acl=$facsimileAlternateTelephoneNumberACL}
-    <input type=submit value="{t}Add{/t}" name="add_alternate">&nbsp;
-{/render}
-{render acl=$facsimileAlternateTelephoneNumberACL}
-    <input type=submit value="{t}Add local{/t}" name="add_local_alternate" >&nbsp;
-{/render}
-{render acl=$facsimileAlternateTelephoneNumberACL}
-    <input type=submit value="{t}Delete{/t}" name="delete_alternate">
-{/render}
-       {/if}
-   </td>
-   <td style="vertical-align:top; width:50%">
-      <h2><img class="center" alt="" align="middle" src="images/false.png" />&nbsp;{t}Blocklists{/t}</h2>
-      <table summary="" style="width:100%">
-        <tr>
-          <td>{t}Blocklists for incoming fax{/t}</td>
-          <td>
-{render acl=$goFaxRBlocklistACL checkbox=$multiple_support checked=$use_edit_incoming}
-            <input type=submit name="edit_incoming" value="{t}Edit{/t}">
-{/render}
-          </td>
-        </tr>
-        <tr>
-          <td>{t}Blocklists for outgoing fax{/t}</td>
-          <td>
-{render acl=$goFaxSBlocklistACL checkbox=$multiple_support checked=$use_edit_outgoing}
-            <input type=submit name="edit_outgoing" value="{t}Edit{/t}">
-{/render}
-          </td>
-        </tr>
-      </table>
-    </td>
-  </tr>
-</table>
-
-<input type="hidden" name="faxTab" value="faxTab">
-
-<!-- Place cursor -->
-<script language="JavaScript" type="text/javascript">
-  <!-- // First input field on page
-       focus_field('facsimileTelephoneNumber');
-  -->
-</script>
diff --git a/gosa-core/plugins/gofax/faxaccount/lists.tpl b/gosa-core/plugins/gofax/faxaccount/lists.tpl
deleted file mode 100644 (file)
index 5817e6c..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-
-<table summary="" style="width:100%; vertical-align:top; text-align:left;" cellpadding=4 border=0>
- <tr>
-  <td style="vertical-align:top;width:50%;border-right:1px solid #A0A0A0"> 
-   <b>{t}Blocked numbers/lists{/t}</b>
-   <br> 
-   <select style="width:100%; height:300px;" name="block_list[]" size=15 multiple>
-           {html_options values=$cblocklist output=$cblocklist}
-               <option disabled>&nbsp;</option>
-   </select>
-   <br>
-   <input name="block_number" size=25 align="middle" maxlength=30 value="">
-   <input type=submit value="{t}Add{/t}" name="add_blocklist_number" >&nbsp;
-   <input type=submit value="{t}Delete{/t}" name="delete_blocklist_number" >
-  </td>
-  <td>
-       <b>{t}List of predefined blocklists{/t}</b><br>
-       <table style="width:100%;height:300px;" summary="">
-               <tr>
-                       <td valign="top">
-                                       {$divSelectPredefined}
-                       </td>
-               </tr>
-       </table>
-   <input type=submit value="{t}Add the list to the blocklists{/t}" name="add_blocklist"><br>
-  </td>
- </tr>
-</table>
-
-<p class="plugbottom">
-  <input type=submit name="edit_blocklists_finish" value="{t}Apply{/t}">
-  &nbsp;
-  <input type=submit name="edit_blocklists_cancel" value="{t}Cancel{/t}">
-</p>
-
diff --git a/gosa-core/plugins/gofax/faxaccount/locals.tpl b/gosa-core/plugins/gofax/faxaccount/locals.tpl
deleted file mode 100644 (file)
index ebf9a89..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-<table summary="" style="width:100%; vertical-align:top; text-align:left;" cellpadding=4>
-<tr>
-  <td style="vertical-align:top; width:600px">
-   <div class="contentboxh" style="height:20px;">
-    <p class="contentboxh" style="font-size:12px">
-     <b>{t}Select numbers to add{/t} {$hint}</b><br>
-    </p>
-   </div>
-   <div class="contentboxb">
-    <p class="contentboxb" style="border-top:1px solid #B0B0B0;background-color:#F8F8F8">
-     <select style="width:100%; margin-top:4px; height:450px;" name="local_list[]" size="15" multiple>
-       {html_options options=$list}
-     </select>
-    </p>
-   </div>
-  </td>
-  <td style="vertical-align:top;">
-   <div class="contentboxh" style="height:20px;">
-    <p class="contentboxh" style="font-size:12px"><img src="{$launchimage}" align="right" alt="[F]"><b>{t}Filters{/t}</b></p>
-   </div>
-   <div class="contentboxb"  style="background-color:#F8F8F8">
-     <table summary="" style="width:100%;border-top:1px solid #B0B0B0; background-color:#F8F8F8">
-      {$alphabet}
-     </table>
-    <table summary="" width="100%" style="border-top:1px solid #B0B0B0;background-color:#F8F8F8">
-               <tr>
-                       <td>
-                               <img class="center" alt="" src="{$tree_image}" align="middle" title="{t}Display numbers of department{/t}">&nbsp;
-                               <select name="depselect" size="1" onChange="mainform.submit()" title="{t}Choose the department the search will be based on{/t}">
-                             {html_options options=$deplist selected=$depselect}
-                           </select>
-                       </td>
-               </tr>
-       </table>
-    <table summary="" width="100%" style="border-top:1px solid #B0B0B0;background-color:#F8F8F8">
-               <tr>
-                       <td width="18">
-                               <img class="center" alt="" src="{$search_image}" align="middle" title="{t}Display numbers matching{/t}">
-                       </td>
-               <td>
-                               <input type='text' name='regex' maxlength='20' value='{$regex}' style="width:99%" title='{t}Regular expression for matching numbers{/t}' onChange="mainform.submit()">  </td>
-               </tr>
-       </table>
-    <table summary="" width="100%" style="border-top:1px solid #B0B0B0;background-color:#F8F8F8">
-               <tr>
-                       <td width="18">
-                               <img class="center" alt="" src="{$usearch_image}" align="middle" title="{t}Display numbers of user{/t}">
-                       </td>
-                   <td>
-                               <input type='text' name='fuser' style="width:99%" maxlength='20' value='{$fuser}' title='{t}User name of which numbers are shown{/t}' onChange="mainform.submit()">     </td>
-               </tr>
-       </table>
-   {$apply}
-   </div>
-  </td>
-</tr>
-</table>
-
-<p class="plugbottom">
-  <input type=submit name="add_locals_finish" value="{t}Add{/t}">
-  &nbsp;
-  <input type=submit name="add_locals_cancel" value="{t}Cancel{/t}">
-</p>
-
diff --git a/gosa-core/plugins/gofax/faxaccount/main.inc b/gosa-core/plugins/gofax/faxaccount/main.inc
deleted file mode 100644 (file)
index 54a7bda..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-<?php
-
-$display  ="";
-$lock_msg = "";
-
-if (!$remove_lock){
-
-       /* Reset requested? */
-       if (isset($_POST['edit_cancel']) ||
-               (isset($_GET['reset']) && $_GET['reset'] == 1)){
-
-               del_lock ($ui->dn);
-               session::un_set ('edit');
-               session::un_set ('gofaxAccount');
-       }
-
-       /* Create gofaxAccount object on demand */
-       if (!session::is_set('gofaxAccount') || (isset($_GET['reset']) && $_GET['reset'] == 1)){
-               $gofaxAccount= new gofaxAccount ($config, $ui->dn);
-               $gofaxAccount->set_acl_base($ui->dn);
-               $gofaxAccount->set_acl_category("users");
-               session::set('gofaxAccount',$gofaxAccount);
-       }
-       $gofaxAccount = session::get('gofaxAccount');
-
-       /* save changes back to object */
-       if (session::is_set('edit')){
-               $gofaxAccount->save_object ();
-       }
-
-       /* Enter edit mode? */
-       if (isset($_POST['edit'])){
-
-               /* Check locking */
-               if (($username= get_lock($ui->dn)) != ""){
-                       session::set('back_plugin',$plug);
-                       session::set('LOCK_VARS_TO_USE',array("/^edit$/","/^plug$/"));
-                       $lock_msg =  gen_locked_message ($username, $ui->dn);
-
-               }else{
-
-                       /* Lock the current entry */
-                       add_lock ($ui->dn, $ui->dn);
-                       session::set('dn',$ui->dn);
-                       session::set('edit',TRUE);
-               }
-       }
-
-       /* save changes to LDAP and disable edit mode */
-       if (isset($_POST['edit_finish'])){
-
-                /* Perform checks */
-                $message= $gofaxAccount->check ();
-
-                /* No errors, save object */
-                if (count ($message) == 0){
-                        $gofaxAccount->save ();
-                        del_lock ($ui->dn);
-                        session::un_set ('edit');
-
-                } else {
-                        /* Errors found, show message */
-                        show_errors ($message);
-                }
-        }
-
-       /* Execute formular */
-       if($lock_msg){
-               $display.= $lock_msg;
-       }else{
-               $display.= $gofaxAccount->execute ();
-       }
-
-       $info= "";
-
-       /* Store changes  in session */
-       if (session::is_set('edit')){
-               session::set('gofaxAccount',$gofaxAccount);
-       }
-
-       /* Show page footer depending on the mode */
-       if (!$gofaxAccount->locals_dialog &&
-               !$gofaxAccount->out_blocklist_dialog &&
-               !$gofaxAccount->in_blocklist_dialog &&
-               $gofaxAccount->is_account       && 
-               empty($lock_msg)){
-
-               $display.= "<p class=\"plugbottom\">\n";
-
-               /* Are we in edit mode? */
-               if (session::is_set('edit')){
-                       $display.= "<input type=submit name=\"edit_finish\" style=\"width:80px\" value=\""._("Ok")."\">\n";
-                       $display.= "&nbsp;\n";
-                       $display.= "<input type=submit name=\"edit_cancel\" value=\""._("Cancel")."\">\n";
-                       $info= "<img alt='' align=\"middle\" src=\"".get_template_path('images/closedlock.png')."\"> ".$ui->dn."&nbsp;";
-               } else {
-                       $info= "<img alt=\"\" align=\"middle\" src=\"".get_template_path('images/openlock.png')."\"> ".$ui->dn."&nbsp;";
-
-                       if(preg_match("/w/",$ui->get_permissions($ui->dn,"users/gofaxAccount"))){
-                               $info.= "<img alt=\"\" align=\"middle\" src=\"".get_template_path('images/lamp.png')."\">"._("Click the 'Edit' button below to change informations in this dialog");
-                               $display.= "<input type=submit name=\"edit\" value=\""._("Edit")."\">";
-                       }
-                       $display.= "<input type=\"hidden\" name=\"ignore\">\n";
-               }
-               $display.= "</p>";
-       }
-       
-       /* Page header*/
-       $display= print_header(get_template_path('images/fax.png'), _("FAX settings"), $info).$display;
-
-}
-?>
diff --git a/gosa-core/plugins/gofax/faxaccount/paste_generic.tpl b/gosa-core/plugins/gofax/faxaccount/paste_generic.tpl
deleted file mode 100644 (file)
index 6efca1d..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<table summary="" style="width:100%; vertical-align:top; text-align:left;" cellpadding="0" border="0">
-       <tr>
-               <td style="width:50%; vertical-align:top;">
-               <h2><img class="center" alt="" align="middle" src="images/rightarrow.png" />&nbsp;{t}Generic{/t}</h2>
-               <table summary="">
-                               <tr>
-                               <td>
-                                       <label for="facsimileTelephoneNumber">{t}Fax{/t}</label>{$must}
-                               </td>
-                               <td>
-                                       <input name="facsimileTelephoneNumber" id="facsimileTelephoneNumber" 
-                                                       size=40 maxlength=65 value="{$facsimileTelephoneNumber}" 
-                                                       title="{t}Fax number for GOfax to trigger on{/t}">
-                               </td>
-                               </tr>
-                        <tr>
-                                <td colspan=2>
-                                      {t}Alternate fax numbers will not be copied{/t}
-                                </td>
-                        </tr>
-
-                       </table>
-               </td>
-       </tr>
-</table>
-<!-- Place cursor -->
-<script language="JavaScript" type="text/javascript">
-  <!-- // First input field on page
-       focus_field('facsimileTelephoneNumber');
-  -->
-</script>
diff --git a/gosa-core/plugins/gofax/faxreports/class_faxreport.inc b/gosa-core/plugins/gofax/faxreports/class_faxreport.inc
deleted file mode 100644 (file)
index 1292b1a..0000000
+++ /dev/null
@@ -1,507 +0,0 @@
-<?php
-
-class faxreport extends plugin
-{
-  /* Definitions */
-  var $plHeadline     = "FAX Reports";
-  var $plDescription  = "This does something";
-
-  /* For internal use */
-  var $start          = 0;
-  var $search_for     = "*";
-  var $search_base    = "";
-  var $year           = "";
-  var $month          = "";
-  var $sort           = 1;
-  var $sort_direction = "down";
-  var $report_list    = array();
-  var $ui             = NULL;
-  var $range          = 20;
-  var $view_logged = FALSE;
-
-  /* Constant stuff */
-  var $status= array( "SENT", "MAILED", "SERROR", "RERROR", "SBLOCK", "RBLOCK",
-      "DELETED", "REQUEUED", "DISABLED", "PRINTED", "DIVERTED",
-      "UNDEFINED", "UNDEFINED", "UNDEFINED", "UNDEFINED",
-      "UNDEFINED");
-  var $fields= array("uid", "queuing_time", "status", "sender_id", "receiver_id", "pages");
-
-  /* these vars will be stored in session to be able to remember last search config */
-  var $attributes_SO= array("search_for","search_base","month","year","start","year","month","sort","sort_direction","range");
-  var $objectclasses= array();
-  var $fax_users    = array();
-
-
-  /* Create class */
-  function faxreport (&$config, &$ui)
-  {
-    /* Include config object */
-    $this->config       = $config;
-    $this->ui           = &$ui;
-    $this->search_base  = get_base_from_people($ui->dn);
-    $this->year         = date("Y");
-    $this->month        = date("m");
-
-    /* Get global filter config and set class vars , 
-       or create a filter */
-    if (!session::is_set("faxreportfilter")){
-      $faxreportfilter = array();
-      foreach($this->attributes_SO as $name){
-        $faxreportfilter[$name] = $this->$name;
-      } 
-      session::set("faxreportfilter",$faxreportfilter);
-    }else{
-      $faxreportfilter = session::get("faxreportfilter");
-      foreach($this->attributes_SO as $name){
-        $this->$name = $faxreportfilter[$name];
-      }
-    }
-  }
-
-  
-  /* Create Filter & Search & Display results */
-  function execute()
-  {
-    /* Call parent execute */
-    plugin::execute();
-
-    /* Log view */
-    if(!$this->view_logged){
-      $this->view_logged = TRUE;
-      new log("view","users/".get_class($this),$this->dn);
-    }
-
-    /************ 
-      Variable initialisation 
-     ************/
-    /* Create months */ 
-    $months= array();
-    for($i = 1 ; $i <= 12 ; $i ++ ){
-      $months[$i] = _(date("F",gmmktime(0,0,0,$i,1)));
-    }
-
-    /* Create years */
-    $current= date("Y");
-    $years= array();
-    for ($y= $current - 5; $y<=$current; $y++){
-      $years[]= $y;
-    }
-
-    
-    /************ 
-      Set smarty defaults  
-     ************/
-
-    $smarty= get_smarty();
-    $smarty->assign("launchimage"              , get_template_path('images/launch.png'));
-    $smarty->assign("search_image"  , get_template_path('images/search.png'));
-    $smarty->assign("search_for"               , $this->search_for);
-    $smarty->assign("bases"                              , $this->config->idepartments);
-    $smarty->assign("base_select"              , $this->search_base);
-    $smarty->assign("months"                     , $months);
-    $smarty->assign("month_select"     , $this->month);
-    $smarty->assign("years"                              , $years);
-    $smarty->assign("year_select"              , $this->year);
-    $smarty->assign("search_result"    , "");
-
-    
-    /************ 
-      Check database accessibility 
-     ************/
-
-    /* Some checks */
-    if(!isset($this->config->data['SERVERS']['FAX'])){
-      print_red(_("No fax extension defined in your server configuration, no reports can be shown!"));
-      return($smarty->fetch(get_template_path('contents.tpl', TRUE)));
-    }elseif(!is_callable("mysql_connect")){
-      print_red(_("There is no mysql extension available, please check your php setup."));
-      return($smarty->fetch(get_template_path('contents.tpl', TRUE)));
-    }else{
-      /* Connecting, selecting database */
-      $cfg     = $this->config->data['SERVERS']['FAX'];
-      $link    = @mysql_pconnect($cfg['SERVER'], $cfg['LOGIN'], $cfg['PASSWORD']);
-      if ($link === FALSE){
-        print_red(_("Can't connect to fax database, no reports can be shown!"));
-        return($smarty->fetch(get_template_path('contents.tpl', TRUE)));
-      }
-      if (! @mysql_select_db("gofax")){
-        print_red(_("Can't select fax database for report generation!"));
-        return($smarty->fetch(get_template_path('contents.tpl', TRUE)));
-      }
-
-      if (! mysql_query("SELECT * FROM faxlog;")){
-        print_red(_("Can't query fax table 'faxlog' for report generation!"));
-        return($smarty->fetch(get_template_path('contents.tpl', TRUE)));
-      }
-    }          
-
-    
-    /************ 
-      Perform a deatil view 
-     ************/
-
-    /* Do detail view? */
-    if (isset($_GET['detail'])){
-
-      /* Create query */
-      $query = "SELECT id,uid,date_format(queuing_time, '%Y%m%d%H%i%s') as queuing_time,status,sender_id,sender_msn,receiver_id,".
-        "receiver_msn,pages,status_message,transfer_time FROM faxlog WHERE id=".$_GET['detail'].";";
-
-      /* Connecting, selecting database */
-      $cfg= $this->config->data['SERVERS']['FAX'];
-
-      /* Check if everything went ok*/
-      $result = @mysql_query($query);
-      if ($result === false){
-        print_red(_("Query for fax database failed!"));
-        @DEBUG (DEBUG_MYSQL, __LINE__, __FUNCTION__, __FILE__,$query, "Database query failed");
-        return($smarty->fetch(get_template_path('contents.tpl', TRUE)));
-      }
-
-      $line = mysql_fetch_array($result, MYSQL_ASSOC);
-      mysql_close($link);
-
-      if (!preg_match ("/'".$line["uid"]."'/", $this->userfilter)){
-        print_red (_("You have no permission to retrieve informations about this fax id!"));
-        return($smarty->fetch(get_template_path('contents.tpl', TRUE)));
-      }
-
-      /* Check acls */
-      $fax_uids = array_flip($this->fax_users);
-      $uid = $line['uid'];
-      $dn = $fax_uids[$uid];
-      $acls = $this->ui->get_permissions($dn,"faxreport/faxreport");
-      if(!preg_match("/r/",$acls)){
-        print_red (_("You have no permission to retrieve informations about this fax id!"));
-        return($smarty->fetch(get_template_path('contents.tpl', TRUE)));
-      }
-
-      $parts= array( "id", "uid", "queuing_time", "status", "sender_id", "sender_msn",
-          "receiver_id", "receiver_msn", "pages", "status_message", "transfer_time" );
-
-      foreach ($parts as $vname) {
-
-        $final="fax_$vname";
-        if($vname != "uid"){
-          $v_acl = $this->ui->get_permissions($dn,"faxreport/faxreport",preg_replace("/_/","",$vname));
-        }else{
-          $v_acl = "r";
-        }
-
-        if ($line[$vname] != "" && preg_match("/r/",$v_acl)){
-          $smarty->assign("$final", $line[$vname]);
-        } else {
-          $smarty->assign("$final", "-");
-        }
-      }
-      $queuing_time= $line['queuing_time'];
-
-      /* The user is allowed to download all fax images from those users 
-          that are listed in session::get('fuserfilter') 
-         Don't forget to check getfax.php if you change somthing here */
-      session::set('fuserfilter',$this->userfilter);
-      $smarty->assign("plug", "?plug=".validate($_GET['plug']));
-      $smarty->assign("detail", validate($_GET['detail']));
-
-      $format= _("Y-M-D");
-      $date= preg_replace("/Y/", substr($queuing_time,0,4), $format);
-      $date= preg_replace("/M/", substr($queuing_time,4,2), $date);
-      $date= preg_replace("/D/", substr($queuing_time,6,2), $date);
-      $smarty->assign("date", $date);
-      $smarty->assign("time", substr($queuing_time,8,2).":".
-          substr($queuing_time,10,2).":".
-          substr($queuing_time,12,2));
-      return($smarty->fetch(get_template_path('detail.tpl', TRUE)));
-    }
-
-    
-    /************ 
-      Search for uids matching the filter  
-     ************/
-
-    /* Search button has been pressed */
-    if ($this->search_for != ""){
-
-      if (is_integer (strpos($this->search_for, "*"))){
-        $s= $this->search_for;
-      } else {
-        $s= "*".$this->search_for."*";
-      }
-      $ldap= $this->config->get_ldap_link();
-      $ldap->cd ($this->search_base);
-
-      /* Perform ldap search for potential users */
-      $filter= "(&(objectClass=gosaAccount)(!(objectClass=gosaUserTemplate))".
-          "(objectClass=goFaxAccount)".
-          "(|(uid=$s)(l=$s)(homePhone=$s)".
-          "(telephoneNumber=$s)(facsimileTelephoneNumber=$s)(mobile=$s)".
-          "(pager=$s)(cn=$s)(givenName=$s)(sn=$s)(personalTitle=$s)".
-          "(title=$s)))";
-  
-      $res = get_list($filter, "users", $this->search_base, array("uid"), GL_SUBSEARCH );
-
-      /* Check if we are allowed to collect fax data */
-      $fax_users= array();
-      foreach($res as $attrs){
-        $acl = $this->ui->get_permissions($attrs['dn'],"users/user","uid");
-        if(preg_match("/r/",$acl)){
-          $fax_users[ $attrs['dn']]= $attrs["uid"][0];
-        }
-      }
-
-      $this->fax_users = $fax_users;
-
-      /* Prepare SQL query */
-      $this->userfilter= "";
-      foreach ($fax_users as $user){
-        $this->userfilter.= "uid = '$user' OR ";
-      }
-      $this->userfilter= preg_replace("/OR $/", "", $this->userfilter);
-    }
-
-    /************ 
-      Create filter  
-     ************/
-
-    /* Perform SQL query */
-    if ($this->userfilter){
-      if ($this->sort_direction == "down"){
-        $desc= "DESC";
-      } else {
-        $desc= "";
-      }
-      $start= date ("YmdHis", mktime(0,0,0,$this->month,1,$this->year));
-      $end=   date ("YmdHis", mktime(23,59,59,$this->month+1,0,$this->year));
-      $query = "SELECT id,uid,date_format(queuing_time, '%Y%m%d%H%i%s') as queuing_time,status,sender_id,receiver_id,pages FROM faxlog ".
-        "WHERE ( ".$this->userfilter." ) AND queuing_time <= $end AND ".
-        "queuing_time >= $start ORDER BY ".$this->fields[$this->sort]." $desc;";
-
-      if(!is_callable("mysql_connect")){
-        print_red("There is no mysql extension configured in your php setup.");
-        return($smarty->fetch(get_template_path('contents.tpl', TRUE)));
-      }
-
-    
-    /************ 
-      Create results  
-     ************/
-
-      /* Connecting, selecting database */
-      $cfg= $this->config->data['SERVERS']['FAX'];
-      $link = @mysql_pconnect($cfg['SERVER'], $cfg['LOGIN'], $cfg['PASSWORD']);
-      
-      @DEBUG (DEBUG_MYSQL, __LINE__, __FUNCTION__, __FILE__,$query, "Database query");
-      $result = @mysql_query($query);
-      if ($result === false){
-        print_red(_("Query for fax database failed!"));
-        return($smarty->fetch(get_template_path('contents.tpl', TRUE)));
-      }
-
-      $this->report_list= array();
-      $user_ids = array_flip($fax_users);
-      while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
-
-        /* Check permissions for each field */
-        $dn = $user_ids[$line['uid']];
-
-        /* Hide restricted attributes */ 
-        foreach(array("pages","receiverid","senderid","status","queuingtime","detailedView") as $attr){
-          $var = $attr."ACL";
-          $$var = $this->ui->get_permissions($dn,"faxreport/faxreport",$attr);
-        }
-
-        /* Restricted attributes will not be displayed, this will be displayed instead */
-        $no_acl = "<img class='center' src='images/closedlock.png' 
-                    title='"._("Insufficient permissions to view this attribute")."' alt='"._("Insufficient permissions")."'>";
-
-        /* Create date */ 
-        if((!empty($line["queuing_time"])) && preg_match("/r/",$queuingtimeACL)){
-          $hour=  substr($line["queuing_time"], 8, 2);
-          $minute=substr($line["queuing_time"], 10, 2);
-          $format= _("Y-M-D");
-          $date= preg_replace("/Y/", substr($line["queuing_time"], 0, 4), $format);
-          $date= preg_replace("/M/", substr($line["queuing_time"], 4, 2), $date);
-          $date= preg_replace("/D/", substr($line["queuing_time"], 6, 2), $date);
-          $str_date = $date." ".$hour.":".$minute;
-        }else{
-          $str_date = $no_acl;
-        }
-  
-        /* Create entry html str */
-
-        if(preg_match("/r/",$detailedViewACL)){
-          $str = "<td class=\"phonelist\">
-            <a href=\"main.php?plug=".validate($_GET['plug'])."&amp;detail=".$line["id"]."\">
-            <img class='center' alt=\"\" align=\"middle\" border=0 src=\"".get_template_path('images/info_small.png')."\">
-            &nbsp;".$line["uid"].
-            "</a>
-            </td>
-            <td>$str_date</td>";
-        }else{
-          $str = "<td>
-            <img class='center' alt=\"\" align=\"middle\" border=0 src=\"".get_template_path('images/info_small.png')."\">
-            &nbsp;".$line["uid"]."</td>
-            <td>$str_date</td>";
-        }
-        
-        /* Add Status td */
-        if(preg_match("/r/",$statusACL)){
-          $str.="<td>".$this->status[$line["status"]]."</td>";
-        }else{
-          $str.="<td>".$no_acl."</td>";
-        }
-
-        /* Add sender_id td */
-        if(preg_match("/r/",$senderidACL)){
-          $str.="<td>".$line["sender_id"]."</td>";
-        }else{
-          $str.="<td>".$no_acl."</td>";
-        }
-
-        /* Add receiver_id td */
-        if(preg_match("/r/",$receiveridACL)){
-          $str.="<td>".$line["receiver_id"]."</td>";
-        }else{
-          $str.="<td>".$no_acl."</td>";
-        }
-
-        /* Add receiver_id td */
-        if(preg_match("/r/",$pagesACL)){
-          $str.="<td>".$line["pages"]."</td>";
-        }else{
-          $str.="<td>".$no_acl."</td>";
-        }
-      $this->report_list[] =  $str;
-      }
-
-      mysql_close($link);
-    }
-
-    /************ 
-      Create output out of results  
-     ************/
-
-    /* Generate output */
-    $mod= 0;
-    $output= "";
-    foreach ($this->report_list as $val){
-      if ($mod < $this->start) {
-        $mod++;
-        continue;
-      }
-      if ($mod >= ($this->start + $this->range)){
-        $mod++;
-        break;
-      }
-      if ( ($mod++) & 1){
-        $col= "background-color: #ECECEC;";
-      } else {
-        $col= "background-color: #F5F5F5;";
-      }
-      $output.= "<tr style=\"height:22px; $col\">$val</tr>";
-    }
-
-    
-    /************ 
-      Display results  
-     ************/
-
-    if (isset($fax_users) && count($fax_users)){
-      $smarty->assign("search_result", $output);
-      $smarty->assign("range_selector", range_selector(count($this->report_list), $this->start, $this->range,"EntriesPerPage"));
-    }else{
-      $smarty->assign("search_result", "");
-    }
-
-    /* Show main page */
-    $smarty->assign("plug", "?plug=".validate($_GET['plug']));
-    for($i= 0; $i<7; $i++){
-      $smarty->assign("mode$i", "");
-    }
-    $smarty->assign("mode".$this->sort, "<img alt=\"\" src=\"images/sort_".$this->sort_direction.
-        ".png\" border=0 align=middle>");
-    return($smarty->fetch(get_template_path('contents.tpl', TRUE)));
-  }
-
-
-  /* Save ui input, and store it in session::get() 
-     to remember last search next time*/
-  function save_object()
-  {
-    $faxreportfilter = session::get("faxreportfilter");
-    if(isset($_POST['EntriesPerPage'])){
-      $this->range = $_POST['EntriesPerPage'];
-    }
-
-    if (isset($_GET['start'])){
-      $this->start= (int)$_GET['start'];
-    }
-
-    /* Adapt sorting */
-    if (isset($_GET['sort'])){
-      if ($this->sort == (int)$_GET['sort']){
-        if ($this->sort_direction == "down"){
-          $this->sort_direction= "up";
-        } else {
-          $this->sort_direction= "down";
-        }
-      }
-      $this->sort= (int)$_GET['sort'];
-      if ($this->sort < 0 || $this->sort > 5){
-        $this->sort= 0;
-      }
-    }
-    foreach( array("year", "month", "search_for", "search_base") as $type){
-      if (isset($_POST[$type])){
-        $faxreportfilter[$type]= $_POST[$type];
-
-        /* reset start page, if filter has changed */ 
-        if(!isset($_GET['start'])){
-          $this->start = 0;
-        }
-      }
-      $this->$type= $faxreportfilter[$type];
-   
-    }
-    foreach($this->attributes_SO as $name){
-      $faxreportfilter[$name] = $this->$name;
-    }  
-    session::set("faxreportfilter",$faxreportfilter);
-  }
-
-
-  /* Return plugin informations for acl handling
-    #FIXME You can only read attributes within this report plugin */
-  static function plInfo()
-  {
-  
-    return (array(
-          "plShortName"     => _("Fax report"),
-          "plDescription"   => _("Fax report")."&nbsp;<i>"._("All entries are readonly")."</i>",
-          "plSelfModify"    => TRUE,
-          "plDepends"       => array(),
-          "plPriority"      => 1,                                 // Position in tabs
-          "plSection"       => array("administration"),                     // This belongs to personal
-          "plCategory"      => array("faxreport" => array("description" => _("Fax reports"),
-                                                         "objectClass" => array())),
-          "plOptions"       => array(),
-
-          "plProvidedAcls" => array(
-            "detailedView"   => _("Detailed view"),
-            "id"             => _("Fax ID"),
-            "queuingtime"    => _("Date")."&nbsp;/&nbsp;"._("Time"),
-            "status"         => _("Status"),
-            "senderid"       => _("Sender ID"),
-            "sendermsn"      => _("Sender MSN"),
-            "receiverid"     => _("Receiver ID"),
-            "receivermsn"    => _("Receiver MSN"),
-            "pages"          => _("Number of pages"),
-            "statusmessage"  => _("Status Message"),
-            "transfertime"   => _("Transfer time"))
-        ));
-  }
-
-}
-// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
-?>
diff --git a/gosa-core/plugins/gofax/faxreports/contents.tpl b/gosa-core/plugins/gofax/faxreports/contents.tpl
deleted file mode 100644 (file)
index 197c5b8..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-<div class="contentboxh">
- <p class="contentboxh"><img src="{$launchimage}" align="right" alt="[F]">{t}Filter{/t}</p>
-</div>
-<div class="contentboxb">
- <p class="contentboxb" style="border-top:1px solid #B0B0B0; padding-top:5px;">
- <img class="center" alt="" align="middle" border=0 src="{$search_image}">&nbsp;{t}Search for{/t}
- <input name="search_for" size=25 maxlength=60 value="{$search_for}" title="{t}Enter user name to search for{/t}" onChange="mainform.submit()">
- {t}in{/t}
- <select size="1" name="search_base" title="{t}Select subtree to base search on{/t}" onChange="mainform.submit()">
-  {html_options options=$bases selected=$base_select}
- </select>
- {t}during{/t}
- <select size="1" name="month" onChange="mainform.submit()">
-  {html_options options=$months selected=$month_select}
- </select>
- {t}in{/t} 
- <select size="1" name="year" onChange="mainform.submit()">
-  {html_options values=$years output=$years selected=$year_select}
- </select>
- &nbsp;
- <input type=submit name="search" value="{t}Search{/t}">
-</p>
-</div>
-
-<br>
-
-{if $search_result ne ""}
- <table summary="" style="width:100%; vertical-align:top; text-align:left; border:1px solid #B0B0B0;" cellpadding=2 cellspacing=1 border=0 rules="cols">
-  <tr style="background-color: #E8E8E8; height:26px; font-weight:bold">
-   <td><a href="main.php{$plug}&amp;sort=0">{t}User{/t} {$mode0}</a></td>
-   <td><a href="main.php{$plug}&amp;sort=1">{t}Date{/t} {$mode1}</a></td>
-   <td><a href="main.php{$plug}&amp;sort=2">{t}Status{/t} {$mode2}</a></td>
-   <td><a href="main.php{$plug}&amp;sort=3">{t}Sender{/t} {$mode3}</a></td>
-   <td><a href="main.php{$plug}&amp;sort=4">{t}Receiver{/t} {$mode4}</a></td>
-   <td><a href="main.php{$plug}&amp;sort=5">{t}# pages{/t} {$mode5}</a></td>
-  </tr>
-  {$search_result}
- </table>
-
- <table summary="" style="width:100%; vertical-align:top; text-align:center;" cellpadding=4 cellspacing=0 border=0>
-  <tr>
-   <td>{$range_selector}</td>
-  </tr>
- </table>
-<p class="plugbottom">
- &nbsp;
-</p>
-
-{else}
-  <b>{t}Search returned no results...{/t}</b>
-{/if}
-
-
-<!-- Place cursor -->
-<script language="JavaScript" type="text/javascript">
-  <!-- // First input field on page
-       focus_field('search_for');
-  -->
-</script>
diff --git a/gosa-core/plugins/gofax/faxreports/detail.tpl b/gosa-core/plugins/gofax/faxreports/detail.tpl
deleted file mode 100644 (file)
index 20b6123..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-<table summary="">
- <tr>
-  <td> 
-   <a href="getfax.php?id={$detail}&amp;download=1">
-     <img  align="bottom" width="420" height="594" src="getfax.php?id={$detail}" alt="{t}FAX preview - please wait{/t}" border=1>
-   </a>
-   <p style="margin-top-width:0px; text-align:center;">
-    {t}Click on fax to download{/t}
-   </p>
-  </td>
-  <td style="width:20px;">
-    &nbsp;
-  </td>
-  <td style="vertical-align:top">
-    <table summary="" border=0 cellspacing=5>
-     <tr>
-      <td><b>{t}FAX ID{/t}</b></td>
-      <td>{$fax_id}</td>
-     </tr>
-     <tr>
-      <td><b>{t}User{/t}</b></td>
-      <td>{$fax_uid}</td>
-     </tr>
-     <tr>
-      <td><b>{t}Date / Time{/t}</b></td>
-      <td>{$date} / {$time}</td>
-     </tr>
-     <tr>
-      <td><b>{t}Sender MSN{/t}</b></td>
-      <td>{$fax_sender_msn}</td>
-     </tr>
-     <tr>
-      <td><b>{t}Sender ID{/t}</b></td>
-      <td>{$fax_sender_id}</td>
-     </tr>
-     <tr>
-      <td><b>{t}Receiver MSN{/t}</b></td>
-      <td>{$fax_receiver_msn}</td>
-     </tr>
-     <tr>
-      <td><b>{t}Receiver ID{/t}</b></td>
-      <td>{$fax_receiver_id}</td>
-     </tr>
-     <tr>
-      <td><b>{t}Status{/t}</b></td>
-      <td>{$fax_status}</td>
-     </tr>
-     <tr>
-      <td><b>{t}Status message{/t}</b></td>
-      <td>{$fax_status_message}</td>
-     </tr>
-     <tr>
-      <td><b>{t}Transfer time{/t}</b></td>
-      <td>{$fax_transfer_time}</td>
-     </tr>
-     <tr>
-      <td><b>{t}# pages{/t}</b></td>
-      <td>{$fax_pages}</td>
-     </tr>
-    </table>
-
-  </td>
- </tr>
-</table>
-
-<p class="plugbottom">
-  <input type=submit name="bck_to_list" value="{t}Back{/t}">
-</p>
-
diff --git a/gosa-core/plugins/gofax/faxreports/main.inc b/gosa-core/plugins/gofax/faxreports/main.inc
deleted file mode 100644 (file)
index 03bf95b..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-if (!$remove_lock){
-       /* Create faxreport object on demand */
-       if (!session::is_set('faxreport') || (isset($_GET['reset']) && $_GET['reset'] == 1)){
-               session::set('faxreport',new faxreport ($config, $ui));
-       }
-       $faxreport = session::get('faxreport');
-
-       /* Execute formular */
-       $faxreport->save_object();
-       $display= $faxreport->execute ();
-       $display.= "<input type=\"hidden\" name=\"ignore\">\n";
-       $display= print_header(get_template_path('images/reports.png'), _("FAX reports")).$display;
-
-       /* Store changes  in session */
-       session::set('faxreport',$faxreport);
-}
-?>
diff --git a/gosa-plugins/gofax/gofax/blocklists/class_blocklistGeneric.inc b/gosa-plugins/gofax/gofax/blocklists/class_blocklistGeneric.inc
new file mode 100644 (file)
index 0000000..a6dab59
--- /dev/null
@@ -0,0 +1,371 @@
+<?php
+
+define("BLOCK_LIST_RECEIVE" , 0);
+define("BLOCK_LIST_SEND" , 1);
+
+class blocklistGeneric extends plugin
+{
+  /* Definitions */
+  var $plHeadline= "FAX Blocklists";
+  var $plDescription= "This does something";
+
+  var $cn ="";
+  var $description = "";
+  var $base = "";  
+
+  var $type;
+  var $goFaxBlocklist = array();
+  var $readonly = FALSE;
+  var $view_logged = FALSE;
+  var $attributes = array("cn","description");
+
+  var $ignore_account = TRUE;
+  
+  function __construct($config,$dn = "new")
+  {
+    plugin::plugin($config,$dn);
+
+    /* Set default list type */
+    $this->type = BLOCK_LIST_SEND;
+
+    /* Load defined numbers */
+    if($dn != "new"){
+  
+      /* We will not be able to rename edited blocklists */
+      $this->readonly = TRUE;
+  
+      /* Get blocklist type and defined numbers */
+      if (in_array("goFaxSBlock",$this->attrs['objectClass'])){
+        if(isset($this->attrs["goFaxSBlocklist"])){
+          for ($i= 0; $i<$this->attrs["goFaxSBlocklist"]["count"]; $i++){
+            $this->goFaxBlocklist[]= $this->attrs["goFaxSBlocklist"][$i];
+          }
+        }
+        $this->type= BLOCK_LIST_SEND;
+      } elseif (in_array("goFaxRBlock",$this->attrs['objectClass'])){
+        if(isset($this->attrs["goFaxRBlocklist"])){
+          for ($i= 0; $i<$this->attrs["goFaxRBlocklist"]["count"]; $i++){
+            $this->goFaxBlocklist[]= $this->attrs["goFaxRBlocklist"][$i];
+          }
+        }
+        $this->type= BLOCK_LIST_RECEIVE;
+      }
+    }
+
+    /* Set base */
+    if ($this->dn == "new"){
+      if(session::is_set('CurrentMainBase')){
+        $this->base = session::get('CurrentMainBase');
+      }else{
+        $ui= get_userinfo();
+        $this->base= dn2base($ui->dn);
+      }
+    } else {
+      $this->base =preg_replace ("/^[^,]+,[^,]+,[^,]+,/","",$this->dn);
+    }
+  }
+
+  public function execute()
+  {
+    /* Log view */
+    if(!$this->view_logged){
+      $this->view_logged = TRUE;
+      new log("view","blocklist/".get_class($this),$this->dn);
+    }
+
+
+    /**************
+     * Base select dialog 
+     **************/
+
+    $once = true;
+    foreach($_POST as $name => $value){
+      if(preg_match("/^chooseBase/",$name) && $once){
+        $once = false;
+        $this->dialog = new baseSelectDialog($this->config,$this,$this->get_allowed_bases());
+        $this->dialog->setCurrentBase($this->base);
+      }
+    }
+
+    /* Dialog handling */
+    if(is_object($this->dialog)){
+      /* Must be called before save_object */
+      $this->dialog->save_object();
+
+      if($this->dialog->isClosed()){
+        $this->dialog = false;
+      }elseif($this->dialog->isSelected()){
+
+        /* A new base was selected, check if it is a valid one */
+        $tmp = $this->get_allowed_bases();
+        if(isset($tmp[$this->dialog->isSelected()])){
+          $this->base = $this->dialog->isSelected();
+        }
+        $this->dialog= false;
+
+      }else{
+        return($this->dialog->execute());
+      }
+    }
+
+
+    /***************
+      Add numer to blocklist
+     ***************/
+
+
+    /* Handle interactions: add */
+    if (isset($_POST['add_number']) && $_POST['number'] != ""){
+      if (tests::is_phone_nr($_POST['number']) || preg_match ("/^[\/0-9 ()\^\.\$+*-]+$/",$_POST['number'])){
+        $this->addNumber ($_POST['number']);
+      } else {
+        print_red (_("Please specify a valid phone number."));
+      }
+    }
+
+
+    /***************
+      Delete number from list
+     ***************/
+
+    /* Handle interactions: delete */
+    if (isset($_POST['delete_number']) && isset($_POST['numbers']) && count($_POST['numbers']) > 0){
+      $this->delNumber ($_POST['numbers']);
+    }
+
+
+    /***************
+      Template output
+     ***************/
+
+    $smarty = get_smarty();
+    foreach($this->attributes as $name){
+      $smarty->assign($name,$this->$name);
+    }
+    $tmp = $this->plInfo();
+    foreach($tmp['plProvidedAcls'] as $name => $translation){
+      $smarty->assign($name."ACL",$this->getacl($name));
+    }
+    $smarty->assign("goFaxBlocklist",$this->goFaxBlocklist);
+    $smarty->assign("cnACL",$this->getacl("cn",$this->readonly));
+    $smarty->assign("typeACL",$this->getacl("type",$this->readonly));
+    $smarty->assign("base",$this->base);
+    $smarty->assign("bases", $this->get_allowed_bases());
+    $smarty->assign("types", array(BLOCK_LIST_SEND => _("send"), BLOCK_LIST_RECEIVE => _("receive")));
+    $smarty->assign("type", $this->type);
+    return($smarty->fetch(get_template_path('generic.tpl', TRUE)));
+  }
+
+
+  public function save_object()
+  {
+    if(isset($_POST['blocklist_posted'])){
+      $tmp_cn = $this->cn;
+      plugin::save_object();
+      $this->cn = $tmp_cn;
+
+      /* Save base, since this is no LDAP attribute */
+      $tmp = $this->get_allowed_bases();
+      if(isset($_POST['base'])){
+        if(isset($tmp[$_POST['base']])){
+          $this->base= $_POST['base'];
+        }
+      }
+      $tmp = $this->attributes;
+      $tmp[] = "type";
+      foreach($tmp as $attr){
+        if(in_array($attr,array("cn","type")) && $this->readonly){
+          continue;
+        }elseif(isset($_POST[$attr]) && $this->acl_is_writeable($attr)){
+          $this->$attr = $_POST[$attr];
+        }
+      }
+    }
+  }
+
+
+  function remove_from_parent()
+  {
+    $ldap= $this->config->get_ldap_link();
+    $ldap->rmDir($this->dn);
+    new log("remove","gofaxlist/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error());
+    show_ldap_error($ldap->get_error(), sprintf(_("Removing of blocklist with dn '%s' failed."),$this->dn));
+    $this->handle_post_events("remove");
+  }
+
+
+  /* Check values */
+  function check()
+  {
+    /* Call common method to give check the hook */
+    $message= plugin::check();
+
+    /* check syntax: must cn */
+    if ($this->cn == ""){
+      $message[]= _("Required field 'Name' is not set.");
+    } else {
+      if (!tests::is_uid($this->cn)){
+        $message[]= _("Required field 'Name' contains invalid characters");
+      }
+      if ($this->dn == 'new'){
+        $ldap= $this->config->get_ldap_link();
+        $ldap->cd (get_ou('blocklistou').$this->config->current["BASE"]);
+        $ldap->search ("(&(|(objectClass=goFaxSBlock)(objectClass=goFaxRBlock))(cn=".$this->cn."))", array("cn"));
+        if ($ldap->count() != 0){
+          $message[]= _("Specified name is already used.");
+        }
+      }
+    }
+    return $message;
+  }
+
+
+  /* Save to LDAP */
+  function save()
+  {
+    plugin::save();
+
+    /* Type selection */
+    if ($this->type == BLOCK_LIST_SEND){
+      $type= "goFaxSBlocklist";
+      $this->attrs['objectClass']= "goFaxSBlock";
+    } else {
+      $type= "goFaxRBlocklist";
+      $this->attrs['objectClass']= "goFaxRBlock";
+    }
+
+    /* Add list */
+    if (count($this->goFaxBlocklist)){
+      $this->attrs[$type]= $this->goFaxBlocklist;
+    }
+
+    /* Write back to ldap */
+    $ldap= $this->config->get_ldap_link();
+    $ldap->cd($this->base);
+    $ldap->cat($this->dn, array('dn'));
+    if ($ldap->count()){
+      if (!isset($this->attrs[$type])){
+        $this->attrs[$type]= array();
+      }
+      $ldap->cd($this->dn);
+      $this->cleanup();
+      $ldap->modify($this->attrs);
+      new log("modify","faxblocklist/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error());
+      $this->handle_post_events("modify");
+    } else {
+      $ldap->cd($this->config->current['BASE']);
+      $ldap->create_missing_trees(preg_replace('/^[^,]+,/', '', $this->dn));
+      $ldap->cd($this->dn);
+      $ldap->add($this->attrs);
+      new log("create","gofaxlist/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error());
+      $this->handle_post_events("add");
+    }
+    show_ldap_error($ldap->get_error(), sprintf(_("Saving of blocklist with dn '%s' failed."),$this->dn));
+  }
+
+
+  /* Add number */
+  function addNumber($number)
+  {
+    if (!in_array($number, $this->goFaxBlocklist)){
+      $this->goFaxBlocklist[]= $number;
+      sort($this->goFaxBlocklist);
+    }
+  }
+
+
+  /* Remove number from list */
+  function delNumber($numbers)
+  {
+    $tmp= array();
+    foreach ($this->goFaxBlocklist as $val){
+      if (!in_array($val, $numbers)){
+        $tmp[]= $val;
+      }
+    }
+    $this->goFaxBlocklist= $tmp;
+  }
+
+
+  function getCopyDialog()
+  { 
+    $smarty = get_smarty();
+    $smarty->assign("cn",$this->cn);
+    $str = $smarty->fetch(get_template_path("paste_generic.tpl",TRUE,dirname(__FILE__)));
+    $ret = array();
+    $ret['string'] = $str;
+    $ret['status'] = "";
+    return($ret);
+  }
+
+  function saveCopyDialog()
+  {
+    if(isset($_POST['cn'])){
+      $this->cn = get_post('cn');
+    }
+  }
+
+  
+  function PrepareForCopyPaste($source)
+  {
+    plugin::PrepareForCopyPaste($source);
+
+    /* We will not be able to rename edited blocklists */
+    $this->readonly = TRUE;
+
+    /* Get blocklist type and defined numbers */
+    if (in_array("goFaxSBlock",$source['objectClass'])){
+      if(isset($source["goFaxSBlocklist"])){
+        for ($i= 0; $i<$source["goFaxSBlocklist"]["count"]; $i++){
+          $this->goFaxBlocklist[]= $source["goFaxSBlocklist"][$i];
+        }
+      }
+      $this->type= BLOCK_LIST_SEND;
+    } elseif (in_array("goFaxRBlock",$source['objectClass'])){
+      if(isset($source["goFaxRBlocklist"])){
+        for ($i= 0; $i<$source["goFaxRBlocklist"]["count"]; $i++){
+          $this->goFaxBlocklist[]= $source["goFaxRBlocklist"][$i];
+        }
+      }
+      $this->type= BLOCK_LIST_RECEIVE;
+    }
+
+    /* Set base */
+    if ($this->dn == "new"){
+      if(session::is_set('CurrentMainBase')){
+        $this->base = session::get('CurrentMainBase');
+      }else{
+        $ui= get_userinfo();
+        $this->base= dn2base($ui->dn);
+      }
+    } else {
+      $this->base =preg_replace ("/^[^,]+,[^,]+,[^,]+,/","",$this->dn);
+    }
+  }
+
+
+  /* Return plugin informations for acl handling */
+  static function plInfo()
+  {
+    return (array(
+          "plShortName"       => _("Fax"),
+          "plDescription"     => _("Fax blocklists"),
+          "plSelfModify"      => FALSE,
+          "plDepends"         => array(),
+
+          "plPriority"    => 0,
+          "plSection"     => array("administration" => _("FAX Blocklists")),
+          "plCategory"    => array("gofaxlist"      => array("description" => _("Fax blocklists"),
+              "objectClass" => array("goFaxRBlock","goFaxSBlock"))),
+          "plProvidedAcls" => array(
+            "cn"              => _("Name"),
+            "description"     => _("Description"),
+            "base"            => _("Base"),
+            "goFaxBlocklist"  => _("Blocklist"),
+            "type"            => _("Blocklist type"))
+          ));
+  }
+
+}
+// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
+?>
diff --git a/gosa-plugins/gofax/gofax/blocklists/class_blocklistManagement.inc b/gosa-plugins/gofax/gofax/blocklists/class_blocklistManagement.inc
new file mode 100644 (file)
index 0000000..8c68cc4
--- /dev/null
@@ -0,0 +1,477 @@
+<?php
+class blocklist extends plugin
+{
+  /* Definitions */
+  var $plHeadline= "FAX Blocklists";
+  var $plDescription= "This does something";
+
+  var $blocklists       = array();
+  var $DivListBlocklist = NULL;
+  var $CopyPasteHandler = NULL;
+
+  var $start_pasting_copied_objects = FALSE;
+  
+  function blocklist (&$config, $ui)
+  {
+    $this->ui     = $ui;
+    $this->dn     = "";
+    $this->config = &$config;
+    $this->base  = session::get('CurrentMainBase'); 
+    $this->DivListBlocklist = new divListBlocklist($this->config,$this);
+
+    /* Initialize copy&paste queue */
+    if ($this->config->boolValueIsTrue("main", "enableCopyPaste")){
+      $this->CopyPasteHandler= new CopyPasteHandler($this->config);
+    }
+  }
+
+
+  function execute()
+  {
+    /* Call parent execute */
+    plugin::execute();
+
+    session::set('LOCK_VARS_TO_USE',array("/^goFaxBlocklist_/","/^act$/","/^id$/","/^remove_multiple_blocklists/","/^item_selected/"));
+
+    /***************
+      Init vars 
+     ***************/
+
+    /* Get global smarty instance */
+    $smarty       = get_smarty();
+    $s_action     = "";                       // Contains the action to proceed
+    $s_entry      = "";                       // The value for s_action
+    $base_back    = "";                       // The Link for Backbutton
+
+
+    /***************
+      Fetch posts 
+     ***************/
+
+    /* Test Posts */
+    foreach($_POST as $key => $val){
+      // Post for delete
+      if(preg_match("/^goFaxBlocklist_del.*/",$key)){
+        $s_action = "del";
+        $s_entry  = preg_replace("/^goFaxBlocklist_del_/i","",$key);
+        // Post for edit
+      }elseif(preg_match("/^goFaxBlocklist_edit_.*/",$key)){
+        $s_action="edit";
+        $s_entry  = preg_replace("/^goFaxBlocklist_edit_/i","",$key);
+        // Post for new
+      }elseif(preg_match("/^goFaxBlocklist_new.*/",$key)){
+        $s_action="new";
+      }elseif(preg_match("/^remove_multiple_blocklists/",$key)){
+        $s_action="del_multiple";
+      }elseif(preg_match("/^copy/",$key)){
+        $s_action = "copy";
+        $s_entry= preg_replace("/^copy_/i", "", $key);
+      }elseif(preg_match("/^cut/",$key)){
+        $s_action = "cut";
+        $s_entry= preg_replace("/^cut_/i", "", $key);
+      }
+
+    }
+    if((isset($_GET['act']))&&($_GET['act']=="edit_entry")){
+      $s_action ="edit";
+      $s_entry  = $_GET['id'];
+    }
+
+    $s_entry  = preg_replace("/_.$/","",$s_entry);
+
+
+    /* handle C&P from layers menu */
+    if(isset($_POST['menu_action']) && preg_match("/^multiple_copy_systems/",$_POST['menu_action'])){
+      $s_action = "copy_multiple";
+    }
+    if(isset($_POST['menu_action']) && preg_match("/^multiple_cut_systems/",$_POST['menu_action'])){
+      $s_action = "cut_multiple";
+    }
+    if(isset($_POST['menu_action']) && preg_match("/^editPaste/",$_POST['menu_action'])){
+      $s_action = "editPaste";
+    }
+
+
+    /* Create options */
+    if(isset($_POST['menu_action']) && $_POST['menu_action'] == "goFaxBlocklist_new"){
+      $s_action = "new";
+    }
+
+    /* handle remove from layers menu */
+    if(isset($_POST['menu_action']) && preg_match("/^remove_multiple/",$_POST['menu_action'])){
+      $s_action = "del_multiple";
+    }
+
+
+    /***************
+      Handle copy & paste  
+     ***************/
+
+    $ret = $this->copyPasteHandling_from_queue($s_action,$s_entry);
+    if($ret){
+      return($ret);
+    }
+
+
+    /***************
+      Cancel some dialogs  
+     ***************/
+
+    /* Cancel dialog */
+    if (isset($_POST['edit_cancel']) || 
+        isset($_POST['delete_blocklist_cancel']) ||
+        isset($_POST['delete_lock'])){
+
+      del_lock ($this->dn);
+      $this->dialog = NULL;
+      session::un_set('objectinfo');
+    }
+
+
+    /***************
+      Save blocklist 
+     ***************/
+
+    /* What about finish? */
+    if (isset($_POST['edit_finish']) || isset($_POST['edit_apply'])){
+
+      /* No errors, save object */
+      $this->dialog->save_object();
+      $message= $this->check();
+      if (count ($message) == 0){
+
+        $this->dialog->save ();
+
+        if (!isset($_POST['edit_apply'])){
+          del_lock ($this->dn);
+          $this->dn= "";
+          $this->dialog = NULL;
+          session::un_set('objectinfo');
+        }
+      } else {
+        /* Errors found, show message */
+        show_errors ($message);
+      }
+    }
+
+
+    /***************
+      Create a new blocklist (dialog)
+     ***************/
+
+    /* Create new blocklist? */
+    if ($s_action=="new"){
+      $this->dn= "new";
+      $this->dialog = new faxblocktabs($this->config,$this->config->data['TABS']['FAXBLOCKTABS'],$this->dn);
+      $this->dialog->set_acl_base($this->base);
+    }
+
+
+    /***************
+      Edit blocklist 
+     ***************/
+
+    if ($s_action=="edit" && !is_object($this->dialog)){
+
+      $this->dn=$this->blocklists[$s_entry]['dn'];
+
+      if (($user= get_lock($this->dn)) != ""){
+        return(gen_locked_message($user, $this->dn));
+      }else{
+        add_lock ($this->dn, $this->ui->dn);
+      }
+      session::set('objectinfo',trim($this->dn));
+      $this->dialog = new faxblocktabs($this->config,$this->config->data['TABS']['FAXBLOCKTABS'],$this->dn);
+      $this->dialog->set_acl_base($this->dn);
+    }    
+
+
+    /***************
+      Display dialog  
+     ***************/
+
+    if(is_object($this->dialog) && ($this->dialog instanceof faxblocktabs)){
+      $this->dialog->save_object();
+      return($this->dialog->execute());
+    }
+
+
+    /********************
+      Delete MULTIPLE entries requested, display confirm dialog
+     ********************/
+
+    if ($s_action=="del_multiple"){
+
+      $this->dns = array();
+      $ids = $this->list_get_selected_items();
+
+      if(count($ids)){
+        foreach($ids as $id){
+          $dn = $this->blocklists[$id]['dn'];
+          if (($user= get_lock($dn)) != ""){
+            return(gen_locked_message ($user, $dn));
+          }
+          $this->dns[$id] = $dn;
+        }
+
+        $dns_names = "<br><pre>";
+        foreach($this->dns as $dn){
+          add_lock ($dn, $this->ui->dn);
+          $dns_names .= $dn."\n";
+        }
+        $dns_names .="</pre>";
+
+        /* Lock the current entry, so nobody will edit it during deletion */
+        $smarty->assign("info",     sprintf(_("You're about to delete the following blocklists(s) %s"), @LDAP::fix($dns_names)));
+        $smarty->assign("multiple", true);
+        return($smarty->fetch(get_template_path('remove.tpl', TRUE)));
+      }
+    }
+
+
+    /********************
+      Delete MULTIPLE entries confirmed
+     ********************/
+
+    /* Confirmation for deletion has been passed. */
+    if (isset($_POST['delete_multiple_blocklist_confirm'])){
+
+      /* Remove user by user and check acls before removeing them */
+      foreach($this->dns as $key => $dn){
+        if (preg_match("/d/",$this->ui->get_permissions($this->dn,"gofaxlist/blocklistGeneric"))){
+          $this->dn = $dn;
+          $this->dialog = new faxblocktabs($this->config,$this->config->data['TABS']['FAXBLOCKTABS'],$this->dn);
+          $this->dialog->delete();
+          $this->dialog = NULL;
+        } else {
+          print_red (sprintf(_("You are not allowed to delete the blocklist '%s'!"),$dn));
+        }
+        /* Remove lock file after successfull deletion */
+        del_lock ($dn);
+        unset($this->dns[$key]);
+      }
+      $this->reload();
+    }
+
+
+    /********************
+      Delete MULTIPLE entries Canceled
+     ********************/
+
+    /* Remove lock */
+    if(isset($_POST['delete_multiple_blocklist_cancel'])){
+      foreach($this->dns as $key => $dn){
+        del_lock ($dn);
+        unset($this->dns[$key]);
+      }
+    }
+
+
+    /***************
+      Remove blocklist
+     ***************/
+
+    /* Delete blocklist requested */
+    if ($s_action=="del"){
+      $this->dn=$this->blocklists[$s_entry]['dn'];
+
+      /* Check locking */
+      if (($user= get_lock($this->dn)) != ""){
+        session::set('dn',$this->dn);
+        return(gen_locked_message($user, $this->dn));
+      } else {
+
+        // Lock this dn for editing
+        add_lock ($this->dn, $this->ui->dn);
+        $smarty->assign("info", sprintf(_("You're about to delete the blocklist '%s'."), $this->dn));
+        $smarty->assign("multiple", false);
+        return($smarty->fetch(get_template_path('remove.tpl', TRUE)));
+      }
+    }
+
+
+    /***************
+      Remove blocklist confirmed
+     ***************/
+
+    /* Finally delete blocklist */
+    if (isset($_POST['delete_blocklist_confirm'])){
+      if (preg_match("/d/",$this->ui->get_permissions($this->dn,"gofaxlist/blocklistGeneric"))){
+        $this->dialog = new faxblocktabs($this->config,$this->config->data['TABS']['FAXBLOCKTABS'],$this->dn);
+        $this->dialog->delete();
+        $this->dialog = NULL;
+        del_lock ($this->dn);
+      } else {
+        print_red (_("You have no permission to remove this blocklist."));
+      }
+    }
+
+    /***************
+      Divlist dialog 
+     ***************/
+
+    /* Check if there is a snapshot dialog open */
+    $base = $this->DivListBlocklist->selectedBase;
+    if($str = $this->showSnapshotDialog($base,$this->get_used_snapshot_bases())){
+      return($str);
+    }
+
+    /* Display dialog with system list */
+    $this->DivListBlocklist->parent = $this;
+    $this->DivListBlocklist->execute();
+
+    /* Add departments if subsearch is disabled */
+    if(!$this->DivListBlocklist->SubSearch){
+      $this->DivListBlocklist->AddDepartments($this->DivListBlocklist->selectedBase,3,1);
+    }
+    $this->reload();
+    $this->DivListBlocklist->setEntries($this->blocklists);
+    return($this->DivListBlocklist->Draw());
+  }
+
+
+  function list_get_selected_items()
+  {
+    $ids = array();
+    foreach($_POST as $name => $value){
+      if(preg_match("/^item_selected_[0-9]*$/",$name)){
+        $id   = preg_replace("/^item_selected_/","",$name);
+        $ids[$id] = $id;
+      }
+    }
+    return($ids);
+  }
+
+
+  /* Return departments, that will be included within snapshot detection */
+  function get_used_snapshot_bases()
+  {
+    return(array(get_ou('blocklistou').$this->DivListBlocklist->selectedBase));
+  }
+
+
+  /* Reload the list of known blocklists */
+  function reload()
+  {
+    /* Init some vars */
+    $filter = $filter2      = "";
+    $base                   = $this->DivListBlocklist->selectedBase;
+    $Regex                  = $this->DivListBlocklist->Regex;
+    $SubSearch              = $this->DivListBlocklist->SubSearch;
+    $ShowSendBocklists      = $this->DivListBlocklist->ShowSendBocklists;
+    $ShowReceiveBlocklists  = $this->DivListBlocklist->ShowReceiveBlocklists;
+    $Flags                  = GL_SIZELIMIT;
+    $res = $res2            = array();
+
+    /* Append subsearch to Flags */
+    if($SubSearch){
+      $Flags |= GL_SUBSEARCH;
+    }else{
+      $base = get_ou('blocklistou').$base;
+    }  
+
+    /* Create filter */
+    if ($ShowSendBocklists){
+      $filter = "(&(objectClass=goFaxSBlock)(|(cn=".$Regex.")(goFaxSBlocklist=".$Regex.")))";
+      $res= get_list($filter, "gofaxlist", $base,array("*"), $Flags);
+    }
+    if ($ShowReceiveBlocklists){
+      $filter2= "(&(objectClass=goFaxRBlock)(|(cn=".$Regex.")(goFaxRBlocklist=".$Regex.")))";
+      $res2= get_list($filter2, "gofaxlist", $base,array("*"), $Flags);
+    }
+
+    $this->blocklists = array_merge($res,$res2);
+
+    /* appen && sort */
+    $tmp=array();
+    foreach($this->blocklists as $tkey => $val ){
+
+      $acl = $this->ui ->get_permissions($base,"gofaxlist/blocklist");
+      if(preg_match("/r/",$acl)){
+        $tmp[strtolower($val['cn'][0]).$val['cn'][0]]=$val;
+      }
+    }
+    ksort($tmp);
+    $this->blocklists=array();
+    foreach($tmp as $val){
+      $this->blocklists[]=$val;
+    }
+    reset ($this->blocklists);
+  }
+
+
+  /* Save data to object */
+  function save_object()
+  {
+    $this->DivListBlocklist->save_object();
+  }
+
+
+
+
+
+  function copyPasteHandling_from_queue($s_action,$s_entry)
+  {
+    /* Check if Copy & Paste is disabled */
+    if(!is_object($this->CopyPasteHandler)){
+      return("");
+    }
+
+    /* Add a single entry to queue */
+    if($s_action == "cut" || $s_action == "copy"){
+      /* Cleanup object queue */
+      $this->CopyPasteHandler->cleanup_queue();
+      $dn = $this->blocklists[$s_entry]['dn'];
+      $this->CopyPasteHandler->add_to_queue($dn,$s_action,"faxblocktabs","FAXBLOCKTABS","gofaxlist");
+    }
+
+    /* Add entries to queue */
+    if($s_action == "copy_multiple" || $s_action == "cut_multiple"){
+
+      /* Cleanup object queue */
+      $this->CopyPasteHandler->cleanup_queue();
+
+      /* Add new entries to CP queue */
+      foreach($this->list_get_selected_items() as $id){
+        $dn = $this->blocklists[$id]['dn'];
+
+        if($s_action == "copy_multiple"){
+          $this->CopyPasteHandler->add_to_queue($dn,"copy","faxblocktabs","FAXBLOCKTABS","gofaxlist");
+        }
+        if($s_action == "cut_multiple"){
+          $this->CopyPasteHandler->add_to_queue($dn,"cut","faxblocktabs","FAXBLOCKTABS","gofaxlist");
+        }
+      }
+    }
+
+    /* Start pasting entries */
+    if($s_action == "editPaste"){
+      $this->start_pasting_copied_objects = TRUE;
+    }
+
+    /* Return C&P dialog */
+    if($this->start_pasting_copied_objects && $this->CopyPasteHandler->entries_queued()){
+
+      /* Load entry from queue and set base */
+      $this->CopyPasteHandler->load_entry_from_queue();
+      $this->CopyPasteHandler->SetVar("base",$this->DivListBlocklist->selectedBase);
+
+      /* Get dialog */
+      $data = $this->CopyPasteHandler->execute();
+
+      /* Return dialog data */
+      if(!empty($data)){
+        return($data);
+      }
+    }
+
+    /* Automatically disable status for pasting */
+    if(!$this->CopyPasteHandler->entries_queued()){
+      $this->start_pasting_copied_objects = FALSE;
+    }
+    return("");
+  }
+
+}
+// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
+?>
diff --git a/gosa-plugins/gofax/gofax/blocklists/class_divListBlocklists.inc b/gosa-plugins/gofax/gofax/blocklists/class_divListBlocklists.inc
new file mode 100644 (file)
index 0000000..8b8a505
--- /dev/null
@@ -0,0 +1,291 @@
+<?php
+
+class divListBlocklist extends MultiSelectWindow
+{
+
+  /* Current base */
+  var $selectedBase       = "";
+  var $departments        = array();
+
+  /* Regex */
+  var $Regex              = "*";
+
+  /* checkboxes */
+  var $ShowSendBocklists      ;
+  var $ShowReceiveBlocklists  ;
+
+  /* Subsearch checkbox */
+  var $SubSearch;
+
+  var $parent             ;
+  var $ui                 ;
+
+  function divListBlocklist (&$config, &$parent)
+  {
+    MultiSelectWindow::MultiSelectWindow($config, "Blocklists", "gofaxlist");
+    
+    $this->parent       = $parent;
+    $this->ui           = get_userinfo();
+
+    /* Set list strings */
+    $this->SetTitle(_("List of blocklists"));
+    $this->SetSummary(_("List of blocklists"));
+
+    /* Result page will look like a headpage */
+    $this->SetHeadpageMode();
+    $this->SetInformation(_("This menu allows you to create, delete and edit selected blocklists. Having a large size of lists, you might prefer the range selectors on top of the select box."));
+
+    $this->EnableAplhabet   (true);
+  
+    /* Disable buttonsm */
+    $this->EnableCloseButton(false);
+    $this->EnableSaveButton (false);
+
+    /* Dynamic action col, depending on snapshot icons */
+    $action_col_size = 100;
+    if($this->parent->snapshotEnabled()){
+      $action_col_size += 20;
+    }
+
+    /* Toggle all selected / deselected */
+    $chk = "<input type='checkbox' id='select_all' name='select_all'
+               onClick='toggle_all_(\"^item_selected_[0-9]*$\",\"select_all\");' >";
+
+    /* set Page header */
+    $this->AddHeader(array("string"=> $chk,          "attach"=>"style='width:20px;'"));
+    $this->AddHeader(array("string" => "&nbsp;", "attach" => "style='text-align:center;width:20px;'"));
+    $this->AddHeader(array("string" => _("Blocklist name")." / "._("Department"), "attach" => "style=''"));
+    $this->AddHeader(array("string" => _("Actions"), "attach" => "style='width:".$action_col_size."px;border-right:0px;text-align:right;'" ));
+
+    /* Add Checkboxes / SubSearch checkbox */
+    $this->AddCheckBox("ShowSendBocklists"     , _("Select to see send blocklists"),    _("Show send blocklists"),true);
+    $this->AddCheckBox("ShowReceiveBlocklists" , _("Select to see receive blocklists"), _("Show receive blocklists"),true);
+  
+    $this->AddCheckBox(SEPERATOR);
+    $this->AddCheckBox("SubSearch",  _("Select to search within subtrees"), _("Search in subtrees"), false);
+
+    /*                  Name                 ,Text                              ,Default  , Connect with alphabet  */
+    $this->AddRegex   ("Regex",     _("Regular expression for matching list names"),"*" , true);
+  }
+
+
+  function GenHeader()
+  {
+    /* Prepare departments,
+       which are shown in the listbox on top of the listbox
+     */
+    $options= "";
+
+    /* Get all departments within this subtree */
+    $base = $this->config->current['BASE'];
+
+    /* Add base */
+    $tmp = array();
+    $tmp[] = array("dn"=>$this->config->current['BASE']);
+    $tmp=  array_merge($tmp,get_list("(&(|(ou=*)(description=*))(objectClass=gosaDepartment))", $this->module, $base,
+                    array("ou", "description"), GL_SIZELIMIT | GL_SUBSEARCH));
+
+    $deps = array();
+    foreach($tmp as $tm){
+      $deps[$tm['dn']] = $tm['dn'];
+    }
+
+    /* Load possible departments */
+    $ui= get_userinfo();
+    $tdeps= $ui->get_module_departments("gofaxlist");
+    $ids = $this->config->idepartments;
+    $first = "";
+    $found = FALSE;
+    foreach($ids as $dep => $name){
+      if(isset($deps[$dep]) && in_array_ics($dep, $tdeps)){
+
+        /* Keep first base dn in mind, we could need this
+         *  info if no valid base was found
+         */
+        if(empty($first)) {
+          $first = $dep['dn'];
+        }
+
+        $value = $ids[$dep];
+        if ($this->selectedBase == $dep){
+          $found = TRUE;
+          $options.= "<option selected='selected' value='".$dep."'>$value</option>";
+        } else {
+          $options.= "<option value='".$dep."'>$value</option>";
+        }
+      }
+    }
+
+    /* The currently used base is not visible with your acl setup.
+     * Set base to first useable base.
+     */
+    if(!$found){
+      $this->selectedBase = $first;
+    }
+  
+    /* Get acls */
+    $ui       = get_userinfo();
+    $acl      = $ui->get_permissions($this->selectedBase,"gofaxlist/blocklist");
+    $acl_all  = $ui->has_complete_category_acls($this->selectedBase,"gofaxlist");
+
+    /* Add default header */
+    $listhead = MultiSelectWindow::get_default_header();
+
+    /* Append department selector */
+    $listhead .= "&nbsp;"._("Base")."&nbsp;<select name='CurrentMainBase' onChange='mainform.submit()' class='center'>$options</select>".
+      " <input class='center' type='image' src='images/list_submit.png' align='middle' 
+          title='"._("Submit department")."' name='submit_department' alt='"._("Submit")."'>&nbsp;";
+
+    /* Create Layers menu */
+    $s  = ".|"._("Actions")."|\n";
+    $s .= "..|<img src='images/list_new.png' alt='' border='0' class='center'>".
+      "&nbsp;"._("Create")."|\n";
+
+    /* Append create options */
+    if(preg_match("/c/",$acl)) {
+      $s.= "...|<input class='center' type='image' src='images/list_new_blocklist.png' alt=''>".
+        "&nbsp;"._("Blocklist")."|goFaxBlocklist_new|\n";
+    }
+
+    /* Multiple options */
+    $s.= "..|---|\n";
+    $s.= "..|<img src='images/edittrash.png' alt='' border='0' class='center'>".
+      "&nbsp;"._("Remove")."|"."remove_multiple|\n";
+
+    /* Add multiple copy & cut icons */
+    if(is_object($this->parent->CopyPasteHandler) && preg_match("/(c.*w|w.*c)/",$acl_all)){
+      $s.= "..|---|\n";
+      $s.= "..|<img src='images/editcopy.png' alt='' border='0' class='center'>".
+        "&nbsp;"._("Copy")."|"."multiple_copy_systems|\n";
+      $s.= "..|<img src='images/editcut.png' alt='' border='0' class='center'>".
+        "&nbsp;"._("Cut")."|"."multiple_cut_systems|\n";
+
+      if($this->parent->CopyPasteHandler->entries_queued()){
+        $img = "<img border='0' class='center' src='images/editpaste.png' alt=''>";
+        $s.="..|".$img."&nbsp;"._("Paste")."|editPaste|\n";
+      }else{
+        $img = "<img border='0' class='center' src='images/cant_editpaste.png' alt=''>";
+        $s.="..|".$img."&nbsp;"._("Paste")."\n";
+      }
+    }
+
+    /* Add snapshot icons */
+    if(preg_match("/(c.*w|w.*c)/",$acl_all)){
+      $s .= "..|---|\n";
+      $s .= $this->get_snapshot_header(TRUE);
+    }
+
+    $this->SetDropDownHeaderMenu($s);
+
+    $this->SetListHeader($listhead);
+  }
+
+  function execute()
+  {
+    $this->ClearElementsList();
+    $this->GenHeader();
+  }
+
+  function setEntries($list)
+  {
+    // User and Template  Images
+    $blockimg = "<img class='center' src='images/list_blocklist.png' alt='User' title='%s'>";
+    $editlink = "<a href='?plug=".$_GET['plug']."&amp;id=%s&amp;act=edit_entry'>%s</a>";
+
+    /* Dynamic action col, depending on snapshot icons */
+    $action_col_size = 100;
+    if($this->parent->snapshotEnabled()){
+      $action_col_size += 20;
+    }
+
+    /* Append to list */
+    $ui = get_userinfo();
+    foreach($list as $key => $val){
+
+      $acl = $ui->get_permissions($val['dn'],"gofaxlist/blocklist");
+      if(!preg_match("/r/",$acl)){
+        continue;
+      }  
+
+      /* Edit link ; requires read access */
+      $action= "<input class='center' type='image' src='images/edit.png' alt='"._("edit")."'     name='goFaxBlocklist_edit_%KEY%' title='"._("Edit user")."'>";
+
+      
+      /* Create snapshot ; requires write access && create access */
+      if(preg_match("/w/",$acl) && preg_match("/c/",$acl)){
+        $action.= $this->GetSnapShotActions($val['dn']);
+      }
+     
+      /* Add copy & cut icons */
+      if(preg_match("/(c.*w|w.*c)/",$acl) && $this->parent->CopyPasteHandler){
+        $action .= "<input class='center' type='image'
+          src='images/editcut.png' alt='"._("cut")."' name='cut_%KEY%' title='"._("Cut this entry")."'>&nbsp;";
+        $action.= "<input class='center' type='image'
+          src='images/editcopy.png' alt='"._("copy")."' name='copy_%KEY%' title='"._("Copy this entry")."'>&nbsp;";
+      }
+
+      /* Delete entry ; requires remove access */
+      if(preg_match("/d/",$acl)){
+        $action.= "<input class='center' type='image' src='images/edittrash.png' alt='"._("delete")."' name='goFaxBlocklist_del_%KEY%' title='"._("Delete user")."'>";
+      }
+      
+      // Generate Array to Add
+      if(isset($val["description"][0])){
+        $display= $val["cn"][0]." [".$val["description"][0]."]";
+      }else{
+        $display= $val["cn"][0];
+      }
+
+      /* Cutted objects should be displayed in light grey */
+      if(isset($this->parent->CopyPasteHandler->queue) && is_array($this->parent->CopyPasteHandler->queue)){
+        foreach($this->parent->CopyPasteHandler->queue as $queue_key => $queue_data){
+          if($queue_data['dn'] == $val['dn']) {
+            $display = "<font color='#999999'>".$display."</font>";
+            break;
+          }
+        }
+      }
+
+      
+      /* Create each field */
+      $field0 = array("string" => "<input type='checkbox' id='item_selected_".$key."' name='item_selected_".$key."'>" ,
+                      "attach" => "style='width:20px;'");
+      $field1 = array("string" => sprintf($blockimg,$val['dn']), "attach" => "style='text-align:center;width:20px;'");
+      $field2 = array("string" => sprintf($editlink,$key,$display), "attach" => "style='' title='".preg_replace('/ /', '&nbsp;', @LDAP::fix($val['dn']))."'");
+      $field3 = array("string" => preg_replace("/%KEY%/", "$key", $action), "attach" => "style='width:".$action_col_size."px;border-right:0px;text-align:right;'");
+      $this->AddElement( array($field0,$field1,$field2,$field3));
+    }
+
+    /* Create summary string for list footer */
+    $num_deps=0;
+    if(!$this->SubSearch){
+      $num_deps = count($this->Added_Departments);
+    }
+    $num_objs = count($list);
+
+    $num_obj_str = _("Number of listed blocklists");
+    $num_dep_str = _("Number of listed departments");
+
+    $str = "<img class='center' src='images/list_blocklist.png'
+              title='".$num_obj_str."' alt='".$num_obj_str."'>&nbsp;".$num_objs."&nbsp;&nbsp;&nbsp;&nbsp;";
+    $str.= "<img class='center' src='images/folder.png'
+              title='".$num_dep_str."' alt='".$num_dep_str."'>&nbsp;".$num_deps."&nbsp;&nbsp;&nbsp;&nbsp;";
+
+    $this->set_List_Bottom_Info($str);
+
+  }
+
+  function Save()
+  {
+    MultiSelectWindow :: Save();  
+  }
+
+  function save_object()
+  {
+    /* Save automatic created POSTs like regex, checkboxes */
+    MultiSelectWindow :: save_object();   
+  }
+}
+// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
+?>
diff --git a/gosa-plugins/gofax/gofax/blocklists/generic.tpl b/gosa-plugins/gofax/gofax/blocklists/generic.tpl
new file mode 100644 (file)
index 0000000..df9f84a
--- /dev/null
@@ -0,0 +1,109 @@
+<h2><img class="center" alt="" align="middle" src="images/rightarrow.png"> {t}Generic{/t}</h2>
+<table summary="" style="width:100%; vertical-align:top; text-align:left;">
+
+ <tr>
+   <td style="width:50%; vertical-align:top;">
+    <table summary="">
+     <tr>
+      <td><LABEL for="cn">{t}List name{/t}</LABEL>{$must}</td>
+      <td>
+
+{render acl=$cnACL}
+       <input name="cn" id="cn" size=25 maxlength=60 value="{$cn}" title="{t}Name of blocklist{/t}">
+{/render}
+      </td>
+     </tr>
+     <tr>
+      <td><LABEL for="base">{t}Base{/t}</LABEL>{$must}</td>
+      <td>
+{render acl=$baseACL}
+      <select id="base" size="1" name="base" title="{t}Choose subtree to place group in{/t}">
+       {html_options options=$bases selected=$base}
+      </select>
+{/render}
+
+{render acl=$baseACL disable_picture='images/folder_gray.png'}
+        <input type="image" name="chooseBase" src="images/folder.png" class="center" title="{t}Select a base{/t}">
+{/render}
+      </td>
+     </tr>
+    </table>
+   </td>
+
+  <td style="border-left:1px solid #A0A0A0">
+   &nbsp;
+  </td>
+
+   <td style="vertical-align:top;">
+    <table summary="">
+     <tr>
+       <td><LABEL for="type">{t}Type{/t}</LABEL></td>
+       <td>
+{render acl=$typeACL}
+        <select size="1" id="type" name="type" title="{t}Select wether to filter incoming or outgoing calls{/t}">
+               {html_options options=$types selected=$type}
+               <option disabled>&nbsp;</option>
+        </select>
+{/render}
+        </td>
+      </tr>
+      <tr>
+       <td><LABEL for="description">{t}Description{/t}</LABEL></td>
+       <td>
+{render acl=$descriptionACL}
+         <input name="description" id="description" size=25 maxlength=80 value="{$description}" title="{t}Descriptive text for this blocklist{/t}">
+{/render}
+       </td>
+      </tr>
+    </table>
+   </td>
+ </tr>
+</table>
+
+<p class="plugbottom" style="margin-bottom:0px; padding:0px;">&nbsp;</p>
+
+<table summary="" style="width:100%">
+ <tr>
+   <td style="width:50%;">
+     <h2><img class="center" alt="" align="middle" src="images/false.png"> {t}Blocked numbers{/t}</h2>
+{render acl=$goFaxBlocklistACL}
+     <select style="width:100%; height:200px;" name="numbers[]" size=15 multiple>
+      {html_options values=$goFaxBlocklist output=$goFaxBlocklist}
+         <option disabled>&nbsp;</option>
+     </select>
+{/render}
+     <br>
+{render acl=$goFaxBlocklistACL}
+     <input id="number" name="number" size=25 maxlength=60 >&nbsp;
+{/render}
+{render acl=$goFaxBlocklistACL}
+     <input type=submit value="{t}Add{/t}" name="add_number">&nbsp;
+{/render}
+{render acl=$goFaxBlocklistACL}
+     <input type=submit value="{t}Delete{/t}" name="delete_number">
+{/render}
+   </td>
+  <td style="border-left:1px solid #A0A0A0">
+   &nbsp;
+  </td>
+   <td style="vertical-align:top;" >
+     <h2><img class="center" alt="" align="middle" src="images/info_small.png"> {t}Information{/t}</h2>
+     <p>
+      {t}Numbers can also contain wild cards.{/t}
+     </p>
+   </td>
+ </tr>
+</table>
+
+<p class="plugbottom">
+  <input type=submit name="edit_finish" style="width:80px" value="{t}Ok{/t}">
+  <input type=submit name="edit_apply" value="{t}Apply{/t}">
+  <input type=submit name="edit_cancel" value="{t}Cancel{/t}">
+</p>
+<input type='hidden' name='blocklist_posted' value="1">
+<!-- Place cursor -->
+<script language="JavaScript" type="text/javascript">
+  <!-- // First input field on page
+       focus_field('n');
+  -->
+</script>
diff --git a/gosa-plugins/gofax/gofax/blocklists/main.inc b/gosa-plugins/gofax/gofax/blocklists/main.inc
new file mode 100644 (file)
index 0000000..4a0f3c5
--- /dev/null
@@ -0,0 +1,35 @@
+<?php
+if ($remove_lock){
+        if(session::is_set('blocklist')){
+                $blocklist = session::get('blocklist');
+                del_lock ($ui->dn);
+                session::un_set ('blocklist');
+        }
+} else {
+       /* Create blocklist object on demand */
+       if (!session::is_set('blocklist') || (isset($_GET['reset']) && $_GET['reset'] == 1)){
+               $blocklist= new blocklist($config, $ui);
+               $blocklist->set_acl_category("gofaxlist");
+               session::set('blocklist',$blocklist);
+       }
+       $blocklist = session::get('blocklist');
+       $blocklist->save_object();
+       $output= $blocklist->execute();
+
+       /* Reset requested? */
+       if (isset($_GET['reset']) && $_GET['reset'] == 1){
+               del_lock ($ui->dn);
+               session::un_set ('blocklist');
+       }
+
+       /* Page header*/
+       if (session::is_set('objectinfo')){
+               $display= print_header(get_template_path('images/blocklists.png'), _("Blocklist management"), "<img alt=\"\"align=\"middle\" src=\"".get_template_path('images/closedlock.png')."\"> ".@LDAP::fix(session::get('objectinfo')));
+       } else {
+               $display= print_header(get_template_path('images/blocklists.png'), _("Blocklist management"));
+       }
+       $display.= $output;
+
+       session::set('blocklist',$blocklist);
+}
+?>
diff --git a/gosa-plugins/gofax/gofax/blocklists/paste_generic.tpl b/gosa-plugins/gofax/gofax/blocklists/paste_generic.tpl
new file mode 100644 (file)
index 0000000..ac4cef9
--- /dev/null
@@ -0,0 +1,8 @@
+<table summary="">
+ <tr>
+  <td><LABEL for="cn">{t}List name{/t}</LABEL></td>
+  <td>
+   <input name="cn" id="cn" size=25 maxlength=60 value="{$cn}" title="{t}Name of blocklist{/t}">
+  </td>
+ </tr>
+</table>
diff --git a/gosa-plugins/gofax/gofax/blocklists/remove.tpl b/gosa-plugins/gofax/gofax/blocklists/remove.tpl
new file mode 100644 (file)
index 0000000..ebea1e3
--- /dev/null
@@ -0,0 +1,24 @@
+<div style="font-size:18px;">
+ <img alt="" src="images/button_cancel.png" align=top>&nbsp;{t}Warning{/t}
+</div>
+<p>
+ {$info}
+ {t}Please double check if your really want to do this since there is no way for GOsa to get your data back.{/t}
+</p>
+
+<p>
+ {t}So - if you're sure - press 'Delete' to continue or 'Cancel' to abort.{/t}
+</p>
+
+<p class="plugbottom">
+       {if $multiple}
+               <input type=submit name="delete_multiple_blocklist_confirm" value="{t}Delete{/t}">
+               &nbsp;
+               <input type=submit name="delete_multiple_blocklist_cancel" value="{t}Cancel{/t}">
+       {else}
+               <input type=submit name="delete_blocklist_confirm" value="{t}Delete{/t}">
+               &nbsp;
+               <input type=submit name="delete_blocklist_cancel" value="{t}Cancel{/t}">
+       {/if}
+</p>
+
diff --git a/gosa-plugins/gofax/gofax/blocklists/tabs_blocklist.inc b/gosa-plugins/gofax/gofax/blocklists/tabs_blocklist.inc
new file mode 100644 (file)
index 0000000..32a6747
--- /dev/null
@@ -0,0 +1,38 @@
+<?php
+
+class faxblocktabs extends tabs
+{
+  function faxblocktabs($config, $data, $dn)
+  {
+    tabs::tabs($config, $data, $dn, 'gofaxlist');
+
+    /* Add references/acls/snapshots */
+    $this->addSpecialTabs();
+  }
+
+  function save($ignore_account= FALSE)
+  {
+    $baseobject= $this->by_object['blocklistGeneric'];
+
+    /* Check for new 'dn', in order to propagate the 'dn' to all plugins */
+    $new_dn= "cn=".$baseobject->cn.",".get_ou('blocklistou').$baseobject->base;
+
+    /* Move group? */
+    if ($this->dn != $new_dn){
+
+      /* Write entry on new 'dn' */
+      if ($this->dn != "new"){
+        $baseobject->move($this->dn, $new_dn);
+        $this->by_object['blocklistGeneric']= $baseobject;
+      }
+
+      /* Happen to use the new one */
+      $this->dn= $new_dn;
+    }
+
+    tabs::save();
+  }
+
+}
+// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
+?>
diff --git a/gosa-plugins/gofax/gofax/faxaccount/class_gofaxAccount.inc b/gosa-plugins/gofax/gofax/faxaccount/class_gofaxAccount.inc
new file mode 100644 (file)
index 0000000..63f22ce
--- /dev/null
@@ -0,0 +1,981 @@
+<?php
+
+class gofaxAccount extends plugin
+{
+  /* Definitions */
+  var $plHeadline= "FAX";
+  var $plDescription= "This does something";
+
+  /* CLI vars */
+  var $cli_summary= "Manage users fax account";
+  var $cli_description= "Some longer text\nfor help";
+  var $cli_parameters= array("eins" => "Eins ist toll", "zwei" => "Zwei ist noch besser");
+
+
+  /* Department list shown in the divSelectList*/
+  var $departments;
+
+  /* Fax attributes */
+  var $goFaxDeliveryMode= "";
+  var $facsimileTelephoneNumber= "";
+  var $goFaxIsEnabled= 1;
+  var $goFaxPrinter= "";
+  var $goFaxDivertNumber= "";
+  var $goFaxLanguage= "";
+  var $goFaxFormat= "";
+  var $goFaxRBlocklist = array();
+  var $goFaxRBlockgroups= array();
+  var $goFaxSBlocklist= array();
+  var $goFaxSBlockgroups= array();
+  var $mail= "";
+  var $facsimileAlternateTelephoneNumber= array();
+  var $fax_formats = array("pdf","ps","png","mtiff","tiff");  
+
+  /* Internal variables */
+  var $printerList= array();
+  var $has_mailAccount= FALSE;
+  var $locals_dialog= FALSE;
+  var $in_blocklist_dialog= FALSE;
+  var $out_blocklist_dialog= FALSE;
+  var $current_blocklist= array();
+  var $view_logged = FALSE;
+
+  /* Copy & paste variables */
+  var $CopyPasteVars=array("facsimileTelephoneNumber");//,"goFaxRBlocklist","goFaxRBlockgroups","goFaxSBlocklist","goFaxSBlockgroups");
+
+  /* attribute list for save action */
+  var $attributes= array("goFaxDeliveryMode", "goFaxIsEnabled","facsimileAlternateTelephoneNumber","goFaxRBlocklist","goFaxRBlockgroups","goFaxSBlocklist","goFaxSBlockgroups","goFaxPrinter", "goFaxDivertNumber", "goFaxLanguage", "goFaxFormat", "mail","facsimileTelephoneNumber");
+
+  var $uid ="";
+
+  var $objectclasses= array("goFaxAccount");
+
+  /* Enable multiple edit support */
+  var $multiple_support = TRUE;
+
+  function gofaxAccount (&$config, $dn= NULL)
+  {
+    /* General initialization */
+    plugin::plugin ($config, $dn);
+
+    /* Set uid, it is used in handle_post_events */
+    if(isset($this->attrs['uid'])){
+      $this->uid = $this->attrs['uid'][0];
+    }
+
+    /* Hickert : 11.11.05
+     * Added to be able to handle department selection in divSelelect
+     */
+    if(!session::is_set("Fax_Filter")){
+      $Fax_Filter = array();
+      $Fax_Filter['depselect'] = $this->config->current['BASE'];
+      session::set('Fax_Filter',$Fax_Filter);
+    }
+
+    if ($dn != "new"){
+      /* Get arrays */
+      foreach (array("goFaxRBlocklist", "goFaxRBlockgroups", "goFaxSBlocklist",
+            "goFaxSBlockgroups", "facsimileAlternateTelephoneNumber") as $val){
+        $this->$val =array();
+        if (isset($this->attrs["$val"]["count"])){
+          for ($i= 0; $i<$this->attrs["$val"]["count"]; $i++){
+            array_push($this->$val, $this->attrs["$val"][$i]);
+          }
+        }
+      }
+
+      /* Set up has_mailAccount */
+      if (in_array("gosaMailAccount", $this->attrs['objectClass'])){
+        $this->has_mailAccount= TRUE;
+      }
+    }
+
+    /* Load printer list */
+    $this->printerList=get_printer_list();
+
+    /* Check if the currently selected printer is still available. 
+       If not, append current printer to list of available.
+       It could be possible, that we are not allowed to view printers and so the list is empty ...  */
+    if(!empty($this->goFaxPrinter) && !isset($this->printerList[$this->goFaxPrinter])) {
+      $this->printerList[$this->goFaxPrinter] = "[".$this->goFaxPrinter."]";
+    }
+
+    /* Get global filter config */
+    if (!session::is_set("faxfilter")){
+      $ui= get_userinfo();
+      $base= get_base_from_people($ui->dn);
+      $faxfilter= array( "depselect"       => $base,
+          "fuser"            => "*",
+          "regex"           => "");
+      session::set("faxfilter", $faxfilter);
+    }
+  }
+
+  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);
+    }
+
+    /* Hickert : 11.11.05
+     * Added to be able to handle department selection in divSelelect
+     */
+    if((isset($_GET['act']))&&($_GET['act']=="dep_open")){
+
+      $Fax_Filter = session::get('Fax_Filter');
+      if(strlen(base64_decode($_GET['dep_id']))>= strlen($this->config->current['BASE'])){
+        $Fax_Filter['depselect']= base64_decode($_GET['dep_id']);
+      }else{
+        $Fax_Filter['depselect']= $this->config->current['BASE'];
+      }
+      session::set('Fax_Filter',$Fax_Filter);
+    }
+
+    /* Edit mode specifies if we are editing from my accout */
+    $edit_mode = (!is_object($this->parent) && !session::is_set('edit'));
+
+    /* Load smarty stuff */
+    $smarty= get_smarty();
+
+    /* Check if mail account is active. We'll display an additional
+       mail address field if this is not the case. Some people may
+       want goFax, but have a mailserver which is not managed with
+       GOsa */
+    if (!@isset($this->parent->by_object['mailAccount'])) {
+      $smarty->assign("has_mailaccount", $this->has_mailAccount?"true":"false");
+    } elseif ( !$this->parent->by_object['mailAccount']->is_account){
+      $smarty->assign("has_mailaccount", "false");
+      $this->has_mailAccount= false;
+    } else {
+      $smarty->assign("has_mailaccount", "true");
+    }
+
+
+    $display = "";
+    if(!$this->multiple_support_active){    
+
+      /* Do we need to flip is_account state? */
+      if (isset($_POST['modify_state'])){
+        $this->is_account= !$this->is_account;
+      }
+
+      /* Do we represent a valid account? */
+      if (!$this->is_account && $this->parent === NULL){
+        $display= "<img alt=\"\" src=\"images/stop.png\" align=\"middle\">&nbsp;<b>".
+          _("This account has no fax extensions.")."</b>";
+        $display.= back_to_main();
+        return ($display);
+      }
+
+      /* Show tab dialog headers */
+      $display= "";
+      if ($this->parent !== NULL){
+        if ($this->is_account){
+          $display= $this->show_disable_header(_("Remove fax account"),
+              _("This account has fax features enabled. You can disable them by clicking below."));
+        } else {
+          $display= $this->show_enable_header(_("Create fax account"),
+              _("This account has fax features disabled. You can enable them by clicking below."));
+          return ($display);
+        }
+      }
+    }
+
+    /* Trigger Add local fax alternatives dialog */
+    if (isset($_POST['add_local_alternate'])){
+      if($this->acl_is_writeable("facsimileAlternateTelephoneNumber",$edit_mode)){
+        $this->locals_dialog= TRUE;    
+        $this->dialog= TRUE;   
+      }
+    }
+
+    /* Add alternatives from dialog */
+    if (isset($_POST['add_locals_finish']) && isset($_POST['local_list'])){
+      if($this->acl_is_writeable("facsimileAlternateTelephoneNumber",$edit_mode)){
+        foreach ($_POST['local_list'] as $val){
+          $this->addAlternate($val);
+          $this->is_modified= TRUE;
+        }
+      }
+    }
+
+    /* Add alternatives */
+    if (isset($_POST['add_alternate']) && !empty($_POST['forward_address']) && tests::is_phone_nr($_POST['forward_address'])){ 
+      if($this->acl_is_writeable("facsimileAlternateTelephoneNumber",$edit_mode)){
+        $this->addAlternate($_POST['forward_address']);
+      }
+    }
+
+    /* Delete alternate fax number */
+    if (isset($_POST['delete_alternate']) && isset($_POST['alternate_list']) && count($_POST['alternate_list'])){ 
+      if($this->acl_is_writeable("facsimileAlternateTelephoneNumber",$edit_mode)){
+        $this->delAlternate ($_POST['alternate_list']);
+      }
+    }
+
+
+    /* Edit incoming blocklists */
+    if (isset($_POST['edit_incoming'])){
+      if($this->acl_is_writeable("goFaxRBlocklist",$edit_mode))  {
+        $this->current_blocklist= array_merge($this->goFaxRBlocklist,$this->goFaxRBlockgroups);
+        sort($this->current_blocklist);
+        reset($this->current_blocklist);
+
+        $this->in_blocklist_dialog= TRUE;
+        $this->dialog= TRUE;
+      }
+    }
+
+    /* Edit outgoing blocklists */
+    if (isset($_POST['edit_outgoing'])){
+      $this->current_blocklist= array_merge($this->goFaxSBlocklist,$this->goFaxSBlockgroups);
+      sort($this->current_blocklist);
+      reset($this->current_blocklist);
+
+      $this->out_blocklist_dialog= TRUE;
+      $this->dialog= TRUE;
+    }
+
+    /* Add number to blocklist (dialog) */
+    if (isset($_POST['add_blocklist_number']) && $_POST['block_number'] != ""){
+      if (!tests::is_phone_nr($_POST['block_number'])){
+        print_red (_("You're trying to add an invalid phone number."));
+      } else {
+        array_push($this->current_blocklist, $_POST['block_number']);
+        $this->current_blocklist= array_unique($this->current_blocklist);
+        sort($this->current_blocklist);
+        reset($this->current_blocklist);
+      }
+    }
+
+    /* Hickert : 11.11.05
+     * Add selection from divSelelect to our Blocklist 
+     */
+    /* Add list to blocklist */
+    if (isset($_POST['add_blocklist'])){
+      foreach($_POST as $name => $value){
+        if(preg_match("/ADDLIST_/i",$name)){
+          $this->current_blocklist= array_merge($this->current_blocklist, array(base64_decode($value)));
+
+        }
+      } 
+      $this->current_blocklist= array_unique($this->current_blocklist);
+      sort($this->current_blocklist);
+      reset($this->current_blocklist);
+    }
+
+    /* Add list to blocklist */
+    if (isset($_GET['add'])){
+      if(!is_array($this->current_blocklist)) $this->current_blocklist=array();
+      $this->current_blocklist= array_merge($this->current_blocklist, array( base64_decode($_GET['add'])));
+      $this->current_blocklist= array_unique($this->current_blocklist);
+      sort($this->current_blocklist);
+      reset($this->current_blocklist);
+    }
+
+    /* Delete from blocklist */
+    if (isset($_POST['delete_blocklist_number']) && isset($_POST['block_list'])){
+      $tmp= array();
+      foreach($this->current_blocklist as $val){
+        if (!in_array($val, $_POST['block_list'])){
+          $tmp[]= $val;
+        }
+      }
+      $this->current_blocklist= $tmp;
+    }
+
+
+    /* Blocklist edit finished */
+    if (isset($_POST['edit_blocklists_finish'])){
+
+      /* Incoming or outgoing? */
+      if ($this->in_blocklist_dialog){
+        $this->goFaxRBlocklist = array();
+        $this->goFaxRBlockgroups = array();
+
+        foreach ($this->current_blocklist as $val){
+          if (tests::is_phone_nr($val)){
+            $this->goFaxRBlocklist[]=$val;
+          } else {
+            $this->goFaxRBlockgroups[]= $val;
+          }
+        }
+      } else {
+        $this->goFaxSBlocklist = array();
+        $this->goFaxSBlockgroups = array();
+
+        /* Transfer values to ourself */
+        foreach ($this->current_blocklist as $val){
+          if (tests::is_phone_nr($val)){
+            $this->goFaxSBlocklist[]=$val;
+          } else {
+            $this->goFaxSBlockgroups[]= $val;
+          }
+        }
+      }
+      $this->is_modified= TRUE;
+    }
+
+
+    /* Set departments */
+    if ($this->locals_dialog || $this->in_blocklist_dialog || $this->out_blocklist_dialog){
+      
+      $list= array ();
+      $ldap= $this->config->get_ldap_link();
+      if (isset ($_POST['department'])){
+        $ldap->cd ($_POST['department']);
+      } else {
+        $ldap->cd ($this->config->current['BASE']);
+      }
+    }
+
+    /* Cancel  dialogs */
+    if (isset($_POST['add_locals_cancel']) || isset($_POST['edit_blocklists_finish']) ||
+        isset($_POST['edit_blocklists_cancel']) || isset($_POST['add_locals_finish'])){
+
+      $this->locals_dialog= FALSE;
+      $this->in_blocklist_dialog= FALSE;
+      $this->out_blocklist_dialog= FALSE;
+      $this->dialog= FALSE;
+    }
+
+    /* Manage locals dialog */
+    if ($this->locals_dialog){
+
+      /* Save data */
+      $faxfilter= session::get("faxfilter");
+      foreach( array("depselect", "fuser", "regex") as $type){
+        if (isset($_POST[$type])){
+          $faxfilter[$type]= $_POST[$type];
+        }
+      }
+      if (isset($_GET['search'])){
+        $s= mb_substr($_GET['search'], 0, 1, "UTF8")."*";
+        if ($s == "**"){
+          $s= "*";
+        }
+        $faxfilter['fuser']= $s;
+      }
+
+      if ($faxfilter['regex'] != '*' && $faxfilter['regex'] != ""){
+        $regex= $faxfilter['regex'];
+        $filter= "(facimileTelephoneNumber=$regex)";
+      } else {
+        $filter= "";
+      }
+      if ($faxfilter['fuser'] != ""){
+        $user= $faxfilter['fuser'];
+        $filter= "$filter(|(uid=$user)(cn=$user)(givenName=$user)(sn=$user))";
+      }
+
+      $base= $faxfilter['depselect'];
+      $res= get_list("(&(objectClass=goFaxAccount)$filter)", "gofax", $base, 
+                     array("sn", "givenName", "facsimileTelephoneNumber"), GL_SIZELIMIT | GL_SUBSEARCH);
+
+      foreach ($res as $attrs){
+        $list[$attrs['facsimileTelephoneNumber'][0]]=
+          $attrs['sn'][0].", ".
+          $attrs['givenName'][0]." [".
+          $attrs['facsimileTelephoneNumber'][0]."]";
+      }
+
+      /* Show dialog */
+      $smarty->assign("search_image", get_template_path('images/search.png'));
+      $smarty->assign("usearch_image", get_template_path('images/search_user.png'));
+      $smarty->assign("tree_image", get_template_path('images/tree.png'));
+      $smarty->assign("infoimage", get_template_path('images/info.png'));
+      $smarty->assign("launchimage", get_template_path('images/small_filter.png'));
+      $smarty->assign("departments", $this->config->idepartments);
+      $smarty->assign("list", $list);
+      if (isset($_POST['depselect'])){
+        $smarty->assign("depselect", $_POST['depselect']);
+      }
+      $smarty->assign("deplist", $this->config->idepartments);
+      $smarty->assign("apply", apply_filter());
+      $smarty->assign("alphabet", generate_alphabet());
+      $smarty->assign("hint", print_sizelimit_warning());
+      foreach( array("depselect", "fuser", "regex") as $type){
+        $smarty->assign("$type", $faxfilter[$type]);
+      }
+      $smarty->assign("hint", print_sizelimit_warning());
+
+      $display.= $smarty->fetch (get_template_path('locals.tpl', TRUE, dirname(__FILE__)));
+      return ($display);
+    }
+
+
+    /* Manage incoming blocklists */
+    if ($this->in_blocklist_dialog){
+
+      /* This handles the divSelectBox */
+
+      /* The base specifies the current position in the ldap tree 
+       * The current base was specified by $_GET['dep_id'] before. Or contains the default value.
+       */
+      $Fax_Filter = session::get('Fax_Filter');
+      $base = $Fax_Filter['depselect'];
+      $ldap->cd($base);
+
+      /* Ge all Blocklists */
+      $ldap->search ("(objectClass=goFaxRBlock)",array("cn","description"));
+      while ($attrs= $ldap->fetch()){
+
+        /* Generate list depending on description */
+        if(isset($attrs['description'][0])){
+          $list[$attrs['cn'][0]]=
+            $attrs['description'][0].
+            " [".$attrs['cn'][0]."]";
+        }else{
+          $list[$attrs['cn'][0]]= $attrs['cn'][0];
+        }
+      }
+
+      /* Create our divselect box */
+      $divSel = new divSelectBox("divSelectPredefined");
+      $divSel->setHeight(296);
+
+      /* NEW LIST MANAGMENT
+       * We also need to search for the departments
+       * So we are able to navigate like in konquerer
+       */
+      $this->departments= array();
+   
+      /* Get all departments within the current department */ 
+      $Fax_Filter = session::get('Fax_Filter');
+      $base = $Fax_Filter['depselect'];
+      $ldap->ls("(objectClass=gosaDepartment)",$base);
+
+      /* Base back is used to go one department up in our ldap tree */
+      $base_back = preg_replace("/^[^,]+,/","",$base);
+
+      /* Only show base_back if it is needed */
+      if((strlen($base_back)>= strlen($this->config->current['BASE']))&&($base!=$this->config->current['BASE'])){
+        $this->departments[preg_replace("/^[^,]+,/","",$base)] = ".. - ["._("back")."]"; 
+      }
+
+      /* Fetch all returned departments an add them to our divlist */
+      while($value = $ldap->fetch()){
+        if($value["description"][0]!=".."){
+          $this->departments[$value['dn']]=@LDAP::fix(convert_department_dn($value['dn'])." - [".$value["description"][0]."]");
+        }else{
+          $this->departments[$value['dn']]=$value["description"][0];
+        }
+      }
+      /* END NEW LIST MANAGMENT
+       */
+
+      // This links specifies the department open link 
+      $linkopen = "<a href='?plug=".$_GET['plug']."&amp;act=dep_open&amp;dep_id=%s'>%s</a>";
+
+      /* Insert departments in divsel */
+      foreach($this->departments as $key=> $val){
+        if(!isset($this->config->departments[trim($key)])){
+          $this->config->departments[trim($key)]="";
+        }
+        $field1 = array("string" => "<img src='images/folder.png' alt='department'>","attach"=>"style='width:16px;text-align:center;'");
+        $field2 = array("string" => sprintf($linkopen,base64_encode($key),$val),"attach"=>" style='border:none'");
+        $divSel->AddEntry(array($field1,$field2));
+      }
+
+      /* Append predefined Blocklists */
+      foreach($list as $entry => $value){
+        $divSel->AddEntry(array(
+              array("string"=>"<input type='checkbox' value='".base64_encode($entry)."' name='ADDLIST_".base64_encode($entry)."'>"),
+              array("string"=>$value,"attach"=>"style='border:0px;'")
+              ));
+      }
+
+      /* Show dialog */
+      $smarty->assign("cblocklist", $this->current_blocklist);
+      $smarty->assign("departments", $this->config->idepartments);
+      $smarty->assign("divSelectPredefined", $divSel->DrawList());
+      $display.= $smarty->fetch (get_template_path('lists.tpl', TRUE, dirname(__FILE__)));
+      return ($display);
+    }
+
+    /* Manage outgoing blocklists */
+
+    if ($this->out_blocklist_dialog){
+
+      /* This handles the divSelectBox */
+
+      /* The base specifies the current position in the ldap tree
+       * The current base was specified by $_GET['dep_id'] before. Or contains the default value.
+       */
+      $Fax_Filter = session::get('Fax_Filter');
+      $base = $Fax_Filter['depselect'];
+      $ldap->cd($base);
+
+      /* Ge all Blocklists */ 
+      $ldap->search ("(objectClass=goFaxSBlock)",array("cn","description"));
+      while ($attrs= $ldap->fetch()){
+        if(isset($attrs['description'][0])){
+          $list[$attrs['cn'][0]]=
+            $attrs['description'][0].
+            " [".$attrs['cn'][0]."]";
+        }else{
+          $list[$attrs['cn'][0]]= $attrs['cn'][0];
+        }
+      }
+
+      /*Create DivSel*/
+      $divSel = new divSelectBox("divSelectPredefined");
+      $divSel->setHeight(296);
+
+      /* NEW LIST MANAGMENT
+       * We also need to search for the departments
+       * So we are able to navigate like in konquerer
+       */
+      $this->departments= array();
+      $ldap->ls("(objectClass=gosaDepartment)",$base);
+
+      /* Generate Back url, and append if it is needed */
+      $base_back = preg_replace("/^[^,]+,/","",$base);
+      if((strlen($base_back)>= strlen($this->config->current['BASE']))&&($base!=$this->config->current['BASE'])){
+        $this->departments[preg_replace("/^[^,]+,/","",$base)] = ".. - ["._("back")."]";
+      }
+
+      /* Get all departments */
+      while($value = $ldap->fetch()){
+        if(isset($value["description"][0])){
+          $this->departments[$value['dn']]=@LDAP::fix(convert_department_dn($value['dn'])." - [".$value["description"][0]."]");
+        }else{
+          $this->departments[$value['dn']]=$value["description"][0];
+        }
+      }
+      /* END NEW LIST MANAGMENT
+       */
+
+      // Defining Links
+      $linkopen = "<a href='?plug=".$_GET['plug']."&amp;act=dep_open&amp;dep_id=%s'>%s</a>";
+
+      /* Insert departments in divlist*/
+      foreach($this->departments as $key=> $val){
+        if(!isset($this->config->departments[trim($key)])){
+          $this->config->departments[trim($key)]="";
+        }
+
+        $field1 = array("string" => "<img src='images/folder.png' alt='department'>","attach"=>"style='width:16px;text-align:center;'");
+        $field2 = array("string" => sprintf($linkopen,base64_encode($key),$val),"attach"=>" style='border:none'");
+        $divSel->AddEntry(array($field1,$field2));
+      }
+
+      /* Append Blocklits */
+      foreach($list as $entry => $value){
+        $divSel->AddEntry(array(
+              array("string"=>"<input type='checkbox' value='".base64_encode($entry)."' name='ADDLIST_".base64_encode($entry)."'>"),
+              array("string"=>$value,"attach"=>"style='border:0px;'")
+              ));
+      }
+
+      /* Show dialog */
+      $smarty->assign("cblocklist", $this->current_blocklist);
+      $smarty->assign("departments", $this->config->idepartments);
+      $smarty->assign("divSelectPredefined", $divSel->DrawList());
+      $display.= $smarty->fetch (get_template_path('lists.tpl', TRUE, dirname(__FILE__)));
+      return ($display);
+    }
+
+
+    /* Show main page */
+    $smarty->assign("languages", get_languages(TRUE));
+
+    $smarty->assign("formats",  $this->fax_formats);
+    $smarty->assign("printers", $this->printerList);
+
+    /* Load attributes */
+    foreach(array("goFaxIsEnabled", "goFaxDeliveryMode", "facsimileTelephoneNumber",
+          "goFaxPrinter", "goFaxLanguage", "goFaxFormat", 
+          "facsimileAlternateTelephoneNumber", "mail") as $val){
+
+      $smarty->assign("$val", $this->$val);
+    }
+
+    $tmp = $this->plInfo();
+    foreach($tmp['plProvidedAcls'] as $acl => $desc){
+      $smarty->assign($acl."ACL",$this->getacl($acl,$edit_mode));
+    }
+
+    /* Load checkboxes */
+    if ($this->goFaxIsEnabled == "1"){
+      $smarty->assign("goFaxIsEnabled", "");
+    } else {
+      $smarty->assign("goFaxIsEnabled", "checked");
+    }
+    /* goFaxAccount has "mail" as must! Block if no mailaddress is specified... */
+    if ($this->goFaxDeliveryMode & 32) {
+      $smarty->assign("faxtomail", "checked");
+    } else {
+      $smarty->assign("faxtomail", "");
+    }
+    if ($this->goFaxDeliveryMode & 64) {
+      $smarty->assign("faxtoprinter", "checked");
+    } else {
+      $smarty->assign("faxtoprinter", "");
+    }
+
+    foreach($this->attributes as $attr){
+      if(in_array($attr,$this->multi_boxes)) {
+        $smarty->assign("use_".$attr,TRUE);
+      }else{
+        $smarty->assign("use_".$attr,FALSE);
+      }
+    }
+    foreach(array("goFaxIsEnabled","edit_outgoing","edit_incoming","faxtomail","faxtoprinter") as $attr){
+      if(in_array($attr,$this->multi_boxes)) {
+        $smarty->assign("use_".$attr,TRUE);
+      }else{
+        $smarty->assign("use_".$attr,FALSE);
+      }
+    }
+  
+    $smarty->assign("multiple_support",$this->multiple_support_active);
+    $display.= $smarty->fetch (get_template_path('generic.tpl', TRUE, dirname(__FILE__)));
+    return ($display);
+  }
+
+  function remove_from_parent()
+  {
+    /* Cancel if there's nothing to do here */
+    if (!$this->initially_was_account){
+      return;
+    }
+
+    plugin::remove_from_parent();
+
+    /* Adapt mail settings if needed */
+    if ((isset($this->parent->by_object['mailAccount']->is_account)) && ($this->parent->by_object['mailAccount']->is_account)){
+      unset($this->attrs['mail']);
+    }
+
+    $ldap= $this->config->get_ldap_link();
+    $ldap->cd($this->dn);
+    $this->cleanup();
+    $ldap->modify ($this->attrs); 
+
+    new log("remove","users/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error());
+
+    show_ldap_error($ldap->get_error(), sprintf(_("Removing of user/fax account with dn '%s' failed."),$this->dn));
+
+    /* Optionally execute a command after we're done */
+    $this->handle_post_events('remove',array("uid"=> $this->uid));
+  }
+
+
+  /* Check formular input */
+  function check()
+  {
+    /* Call common method to give check the hook */
+    $message= plugin::check();
+
+    /* must: facsimileTelephoneNumber */
+    if ($this->facsimileTelephoneNumber == ""){
+      $message[]= _("The required field 'Fax' is not set.");
+    }
+
+    if (!tests::is_phone_nr($this->facsimileTelephoneNumber)){
+      $message[]= _("Please enter a valid telephone number in the 'Fax' field.");
+    }
+
+    /* IF mail is specified (which is only the case if there's no mail account
+       present), check if it's valid..  */
+    if (@isset($this->parent->by_object['mailAccount']) &&
+        $this->goFaxDeliveryMode & 32){
+      if ($this->mail == ""){
+        $message[]= _("Mail delivery is checked, but no address has been specified.");
+      } elseif (!tests::is_email($this->mail)){
+        $message[]= _("The mail address you've entered is invalid.");
+      }
+    }
+
+    // IE Fix, IE lets you choose disabled option, stupid browser ... 
+    if((empty($this->goFaxPrinter))&&($this->goFaxDeliveryMode & 64)){
+      $message[]= _("Deliver fax to printer, is only possible if valid printer is given. Please correct your choice.");
+    }
+
+    return ($message);
+  }
+
+  /* Save data to object */
+  function save_object()
+  {
+    $edit_mode = (!is_object($this->parent) && !session::is_set('edit'));
+    if (isset($_POST['faxTab'])){
+      plugin::save_object();
+
+
+      $tmp = 0+$this->goFaxDeliveryMode;
+
+      if($this->acl_is_writeable("faxtomail",$edit_mode)){
+        if (isset($_POST["faxtomail"]) && $_POST["faxtomail"] == 1){  
+          $tmp |= 32;
+        }elseif($tmp & 32){
+          $tmp &= (!32);
+        }
+      }
+      if($this->acl_is_writeable("faxtoprinter",$edit_mode)){
+        if (isset($_POST["faxtoprinter"]) && $_POST["faxtoprinter"] == 1){  
+          $tmp |= 64;
+        }elseif($tmp & 64){
+          $tmp &= !64;
+        }
+      }
+      $this->goFaxDeliveryMode = $tmp;
+
+      if($this->acl_is_writeable("goFaxIsEnabled",$edit_mode)){
+        if (isset($_POST["goFaxIsEnabled"]) && $_POST["goFaxIsEnabled"] == "1"){
+          $this->goFaxIsEnabled= "0";
+        } else {
+          $this->goFaxIsEnabled= "1";
+        }
+      }
+
+    
+      if (isset($_POST['mail']) && $this->acl_is_writeable("faxtomail",$edit_mode)){
+        $this->mail= $_POST['mail'];
+      }
+
+      /* Check if mail account is active and correct the internal
+         reference to represent the current status. */
+      if(isset($this->parent)){
+        if (isset($this->parent->by_object['mailAccount']->is_account)&&($this->parent->by_object['mailAccount']->is_account)){
+          $this->has_mailAccount= TRUE;
+        }
+      }
+    }
+
+  }
+
+
+  /* Save to LDAP */
+  function save()
+  {
+    plugin::save();
+
+    /* Save arrays */
+    foreach (array("goFaxRBlocklist", "goFaxRBlockgroups", "goFaxSBlocklist",
+          "goFaxSBlockgroups", "facsimileAlternateTelephoneNumber") as $val){
+
+      $this->attrs[$val]= $this->$val;
+    }
+
+    if(!$this->attrs['goFaxDeliveryMode']){
+      $this->attrs['goFaxDeliveryMode'] = 0;
+    }
+  
+    /* Do not save mail address ... it was possibly changed by mail plugin */
+    /* Adapt mail settings if needed */
+    if ((isset($this->parent->by_object['mailAccount']->is_account)) && ($this->parent->by_object['mailAccount']->is_account)){
+      unset($this->attrs['mail']);
+    }
+
+    /* 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/fax 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("mofidy",array("uid" => $this->uid));
+      }
+    } else {
+      $this->handle_post_events("add",array("uid" => $this->uid));
+    }
+
+  }
+
+
+  /* Adapt from template, using 'dn' */
+  function adapt_from_template($dn)
+  {
+    plugin::adapt_from_template($dn);
+
+    foreach (array("goFaxRBlocklist", "goFaxRBlockgroups", "goFaxSBlocklist",
+          "goFaxSBlockgroups", "facsimileAlternateTelephoneNumber") as $val){
+
+      if (isset($this->attrs[$val])){
+        $this->$val= $this->attrs[$val];
+      }
+    }
+  }
+
+
+
+  /* Add alternate fax recipient */
+  function addAlternate($number)
+  {
+    $this->facsimileAlternateTelephoneNumber[]= "$number";
+    $this->facsimileAlternateTelephoneNumber=
+      array_unique ($this->facsimileAlternateTelephoneNumber);
+
+    sort ($this->facsimileAlternateTelephoneNumber);
+    reset ($this->facsimileAlternateTelephoneNumber);
+  }
+
+  function delAlternate($numbers)
+  {
+    $this->facsimileAlternateTelephoneNumber= array_remove_entries ($numbers,
+        $this->facsimileAlternateTelephoneNumber);
+  }
+
+  function getCopyDialog()
+  {
+    $str    = "";
+    $smarty = get_smarty();
+    $smarty->assign("facsimileTelephoneNumber", $this->facsimileTelephoneNumber);
+    $str['string']   = $smarty->fetch(get_template_path("paste_generic.tpl",TRUE,dirname(__FILE__)));
+    $str['status'] ="";
+    return($str);
+  }
+
+  function SaveCopyDialog()
+  {
+    if(isset($_POST['facsimileTelephoneNumber'])){
+      $this->facsimileTelephoneNumber = $_POST['facsimileTelephoneNumber'];
+    }
+  }
+
+
+  /* Return plugin informations for acl handling 
+      #FIXME some attributes are still missing in this plugin acls */
+  static function plInfo()
+  {
+    return (array(  
+          "plShortName"     => _("Fax"),
+          "plDescription"   => _("Fax account settings"),
+          "plSelfModify"    => TRUE,
+          "plDepends"       => array("user"),
+          "plPriority"      => 6,             
+          "plSection"       => "personal",  
+          "plCategory"      => array("users"),
+          "plOptions"       => array(),
+
+          "plProvidedAcls"  => array(
+            "goFaxIsEnabled"                    => _("Enable/Disable fax"),
+            "goFaxRBlocklist"                   => _("Receive blocklist"),
+            "goFaxSBlocklist"                   => _("Send blocklist"),
+            "facsimileTelephoneNumber"          => _("Fax number"), // goFaxDeliveryMode
+            "facsimileAlternateTelephoneNumber" => _("Alternate fax number"), // goFaxDeliveryMode
+            "faxtomail"                         => _("Deliver fax as mail"),
+            "faxtoprinter"                      => _("Deliver fax to printer"),
+            "goFaxFormat"                       => _("Delivery format"),
+            "goFaxLanguage"                     => _("Language"))
+          ));
+  }
+
+  /* Multiple edit support 
+   */
+  
+  /* Execute */
+  function multiple_execute()
+  {
+    return($this->execute());
+  }
+
+  function multiple_save_object()
+  {
+    if (isset($_POST['faxTab'])){
+      plugin::multiple_save_object();
+      foreach(array("goFaxIsEnabled","edit_outgoing","edit_incoming","faxtomail","faxtoprinter") as $attr){
+        if(isset($_POST["use_".$attr])){
+          $this->multi_boxes[] = $attr;
+        }
+      }
+
+      $tmp = 0+$this->goFaxDeliveryMode;
+      if(in_array("faxtomail",$this->multi_boxes)){
+        if (isset($_POST["faxtomail"]) && $_POST["faxtomail"] == 1){
+          $tmp |= 32;
+        }elseif($tmp & 32){
+          $tmp &= (!32);
+        }
+      }
+      if(in_array("faxtoprinter",$this->multi_boxes)){
+        if (isset($_POST["faxtoprinter"]) && $_POST["faxtoprinter"] == 1){
+          $tmp |= 64;
+        }elseif($tmp & 64){
+          $tmp &= !64;
+        }
+      }
+      $this->goFaxDeliveryMode = $tmp;
+
+        if (isset($_POST["goFaxIsEnabled"]) && $_POST["goFaxIsEnabled"] == "1"){
+          $this->goFaxIsEnabled= "0";
+        } else {
+          $this->goFaxIsEnabled= "1";
+        }
+      if (isset($_POST['mail']) && in_array("mail",$this->multi_boxes)){
+        $this->mail= $_POST['mail'];
+      }
+    }
+  }
+
+  function get_multi_edit_values()
+  {
+    $ret = plugin::get_multi_edit_values();
+    if(in_array("goFaxIsEnabled",$this->multi_boxes)){
+      $ret['goFaxIsEnabled'] = $this->goFaxIsEnabled;
+    }
+    if(in_array("faxtoprinter",$this->multi_boxes)){
+      $ret['faxtoprinter'] = $this->goFaxDeliveryMode & 64;
+    }
+    if(in_array("faxtomail",$this->multi_boxes)){
+      $ret['faxtomail'] = $this->goFaxDeliveryMode & 32;
+    }
+
+    if(in_array("edit_incoming",$this->multi_boxes)){
+      $ret['goFaxRBlocklist'] = $this->goFaxRBlocklist;
+      $ret['goFaxRBlockgroups'] = $this->goFaxRBlockgroups;
+    }
+    if(in_array("edit_outgoing",$this->multi_boxes)){
+      $ret['goFaxSBlocklist'] = $this->goFaxSBlocklist;
+      $ret['goFaxSBlockgroups'] = $this->goFaxSBlockgroups;
+    }
+    return($ret);
+  }
+
+  function multiple_check()
+  {
+    $message = plugin::multiple_check();
+    return($message);
+  }
+
+  function set_multi_edit_values($values)
+  {
+    plugin::set_multi_edit_values($values);
+
+    if(isset($values['faxtoprinter'])){
+      if($values['faxtoprinter']){
+        $this->goFaxDeliveryMode |= 64;
+      }else{
+        $this->goFaxDeliveryMode &= !64;
+      }
+    }
+    if(isset($values['faxtomail'])){
+      if($values['faxtomail']){
+        $this->goFaxDeliveryMode |= 32;
+      }else{
+        $this->goFaxDeliveryMode &= !32;
+      }
+    }
+  }
+}
+
+// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
+?>
diff --git a/gosa-plugins/gofax/gofax/faxaccount/generic.tpl b/gosa-plugins/gofax/gofax/faxaccount/generic.tpl
new file mode 100644 (file)
index 0000000..eb98dbb
--- /dev/null
@@ -0,0 +1,152 @@
+<table summary="" style="width:100%; vertical-align:top; text-align:left;" cellpadding="0" border="0">
+
+ <!-- Headline container -->
+ <tr>
+   <td style="width:50%; vertical-align:top;">
+     <h2><img class="center" alt="" align="middle" src="images/rightarrow.png" />&nbsp;{t}Generic{/t}</h2>
+
+     <table summary="">
+       <tr>
+         <td><label for="facsimileTelephoneNumber">{t}Fax{/t}</label>{$must}</td>
+         <td>
+{if $multiple_support}
+       <input name="dummy1" value="{t}Multiple edit{/t}" disabled id="facsimileTelephoneNumber">
+{else}
+{render acl=$facsimileTelephoneNumberACL}
+           <input name="facsimileTelephoneNumber" id="facsimileTelephoneNumber" size=20 maxlength=65
+               value="{$facsimileTelephoneNumber}" title="{t}Fax number for GOfax to trigger on{/t}">
+{/render}
+{/if}
+
+         </td>
+       </tr>
+       <tr>
+         <td><label for="goFaxLanguage">{t}Language{/t}</label></td>
+        <td>
+
+{render acl=$goFaxLanguageACL checkbox=$multiple_support checked=$use_goFaxLanguage}
+           <select size="1" name="goFaxLanguage" id="goFaxLanguage" 
+               title="{t}Specify the GOfax communication language for fax to mail gateway{/t}">
+                       {html_options options=$languages selected=$goFaxLanguage}
+           </select>
+{/render}
+
+         </td>
+       </tr>
+       <tr>
+         <td><label for="goFaxFormat">{t}Delivery format{/t}</label></td>
+         <td>
+
+{render acl=$goFaxFormatACL checkbox=$multiple_support checked=$use_goFaxFormat}
+           <select id="goFaxFormat" size="1" name="goFaxFormat" title="{t}Specify delivery format for fax to mail gateway{/t}">
+           {html_options values=$formats output=$formats selected=$goFaxFormat}
+           </select>
+{/render}
+         </td>
+       </tr>
+     </table>
+     
+   </td>
+   <td style="border-left:1px solid #A0A0A0">
+    &nbsp;
+   </td>
+   <td style="vertical-align:top; width:100%">
+     <h2><img class="center" alt="" align="middle" src="images/printer.png" />&nbsp;{t}Delivery methods{/t}</h2>
+
+{render acl=$goFaxIsEnabledACL checkbox=$multiple_support checked=$use_goFaxIsEnabled}
+     <input type=checkbox name="goFaxIsEnabled" value="1" {$goFaxIsEnabled} class="center">
+{/render}
+     {t}Temporary disable fax usage{/t}<br>
+
+     {if $has_mailaccount eq "false"}
+{render acl=$faxtomailACL checkbox=$multiple_support checked=$use_faxtomail}
+     <input type=checkbox name="faxtomail" value="1" {$faxtomail} class="center">
+{/render}
+      <label for="mail">{t}Deliver fax as mail to{/t}</label>&nbsp;
+{render acl=$faxtomailACL checkbox=$multiple_support checked=$use_mail}
+      <input name="mail" id="mail" size=25 maxlength=65 value="{$mail}" class="center">
+{/render}
+     {else}
+{render acl=$faxtomailACL checkbox=$multiple_support checked=$use_faxtomail}
+     <input type=checkbox name="faxtomail" value="1" {$faxtomail} class="center">
+{/render}
+      {t}Deliver fax as mail{/t}
+     {/if}
+     <br>
+
+{render acl=$faxtoprinterACL checkbox=$multiple_support checked=$use_faxtoprinter}
+     <input type=checkbox name="faxtoprinter" value="1" {$faxtoprinter} class="center">
+{/render}
+     {t}Deliver fax to printer{/t}&nbsp;
+{render acl=$faxtoprinterACL checkbox=$multiple_support checked=$use_goFaxPrinter}
+     <select size="1" name="goFaxPrinter">
+      {html_options options=$printers selected=$goFaxPrinter}
+               <option disabled>&nbsp;</option>
+     </select>
+{/render}
+   </td>
+ </tr>
+</table>
+
+<p class="seperator">&nbsp;</p>
+
+<table summary="" style="width:100%; vertical-align:top; text-align:left;" cellpadding=4 border=0>
+  <tr>
+    <td style="width:50%; border-right:1px solid #A0A0A0">
+
+       {if !$multiple_support}
+
+    <h2><img class="center" alt="" align="middle" src="images/fax_small.png">&nbsp;{t}Alternate fax numbers{/t}</h2>
+{render acl=$facsimileAlternateTelephoneNumberACL}
+    <select style="width:100%" name="alternate_list[]" size="10" multiple>
+                       {html_options values=$facsimileAlternateTelephoneNumber output=$facsimileAlternateTelephoneNumber}
+                       <option disabled>&nbsp;</option>
+    </select>
+{/render}
+    <br>
+{render acl=$facsimileAlternateTelephoneNumberACL}
+    <input name="forward_address" size=20 align="middle" maxlength=65 value="">
+{/render}
+{render acl=$facsimileAlternateTelephoneNumberACL}
+    <input type=submit value="{t}Add{/t}" name="add_alternate">&nbsp;
+{/render}
+{render acl=$facsimileAlternateTelephoneNumberACL}
+    <input type=submit value="{t}Add local{/t}" name="add_local_alternate" >&nbsp;
+{/render}
+{render acl=$facsimileAlternateTelephoneNumberACL}
+    <input type=submit value="{t}Delete{/t}" name="delete_alternate">
+{/render}
+       {/if}
+   </td>
+   <td style="vertical-align:top; width:50%">
+      <h2><img class="center" alt="" align="middle" src="images/false.png" />&nbsp;{t}Blocklists{/t}</h2>
+      <table summary="" style="width:100%">
+        <tr>
+          <td>{t}Blocklists for incoming fax{/t}</td>
+          <td>
+{render acl=$goFaxRBlocklistACL checkbox=$multiple_support checked=$use_edit_incoming}
+            <input type=submit name="edit_incoming" value="{t}Edit{/t}">
+{/render}
+          </td>
+        </tr>
+        <tr>
+          <td>{t}Blocklists for outgoing fax{/t}</td>
+          <td>
+{render acl=$goFaxSBlocklistACL checkbox=$multiple_support checked=$use_edit_outgoing}
+            <input type=submit name="edit_outgoing" value="{t}Edit{/t}">
+{/render}
+          </td>
+        </tr>
+      </table>
+    </td>
+  </tr>
+</table>
+
+<input type="hidden" name="faxTab" value="faxTab">
+
+<!-- Place cursor -->
+<script language="JavaScript" type="text/javascript">
+  <!-- // First input field on page
+       focus_field('facsimileTelephoneNumber');
+  -->
+</script>
diff --git a/gosa-plugins/gofax/gofax/faxaccount/lists.tpl b/gosa-plugins/gofax/gofax/faxaccount/lists.tpl
new file mode 100644 (file)
index 0000000..5817e6c
--- /dev/null
@@ -0,0 +1,35 @@
+
+<table summary="" style="width:100%; vertical-align:top; text-align:left;" cellpadding=4 border=0>
+ <tr>
+  <td style="vertical-align:top;width:50%;border-right:1px solid #A0A0A0"> 
+   <b>{t}Blocked numbers/lists{/t}</b>
+   <br> 
+   <select style="width:100%; height:300px;" name="block_list[]" size=15 multiple>
+           {html_options values=$cblocklist output=$cblocklist}
+               <option disabled>&nbsp;</option>
+   </select>
+   <br>
+   <input name="block_number" size=25 align="middle" maxlength=30 value="">
+   <input type=submit value="{t}Add{/t}" name="add_blocklist_number" >&nbsp;
+   <input type=submit value="{t}Delete{/t}" name="delete_blocklist_number" >
+  </td>
+  <td>
+       <b>{t}List of predefined blocklists{/t}</b><br>
+       <table style="width:100%;height:300px;" summary="">
+               <tr>
+                       <td valign="top">
+                                       {$divSelectPredefined}
+                       </td>
+               </tr>
+       </table>
+   <input type=submit value="{t}Add the list to the blocklists{/t}" name="add_blocklist"><br>
+  </td>
+ </tr>
+</table>
+
+<p class="plugbottom">
+  <input type=submit name="edit_blocklists_finish" value="{t}Apply{/t}">
+  &nbsp;
+  <input type=submit name="edit_blocklists_cancel" value="{t}Cancel{/t}">
+</p>
+
diff --git a/gosa-plugins/gofax/gofax/faxaccount/locals.tpl b/gosa-plugins/gofax/gofax/faxaccount/locals.tpl
new file mode 100644 (file)
index 0000000..ebf9a89
--- /dev/null
@@ -0,0 +1,64 @@
+<table summary="" style="width:100%; vertical-align:top; text-align:left;" cellpadding=4>
+<tr>
+  <td style="vertical-align:top; width:600px">
+   <div class="contentboxh" style="height:20px;">
+    <p class="contentboxh" style="font-size:12px">
+     <b>{t}Select numbers to add{/t} {$hint}</b><br>
+    </p>
+   </div>
+   <div class="contentboxb">
+    <p class="contentboxb" style="border-top:1px solid #B0B0B0;background-color:#F8F8F8">
+     <select style="width:100%; margin-top:4px; height:450px;" name="local_list[]" size="15" multiple>
+       {html_options options=$list}
+     </select>
+    </p>
+   </div>
+  </td>
+  <td style="vertical-align:top;">
+   <div class="contentboxh" style="height:20px;">
+    <p class="contentboxh" style="font-size:12px"><img src="{$launchimage}" align="right" alt="[F]"><b>{t}Filters{/t}</b></p>
+   </div>
+   <div class="contentboxb"  style="background-color:#F8F8F8">
+     <table summary="" style="width:100%;border-top:1px solid #B0B0B0; background-color:#F8F8F8">
+      {$alphabet}
+     </table>
+    <table summary="" width="100%" style="border-top:1px solid #B0B0B0;background-color:#F8F8F8">
+               <tr>
+                       <td>
+                               <img class="center" alt="" src="{$tree_image}" align="middle" title="{t}Display numbers of department{/t}">&nbsp;
+                               <select name="depselect" size="1" onChange="mainform.submit()" title="{t}Choose the department the search will be based on{/t}">
+                             {html_options options=$deplist selected=$depselect}
+                           </select>
+                       </td>
+               </tr>
+       </table>
+    <table summary="" width="100%" style="border-top:1px solid #B0B0B0;background-color:#F8F8F8">
+               <tr>
+                       <td width="18">
+                               <img class="center" alt="" src="{$search_image}" align="middle" title="{t}Display numbers matching{/t}">
+                       </td>
+               <td>
+                               <input type='text' name='regex' maxlength='20' value='{$regex}' style="width:99%" title='{t}Regular expression for matching numbers{/t}' onChange="mainform.submit()">  </td>
+               </tr>
+       </table>
+    <table summary="" width="100%" style="border-top:1px solid #B0B0B0;background-color:#F8F8F8">
+               <tr>
+                       <td width="18">
+                               <img class="center" alt="" src="{$usearch_image}" align="middle" title="{t}Display numbers of user{/t}">
+                       </td>
+                   <td>
+                               <input type='text' name='fuser' style="width:99%" maxlength='20' value='{$fuser}' title='{t}User name of which numbers are shown{/t}' onChange="mainform.submit()">     </td>
+               </tr>
+       </table>
+   {$apply}
+   </div>
+  </td>
+</tr>
+</table>
+
+<p class="plugbottom">
+  <input type=submit name="add_locals_finish" value="{t}Add{/t}">
+  &nbsp;
+  <input type=submit name="add_locals_cancel" value="{t}Cancel{/t}">
+</p>
+
diff --git a/gosa-plugins/gofax/gofax/faxaccount/main.inc b/gosa-plugins/gofax/gofax/faxaccount/main.inc
new file mode 100644 (file)
index 0000000..54a7bda
--- /dev/null
@@ -0,0 +1,112 @@
+<?php
+
+$display  ="";
+$lock_msg = "";
+
+if (!$remove_lock){
+
+       /* Reset requested? */
+       if (isset($_POST['edit_cancel']) ||
+               (isset($_GET['reset']) && $_GET['reset'] == 1)){
+
+               del_lock ($ui->dn);
+               session::un_set ('edit');
+               session::un_set ('gofaxAccount');
+       }
+
+       /* Create gofaxAccount object on demand */
+       if (!session::is_set('gofaxAccount') || (isset($_GET['reset']) && $_GET['reset'] == 1)){
+               $gofaxAccount= new gofaxAccount ($config, $ui->dn);
+               $gofaxAccount->set_acl_base($ui->dn);
+               $gofaxAccount->set_acl_category("users");
+               session::set('gofaxAccount',$gofaxAccount);
+       }
+       $gofaxAccount = session::get('gofaxAccount');
+
+       /* save changes back to object */
+       if (session::is_set('edit')){
+               $gofaxAccount->save_object ();
+       }
+
+       /* Enter edit mode? */
+       if (isset($_POST['edit'])){
+
+               /* Check locking */
+               if (($username= get_lock($ui->dn)) != ""){
+                       session::set('back_plugin',$plug);
+                       session::set('LOCK_VARS_TO_USE',array("/^edit$/","/^plug$/"));
+                       $lock_msg =  gen_locked_message ($username, $ui->dn);
+
+               }else{
+
+                       /* Lock the current entry */
+                       add_lock ($ui->dn, $ui->dn);
+                       session::set('dn',$ui->dn);
+                       session::set('edit',TRUE);
+               }
+       }
+
+       /* save changes to LDAP and disable edit mode */
+       if (isset($_POST['edit_finish'])){
+
+                /* Perform checks */
+                $message= $gofaxAccount->check ();
+
+                /* No errors, save object */
+                if (count ($message) == 0){
+                        $gofaxAccount->save ();
+                        del_lock ($ui->dn);
+                        session::un_set ('edit');
+
+                } else {
+                        /* Errors found, show message */
+                        show_errors ($message);
+                }
+        }
+
+       /* Execute formular */
+       if($lock_msg){
+               $display.= $lock_msg;
+       }else{
+               $display.= $gofaxAccount->execute ();
+       }
+
+       $info= "";
+
+       /* Store changes  in session */
+       if (session::is_set('edit')){
+               session::set('gofaxAccount',$gofaxAccount);
+       }
+
+       /* Show page footer depending on the mode */
+       if (!$gofaxAccount->locals_dialog &&
+               !$gofaxAccount->out_blocklist_dialog &&
+               !$gofaxAccount->in_blocklist_dialog &&
+               $gofaxAccount->is_account       && 
+               empty($lock_msg)){
+
+               $display.= "<p class=\"plugbottom\">\n";
+
+               /* Are we in edit mode? */
+               if (session::is_set('edit')){
+                       $display.= "<input type=submit name=\"edit_finish\" style=\"width:80px\" value=\""._("Ok")."\">\n";
+                       $display.= "&nbsp;\n";
+                       $display.= "<input type=submit name=\"edit_cancel\" value=\""._("Cancel")."\">\n";
+                       $info= "<img alt='' align=\"middle\" src=\"".get_template_path('images/closedlock.png')."\"> ".$ui->dn."&nbsp;";
+               } else {
+                       $info= "<img alt=\"\" align=\"middle\" src=\"".get_template_path('images/openlock.png')."\"> ".$ui->dn."&nbsp;";
+
+                       if(preg_match("/w/",$ui->get_permissions($ui->dn,"users/gofaxAccount"))){
+                               $info.= "<img alt=\"\" align=\"middle\" src=\"".get_template_path('images/lamp.png')."\">"._("Click the 'Edit' button below to change informations in this dialog");
+                               $display.= "<input type=submit name=\"edit\" value=\""._("Edit")."\">";
+                       }
+                       $display.= "<input type=\"hidden\" name=\"ignore\">\n";
+               }
+               $display.= "</p>";
+       }
+       
+       /* Page header*/
+       $display= print_header(get_template_path('images/fax.png'), _("FAX settings"), $info).$display;
+
+}
+?>
diff --git a/gosa-plugins/gofax/gofax/faxaccount/paste_generic.tpl b/gosa-plugins/gofax/gofax/faxaccount/paste_generic.tpl
new file mode 100644 (file)
index 0000000..6efca1d
--- /dev/null
@@ -0,0 +1,31 @@
+<table summary="" style="width:100%; vertical-align:top; text-align:left;" cellpadding="0" border="0">
+       <tr>
+               <td style="width:50%; vertical-align:top;">
+               <h2><img class="center" alt="" align="middle" src="images/rightarrow.png" />&nbsp;{t}Generic{/t}</h2>
+               <table summary="">
+                               <tr>
+                               <td>
+                                       <label for="facsimileTelephoneNumber">{t}Fax{/t}</label>{$must}
+                               </td>
+                               <td>
+                                       <input name="facsimileTelephoneNumber" id="facsimileTelephoneNumber" 
+                                                       size=40 maxlength=65 value="{$facsimileTelephoneNumber}" 
+                                                       title="{t}Fax number for GOfax to trigger on{/t}">
+                               </td>
+                               </tr>
+                        <tr>
+                                <td colspan=2>
+                                      {t}Alternate fax numbers will not be copied{/t}
+                                </td>
+                        </tr>
+
+                       </table>
+               </td>
+       </tr>
+</table>
+<!-- Place cursor -->
+<script language="JavaScript" type="text/javascript">
+  <!-- // First input field on page
+       focus_field('facsimileTelephoneNumber');
+  -->
+</script>
diff --git a/gosa-plugins/gofax/gofax/faxreports/class_faxreport.inc b/gosa-plugins/gofax/gofax/faxreports/class_faxreport.inc
new file mode 100644 (file)
index 0000000..1292b1a
--- /dev/null
@@ -0,0 +1,507 @@
+<?php
+
+class faxreport extends plugin
+{
+  /* Definitions */
+  var $plHeadline     = "FAX Reports";
+  var $plDescription  = "This does something";
+
+  /* For internal use */
+  var $start          = 0;
+  var $search_for     = "*";
+  var $search_base    = "";
+  var $year           = "";
+  var $month          = "";
+  var $sort           = 1;
+  var $sort_direction = "down";
+  var $report_list    = array();
+  var $ui             = NULL;
+  var $range          = 20;
+  var $view_logged = FALSE;
+
+  /* Constant stuff */
+  var $status= array( "SENT", "MAILED", "SERROR", "RERROR", "SBLOCK", "RBLOCK",
+      "DELETED", "REQUEUED", "DISABLED", "PRINTED", "DIVERTED",
+      "UNDEFINED", "UNDEFINED", "UNDEFINED", "UNDEFINED",
+      "UNDEFINED");
+  var $fields= array("uid", "queuing_time", "status", "sender_id", "receiver_id", "pages");
+
+  /* these vars will be stored in session to be able to remember last search config */
+  var $attributes_SO= array("search_for","search_base","month","year","start","year","month","sort","sort_direction","range");
+  var $objectclasses= array();
+  var $fax_users    = array();
+
+
+  /* Create class */
+  function faxreport (&$config, &$ui)
+  {
+    /* Include config object */
+    $this->config       = $config;
+    $this->ui           = &$ui;
+    $this->search_base  = get_base_from_people($ui->dn);
+    $this->year         = date("Y");
+    $this->month        = date("m");
+
+    /* Get global filter config and set class vars , 
+       or create a filter */
+    if (!session::is_set("faxreportfilter")){
+      $faxreportfilter = array();
+      foreach($this->attributes_SO as $name){
+        $faxreportfilter[$name] = $this->$name;
+      } 
+      session::set("faxreportfilter",$faxreportfilter);
+    }else{
+      $faxreportfilter = session::get("faxreportfilter");
+      foreach($this->attributes_SO as $name){
+        $this->$name = $faxreportfilter[$name];
+      }
+    }
+  }
+
+  
+  /* Create Filter & Search & Display results */
+  function execute()
+  {
+    /* Call parent execute */
+    plugin::execute();
+
+    /* Log view */
+    if(!$this->view_logged){
+      $this->view_logged = TRUE;
+      new log("view","users/".get_class($this),$this->dn);
+    }
+
+    /************ 
+      Variable initialisation 
+     ************/
+    /* Create months */ 
+    $months= array();
+    for($i = 1 ; $i <= 12 ; $i ++ ){
+      $months[$i] = _(date("F",gmmktime(0,0,0,$i,1)));
+    }
+
+    /* Create years */
+    $current= date("Y");
+    $years= array();
+    for ($y= $current - 5; $y<=$current; $y++){
+      $years[]= $y;
+    }
+
+    
+    /************ 
+      Set smarty defaults  
+     ************/
+
+    $smarty= get_smarty();
+    $smarty->assign("launchimage"              , get_template_path('images/launch.png'));
+    $smarty->assign("search_image"  , get_template_path('images/search.png'));
+    $smarty->assign("search_for"               , $this->search_for);
+    $smarty->assign("bases"                              , $this->config->idepartments);
+    $smarty->assign("base_select"              , $this->search_base);
+    $smarty->assign("months"                     , $months);
+    $smarty->assign("month_select"     , $this->month);
+    $smarty->assign("years"                              , $years);
+    $smarty->assign("year_select"              , $this->year);
+    $smarty->assign("search_result"    , "");
+
+    
+    /************ 
+      Check database accessibility 
+     ************/
+
+    /* Some checks */
+    if(!isset($this->config->data['SERVERS']['FAX'])){
+      print_red(_("No fax extension defined in your server configuration, no reports can be shown!"));
+      return($smarty->fetch(get_template_path('contents.tpl', TRUE)));
+    }elseif(!is_callable("mysql_connect")){
+      print_red(_("There is no mysql extension available, please check your php setup."));
+      return($smarty->fetch(get_template_path('contents.tpl', TRUE)));
+    }else{
+      /* Connecting, selecting database */
+      $cfg     = $this->config->data['SERVERS']['FAX'];
+      $link    = @mysql_pconnect($cfg['SERVER'], $cfg['LOGIN'], $cfg['PASSWORD']);
+      if ($link === FALSE){
+        print_red(_("Can't connect to fax database, no reports can be shown!"));
+        return($smarty->fetch(get_template_path('contents.tpl', TRUE)));
+      }
+      if (! @mysql_select_db("gofax")){
+        print_red(_("Can't select fax database for report generation!"));
+        return($smarty->fetch(get_template_path('contents.tpl', TRUE)));
+      }
+
+      if (! mysql_query("SELECT * FROM faxlog;")){
+        print_red(_("Can't query fax table 'faxlog' for report generation!"));
+        return($smarty->fetch(get_template_path('contents.tpl', TRUE)));
+      }
+    }          
+
+    
+    /************ 
+      Perform a deatil view 
+     ************/
+
+    /* Do detail view? */
+    if (isset($_GET['detail'])){
+
+      /* Create query */
+      $query = "SELECT id,uid,date_format(queuing_time, '%Y%m%d%H%i%s') as queuing_time,status,sender_id,sender_msn,receiver_id,".
+        "receiver_msn,pages,status_message,transfer_time FROM faxlog WHERE id=".$_GET['detail'].";";
+
+      /* Connecting, selecting database */
+      $cfg= $this->config->data['SERVERS']['FAX'];
+
+      /* Check if everything went ok*/
+      $result = @mysql_query($query);
+      if ($result === false){
+        print_red(_("Query for fax database failed!"));
+        @DEBUG (DEBUG_MYSQL, __LINE__, __FUNCTION__, __FILE__,$query, "Database query failed");
+        return($smarty->fetch(get_template_path('contents.tpl', TRUE)));
+      }
+
+      $line = mysql_fetch_array($result, MYSQL_ASSOC);
+      mysql_close($link);
+
+      if (!preg_match ("/'".$line["uid"]."'/", $this->userfilter)){
+        print_red (_("You have no permission to retrieve informations about this fax id!"));
+        return($smarty->fetch(get_template_path('contents.tpl', TRUE)));
+      }
+
+      /* Check acls */
+      $fax_uids = array_flip($this->fax_users);
+      $uid = $line['uid'];
+      $dn = $fax_uids[$uid];
+      $acls = $this->ui->get_permissions($dn,"faxreport/faxreport");
+      if(!preg_match("/r/",$acls)){
+        print_red (_("You have no permission to retrieve informations about this fax id!"));
+        return($smarty->fetch(get_template_path('contents.tpl', TRUE)));
+      }
+
+      $parts= array( "id", "uid", "queuing_time", "status", "sender_id", "sender_msn",
+          "receiver_id", "receiver_msn", "pages", "status_message", "transfer_time" );
+
+      foreach ($parts as $vname) {
+
+        $final="fax_$vname";
+        if($vname != "uid"){
+          $v_acl = $this->ui->get_permissions($dn,"faxreport/faxreport",preg_replace("/_/","",$vname));
+        }else{
+          $v_acl = "r";
+        }
+
+        if ($line[$vname] != "" && preg_match("/r/",$v_acl)){
+          $smarty->assign("$final", $line[$vname]);
+        } else {
+          $smarty->assign("$final", "-");
+        }
+      }
+      $queuing_time= $line['queuing_time'];
+
+      /* The user is allowed to download all fax images from those users 
+          that are listed in session::get('fuserfilter') 
+         Don't forget to check getfax.php if you change somthing here */
+      session::set('fuserfilter',$this->userfilter);
+      $smarty->assign("plug", "?plug=".validate($_GET['plug']));
+      $smarty->assign("detail", validate($_GET['detail']));
+
+      $format= _("Y-M-D");
+      $date= preg_replace("/Y/", substr($queuing_time,0,4), $format);
+      $date= preg_replace("/M/", substr($queuing_time,4,2), $date);
+      $date= preg_replace("/D/", substr($queuing_time,6,2), $date);
+      $smarty->assign("date", $date);
+      $smarty->assign("time", substr($queuing_time,8,2).":".
+          substr($queuing_time,10,2).":".
+          substr($queuing_time,12,2));
+      return($smarty->fetch(get_template_path('detail.tpl', TRUE)));
+    }
+
+    
+    /************ 
+      Search for uids matching the filter  
+     ************/
+
+    /* Search button has been pressed */
+    if ($this->search_for != ""){
+
+      if (is_integer (strpos($this->search_for, "*"))){
+        $s= $this->search_for;
+      } else {
+        $s= "*".$this->search_for."*";
+      }
+      $ldap= $this->config->get_ldap_link();
+      $ldap->cd ($this->search_base);
+
+      /* Perform ldap search for potential users */
+      $filter= "(&(objectClass=gosaAccount)(!(objectClass=gosaUserTemplate))".
+          "(objectClass=goFaxAccount)".
+          "(|(uid=$s)(l=$s)(homePhone=$s)".
+          "(telephoneNumber=$s)(facsimileTelephoneNumber=$s)(mobile=$s)".
+          "(pager=$s)(cn=$s)(givenName=$s)(sn=$s)(personalTitle=$s)".
+          "(title=$s)))";
+  
+      $res = get_list($filter, "users", $this->search_base, array("uid"), GL_SUBSEARCH );
+
+      /* Check if we are allowed to collect fax data */
+      $fax_users= array();
+      foreach($res as $attrs){
+        $acl = $this->ui->get_permissions($attrs['dn'],"users/user","uid");
+        if(preg_match("/r/",$acl)){
+          $fax_users[ $attrs['dn']]= $attrs["uid"][0];
+        }
+      }
+
+      $this->fax_users = $fax_users;
+
+      /* Prepare SQL query */
+      $this->userfilter= "";
+      foreach ($fax_users as $user){
+        $this->userfilter.= "uid = '$user' OR ";
+      }
+      $this->userfilter= preg_replace("/OR $/", "", $this->userfilter);
+    }
+
+    /************ 
+      Create filter  
+     ************/
+
+    /* Perform SQL query */
+    if ($this->userfilter){
+      if ($this->sort_direction == "down"){
+        $desc= "DESC";
+      } else {
+        $desc= "";
+      }
+      $start= date ("YmdHis", mktime(0,0,0,$this->month,1,$this->year));
+      $end=   date ("YmdHis", mktime(23,59,59,$this->month+1,0,$this->year));
+      $query = "SELECT id,uid,date_format(queuing_time, '%Y%m%d%H%i%s') as queuing_time,status,sender_id,receiver_id,pages FROM faxlog ".
+        "WHERE ( ".$this->userfilter." ) AND queuing_time <= $end AND ".
+        "queuing_time >= $start ORDER BY ".$this->fields[$this->sort]." $desc;";
+
+      if(!is_callable("mysql_connect")){
+        print_red("There is no mysql extension configured in your php setup.");
+        return($smarty->fetch(get_template_path('contents.tpl', TRUE)));
+      }
+
+    
+    /************ 
+      Create results  
+     ************/
+
+      /* Connecting, selecting database */
+      $cfg= $this->config->data['SERVERS']['FAX'];
+      $link = @mysql_pconnect($cfg['SERVER'], $cfg['LOGIN'], $cfg['PASSWORD']);
+      
+      @DEBUG (DEBUG_MYSQL, __LINE__, __FUNCTION__, __FILE__,$query, "Database query");
+      $result = @mysql_query($query);
+      if ($result === false){
+        print_red(_("Query for fax database failed!"));
+        return($smarty->fetch(get_template_path('contents.tpl', TRUE)));
+      }
+
+      $this->report_list= array();
+      $user_ids = array_flip($fax_users);
+      while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
+
+        /* Check permissions for each field */
+        $dn = $user_ids[$line['uid']];
+
+        /* Hide restricted attributes */ 
+        foreach(array("pages","receiverid","senderid","status","queuingtime","detailedView") as $attr){
+          $var = $attr."ACL";
+          $$var = $this->ui->get_permissions($dn,"faxreport/faxreport",$attr);
+        }
+
+        /* Restricted attributes will not be displayed, this will be displayed instead */
+        $no_acl = "<img class='center' src='images/closedlock.png' 
+                    title='"._("Insufficient permissions to view this attribute")."' alt='"._("Insufficient permissions")."'>";
+
+        /* Create date */ 
+        if((!empty($line["queuing_time"])) && preg_match("/r/",$queuingtimeACL)){
+          $hour=  substr($line["queuing_time"], 8, 2);
+          $minute=substr($line["queuing_time"], 10, 2);
+          $format= _("Y-M-D");
+          $date= preg_replace("/Y/", substr($line["queuing_time"], 0, 4), $format);
+          $date= preg_replace("/M/", substr($line["queuing_time"], 4, 2), $date);
+          $date= preg_replace("/D/", substr($line["queuing_time"], 6, 2), $date);
+          $str_date = $date." ".$hour.":".$minute;
+        }else{
+          $str_date = $no_acl;
+        }
+  
+        /* Create entry html str */
+
+        if(preg_match("/r/",$detailedViewACL)){
+          $str = "<td class=\"phonelist\">
+            <a href=\"main.php?plug=".validate($_GET['plug'])."&amp;detail=".$line["id"]."\">
+            <img class='center' alt=\"\" align=\"middle\" border=0 src=\"".get_template_path('images/info_small.png')."\">
+            &nbsp;".$line["uid"].
+            "</a>
+            </td>
+            <td>$str_date</td>";
+        }else{
+          $str = "<td>
+            <img class='center' alt=\"\" align=\"middle\" border=0 src=\"".get_template_path('images/info_small.png')."\">
+            &nbsp;".$line["uid"]."</td>
+            <td>$str_date</td>";
+        }
+        
+        /* Add Status td */
+        if(preg_match("/r/",$statusACL)){
+          $str.="<td>".$this->status[$line["status"]]."</td>";
+        }else{
+          $str.="<td>".$no_acl."</td>";
+        }
+
+        /* Add sender_id td */
+        if(preg_match("/r/",$senderidACL)){
+          $str.="<td>".$line["sender_id"]."</td>";
+        }else{
+          $str.="<td>".$no_acl."</td>";
+        }
+
+        /* Add receiver_id td */
+        if(preg_match("/r/",$receiveridACL)){
+          $str.="<td>".$line["receiver_id"]."</td>";
+        }else{
+          $str.="<td>".$no_acl."</td>";
+        }
+
+        /* Add receiver_id td */
+        if(preg_match("/r/",$pagesACL)){
+          $str.="<td>".$line["pages"]."</td>";
+        }else{
+          $str.="<td>".$no_acl."</td>";
+        }
+      $this->report_list[] =  $str;
+      }
+
+      mysql_close($link);
+    }
+
+    /************ 
+      Create output out of results  
+     ************/
+
+    /* Generate output */
+    $mod= 0;
+    $output= "";
+    foreach ($this->report_list as $val){
+      if ($mod < $this->start) {
+        $mod++;
+        continue;
+      }
+      if ($mod >= ($this->start + $this->range)){
+        $mod++;
+        break;
+      }
+      if ( ($mod++) & 1){
+        $col= "background-color: #ECECEC;";
+      } else {
+        $col= "background-color: #F5F5F5;";
+      }
+      $output.= "<tr style=\"height:22px; $col\">$val</tr>";
+    }
+
+    
+    /************ 
+      Display results  
+     ************/
+
+    if (isset($fax_users) && count($fax_users)){
+      $smarty->assign("search_result", $output);
+      $smarty->assign("range_selector", range_selector(count($this->report_list), $this->start, $this->range,"EntriesPerPage"));
+    }else{
+      $smarty->assign("search_result", "");
+    }
+
+    /* Show main page */
+    $smarty->assign("plug", "?plug=".validate($_GET['plug']));
+    for($i= 0; $i<7; $i++){
+      $smarty->assign("mode$i", "");
+    }
+    $smarty->assign("mode".$this->sort, "<img alt=\"\" src=\"images/sort_".$this->sort_direction.
+        ".png\" border=0 align=middle>");
+    return($smarty->fetch(get_template_path('contents.tpl', TRUE)));
+  }
+
+
+  /* Save ui input, and store it in session::get() 
+     to remember last search next time*/
+  function save_object()
+  {
+    $faxreportfilter = session::get("faxreportfilter");
+    if(isset($_POST['EntriesPerPage'])){
+      $this->range = $_POST['EntriesPerPage'];
+    }
+
+    if (isset($_GET['start'])){
+      $this->start= (int)$_GET['start'];
+    }
+
+    /* Adapt sorting */
+    if (isset($_GET['sort'])){
+      if ($this->sort == (int)$_GET['sort']){
+        if ($this->sort_direction == "down"){
+          $this->sort_direction= "up";
+        } else {
+          $this->sort_direction= "down";
+        }
+      }
+      $this->sort= (int)$_GET['sort'];
+      if ($this->sort < 0 || $this->sort > 5){
+        $this->sort= 0;
+      }
+    }
+    foreach( array("year", "month", "search_for", "search_base") as $type){
+      if (isset($_POST[$type])){
+        $faxreportfilter[$type]= $_POST[$type];
+
+        /* reset start page, if filter has changed */ 
+        if(!isset($_GET['start'])){
+          $this->start = 0;
+        }
+      }
+      $this->$type= $faxreportfilter[$type];
+   
+    }
+    foreach($this->attributes_SO as $name){
+      $faxreportfilter[$name] = $this->$name;
+    }  
+    session::set("faxreportfilter",$faxreportfilter);
+  }
+
+
+  /* Return plugin informations for acl handling
+    #FIXME You can only read attributes within this report plugin */
+  static function plInfo()
+  {
+  
+    return (array(
+          "plShortName"     => _("Fax report"),
+          "plDescription"   => _("Fax report")."&nbsp;<i>"._("All entries are readonly")."</i>",
+          "plSelfModify"    => TRUE,
+          "plDepends"       => array(),
+          "plPriority"      => 1,                                 // Position in tabs
+          "plSection"       => array("administration"),                     // This belongs to personal
+          "plCategory"      => array("faxreport" => array("description" => _("Fax reports"),
+                                                         "objectClass" => array())),
+          "plOptions"       => array(),
+
+          "plProvidedAcls" => array(
+            "detailedView"   => _("Detailed view"),
+            "id"             => _("Fax ID"),
+            "queuingtime"    => _("Date")."&nbsp;/&nbsp;"._("Time"),
+            "status"         => _("Status"),
+            "senderid"       => _("Sender ID"),
+            "sendermsn"      => _("Sender MSN"),
+            "receiverid"     => _("Receiver ID"),
+            "receivermsn"    => _("Receiver MSN"),
+            "pages"          => _("Number of pages"),
+            "statusmessage"  => _("Status Message"),
+            "transfertime"   => _("Transfer time"))
+        ));
+  }
+
+}
+// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
+?>
diff --git a/gosa-plugins/gofax/gofax/faxreports/contents.tpl b/gosa-plugins/gofax/gofax/faxreports/contents.tpl
new file mode 100644 (file)
index 0000000..197c5b8
--- /dev/null
@@ -0,0 +1,59 @@
+<div class="contentboxh">
+ <p class="contentboxh"><img src="{$launchimage}" align="right" alt="[F]">{t}Filter{/t}</p>
+</div>
+<div class="contentboxb">
+ <p class="contentboxb" style="border-top:1px solid #B0B0B0; padding-top:5px;">
+ <img class="center" alt="" align="middle" border=0 src="{$search_image}">&nbsp;{t}Search for{/t}
+ <input name="search_for" size=25 maxlength=60 value="{$search_for}" title="{t}Enter user name to search for{/t}" onChange="mainform.submit()">
+ {t}in{/t}
+ <select size="1" name="search_base" title="{t}Select subtree to base search on{/t}" onChange="mainform.submit()">
+  {html_options options=$bases selected=$base_select}
+ </select>
+ {t}during{/t}
+ <select size="1" name="month" onChange="mainform.submit()">
+  {html_options options=$months selected=$month_select}
+ </select>
+ {t}in{/t} 
+ <select size="1" name="year" onChange="mainform.submit()">
+  {html_options values=$years output=$years selected=$year_select}
+ </select>
+ &nbsp;
+ <input type=submit name="search" value="{t}Search{/t}">
+</p>
+</div>
+
+<br>
+
+{if $search_result ne ""}
+ <table summary="" style="width:100%; vertical-align:top; text-align:left; border:1px solid #B0B0B0;" cellpadding=2 cellspacing=1 border=0 rules="cols">
+  <tr style="background-color: #E8E8E8; height:26px; font-weight:bold">
+   <td><a href="main.php{$plug}&amp;sort=0">{t}User{/t} {$mode0}</a></td>
+   <td><a href="main.php{$plug}&amp;sort=1">{t}Date{/t} {$mode1}</a></td>
+   <td><a href="main.php{$plug}&amp;sort=2">{t}Status{/t} {$mode2}</a></td>
+   <td><a href="main.php{$plug}&amp;sort=3">{t}Sender{/t} {$mode3}</a></td>
+   <td><a href="main.php{$plug}&amp;sort=4">{t}Receiver{/t} {$mode4}</a></td>
+   <td><a href="main.php{$plug}&amp;sort=5">{t}# pages{/t} {$mode5}</a></td>
+  </tr>
+  {$search_result}
+ </table>
+
+ <table summary="" style="width:100%; vertical-align:top; text-align:center;" cellpadding=4 cellspacing=0 border=0>
+  <tr>
+   <td>{$range_selector}</td>
+  </tr>
+ </table>
+<p class="plugbottom">
+ &nbsp;
+</p>
+
+{else}
+  <b>{t}Search returned no results...{/t}</b>
+{/if}
+
+
+<!-- Place cursor -->
+<script language="JavaScript" type="text/javascript">
+  <!-- // First input field on page
+       focus_field('search_for');
+  -->
+</script>
diff --git a/gosa-plugins/gofax/gofax/faxreports/detail.tpl b/gosa-plugins/gofax/gofax/faxreports/detail.tpl
new file mode 100644 (file)
index 0000000..20b6123
--- /dev/null
@@ -0,0 +1,69 @@
+<table summary="">
+ <tr>
+  <td> 
+   <a href="getfax.php?id={$detail}&amp;download=1">
+     <img  align="bottom" width="420" height="594" src="getfax.php?id={$detail}" alt="{t}FAX preview - please wait{/t}" border=1>
+   </a>
+   <p style="margin-top-width:0px; text-align:center;">
+    {t}Click on fax to download{/t}
+   </p>
+  </td>
+  <td style="width:20px;">
+    &nbsp;
+  </td>
+  <td style="vertical-align:top">
+    <table summary="" border=0 cellspacing=5>
+     <tr>
+      <td><b>{t}FAX ID{/t}</b></td>
+      <td>{$fax_id}</td>
+     </tr>
+     <tr>
+      <td><b>{t}User{/t}</b></td>
+      <td>{$fax_uid}</td>
+     </tr>
+     <tr>
+      <td><b>{t}Date / Time{/t}</b></td>
+      <td>{$date} / {$time}</td>
+     </tr>
+     <tr>
+      <td><b>{t}Sender MSN{/t}</b></td>
+      <td>{$fax_sender_msn}</td>
+     </tr>
+     <tr>
+      <td><b>{t}Sender ID{/t}</b></td>
+      <td>{$fax_sender_id}</td>
+     </tr>
+     <tr>
+      <td><b>{t}Receiver MSN{/t}</b></td>
+      <td>{$fax_receiver_msn}</td>
+     </tr>
+     <tr>
+      <td><b>{t}Receiver ID{/t}</b></td>
+      <td>{$fax_receiver_id}</td>
+     </tr>
+     <tr>
+      <td><b>{t}Status{/t}</b></td>
+      <td>{$fax_status}</td>
+     </tr>
+     <tr>
+      <td><b>{t}Status message{/t}</b></td>
+      <td>{$fax_status_message}</td>
+     </tr>
+     <tr>
+      <td><b>{t}Transfer time{/t}</b></td>
+      <td>{$fax_transfer_time}</td>
+     </tr>
+     <tr>
+      <td><b>{t}# pages{/t}</b></td>
+      <td>{$fax_pages}</td>
+     </tr>
+    </table>
+
+  </td>
+ </tr>
+</table>
+
+<p class="plugbottom">
+  <input type=submit name="bck_to_list" value="{t}Back{/t}">
+</p>
+
diff --git a/gosa-plugins/gofax/gofax/faxreports/main.inc b/gosa-plugins/gofax/gofax/faxreports/main.inc
new file mode 100644 (file)
index 0000000..03bf95b
--- /dev/null
@@ -0,0 +1,19 @@
+<?php
+
+if (!$remove_lock){
+       /* Create faxreport object on demand */
+       if (!session::is_set('faxreport') || (isset($_GET['reset']) && $_GET['reset'] == 1)){
+               session::set('faxreport',new faxreport ($config, $ui));
+       }
+       $faxreport = session::get('faxreport');
+
+       /* Execute formular */
+       $faxreport->save_object();
+       $display= $faxreport->execute ();
+       $display.= "<input type=\"hidden\" name=\"ignore\">\n";
+       $display= print_header(get_template_path('images/reports.png'), _("FAX reports")).$display;
+
+       /* Store changes  in session */
+       session::set('faxreport',$faxreport);
+}
+?>