diff --git a/plugins/gofon/phoneaccount/class_phoneAccount.inc b/plugins/gofon/phoneaccount/class_phoneAccount.inc
index db1c304c2ff7a753dd94e03d75991e91e5cfb469..0cf7ac03a6684df4a90025ec05e5a1f02382b3cc 100644 (file)
var $has_mailAccount= FALSE;
/* Attributes */
var $has_mailAccount= FALSE;
/* Attributes */
- var $telephoneNumber = "";
+ var $telephoneNumber = array();
var $goFonHardware = "";
var $goFonFormat = "";
var $goFonPIN = "";
var $goFonHardware = "";
var $goFonFormat = "";
var $goFonPIN = "";
var $cli_parameters = array("eins" => "Eins ist toll", "zwei" => "Zwei ist noch besser");
/* attribute list for save action */
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","macroarray","macrostillavailable"/*"phoneNumbers" -Reset- */,
+ "hardware_list","used_hardware");
+
+ var $attributes = array("goFonDeliveryMode", "goFonFormat","uid","cn",
"goFonHardware","goFonPIN","goFonVoicemailPIN","telephoneNumber", "goFonMacro","macro");
var $objectclasses= array("goFonAccount");
"goFonHardware","goFonPIN","goFonVoicemailPIN","telephoneNumber", "goFonMacro","macro");
var $objectclasses= array("goFonAccount");
- function phoneAccount ($config, $dn= NULL)
+ var $uid;
+
+ function phoneAccount ($config, $dn= NULL, $parent= NULL)
{
{
- plugin::plugin ($config, $dn);
+ plugin::plugin ($config, $dn, $parent);
/* Set phone hardware */
if (!isset($this->attrs['goFonHardware'])){
/* Set phone hardware */
if (!isset($this->attrs['goFonHardware'])){
$s_ip = NULL; // Contains ip for Sip entry
$s_host = NULL; // Contains host for Sip entry
$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 ..)
$s_pin = NULL; // Entry for secret
$s_type = NULL; // Entry for phone type (friend , peer ..)
$b_first_deleted= false; // Only delete first entry,
$s_telenums = ""; // for each value variable
$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
// Connect to DB server
$SQL[] = "DELETE FROM ".$a_SETUP['VOICE_TABLE']." WHERE customer_id=".$newnums[$i_new_key].";";
// Delete old entries
$b_first_deleted =false;
$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) ;
if($this->goFonHardware=="automatic"){
foreach($SQL as $query ){
mysql_query($query) ;
/* Fill arrays */
$smarty->assign ("goFonHardware", $this->goFonHardware);
if (!count($this->phoneNumbers)){
/* Fill arrays */
$smarty->assign ("goFonHardware", $this->goFonHardware);
if (!count($this->phoneNumbers)){
- $smarty->assign ("phoneNumbers", array(""));
+ $smarty->assign ("phoneNumbers", array());
} else {
$smarty->assign ("phoneNumbers", $this->phoneNumbers);
}
} else {
$smarty->assign ("phoneNumbers", $this->phoneNumbers);
}
function check()
{
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."));
if((strlen($this->goFonVoicemailPIN)==0)||(strlen($this->goFonVoicemailPIN)>4)){
$message[]=(_("Voicemail PIN must be between 1-4 characters."));
/* Write back to ldap */
$ldap= $this->config->get_ldap_link();
$ldap->cd($this->dn);
/* 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 */
if ($this->initially_was_account == $this->is_account){
if ($this->is_modified){
/* Optionally execute a command after we're done */
if ($this->initially_was_account == $this->is_account){
if ($this->is_modified){
- $this->handle_post_events("modify");
+ $this->handle_post_events("modify",array("uid" => $this->uid));
}
} else {
}
} else {
- $this->handle_post_events("add");
+ $this->handle_post_events("add",array("uid" => $this->uid));
}
}
}
}
function remove_from_parent()
{
function remove_from_parent()
{
+ if(!$this->initially_was_account) return;
+
foreach($this->attributes as $key=>$val){
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);
}
}
unset($this->attributes[$key]);
unset($this->$val);
}
}
-
if(array_key_exists('config', $_SESSION) &&
array_key_exists('SERVERS', $_SESSION['config']->data) &&
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 ="";
// Get Configuration for Mysql database Server
$a_SETUP = $_SESSION['config']->data['SERVERS']['FON'];
$s_parameter ="";
// Check if we are connected correctly
if(!$r_con){
// 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;
}
gosa_log(@mysql_error());
return false;
}
// Test if we have the database selected correctly
if(!$db){
// 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;
}
gosa_log(@mysql_error());
return false;
}
return false;
}
}
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 */
}
/* unset macro attr, it will cause an error */
$this->attrs['telephoneNumber']= array();
}
$this->attrs['telephoneNumber']= array();
}
+
$ldap= $this->config->get_ldap_link();
$ldap->cd($this->config->current['BASE']);
$ldap->search("(objectClass=goFonQueue)", array("member"));
$ldap= $this->config->get_ldap_link();
$ldap->cd($this->config->current['BASE']);
$ldap->search("(objectClass=goFonQueue)", array("member"));
}
}
$ldap->cd($this->dn);
}
}
$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);
/* Optionally execute a command after we're done */
@mysql_close($r_con);
- $this->handle_post_events('remove');
+ $this->handle_post_events('remove',array("uid"=> $this->uid));
}
}
}
}
}
}
}
}
+
+
+ /* 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:
}
// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: