piotrpolak/pepiscms

View on GitHub
pepiscms/application/libraries/SimpleSessionMessage.php

Summary

Maintainability
A
35 mins
Test Coverage
<?php

/**
 * PepisCMS
 *
 * Simple content management system
 *
 * @package             PepisCMS
 * @author              Piotr Polak
 * @copyright           Copyright (c) 2007-2018, Piotr Polak
 * @license             See license.txt
 * @link                http://www.polak.ro/
 */

defined('BASEPATH') or exit('No direct script access allowed');

/**
 * SimpleSessionMessage
 *
 * @since 0.1.2
 */
class SimpleSessionMessage extends ContainerAware
{
    const FUNCTION_SUCCESS = 'display_success';
    const FUNCTION_TIP = 'display_tip';
    const FUNCTION_NOTIFICATION = 'display_notification';
    const FUNCTION_WARNING = 'display_warning';
    const FUNCTION_ERROR = 'display_error';

    protected $session_var_name = 'simple_session_message';

    /**
     * Default constructor
     */
    public function __construct()
    {
        if (!isset($_SESSION[$this->session_var_name . '_formatting_function'])) {
            $_SESSION[$this->session_var_name . '_formatting_function'] = self::FUNCTION_SUCCESS;
        }
    }

    /**
     * Sets message to be displayed, by label
     *
     * @param string $label_name
     * @param mixed $param1
     * @param mixed $param2
     * @param mixed $param3
     * @param mixed $param4
     * @return SimpleSessionMessage
     */
    public function setMessage($label_name, $param1 = null, $param2 = null, $param3 = null, $param4 = null)
    {
        if ($param1 === null) {
            $_SESSION[$this->session_var_name] = $this->lang->line($label_name);
        } else {
            $_SESSION[$this->session_var_name] = sprintf($this->lang->line($label_name), $param1, $param2, $param3, $param4);
        }

        return $this;
    }

    /**
     * Sets RAW message (not localized)
     *
     * @param string $message
     * @return SimpleSessionMessage
     */
    public function setRawMessage($message)
    {
        $_SESSION[$this->session_var_name] = $message;

        return $this;
    }

    /**
     * Sets message formatting function
     *
     * @param string $function_name
     * @return SimpleSessionMessage
     */
    public function setFormattingFunction($function_name = '')
    {
        $_SESSION[$this->session_var_name . '_formatting_function'] = $function_name;

        return $this;
    }

    /**
     * Returns localized message
     *
     * @return string|bool
     */
    public function getLocalizedMessage()
    {
        if (!isset($_SESSION[$this->session_var_name])) {
            return false;
        }

        $message = $_SESSION[$this->session_var_name];
        unset($_SESSION[$this->session_var_name]);

        if (!isset($_SESSION[$this->session_var_name . '_formatting_function'])) {
            return $message;
        }

        $function = $_SESSION[$this->session_var_name . '_formatting_function'];
        unset($_SESSION[$this->session_var_name . '_formatting_function']);

        return $function($message);
    }
}