mirror of
https://github.com/e107inc/e107.git
synced 2025-08-04 13:47:31 +02:00
Attempt to output unique only messages when saving prefs (new eMessage
feature)
This commit is contained in:
@@ -505,10 +505,10 @@ class e_admin_log
|
|||||||
* @param string $logTitle - title for log entry
|
* @param string $logTitle - title for log entry
|
||||||
* @param int $logImportance - passed directly to admin log
|
* @param int $logImportance - passed directly to admin log
|
||||||
* @param string $logEventCode - passed directly to admin log
|
* @param string $logEventCode - passed directly to admin log
|
||||||
*
|
* @param string $mstack [optional] message stack passed to message handler
|
||||||
* @return e_admin_log
|
* @return e_admin_log
|
||||||
*/
|
*/
|
||||||
public function flushMessages($logTitle, $logImportance = E_LOG_INFORMATIVE, $logEventCode = '')
|
public function flushMessages($logTitle, $logImportance = E_LOG_INFORMATIVE, $logEventCode = '', $mstack = false)
|
||||||
{
|
{
|
||||||
$mes = e107::getMessage();
|
$mes = e107::getMessage();
|
||||||
|
|
||||||
@@ -531,7 +531,12 @@ class e_admin_log
|
|||||||
}
|
}
|
||||||
if ($m['dislevel'] != LOG_MESSAGE_NODISPLAY)
|
if ($m['dislevel'] != LOG_MESSAGE_NODISPLAY)
|
||||||
{
|
{
|
||||||
$mes->add($m['message'], $m['dislevel'], $m['session']);
|
if($mstack)
|
||||||
|
{
|
||||||
|
$mes->addStack($m['message'], $mstack, $m['dislevel'], $m['session']);
|
||||||
|
// move to main stack OUTSIDE if needed
|
||||||
|
}
|
||||||
|
else $mes->add($m['message'], $m['dislevel'], $m['session']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
e107::getAdminLog()->log_event($logTitle, $logString, $logImportance, $logEventCode);
|
e107::getAdminLog()->log_event($logTitle, $logString, $logImportance, $logEventCode);
|
||||||
|
@@ -59,6 +59,11 @@ class eMessage
|
|||||||
*/
|
*/
|
||||||
protected $_session_handler = null;
|
protected $_session_handler = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected $_unique = array();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Singleton instance
|
* Singleton instance
|
||||||
*
|
*
|
||||||
@@ -108,7 +113,7 @@ class eMessage
|
|||||||
/**
|
/**
|
||||||
* Set message session id
|
* Set message session id
|
||||||
* @param string $name
|
* @param string $name
|
||||||
* @return object $this
|
* @return eMessage
|
||||||
*/
|
*/
|
||||||
public function setSessionId($name = '')
|
public function setSessionId($name = '')
|
||||||
{
|
{
|
||||||
@@ -128,7 +133,7 @@ class eMessage
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get session handler
|
* Get session handler
|
||||||
* @return unknown_type
|
* @return eMessage
|
||||||
*/
|
*/
|
||||||
public function getSessionHandler()
|
public function getSessionHandler()
|
||||||
{
|
{
|
||||||
@@ -141,6 +146,22 @@ class eMessage
|
|||||||
return $this->_session_handler;
|
return $this->_session_handler;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set unique message stacks
|
||||||
|
* @param string $mstack message stack which should have only unique message values
|
||||||
|
* @return eMessage
|
||||||
|
*/
|
||||||
|
public function setUnique($mstack)
|
||||||
|
{
|
||||||
|
if(!in_array($mstack, $this->_unique))
|
||||||
|
{
|
||||||
|
$this->_unique[] = $mstack;
|
||||||
|
}
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add message to a type stack and default message stack
|
* Add message to a type stack and default message stack
|
||||||
* If $message is array, $message[0] will be the message stack and
|
* If $message is array, $message[0] will be the message stack and
|
||||||
@@ -166,6 +187,8 @@ class eMessage
|
|||||||
|
|
||||||
if(!$session)
|
if(!$session)
|
||||||
{
|
{
|
||||||
|
// unique messages only
|
||||||
|
if(in_array($mstack, $this->_unique) && in_array($msg, $this->_sysmsg[$type][$mstack])) return $this;
|
||||||
if($this->isType($type)) $this->_sysmsg[$type][$mstack][] = $msg;
|
if($this->isType($type)) $this->_sysmsg[$type][$mstack][] = $msg;
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
@@ -287,6 +310,9 @@ class eMessage
|
|||||||
|
|
||||||
if($this->isType($type))
|
if($this->isType($type))
|
||||||
{
|
{
|
||||||
|
// unique messages only
|
||||||
|
if(in_array($mstack, $this->_unique) && in_array($msg, $SESSION[$type][$mstack])) return $this;
|
||||||
|
|
||||||
$SESSION[$type][$mstack][] = $message;
|
$SESSION[$type][$mstack][] = $message;
|
||||||
$this->getSessionHandler()->set($this->_session_id, $SESSION);
|
$this->getSessionHandler()->set($this->_session_id, $SESSION);
|
||||||
}
|
}
|
||||||
@@ -477,7 +503,9 @@ class eMessage
|
|||||||
}
|
}
|
||||||
elseif (is_array($message))
|
elseif (is_array($message))
|
||||||
{
|
{
|
||||||
$message = array_unique($message); // quick fix for duplicates.
|
// XXX quick fix disabled because of various troubles - fix attempt made inside pref handler (the source of the problem)
|
||||||
|
// New feature added - setUnique($mstack) -> array_unique only for given message stacks
|
||||||
|
//$message = array_unique($message); // quick fix for duplicates.
|
||||||
$message = "<div class='s-message-item'>".implode("</div>\n<div class='s-message-item'>", $message)."</div>";
|
$message = "<div class='s-message-item'>".implode("</div>\n<div class='s-message-item'>", $message)."</div>";
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -679,6 +707,14 @@ class eMessage
|
|||||||
{
|
{
|
||||||
$this->_sysmsg[$_type][$to_stack] = array();
|
$this->_sysmsg[$_type][$to_stack] = array();
|
||||||
}
|
}
|
||||||
|
if(in_array($from_stack, $this->_unique))
|
||||||
|
{
|
||||||
|
// check the destination stack messages, remove duplicates
|
||||||
|
foreach ($this->_sysmsg[$_type][$from_stack] as $i => $_m)
|
||||||
|
{
|
||||||
|
if(in_array($_m, $this->_sysmsg[$_type][$to_stack])) unset($this->_sysmsg[$_type][$from_stack][$i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
$this->_sysmsg[$_type][$to_stack] = array_merge($this->_sysmsg[$_type][$to_stack], $this->_sysmsg[$_type][$from_stack]);
|
$this->_sysmsg[$_type][$to_stack] = array_merge($this->_sysmsg[$_type][$to_stack], $this->_sysmsg[$_type][$from_stack]);
|
||||||
unset($this->_sysmsg[$_type][$from_stack]);
|
unset($this->_sysmsg[$_type][$from_stack]);
|
||||||
}
|
}
|
||||||
|
@@ -78,6 +78,7 @@ class e_pref extends e_front_model
|
|||||||
require_once(e_HANDLER.'cache_handler.php');
|
require_once(e_HANDLER.'cache_handler.php');
|
||||||
|
|
||||||
$this->prefid = preg_replace('/[^\w\-]/', '', $prefid);
|
$this->prefid = preg_replace('/[^\w\-]/', '', $prefid);
|
||||||
|
e107::getMessage()->setUnique($this->prefid); // attempt to fix
|
||||||
if(empty($alias))
|
if(empty($alias))
|
||||||
{
|
{
|
||||||
$alias = $prefid;
|
$alias = $prefid;
|
||||||
@@ -514,7 +515,7 @@ class e_pref extends e_front_model
|
|||||||
|
|
||||||
if(!$this->data_has_changed && !$force)
|
if(!$this->data_has_changed && !$force)
|
||||||
{
|
{
|
||||||
e107::getMessage()->addInfo('Settings not saved as no changes were made.', 'default', $session_messages);
|
e107::getMessage()->addInfo('Settings not saved as no changes were made.', $this->prefid, $session_messages)->moveStack($this->prefid);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -564,12 +565,13 @@ class e_pref extends e_front_model
|
|||||||
}
|
}
|
||||||
$this->setPrefCache($this->toString(false), true); //reset pref cache - runtime & file
|
$this->setPrefCache($this->toString(false), true); //reset pref cache - runtime & file
|
||||||
|
|
||||||
if(!$disallow_logs) $admin_log->logSuccess('Settings successfully saved.', true, $session_messages)->flushMessages('PREFS_01');
|
if(!$disallow_logs) $admin_log->logSuccess('Settings successfully saved.', true, $session_messages)->flushMessages('PREFS_01', E_LOG_INFORMATIVE, '', $this->prefid);
|
||||||
//BC
|
//BC
|
||||||
if($this->alias === 'core')
|
if($this->alias === 'core')
|
||||||
{
|
{
|
||||||
$pref = $this->getPref();
|
$pref = $this->getPref();
|
||||||
}
|
}
|
||||||
|
e107::getMessage()->moveStack($this->prefid);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
elseif(e107::getDb()->getLastErrorNumber())
|
elseif(e107::getDb()->getLastErrorNumber())
|
||||||
@@ -577,7 +579,9 @@ class e_pref extends e_front_model
|
|||||||
if(!$disallow_logs)
|
if(!$disallow_logs)
|
||||||
$admin_log->logError('mySQL error #'.e107::getDb()->getLastErrorNumber().': '.e107::getDb()->getLastErrorText(), true, $session_messages)
|
$admin_log->logError('mySQL error #'.e107::getDb()->getLastErrorNumber().': '.e107::getDb()->getLastErrorText(), true, $session_messages)
|
||||||
->logError('Settings not saved.', true, $session_messages)
|
->logError('Settings not saved.', true, $session_messages)
|
||||||
->flushMessages('PREFS_03');
|
->flushMessages('PREFS_03', E_LOG_INFORMATIVE, '', $this->prefid);
|
||||||
|
|
||||||
|
e107::getMessage()->moveStack($this->prefid);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -588,13 +592,16 @@ class e_pref extends e_front_model
|
|||||||
//$this->setErrors(true, $session_messages); old - doesn't needed anymore
|
//$this->setErrors(true, $session_messages); old - doesn't needed anymore
|
||||||
if(!$disallow_logs)
|
if(!$disallow_logs)
|
||||||
$admin_log->logError('Settings not saved.', true, $session_messages)
|
$admin_log->logError('Settings not saved.', true, $session_messages)
|
||||||
->flushMessages('LAN_FIXME');
|
->flushMessages('LAN_FIXME', E_LOG_INFORMATIVE, '', $this->prefid);
|
||||||
|
|
||||||
|
e107::getMessage()->moveStack($this->prefid);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
e107::getMessage()->add('Settings not saved as no changes were made.', E_MESSAGE_INFO, $session_messages);
|
e107::getMessage()->addInfo('Settings not saved as no changes were made.', $this->prefid, $session_messages);
|
||||||
if(!$disallow_logs) $admin_log->flushMessages('LAN_FIXME');
|
if(!$disallow_logs) $admin_log->flushMessages('LAN_FIXME', E_LOG_INFORMATIVE, '', $this->prefid);
|
||||||
|
e107::getMessage()->moveStack($this->prefid);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user