function markIssuesAsPurchased($app_store_data, $app_id, $user_id) { global $dbContainer; $db = $dbContainer['db']; if (isInDevelopmentMode($app_id) == "TRUE") { logMessage(LogType::Info, "Marking Issues as Purchased for APP ID: " . $app_id . " USER ID: " . $user_id); } $receipt = $app_store_data->receipt; $startDate = new DateTime($receipt->purchase_date_pst); if ($app_store_data->status == 0) { $endDate = new DateTime($app_store_data->latest_receipt_info->expires_date_formatted_pst); } else { if ($app_store_data->status == 21006) { $endDate = new DateTime($app_store_data->latest_expired_receipt_info->expires_date_formatted_pst); } } // Now update the Purchases table with all Issues that fall within the subscription start and expiration date $startDateFormatted = $startDate->format('Y-m-d H:i:s'); $endDateFormatted = $endDate->format('Y-m-d H:i:s'); // Get First Day of the Month that the Receipt was generated for (Start) $issuesStartDateFormatted = $startDate->format('Y-m-01 00:00:00'); // Get Last Day of the Month that the Receipt was generated for (Expiration) $issuesEndDateFormatted = $endDate->format('Y-m-t 23:59:59'); // Update Subscriptions Table for user with current active subscription start and expiration date updateSubscription($app_id, $user_id, $startDateFormatted, $endDateFormatted); // If we are in Sandbox Mode, unlock all issues by default for testing purposes if (getiTunesProductionLevel($app_id) == "sandbox") { $result = $db->query("SELECT PRODUCT_ID FROM ISSUES\n\t\t \t\t\t\t\t\t\t WHERE APP_ID = '{$app_id}'\n\t\t \t\t\t\t\t\t\t AND PRICING = 'paid'"); } else { // If we are in Production - determine based on Subscription Behavior setting if (getSubscriptionBehavior($app_id) == "all") { $result = $db->query("SELECT PRODUCT_ID FROM ISSUES\n\t\t \t\t\t\t\t\t\t WHERE APP_ID = '{$app_id}'\n\t\t \t\t\t\t\t\t\t AND PRICING = 'paid'"); } else { if (getSubscriptionBehavior($app_id) == "term") { $result = $db->query("SELECT PRODUCT_ID FROM ISSUES\n\t\t\t\t\t\t\t\tWHERE APP_ID = '{$app_id}'\n\t\t\t\t\t\t\t\tAND `DATE` >= '{$issuesStartDateFormatted}'\n\t\t\t\t\t\t\t\tAND `DATE` <= '{$issuesEndDateFormatted}'\n\t\t\t\t\t\t\t\tAND PRICING = 'paid'\n\t\t\t\t\t\t\t\tAND AVAILABILITY = 'published'"); } else { //Default to 'term' if for some reason the above fails $result = $db->query("SELECT PRODUCT_ID FROM ISSUES\n\t\t\t\t\t\t\t\tWHERE APP_ID = '{$app_id}'\n\t\t\t\t\t\t\t\tAND `DATE` >= '{$issuesStartDateFormatted}'\n\t\t\t\t\t\t\t\tAND `DATE` <= '{$issuesEndDateFormatted}'\n\t\t\t\t\t\t\t\tAND PRICING = 'paid'\n\t\t\t\t\t\t\t\tAND AVAILABILITY = 'published'"); } } } $product_ids_to_mark = $result->fetchAll(PDO::FETCH_COLUMN); $insert = "INSERT IGNORE INTO PURCHASES (APP_ID, USER_ID, PRODUCT_ID)\n\t\t\t\t\t\tVALUES ('{$app_id}', '{$user_id}', :product_id)"; $stmt = $db->prepare($insert); foreach ($product_ids_to_mark as $key => $product_id) { $stmt->bindParam('product_id', $product_id); $stmt->execute(); } }
/** * Adding, editing and deleting subscriptions. * * - Accessed from ?action=admin;area=paidsubscribe;sa=modify. */ public function action_modify() { global $context, $txt; require_once SUBSDIR . '/PaidSubscriptions.subs.php'; $context['sub_id'] = isset($_REQUEST['sid']) ? (int) $_REQUEST['sid'] : 0; $context['action_type'] = $context['sub_id'] ? isset($_REQUEST['delete']) ? 'delete' : 'edit' : 'add'; // Setup the template. $context['sub_template'] = $context['action_type'] == 'delete' ? 'delete_subscription' : 'modify_subscription'; $context['page_title'] = $txt['paid_' . $context['action_type'] . '_subscription']; // Delete it? if (isset($_POST['delete_confirm']) && isset($_REQUEST['delete'])) { checkSession(); validateToken('admin-pmsd'); deleteSubscription($context['sub_id']); call_integration_hook('integrate_delete_subscription', array($context['sub_id'])); redirectexit('action=admin;area=paidsubscribe;view'); } // Saving? if (isset($_POST['save'])) { checkSession(); validateToken('admin-pms'); // Some cleaning... $isActive = isset($_POST['active']) ? 1 : 0; $isRepeatable = isset($_POST['repeatable']) ? 1 : 0; $allowpartial = isset($_POST['allow_partial']) ? 1 : 0; $reminder = isset($_POST['reminder']) ? (int) $_POST['reminder'] : 0; $emailComplete = strlen($_POST['emailcomplete']) > 10 ? trim($_POST['emailcomplete']) : ''; // Is this a fixed one? if ($_POST['duration_type'] == 'fixed') { // Clean the span. $span = $_POST['span_value'] . $_POST['span_unit']; // Sort out the cost. $cost = array('fixed' => sprintf('%01.2f', strtr($_POST['cost'], ',', '.'))); // There needs to be something. if (empty($_POST['span_value']) || empty($_POST['cost'])) { fatal_lang_error('paid_no_cost_value'); } } else { $span = 'F'; $cost = array('day' => sprintf('%01.2f', strtr($_POST['cost_day'], ',', '.')), 'week' => sprintf('%01.2f', strtr($_POST['cost_week'], ',', '.')), 'month' => sprintf('%01.2f', strtr($_POST['cost_month'], ',', '.')), 'year' => sprintf('%01.2f', strtr($_POST['cost_year'], ',', '.'))); if (empty($_POST['cost_day']) && empty($_POST['cost_week']) && empty($_POST['cost_month']) && empty($_POST['cost_year'])) { fatal_lang_error('paid_all_freq_blank'); } } $cost = serialize($cost); // Yep, time to do additional groups. $addgroups = array(); if (!empty($_POST['addgroup'])) { foreach ($_POST['addgroup'] as $id => $dummy) { $addgroups[] = (int) $id; } } $addgroups = implode(',', $addgroups); // Is it new?! if ($context['action_type'] == 'add') { $insert = array('name' => $_POST['name'], 'desc' => $_POST['desc'], 'isActive' => $isActive, 'span' => $span, 'cost' => $cost, 'prim_group' => $_POST['prim_group'], 'addgroups' => $addgroups, 'isRepeatable' => $isRepeatable, 'allowpartial' => $allowpartial, 'emailComplete' => $emailComplete, 'reminder' => $reminder); $sub_id = insertSubscription($insert); } else { $ignore_active = countActiveSubscriptions($context['sub_id']); $update = array('is_active' => $isActive, 'id_group' => !empty($_POST['prim_group']) ? $_POST['prim_group'] : 0, 'repeatable' => $isRepeatable, 'allow_partial' => $allowpartial, 'reminder' => $reminder, 'current_subscription' => $context['sub_id'], 'name' => $_POST['name'], 'desc' => $_POST['desc'], 'length' => $span, 'cost' => $cost, 'additional_groups' => !empty($addgroups) ? $addgroups : '', 'email_complete' => $emailComplete); updateSubscription($update, $ignore_active); } call_integration_hook('integrate_save_subscription', array($context['action_type'] == 'add' ? $sub_id : $context['sub_id'], $_POST['name'], $_POST['desc'], $isActive, $span, $cost, $_POST['prim_group'], $addgroups, $isRepeatable, $allowpartial, $emailComplete, $reminder)); redirectexit('action=admin;area=paidsubscribe;view'); } // Defaults. if ($context['action_type'] == 'add') { $context['sub'] = array('name' => '', 'desc' => '', 'cost' => array('fixed' => 0), 'span' => array('value' => '', 'unit' => 'D'), 'prim_group' => 0, 'add_groups' => array(), 'active' => 1, 'repeatable' => 1, 'allow_partial' => 0, 'duration' => 'fixed', 'email_complete' => '', 'reminder' => 0); } else { $context['sub'] = getSubscriptionDetails($context['sub_id']); // Does this have members who are active? $context['disable_groups'] = countActiveSubscriptions($context['sub_id']); } // Load up all the groups. require_once SUBSDIR . '/Membergroups.subs.php'; $context['groups'] = getBasicMembergroupData(array('permission')); // This always happens. createToken($context['action_type'] == 'delete' ? 'admin-pmsd' : 'admin-pms'); }
function fruitframe_register($user_id) { $vars = $GLOBALS['user_additional_fields'] + array('first_name' => 'first_name', 'last_name' => 'last_name', 'description' => 'description', 'phone' => 'phone'); //Установка пользовательского пароля if (isset($_POST['password']) && $_POST['password'] == @$_POST['password_again']) { wp_set_password($_POST['password'], $user_id); } foreach ($vars as $field => $title) { update_user_meta($user_id, $field, $_POST[$field]); } updateSubscription($user_id); return $user_id; }
$subID = $_POST['subID']; } $attributeName = null; if (isset($_POST['attributeName'])) { $subID = $_POST['attributeName']; } $contactName = null; if (isset($_POST['contactName'])) { $contactName = $_POST['contactName']; } switch ($action) { case 'postSubscription': postSubscription($_POST['username'], $authuser, $authpw); break; case 'updateSubscription': updateSubscription($_POST['username'], $authuser, $authpw, $subID); break; case 'deleteSub': deleteSub($_POST['username'], $authuser, $authpw, $subID); break; case 'getIndivSubInfo': getIndivSubInfo($_POST['username'], $authuser, $authpw, $subID); break; case 'getAllSubInfo': getAllSubInfo($_POST['username'], $authuser, $authpw); break; case 'getContacts': getContacts($_POST['username'], $authuser, $authpw); break; case 'getContact': getContact($_POST['username'], $authuser, $authpw, $contactID);
retrievePaymentInstrument($sessionId); break; case 'createPaymentInstrument': createPaymentInstrument($sessionId); break; case 'validatePaymentInstrument': validatePaymentInstrument($sessionId); break; case 'updateSubscriber': updateSubscriber($sessionId); break; case 'searchSubscriptions': searchSubscriptions($sessionId); break; case 'updateSubscription': updateSubscription($sessionId, $subscriptionId); break; case 'modifyOrder': modifyOrder($sessionId, $subscriptionId); break; case 'applyCoupon': applyCoupon($sessionId, $subscriptionId); break; case 'searchProductsByCoupon': searchProductsByCoupon($couponCode); break; case 'searchDiscounts': searchDiscounts(); break; case 'searchCoupons': searchCoupons();