X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-core%2Finclude%2Fclass_msg_dialog.inc;h=656fe69440c5deb283210726cc22496f291852c2;hb=f04b7b95f6468a806353f05cdd3faf97dd744d5c;hp=538dc152a35d300aed29bcbb2f28c71c54d1ad5f;hpb=894aa86d1d4d57416d43052ea7b781ff680f03c9;p=gosa.git
diff --git a/gosa-core/include/class_msg_dialog.inc b/gosa-core/include/class_msg_dialog.inc
index 538dc152a..656fe6944 100644
--- a/gosa-core/include/class_msg_dialog.inc
+++ b/gosa-core/include/class_msg_dialog.inc
@@ -1,162 +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(!isset($_SESSION['msg_dialogs'])){
- $_SESSION['msg_dialogs'] = array();
- }
- if($this->i_Type == FATAL_ERROR_DIALOG){
- restore_error_handler();
- error_reporting(E_ALL);
- echo $this->execute();
- }else{
- $_SESSION['msg_dialogs'][] = $this;
- }
- }
- }
-
- 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
-
-
-
-
- |
- 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['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
+
+
+
+
+ |
+ ".$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(isset($_SESSION['msg_dialogs']) && is_array($_SESSION['msg_dialogs']) && count($_SESSION['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['js']){
- $dialog = array_pop($_SESSION['msg_dialogs']);
- $return.= $dialog->execute();
- }else{
- foreach($_SESSION['msg_dialogs'] as $key => $dialog){
-
- if(preg_match("/".$dialog->get_ID()."/",$seen)){
- unset($_SESSION['msg_dialogs'][$key]);
- }else{
- $return.= $dialog->execute();
- $dialog_ids= $dialog->get_ID().",".$dialog_ids;
- }
- unset($_SESSION['msg_dialogs'][$key]);
- }
- }
- $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);
+ }
+
}
?>