diff --git a/checkboxsearch.php b/checkboxsearch.php index 4444fcce472e9470ff068f451dff51df9e4227a2..00ac8e5f0f3419ddad86d58a6a47b80dcfbf3271 100644 --- a/checkboxsearch.php +++ b/checkboxsearch.php @@ -1,5 +1,8 @@ <?php -define('AREAS_OF_INTEREST', 25); +define('MEMBER_AREAS_OF_INTEREST', 25); +define('SUBSCRIBER_AREAS_OF_INTEREST', 34); +define('SUBSCRIBER_SG', 17); + require_once 'checkboxsearch.civix.php'; // phpcs:disable @@ -145,10 +148,20 @@ function checkboxsearch_civicrm_themes(&$themes) { } function checkboxsearch_civicrm_buildForm($formName, &$form) { - if ($formName == 'CRM_Profile_Form_Search' && $form->getVar('_gid') == 27) { + if ($formName == 'CRM_Profile_Form_Search' && in_array($form->getVar('_gid'), [27, 29])) { if (!is_user_logged_in()) { auth_redirect(); } + if ($cid = CRM_Core_Session::getLoggedInContactID() && $form->getVar('_gid') == 29) { + $result = civicrm_api3('Contact', 'get', [ + 'sequential' => 1, + 'return' => ["group"], + 'id' => $cid, + ])['values']; + if (empty($result[0]['groups']) || !in_array(SUBSCRIBER_SG, explode(',', $result[0]['groups']))) { + CRM_Core_Error::statusBounce(ts('You do not have permission to access this page.')); + } + } CRM_Core_Region::instance('page-body')->add(array( 'script' => " cj('table#profile > tbody > tr:nth-child(7)').hide(); @@ -159,7 +172,7 @@ function checkboxsearch_civicrm_buildForm($formName, &$form) { foreach ($form->_fields as $name => $field) { if (substr($name, 0, 6) === 'custom') { $customFieldID = CRM_Core_BAO_CustomField::getKeyID($name); - if ($customFieldID == AREAS_OF_INTEREST) { + if ($customFieldID == MEMBER_AREAS_OF_INTEREST || $customFieldID == SUBSCRIBER_AREAS_OF_INTEREST) { $form->removeElement($name); $groupName = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_CustomGroup', $field['group_id']); $dataCrmCustomVal = $groupName . ':' . $name; @@ -182,7 +195,7 @@ function checkboxsearch_civicrm_buildForm($formName, &$form) { } } } - if ($formName == 'CRM_Profile_Form_Search' && $form->getVar('_gid') == 27) { + if ($formName == 'CRM_Profile_Form_Search' && in_array($form->getVar('_gid'), [27, 29])) { $form->setDefaults([ 'prox_country_id' => 1039, 'prox_state_province_id' => 1108, @@ -201,11 +214,12 @@ function checkboxsearch_civicrm_searchColumns( $objectName, &$headers, &$rows, & } function checkboxsearch_civicrm_pageRun( &$page ) { - if (is_a($page, 'CRM_Profile_Page_Dynamic')) { - if ($page->getVar('_gid') == 27) { - if (!is_user_logged_in()) { - auth_redirect(); - } + if (is_a($page, 'CRM_Profile_Page_Dynamic') && in_array($page->getVar('_gid'), [27, 29])) { + $profileID = $page->getVar('_gid'); + if (!is_user_logged_in()) { + auth_redirect(); + } + if ($profileID == 27) { CRM_Utils_System::setTitle(ts('OPHA Member Networking Directory Listing')); CRM_Core_Region::instance('page-body')->add(array( 'script' => " @@ -213,6 +227,13 @@ function checkboxsearch_civicrm_pageRun( &$page ) { ", )); } + elseif ($profileID == 29) { + CRM_Core_Region::instance('page-body')->add(array( + 'script' => " + cj('#row-id').hide(); + ", + )); + } } }