Subversion Repositories SmartDukaan

Rev

Blame | Last modification | View Log | RSS feed

<?php
/**
 * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
 * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
 *
 * Licensed under The MIT License
 * Redistributions of files must retain the above copyright notice.
 *
 * @copyright     Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
 * @link          http://cakephp.org CakePHP(tm) Project
 * @license       http://www.opensource.org/licenses/mit-license.php MIT License
 */

App::uses('DebugPanel', 'DebugKit.Lib');

/**
 * Provides debug information on previous requests.
 *
 */
class HistoryPanel extends DebugPanel {

/**
 * Number of history elements to keep
 *
 * @var string
 */
        public $history = 5;

/**
 * Constructor
 *
 * @param array $settings Array of settings.
 * @return \HistoryPanel
 */
        public function __construct($settings) {
                if (isset($settings['history'])) {
                        $this->history = $settings['history'];
                }
        }

/**
 * beforeRender callback function
 *
 * @param Controller $controller
 * @return array contents for panel
 */
        public function beforeRender(Controller $controller) {
                $cacheKey = $controller->Toolbar->cacheKey;
                $toolbarHistory = Cache::read($cacheKey, 'debug_kit');
                $historyStates = array();
                if (is_array($toolbarHistory) && !empty($toolbarHistory)) {
                        $prefix = array();
                        if (!empty($controller->request->params['prefix'])) {
                                $prefix[$controller->request->params['prefix']] = false;
                        }
                        foreach ($toolbarHistory as $i => $state) {
                                if (!isset($state['request']['content']['url'])) {
                                        continue;
                                }
                                $title = $state['request']['content']['url'];
                                $query = @$state['request']['content']['query'];
                                if (isset($query['url'])) {
                                        unset($query['url']);
                                }
                                if (!empty($query)) {
                                        $title .= '?' . urldecode(http_build_query($query));
                                }
                                $historyStates[] = array(
                                        'title' => $title,
                                        'url' => array_merge($prefix, array(
                                                'plugin' => 'debug_kit',
                                                'controller' => 'toolbar_access',
                                                'action' => 'history_state',
                                                $i + 1))
                                );
                        }
                }
                if (count($historyStates) >= $this->history) {
                        array_pop($historyStates);
                }
                return $historyStates;
        }
}