WordPress.org

Make WordPress Core

Ticket #11979: fs-logger.php

File fs-logger.php, 16.9 KB (added by dd32, 4 years ago)
Line 
1<?php
2
3require_once ABSPATH . '/wp-admin/includes/class-wp-filesystem-base.php';
4require_once ABSPATH . '/wp-admin/includes/class-wp-filesystem-ftpext.php';
5
6define('FS_METHOD', 'Log');
7
8// If we're using DIRECT ONLY
9//add_filter('request_filesystem_credentials', '_cred' );
10//function _cred() {return true;}
11
12add_filter('install_plugin_complete_actions', '_actions_dump');
13function _actions_dump() { $GLOBALS['wp_filesystem']->dump_total_calls();  $GLOBALS['wp_filesystem']->dump_log(); }
14
15class WP_Filesystem_Log extends WP_Filesystem_FtpExt {
16
17        var $_log = array();
18        var $func_calls = array();
19
20        function WP_Filesystem_Log($one = null, $two = null, $three = null) {
21                parent::WP_Filesystem_FTPExt($one, $two, $three);
22
23        }
24
25        function log($function, $args, $caller) {
26                static $id = 0;
27                $id++;
28               
29                if ( isset($this->func_calls[ $function ]) )
30                        $this->func_calls[ $function ]++;
31                else
32                        $this->func_calls[ $function ] = 1;
33               
34                if ( $function == 'put_contents' )
35                        $args[1] = htmlentities(substr($args[1], 0, 20) . '....');
36               
37                $this->_log[$id] = compact('function', 'args', 'caller');
38                return $id;
39        }
40        function set_result($id, $res) {
41                if ( is_string($res) && strlen($res) > 20 )
42                        $res = substr($res, 0, 20) . '....';
43                $this->_log[$id]['res'] = $res;
44        }
45       
46        function dump_log() {
47                var_dump($this->_log);
48        }
49        function dump_total_calls() {
50                asort($this->func_calls);
51                var_dump($this->func_calls);
52        }
53        function __destruct() {
54                //$this->dump_log();
55        }
56
57        function connect() {
58                $function = __FUNCTION__;
59                $args = func_get_args();
60                $_caller = debug_backtrace();
61                $_caller = $_caller[1];
62                $caller = (isset($_caller['class']) ? $_caller['class'] . $_caller['type'] : '') . $_caller['function'];
63                if ( isset($_caller['line']) )
64                        $caller .= '()#L' . $_caller['line'];
65                if ( isset($_caller['file']) )
66                        $caller .= ' of ' . basename($_caller['file']);
67                $id = $this->log($function, $args, $caller);
68                $result = call_user_func_array( 'parent::' . $function, $args);
69                $this->set_result($id, $result);
70                return $result;
71        }
72
73        function get_contents() {
74                $function = __FUNCTION__;
75                $args = func_get_args();
76                $_caller = debug_backtrace();
77                $_caller = $_caller[1];
78                $caller = (isset($_caller['class']) ? $_caller['class'] . $_caller['type'] : '') . $_caller['function'];
79                if ( isset($_caller['line']) )
80                        $caller .= '()#L' . $_caller['line'];
81                if ( isset($_caller['file']) )
82                        $caller .= ' of ' . basename($_caller['file']);
83                $id = $this->log($function, $args, $caller);
84                $result = call_user_func_array( 'parent::' . $function, $args);
85                $this->set_result($id, $result);
86                return $result;
87        }
88
89        function get_contents_array() {
90                $function = __FUNCTION__;
91                $args = func_get_args();
92                $_caller = debug_backtrace();
93                $_caller = $_caller[1];
94                $caller = (isset($_caller['class']) ? $_caller['class'] . $_caller['type'] : '') . $_caller['function'];
95                if ( isset($_caller['line']) )
96                        $caller .= '()#L' . $_caller['line'];
97                if ( isset($_caller['file']) )
98                        $caller .= ' of ' . basename($_caller['file']);
99                $id = $this->log($function, $args, $caller);
100                $result = call_user_func_array( 'parent::' . $function, $args);
101                $this->set_result($id, $result);
102                return $result;
103        }
104
105        function put_contents() {
106                $function = __FUNCTION__;
107                $args = func_get_args();
108                $_caller = debug_backtrace();
109                $_caller = $_caller[1];
110                $caller = (isset($_caller['class']) ? $_caller['class'] . $_caller['type'] : '') . $_caller['function'];
111                if ( isset($_caller['line']) )
112                        $caller .= '()#L' . $_caller['line'];
113                if ( isset($_caller['file']) )
114                        $caller .= ' of ' . basename($_caller['file']);
115                $id = $this->log($function, $args, $caller);
116                $result = call_user_func_array( 'parent::' . $function, $args);
117                $this->set_result($id, $result);
118                return $result;
119        }
120
121        function cwd() {
122                $function = __FUNCTION__;
123                $args = func_get_args();
124                $_caller = debug_backtrace();
125                $_caller = $_caller[1];
126                $caller = (isset($_caller['class']) ? $_caller['class'] . $_caller['type'] : '') . $_caller['function'];
127                if ( isset($_caller['line']) )
128                        $caller .= '()#L' . $_caller['line'];
129                if ( isset($_caller['file']) )
130                        $caller .= ' of ' . basename($_caller['file']);
131                $id = $this->log($function, $args, $caller);
132                $result = call_user_func_array( 'parent::' . $function, $args);
133                $this->set_result($id, $result);
134                return $result;
135        }
136
137        function chdir() {
138                $function = __FUNCTION__;
139                $args = func_get_args();
140                $_caller = debug_backtrace();
141                $_caller = $_caller[1];
142                $caller = (isset($_caller['class']) ? $_caller['class'] . $_caller['type'] : '') . $_caller['function'];
143                if ( isset($_caller['line']) )
144                        $caller .= '()#L' . $_caller['line'];
145                if ( isset($_caller['file']) )
146                        $caller .= ' of ' . basename($_caller['file']);
147                $id = $this->log($function, $args, $caller);
148                $result = call_user_func_array( 'parent::' . $function, $args);
149                $this->set_result($id, $result);
150                return $result;
151        }
152
153        function chgrp() {
154                $function = __FUNCTION__;
155                $args = func_get_args();
156                $_caller = debug_backtrace();
157                $_caller = $_caller[1];
158                $caller = (isset($_caller['class']) ? $_caller['class'] . $_caller['type'] : '') . $_caller['function'];
159                if ( isset($_caller['line']) )
160                        $caller .= '()#L' . $_caller['line'];
161                if ( isset($_caller['file']) )
162                        $caller .= ' of ' . basename($_caller['file']);
163                $id = $this->log($function, $args, $caller);
164                $result = call_user_func_array( 'parent::' . $function, $args);
165                $this->set_result($id, $result);
166                return $result;
167        }
168
169        function chmod() {
170                $function = __FUNCTION__;
171                $args = func_get_args();
172                $_caller = debug_backtrace();
173                $_caller = $_caller[1];
174                $caller = (isset($_caller['class']) ? $_caller['class'] . $_caller['type'] : '') . $_caller['function'];
175                if ( isset($_caller['line']) )
176                        $caller .= '()#L' . $_caller['line'];
177                if ( isset($_caller['file']) )
178                        $caller .= ' of ' . basename($_caller['file']);
179                $id = $this->log($function, $args, $caller);
180                $result = call_user_func_array( 'parent::' . $function, $args);
181                $this->set_result($id, $result);
182                return $result;
183        }
184
185        function chown() {
186                $function = __FUNCTION__;
187                $args = func_get_args();
188                $_caller = debug_backtrace();
189                $_caller = $_caller[1];
190                $caller = (isset($_caller['class']) ? $_caller['class'] . $_caller['type'] : '') . $_caller['function'];
191                if ( isset($_caller['line']) )
192                        $caller .= '()#L' . $_caller['line'];
193                if ( isset($_caller['file']) )
194                        $caller .= ' of ' . basename($_caller['file']);
195                $id = $this->log($function, $args, $caller);
196                $result = call_user_func_array( 'parent::' . $function, $args);
197                $this->set_result($id, $result);
198                return $result;
199        }
200
201        function owner() {
202                $function = __FUNCTION__;
203                $args = func_get_args();
204                $_caller = debug_backtrace();
205                $_caller = $_caller[1];
206                $caller = (isset($_caller['class']) ? $_caller['class'] . $_caller['type'] : '') . $_caller['function'];
207                if ( isset($_caller['line']) )
208                        $caller .= '()#L' . $_caller['line'];
209                if ( isset($_caller['file']) )
210                        $caller .= ' of ' . basename($_caller['file']);
211                $id = $this->log($function, $args, $caller);
212                $result = call_user_func_array( 'parent::' . $function, $args);
213                $this->set_result($id, $result);
214                return $result;
215        }
216
217        function getchmod() {
218                $function = __FUNCTION__;
219                $args = func_get_args();
220                $_caller = debug_backtrace();
221                $_caller = $_caller[1];
222                $caller = (isset($_caller['class']) ? $_caller['class'] . $_caller['type'] : '') . $_caller['function'];
223                if ( isset($_caller['line']) )
224                        $caller .= '()#L' . $_caller['line'];
225                if ( isset($_caller['file']) )
226                        $caller .= ' of ' . basename($_caller['file']);
227                $id = $this->log($function, $args, $caller);
228                $result = call_user_func_array( 'parent::' . $function, $args);
229                $this->set_result($id, $result);
230                return $result;
231        }
232       
233        function group() {
234                $function = __FUNCTION__;
235                $args = func_get_args();
236                $_caller = debug_backtrace();
237                $_caller = $_caller[1];
238                $caller = (isset($_caller['class']) ? $_caller['class'] . $_caller['type'] : '') . $_caller['function'];
239                if ( isset($_caller['line']) )
240                        $caller .= '()#L' . $_caller['line'];
241                if ( isset($_caller['file']) )
242                        $caller .= ' of ' . basename($_caller['file']);
243                $id = $this->log($function, $args, $caller);
244                $result = call_user_func_array( 'parent::' . $function, $args);
245                $this->set_result($id, $result);
246                return $result;
247        }
248
249        function copy() {
250                $function = __FUNCTION__;
251                $args = func_get_args();
252                $_caller = debug_backtrace();
253                $_caller = $_caller[1];
254                $caller = (isset($_caller['class']) ? $_caller['class'] . $_caller['type'] : '') . $_caller['function'];
255                if ( isset($_caller['line']) )
256                        $caller .= '()#L' . $_caller['line'];
257                if ( isset($_caller['file']) )
258                        $caller .= ' of ' . basename($_caller['file']);
259                $id = $this->log($function, $args, $caller);
260                $result = call_user_func_array( 'parent::' . $function, $args);
261                $this->set_result($id, $result);
262                return $result;
263        }
264
265        function move() {
266                $function = __FUNCTION__;
267                $args = func_get_args();
268                $_caller = debug_backtrace();
269                $_caller = $_caller[1];
270                $caller = (isset($_caller['class']) ? $_caller['class'] . $_caller['type'] : '') . $_caller['function'];
271                if ( isset($_caller['line']) )
272                        $caller .= '()#L' . $_caller['line'];
273                if ( isset($_caller['file']) )
274                        $caller .= ' of ' . basename($_caller['file']);
275                $id = $this->log($function, $args, $caller);
276                $result = call_user_func_array( 'parent::' . $function, $args);
277                $this->set_result($id, $result);
278                return $result;
279        }
280
281        function delete() {
282                $function = __FUNCTION__;
283                $args = func_get_args();
284                $_caller = debug_backtrace();
285                $_caller = $_caller[1];
286                $caller = (isset($_caller['class']) ? $_caller['class'] . $_caller['type'] : '') . $_caller['function'];
287                if ( isset($_caller['line']) )
288                        $caller .= '()#L' . $_caller['line'];
289                if ( isset($_caller['file']) )
290                        $caller .= ' of ' . basename($_caller['file']);
291                $id = $this->log($function, $args, $caller);
292                $result = call_user_func_array( 'parent::' . $function, $args);
293                $this->set_result($id, $result);
294                return $result;
295        }
296
297        function exists() {
298                $function = __FUNCTION__;
299                $args = func_get_args();
300                $_caller = debug_backtrace();
301                $_caller = $_caller[1];
302                $caller = (isset($_caller['class']) ? $_caller['class'] . $_caller['type'] : '') . $_caller['function'];
303                if ( isset($_caller['line']) )
304                        $caller .= '()#L' . $_caller['line'];
305                if ( isset($_caller['file']) )
306                        $caller .= ' of ' . basename($_caller['file']);
307                $id = $this->log($function, $args, $caller);
308                $result = call_user_func_array( 'parent::' . $function, $args);
309                $this->set_result($id, $result);
310                return $result;
311        }
312
313        function is_file() {
314                $function = __FUNCTION__;
315                $args = func_get_args();
316                $_caller = debug_backtrace();
317                $_caller = $_caller[1];
318                $caller = (isset($_caller['class']) ? $_caller['class'] . $_caller['type'] : '') . $_caller['function'];
319                if ( isset($_caller['line']) )
320                        $caller .= '()#L' . $_caller['line'];
321                if ( isset($_caller['file']) )
322                        $caller .= ' of ' . basename($_caller['file']);
323                $id = $this->log($function, $args, $caller);
324                $result = call_user_func_array( 'parent::' . $function, $args);
325                $this->set_result($id, $result);
326                return $result;
327        }
328
329        function is_dir() {
330                $function = __FUNCTION__;
331                $args = func_get_args();
332                $_caller = debug_backtrace();
333                $_caller = $_caller[1];
334                $caller = (isset($_caller['class']) ? $_caller['class'] . $_caller['type'] : '') . $_caller['function'];
335                if ( isset($_caller['line']) )
336                        $caller .= '()#L' . $_caller['line'];
337                if ( isset($_caller['file']) )
338                        $caller .= ' of ' . basename($_caller['file']);
339                $id = $this->log($function, $args, $caller);
340                $result = call_user_func_array( 'parent::' . $function, $args);
341                $this->set_result($id, $result);
342                return $result;
343        }
344
345        function is_readable() {
346                $function = __FUNCTION__;
347                $args = func_get_args();
348                $_caller = debug_backtrace();
349                $_caller = $_caller[1];
350                $caller = (isset($_caller['class']) ? $_caller['class'] . $_caller['type'] : '') . $_caller['function'];
351                if ( isset($_caller['line']) )
352                        $caller .= '()#L' . $_caller['line'];
353                if ( isset($_caller['file']) )
354                        $caller .= ' of ' . basename($_caller['file']);
355                $id = $this->log($function, $args, $caller);
356                $result = call_user_func_array( 'parent::' . $function, $args);
357                $this->set_result($id, $result);
358                return $result;
359        }
360
361        function is_writable() {
362                $function = __FUNCTION__;
363                $args = func_get_args();
364                $_caller = debug_backtrace();
365                $_caller = $_caller[1];
366                $caller = (isset($_caller['class']) ? $_caller['class'] . $_caller['type'] : '') . $_caller['function'];
367                if ( isset($_caller['line']) )
368                        $caller .= '()#L' . $_caller['line'];
369                if ( isset($_caller['file']) )
370                        $caller .= ' of ' . basename($_caller['file']);
371                $id = $this->log($function, $args, $caller);
372                $result = call_user_func_array( 'parent::' . $function, $args);
373                $this->set_result($id, $result);
374                return $result;
375        }
376
377        function atime() {
378                $function = __FUNCTION__;
379                $args = func_get_args();
380                $_caller = debug_backtrace();
381                $_caller = $_caller[1];
382                $caller = (isset($_caller['class']) ? $_caller['class'] . $_caller['type'] : '') . $_caller['function'];
383                if ( isset($_caller['line']) )
384                        $caller .= '()#L' . $_caller['line'];
385                if ( isset($_caller['file']) )
386                        $caller .= ' of ' . basename($_caller['file']);
387                $id = $this->log($function, $args, $caller);
388                $result = call_user_func_array( 'parent::' . $function, $args);
389                $this->set_result($id, $result);
390                return $result;
391        }
392
393        function mtime() {
394                $function = __FUNCTION__;
395                $args = func_get_args();
396                $_caller = debug_backtrace();
397                $_caller = $_caller[1];
398                $caller = (isset($_caller['class']) ? $_caller['class'] . $_caller['type'] : '') . $_caller['function'];
399                if ( isset($_caller['line']) )
400                        $caller .= '()#L' . $_caller['line'];
401                if ( isset($_caller['file']) )
402                        $caller .= ' of ' . basename($_caller['file']);
403                $id = $this->log($function, $args, $caller);
404                $result = call_user_func_array( 'parent::' . $function, $args);
405                $this->set_result($id, $result);
406                return $result;
407        }
408        function size() {
409                $function = __FUNCTION__;
410                $args = func_get_args();
411                $_caller = debug_backtrace();
412                $_caller = $_caller[1];
413                $caller = (isset($_caller['class']) ? $_caller['class'] . $_caller['type'] : '') . $_caller['function'];
414                if ( isset($_caller['line']) )
415                        $caller .= '()#L' . $_caller['line'];
416                if ( isset($_caller['file']) )
417                        $caller .= ' of ' . basename($_caller['file']);
418                $id = $this->log($function, $args, $caller);
419                $result = call_user_func_array( 'parent::' . $function, $args);
420                $this->set_result($id, $result);
421                return $result;
422        }
423
424        function touch() {
425                $function = __FUNCTION__;
426                $args = func_get_args();
427                $_caller = debug_backtrace();
428                $_caller = $_caller[1];
429                $caller = (isset($_caller['class']) ? $_caller['class'] . $_caller['type'] : '') . $_caller['function'];
430                if ( isset($_caller['line']) )
431                        $caller .= '()#L' . $_caller['line'];
432                if ( isset($_caller['file']) )
433                        $caller .= ' of ' . basename($_caller['file']);
434                $id = $this->log($function, $args, $caller);
435                $result = call_user_func_array( 'parent::' . $function, $args);
436                $this->set_result($id, $result);
437                return $result;
438        }
439
440        function mkdir() {
441                $function = __FUNCTION__;
442                $args = func_get_args();
443                $_caller = debug_backtrace();
444                $_caller = $_caller[1];
445                $caller = (isset($_caller['class']) ? $_caller['class'] . $_caller['type'] : '') . $_caller['function'];
446                if ( isset($_caller['line']) )
447                        $caller .= '()#L' . $_caller['line'];
448                if ( isset($_caller['file']) )
449                        $caller .= ' of ' . basename($_caller['file']);
450                $id = $this->log($function, $args, $caller);
451                $result = call_user_func_array( 'parent::' . $function, $args);
452                $this->set_result($id, $result);
453                return $result;
454        }
455
456        function rmdir() {
457                $function = __FUNCTION__;
458                $args = func_get_args();
459                $_caller = debug_backtrace();
460                $_caller = $_caller[1];
461                $caller = (isset($_caller['class']) ? $_caller['class'] . $_caller['type'] : '') . $_caller['function'];
462                if ( isset($_caller['line']) )
463                        $caller .= '()#L' . $_caller['line'];
464                if ( isset($_caller['file']) )
465                        $caller .= ' of ' . basename($_caller['file']);
466                $id = $this->log($function, $args, $caller);
467                $result = call_user_func_array( 'parent::' . $function, $args);
468                $this->set_result($id, $result);
469                return $result;
470        }
471
472        function dirlist() {
473                $function = __FUNCTION__;
474                $args = func_get_args();
475                $_caller = debug_backtrace();
476                $_caller = $_caller[1];
477                $caller = (isset($_caller['class']) ? $_caller['class'] . $_caller['type'] : '') . $_caller['function'];
478                if ( isset($_caller['line']) )
479                        $caller .= '()#L' . $_caller['line'];
480                if ( isset($_caller['file']) )
481                        $caller .= ' of ' . basename($_caller['file']);
482                $id = $this->log($function, $args, $caller);
483                $result = call_user_func_array( 'parent::' . $function, $args);
484                $this->set_result($id, $result);
485                return $result;
486        }
487}