Seditio Source
Root |
./othercms/croogo-4.0.7/vendor/cakephp/debug_kit/src/Model/Behavior/TimedBehavior.php
<?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
 * @since         DebugKit 1.3
 * @license       http://www.opensource.org/licenses/mit-license.php MIT License
 */
namespace DebugKit\Model\Behavior;

use
Cake\Event\Event;
use
Cake\ORM\Behavior;
use
DebugKit\DebugTimer;

/**
 * Class TimedBehavior
 */
class TimedBehavior extends Behavior
{

   
/**
     * beforeFind, starts a timer for a find operation.
     *
     * @param \Cake\Event\Event $event The beforeFind event
     * @param \Cake\ORM\Query $query Query
     * @return \Cake\ORM\Query
     */
   
public function beforeFind(Event $event, $query)
    {
       
$alias = $event->getSubject()->getAlias();
       
DebugTimer::start($alias . '_find', $alias . '->find()');

        return
$query->formatResults(function ($results) use ($alias) {
           
DebugTimer::stop($alias . '_find');

            return
$results;
        });
    }

   
/**
     * beforeSave, starts a time before a save is initiated.
     *
     * @param \Cake\Event\Event $event The beforeSave event
     * @return void
     */
   
public function beforeSave(Event $event)
    {
       
$alias = $event->getSubject()->getAlias();
       
DebugTimer::start($alias . '_save', $alias . '->save()');
    }

   
/**
     * afterSave, stop the timer started from a save.
     *
     * @param \Cake\Event\Event $event The afterSave event
     * @return void
     */
   
public function afterSave(Event $event)
    {
       
$alias = $event->getSubject()->getAlias();
       
DebugTimer::stop($alias . '_save');
    }
}