get_members_groups($member_id_of); $_custom_fields = cns_get_all_custom_fields_match( $groups, // groups (($member_id_of === null) || ($member_id_of == $member_id_viewing) || (has_privilege($member_id_viewing, 'view_any_profile_field'))) ? null : 1, // public view null, // owner view (($member_id_of === null) || ($member_id_of != $member_id_viewing) || (has_privilege($member_id_viewing, 'view_any_profile_field'))) ? null : 1 // owner set ); if (empty($_custom_fields)) { return false; } return true; } return false; } /** * Render function for profile tabs edit hooks. * * @param MEMBER $member_id_of The ID of the member who is being viewed * @param MEMBER $member_id_viewing The ID of the member who is doing the viewing * @param boolean $leave_to_ajax_if_possible Whether to leave the tab contents null, if this hook supports it, so that AJAX can load it later * @return ?array A tuple: The tab title, the tab body text (may be blank), the tab fields, extra JavaScript (may be blank) the suggested tab order, hidden fields (optional) (null: if $leave_to_ajax_if_possible was set), the icon */ public function render_tab(int $member_id_of, int $member_id_viewing, bool $leave_to_ajax_if_possible = false) : ?array { $memory_debugging = (get_param_integer('keep_show_loading', 0) == 1); if ($memory_debugging) { $usage_before = memory_get_usage(); } $order = 10; // NB: Actualiser is handled in settings.php if ($leave_to_ajax_if_possible) { return null; } // UI require_code('form_templates'); $title = do_lang_tempcode('PROFILE'); $custom_fields = cns_get_all_custom_fields_match_member($member_id_of); require_code('cns_members_action2'); list($fields, $hidden) = cns_get_member_fields_profile(false, $member_id_of, null, $custom_fields); $redirect = get_param_string('redirect', '', INPUT_FILTER_URL_INTERNAL); if ($redirect != '') { $hidden->attach(form_input_hidden('redirect', static_evaluate_tempcode(protect_url_parameter($redirect)))); } $hidden->attach(form_input_hidden('submitting_profile_tab', '1')); $text = new Tempcode(); if ($memory_debugging) { require_code('files'); $usage_after = memory_get_usage(); $usage = clean_file_size($usage_after - $usage_before); $text->attach(paragraph('Memory debugging: ' . $usage . ' used, now at ' . clean_file_size($usage_after))); $title->attach(' (' . $usage . ')'); } return [$title, $fields, $text, '', $order, $hidden, 'tabs/member_account/edit/profile']; } }