function cp_profile_fields($user) { global $appthemes_extended_profile_fields; ?> <h3><?php _e('Extended Profile', APP_TD); ?> </h3> <table class="form-table"> <?php foreach ($appthemes_extended_profile_fields as $field_id => $field_values) { if (isset($field_values['protected']) && $field_values['protected'] == 'yes' && !is_admin()) { $protected = 'disabled="disabled"'; } else { $protected = ''; } //TODO - use this value for display purposes while protecting stored value //prepare, modify, or filter the field value based on the field ID switch ($field_id) { case 'active_membership_pack': $user_active_pack = get_the_author_meta($field_id, $user->ID); $package = cp_get_membership_package($user_active_pack); $the_display_value = $package ? $package->pack_name : false; break; default: $the_display_value = false; break; } $the_value = get_the_author_meta($field_id, $user->ID); //begin writing the row and heading ?> <tr id="<?php echo esc_attr($field_id); ?> _row"> <th><label for="<?php echo esc_attr($field_id); ?> "><?php echo esc_html($field_values['title']); ?> </label></th> <td> <?php //print the appropriate profile field based on the type of field switch ($field_values['type']) { case 'date': $display_date = !empty($the_value) ? appthemes_display_date($the_value) : ''; if (!$protected) { ?> <input type="text" name="<?php echo esc_attr($field_id); ?> " id="<?php echo esc_attr($field_id); ?> " value="<?php echo esc_attr($the_value); ?> " class="regular-text" size="35" /><br /> <span class="description"><?php echo esc_attr($field_values['admin_description']); ?> <br /></span> <?php } ?> <input type="text" name="<?php echo esc_attr($field_id); ?> _display" id="<?php echo esc_attr($field_id); ?> " value="<?php echo esc_attr($display_date); ?> " class="regular-text" size="35" disabled="disabled" /><br /> <span class="description"><?php echo $field_values['description']; ?> </span> <?php break; case 'active_membership_pack': if (!$protected) { ?> <input type="text" name="<?php echo esc_attr($field_id); ?> " id="<?php echo esc_attr($field_id); ?> " value="<?php echo esc_attr($the_value); ?> " class="regular-text" size="35" /><br /> <span class="description"><?php echo esc_attr($field_values['admin_description']); ?> <br /></span> <?php } ?> <input type="text" name="<?php echo esc_attr($field_id); ?> _display" id="<?php echo esc_attr($field_id); ?> " value="<?php echo esc_attr($the_display_value); ?> " class="regular-text" size="35" disabled="disabled" /><br /> <span class="description"><?php echo $field_values['description']; ?> </span> <?php break; default: ?> <input type="text" name="<?php echo esc_attr($field_id); ?> " id="<?php echo esc_attr($field_id); ?> " value="<?php echo esc_attr($the_value); ?> " class="regular-text" size="35" <?php echo esc_attr($protected); ?> /><br /> <span class="description"><?php echo $field_values['description']; ?> </span> <?php break; //close the row ?> </td> </tr> <?php } } ?> </table> <?php }
/** * Displays membership package custom columns data. * * @param string $column_index * @param int $post_id * * @return void */ function cp_package_membership_add_column_data($column_index, $post_id) { $package = cp_get_membership_package($post_id); if (!$package) { return; } switch ($column_index) { case 'description': echo strip_tags($package->description); break; case 'price': echo cp_get_membership_package_benefit_text($package->ID); break; case 'terms': printf(__('%1$s / %2$s days', APP_TD), appthemes_get_price($package->price), $package->duration); break; case 'status': if ($package->post_status == 'publish') { _e('Active', APP_TD); } else { _e('Inactive', APP_TD); } break; } }
/** * Returns membership package. * * @deprecated 3.4 * @deprecated Use cp_get_membership_package() * @see cp_get_membership_package() * * @param int $pack_id * @param string $type (optional) * @param string $return (optional) * * @return mixed */ function get_pack($pack_id, $type = '', $return = '') { _deprecated_function(__FUNCTION__, '3.4', 'cp_get_membership_package'); $package = cp_get_membership_package($pack_id); if (!empty($return) && !empty($package)) { $package = (array) $package; if ($return == 'array') { return $package; } else { return $package[$return]; } } return $package; }
?> </li> <li><strong><?php _e('Last Login:'******'Your membership pack "%1$s" expired on %2$s.', APP_TD), $membership->pack_name, appthemes_display_date($current_user->membership_expires)); ?> </li> <li><a href="<?php echo CP_MEMBERSHIP_PURCHASE_URL; ?> "><?php _e('Renew Your Membership Pack', APP_TD); ?>
/** * Displays extra notices. * * return void */ public function display_extra_messages() { global $current_user; $package = cp_get_membership_package($this->package_id); $current_membership = $this->get_current_membership(); if ($current_membership && $current_membership->ID != $package->ID) { $days_remining = appthemes_days_between_dates($current_user->membership_expires); $message = sprintf(__('Your Current Membership (%1$s) will be canceled upon purchase. This membership still has %2$s days remaining.', APP_TD), $current_membership->pack_name, $days_remining); appthemes_display_notice('error', $message); } }
/** * Returns user membership package. * * @param int $user_id * * @return object */ function cp_get_user_membership_package($user_id) { $user = get_user_by('id', $user_id); if (!$user) { return false; } if (empty($user->active_membership_pack) || empty($user->membership_expires)) { return false; } $current_membership = cp_get_membership_package($user->active_membership_pack); if ($current_membership && appthemes_days_between_dates($user->membership_expires) > 0) { return $current_membership; } return false; }
/** * Sends email reminder about ending membership plan, default is 7 days before expire. * Cron jobs execute the following function once per day. * * @return void */ function cp_membership_reminder_cron() { global $wpdb, $cp_options; if (!$cp_options->membership_ending_reminder_email) { return; } $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES); $subject = sprintf(__('Membership Subscription Ending on %s', APP_TD), $blogname); $siteurl = home_url('/'); $days_before = $cp_options->membership_ending_reminder_days; $days_before = is_numeric($days_before) ? $days_before : 7; $timestamp = wp_next_scheduled('cp_send_membership_reminder'); $timestamp = $timestamp - 1 * 24 * 60 * 60 + get_option('gmt_offset') * 3600; // minus 1 day to get current schedule time, plus GMT offset $date_max = date('Y-m-d H:i:s', $timestamp + $days_before * 24 * 60 * 60); $date_min = date('Y-m-d H:i:s', $timestamp + ($days_before - 1) * 24 * 60 * 60); $query_users = $wpdb->prepare("SELECT {$wpdb->users}.ID FROM {$wpdb->users}\n\t\tLEFT JOIN {$wpdb->usermeta} ON {$wpdb->users}.ID = {$wpdb->usermeta}.user_id\n\t\tWHERE {$wpdb->usermeta}.meta_key = 'membership_expires'\n\t\tAND {$wpdb->usermeta}.meta_value < %s\n\t\tAND {$wpdb->usermeta}.meta_value > %s\n\t\t", $date_max, $date_min); $userids = $wpdb->get_col($query_users); if (!$userids) { return; } $users = array(); foreach ($userids as $user_id) { $user = get_userdata($user_id); $mailto = $user->user_email; $user_login = appthemes_clean($user->user_login); $membership = cp_get_membership_package($user->active_membership_pack); $membership_pack_name = appthemes_clean($membership->pack_name); $membership_expires = appthemes_display_date($user->membership_expires); $message = html('p', sprintf(__('Hi %s,', APP_TD), $user_login)) . PHP_EOL; $message .= html('p', sprintf(__('Your membership pack will expire in %d days! Please renew your membership to continue posting classified ads.', APP_TD), $days_before)) . PHP_EOL; $message_details = __('Membership Details', APP_TD) . '<br />'; $message_details .= __('-----------------', APP_TD) . '<br />'; $message_details .= sprintf(__('Membership Pack: %s', APP_TD), $membership_pack_name) . '<br />'; $message_details .= sprintf(__('Membership Expires: %s', APP_TD), $membership_expires) . '<br />'; $message_details .= sprintf(__('Renew Your Membership Pack: %s', APP_TD), html_link(CP_MEMBERSHIP_PURCHASE_URL)) . '<br />'; $message .= html('p', $message_details) . PHP_EOL; $message .= html('p', sprintf(__('For questions or problems, please contact us directly at %s', APP_TD), get_option('admin_email'))); $message .= html('p', __('Regards,', APP_TD) . '<br />' . sprintf(__('Your %s Team', APP_TD), $blogname)); $message .= html('p', html_link($siteurl)); $email = array('to' => $mailto, 'subject' => $subject, 'message' => $message); $email = apply_filters('cp_email_user_membership_reminder', $email, $user_id); appthemes_send_email($email['to'], $email['subject'], $email['message']); $users[$user_id] = array('user' => html_link(sprintf('mailto:%s', $user->user_email), $user->user_login), 'membership' => $membership->pack_name, 'expires' => $user->membership_expires); } // allow overriding admin notifications if (!apply_filters('cp_admin_membership_reminder', true, $users)) { return; } ### notify admin // loop through the users again to notify the admin about expiring memberships foreach ($users as $user_id => $data) { $items[] = $data; } if (!empty($items)) { $table = new APP_Email_Table($items); $admin_email = get_option('admin_email'); $message = html('p', __('Dear Admin,', APP_TD)) . PHP_EOL; $message .= html('p', sprintf(__('Membership pack for these users expire in %d days! These users will need to renew their membership to continue posting classified ads on your site:', APP_TD), $days_before)) . PHP_EOL; $message .= html('p', $table->display()) . PHP_EOL; $email = array('to' => $admin_email, 'subject' => $subject, 'message' => $message); appthemes_send_email($email['to'], $email['subject'], $email['message']); } }