Update expired properties.
This commit is contained in:
parent
09e5f5adfc
commit
943d5e20e4
@ -393,6 +393,33 @@ function opalestate_cleanup() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
wp_reset_postdata();
|
wp_reset_postdata();
|
||||||
|
|
||||||
|
// Change status expired properties.
|
||||||
|
$expired_query = new WP_Query( [
|
||||||
|
'post_type' => 'opalestate_property',
|
||||||
|
'post_status' => [ 'pending', 'publish' ],
|
||||||
|
'meta_query' => [
|
||||||
|
[
|
||||||
|
'key' => OPALESTATE_PROPERTY_PREFIX . 'expired_time',
|
||||||
|
'value' => time(),
|
||||||
|
'compare' => '>=',
|
||||||
|
'type' => 'NUMERIC',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
] );
|
||||||
|
|
||||||
|
if ( $expired_query->have_posts() ) {
|
||||||
|
while ( $expired_query->have_posts() ) {
|
||||||
|
$expired_query->the_post();
|
||||||
|
|
||||||
|
wp_update_post( [
|
||||||
|
'ID' => get_the_ID(),
|
||||||
|
'post_status' => 'expired',
|
||||||
|
] );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
wp_reset_postdata();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -72,7 +72,7 @@ class Opalestate_Cache {
|
|||||||
self::$instance->is_cache = ( defined( 'GIVE_CACHE' ) ? GIVE_CACHE : opalestate_is_setting_enabled( opalestate_get_option( 'cache', 'enabled' ) ) ) && is_admin();
|
self::$instance->is_cache = ( defined( 'GIVE_CACHE' ) ? GIVE_CACHE : opalestate_is_setting_enabled( opalestate_get_option( 'cache', 'enabled' ) ) ) && is_admin();
|
||||||
|
|
||||||
// weekly delete all expired cache.
|
// weekly delete all expired cache.
|
||||||
Give_Cron::add_weekly_event( array( $this, 'delete_all_expired' ) );
|
// Give_Cron::add_weekly_event( array( $this, 'delete_all_expired' ) );
|
||||||
|
|
||||||
add_action( 'save_post_opalestate_forms', array( $this, 'delete_form_related_cache' ) );
|
add_action( 'save_post_opalestate_forms', array( $this, 'delete_form_related_cache' ) );
|
||||||
add_action( 'save_post_opalestate_payment', array( $this, 'delete_payment_related_cache' ) );
|
add_action( 'save_post_opalestate_payment', array( $this, 'delete_payment_related_cache' ) );
|
||||||
|
@ -27,6 +27,7 @@ class Opalestate_PostType_Property {
|
|||||||
*/
|
*/
|
||||||
public function __construct() {
|
public function __construct() {
|
||||||
add_action( 'init', [ __CLASS__, 'definition' ] );
|
add_action( 'init', [ __CLASS__, 'definition' ] );
|
||||||
|
add_action( 'init', [ __CLASS__, 'register_post_status' ] );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -74,6 +75,21 @@ class Opalestate_PostType_Property {
|
|||||||
] )
|
] )
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register post status.
|
||||||
|
*/
|
||||||
|
public static function register_post_status() {
|
||||||
|
register_post_status( 'expired', [
|
||||||
|
'label' => _x( 'Expired', 'Expired status', 'opalestate-pro' ),
|
||||||
|
'public' => false,
|
||||||
|
'exclude_from_search' => false,
|
||||||
|
'show_in_admin_all_list' => true,
|
||||||
|
'show_in_admin_status_list' => true,
|
||||||
|
/* translators: %s: number of orders */
|
||||||
|
'label_count' => _n_noop( 'Expired <span class="count">(%s)</span>', 'Expired <span class="count">(%s)</span>', 'opalestate-pro' ),
|
||||||
|
] );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
new Opalestate_PostType_Property();
|
new Opalestate_PostType_Property();
|
||||||
|
212
inc/vendors/opalmembership/functions.php
vendored
212
inc/vendors/opalmembership/functions.php
vendored
@ -13,124 +13,125 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
if ( ! defined( 'ABSPATH' ) ) {
|
if ( ! defined( 'ABSPATH' ) ) {
|
||||||
exit; // Exit if accessed directly
|
exit; // Exit if accessed directly
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Count Number of listing following user
|
* Count Number of listing following user
|
||||||
*/
|
*/
|
||||||
function opalesate_get_user_current_listings( $user_id ){
|
function opalesate_get_user_current_listings( $user_id ) {
|
||||||
$args = array(
|
$args = [
|
||||||
'post_type' => 'opalestate_property',
|
'post_type' => 'opalestate_property',
|
||||||
'post_status' => array( 'pending', 'publish' ),
|
'post_status' => [ 'pending', 'publish' ],
|
||||||
'author' => $user_id,
|
'author' => $user_id,
|
||||||
|
|
||||||
);
|
];
|
||||||
$posts = new WP_Query( $args );
|
$posts = new WP_Query( $args );
|
||||||
return $posts->found_posts;
|
|
||||||
wp_reset_postdata();
|
return $posts->found_posts;
|
||||||
|
wp_reset_postdata();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Count Number of featured listing following user
|
* Count Number of featured listing following user
|
||||||
*/
|
*/
|
||||||
function opalesate_get_user_current_featured_listings( $user_id ){
|
function opalesate_get_user_current_featured_listings( $user_id ) {
|
||||||
|
|
||||||
$args = array(
|
$args = [
|
||||||
'post_type' => 'opalestate_property',
|
'post_type' => 'opalestate_property',
|
||||||
'post_status' => array( 'pending', 'publish' ),
|
'post_status' => [ 'pending', 'publish' ],
|
||||||
'author' => $user_id,
|
'author' => $user_id,
|
||||||
'meta_query' => array(
|
'meta_query' => [
|
||||||
array(
|
[
|
||||||
'key' => OPALESTATE_PROPERTY_PREFIX.'featured',
|
'key' => OPALESTATE_PROPERTY_PREFIX . 'featured',
|
||||||
'value' => 1,
|
'value' => 1,
|
||||||
'meta_compare '=>'='
|
'meta_compare ' => '=',
|
||||||
)
|
],
|
||||||
)
|
],
|
||||||
);
|
];
|
||||||
$posts = new WP_Query( $args );
|
$posts = new WP_Query( $args );
|
||||||
return $posts->found_posts;
|
|
||||||
wp_reset_postdata();
|
return $posts->found_posts;
|
||||||
|
wp_reset_postdata();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check current package is downgrade package or not via current number of featured, listing lesser
|
* Check current package is downgrade package or not via current number of featured, listing lesser
|
||||||
*/
|
*/
|
||||||
function opalesate_check_package_downgrade_status( $user_id, $package_id ){
|
function opalesate_check_package_downgrade_status( $user_id, $package_id ) {
|
||||||
|
|
||||||
$pack_listings = get_post_meta( $package_id, OPALMEMBERSHIP_PACKAGES_PREFIX.'package_listings', true );
|
$pack_listings = get_post_meta( $package_id, OPALMEMBERSHIP_PACKAGES_PREFIX . 'package_listings', true );
|
||||||
$pack_featured_listings = get_post_meta( $package_id, OPALMEMBERSHIP_PACKAGES_PREFIX.'package_featured_listings', true );
|
$pack_featured_listings = get_post_meta( $package_id, OPALMEMBERSHIP_PACKAGES_PREFIX . 'package_featured_listings', true );
|
||||||
$is_unlimited = get_post_meta( $package_id, OPALMEMBERSHIP_PACKAGES_PREFIX.'unlimited_listings', true );
|
$is_unlimited = get_post_meta( $package_id, OPALMEMBERSHIP_PACKAGES_PREFIX . 'unlimited_listings', true );
|
||||||
$pack_unlimited_listings = $is_unlimited == 'on' ? 0 : 1;
|
$pack_unlimited_listings = $is_unlimited == 'on' ? 0 : 1;
|
||||||
|
|
||||||
$user_current_listings = opalesate_get_user_current_listings( $user_id );
|
$user_current_listings = opalesate_get_user_current_listings( $user_id );
|
||||||
$user_current_featured_listings = opalesate_get_user_current_featured_listings( $user_id );
|
$user_current_featured_listings = opalesate_get_user_current_featured_listings( $user_id );
|
||||||
|
|
||||||
$current_listings = get_user_meta( $user_id, OPALMEMBERSHIP_USER_PREFIX_.'package_listings',true);
|
$current_listings = get_user_meta( $user_id, OPALMEMBERSHIP_USER_PREFIX_ . 'package_listings', true );
|
||||||
|
|
||||||
if( $pack_unlimited_listings == 1 ) {
|
if ( $pack_unlimited_listings == 1 ) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// if is unlimited and go to non unlimited pack
|
// if is unlimited and go to non unlimited pack
|
||||||
if ( $current_listings == -1 && $pack_unlimited_listings != 1 ) {
|
if ( $current_listings == -1 && $pack_unlimited_listings != 1 ) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ( $user_current_listings > $pack_listings ) || ( $user_current_featured_listings > $pack_featured_listings ) ;
|
return ( $user_current_listings > $pack_listings ) || ( $user_current_featured_listings > $pack_featured_listings );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check Current User having permission to add new property or not?
|
* Check Current User having permission to add new property or not?
|
||||||
*/
|
*/
|
||||||
function opalesate_check_has_add_listing( $user_id, $package_id=null ){
|
function opalesate_check_has_add_listing( $user_id, $package_id = null ) {
|
||||||
|
|
||||||
if( !$package_id ){
|
if ( ! $package_id ) {
|
||||||
$package_id = (int)get_user_meta( $user_id, OPALMEMBERSHIP_USER_PREFIX_.'package_id', true );
|
$package_id = (int) get_user_meta( $user_id, OPALMEMBERSHIP_USER_PREFIX_ . 'package_id', true );
|
||||||
}
|
}
|
||||||
|
|
||||||
$package_listings = (int) get_user_meta( $user_id, OPALMEMBERSHIP_USER_PREFIX_.'package_listings', true );
|
$package_listings = (int) get_user_meta( $user_id, OPALMEMBERSHIP_USER_PREFIX_ . 'package_listings', true );
|
||||||
|
|
||||||
|
|
||||||
$unlimited_listings = get_post_meta( $package_id, OPALMEMBERSHIP_PACKAGES_PREFIX.'unlimited_listings', true );
|
$unlimited_listings = get_post_meta( $package_id, OPALMEMBERSHIP_PACKAGES_PREFIX . 'unlimited_listings', true );
|
||||||
|
|
||||||
$unlimited_listings = !empty( $unlimited_listings ) && $unlimited_listings == 'on' ? 0 : 1;
|
|
||||||
|
|
||||||
if( $package_id > 0 && $unlimited_listings ){
|
$unlimited_listings = ! empty( $unlimited_listings ) && $unlimited_listings == 'on' ? 0 : 1;
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( $package_listings > 0 ){
|
if ( $package_id > 0 && $unlimited_listings ) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
|
||||||
|
if ( $package_listings > 0 ) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check current package is downgrade package or not via current number of featured, listing lesser
|
* Check current package is downgrade package or not via current number of featured, listing lesser
|
||||||
*/
|
*/
|
||||||
function opalesate_get_user_featured_remaining_listing( $user_id ){
|
function opalesate_get_user_featured_remaining_listing( $user_id ) {
|
||||||
|
|
||||||
$count = get_the_author_meta( OPALMEMBERSHIP_USER_PREFIX_.'package_featured_listings' , $user_id );
|
$count = get_the_author_meta( OPALMEMBERSHIP_USER_PREFIX_ . 'package_featured_listings', $user_id );
|
||||||
|
|
||||||
return $count;
|
return $count;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
function opalestate_reset_user_free_package( $user_id ){
|
function opalestate_reset_user_free_package( $user_id ) {
|
||||||
|
$duration = opalestate_options( 'free_expired_month', 12 );
|
||||||
$duration = opalestate_options('free_expired_month', 12);
|
update_user_meta( $user_id, OPALMEMBERSHIP_USER_PREFIX_ . 'package_id', -1 );
|
||||||
update_user_meta( $user_id, OPALMEMBERSHIP_USER_PREFIX_.'package_id', -1 );
|
update_user_meta( $user_id, OPALMEMBERSHIP_USER_PREFIX_ . 'package_listings', opalestate_options( 'free_number_listing', 3 ) );
|
||||||
update_user_meta( $user_id, OPALMEMBERSHIP_USER_PREFIX_.'package_listings', opalestate_options('free_number_listing', 3) );
|
update_user_meta( $user_id, OPALMEMBERSHIP_USER_PREFIX_ . 'package_featured_listings', opalestate_options( 'free_number_featured', 3 ) );
|
||||||
update_user_meta( $user_id, OPALMEMBERSHIP_USER_PREFIX_.'package_featured_listings', opalestate_options('free_number_featured', 3) );
|
update_user_meta( $user_id, OPALMEMBERSHIP_USER_PREFIX_ . 'package_activation', time() );
|
||||||
|
update_user_meta( $user_id, OPALMEMBERSHIP_USER_PREFIX_ . 'package_expired', time() + ( $duration * 60 * 60 * 24 * 30 ) );
|
||||||
|
|
||||||
update_user_meta( $user_id, OPALMEMBERSHIP_USER_PREFIX_.'package_activation', time() );
|
return true;
|
||||||
update_user_meta( $user_id, OPALMEMBERSHIP_USER_PREFIX_.'package_expired', time() + ($duration*60*60*24*30) );
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -138,13 +139,13 @@ function opalestate_reset_user_free_package( $user_id ){
|
|||||||
*/
|
*/
|
||||||
function opalesate_update_package_number_featured_listings( $user_id ) {
|
function opalesate_update_package_number_featured_listings( $user_id ) {
|
||||||
|
|
||||||
$current = get_the_author_meta( OPALMEMBERSHIP_USER_PREFIX_.'package_featured_listings' , $user_id );
|
$current = get_the_author_meta( OPALMEMBERSHIP_USER_PREFIX_ . 'package_featured_listings', $user_id );
|
||||||
|
|
||||||
if( $current-1 >= 0 ) {
|
if ( $current - 1 >= 0 ) {
|
||||||
update_user_meta( $user_id, OPALMEMBERSHIP_USER_PREFIX_.'package_featured_listings', $current-1 ) ;
|
update_user_meta( $user_id, OPALMEMBERSHIP_USER_PREFIX_ . 'package_featured_listings', $current - 1 );
|
||||||
} else {
|
} else {
|
||||||
update_user_meta( $user_id, OPALMEMBERSHIP_USER_PREFIX_.'package_featured_listings', 0 );
|
update_user_meta( $user_id, OPALMEMBERSHIP_USER_PREFIX_ . 'package_featured_listings', 0 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -152,50 +153,47 @@ function opalesate_update_package_number_featured_listings( $user_id ) {
|
|||||||
*/
|
*/
|
||||||
function opalesate_update_package_number_listings( $user_id ) {
|
function opalesate_update_package_number_listings( $user_id ) {
|
||||||
|
|
||||||
$current = get_the_author_meta( OPALMEMBERSHIP_USER_PREFIX_.'package_listings' , $user_id );
|
$current = get_the_author_meta( OPALMEMBERSHIP_USER_PREFIX_ . 'package_listings', $user_id );
|
||||||
|
|
||||||
if( $current-1 >= 0 ) {
|
if ( $current - 1 >= 0 ) {
|
||||||
update_user_meta( $user_id, OPALMEMBERSHIP_USER_PREFIX_.'package_listings', $current-1 ) ;
|
update_user_meta( $user_id, OPALMEMBERSHIP_USER_PREFIX_ . 'package_listings', $current - 1 );
|
||||||
} else {
|
} else {
|
||||||
update_user_meta( $user_id, OPALMEMBERSHIP_USER_PREFIX_.'package_listings', 0 );
|
update_user_meta( $user_id, OPALMEMBERSHIP_USER_PREFIX_ . 'package_listings', 0 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check
|
* Check
|
||||||
*/
|
*/
|
||||||
function opalesate_is_membership_valid( $user_id = null ){
|
function opalesate_is_membership_valid( $user_id = null ) {
|
||||||
// $package_id = (int)get_user_meta( $user_id, OPALMEMBERSHIP_USER_PREFIX_.'package_id', true );
|
// $package_id = (int)get_user_meta( $user_id, OPALMEMBERSHIP_USER_PREFIX_.'package_id', true );
|
||||||
return Opalmembership_User::is_membership_valid( $user_id );
|
return Opalmembership_User::is_membership_valid( $user_id );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
function opalesate_listing_set_to_expire($post_id){
|
function opalesate_listing_set_to_expire( $post_id ) {
|
||||||
|
$prop = [
|
||||||
|
'ID' => $post_id,
|
||||||
|
'post_type' => 'opalestate_property',
|
||||||
|
'post_status' => 'expired',
|
||||||
|
];
|
||||||
|
|
||||||
$prop = array(
|
wp_update_post( $prop );
|
||||||
|
|
||||||
'ID' => $post_id,
|
$post = get_post( $post_id );
|
||||||
'post_type' => 'opalestate_property',
|
$user_id = $post->post_author;
|
||||||
'post_status' => 'expired'
|
|
||||||
|
|
||||||
);
|
|
||||||
|
|
||||||
wp_update_post($prop );
|
$user = get_user_by( 'id', $user_id );
|
||||||
|
$user_email = $user->user_email;
|
||||||
|
|
||||||
$post = get_post( $post_id );
|
$args = [
|
||||||
$user_id = $post->post_author;
|
'expired_listing_url' => get_permalink( $post_id ),
|
||||||
|
'expired_listing_name' => get_the_title( $post_id ),
|
||||||
|
];
|
||||||
|
|
||||||
$user = get_user_by('id', $user_id);
|
opalesate_email_type( $user_email, 'listing_expired', $args );
|
||||||
$user_email = $user->user_email;
|
}
|
||||||
|
|
||||||
$args = array(
|
|
||||||
'expired_listing_url' => get_permalink($post_id),
|
|
||||||
'expired_listing_name' => get_the_title($post_id)
|
|
||||||
);
|
|
||||||
|
|
||||||
opalesate_email_type( $user_email, 'listing_expired', $args );
|
|
||||||
}
|
|
||||||
|
103
inc/vendors/opalmembership/membership.php
vendored
103
inc/vendors/opalmembership/membership.php
vendored
@ -98,6 +98,8 @@ class OpalEstate_Membership {
|
|||||||
|
|
||||||
|
|
||||||
add_action( 'profile_update', [ __CLASS__, 'on_update_user' ], 10, 1 );
|
add_action( 'profile_update', [ __CLASS__, 'on_update_user' ], 10, 1 );
|
||||||
|
|
||||||
|
add_action( 'save_post', [ __CLASS__, 'update_property_expired_time' ], 10, 2 );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -244,6 +246,34 @@ class OpalEstate_Membership {
|
|||||||
'description' => esc_html__( 'Number of properties can make featured with this package.', 'opalestate-pro' ),
|
'description' => esc_html__( 'Number of properties can make featured with this package.', 'opalestate-pro' ),
|
||||||
];
|
];
|
||||||
|
|
||||||
|
$fields[] = [
|
||||||
|
'name' => esc_html__( 'Enable Expired for properties ', 'opalestate-pro' ),
|
||||||
|
'id' => $prefix . 'enable_property_expired',
|
||||||
|
'type' => 'checkbox',
|
||||||
|
'description' => esc_html__( 'Do you want enable expired date for properties?', 'opalestate-pro' ),
|
||||||
|
];
|
||||||
|
|
||||||
|
$fields[] = [
|
||||||
|
'name' => esc_html__( 'Expired Property In', 'opalestate-pro' ),
|
||||||
|
'id' => $prefix . 'property_duration',
|
||||||
|
'type' => 'text',
|
||||||
|
'attributes' => [
|
||||||
|
'type' => 'number',
|
||||||
|
'pattern' => '\d*',
|
||||||
|
'min' => 0,
|
||||||
|
],
|
||||||
|
'std' => '1',
|
||||||
|
'description' => esc_html__( 'Expired a property in. Enter expired number. Example 1, 2, 3', 'opalestate-pro' ),
|
||||||
|
];
|
||||||
|
|
||||||
|
$fields[] = [
|
||||||
|
'name' => esc_html__( 'Expired property Date Type', 'opalestate-pro' ),
|
||||||
|
'id' => $prefix . 'property_duration_unit',
|
||||||
|
'type' => 'select',
|
||||||
|
'options' => opalmembership_package_expiry_labels(),
|
||||||
|
'description' => esc_html__( 'Enter expired date type. Example Day(s), Week(s), Month(s), Year(s)', 'opalestate-pro' ),
|
||||||
|
];
|
||||||
|
|
||||||
return $fields;
|
return $fields;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -358,6 +388,7 @@ class OpalEstate_Membership {
|
|||||||
$is_unlimited_listings = get_post_meta( $package_id, OPALMEMBERSHIP_PACKAGES_PREFIX . 'unlimited_listings', true );
|
$is_unlimited_listings = get_post_meta( $package_id, OPALMEMBERSHIP_PACKAGES_PREFIX . 'unlimited_listings', true );
|
||||||
|
|
||||||
$pack_unlimited_listings = $is_unlimited_listings == 'on' ? 0 : 1;
|
$pack_unlimited_listings = $is_unlimited_listings == 'on' ? 0 : 1;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get package information with user logined
|
* Get package information with user logined
|
||||||
*/
|
*/
|
||||||
@ -394,6 +425,14 @@ class OpalEstate_Membership {
|
|||||||
*/
|
*/
|
||||||
update_user_meta( $user_id, OPALMEMBERSHIP_USER_PREFIX_ . 'package_listings', $new_listings );
|
update_user_meta( $user_id, OPALMEMBERSHIP_USER_PREFIX_ . 'package_listings', $new_listings );
|
||||||
update_user_meta( $user_id, OPALMEMBERSHIP_USER_PREFIX_ . 'package_featured_listings', $new_featured_listings );
|
update_user_meta( $user_id, OPALMEMBERSHIP_USER_PREFIX_ . 'package_featured_listings', $new_featured_listings );
|
||||||
|
|
||||||
|
$enable_property_expired = get_post_meta( $package_id, OPALMEMBERSHIP_PACKAGES_PREFIX . 'enable_property_expired', true );
|
||||||
|
$property_duration = get_post_meta( $package_id, OPALMEMBERSHIP_PACKAGES_PREFIX . 'property_duration', true );
|
||||||
|
$property_duration_unit = get_post_meta( $package_id, OPALMEMBERSHIP_PACKAGES_PREFIX . 'property_duration_unit', true );
|
||||||
|
|
||||||
|
update_user_meta( $user_id, OPALMEMBERSHIP_USER_PREFIX_ . 'enable_property_expired', $enable_property_expired );
|
||||||
|
update_user_meta( $user_id, OPALMEMBERSHIP_USER_PREFIX_ . 'property_duration', $property_duration );
|
||||||
|
update_user_meta( $user_id, OPALMEMBERSHIP_USER_PREFIX_ . 'property_duration_unit', $property_duration_unit );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -645,6 +684,70 @@ class OpalEstate_Membership {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $user_id
|
||||||
|
* @param $post_id
|
||||||
|
*/
|
||||||
|
public static function update_property_expired_time( $post_id ) {
|
||||||
|
$post = get_post( $post_id );
|
||||||
|
$user_id = $post->post_author;
|
||||||
|
|
||||||
|
$activated = get_post_meta( $post_id, OPALESTATE_PROPERTY_PREFIX . 'expired_activated', true );
|
||||||
|
|
||||||
|
if ( ! $activated ) {
|
||||||
|
static::handle_property_expired_time( $user_id, $post_id );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function handle_property_expired_time( $user_id, $post_id ) {
|
||||||
|
$is_valid = Opalmembership_User::is_membership_valid( $user_id );
|
||||||
|
|
||||||
|
if ( ! $is_valid ) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$enable_property_expired = get_user_meta( $user_id, OPALMEMBERSHIP_USER_PREFIX_ . 'enable_property_expired', true );
|
||||||
|
$post_status = get_post_status( $post_id );
|
||||||
|
|
||||||
|
if ( $enable_property_expired && 'publish' == $post_status ) {
|
||||||
|
$property_duration = get_user_meta( $user_id, OPALMEMBERSHIP_USER_PREFIX_ . 'property_duration', true );
|
||||||
|
$property_duration_unit = get_user_meta( $user_id, OPALMEMBERSHIP_USER_PREFIX_ . 'property_duration_unit', true );
|
||||||
|
|
||||||
|
$expired_time = time() + static::get_expiration_unit_time( $property_duration, $property_duration_unit );
|
||||||
|
|
||||||
|
update_post_meta( $post_id, OPALESTATE_PROPERTY_PREFIX . 'expired_time', $expired_time );
|
||||||
|
update_post_meta( $post_id, OPALESTATE_PROPERTY_PREFIX . 'expired_activated', 1 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $duration
|
||||||
|
* @param $unit
|
||||||
|
* @return float|int
|
||||||
|
*/
|
||||||
|
public static function get_expiration_unit_time( $duration, $unit ) {
|
||||||
|
if ( ! ( $duration = absint( $duration ) ) ) {
|
||||||
|
$duration = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch ( $unit ) {
|
||||||
|
case 'day':
|
||||||
|
$seconds = 60 * 60 * 24;
|
||||||
|
break;
|
||||||
|
case 'week':
|
||||||
|
$seconds = 60 * 60 * 24 * 7;
|
||||||
|
break;
|
||||||
|
case 'month':
|
||||||
|
$seconds = 60 * 60 * 24 * 30;
|
||||||
|
break;
|
||||||
|
case 'year':
|
||||||
|
$seconds = 60 * 60 * 24 * 365;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $seconds * $duration;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
OpalEstate_Membership::init();
|
OpalEstate_Membership::init();
|
||||||
|
Loading…
Reference in New Issue
Block a user