Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 33
0.00% covered (danger)
0.00%
0 / 5
CRAP
0.00% covered (danger)
0.00%
0 / 1
Admin
0.00% covered (danger)
0.00%
0 / 33
0.00% covered (danger)
0.00%
0 / 5
156
0.00% covered (danger)
0.00%
0 / 1
 register_hooks
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 1
2
 view
0.00% covered (danger)
0.00%
0 / 10
0.00% covered (danger)
0.00%
0 / 1
12
 site_url_change
0.00% covered (danger)
0.00%
0 / 14
0.00% covered (danger)
0.00%
0 / 1
6
 login
0.00% covered (danger)
0.00%
0 / 3
0.00% covered (danger)
0.00%
0 / 1
30
 logout
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3namespace NewfoldLabs\WP\Module\Data\Listeners;
4
5/**
6 * Monitors generic admin events
7 */
8class Admin extends Listener {
9
10    /**
11     * Register all required hooks for the listener category
12     *
13     * @return void
14     */
15    public function register_hooks() {
16        // Admin pages
17        add_action( 'admin_footer', array( $this, 'view' ), 9 );
18        add_action( 'customize_controls_print_footer_scripts', array( $this, 'view' ) );
19
20        // Site URL changes
21        add_action( 'update_option_siteurl', array( $this, 'site_url_change' ), 10, 2 );
22
23        // Login
24        add_action( 'wp_login', array( $this, 'login' ), 10, 2 );
25
26        // Logout
27        add_action( 'wp_logout', array( $this, 'logout' ) );
28    }
29
30    /**
31     * Default admin event
32     *
33     * @return void
34     */
35    public function view() {
36        global $title;
37
38        if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
39            return;
40        }
41
42        $this->push(
43            'pageview',
44            array(
45                'page'       => get_site_url( null, $_SERVER['REQUEST_URI'] ),
46                'page_title' => $title,
47            )
48        );
49    }
50
51    /**
52     * Trigger event for Site URL change
53     *
54     * @param string $old_url The old url option value
55     * @param string $new_url The new url option value
56     *
57     * @return void
58     */
59    public function site_url_change( $old_url, $new_url ) {
60        if ( $new_url !== $old_url ) {
61            $this->push(
62                'site_url_change',
63                array(
64                    'action'   => 'site_url_change',
65                    'category' => 'admin',
66                    'data'     => array(
67                        'label_key' => 'after',
68                        'after'     => $new_url,
69                        'before'    => $old_url,
70                        'page'      => get_site_url( null, $_SERVER['REQUEST_URI'] ),
71                    ),
72                )
73            );
74        }
75    }
76
77    /**
78     * Login
79     *
80     * @hooked wp_login
81     *
82     * @param string   $user_login username
83     * @param \WP_User $user       logged in user info
84     */
85    public function login( $user_login, $user ): void {
86        $is_admin = array_key_exists( 'administrator', $user->get_role_caps() );
87        if ( ( $is_admin && $user->get_role_caps()['administrator'] ) || ( $user->get_role_caps() && $user->get_role_caps()['manage_options'] ) ) {
88            $this->push( 'login', array( 'user_email' => $user->user_email ) );
89        }
90    }
91
92    /**
93     * Logout
94     *
95     * @return void
96     */
97    public function logout() {
98        $this->push( 'logout' );
99    }
100}