| <?php |
| /******************************************************************************* |
| * Copyright (c) 2014, 2015 Eclipse Foundation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Eric Poirier (Eclipse Foundation) - initial API and implementation |
| *******************************************************************************/ |
| |
| class Messages { |
| |
| function __construct() { |
| if (session_id() == '') { |
| session_start(); |
| } |
| |
| if (empty($_SESSION['eclipse_system_messages']) || !is_array($_SESSION['eclipse_system_messages'])) { |
| $_SESSION['eclipse_system_messages'] = array(); |
| } |
| } |
| |
| /** |
| * This function sets the message |
| * @param $name - string containing the name of the message |
| * @param $msg - string containing the message itself |
| * @param $type - string containing the type of the message |
| * */ |
| public function setMessages($name = "", $msg = "", $type = "") { |
| $allowed_type = array( |
| 'success', |
| 'info', |
| 'warning', |
| 'danger' |
| ); |
| if (in_array($type, $allowed_type) && !empty($msg) && !empty($name)) { |
| $_SESSION['eclipse_system_messages'][$name][$type][] = $msg; |
| } |
| } |
| |
| /** |
| * Convert message type to valid drupal message type |
| * |
| * drupal_set_message only supports 'status', |
| * 'warning' and 'error'. This translate a status |
| * from this class to a drupal status. |
| * |
| * @param string $type |
| */ |
| public function translateToDrupalStatus($type = ""){ |
| $type = strtolower($type); |
| switch($type) { |
| case 'success': |
| return 'status'; |
| case 'info': |
| case 'warning': |
| return 'warning'; |
| case 'danger': |
| return 'error'; |
| } |
| return 'status'; |
| } |
| |
| /** |
| * This function returns the Messages |
| * |
| * Messages are removed from $_SESSION['eclipse_system_messages'] |
| * after calling this function. |
| * |
| * @param $msg - array containing the names, types and content of each messages |
| * @return string |
| * */ |
| public function getMessages() { |
| $messages = $_SESSION['eclipse_system_messages']; |
| $_SESSION['eclipse_system_messages'] = array(); |
| $return = ""; |
| if (!empty($messages)) { |
| foreach ($messages as $type) { |
| foreach ($type as $key => $value) { |
| $list = '<ul>'; |
| if (count($value) == 1) { |
| if ($key == 'danger'){ |
| $org_value = $value[0]; |
| $value[0] = '<p><strong>' . $org_value . '</strong></p>'; |
| } |
| $return .= $this->_getMessageContainer($value[0], $key); |
| continue; |
| } |
| foreach ($value as $msg) { |
| $list .= '<li><strong>' . $msg . '</strong></li>'; |
| } |
| $list .= '</ul>'; |
| $return .= $this->_getMessageContainer($list, $key); |
| } |
| } |
| } |
| return $return; |
| } |
| |
| /** |
| * Get system message array |
| * |
| * Messages are removed from $_SESSION['eclipse_system_messages'] |
| * after calling this function. |
| * |
| * @return array |
| */ |
| function getMessagesArray(){ |
| $messages = $_SESSION['eclipse_system_messages']; |
| $_SESSION['eclipse_system_messages'] = array(); |
| $return = array(); |
| if (!empty($messages)) { |
| foreach ($messages as $type) { |
| foreach ($type as $key => $value) { |
| foreach ($value as $msg) { |
| $return[$key][] = $msg; |
| } |
| } |
| } |
| } |
| return $return; |
| } |
| |
| /** |
| * This function returns a DIV tag containing the $message with the proper CSS class |
| * @param $message - String containing the message |
| * @param $type - String containing the message type |
| * Accepted types: success, info, warning, danger |
| * @return string |
| * */ |
| private function _getMessageContainer($message = '', $type = 'success') { |
| $class = "stay-visible alert alert-" . $type; |
| return '<div class="' . $class . '" role="alert">' . $message . '</div>'; |
| } |
| } |