Code

Added snapshot to gofonmacros
[gosa.git] / plugins / gofon / phoneaccount / class_phoneAccount.inc
index db1c304c2ff7a753dd94e03d75991e91e5cfb469..b38336fe90e1a65f25d0ed81968c0a774355b28e 100644 (file)
@@ -34,7 +34,8 @@ class phoneAccount extends plugin
   var $cli_parameters         = array("eins" => "Eins ist toll", "zwei" => "Zwei ist noch besser");
 
   /* attribute list for save action */
-  var $attributes             = array("goFonDeliveryMode", "goFonFormat","uid","cn","mail",
+  var $CopyPasteVars          = array("phoneNumbers");
+  var $attributes             = array("goFonDeliveryMode", "goFonFormat","uid","cn",
       "goFonHardware","goFonPIN","goFonVoicemailPIN","telephoneNumber", "goFonMacro","macro");
   var $objectclasses= array("goFonAccount");
 
@@ -267,7 +268,7 @@ class phoneAccount extends plugin
 
     $s_ip           = NULL;                   // Contains ip for Sip entry
     $s_host         = NULL;                   // Contains host for Sip entry
-    $s_qualify      = NULL;                   // Qualify entry
+    $s_qualify      = "yes";                  // Qualify entry
     $s_pin          = NULL;                   // Entry for secret
     $s_type         = NULL;                   // Entry for phone type (friend , peer ..)
 
@@ -284,7 +285,7 @@ class phoneAccount extends plugin
     $b_first_deleted= false;  // Only delete first entry, 
     $s_telenums     = "";     // for each value variable
 
-    $i_is_accounted =false;   // Ensure that extension entry, for name to number is only once in table
+    $i_is_accounted = false;  // Ensure that extension entry, for name to number is only once in table
 
 
     // Connect to DB server
@@ -433,14 +434,15 @@ class phoneAccount extends plugin
       $SQL[] = "DELETE FROM ".$a_SETUP['VOICE_TABLE']." WHERE customer_id=".$newnums[$i_new_key].";"; 
       // Delete old entries
       $b_first_deleted  =false;
-      foreach($oldnums as $s_telenums){
-        $SQL[] = "DELETE FROM ".$a_SETUP['EXT_TABLE']." WHERE exten='".$s_telenums."';\n";
-        if(!$b_first_deleted){
-          $b_first_deleted=true;
-          $SQL[] = "DELETE FROM ".$a_SETUP['VOICE_TABLE']." WHERE customer_id=".$s_telenums.";";
+      if(isset($oldnums) && is_array($oldnums)){
+        foreach($oldnums as $s_telenums){
+          $SQL[] = "DELETE FROM ".$a_SETUP['EXT_TABLE']." WHERE exten='".$s_telenums."';\n";
+          if(!$b_first_deleted){
+            $b_first_deleted=true;
+            $SQL[] = "DELETE FROM ".$a_SETUP['VOICE_TABLE']." WHERE customer_id=".$s_telenums.";";
+          }
         }
       }
-
       if($this->goFonHardware=="automatic"){
         foreach($SQL as $query ){
           mysql_query($query) ;
@@ -879,8 +881,8 @@ class phoneAccount extends plugin
 
   function check()
   {
-    /* Reset message array */
-    $message= array();
+    /* Call common method to give check the hook */
+    $message= plugin::check();
 
     if((strlen($this->goFonVoicemailPIN)==0)||(strlen($this->goFonVoicemailPIN)>4)){
       $message[]=(_("Voicemail PIN must be between 1-4 characters."));
@@ -956,8 +958,10 @@ class phoneAccount extends plugin
     /* Write back to ldap */
     $ldap= $this->config->get_ldap_link();
     $ldap->cd($this->dn);
-    $ldap->modify($this->attrs);
-    show_ldap_error($ldap->get_error());
+    $this->cleanup();
+    $ldap->modify ($this->attrs); 
+
+    show_ldap_error($ldap->get_error(), _("Saving phone account failed"));
 
     /* Optionally execute a command after we're done */
 
@@ -1010,16 +1014,18 @@ class phoneAccount extends plugin
 
   function remove_from_parent()
   {
+    if(!$this->initially_was_account) return;
+
     foreach($this->attributes as $key=>$val){
-      if(in_array($val,array("uid","cn","mail"))){
+      if(in_array($val,array("uid","cn"))){
         unset($this->attributes[$key]);
         unset($this->$val);
       }
     }
-
     if(array_key_exists('config', $_SESSION) &&
        array_key_exists('SERVERS', $_SESSION['config']->data) &&
-       array_key_exists('FON', $_SESSION['config']->data['SERVERS'])) {
+       array_key_exists('FON', $_SESSION['config']->data['SERVERS']) &&
+        is_callable("mysql_pconnect")) {
       // Get Configuration for Mysql database Server
       $a_SETUP = $_SESSION['config']->data['SERVERS']['FON'];
       $s_parameter  ="";
@@ -1029,8 +1035,8 @@ class phoneAccount extends plugin
 
       // Check if we are  connected correctly
       if(!$r_con){
-        $this->generate_error = sprintf(_("The MySQL Server '%s' isn't reachable as user '%s', check GOsa log for mysql error."),
-            $a_SETUP['SERVER'],$a_SETUP['LOGIN']);
+        print_red(sprintf(_("The MySQL Server '%s' isn't reachable as user '%s', check GOsa log for mysql error."),
+                    $a_SETUP['SERVER'],$a_SETUP['LOGIN']));
         gosa_log(@mysql_error());
         return false;
       }
@@ -1040,7 +1046,7 @@ class phoneAccount extends plugin
 
       // Test if we have the database selected correctly
       if(!$db){
-        $this->generate_error = sprintf(_("Can't select database %s on %s."),$a_SETUP['DB'],$a_SETUP['SERVER']);
+        print_red(sprintf(_("Can't select database %s on %s."),$a_SETUP['DB'],$a_SETUP['SERVER']));
         gosa_log(@mysql_error());
         return false;
       }
@@ -1075,6 +1081,9 @@ class phoneAccount extends plugin
           return false;
         }
       }
+    }else{
+      print_red(_("Can't remove phone account, the mysql extension is not present in php configuration."));
+      return false;
     }
 
     /* unset macro attr, it will cause an error */
@@ -1096,6 +1105,7 @@ class phoneAccount extends plugin
       $this->attrs['telephoneNumber']= array();
     }
 
+
     $ldap= $this->config->get_ldap_link();
     $ldap->cd($this->config->current['BASE']);
     $ldap->search("(objectClass=goFonQueue)", array("member"));
@@ -1109,8 +1119,10 @@ class phoneAccount extends plugin
       }
     }
     $ldap->cd($this->dn);
-    $ldap->modify($this->attrs);
-    show_ldap_error($ldap->get_error());
+    $this->cleanup();
+    $ldap->modify ($this->attrs); 
+
+    show_ldap_error($ldap->get_error(), _("Removing phone account failed"));
 
     /* Optionally execute a command after we're done */
     @mysql_close($r_con);
@@ -1146,6 +1158,41 @@ class phoneAccount extends plugin
       }
     }
   }
+
+
+  /* Create phoneAccount part of copy & paste dialog */
+  function getCopyDialog()
+  { 
+    if(!$this->is_account) return("");
+    $smarty = get_smarty();
+    if (!count($this->phoneNumbers)){
+      $smarty->assign ("phoneNumbers", array(""));
+    } else {
+      $smarty->assign ("phoneNumbers", $this->phoneNumbers);
+    }
+
+    $smarty->assign("goFonVoicemailPIN",$this->goFonVoicemailPIN);
+    $smarty->assign("goFonPIN",$this->goFonPIN);
+
+    $display= $smarty->fetch(get_template_path('paste_generic.tpl', TRUE, dirname(__FILE__)));
+    $ret =array();
+    $ret['string'] = $display;
+    $ret['status'] = "";
+    return($ret);
+  }
+
+  /* Save posts from copy & paste dialog dialog  */
+  function saveCopyDialog()
+  {
+    if(!$this->is_account) return;
+    $this->execute();
+    if(isset($_POST['goFonVoicemailPIN'])) {
+      $this->goFonVoicemailPIN = $_POST['goFonVoicemailPIN'];
+    }
+    if(isset($_POST['goFonPIN'])){
+      $this->goFonPIN = $_POST['goFonPIN'];
+    }
+  }
 }
 
 // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: