function ym_fire_shortcode_parse($args, $content, $tag) { global $firetypes, $wpdb; switch ($tag) { case 'app_counter': $html = ''; // $html = '<p>Pricing Models</p>'; if (isset($args['pid'])) { // get pid counter $targets[] = ym_firesale_get_single($args['pid']); } else { $targets = ym_firesale_get_all_enabled(); } // get all counters foreach ($targets as $fire) { if ($fire->fire_enable) { // get current tier $tier = ym_firesale_get_current_tier($fire->fire_id); $tier = $tier[0]; // left till expire // ignore type 2 as type 2 on actovates nbecome types 1 //what $what = $firetypes[$fire->fire_type]; $which = $fire->fire_type_id; // how long if ($tier->fire_limit_by) { //$tier->fire_tier_started $left = $tier->fire_limit_var - time(); // hours $hours = $left / 3600; list($hours, $left) = explode('.', $hours); $left = $hours . ' Hours Left'; } else { // get sales if ($fire->fire_type) { // subs $left = $tier->fire_limit_var - ym_fire_sales_subscription_since($tier->fire_tier_started, $which); } else { // ppp $left = $tier->fire_limit_var - ym_fire_sales_ppp_since($tier->fire_tier_started, $which); } $left .= ' Sales Left'; } if ($fire->fire_type) { $pack = ym_get_pack($which); $what = $pack['account_type']; $link = '?ym_subscribe=1&ud=1'; } else { // what is the post title $what = 'SELECT post_title FROM ' . $wpdb->posts . ' WHERE ID = ' . $which; $what = $wpdb->get_var($what); $link = get_permalink($which); } $html .= '<p><a href="' . $link . '"><strong>' . $what . '</strong></a> ' . $left . '</p>'; } } return $html; default: // not defined } }
function ym_firesale_maintain_tiers() { global $wpdb; // both the next two foreachs make the assumption that two sales based tiers // won't invalidate at the same moment for a individual fire sale // do sales based ppp $fires = ym_firesale_get_all_enabled(false, YM_APP_TYPE_POST); // get each fire current tier foreach ($fires as $fire) { $sql = 'SELECT fire_tier_id, fire_limit_by, fire_limit_var, fire_tier_started, fire_type_id FROM ' . $wpdb->ym_app_models_tiers . ' t LEFT JOIN ' . $wpdb->ym_app_models . ' f ON f.fire_id = t.fire_id WHERE t.fire_id = ' . $fire->fire_id . ' ORDER BY fire_order ASC LIMIT 1'; $tier = $wpdb->get_results($sql); // one result if ($tier = $tier[0]) { $tier_id = $tier->fire_tier_id; $limit = $tier->fire_limit_var; $started = $tier->fire_tier_started; // post id $post_id = $tier->fire_type_id; // sales since $sales = ym_fire_sales_ppp_since($started, $post_id); if ($sales >= $limit) { ym_fire_tier_end($tier_id); } } } // do sales base ppp packs $fires = ym_firesale_get_all_enabled(false, YM_APP_TYPE_POST); foreach ($fires as $fire) { $sql = 'SELECT fire_tier_id, fire_limit_by, fire_limit_var, fire_tier_started, fire_type_id FROM ' . $wpdb->ym_app_models_tiers . ' t LEFT JOIN ' . $wpdb->ym_app_models . ' f ON f.fire_id = t.fire_id WHERE t.fire_id = ' . $fire->fire_id . ' ORDER BY fire_order ASC LIMIT 1'; $tier = $wpdb->get_results($sql); if ($tier = $tier[0]) { $tier_id = $tier->fire_tier_id; $limit = $tier->fire_limit_var; $started = $tier->fire_tier_started; // pack id $pack_id = $tier->fire_type_id; $sales = ym_fire_sales_ppp_packs_since($started, $pack_id); if ($sales >= $limit) { ym_fire_tier_end($tier_id); } } } // do sales based subs $fires = ym_firesale_get_all_enabled(false, YM_APP_TYPE_SUB); foreach ($fires as $fire) { $sql = 'SELECT fire_tier_id, fire_limit_by, fire_limit_var, fire_tier_started, fire_type_id FROM ' . $wpdb->ym_app_models_tiers . ' t LEFT JOIN ' . $wpdb->ym_app_models . ' f ON f.fire_id = t.fire_id WHERE t.fire_id = ' . $fire->fire_id . ' ORDER BY fire_order ASC LIMIT 1'; $tier = $wpdb->get_results($sql); if ($tier = $tier[0]) { $tier_id = $tier->fire_tier_id; $limit = $tier->fire_limit_var; $started = $tier->fire_tier_started; // subscription id $subs_id = $tier->fire_type_id; $sales = ym_fire_sales_subscription_since($started, $subs_id); if ($sales >= $limit) { ym_fire_tier_end($tier_id); } } } // do time based kills all tiers // both subs and sales based $tiers = ym_firesale_get_all_tiers(); foreach ($tiers as $tier) { if ($tier->fire_limit_by == 1) { // its a time based type if ($tier->fire_limit_var < time()) { ym_fire_tier_end($tier->fire_tier_id); } } } // firesales without tiers // this is a garbage collection function // // even tho the other end scripts will kill a firesale // they wont delete from the db // so they dont call sale end like we do here! // $fires = ym_firesale_get_all(); foreach ($fires as $fire) { if ($fire->tiers == 0 && $fire->fire_id) { ym_fire_sale_end($fire->fire_id); } } }