Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 393
0.00% covered (danger)
0.00%
0 / 58
CRAP
n/a
0 / 0
zeroBS_isPage
0.00% covered (danger)
0.00%
0 / 20
0.00% covered (danger)
0.00%
0 / 1
210
zeroBS_hasGETParams
0.00% covered (danger)
0.00%
0 / 10
0.00% covered (danger)
0.00%
0 / 1
56
zeroBS_hasGETParamsWithValues
0.00% covered (danger)
0.00%
0 / 13
0.00% covered (danger)
0.00%
0 / 1
110
zeroBSCRM_isLoginPage
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
zeroBSCRM_isWelcomeWizPage
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
12
zeroBSCRM_isAPIRequest
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 1
30
zeroBSCRM_isRestUrl
0.00% covered (danger)
0.00%
0 / 7
0.00% covered (danger)
0.00%
0 / 1
12
zeroBSCRM_isClientPortalPage
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
6
zeroBSCRM_is_ZBS_custom_post_page
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
zeroBSCRM_isAdminPage
0.00% covered (danger)
0.00%
0 / 18
0.00% covered (danger)
0.00%
0 / 1
156
zeroBSCRM_is_zbs_edit_page
0.00% covered (danger)
0.00%
0 / 24
0.00% covered (danger)
0.00%
0 / 1
56
zeroBSCRM_is_delete_page
0.00% covered (danger)
0.00%
0 / 11
0.00% covered (danger)
0.00%
0 / 1
12
zeroBSCRM_isAnyContactPage
0.00% covered (danger)
0.00%
0 / 17
0.00% covered (danger)
0.00%
0 / 1
90
zeroBSCRM_is_contact_list_page
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
zeroBSCRM_is_existingcustomer_edit_page
0.00% covered (danger)
0.00%
0 / 13
0.00% covered (danger)
0.00%
0 / 1
20
zeroBSCRM_is_customer_edit_page
0.00% covered (danger)
0.00%
0 / 21
0.00% covered (danger)
0.00%
0 / 1
20
zeroBSCRM_is_customer_view_page
0.00% covered (danger)
0.00%
0 / 18
0.00% covered (danger)
0.00%
0 / 1
12
zeroBSCRM_is_customer_new_page
0.00% covered (danger)
0.00%
0 / 22
0.00% covered (danger)
0.00%
0 / 1
42
zeroBSCRM_is_customertags_page
0.00% covered (danger)
0.00%
0 / 12
0.00% covered (danger)
0.00%
0 / 1
6
zeroBSCRM_is_company_list_page
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
zeroBSCRM_is_company_view_page
0.00% covered (danger)
0.00%
0 / 10
0.00% covered (danger)
0.00%
0 / 1
6
zeroBSCRM_is_company_new_page
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
zeroBSCRM_is_company_edit_page
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
zeroBSCRM_is_existingcompany_edit_page
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
zeroBSCRM_is_companytags_page
0.00% covered (danger)
0.00%
0 / 12
0.00% covered (danger)
0.00%
0 / 1
6
zeroBSCRM_isAnyTransactionPage
0.00% covered (danger)
0.00%
0 / 9
0.00% covered (danger)
0.00%
0 / 1
30
zeroBSCRM_is_transaction_list_page
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
zeroBSCRM_is_transaction_new_page
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
zeroBSCRM_is_transaction_edit_page
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
zeroBSCRM_is_transactiontags_page
0.00% covered (danger)
0.00%
0 / 12
0.00% covered (danger)
0.00%
0 / 1
6
zeroBSCRM_isAnyInvoicePage
0.00% covered (danger)
0.00%
0 / 7
0.00% covered (danger)
0.00%
0 / 1
20
zeroBSCRM_is_invoice_list_page
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
zeroBSCRM_is_invoice_new_page
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
zeroBSCRM_is_invoice_edit_page
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
zeroBSCRM_is_invoicetags_page
0.00% covered (danger)
0.00%
0 / 8
0.00% covered (danger)
0.00%
0 / 1
2
zeroBSCRM_isAnyQuotePage
0.00% covered (danger)
0.00%
0 / 11
0.00% covered (danger)
0.00%
0 / 1
42
zeroBSCRM_is_quote_list_page
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
zeroBSCRM_is_quo_new_page
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
zeroBSCRM_is_quo_edit_page
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
zeroBSCRM_is_quotetags_page
0.00% covered (danger)
0.00%
0 / 8
0.00% covered (danger)
0.00%
0 / 1
2
zeroBSCRM_is_quotetemplate_new_page
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
zeroBSCRM_is_quotetemplate_edit_page
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
zeroBSCRM_isAnyTaskPage
0.00% covered (danger)
0.00%
0 / 11
0.00% covered (danger)
0.00%
0 / 1
42
zeroBSCRM_is_task_new_page
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
zeroBSCRM_is_task_edit_page
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
zeroBSCRM_is_task_calendar_page
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
zeroBSCRM_is_task_list_page
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
zeroBSCRM_is_tasktags_page
0.00% covered (danger)
0.00%
0 / 8
0.00% covered (danger)
0.00%
0 / 1
2
zeroBSCRM_isAnyFormPage
0.00% covered (danger)
0.00%
0 / 13
0.00% covered (danger)
0.00%
0 / 1
56
zeroBSCRM_is_form_new_page
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
zeroBSCRM_is_form_edit_page
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
zeroBSCRM_is_form_list_page
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
zeroBSCRM_is_formtags_page
0.00% covered (danger)
0.00%
0 / 8
0.00% covered (danger)
0.00%
0 / 1
2
zeroBSCRM_is_segment_edit_page
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
zeroBSCRM_is_segment_new_page
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
zeroBSCRM_is_profile_page
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
jpcrm_is_settings_page
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
jpcrm_is_full_width_page
0.00% covered (danger)
0.00%
0 / 17
0.00% covered (danger)
0.00%
0 / 1
6
1<?php
2/*
3 * Jetpack CRM
4 * https://jetpackcrm.com
5 * V1.20
6 *
7 * Copyright 2020 Automattic
8 *
9 * Date: 01/11/16
10 */
11
12/*
13======================================================
14    Breaking Checks ( stops direct access )
15    ====================================================== */
16if ( ! defined( 'ZEROBSCRM_PATH' ) ) {
17    exit( 0 );
18}
19/*
20======================================================
21    / Breaking Checks
22    ====================================================== */
23
24    // =========  GENERIC ============================================
25
26    // Centralised func which does a lot of the lifting used throughout these check funcs
27function zeroBS_isPage( $pageArr = array(), $postTypes = false, $adminPages = false, $includeFrontEnd = false ) {
28
29    global $pagenow;
30    // make sure we are on the backend
31    if ( ! $includeFrontEnd ) {
32        if ( ! is_admin() ) {
33            return false;
34        }
35    }
36
37    // check in array (like  array( 'post.php', 'post-new.php' ))
38    if ( in_array( $pagenow, $pageArr ) ) {
39
40        if ( is_array( $postTypes ) ) {
41
42            $postID = -1;
43
44            // catches get
45            if ( isset( $_GET['post'] ) ) {
46                $postID = (int) sanitize_text_field( $_GET['post'] );
47            }
48
49            // catches post saving / update
50            if ( isset( $_POST['post_ID'] ) ) {
51                $postID = (int) sanitize_text_field( $_POST['post_ID'] );
52            }
53
54            // check post type?
55            if ( $postID !== -1 && in_array( get_post_type( $postID ), $postTypes ) ) {
56                return true;
57            }
58
59            // WH added: needed for post-new.php etc.
60            if ( isset( $_GET['post_type'] ) && in_array( sanitize_text_field( $_GET['post_type'] ), $postTypes ) ) {
61                return true;
62            }
63        } elseif ( is_array( $adminPages ) ) {
64
65            // check page slug
66            if ( isset( $_GET['page'] ) && in_array( sanitize_text_field( $_GET['page'] ), $adminPages ) ) {
67                return true;
68            }
69        } else {
70
71            // no post types given, but page = $pageArr, so return true
72            return true;
73
74        }
75    }
76
77    return false;
78}
79    // checks for presence of url params
80function zeroBS_hasGETParams( $pageArr = array(), $params = array() ) {
81
82    global $pagenow;
83    // make sure we are on the backend
84    if ( ! is_admin() ) {
85        return false;
86    }
87
88    // check in array (like  array( 'post.php', 'post-new.php' ))
89    if ( in_array( $pagenow, $pageArr ) ) {
90
91        if ( is_array( $params ) && count( $params ) > 0 ) {
92
93            // check params - return false if any not present
94            foreach ( $params as $p ) {
95                if ( ! isset( $_GET[ $p ] ) ) {
96                    return false;
97                }
98            }
99
100            // has all params
101            return true;
102
103        }
104    }
105
106    return false;
107}
108    // checks for presence of url params
109function zeroBS_hasGETParamsWithValues( $pageArr = array(), $params = array(), $noneOfTheseParams = array() ) {
110
111    global $pagenow;
112    // make sure we are on the backend
113    if ( ! is_admin() ) {
114        return false;
115    }
116
117    // check in array (like  array( 'post.php', 'post-new.php' ))
118    if ( in_array( $pagenow, $pageArr ) ) {
119
120        if ( is_array( $params ) && count( $params ) > 0 ) {
121
122            // check params against vals
123            foreach ( $params as $p => $v ) {
124                if ( ! isset( $_GET[ $p ] ) || $_GET[ $p ] != $v ) {
125                    return false;
126                }
127            }
128
129            // check for $noneOfTheseParams
130            foreach ( $noneOfTheseParams as $p ) {
131                if ( isset( $_GET[ $p ] ) ) {
132                    return false;
133                }
134            }
135
136            // has all params
137            return true;
138
139        }
140    }
141
142    return false;
143}
144
145function zeroBSCRM_isLoginPage() {
146    // http://wordpress.stackexchange.com/questions/12863/check-if-were-on-the-wp-login-page
147    // if ( in_array( $GLOBALS['pagenow'], array( 'wp-login.php', 'wp-register.php' ) ) ) return true;
148    // return false;
149    return zeroBS_isPage( array( 'wp-login.php', 'wp-register.php' ), false, false, true );
150}
151
152function zeroBSCRM_isWelcomeWizPage() {
153
154    global $zeroBSCRM_killDenied;
155    if ( isset( $zeroBSCRM_killDenied ) && $zeroBSCRM_killDenied === true ) {
156        return true;
157    }
158    return false;
159}
160
161function zeroBSCRM_isAPIRequest() {
162    // SCRIPT_URL not present in $_SERVER on mine: https://stackoverflow.com/questions/24428981/serverscript-url-when-is-it-reliably-present
163    // below is more reliable as QUERY_STRING will always be set for API requests.
164
165    // lazy, non-wp way of doing this
166    if ( isset( $_SERVER['QUERY_STRING'] ) && ( strpos( '#' . sanitize_text_field( wp_unslash( $_SERVER['QUERY_STRING'] ) ), 'api_key=zbscrm_' ) > 0 || strpos( '#' . sanitize_text_field( wp_unslash( $_SERVER['QUERY_STRING'] ) ), 'api_key=jpcrm_' ) ) ) {
167        return true;
168    }
169
170    // Added REST api v2.94ish, so had to add this to skip dashcatch
171    // https://wordpress.stackexchange.com/questions/221202/does-something-like-is-rest-exist
172    if ( zeroBSCRM_isRestUrl() ) {
173        return true;
174    }
175
176    return false;
177}
178
179    // is a REST url
180    // doesn't validate auth or anything, just 'LOOKS LIKE REST  URL'
181    // https://wordpress.stackexchange.com/questions/221202/does-something-like-is-rest-exist
182function zeroBSCRM_isRestUrl() {
183    $is_rest_url = false;
184    if ( function_exists( 'rest_url' ) && ! empty( $_SERVER['REQUEST_URI'] ) ) {
185        $sRestUrlBase = get_rest_url( get_current_blog_id(), '/' );
186        $sRestPath    = trim( parse_url( $sRestUrlBase, PHP_URL_PATH ), '/' );
187        $sRequestPath = trim( $_SERVER['REQUEST_URI'], '/' );
188        $is_rest_url  = ( str_starts_with( $sRequestPath, $sRestPath ) ); // phpcs:ignore WordPress.NamingConventions.ValidVariableName.VariableNotSnakeCase
189    }
190    return $is_rest_url;
191}
192
193function zeroBSCRM_isClientPortalPage() {
194    global $zbs;
195
196    if ( property_exists( $zbs->modules, 'portal' ) ) {
197        return $zbs->modules->portal->is_portal_page();
198    }
199
200    return false;
201}
202
203    // } Determines if we are on a ZBS Admin Page (i.e. app page, including the customer edit + other custom post pages)
204    // } Have made a more generic check of the zeroBSCRM_is_customer_edit_page to cover all our custom post types
205    // } such as zerobs_ticket (for Groove Sync) etc. etc. etc.
206
207function zeroBSCRM_is_ZBS_custom_post_page() {
208
209    return zeroBS_isPage( array( 'post.php', 'post-new.php', 'edit-tags.php', 'edit.php' ), array( 'zerobs_customer', 'zerobs_quote', 'zerobs_invoice', 'zerobs_quo_template', 'zerobs_transaction', 'zerobs_company', 'zerobs_form', 'zerobs_event' ) );
210}
211
212function zeroBSCRM_isAdminPage() {
213
214    // make sure we are on the backend
215    if ( ! is_admin() ) {
216        return false;
217    }
218
219    global $zbs;
220
221    // basic slug check
222    if ( isset( $_GET['page'] ) ) {
223        if ( in_array( $_GET['page'], $zbs->slugs ) ) {
224            return true;
225        }
226    }
227
228    // custom post type pages
229    if ( zeroBSCRM_is_ZBS_custom_post_page() ) {
230        return true;
231    }
232
233    // odd pages?
234    if ( ( isset( $_GET['page'] ) ) && ( $_GET['page'] === 'zbs-noaccess' || $_GET['page'] === 'manage-customers' || $_GET['page'] === 'manage-invoices-crm' ) ) {
235        return true;
236    }
237
238    // custom slug checks?
239    if ( isset( $_GET['zbsslug'] ) ) {
240        if ( in_array( sanitize_text_field( $_GET['zbsslug'] ), $zbs->slugs ) ) {
241            return true;
242        }
243    }
244
245    // lastly... grasping at straws... check for defined global (defined in global admin script)
246    if ( defined( 'ZBS_PAGE' ) ) {
247        $isOurPage = true;
248    }
249
250    // use a filter to catch return's for ext pages
251    $return = false;
252    $return = apply_filters( 'zbs-page-check', $return );
253
254    return $return;
255}
256
257    // returns true if on a zbs edit page
258    // (for any obj)
259function zeroBSCRM_is_zbs_edit_page( $specificType = false, $isNew = false ) {
260
261    // make sure we are on the backend
262    if ( ! is_admin() ) {
263        return false;
264    }
265
266    // then if we have these, it's an edit page
267    if ( $specificType !== false ) {
268
269        // check with type
270        if (
271            zeroBS_hasGETParamsWithValues(
272                array( 'admin.php' ),
273                array(
274                    'page'    => 'zbs-add-edit',
275                    'action'  => 'edit',
276                    'zbstype' => $specificType,
277                )
278            )
279        ) {
280
281            // looking to see if is new page?
282            if ( $isNew ) {
283                if ( ! isset( $_GET['zbsid'] ) ) {
284                    return true;
285                }
286            } else {
287                return true;
288            }
289        }
290    } elseif ( zeroBS_hasGETParamsWithValues(
291        array( 'admin.php' ),
292        array(
293            'page'   => 'zbs-add-edit',
294            'action' => 'edit',
295        )
296    ) ) {
297        return true;
298    }
299
300    // if not, then nope.
301    return false;
302}
303
304    // is a "delete x?" page
305function zeroBSCRM_is_delete_page( $new_edit = null ) {
306
307    // make sure we are on the backend
308    if ( ! is_admin() ) {
309        return false;
310    }
311
312    // then if we have these, it's an edit page
313    if ( zeroBS_hasGETParamsWithValues(
314        array( 'admin.php' ),
315        array(
316            'page'   => 'zbs-add-edit',
317            'action' => 'delete',
318        )
319    ) ) {
320        return true;
321    }
322
323    // if not, then nope.
324    return false;
325}
326
327    // ========= / GENERIC ============================================
328
329    // ========= CONTACTS =============================================
330
331    // generic check for any page concerning 'contacts'
332function zeroBSCRM_isAnyContactPage() {
333
334    if ( zeroBSCRM_is_contact_list_page() ) {
335        return true;
336    }
337    if ( zeroBSCRM_is_customer_edit_page() ) {
338        return true;
339    }
340    if ( zeroBSCRM_is_customer_new_page() ) {
341        return true;
342    }
343    if ( zeroBSCRM_is_customertags_page() ) {
344        return true;
345    }
346
347    // for now we count co's as here:
348    if ( zeroBSCRM_is_company_list_page() ) {
349        return true;
350    }
351    if ( zeroBSCRM_is_company_new_page() ) {
352        return true;
353    }
354    if ( zeroBSCRM_is_company_edit_page() ) {
355        return true;
356    }
357    if ( zeroBSCRM_is_companytags_page() ) {
358        return true;
359    }
360
361    return false;
362}
363
364function zeroBSCRM_is_contact_list_page() {
365
366    global $zbs;
367    return zeroBS_isPage( array( 'admin.php' ), false, array( $zbs->slugs['managecontacts'] ) );
368}
369function zeroBSCRM_is_existingcustomer_edit_page() {
370
371    $isPage = zeroBS_isPage( array( 'post.php' ), array( 'zerobs_customer' ) ); // 'post-new.php'
372    if ( $isPage ) {
373        return true;
374    } elseif ( zeroBS_hasGETParamsWithValues(
375        array( 'admin.php' ),
376        array(
377            'page'   => 'zbs-add-edit',
378            'action' => 'edit',
379        )
380    ) ) {
381
382        if ( isset( $_GET['zbsid'] ) ) {
383            return true;
384        }
385    }
386    return false;
387}
388
389function zeroBSCRM_is_customer_edit_page() {
390
391    $isPage = zeroBS_isPage( array( 'post.php' ), array( 'zerobs_customer' ) ); // 'post-new.php'
392    if ( $isPage ) {
393        return true;
394    } else {
395        // return zeroBS_hasGETParamsWithValues(array( 'admin.php' ),array('page'=>'zbs-add-edit','action'=>'edit'));
396        // either has zbstype = contact, or no zbstype (as is default)
397        if (
398            ( zeroBS_hasGETParamsWithValues(
399                array( 'admin.php' ),
400                array(
401                    'page'    => 'zbs-add-edit',
402                    'action'  => 'edit',
403                    'zbstype' => 'contact',
404                )
405            ) )
406            ||
407            ( zeroBS_hasGETParamsWithValues(
408                array( 'admin.php' ),
409                array(
410                    'page'   => 'zbs-add-edit',
411                    'action' => 'edit',
412                ),
413                array( 'zbstype' )
414            ) )
415            ) {
416            return true;
417        }
418    }
419    return false;
420}
421
422function zeroBSCRM_is_customer_view_page() {
423
424    // DAL 2+
425    // return zeroBS_hasGETParamsWithValues(array( 'admin.php' ),array('page'=>'zbs-add-edit','action'=>'view'));
426
427    // either has zbstype = contact, or no zbstype (as is default)
428    if (
429        ( zeroBS_hasGETParamsWithValues(
430            array( 'admin.php' ),
431            array(
432                'page'    => 'zbs-add-edit',
433                'action'  => 'view',
434                'zbstype' => 'contact',
435            )
436        ) )
437        ||
438        ( zeroBS_hasGETParamsWithValues(
439            array( 'admin.php' ),
440            array(
441                'page'   => 'zbs-add-edit',
442                'action' => 'view',
443            ),
444            array( 'zbstype' )
445        ) )
446        ) {
447        return true;
448    }
449
450    return false;
451}
452function zeroBSCRM_is_customer_new_page() {
453
454    // DAL 2 support
455    $isPage = zeroBS_isPage( array( 'post-new.php' ), array( 'zerobs_customer' ) ); // 'post-new.php'
456    if ( $isPage ) {
457        return true;
458    } else {
459        // either has zbstype = contact, or no zbstype (as is default)
460        if (
461            ( zeroBS_hasGETParamsWithValues(
462                array( 'admin.php' ),
463                array(
464                    'page'    => 'zbs-add-edit',
465                    'action'  => 'edit',
466                    'zbstype' => 'contact',
467                )
468            ) )
469            ||
470            ( zeroBS_hasGETParamsWithValues(
471                array( 'admin.php' ),
472                array(
473                    'page'   => 'zbs-add-edit',
474                    'action' => 'edit',
475                ),
476                array( 'zbstype' )
477            ) )
478            ) {
479
480            if ( ! isset( $_GET['zbsid'] ) || $_GET['zbsid'] == -1 ) {
481                return true;
482            }
483        }
484    }
485    return false;
486}
487
488function zeroBSCRM_is_customertags_page() {
489
490    // DAL 2 support
491    $isPage = zeroBS_isPage( array( 'edit-tags.php' ), array( 'zerobs_customer' ) );
492    if ( $isPage ) {
493        return true;
494    } else {
495        global $zbs;
496        return zeroBS_hasGETParamsWithValues(
497            array( 'admin.php' ),
498            array(
499                'page'    => $zbs->slugs['tagmanager'],
500                'tagtype' => 'contact',
501            )
502        );
503    }
504
505    return false;
506}
507
508    // ========= / CONTACTS =============================================
509
510    // ========= COMPANIES ==============================================
511
512function zeroBSCRM_is_company_list_page() {
513
514    global $zbs;
515    return zeroBS_isPage( array( 'admin.php' ), false, array( $zbs->slugs['managecompanies'] ) );
516}
517
518function zeroBSCRM_is_company_view_page() {
519
520    // either has zbstype = company, or no go
521    if (
522        zeroBS_hasGETParamsWithValues(
523            array( 'admin.php' ),
524            array(
525                'page'    => 'zbs-add-edit',
526                'action'  => 'view',
527                'zbstype' => 'company',
528            )
529        )
530    ) {
531        return true;
532    }
533
534    return false;
535}
536
537function zeroBSCRM_is_company_new_page() {
538    return zeroBSCRM_is_zbs_edit_page( 'company', true );
539}
540
541function zeroBSCRM_is_company_edit_page() {
542    return zeroBSCRM_is_zbs_edit_page( 'company', false );
543}
544
545function zeroBSCRM_is_existingcompany_edit_page() {
546
547    return zeroBSCRM_is_company_edit_page();
548}
549
550function zeroBSCRM_is_companytags_page() {
551
552    // DAL 2 support
553    $isPage = zeroBS_isPage( array( 'edit-tags.php' ), array( 'zerobs_company' ) );
554    if ( $isPage ) {
555        return true;
556    } else {
557        global $zbs;
558        return zeroBS_hasGETParamsWithValues(
559            array( 'admin.php' ),
560            array(
561                'page'    => $zbs->slugs['tagmanager'],
562                'tagtype' => 'company',
563            )
564        );
565    }
566
567    return false;
568}
569
570    // ========= / COMPANIES ===============================================
571
572    // ========= TRANSACTIONS ==============================================
573
574    // generic check for any page concerning 'trans'
575function zeroBSCRM_isAnyTransactionPage() {
576
577    if ( zeroBSCRM_is_transaction_list_page() ) {
578        return true;
579    }
580    if ( zeroBSCRM_is_transaction_new_page() ) {
581        return true;
582    }
583    if ( zeroBSCRM_is_transaction_edit_page() ) {
584        return true;
585    }
586    if ( zeroBSCRM_is_transactiontags_page() ) {
587        return true;
588    }
589
590    return false;
591}
592
593function zeroBSCRM_is_transaction_list_page() {
594
595    global $zbs;
596    return zeroBS_isPage( array( 'admin.php' ), false, array( $zbs->slugs['managetransactions'] ) );
597}
598
599function zeroBSCRM_is_transaction_new_page() {
600    return zeroBSCRM_is_zbs_edit_page( 'transaction', true );
601}
602
603function zeroBSCRM_is_transaction_edit_page() {
604    return zeroBSCRM_is_zbs_edit_page( 'transaction', false );
605}
606
607function zeroBSCRM_is_transactiontags_page() {
608
609    // DAL 2 support
610    $isPage = zeroBS_isPage( array( 'edit-tags.php' ), array( 'zerobs_transaction' ) );
611    if ( $isPage ) {
612        return true;
613    } else {
614        global $zbs;
615        return zeroBS_hasGETParamsWithValues(
616            array( 'admin.php' ),
617            array(
618                'page'    => $zbs->slugs['tagmanager'],
619                'tagtype' => 'transaction',
620            )
621        );
622    }
623
624    return false;
625}
626
627    // ========= / TRANSACTIONS ===============================================
628
629    // ========= INVOICES =====================================================
630
631    // generic check for any page concerning 'invs'
632function zeroBSCRM_isAnyInvoicePage() {
633
634    if ( zeroBSCRM_is_invoice_list_page() ) {
635        return true;
636    }
637    if ( zeroBSCRM_is_invoice_new_page() ) {
638        return true;
639    }
640    if ( zeroBSCRM_is_invoice_edit_page() ) {
641        return true;
642    }
643
644    return false;
645}
646
647function zeroBSCRM_is_invoice_list_page() {
648
649    global $zbs;
650    return zeroBS_isPage( array( 'admin.php' ), false, array( $zbs->slugs['manageinvoices'] ) );
651}
652
653function zeroBSCRM_is_invoice_new_page() {
654    return zeroBSCRM_is_zbs_edit_page( 'invoice', true );
655}
656
657function zeroBSCRM_is_invoice_edit_page() {
658    return zeroBSCRM_is_zbs_edit_page( 'invoice', false );
659}
660
661function zeroBSCRM_is_invoicetags_page() {
662    global $zbs;
663    return zeroBS_hasGETParamsWithValues(
664        array( 'admin.php' ),
665        array(
666            'page'    => $zbs->slugs['tagmanager'],
667            'tagtype' => 'invoice',
668        )
669    );
670}
671
672    // ========= / INVOICES =================================================
673
674    // ========= QUOTES =====================================================
675
676    // generic check for any page concerning 'quotes'
677function zeroBSCRM_isAnyQuotePage() {
678
679    if ( zeroBSCRM_is_quote_list_page() ) {
680        return true;
681    }
682    if ( zeroBSCRM_is_quo_new_page() ) {
683        return true;
684    }
685    if ( zeroBSCRM_is_quo_edit_page() ) {
686        return true;
687    }
688    if ( zeroBSCRM_is_quotetemplate_new_page() ) {
689        return true;
690    }
691    if ( zeroBSCRM_is_quotetemplate_edit_page() ) {
692        return true;
693    }
694
695    return false;
696}
697
698function zeroBSCRM_is_quote_list_page() {
699
700    global $zbs;
701    return zeroBS_isPage( array( 'admin.php' ), false, array( $zbs->slugs['managequotes'] ) );
702}
703
704function zeroBSCRM_is_quo_new_page() {
705    return zeroBSCRM_is_zbs_edit_page( 'quote', true );
706}
707
708function zeroBSCRM_is_quo_edit_page() {
709    return zeroBSCRM_is_zbs_edit_page( 'quote', false );
710}
711
712function zeroBSCRM_is_quotetags_page() {
713    global $zbs;
714    return zeroBS_hasGETParamsWithValues(
715        array( 'admin.php' ),
716        array(
717            'page'    => $zbs->slugs['tagmanager'],
718            'tagtype' => 'quote',
719        )
720    );
721}
722
723    // ========= / QUOTES =================================================
724
725    // ========= QUOTE TEMPLATES ==========================================
726
727function zeroBSCRM_is_quotetemplate_new_page() {
728    return zeroBSCRM_is_zbs_edit_page( 'quotetemplate', true );
729}
730
731function zeroBSCRM_is_quotetemplate_edit_page() {
732    return zeroBSCRM_is_zbs_edit_page( 'quotetemplate', false );
733}
734
735    // ========= / QUOTE TEMPLATES =========================================
736
737    // ========= TASKS ====================================================
738
739    // generic check for any page concerning tasks
740function zeroBSCRM_isAnyTaskPage() {
741
742    if ( zeroBSCRM_is_task_new_page() ) {
743        return true;
744    }
745    if ( zeroBSCRM_is_task_edit_page() ) {
746        return true;
747    }
748    if ( zeroBSCRM_is_task_calendar_page() ) {
749        return true;
750    }
751    if ( zeroBSCRM_is_task_list_page() ) {
752        return true;
753    }
754    if ( zeroBSCRM_is_tasktags_page() ) {
755        return true;
756    }
757
758    return false;
759}
760
761function zeroBSCRM_is_task_new_page() {
762    return zeroBSCRM_is_zbs_edit_page( 'event', true );
763}
764
765function zeroBSCRM_is_task_edit_page() {
766    return zeroBSCRM_is_zbs_edit_page( 'event', false );
767}
768
769function zeroBSCRM_is_task_calendar_page() {
770
771    global $zbs;
772    return zeroBS_isPage( array( 'admin.php' ), false, array( $zbs->slugs['manage-tasks'] ) );
773}
774
775function zeroBSCRM_is_task_list_page() {
776
777    global $zbs;
778    return zeroBS_isPage( array( 'admin.php' ), false, array( $zbs->slugs['manage-tasks-list'] ) );
779}
780
781function zeroBSCRM_is_tasktags_page() {
782    global $zbs;
783    return zeroBS_hasGETParamsWithValues(
784        array( 'admin.php' ),
785        array(
786            'page'    => $zbs->slugs['tagmanager'],
787            'tagtype' => 'event',
788        )
789    );
790}
791
792    // ========= / TASKS =================================================
793
794    // ========= FORMS ====================================================
795
796    // generic check for any page concerning 'forms'
797function zeroBSCRM_isAnyFormPage() {
798
799    if ( zeroBSCRM_is_form_new_page() ) {
800        return true;
801    }
802    if ( zeroBSCRM_is_form_edit_page() ) {
803        return true;
804    }
805    if ( zeroBSCRM_is_form_list_page() ) {
806        return true;
807    }
808    if ( zeroBSCRM_is_formtags_page() ) {
809        return true;
810    }
811    if ( zeroBSCRM_is_task_list_page() ) {
812        return true;
813    }
814    if ( zeroBSCRM_is_tasktags_page() ) {
815        return true;
816    }
817
818    return false;
819}
820
821function zeroBSCRM_is_form_new_page() {
822    return zeroBSCRM_is_zbs_edit_page( 'form', true );
823}
824
825function zeroBSCRM_is_form_edit_page() {
826    return zeroBSCRM_is_zbs_edit_page( 'form', false );
827}
828
829function zeroBSCRM_is_form_list_page() {
830
831    return zeroBS_isPage( array( 'edit.php' ), array( 'zerobs_form' ) );
832}
833
834function zeroBSCRM_is_formtags_page() {
835    global $zbs;
836    return zeroBS_hasGETParamsWithValues(
837        array( 'admin.php' ),
838        array(
839            'page'    => $zbs->slugs['tagmanager'],
840            'tagtype' => 'form',
841        )
842    );
843}
844
845    // ========= / FORMS =================================================
846
847    // ========= SEGMENTS =================================================
848
849function zeroBSCRM_is_segment_edit_page() {
850
851    // v3.0
852    return zeroBSCRM_is_zbs_edit_page( 'segment', true );
853}
854
855function zeroBSCRM_is_segment_new_page() {
856
857    // v3.0
858    return zeroBSCRM_is_zbs_edit_page( 'segment', false );
859}
860
861    // ========= / SEGMENTS =================================================
862
863function zeroBSCRM_is_profile_page() {
864
865    global $zbs;
866    return zeroBS_isPage( array( 'admin.php' ), false, array( $zbs->slugs['your-profile'] ) );
867}
868
869function jpcrm_is_settings_page() {
870
871    global $zbs;
872    return zeroBS_isPage( array( 'admin.php' ), false, array( $zbs->slugs['settings'] ) );
873}
874
875/**
876 * Checks if a page is designated as a full-width page in Jetpack CRM.
877 *
878 * @param string $page_name The name of the page to check (usually this is the http `page` GET param).
879 *
880 * @return bool Whether the page should be displayed in full width.
881 */
882function jpcrm_is_full_width_page( $page_name ) {
883    global $zbs;
884
885    if ( $zbs->settings->get( 'showfullwidthforlisting' ) !== 1 ) {
886        return false;
887    }
888
889    $full_width_pages = array(
890        'tag-manager',
891        'manage-customers',
892        'manage-companies',
893        'manage-segments',
894        'manage-quotes',
895        'manage-invoices',
896        'manage-quote-templates',
897        'manage-transactions',
898        'manage-tasks',
899        'manage-forms',
900    );
901
902    $full_width_pages = apply_filters( 'jetpack_crm_full_width_pages', $full_width_pages );
903
904    return in_array( $page_name, $full_width_pages, true );
905}