blob: a3f7083dc35855039508cdbc7fc8a6608f9ce268 [file] [log] [blame]
<?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>';
}
}