OwlCyberSecurity - MANAGER
Edit File: general-functions.php
<?php function booked_avatar($user_id,$size = 150){ if (get_user_meta($user_id, 'avatar',true)): if (wp_get_attachment_image( get_user_meta($user_id,'avatar',true), array($size,$size) )): return wp_get_attachment_image( get_user_meta($user_id,'avatar',true), array($size,$size) ); else: return get_avatar($user_id, $size); endif; else : return get_avatar($user_id, $size); endif; } function booked_compress_css($css){ // Remove tabs, spaces, newlines, etc. $css = str_replace( array("\r\n", "\r", "\n", "\t", ' ', ' ', ' '), '', $css ); return $css; } function booked_add_to_calendar_button($dates,$cf_meta_value){ if (!get_option('booked_hide_google_link',false)): // Convert BRs to line breaks $cf_meta_value = preg_replace('#<br\s*?/?>#i', "\n", $cf_meta_value); wp_enqueue_script('booked-atc'); ?><div title="<?php esc_attr_e('Add to Calendar','booked'); ?>" class="addeventatc atc-style-booked google-cal-button"> <?php esc_html_e('Add to Calendar','booked'); ?> <span class="start"><?php echo $dates['atc_date_startend']; ?> <?php echo $dates['atc_time_start']; ?></span> <span class="end"><?php echo $dates['atc_date_startend_end']; ?> <?php echo $dates['atc_time_end']; ?></span> <span class="timezone"><?php echo booked_get_timezone_string(); ?></span> <span class="title"><?php echo sprintf(esc_html__('Appointment with %s','booked'),get_bloginfo('name')); ?></span> <span class="description"><?php echo strip_tags(str_replace('<br>',' ',$cf_meta_value)); ?></span> <span class="location"><?php echo get_bloginfo('name'); ?></span> </div><?php endif; } function booked_get_timezone_string() { if ( $timezone = get_option( 'timezone_string' ) ) return $timezone; if ( 0 === ( $utc_offset = get_option( 'gmt_offset', 0 ) ) ) return 'UTC'; $utc_offset *= 3600; if ( $timezone = timezone_name_from_abbr( '', $utc_offset, 0 ) ) { return $timezone; } $is_dst = date_i18n( 'I' ); foreach ( timezone_abbreviations_list() as $abbr ) { foreach ( $abbr as $city ) { if ( $city['dst'] == $is_dst && $city['offset'] == $utc_offset ) return $city['timezone_id']; } } return 'UTC'; } function booked_get_profile_page(){ global $wpdb; $shortcode = '[booked-profile'; $query = "SELECT * FROM `{$wpdb->posts}` WHERE `post_status` != 'trash' AND `post_type` = 'page' AND `post_content` LIKE '%{$shortcode}%'"; $pages = $wpdb->get_results($query); if (!$pages){ return; } return $pages[0]; } function booked_home_url(){ if (function_exists('pll_home_url')): $home_url = rtrim(pll_home_url(), "/"); else: $home_url = rtrim(home_url(), "/"); endif; return $home_url; } function booked_get_name( $user_id, $part = 'full' ){ switch ($part): case 'full': $username = get_user_meta( $user_id, 'first_name', true ) ? get_user_meta( $user_id, 'first_name', true ).(get_user_meta( $user_id, 'last_name', true ) ? ' '.get_user_meta( $user_id, 'last_name', true ) : '') : false; if (!$username): $user_info = get_userdata($user_id); if (!empty($user_info)): $username = $user_info->display_name; else: return false; endif; endif; if (!$username): $user_info = get_userdata($user_id); if (!empty($user_info)): $username = $user_info->user_login; else: return false; endif; endif; return $username; break; case 'first': $username = get_user_meta( $user_id, 'first_name', true ) ? get_user_meta( $user_id, 'first_name', true ) : false; if (!$username): $username = booked_get_name( $user_id ); endif; return $username; break; case 'last': $username = get_user_meta( $user_id, 'last_name', true ) ? get_user_meta( $user_id, 'last_name', true ) : false; if (!$username): return ''; endif; return $username; break; endswitch; } function booked_user_role() { $booked_current_user = wp_get_current_user(); $roles = $booked_current_user->roles; $role = array_shift($roles); return $role; } function booked_filter_agent_calendars($this_user,$calendars) { $booked_current_user_email = $this_user->data->user_email; foreach($calendars as $key => $calendar): $term_meta = get_option( "taxonomy_".$calendar->term_id ); $calendar_owner = $term_meta['notifications_user_id']; if ($calendar_owner != $booked_current_user_email): unset($calendars[$key]); endif; endforeach; return $calendars; } function booked_convertTime($time) { settype($time, 'integer'); if ($time < 1) { return; } $hours = lz(floor($time / 60)); $minutes = lz(($time % 60)); return $hours.':'.$minutes; } // lz = leading zero function lz($num) { return (strlen($num) < 2) ? "0{$num}" : $num; } function booked_pending_appts_count(){ $calendars = get_terms('booked_custom_calendars','orderby=slug&hide_empty=0'); if (!empty($calendars) && !current_user_can('manage_booked_options')): $booked_current_user = wp_get_current_user(); $calendars = booked_filter_agent_calendars($booked_current_user,$calendars); if (!empty($calendars)): foreach($calendars as $calendar): $calendar_ids[] = $calendar->term_id; endforeach; $args = array( 'posts_per_page' => 500, 'post_status' => apply_filters('booked_admin_pending_post_status',array('draft')), 'post_type' => 'booked_appointments', 'tax_query' => array( array( 'taxonomy' => 'booked_custom_calendars', 'field' => 'term_id', 'terms' => $calendar_ids, ), ), ); else: return 0; endif; elseif (empty($calendars) && !current_user_can('manage_booked_options')): return 0; else: $args = array( 'posts_per_page' => 500, 'post_status' => apply_filters('booked_admin_pending_post_status',array('draft')), 'post_type' => 'booked_appointments', ); endif; $pending_count_query = new WP_Query($args); return $pending_count_query->found_posts; } function booked_registration_validation( $email, $password, $captcha_value = false, $captcha_from_user = false ) { global $reg_errors; $reg_errors = new WP_Error; $errors = array(); if ($captcha_value): if ($captcha_value != $captcha_from_user): $reg_errors->add('captcha', esc_html__('The text you\'ve entered does not match the image.','booked')); else : $captcha = new ReallySimpleCaptcha(); $captcha->remove($captcha_value); endif; endif; if ( !$email || !$password ) { $reg_errors->add('field', esc_html__('All fields are required to register.','booked')); } if ( username_exists( $email ) ) { $reg_errors->add('user_name', esc_html__('That username already exists.','booked')); } if ( ! validate_username( $email ) ) { $reg_errors->add( 'username_invalid', esc_html__('That name is not valid.','booked')); } if ( !is_email( $email ) ) { $reg_errors->add( 'email_invalid', esc_html__('That email address is not valid.','booked')); } if ( email_exists( $email ) ) { $reg_errors->add( 'email', esc_html__('That email is already in use.','booked')); } if ( is_wp_error( $reg_errors ) ) { foreach ( $reg_errors->get_error_messages() as $error ) { $errors[] = $error; } } return $errors; } function booked_complete_registration() { global $reg_errors, $name, $surname, $display_name, $username, $password, $email; if ( 1 > count( $reg_errors->get_error_messages() ) ) { $userdata = array( 'user_login' => $email, 'user_email' => $email, 'user_pass' => $password, 'first_name' => $name, 'last_name' => $surname ); $user_id = wp_insert_user( $userdata ); update_user_meta( $user_id, 'nickname', $display_name ); wp_update_user( array ('ID' => $user_id, 'display_name' => $display_name ) ); // Send a registration welcome email to the new user? $email_content = get_option('booked_registration_email_content'); $email_subject = get_option('booked_registration_email_subject'); if ($email_content && $email_subject): $token_replacements = array( 'name' => $display_name, 'username' => $email, 'password' => $password, 'email' => $email ); $email_content = booked_token_replacement( $email_content,$token_replacements,'user' ); $email_subject = booked_token_replacement( $email_subject,$token_replacements ); do_action('booked_registration_email',$email, $email_subject, $email_content); endif; return '<p class="booked-form-notice"><strong>'.esc_html__('Success!','booked').'</strong><br />'.esc_html__('Registration complete, please check your email for login information.','booked').'</p>'; } else { return false; } } function booked_which_admin_to_send_email($calendar_id = false){ $admin_email = false; if ($calendar_id): $term_meta = get_option( "taxonomy_$calendar_id" ); $selected_value = $term_meta['notifications_user_id']; if ($selected_value): $admin_email = $selected_value; endif; endif; if (!$admin_email && get_option('booked_default_email_user')): $admin_email = get_option('booked_default_email_user'); endif; if (!$admin_email): $admin_email = get_option( 'admin_email' ); endif; return $admin_email; } function booked_registration_form($name, $surname, $email, $password){ $name_requirements = get_option('booked_registration_name_requirements',array('require_name')); $name_requirements = ( isset($name_requirements[0]) ? $name_requirements[0] : false ); ?><form action="" method="post" class="wp-user-form"> <p class="name"> <label for="name"><?php echo ( $name_requirements == 'require_surname' ? esc_html__('First Name','booked') : esc_html__('Your Name','booked') ); ?></label> <input type="text" name="booked_reg_name" value="<?php echo ( isset( $name ) ? $name : null ); ?>" id="name" tabindex="101" /> </p> <?php if ($name_requirements == 'require_surname'): ?> <p class="surname"> <label for="surname"><?php esc_html_e('Last Name','booked'); ?></label> <input type="text" name="booked_reg_surname" value="<?php echo ( isset( $surname ) ? $surname : null ); ?>" id="surname" tabindex="102" /> </p> <?php endif; ?> <p class="email"> <label for="email"><?php esc_html_e('Email Address','booked'); ?></label> <input type="email" name="booked_reg_email" value="<?php echo ( isset( $email ) ? $email : null ); ?>" id="email" tabindex="103" /> </p> <p class="password"> <label for="password"><?php esc_html_e('Choose a Password','booked'); ?></label> <input type="password" name="booked_reg_password" value="<?php echo ( isset( $password ) ? $password : null ); ?>" id="password" tabindex="104" /> </p> <?php if (class_exists('ReallySimpleCaptcha')) : ?><p class="captcha"> <label for="captcha_code"><?php esc_html_e('Please enter the following text:','booked'); ?></label><?php $rsc_url = WP_PLUGIN_URL . '/really-simple-captcha/'; $captcha = new ReallySimpleCaptcha(); $captcha->fg = array(150,150,150); $captcha_word = $captcha->generate_random_word(); //generate a random string with letters $captcha_prefix = mt_rand(); //random number $captcha_image = $captcha->generate_image($captcha_prefix, $captcha_word); //generate the image file. it returns the file name $captcha_file = rtrim(get_bloginfo('wpurl'), '/') . '/wp-content/plugins/really-simple-captcha/tmp/' . $captcha_image; //construct the absolute URL of the captcha image echo '<img class="captcha-image" src="'.$rsc_url.'tmp/'.$captcha_image.'">'; ?><input type="text" name="captcha_code" value="" tabindex="104" /> <input type="hidden" name="captcha_word" value="<?php echo $captcha_word; ?>" /> </p><?php endif; ?> <input type="submit" name="booked_reg_submit" value="<?php esc_html_e('Register','booked'); ?>" class="user-submit button-primary" tabindex="105" /> </form><?php } /* Custom Time Slot Functions */ function booked_apply_custom_timeslots_filter($booked_defaults = false,$calendar_id = false){ $custom_timeslots_array = array(); $booked_custom_timeslots_encoded = get_option('booked_custom_timeslots_encoded'); $booked_custom_timeslots_decoded = json_decode($booked_custom_timeslots_encoded,true); if (!empty($booked_custom_timeslots_decoded)): $custom_timeslots_array = booked_custom_timeslots_reconfigured($booked_custom_timeslots_decoded); foreach($custom_timeslots_array as $key => $value): if ($value['booked_custom_start_date']): $formatted_date = date_i18n('Ymd',strtotime($value['booked_custom_start_date'])); $formatted_end_date = date_i18n('Ymd',strtotime($value['booked_custom_end_date'])); // To include or not to include? if (!isset($value['booked_custom_calendar_id']) || $calendar_id && isset($value['booked_custom_calendar_id']) && $value['booked_custom_calendar_id'] == $calendar_id || !$calendar_id && !$value['booked_custom_calendar_id']){ if (!$value['booked_custom_end_date']){ // Single Date if ($value['vacationDayCheckbox']){ // Time slots disabled $booked_defaults[$formatted_date] = array(); } else { // Add time slots to this date $booked_defaults[$formatted_date] = $value['booked_this_custom_timelots']; } } else { // Multiple Dates $tempDate = $formatted_date; do { if ($value['vacationDayCheckbox']){ // Time slots disabled $booked_defaults[$tempDate] = array(); } else { // Add time slots to this date $booked_defaults[$tempDate] = $value['booked_this_custom_timelots']; } $tempDate = date_i18n('Ymd',strtotime($tempDate . ' +1 day')); } while ($tempDate <= $formatted_end_date); } } endif; endforeach; endif; return $booked_defaults; } /* Custom Time Slot Functions */ function booked_apply_custom_timeslots_details_filter($booked_defaults = false,$calendar_id = false){ $custom_timeslots_array = array(); $booked_custom_timeslots_encoded = get_option('booked_custom_timeslots_encoded'); $booked_custom_timeslots_decoded = json_decode($booked_custom_timeslots_encoded,true); if (!empty($booked_custom_timeslots_decoded)): $custom_timeslots_array = booked_custom_timeslots_reconfigured($booked_custom_timeslots_decoded); foreach($custom_timeslots_array as $key => $value): if ($value['booked_custom_start_date']): $formatted_date = date_i18n('Ymd',strtotime($value['booked_custom_start_date'])); $formatted_end_date = date_i18n('Ymd',strtotime($value['booked_custom_end_date'])); // To include or not to include? if (!isset($value['booked_custom_calendar_id']) || $calendar_id && isset($value['booked_custom_calendar_id']) && $value['booked_custom_calendar_id'] == $calendar_id || !$calendar_id && !$value['booked_custom_calendar_id']){ if (!$value['booked_custom_end_date']){ // Single Date if ($value['vacationDayCheckbox']){ // Time slots disabled $booked_defaults[$formatted_date] = array(); $booked_defaults[$formatted_date.'-details'] = array(); } else { // Add time slots to this date $booked_defaults[$formatted_date] = $value['booked_this_custom_timelots']; $booked_defaults[$formatted_date.'-details'] = !empty($value['booked_this_custom_timelots_details']) ? $value['booked_this_custom_timelots_details'] : array(); } } else { // Multiple Dates $tempDate = $formatted_date; do { if ($value['vacationDayCheckbox']){ // Time slots disabled $booked_defaults[$tempDate] = array(); $booked_defaults[$tempDate.'-details'] = array(); } else { // Add time slots to this date $booked_defaults[$tempDate] = $value['booked_this_custom_timelots']; $booked_defaults[$tempDate.'-details'] = !empty($value['booked_this_custom_timelots_details']) ? $value['booked_this_custom_timelots_details'] : array(); } $tempDate = date_i18n('Ymd',strtotime($tempDate . ' +1 day')); } while ($tempDate <= $formatted_end_date); } } endif; endforeach; endif; return $booked_defaults; } function booked_custom_timeslots_reconfigured($booked_custom_timeslots_decoded){ $total_fields = ( isset($booked_custom_timeslots_decoded['booked_custom_start_date']) && is_array($booked_custom_timeslots_decoded['booked_custom_start_date']) ? count( $booked_custom_timeslots_decoded['booked_custom_start_date'] ) - 1 : 0 ); $custom_timeslots_array = array(); $counter = 0; if ($total_fields): do { foreach($booked_custom_timeslots_decoded as $key => $values): if ($key == 'booked_this_custom_timelots' || $key == 'booked_this_custom_timelots_details'): $values = json_decode($values[$counter],true); $custom_timeslots_array[$counter][$key] = $values; else: $custom_timeslots_array[$counter][$key] = (isset($values[$counter]) ? $values[$counter] : $values); endif; endforeach; $counter++; } while($total_fields >= $counter); else : $custom_timeslots_array[0] = $booked_custom_timeslots_decoded; endif; return $custom_timeslots_array; } /* End Custom Time Slot Functions */