persistanceFile = $GLOBALS["NOTICES_FILE_PATH"]; $this->loadNotices(); } /** * save notices from json file */ public function saveNotices() { $notices = array( 'globalData' => array( 'uniqueCountId' => self::$uniqueCountId ), 'nextStep' => array(), 'finalReport' => array() ); foreach ($this->nextStepNotices as $uniqueId => $notice) { $notices['nextStep'][$uniqueId] = $notice->toArray(); } foreach ($this->finalReporNotices as $uniqueId => $notice) { $notices['finalReport'][$uniqueId] = $notice->toArray(); } file_put_contents($this->persistanceFile, DupLiteSnapJsonU::wp_json_encode_pprint($notices)); } /** * load notice from json file */ private function loadNotices() { if (file_exists($this->persistanceFile)) { $json = file_get_contents($this->persistanceFile); $notices = json_decode($json, true); $this->nextStepNotices = array(); $this->finalReporNotices = array(); if (!empty($notices['nextStep'])) { foreach ($notices['nextStep'] as $uniqueId => $notice) { $this->nextStepNotices[$uniqueId] = DUPX_NOTICE_ITEM::getItemFromArray($notice); } } if (!empty($notices['finalReport'])) { foreach ($notices['finalReport'] as $uniqueId => $notice) { $this->finalReporNotices[$uniqueId] = DUPX_NOTICE_ITEM::getItemFromArray($notice); } } self::$uniqueCountId = $notices['globalData']['uniqueCountId']; } else { $this->resetNotices(); } } /** * remove all notices and save reset file */ public function resetNotices() { $this->nextStepNotices = array(); $this->finalReporNotices = array(); self::$uniqueCountId = 0; $this->saveNotices(); } /** * return next step notice by id * * @param string $id * @return DUPX_NOTICE_ITEM */ public function getNextStepNoticeById($id) { if (isset($this->nextStepNotices[$id])) { return $this->nextStepNotices[$id]; } else { return null; } } /** * return last report notice by id * * @param string $id * @return DUPX_NOTICE_ITEM */ public function getFinalReporNoticeById($id) { if (isset($this->finalReporNotices[$id])) { return $this->finalReporNotices[$id]; } else { return null; } } /** * * @param array|DUPX_NOTICE_ITEM $item // if string add new notice obj with item message and level param * // if array must be [ * 'shortMsg' => text, * 'level' => level, * 'longMsg' => html text, * 'sections' => sections list, * 'faqLink' => [ * 'url' => external link * 'label' => link text if empty get external url link * ] * ] * @param int $mode // ADD_NORMAL | ADD_UNIQUE | ADD_UNIQUE_UPDATE | ADD_UNIQUE_APPEND * @param string $uniqueId // used for ADD_UNIQUE or ADD_UNIQUE_UPDATE or ADD_UNIQUE_APPEND * * @return string // notice insert id * * @throws Exception */ public function addBothNextAndFinalReportNotice($item, $mode = self::ADD_NORMAL, $uniqueId = null) { $this->addNextStepNotice($item, $mode, $uniqueId); $this->addFinalReportNotice($item, $mode, $uniqueId); } /** * * @param array|DUPX_NOTICE_ITEM $item // if string add new notice obj with item message and level param * // if array must be [ * 'shortMsg' => text, * 'level' => level, * 'longMsg' => html text, * 'sections' => sections list, * 'faqLink' => [ * 'url' => external link * 'label' => link text if empty get external url link * ] * ] * @param int $mode // ADD_NORMAL | ADD_UNIQUE | ADD_UNIQUE_UPDATE | ADD_UNIQUE_APPEND * @param string $uniqueId // used for ADD_UNIQUE or ADD_UNIQUE_UPDATE or ADD_UNIQUE_APPEND * * @return string // notice insert id * * @throws Exception */ public function addNextStepNotice($item, $mode = self::ADD_NORMAL, $uniqueId = null) { if (!is_array($item) && !($item instanceof DUPX_NOTICE_ITEM)) { throw new Exception('Invalid item param'); } return self::addReportNoticeToList($this->nextStepNotices, $item, $mode, $uniqueId); } /** * addNextStepNotice wrapper to add simple message with error level * * @param string $message * @param int $level // warning level * @param int $mode // ADD_NORMAL | ADD_UNIQUE | ADD_UNIQUE_UPDATE | ADD_UNIQUE_APPEND * @param string $uniqueId // used for ADD_UNIQUE or ADD_UNIQUE_UPDATE or ADD_UNIQUE_APPEND * * @return string // notice insert id * * @throws Exception */ public function addNextStepNoticeMessage($message, $level = DUPX_NOTICE_ITEM::INFO, $mode = self::ADD_NORMAL, $uniqueId = null) { return $this->addNextStepNotice(array( 'shortMsg' => $message, 'level' => $level, ), $mode, $uniqueId); } /** * * @param array|DUPX_NOTICE_ITEM $item // if string add new notice obj with item message and level param * // if array must be [ * 'shortMsg' => text, * 'level' => level, * 'longMsg' => html text, * 'sections' => sections list, * 'faqLink' => [ * 'url' => external link * 'label' => link text if empty get external url link * ] * ] * @param int $mode // ADD_NORMAL | ADD_UNIQUE | ADD_UNIQUE_UPDATE | ADD_UNIQUE_APPEND * @param string $uniqueId // used for ADD_UNIQUE or ADD_UNIQUE_UPDATE or ADD_UNIQUE_APPEND * * @return string // notice insert id * * @throws Exception */ public function addFinalReportNotice($item, $mode = self::ADD_NORMAL, $uniqueId = null) { if (!is_array($item) && !($item instanceof DUPX_NOTICE_ITEM)) { throw new Exception('Invalid item param'); } return self::addReportNoticeToList($this->finalReporNotices, $item, $mode, $uniqueId); } /** * addFinalReportNotice wrapper to add simple message with error level * * @param string $message * @param string|string[] $sections // message sections on final report * @param int $level // warning level * @param int $mode // ADD_NORMAL | ADD_UNIQUE | ADD_UNIQUE_UPDATE | ADD_UNIQUE_APPEND * @param string $uniqueId // used for ADD_UNIQUE or ADD_UNIQUE_UPDATE or ADD_UNIQUE_APPEND * * @return string // notice insert id * * @throws Exception */ public function addFinalReportNoticeMessage($message, $sections, $level = DUPX_NOTICE_ITEM::INFO, $mode = self::ADD_NORMAL, $uniqueId = null) { return $this->addFinalReportNotice(array( 'shortMsg' => $message, 'level' => $level, 'sections' => $sections, ), $mode, $uniqueId); } /** * * @param array $list * @param array|DUPX_NOTICE_ITEM $item // if string add new notice obj with item message and level param * // if array must be [ * 'shortMsg' => text, * 'level' => level, * 'longMsg' => html text, * 'sections' => sections list, * 'faqLink' => [ * 'url' => external link * 'label' => link text if empty get external url link * ] * ] * @param int $mode // ADD_NORMAL | ADD_UNIQUE | ADD_UNIQUE_UPDATE | ADD_UNIQUE_APPEND * @param string $uniqueId // used for ADD_UNIQUE or ADD_UNIQUE_UPDATE or ADD_UNIQUE_APPEND * * @return string // notice insert id * * @throws Exception */ private static function addReportNoticeToList(&$list, $item, $mode = self::ADD_NORMAL, $uniqueId = null) { switch ($mode) { case self::ADD_UNIQUE: if (empty($uniqueId)) { throw new Exception('uniqueId can\'t be empty'); } if (isset($list[$uniqueId])) { return $uniqueId; } // no break -> continue on unique update case self::ADD_UNIQUE_UPDATE: if (empty($uniqueId)) { throw new Exception('uniqueId can\'t be empty'); } $insertId = $uniqueId; break; case self::ADD_UNIQUE_APPEND_IF_EXISTS: if (empty($uniqueId)) { throw new Exception('uniqueId can\'t be empty'); } if (!isset($list[$uniqueId])) { return false; } // no break case self::ADD_UNIQUE_APPEND: if (empty($uniqueId)) { throw new Exception('uniqueId can\'t be empty'); } $insertId = $uniqueId; // if item id exist append long msg if (isset($list[$uniqueId])) { $tempObj = self::getObjFromParams($item); $list[$uniqueId]->longMsg .= $tempObj->longMsg; $item = $list[$uniqueId]; } break; case self::ADD_UNIQUE_PREPEND_IF_EXISTS: if (empty($uniqueId)) { throw new Exception('uniqueId can\'t be empty'); } if (!isset($list[$uniqueId])) { return false; } // no break case self::ADD_UNIQUE_PREPEND: if (empty($uniqueId)) { throw new Exception('uniqueId can\'t be empty'); } $insertId = $uniqueId; // if item id exist append long msg if (isset($list[$uniqueId])) { $tempObj = self::getObjFromParams($item); $list[$uniqueId]->longMsg = $tempObj->longMsg.$list[$uniqueId]->longMsg; $item = $list[$uniqueId]; } break; case self::ADD_NORMAL: default: if (empty($uniqueId)) { $insertId = self::getNewAutoUniqueId(); } else { $insertId = $uniqueId; } } $list[$insertId] = self::getObjFromParams($item); return $insertId; } /** * * @param string|array|DUPX_NOTICE_ITEM $item // if string add new notice obj with item message and level param * // if array must be [ * 'shortMsg' => text, * 'level' => level, * 'longMsg' => html text, * 'sections' => sections list, * 'faqLink' => [ * 'url' => external link * 'label' => link text if empty get external url link * ] * ] * @param int $level message level considered only in the case where $item is a string. * @return \DUPX_NOTICE_ITEM * * @throws Exception */ private static function getObjFromParams($item, $level = DUPX_NOTICE_ITEM::INFO) { if ($item instanceof DUPX_NOTICE_ITEM) { $newObj = $item; } else if (is_array($item)) { $newObj = DUPX_NOTICE_ITEM::getItemFromArray($item); } else if (is_string($item)) { $newObj = new DUPX_NOTICE_ITEM($item, $level); } else { throw new Exception('Notice input not valid'); } return $newObj; } /** * * @param null|string $section if null is count global * @param int $level error level * @param string $operator > < >= <= = != * * @return int */ public function countFinalReportNotices($section = null, $level = DUPX_NOTICE_ITEM::INFO, $operator = '>=') { $result = 0; foreach ($this->finalReporNotices as $notice) { if (is_null($section) || in_array($section, $notice->sections)) { switch ($operator) { case '>=': $result += (int) ($notice->level >= $level); break; case '>': $result += (int) ($notice->level > $level); break; case '=': $result += (int) ($notice->level = $level); break; case '<=': $result += (int) ($notice->level <= $level); break; case '<': $result += (int) ($notice->level < $level); break; case '!=': $result += (int) ($notice->level != $level); break; } } } return $result; } /** * sort final report notice from priority and notice level */ public function sortFinalReport() { uasort($this->finalReporNotices, 'DUPX_NOTICE_ITEM::sortNoticeForPriorityAndLevel'); } /** * display final final report notice section * * @param string $section */ public function displayFinalReport($section) { foreach ($this->finalReporNotices as $id => $notice) { if (in_array($section, $notice->sections)) { self::finalReportNotice($id, $notice); } } } /** * * @param string $section * @param string $title */ public function displayFinalRepostSectionHtml($section, $title) { if ($this->haveSection($section)) { ?>
displayFinalReport($section); ?>
finalReporNotices as $notice) { if (in_array($section, $notice->sections)) { return true; } } return false; } /** * * @param null|string $section if null is a global result * * @return int // returns the worst level found * */ public function getSectionErrLevel($section = null) { $result = DUPX_NOTICE_ITEM::INFO; foreach ($this->finalReporNotices as $notice) { if (is_null($section) || in_array($section, $notice->sections)) { $result = max($result, $notice->level); } } return $result; } /** * * @param string $section * @param bool $echo * @return void|string */ public function getSectionErrLevelHtml($section = null, $echo = true) { return self::getErrorLevelHtml($this->getSectionErrLevel($section), $echo); } /** * Displa next step notice message * * @param bool $deleteListAfterDisaply * @return void */ public function displayStepMessages($deleteListAfterDisaply = true) { if (empty($this->nextStepNotices)) { return; } ?>
nextStepNotices as $notice) { self::stepMsg($notice); } ?>
nextStepNotices = array(); $this->saveNotices(); } } /** * * @param DUPX_NOTICE_ITEM $notice */ private static function stepMsg($notice) { $classes = array( 'notice', 'next-step', self::getClassFromLevel($notice->level) ); $haveContent = !empty($notice->faqLink) || !empty($notice->longMsg); ?>
level).': '.htmlentities($notice->shortMsg).''; ?>
faqLink)) { ?> See FAQ: faqLink['label']) ? $notice->faqLink['url'] : $notice->faqLink['label']); ?> faqLink) && !empty($notice->longMsg)) { echo '

'; } if (!empty($notice->longMsg)) { switch ($notice->longMsgMode) { case DUPX_NOTICE_ITEM::MSG_MODE_PRE: echo '
'.htmlentities($notice->longMsg).'
'; break; case DUPX_NOTICE_ITEM::MSG_MODE_HTML: echo $notice->longMsg; break; case DUPX_NOTICE_ITEM::MSG_MODE_DEFAULT: default: echo htmlentities($notice->longMsg); } } $longContent = ob_get_clean(); DUPX_U_Html::getMoreContent($longContent, 'info', 200); } ?>
level) ); $haveContent = !empty($notice->faqLink) || !empty($notice->longMsg); $contentId = 'notice-content-'.$id; $iconClasses = $haveContent ? 'fa fa-caret-right' : 'fa fa-toggle-empty'; $toggleLinkData = $haveContent ? 'data-type="toggle" data-target="#'.$contentId.'"' : ''; ?>
> shortMsg); ?>
open) { $infoClasses[] = 'no-display'; } ?>
faqLink)) { ?> See FAQ: faqLink['label']) ? $notice->faqLink['url'] : $notice->faqLink['label']); ?> faqLink) && !empty($notice->longMsg)) { echo '

'; } if (!empty($notice->longMsg)) { switch ($notice->longMsgMode) { case DUPX_NOTICE_ITEM::MSG_MODE_PRE: echo '
'.htmlentities($notice->longMsg).'
'; break; case DUPX_NOTICE_ITEM::MSG_MODE_HTML: echo $notice->longMsg; break; case DUPX_NOTICE_ITEM::MSG_MODE_DEFAULT: default: echo htmlentities($notice->longMsg); } } ?>
level, false).'] '.$notice->shortMsg; if (!empty($notice->sections)) { $result .= "\n\t".'SECTIONS: '.implode(',', $notice->sections); } if (!empty($notice->longMsg)) { $result .= "\n\t".'LONG MSG: '.$notice->longMsg; } return $result."\n"; } public function nextStepLog() { if (!empty($this->nextStepNotices)) { DUPX_Log::info( '===================================='."\n". 'NEXT STEP NOTICES'."\n". '===================================='); foreach ($this->nextStepNotices as $notice) { DUPX_Log::info(self::noticeToText($notice)); } DUPX_Log::info( '===================================='); } } public function finalReportLog($sections = array()) { if (!empty($this->finalReporNotices)) { DUPX_Log::info( '===================================='."\n". 'FINAL REPORT NOTICES LIST'."\n". '===================================='); foreach ($this->finalReporNotices as $notice) { if (count(array_intersect($notice->sections, $sections)) > 0) { DUPX_Log::info(self::noticeToText($notice)); } } DUPX_Log::info( '===================================='); } } /** * get html class from level * * @param int $level * @return string */ private static function getClassFromLevel($level) { switch ($level) { case DUPX_NOTICE_ITEM::INFO: return 'l-info'; case DUPX_NOTICE_ITEM::NOTICE: return 'l-notice'; case DUPX_NOTICE_ITEM::SOFT_WARNING: return 'l-swarning'; case DUPX_NOTICE_ITEM::HARD_WARNING: return 'l-hwarning'; case DUPX_NOTICE_ITEM::CRITICAL: return 'l-critical'; case DUPX_NOTICE_ITEM::FATAL: return 'l-fatal'; } } /** * get level label from level * * @param int $level * @param bool $echo * @return type */ public static function getErrorLevelHtml($level, $echo = true) { switch ($level) { case DUPX_NOTICE_ITEM::INFO: $label = 'good'; break; case DUPX_NOTICE_ITEM::NOTICE: $label = 'good'; break; case DUPX_NOTICE_ITEM::SOFT_WARNING: $label = 'warning'; break; case DUPX_NOTICE_ITEM::HARD_WARNING: $label = 'warning'; break; case DUPX_NOTICE_ITEM::CRITICAL: $label = 'critical error'; break; case DUPX_NOTICE_ITEM::FATAL: $label = 'fatal error'; break; default: return; } $classes = self::getClassFromLevel($level); ob_start(); ?> addNextStepNoticeMessage('Level info ('.DUPX_NOTICE_ITEM::INFO.')', DUPX_NOTICE_ITEM::INFO); $manager->addNextStepNoticeMessage('Level notice ('.DUPX_NOTICE_ITEM::NOTICE.')', DUPX_NOTICE_ITEM::NOTICE); $manager->addNextStepNoticeMessage('Level soft warning ('.DUPX_NOTICE_ITEM::SOFT_WARNING.')', DUPX_NOTICE_ITEM::SOFT_WARNING); $manager->addNextStepNoticeMessage('Level hard warning ('.DUPX_NOTICE_ITEM::HARD_WARNING.')', DUPX_NOTICE_ITEM::HARD_WARNING); $manager->addNextStepNoticeMessage('Level critical error ('.DUPX_NOTICE_ITEM::CRITICAL.')', DUPX_NOTICE_ITEM::CRITICAL); $manager->addNextStepNoticeMessage('Level fatal error ('.DUPX_NOTICE_ITEM::FATAL.')', DUPX_NOTICE_ITEM::FATAL); $manager->saveNotices(); } /** * test function */ public static function testNextStepFullMessageData() { $manager = self::getInstance(); $longMsg = <<Formattend long text
LONGMSG; $manager->addNextStepNotice(array( 'shortMsg' => 'Full elements next step message MODE HTML', 'level' => DUPX_NOTICE_ITEM::HARD_WARNING, 'longMsg' => $longMsg, 'longMsgMode' => DUPX_NOTICE_ITEM::MSG_MODE_HTML, 'faqLink' => array( 'url' => 'http://www.google.it', 'label' => 'google link' ) )); $longMsg = <<addNextStepNotice(array( 'shortMsg' => 'Full elements next step message MODE PRE', 'level' => DUPX_NOTICE_ITEM::HARD_WARNING, 'longMsg' => $longMsg, 'longMsgMode' => DUPX_NOTICE_ITEM::MSG_MODE_PRE, 'faqLink' => array( 'url' => 'http://www.google.it', 'label' => 'google link' ) )); $longMsg = <<addNextStepNotice(array( 'shortMsg' => 'Full elements next step message MODE DEFAULT', 'level' => DUPX_NOTICE_ITEM::HARD_WARNING, 'longMsg' => $longMsg, 'longMsgMode' => DUPX_NOTICE_ITEM::MSG_MODE_DEFAULT, 'faqLink' => array( 'url' => 'http://www.google.it', 'label' => 'google link' ) )); $longMsg = <<addNextStepNotice(array( 'shortMsg' => 'Full elements LONG LONG', 'level' => DUPX_NOTICE_ITEM::HARD_WARNING, 'longMsg' => $longMsg, 'longMsgMode' => DUPX_NOTICE_ITEM::MSG_MODE_DEFAULT, 'faqLink' => array( 'url' => 'http://www.google.it', 'label' => 'google link' ) )); $manager->saveNotices(); } /** * test function */ public static function testFinalReporMessaesLevels() { $section = 'general'; $manager = self::getInstance(); $manager->addFinalReportNoticeMessage('Level info ('.DUPX_NOTICE_ITEM::INFO.')', $section, DUPX_NOTICE_ITEM::INFO, DUPX_NOTICE_MANAGER::ADD_UNIQUE, 'test_fr_0'); $manager->addFinalReportNoticeMessage('Level notice ('.DUPX_NOTICE_ITEM::NOTICE.')', $section, DUPX_NOTICE_ITEM::NOTICE, DUPX_NOTICE_MANAGER::ADD_UNIQUE, 'test_fr_1'); $manager->addFinalReportNoticeMessage('Level soft warning ('.DUPX_NOTICE_ITEM::SOFT_WARNING.')', $section, DUPX_NOTICE_ITEM::SOFT_WARNING, DUPX_NOTICE_MANAGER::ADD_UNIQUE, 'test_fr_2'); $manager->addFinalReportNoticeMessage('Level hard warning ('.DUPX_NOTICE_ITEM::HARD_WARNING.')', $section, DUPX_NOTICE_ITEM::HARD_WARNING, DUPX_NOTICE_MANAGER::ADD_UNIQUE, 'test_fr_3'); $manager->addFinalReportNoticeMessage('Level critical error ('.DUPX_NOTICE_ITEM::CRITICAL.')', $section, DUPX_NOTICE_ITEM::CRITICAL, DUPX_NOTICE_MANAGER::ADD_UNIQUE, 'test_fr_4'); $manager->addFinalReportNoticeMessage('Level fatal error ('.DUPX_NOTICE_ITEM::FATAL.')', $section, DUPX_NOTICE_ITEM::FATAL, DUPX_NOTICE_MANAGER::ADD_UNIQUE, 'test_fr_5'); $manager->saveNotices(); } /** * test function */ public static function testFinalReportFullMessages() { $section = 'general'; $manager = self::getInstance(); $longMsg = <<Formattend long text
  • Proin dapibus mi eu erat pulvinar, id congue nisl egestas.
  • Nunc venenatis eros et sapien ornare consequat.
  • Mauris tincidunt est sit amet turpis placerat, a tristique dui porttitor.
  • Etiam volutpat lectus quis risus molestie faucibus.
  • Integer gravida eros sit amet sem viverra, a volutpat neque rutrum.
  • Aenean varius ipsum vitae lorem tempus rhoncus.
LONGMSG; $manager->addFinalReportNotice(array( 'shortMsg' => 'Full elements final report message', 'level' => DUPX_NOTICE_ITEM::HARD_WARNING, 'longMsg' => $longMsg, 'longMsgMode' => DUPX_NOTICE_ITEM::MSG_MODE_HTML, 'sections' => $section, 'faqLink' => array( 'url' => 'http://www.google.it', 'label' => 'google link' ) ), DUPX_NOTICE_MANAGER::ADD_UNIQUE, 'test_fr_full_1'); $manager->addFinalReportNotice(array( 'shortMsg' => 'Full elements final report message info high priority', 'level' => DUPX_NOTICE_ITEM::INFO, 'longMsg' => $longMsg, 'longMsgMode' => DUPX_NOTICE_ITEM::MSG_MODE_HTML, 'sections' => $section, 'faqLink' => array( 'url' => 'http://www.google.it', 'label' => 'google link' ), 'priority' => 5 ), DUPX_NOTICE_MANAGER::ADD_UNIQUE, 'test_fr_full_2'); $manager->saveNotices(); } //PHP 8 Requires method to be public public function __wakeup() { } private function __clone() { } } class DUPX_NOTICE_ITEM { const INFO = 0; const NOTICE = 1; const SOFT_WARNING = 2; const HARD_WARNING = 3; const CRITICAL = 4; const FATAL = 5; const MSG_MODE_DEFAULT = 'def'; const MSG_MODE_HTML = 'html'; const MSG_MODE_PRE = 'pre'; /** * * @var string text */ public $shortMsg = ''; /** * * @var string html text */ public $longMsg = ''; /** * * @var bool if true long msg can be html */ public $longMsgMode = self::MSG_MODE_DEFAULT; /** * * @var null|array // null = no faq link * array( 'label' => link text , 'url' => faq url) */ public $faqLink = array( 'label' => '', 'url' => '' ); /** * * @var string[] notice sections for final report only */ public $sections = array(); /** * * @var int */ public $level = self::NOTICE; /** * * @var int */ public $priority = 10; /** * * @var bool if true notice start open. For final report only */ public $open = false; /** * * @param string $shortMsg text * @param int $level * @param string $longMsg html text * @param string|string[] $sections * @param null|array $faqLink [ * 'url' => external link * 'label' => link text if empty get external url link * ] * @param int priority * @param bool open * @param string longMsgMode MSG_MODE_DEFAULT | MSG_MODE_HTML | MSG_MODE_PRE */ public function __construct($shortMsg, $level = self::INFO, $longMsg = '', $sections = array(), $faqLink = null, $priority = 10, $open = false, $longMsgMode = self::MSG_MODE_DEFAULT) { $this->shortMsg = (string) $shortMsg; $this->level = (int) $level; $this->longMsg = (string) $longMsg; $this->sections = is_array($sections) ? $sections : array($sections); $this->faqLink = $faqLink; $this->priority = $priority; $this->open = $open; $this->longMsgMode = $longMsgMode; } /** * * @return array [ * 'shortMsg' => text, * 'level' => level, * 'longMsg' => html text, * 'sections' => string|string[], * 'faqLink' => [ * 'url' => external link * 'label' => link text if empty get external url link * ] * 'priority' => int low first * 'open' => if true the tab is opene on final report * 'longMsgMode'=> MSG_MODE_DEFAULT | MSG_MODE_HTML | MSG_MODE_PRE * ] */ public function toArray() { return array( 'shortMsg' => $this->shortMsg, 'level' => $this->level, 'longMsg' => $this->longMsg, 'sections' => $this->sections, 'faqLink' => $this->faqLink, 'priority' => $this->priority, 'open' => $this->open, 'longMsgMode' => $this->longMsgMode ); } /** * * @return array [ * 'shortMsg' => text, * 'level' => level, * 'longMsg' => html text, * 'sections' => string|string[], * 'faqLink' => [ * 'url' => external link * 'label' => link text if empty get external url link * ], * priority * open * longMsgMode * ] * @return DUPX_NOTICE_ITEM */ public static function getItemFromArray($array) { if (isset($array['sections']) && !is_array($array['sections'])) { if (empty($array['sections'])) { $array['sections'] = array(); } else { $array['sections'] = array($array['sections']); } } $params = array_merge(self::getDefaultArrayParams(), $array); $result = new self($params['shortMsg'], $params['level'], $params['longMsg'], $params['sections'], $params['faqLink'], $params['priority'], $params['open'], $params['longMsgMode']); return $result; } /** * * @return array [ * 'shortMsg' => text, * 'level' => level, * 'longMsg' => html text, * 'sections' => string|string[], * 'faqLink' => [ * 'url' => external link * 'label' => link text if empty get external url link * ], * priority * open * longMsgMode * ] */ public static function getDefaultArrayParams() { return array( 'shortMsg' => '', 'level' => self::INFO, 'longMsg' => '', 'sections' => array(), 'faqLink' => null, 'priority' => 10, 'open' => false, 'longMsgMode' => self::MSG_MODE_DEFAULT ); } /** * before lower priority * before highest level * * @param DUPX_NOTICE_ITEM $a * @param DUPX_NOTICE_ITEM $b */ public static function sortNoticeForPriorityAndLevel($a, $b) { if ($a->priority == $b->priority) { if ($a->level == $b->level) { return 0; } else if ($a->level < $b->level) { return 1; } else { return -1; } } else if ($a->priority < $b->priority) { return -1; } else { return 1; } } }