PluginProbe
Packeta / 1.6.0
Packeta v1.6.0
2.3.2 2.3.1 trunk 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.3.0 1.3.1 1.3.2 1.4 1.4.1 1.4.2 1.4.3 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 All 56 releases
packeta / src / Packetery / Module / WpdbTracyPanel.php

WpdbTracyPanel.php in Packeta 1.6.0, at src/Packetery/Module/WpdbTracyPanel.php

105 lines 1.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Class WpdbTracyPanel
4 *
5 * @package packetery
6 */
7
8 declare( strict_types=1 );
9
10
11 namespace Packetery\Module;
12
13 use Packetery\Latte;
14 use Packetery\Tracy;
15
16 /**
17 * Class WpdbTracyPanel
18 *
19 * @package packetery
20 */
21 class WpdbTracyPanel implements Tracy\IBarPanel {
22
23 /**
24 * WpdbAdapter.
25 *
26 * @var WpdbAdapter
27 */
28 private $wpdbAdapter;
29
30 /**
31 * Latte engine.
32 *
33 * @var Latte\Engine
34 */
35 private $latteEngine;
36
37 /**
38 * Constructor.
39 *
40 * @param WpdbAdapter $wpdbAdapter WpdbAdapter.
41 * @param Latte\Engine $latteEngine Latte engine.
42 */
43 public function __construct(
44 WpdbAdapter $wpdbAdapter,
45 Latte\Engine $latteEngine
46 ) {
47 $this->wpdbAdapter = $wpdbAdapter;
48 $this->latteEngine = $latteEngine;
49 }
50
51 /**
52 * Get queries.
53 *
54 * @return \Generator
55 */
56 private function getPacketeryQueries(): \Generator {
57 $queries = $this->wpdbAdapter->getWpdbQueries();
58 $maxQueries = defined( 'PACKETERY_DEBUG_MAX_DB_PANEL_QUERIES' ) ? PACKETERY_DEBUG_MAX_DB_PANEL_QUERIES : 1000;
59
60 $count = 0;
61 foreach ( $queries as $queryInfo ) {
62 [ $query, $timeSpent, $funcList ] = $queryInfo;
63
64 if ( false === strpos( $funcList, 'Packetery\\' ) && false === strpos( $funcList, '/plugins/packeta/' ) ) {
65 continue;
66 }
67
68 yield [
69 'query' => $query,
70 'timeSpent' => $timeSpent * 1000,
71 'funcList' => $funcList,
72 ];
73
74 $count++;
75 if ( $count >= $maxQueries ) {
76 yield false;
77 break;
78 }
79 }
80 }
81
82 /**
83 * Gets HTML code for custom tab.
84 *
85 * @return string
86 */
87 public function getTab(): string {
88 return $this->latteEngine->renderToString( PACKETERY_PLUGIN_DIR . '/template/wpdb-tracy-panel-tab.latte' );
89 }
90
91 /**
92 * Gets HTML code for custom panel.
93 *
94 * @return string
95 */
96 public function getPanel(): string {
97 return $this->latteEngine->renderToString(
98 PACKETERY_PLUGIN_DIR . '/template/wpdb-tracy-panel.latte',
99 [
100 'queries' => $this->getPacketeryQueries(),
101 ]
102 );
103 }
104 }
105