X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-core%2Finclude%2Fclass_msg_dialog.inc;h=656fe69440c5deb283210726cc22496f291852c2;hb=f04b7b95f6468a806353f05cdd3faf97dd744d5c;hp=3e52c1f68718b3e8be990a513cde1de95d2ac269;hpb=1e73841b2c486817aeb75934af3496b8bfd7a184;p=gosa.git diff --git a/gosa-core/include/class_msg_dialog.inc b/gosa-core/include/class_msg_dialog.inc index 3e52c1f68..656fe6944 100644 --- a/gosa-core/include/class_msg_dialog.inc +++ b/gosa-core/include/class_msg_dialog.inc @@ -1,168 +1,202 @@ i_ID = preg_replace("/[^0-9]*/","",microtime()); - $this->s_Title = $s_title; - $this->s_Message = $s_message; - $this->i_Type = $i_type; - - /* Append trace information, only if error messages are enabled */ - if( isset($config) && - is_object($config) && - isset($config->data['MAIN']['DISPLAYERRORS']) && - preg_match("/^true$/i",$config->data['MAIN']['DISPLAYERRORS'])){ - $this->a_Trace = debug_backtrace(); - } - if(!session::is_set('msg_dialogs')){ - session::set('msg_dialogs',array()); - } - if($this->i_Type == FATAL_ERROR_DIALOG){ - restore_error_handler(); - error_reporting(E_ALL); - echo $this->execute(); - }else{ - $msg_dialogs = session::get('msg_dialogs'); - $msg_dialogs[] = $this; - session::set('msg_dialogs',$msg_dialogs); - } - } - session::set('errorsAlreadyPosted',$errorsAlreadyPosted); - } - - public static function display($s_title,$s_message,$i_type = INFO_DIALOG) - { - new msg_dialog($s_title,$s_message,$i_type); - } - - public function get_ID() - { - return($this->i_ID); - } - - public function execute() - { - if($this->i_Type == FATAL_ERROR_DIALOG) { - $display = - " - - GOsa startup failed - - - -
- {t}Error{/t} - - Fatal Error - GOsa execution abortet - ".$this->s_Title."
- ".$this->s_Message."

- "._("Please fix the above error and reload the page.")." -
"; - return($display);; - }else{ - - $smarty = get_smarty(); - $smarty->assign("s_Trace" ,print_a($this->a_Trace,TRUE)); - $smarty->assign("i_TraceCnt",count($this->a_Trace)); - $smarty->assign("i_Type",$this->i_Type); - $smarty->assign("s_Message",$this->s_Message); - $smarty->assign("s_Title",$this->s_Title); - $smarty->assign("i_ID",$this->i_ID); - $smarty->assign("frame",false); - $smarty->assign("JS",session::get('js')); - $smarty->assign("IE",preg_match("/MSIE/", $_SERVER['HTTP_USER_AGENT'])); - return($smarty->fetch(get_template_path('msg_dialog.tpl'))); - } - } - - - public function is_confirmed() - { - if(isset($_POST['MSG_OK'.$this->i_ID])){ - return(TRUE); - }else{ - return(FALSE); - } - } - - - public static function get_dialogs() - { - $return =""; - $dialog_ids= ""; - - $seen = ""; - if(isset($_POST['closed_msg_dialogs'])){ + private $s_Title = "Undefined"; + private $s_Message = "Undefined"; + private $i_Type = INFO_DIALOG ; + private $i_ID = 0; + private $a_Trace = array(); + + public function __construct($s_title,$s_message,$i_type) + { + global $config; + + if(empty($s_message)) return; + + if(!in_array($i_type,array(INFO_DIALOG,WARNING_DIALOG,ERROR_DIALOG,CONFIRM_DIALOG,FATAL_ERROR_DIALOG,OK_CANCEL_DIALOG))){ + trigger_error("Invalid msg_dialog type."); + $i_type = INFO_DIALOG; + } + + if((!session::is_set('errorsAlreadyPosted')) || !is_array(session::get('errorsAlreadyPosted'))){ + session::set('errorsAlreadyPosted',array()); + } + + $errorsAlreadyPosted = session::get('errorsAlreadyPosted'); + if(!isset($errorsAlreadyPosted[$s_title.$s_message])){ + $errorsAlreadyPosted[$s_title.$s_message] = 0; + } + $errorsAlreadyPosted[$s_title.$s_message]++; + + if($errorsAlreadyPosted[$s_title.$s_message] <=1 ){ + + $this->i_ID = preg_replace("/[^0-9]*/","",microtime()); + $this->s_Title = $s_title; + $this->s_Message = $s_message; + $this->i_Type = $i_type; + + /* Append trace information, only if error messages are enabled */ + if( isset($config) && + is_object($config) && + $config->get_cfg_value("core","displayErrors") == "true" ){ + $this->a_Trace = debug_backtrace(); + } + if(!session::is_set('msg_dialogs')){ + session::set('msg_dialogs',array()); + } + if($this->i_Type == FATAL_ERROR_DIALOG){ + restore_error_handler(); + error_reporting(E_ALL); + echo $this->execute(); + }else{ + $msg_dialogs = session::get('msg_dialogs'); + $msg_dialogs[] = $this; + session::set('msg_dialogs',$msg_dialogs); + } + } + session::set('errorsAlreadyPosted',$errorsAlreadyPosted); + } + + + public static function display($s_title,$s_message,$i_type = INFO_DIALOG) + { + new msg_dialog($s_title,$s_message,$i_type); + } + + + public static function displayChecks($messages) + { + /* Assemble the message array to a plain string */ + foreach ($messages as $error){ + msg_dialog::display(_("Error"), $error, ERROR_DIALOG); + } + } + + + public function get_ID() + { + return($this->i_ID); + } + + public function execute() + { + if($this->i_Type == FATAL_ERROR_DIALOG) { + $display = + " + + GOsa startup failed + + + +
+ {t}Error{/t} + + ".$this->s_Title."
+ ".$this->s_Message."

+ "._("Please fix the above error and reload the page.")." +
"; + return($display);; + }else{ + + $smarty = get_smarty(); + $smarty->assign("s_Trace" ,print_a($this->a_Trace,TRUE)); + $smarty->assign("i_TraceCnt",count($this->a_Trace)); + $smarty->assign("i_Type",$this->i_Type); + $smarty->assign("s_Message",$this->s_Message); + $smarty->assign("s_Title",$this->s_Title); + $smarty->assign("i_ID",$this->i_ID); + $smarty->assign("frame",false); + $smarty->assign("JS",session::global_get('js')); + $smarty->assign("IE",preg_match("/MSIE/", $_SERVER['HTTP_USER_AGENT'])); + return($smarty->fetch(get_template_path('msg_dialog.tpl'))); + } + } + + + public function is_confirmed() + { + if(isset($_POST['MSG_OK'.$this->i_ID])){ + return(TRUE); + }else{ + return(FALSE); + } + } + + + public static function get_dialogs() + { + $return =""; + $dialog_ids= ""; + + $seen = ""; + if(isset($_POST['closed_msg_dialogs'])){ # $seen = $_POST['closed_msg_dialogs']; - } - - if(session::is_set('msg_dialogs') && is_array(session::get('msg_dialogs')) && count(session::get('msg_dialogs'))){ - - /* Get frame one */ - $smarty = get_smarty(); - $smarty->assign("frame", true); - $smarty->assign("IE",preg_match("/MSIE/", $_SERVER['HTTP_USER_AGENT'])); - $return = $smarty->fetch(get_template_path('msg_dialog.tpl')); - - if(!session::get('js')){ - $dialog = array_pop(session::get('msg_dialogs')); - $return.= $dialog->execute(); - }else{ - $msg_dialogs = session::get('msg_dialogs'); - foreach($msg_dialogs as $key => $dialog){ - - if(preg_match("/".$dialog->get_ID()."/",$seen)){ - unset($msg_dialogs[$key]); - }else{ - $return.= $dialog->execute(); - $dialog_ids= $dialog->get_ID().",".$dialog_ids; - } - unset($msg_dialogs[$key]); - } - session::set('msg_dialogs',$msg_dialogs); - } - $dialog_ids = preg_replace("/,$/","",$dialog_ids); - - $return .= ""; - $return .=""; - $return .=""; - $return .=""; - $return .=""; - } - return($return); - } + } + + if(session::is_set('msg_dialogs') && is_array(session::get('msg_dialogs')) && count(session::get('msg_dialogs'))){ + + /* Get frame one */ + $smarty = get_smarty(); + $smarty->assign("frame", true); + $smarty->assign("IE",preg_match("/MSIE/", $_SERVER['HTTP_USER_AGENT'])); + $return = $smarty->fetch(get_template_path('msg_dialog.tpl')); + + if(!session::global_get('js')){ + $dialog = array_pop(session::get('msg_dialogs')); + $return.= $dialog->execute(); + }else{ + $msg_dialogs = session::get('msg_dialogs'); + foreach($msg_dialogs as $key => $dialog){ + + if(preg_match("/".$dialog->get_ID()."/",$seen)){ + unset($msg_dialogs[$key]); + }else{ + $return.= $dialog->execute(); + $dialog_ids= $dialog->get_ID().",".$dialog_ids; + } + unset($msg_dialogs[$key]); + } + session::set('msg_dialogs',$msg_dialogs); + } + $dialog_ids = preg_replace("/,$/","",$dialog_ids); + + $return .= ""; + $return .=""; + $return .=""; + $return .=""; + $return .=""; + } + return($return); + } + } ?>