1<?php 2 3App::uses('CakeEvent', 'Event'); 4App::uses('DebugTimer', 'DebugKit.Lib'); 5App::uses('CrudListener', 'Crud.Controller/Crud'); 6 7/** 8 * Implements timings for DebugKit / Crud 9 * 10 * Licensed under The MIT License 11 * For full copyright and license information, please see the LICENSE.txt 12 */ 13class DebugKitListener extends CrudListener { 14 15/** 16 * List of events implemented by this class 17 * 18 * @return array 19 */ 20 public function implementedEvents() { 21 return array( 22 'Crud.startup' => array('callable' => 'startup'), 23 'Crud.beforeHandle' => array('callable' => 'beforeHandle', 'priority' => 1), 24 'Crud.beforeRender' => array('callable' => 'beforeRender', 'priority' => 5000), 25 26 'Crud.beforePaginate' => array('callable' => 'beforePaginate', 'priority' => 1), 27 'Crud.afterPaginate' => array('callable' => 'afterPaginate', 'priority' => 5000), 28 29 'Crud.beforeSave' => array('callable' => 'beforeSave', 'priority' => 1), 30 'Crud.afterSave' => array('callable' => 'afterSave', 'priority' => 5000), 31 32 'Crud.beforeFind' => array('callable' => 'beforeFind', 'priority' => 1), 33 'Crud.afterFind' => array('callable' => 'afterFind', 'priority' => 5000), 34 35 'Crud.beforeDelete' => array('callable' => 'beforeDelete', 'priority' => 1), 36 'Crud.afterDelete' => array('callable' => 'afterDelete', 'priority' => 5000), 37 ); 38 } 39 40/** 41 * Start timer for Crud.beforeHandle 42 * 43 * And enable event logging. The Crud.startup event will not itself have been logged 44 * 45 * @param CakeEvent $event 46 * @return void 47 */ 48 public function startup(CakeEvent $event) { 49 $this->_crud()->config('eventLogging', true); 50 $this->_crud()->logEvent('Crud.startup'); 51 } 52 53/** 54 * Start timer for Crud.init 55 * 56 * And enable event logging. The Crud.initialize event will not itself have been logged 57 * 58 * @param CakeEvent $event 59 * @return void 60 */ 61 public function beforeHandle(CakeEvent $event) { 62 parent::beforeHandle($event); 63 64 DebugTimer::start('Event: Crud.beforeHandle'); 65 } 66 67/** 68 * Stop timer for Crud.init 69 * 70 * @param CakeEvent $event 71 * @return void 72 */ 73 public function beforeRender(CakeEvent $event) { 74 DebugTimer::stop('Event: Crud.beforeHandle'); 75 } 76 77/** 78 * Start timer for Crud.Paginate 79 * 80 * @param CakeEvent $event 81 * @return void 82 */ 83 public function beforePaginate(CakeEvent $event) { 84 DebugTimer::start('Event: Crud.Paginate'); 85 } 86 87/** 88 * Stop timer for Crud.Paginate 89 * 90 * @param CakeEvent $event 91 * @return void 92 */ 93 public function afterPaginate(CakeEvent $event) { 94 DebugTimer::stop('Event: Crud.Paginate'); 95 } 96 97/** 98 * Start timer for Crud.Save 99 * 100 * @param CakeEvent $event 101 * @return void 102 */ 103 public function beforeSave(CakeEvent $event) { 104 DebugTimer::start('Event: Crud.Save'); 105 } 106 107/** 108 * Stop timer for Crud.Save 109 * 110 * @param CakeEvent $event 111 * @return void 112 */ 113 public function afterSave(CakeEvent $event) { 114 DebugTimer::stop('Event: Crud.Save'); 115 } 116 117/** 118 * Start timer for Crud.Find 119 * 120 * @param CakeEvent $event 121 * @return void 122 */ 123 public function beforeFind(CakeEvent $event) { 124 DebugTimer::start('Event: Crud.Find'); 125 } 126 127/** 128 * Stop timer for Crud.Find 129 * 130 * @param CakeEvent $event 131 * @return void 132 */ 133 public function afterFind(CakeEvent $event) { 134 DebugTimer::stop('Event: Crud.Find'); 135 } 136 137/** 138 * Start timer for Crud.Delete 139 * 140 * @param CakeEvent $event 141 * @return void 142 */ 143 public function beforeDelete(CakeEvent $event) { 144 DebugTimer::start('Event: Crud.Delete'); 145 } 146 147/** 148 * Stop timer for Crud.Delete 149 * 150 * @param CakeEvent $event 151 * @return void 152 */ 153 public function afterDelete(CakeEvent $event) { 154 DebugTimer::stop('Event: Crud.Delete'); 155 } 156 157} 158