Exemplo n.º 1
0
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();
    }
}
Exemplo n.º 2
0
 /**
  * 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');
 }
Exemplo n.º 3
0
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;
}
Exemplo n.º 4
0
     $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);
Exemplo n.º 5
0
     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();