Пример #1
0
function scheduled_paid_subscriptions()
{
    global $txt, $sourcedir, $scripturl, $modSettings, $language;
    // Start off by checking for removed subscriptions.
    $request = smf_db_query('
		SELECT id_subscribe, id_member
		FROM {db_prefix}log_subscribed
		WHERE status = {int:is_active}
			AND end_time < {int:time_now}', array('is_active' => 1, 'time_now' => time()));
    while ($row = mysql_fetch_assoc($request)) {
        require_once $sourcedir . '/ManagePaid.php';
        removeSubscription($row['id_subscribe'], $row['id_member']);
    }
    mysql_free_result($request);
    // Get all those about to expire that have not had a reminder sent.
    $request = smf_db_query('
		SELECT ls.id_sublog, m.id_member, m.member_name, m.email_address, m.lngfile, s.name, ls.end_time
		FROM {db_prefix}log_subscribed AS ls
			INNER JOIN {db_prefix}subscriptions AS s ON (s.id_subscribe = ls.id_subscribe)
			INNER JOIN {db_prefix}members AS m ON (m.id_member = ls.id_member)
		WHERE ls.status = {int:is_active}
			AND ls.reminder_sent = {int:reminder_sent}
			AND s.reminder > {int:reminder_wanted}
			AND ls.end_time < ({int:time_now} + s.reminder * 86400)', array('is_active' => 1, 'reminder_sent' => 0, 'reminder_wanted' => 0, 'time_now' => time()));
    $subs_reminded = array();
    while ($row = mysql_fetch_assoc($request)) {
        // If this is the first one load the important bits.
        if (empty($subs_reminded)) {
            require_once $sourcedir . '/lib/Subs-Post.php';
            // Need the below for loadLanguage to work!
            loadEssentialThemeData();
        }
        $subs_reminded[] = $row['id_sublog'];
        $replacements = array('PROFILE_LINK' => $scripturl . '?action=profile;area=subscriptions;u=' . $row['id_member'], 'REALNAME' => $row['member_name'], 'SUBSCRIPTION' => $row['name'], 'END_DATE' => strip_tags(timeformat($row['end_time'])));
        $emaildata = loadEmailTemplate('paid_subscription_reminder', $replacements, empty($row['lngfile']) || empty($modSettings['userLanguage']) ? $language : $row['lngfile']);
        // Send the actual email.
        sendmail($row['email_address'], $emaildata['subject'], $emaildata['body'], null, null, false, 2);
    }
    mysql_free_result($request);
    // Mark the reminder as sent.
    if (!empty($subs_reminded)) {
        smf_db_query('
			UPDATE {db_prefix}log_subscribed
			SET reminder_sent = {int:reminder_sent}
			WHERE id_sublog IN ({array_int:subscription_list})', array('subscription_list' => $subs_reminded, 'reminder_sent' => 1));
    }
    return true;
}
Пример #2
0
function ModifyUserSubscription()
{
    global $context, $txt, $modSettings, $smcFunc;
    loadSubscriptions();
    $context['log_id'] = isset($_REQUEST['lid']) ? (int) $_REQUEST['lid'] : 0;
    $context['sub_id'] = isset($_REQUEST['sid']) ? (int) $_REQUEST['sid'] : 0;
    $context['action_type'] = $context['log_id'] ? 'edit' : 'add';
    // Setup the template.
    $context['sub_template'] = 'modify_user_subscription';
    $context['page_title'] = $txt[$context['action_type'] . '_subscriber'];
    // If we haven't been passed the subscription ID get it.
    if ($context['log_id'] && !$context['sub_id']) {
        $request = $smcFunc['db_query']('', '
			SELECT id_subscribe
			FROM {db_prefix}log_subscribed
			WHERE id_sublog = {int:current_log_item}', array('current_log_item' => $context['log_id']));
        if ($smcFunc['db_num_rows']($request) == 0) {
            fatal_lang_error('no_access', false);
        }
        list($context['sub_id']) = $smcFunc['db_fetch_row']($request);
        $smcFunc['db_free_result']($request);
    }
    if (!isset($context['subscriptions'][$context['sub_id']])) {
        fatal_lang_error('no_access', false);
    }
    $context['current_subscription'] = $context['subscriptions'][$context['sub_id']];
    // Searching?
    if (isset($_POST['ssearch'])) {
        return ViewSubscribedUsers();
    } elseif (isset($_REQUEST['save_sub'])) {
        checkSession();
        // Work out the dates...
        $starttime = mktime($_POST['hour'], $_POST['minute'], 0, $_POST['month'], $_POST['day'], $_POST['year']);
        $endtime = mktime($_POST['hourend'], $_POST['minuteend'], 0, $_POST['monthend'], $_POST['dayend'], $_POST['yearend']);
        // Status.
        $status = $_POST['status'];
        // New one?
        if (empty($context['log_id'])) {
            // Find the user...
            $request = $smcFunc['db_query']('', '
				SELECT id_member, id_group
				FROM {db_prefix}members
				WHERE real_name = {string:name}
				LIMIT 1', array('name' => $_POST['name']));
            if ($smcFunc['db_num_rows']($request) == 0) {
                fatal_lang_error('error_member_not_found');
            }
            list($id_member, $id_group) = $smcFunc['db_fetch_row']($request);
            $smcFunc['db_free_result']($request);
            // Ensure the member doesn't already have a subscription!
            $request = $smcFunc['db_query']('', '
				SELECT id_subscribe
				FROM {db_prefix}log_subscribed
				WHERE id_subscribe = {int:current_subscription}
					AND id_member = {int:current_member}', array('current_subscription' => $context['sub_id'], 'current_member' => $id_member));
            if ($smcFunc['db_num_rows']($request) != 0) {
                fatal_lang_error('member_already_subscribed');
            }
            $smcFunc['db_free_result']($request);
            // Actually put the subscription in place.
            if ($status == 1) {
                addSubscription($context['sub_id'], $id_member, 0, $starttime, $endtime);
            } else {
                $smcFunc['db_insert']('', '{db_prefix}log_subscribed', array('id_subscribe' => 'int', 'id_member' => 'int', 'old_id_group' => 'int', 'start_time' => 'int', 'end_time' => 'int', 'status' => 'int'), array($context['sub_id'], $id_member, $id_group, $starttime, $endtime, $status), array('id_sublog'));
            }
        } else {
            $request = $smcFunc['db_query']('', '
				SELECT id_member, status
				FROM {db_prefix}log_subscribed
				WHERE id_sublog = {int:current_log_item}', array('current_log_item' => $context['log_id']));
            if ($smcFunc['db_num_rows']($request) == 0) {
                fatal_lang_error('no_access', false);
            }
            list($id_member, $old_status) = $smcFunc['db_fetch_row']($request);
            $smcFunc['db_free_result']($request);
            // Pick the right permission stuff depending on what the status is changing from/to.
            if ($old_status == 1 && $status != 1) {
                removeSubscription($context['sub_id'], $id_member);
            } elseif ($status == 1 && $old_status != 1) {
                addSubscription($context['sub_id'], $id_member, 0, $starttime, $endtime);
            } else {
                $smcFunc['db_query']('', '
					UPDATE {db_prefix}log_subscribed
					SET start_time = {int:start_time}, end_time = {int:end_time}, status = {int:status}
					WHERE id_sublog = {int:current_log_item}', array('start_time' => $starttime, 'end_time' => $endtime, 'status' => $status, 'current_log_item' => $context['log_id']));
            }
        }
        // Done - redirect...
        redirectexit('action=admin;area=paidsubscribe;sa=viewsub;sid=' . $context['sub_id']);
    } elseif (isset($_REQUEST['delete']) || isset($_REQUEST['finished'])) {
        checkSession();
        // Do the actual deletes!
        if (!empty($_REQUEST['delsub'])) {
            $toDelete = array();
            foreach ($_REQUEST['delsub'] as $id => $dummy) {
                $toDelete[] = (int) $id;
            }
            $request = $smcFunc['db_query']('', '
				SELECT id_subscribe, id_member
				FROM {db_prefix}log_subscribed
				WHERE id_sublog IN ({array_int:subscription_list})', array('subscription_list' => $toDelete));
            while ($row = $smcFunc['db_fetch_assoc']($request)) {
                removeSubscription($row['id_subscribe'], $row['id_member'], isset($_REQUEST['delete']));
            }
            $smcFunc['db_free_result']($request);
        }
        redirectexit('action=admin;area=paidsubscribe;sa=viewsub;sid=' . $context['sub_id']);
    }
    // Default attributes.
    if ($context['action_type'] == 'add') {
        $context['sub'] = array('id' => 0, 'start' => array('year' => (int) strftime('%Y', time()), 'month' => (int) strftime('%m', time()), 'day' => (int) strftime('%d', time()), 'hour' => (int) strftime('%H', time()), 'min' => (int) strftime('%M', time()) < 10 ? '0' . (int) strftime('%M', time()) : (int) strftime('%M', time()), 'last_day' => 0), 'end' => array('year' => (int) strftime('%Y', time()), 'month' => (int) strftime('%m', time()), 'day' => (int) strftime('%d', time()), 'hour' => (int) strftime('%H', time()), 'min' => (int) strftime('%M', time()) < 10 ? '0' . (int) strftime('%M', time()) : (int) strftime('%M', time()), 'last_day' => 0), 'status' => 1);
        $context['sub']['start']['last_day'] = (int) strftime('%d', mktime(0, 0, 0, $context['sub']['start']['month'] == 12 ? 1 : $context['sub']['start']['month'] + 1, 0, $context['sub']['start']['month'] == 12 ? $context['sub']['start']['year'] + 1 : $context['sub']['start']['year']));
        $context['sub']['end']['last_day'] = (int) strftime('%d', mktime(0, 0, 0, $context['sub']['end']['month'] == 12 ? 1 : $context['sub']['end']['month'] + 1, 0, $context['sub']['end']['month'] == 12 ? $context['sub']['end']['year'] + 1 : $context['sub']['end']['year']));
        if (isset($_GET['uid'])) {
            $request = $smcFunc['db_query']('', '
				SELECT real_name
				FROM {db_prefix}members
				WHERE id_member = {int:current_member}', array('current_member' => (int) $_GET['uid']));
            list($context['sub']['username']) = $smcFunc['db_fetch_row']($request);
            $smcFunc['db_free_result']($request);
        } else {
            $context['sub']['username'] = '';
        }
    } else {
        $request = $smcFunc['db_query']('', '
			SELECT ls.id_sublog, ls.id_subscribe, ls.id_member, start_time, end_time, status, payments_pending, pending_details,
				IFNULL(mem.real_name, {string:blank_string}) AS username
			FROM {db_prefix}log_subscribed AS ls
				LEFT JOIN {db_prefix}members AS mem ON (mem.id_member = ls.id_member)
			WHERE ls.id_sublog = {int:current_subscription_item}
			LIMIT 1', array('current_subscription_item' => $context['log_id'], 'blank_string' => ''));
        if ($smcFunc['db_num_rows']($request) == 0) {
            fatal_lang_error('no_access', false);
        }
        $row = $smcFunc['db_fetch_assoc']($request);
        $smcFunc['db_free_result']($request);
        // Any pending payments?
        $context['pending_payments'] = array();
        if (!empty($row['pending_details'])) {
            $pending_details = @unserialize($row['pending_details']);
            foreach ($pending_details as $id => $pending) {
                // Only this type need be displayed.
                if ($pending[3] == 'payback') {
                    // Work out what the options were.
                    $costs = @unserialize($context['current_subscription']['real_cost']);
                    if ($context['current_subscription']['real_length'] == 'F') {
                        foreach ($costs as $duration => $cost) {
                            if ($cost != 0 && $cost == $pending[1] && $duration == $pending[2]) {
                                $context['pending_payments'][$id] = array('desc' => sprintf($modSettings['paid_currency_symbol'], $cost . '/' . $txt[$duration]));
                            }
                        }
                    } elseif ($costs['fixed'] == $pending[1]) {
                        $context['pending_payments'][$id] = array('desc' => sprintf($modSettings['paid_currency_symbol'], $costs['fixed']));
                    }
                }
            }
            // Check if we are adding/removing any.
            if (isset($_GET['pending'])) {
                foreach ($pending_details as $id => $pending) {
                    // Found the one to action?
                    if ($_GET['pending'] == $id && $pending[3] == 'payback' && isset($context['pending_payments'][$id])) {
                        // Flexible?
                        if (isset($_GET['accept'])) {
                            addSubscription($context['current_subscription']['id'], $row['id_member'], $context['current_subscription']['real_length'] == 'F' ? strtoupper(substr($pending[2], 0, 1)) : 0);
                        }
                        unset($pending_details[$id]);
                        $new_details = serialize($pending_details);
                        // Update the entry.
                        $smcFunc['db_query']('', '
							UPDATE {db_prefix}log_subscribed
							SET payments_pending = payments_pending - 1, pending_details = {string:pending_details}
							WHERE id_sublog = {int:current_subscription_item}', array('current_subscription_item' => $context['log_id'], 'pending_details' => $new_details));
                        // Reload
                        redirectexit('action=admin;area=paidsubscribe;sa=modifyuser;lid=' . $context['log_id']);
                    }
                }
            }
        }
        $context['sub_id'] = $row['id_subscribe'];
        $context['sub'] = array('id' => 0, 'start' => array('year' => (int) strftime('%Y', $row['start_time']), 'month' => (int) strftime('%m', $row['start_time']), 'day' => (int) strftime('%d', $row['start_time']), 'hour' => (int) strftime('%H', $row['start_time']), 'min' => (int) strftime('%M', $row['start_time']) < 10 ? '0' . (int) strftime('%M', $row['start_time']) : (int) strftime('%M', $row['start_time']), 'last_day' => 0), 'end' => array('year' => (int) strftime('%Y', $row['end_time']), 'month' => (int) strftime('%m', $row['end_time']), 'day' => (int) strftime('%d', $row['end_time']), 'hour' => (int) strftime('%H', $row['end_time']), 'min' => (int) strftime('%M', $row['end_time']) < 10 ? '0' . (int) strftime('%M', $row['end_time']) : (int) strftime('%M', $row['end_time']), 'last_day' => 0), 'status' => $row['status'], 'username' => $row['username']);
        $context['sub']['start']['last_day'] = (int) strftime('%d', mktime(0, 0, 0, $context['sub']['start']['month'] == 12 ? 1 : $context['sub']['start']['month'] + 1, 0, $context['sub']['start']['month'] == 12 ? $context['sub']['start']['year'] + 1 : $context['sub']['start']['year']));
        $context['sub']['end']['last_day'] = (int) strftime('%d', mktime(0, 0, 0, $context['sub']['end']['month'] == 12 ? 1 : $context['sub']['end']['month'] + 1, 0, $context['sub']['end']['month'] == 12 ? $context['sub']['end']['year'] + 1 : $context['sub']['end']['year']));
    }
}
Пример #3
0
	FROM {db_prefix}log_subscribed
	WHERE id_subscribe = {int:current_subscription}
		AND id_member = {int:current_member}
	LIMIT 1', array('current_subscription' => $subscription_id, 'current_member' => $member_id));
if ($smcFunc['db_num_rows']($request) == 0) {
    generateSubscriptionError(sprintf($txt['paid_count_not_find_subscription_log'], $member_id, $subscription_id));
}
$subscription_info += $smcFunc['db_fetch_assoc']($request);
$smcFunc['db_free_result']($request);
// Is this a refund etc?
if ($gatewayClass->isRefund()) {
    // If the end time subtracted by current time, is not greater
    // than the duration (ie length of subscription), then we close it.
    if ($subscription_info['end_time'] - time() < $subscription_info['length']) {
        // Delete user subscription.
        removeSubscription($subscription_id, $member_id);
        $subscription_act = time();
        $status = 0;
    } else {
        loadSubscriptions();
        $subscription_act = $subscription_info['end_time'] - $context['subscriptions'][$subscription_id]['num_length'];
        $status = 1;
    }
    // Mark it as complete so we have a record.
    $smcFunc['db_query']('', '
		UPDATE {db_prefix}log_subscribed
		SET end_time = {int:current_time}
		WHERE id_subscribe = {int:current_subscription}
			AND id_member = {int:current_member}
			AND status = {int:status}', array('current_time' => $subscription_act, 'current_subscription' => $subscription_id, 'current_member' => $member_id, 'status' => $status));
    // Receipt?
Пример #4
0
/**
 * When a refund is processed, this either removes it or sets a new end time to
 * reflect its no longer re-occurring
 *
 * @param mixed[] $subscription_info the susbscription information array
 * @param int $member_id
 * @param int $time
 */
function handleRefund($subscription_info, $member_id, $time)
{
    $db = database();
    // If the end time subtracted by current time is not greater than the duration
    // (length of subscription), then we close it.
    if ($subscription_info['end_time'] - time() < $subscription_info['length']) {
        // Delete user subscription.
        removeSubscription($subscription_info['id_subscribe'], $member_id);
        $subscription_act = time();
        $status = 0;
    } else {
        loadSubscriptions();
        $subscription_act = $subscription_info['end_time'] - $time;
        $status = 1;
    }
    // Mark it as complete so we have a record.
    $db->query('', '
		UPDATE {db_prefix}log_subscribed
		SET end_time = {int:current_time}
		WHERE id_subscribe = {int:current_subscription}
			AND id_member = {int:current_member}
			AND status = {int:status}', array('current_time' => $subscription_act, 'current_subscription' => $subscription_info['id_subscribe'], 'current_member' => $member_id, 'status' => $status));
}
Пример #5
0
 /**
  * Edit or add a user subscription.
  *
  * - Accessed from ?action=admin;area=paidsubscribe;sa=modifyuser
  */
 public function action_modifyuser()
 {
     global $context, $txt, $modSettings;
     require_once SUBSDIR . '/PaidSubscriptions.subs.php';
     loadSubscriptions();
     $context['log_id'] = isset($_REQUEST['lid']) ? (int) $_REQUEST['lid'] : 0;
     $context['sub_id'] = isset($_REQUEST['sid']) ? (int) $_REQUEST['sid'] : 0;
     $context['action_type'] = $context['log_id'] ? 'edit' : 'add';
     // Setup the template.
     $context['sub_template'] = 'modify_user_subscription';
     $context['page_title'] = $txt[$context['action_type'] . '_subscriber'];
     loadJavascriptFile('suggest.js', array('defer' => true));
     // If we haven't been passed the subscription ID get it.
     if ($context['log_id'] && !$context['sub_id']) {
         $context['sub_id'] = validateSubscriptionID($context['log_id']);
     }
     if (!isset($context['subscriptions'][$context['sub_id']])) {
         fatal_lang_error('no_access', false);
     }
     $context['current_subscription'] = $context['subscriptions'][$context['sub_id']];
     // Searching?
     if (isset($_POST['ssearch'])) {
         return $this->action_viewsub();
     } elseif (isset($_REQUEST['save_sub'])) {
         checkSession();
         // Work out the dates...
         $starttime = mktime($_POST['hour'], $_POST['minute'], 0, $_POST['month'], $_POST['day'], $_POST['year']);
         $endtime = mktime($_POST['hourend'], $_POST['minuteend'], 0, $_POST['monthend'], $_POST['dayend'], $_POST['yearend']);
         // Status.
         $status = $_POST['status'];
         // New one?
         if (empty($context['log_id'])) {
             // Find the user...
             require_once SUBSDIR . '/Members.subs.php';
             $member = getMemberByName($_POST['name']);
             if (empty($member)) {
                 fatal_lang_error('error_member_not_found');
             }
             if (alreadySubscribed($context['sub_id'], $member['id_member'])) {
                 fatal_lang_error('member_already_subscribed');
             }
             // Actually put the subscription in place.
             if ($status == 1) {
                 addSubscription($context['sub_id'], $member['id_member'], 0, $starttime, $endtime);
             } else {
                 $details = array('id_subscribe' => $context['sub_id'], 'id_member' => $member['id_member'], 'id_group' => $member['id_group'], 'start_time' => $starttime, 'end_time' => $endtime, 'status' => $status);
                 logSubscription($details);
             }
         } else {
             $subscription_status = getSubscriptionStatus($context['log_id']);
             // Pick the right permission stuff depending on what the status is changing from/to.
             if ($subscription_status['old_status'] == 1 && $status != 1) {
                 removeSubscription($context['sub_id'], $subscription_status['id_member']);
             } elseif ($status == 1 && $subscription_status['old_status'] != 1) {
                 addSubscription($context['sub_id'], $subscription_status['id_member'], 0, $starttime, $endtime);
             } else {
                 $item = array('start_time' => $starttime, 'end_time' => $endtime, 'status' => $status, 'current_log_item' => $context['log_id']);
                 updateSubscriptionItem($item);
             }
         }
         // Done - redirect...
         redirectexit('action=admin;area=paidsubscribe;sa=viewsub;sid=' . $context['sub_id']);
     } elseif (isset($_REQUEST['delete']) || isset($_REQUEST['finished'])) {
         checkSession();
         // Do the actual deletes!
         if (!empty($_REQUEST['delsub'])) {
             $toDelete = array();
             foreach ($_REQUEST['delsub'] as $id => $dummy) {
                 $toDelete[] = (int) $id;
             }
             $deletes = prepareDeleteSubscriptions($toDelete);
             foreach ($deletes as $id_subscribe => $id_member) {
                 removeSubscription($id_subscribe, $id_member, isset($_REQUEST['delete']));
             }
         }
         redirectexit('action=admin;area=paidsubscribe;sa=viewsub;sid=' . $context['sub_id']);
     }
     // Default attributes.
     if ($context['action_type'] == 'add') {
         $context['sub'] = array('id' => 0, 'start' => array('year' => (int) strftime('%Y', time()), 'month' => (int) strftime('%m', time()), 'day' => (int) strftime('%d', time()), 'hour' => (int) strftime('%H', time()), 'min' => (int) strftime('%M', time()) < 10 ? '0' . (int) strftime('%M', time()) : (int) strftime('%M', time()), 'last_day' => 0), 'end' => array('year' => (int) strftime('%Y', time()), 'month' => (int) strftime('%m', time()), 'day' => (int) strftime('%d', time()), 'hour' => (int) strftime('%H', time()), 'min' => (int) strftime('%M', time()) < 10 ? '0' . (int) strftime('%M', time()) : (int) strftime('%M', time()), 'last_day' => 0), 'status' => 1);
         $context['sub']['start']['last_day'] = (int) strftime('%d', mktime(0, 0, 0, $context['sub']['start']['month'] == 12 ? 1 : $context['sub']['start']['month'] + 1, 0, $context['sub']['start']['month'] == 12 ? $context['sub']['start']['year'] + 1 : $context['sub']['start']['year']));
         $context['sub']['end']['last_day'] = (int) strftime('%d', mktime(0, 0, 0, $context['sub']['end']['month'] == 12 ? 1 : $context['sub']['end']['month'] + 1, 0, $context['sub']['end']['month'] == 12 ? $context['sub']['end']['year'] + 1 : $context['sub']['end']['year']));
         if (isset($_GET['uid'])) {
             require_once SUBSDIR . '/Members.subs.php';
             // Get the latest activated member's display name.
             $result = getBasicMemberData((int) $_GET['uid']);
             $context['sub']['username'] = $result['real_name'];
         } else {
             $context['sub']['username'] = '';
         }
     } else {
         $row = getPendingSubscriptions($context['log_id']);
         if (empty($row)) {
             fatal_lang_error('no_access', false);
         }
         // Any pending payments?
         $context['pending_payments'] = array();
         if (!empty($row['pending_details'])) {
             $pending_details = @unserialize($row['pending_details']);
             foreach ($pending_details as $id => $pending) {
                 // Only this type need be displayed.
                 if ($pending[3] == 'payback') {
                     // Work out what the options were.
                     $costs = @unserialize($context['current_subscription']['real_cost']);
                     if ($context['current_subscription']['real_length'] == 'F') {
                         foreach ($costs as $duration => $cost) {
                             if ($cost != 0 && $cost == $pending[1] && $duration == $pending[2]) {
                                 $context['pending_payments'][$id] = array('desc' => sprintf($modSettings['paid_currency_symbol'], $cost . '/' . $txt[$duration]));
                             }
                         }
                     } elseif ($costs['fixed'] == $pending[1]) {
                         $context['pending_payments'][$id] = array('desc' => sprintf($modSettings['paid_currency_symbol'], $costs['fixed']));
                     }
                 }
             }
             // Check if we are adding/removing any.
             if (isset($_GET['pending'])) {
                 foreach ($pending_details as $id => $pending) {
                     // Found the one to action?
                     if ($_GET['pending'] == $id && $pending[3] == 'payback' && isset($context['pending_payments'][$id])) {
                         // Flexible?
                         if (isset($_GET['accept'])) {
                             addSubscription($context['current_subscription']['id'], $row['id_member'], $context['current_subscription']['real_length'] == 'F' ? strtoupper(substr($pending[2], 0, 1)) : 0);
                         }
                         unset($pending_details[$id]);
                         $new_details = serialize($pending_details);
                         // Update the entry.
                         updatePendingSubscription($context['log_id'], $new_details);
                         // Reload
                         redirectexit('action=admin;area=paidsubscribe;sa=modifyuser;lid=' . $context['log_id']);
                     }
                 }
             }
         }
         $context['sub_id'] = $row['id_subscribe'];
         $context['sub'] = array('id' => 0, 'start' => array('year' => (int) strftime('%Y', $row['start_time']), 'month' => (int) strftime('%m', $row['start_time']), 'day' => (int) strftime('%d', $row['start_time']), 'hour' => (int) strftime('%H', $row['start_time']), 'min' => (int) strftime('%M', $row['start_time']) < 10 ? '0' . (int) strftime('%M', $row['start_time']) : (int) strftime('%M', $row['start_time']), 'last_day' => 0), 'end' => array('year' => (int) strftime('%Y', $row['end_time']), 'month' => (int) strftime('%m', $row['end_time']), 'day' => (int) strftime('%d', $row['end_time']), 'hour' => (int) strftime('%H', $row['end_time']), 'min' => (int) strftime('%M', $row['end_time']) < 10 ? '0' . (int) strftime('%M', $row['end_time']) : (int) strftime('%M', $row['end_time']), 'last_day' => 0), 'status' => $row['status'], 'username' => $row['username']);
         $context['sub']['start']['last_day'] = (int) strftime('%d', mktime(0, 0, 0, $context['sub']['start']['month'] == 12 ? 1 : $context['sub']['start']['month'] + 1, 0, $context['sub']['start']['month'] == 12 ? $context['sub']['start']['year'] + 1 : $context['sub']['start']['year']));
         $context['sub']['end']['last_day'] = (int) strftime('%d', mktime(0, 0, 0, $context['sub']['end']['month'] == 12 ? 1 : $context['sub']['end']['month'] + 1, 0, $context['sub']['end']['month'] == 12 ? $context['sub']['end']['year'] + 1 : $context['sub']['end']['year']));
     }
 }
Пример #6
0
<?php

/**
 * $Id$
 *
 * This script is called regulary. returns $userid of user who wants to chat with you, 0 otherwise
 * It uses atomEvents for handling
 */
require_once 'find_config.php';
$h->session->requireLoggedIn();
$event = getSubscriptions(SUBSCRIPTION_USER_CHATREQ);
if ($event && !isset($_GET['nonewchat'])) {
    echo $h->session->id . ';' . $event[0]['itemId'] . ';' . Users::getName($event[0]['itemId']);
    removeSubscription(SUBSCRIPTION_USER_CHATREQ, $event[0]['itemId']);
} else {
    echo '0;0;0';
}
Пример #7
0
include "../include/common.php";
include "../config.php";
include "../include/db_connect.php";
include "../include/session.php";
include "../include/apply_gen.php";
include "../include/apply_submit.php";
include "../include/subscribe.php";
if (isset($_SESSION['user_id'])) {
    $inform = array();
    if (isset($_POST['club_id'])) {
        $club_data = clubInfo($_POST['club_id']);
        $club_name = $club_data[0];
        if (isset($_POST['sub'])) {
            if ($_POST['sub'] == "on") {
                $out = removeSubscription($_SESSION['user_id'], $_POST['club_id']);
                $inform["success"] = "Unsubscribed from {$club_name}! You will <b>NOT</b> recieve messages from {$club_name}";
            } else {
                if ($_POST['sub'] == "off") {
                    $out = addSubscription($_SESSION['user_id'], $_POST['club_id']);
                    $inform["success"] = "Subscribed to {$club_name}! You will now recieve messages from {$club_name}";
                }
            }
        } else {
            if (isset($_POST['app'])) {
                if ($_POST['app'] == "on") {
                    $out = deleteApplication($_SESSION['user_id'], $_POST['club_id']);
                    if ($out == 0) {
                        $inform["success"] = "Deleted application for {$club_name}!";
                    } else {
                        if ($out == -1) {
Пример #8
0
function displayForum($_id)
{
    global $h;
    if (!is_numeric($_id)) {
        return false;
    }
    // Start/stop subscription
    if ($h->session->id) {
        if (!empty($_GET['subscribe'])) {
            addSubscription(SUBSCRIPTION_FORUM, $_GET['subscribe']);
        }
        if (!empty($_GET['unsubscribe'])) {
            removeSubscription(SUBSCRIPTION_FORUM, $_GET['unsubscribe']);
        }
    }
    /*
        if ($config['forum']['allow_votes'] && !empty($_POST['vote']) && !empty($_POST['voteId'])) {
            addForumVote($_POST['voteId'], $_POST['vote']);
        }*/
    if (!$_id) {
        //display root level
        echo displayRootForumContent();
        if ($h->session->isAdmin) {
            echo '<a href="forum_new.php?id=0">' . t('Create new root level category') . '</a>';
        }
        return;
    }
    if (forumItemIsFolder($_id)) {
        //display content of a folder (parent = root)
        echo displayForumContentFlat($_id);
        echo '<a href="forum_new.php?id=' . $_id . '">Create new forum here</a><br/>';
        if ($h->session->isAdmin) {
            echo '<a href="forum_edit.php?id=' . $_id . '">Edit forum name</a><br/>';
            echo '<a href="forum_delete.php?id=' . $_id . '">Delete forum</a><br/>';
        }
    } else {
        echo '<a href="forum_new.php?id=' . $_id . '">' . t('Reply') . '</a>';
        echo '<br/><br/>';
        //display flat discussion overview
        echo displayTopicFlat($_id);
        echo '<br/>';
        echo '<a href="forum_new.php?id=' . $_id . '">' . t('Reply') . '</a>';
    }
}
Пример #9
0
function subscribeFromCourse()
{
    require_once _base_ . '/lib/lib.form.php';
    require_once $GLOBALS['where_framework'] . '/lib/lib.directory.php';
    require_once _base_ . '/lib/lib.userselector.php';
    require_once $GLOBALS['where_lms'] . '/lib/lib.course.php';
    require_once $GLOBALS['where_lms'] . '/lib/lib.course_managment.php';
    $lang =& DoceboLanguage::CreateInstance('subscribe', 'lms');
    $back_url = 'index.php?modname=course&op=course_list';
    $acl_man =& Docebo::user()->getAclManager();
    $out =& $GLOBALS['page'];
    $out->setWorkingZone('content');
    $id_course = Get::req('id_course', DOTY_INT, 0);
    $edition_id = Get::req('edition_id', DOTY_INT, 0);
    $alert = Get::req('alert', DOTY_INT, 0);
    $delete_prev = Get::req('delete_from_prev', DOTY_INT, 0);
    $sel = new Course_Manager();
    if (isset($_POST['subscribe_import'])) {
        $course_info = Man_Course::getCourseInfo($id_course);
        $level_idst =& getCourseLevel($id_course);
        if (count($level_idst) == 0) {
            $level_idst =& DoceboCourse::createCourseLevel($id_course);
        }
        $course_selected = $sel->getCourseSelection($_POST);
        if (empty($course_selected)) {
            Util::jump_to('index.php?modname=course&op=course_list&result=err');
        }
        $id_course = Get::req('id_course', DOTY_INT, 0);
        $level = Get::req('level', DOTY_INT, 0);
        $status = Get::req('status', DOTY_INT, 0);
        $gsel = array();
        foreach ($course_selected as $trash => $id) {
            $gsel[$id] = getCourseLevel($id);
        }
        $query = "SELECT idUser, idCourse, level" . " FROM " . $GLOBALS['prefix_lms'] . "_courseuser" . " WHERE idCourse IN (" . implode(',', $course_selected) . ")";
        if ($level) {
            $query .= " AND level = '" . $level . "'";
        }
        if ($status != '-2') {
            $query .= " AND status = '" . $status . "'";
        }
        $result = sql_query($query);
        $array_user = array();
        $user_subscribed = array();
        while (list($id_user, $id_prev_course, $lv_sel) = sql_fetch_row($result)) {
            if ($delete_prev) {
                removeSubscription($id_prev_course, $id_user, $gsel[$id_prev_course][$lv_sel]);
            }
            // Add in group for permission
            $acl_man->addToGroup($level_idst[$lv_sel], $id_user);
            // Add in table
            $re = sql_query("\r\n\t\t\tINSERT INTO " . $GLOBALS['prefix_lms'] . "_courseuser\r\n\t\t\t( idUser, idCourse, edition_id, level, waiting, subscribed_by, date_inscr )\r\n\t\t\tVALUES\r\n\t\t\t( '" . $id_user . "', '" . $id_course . "', '" . $edition_id . "', '" . $lv_sel . "', '0', '" . getLogUserId() . "', '" . date("Y-m-d H:i:s") . "' )\t");
            if ($re) {
                $user_subscribed[] = $id_user;
                addUserToTimeTable($id_user, $id_course, $edition_id);
            }
        }
        Docebo::user()->loadUserSectionST('/lms/course/private/');
        Docebo::user()->SaveInSession();
        require_once _base_ . '/lib/lib.eventmanager.php';
        $array_subst = array('[url]' => Get::sett('url'), '[course]' => $course_info['name'], '[medium_time]' => $course_info['mediumTime'], '[course_name]' => $course_info['name'], '[course_code]' => $course['code']);
        if (!empty($user_subscribed) && $alert) {
            // message to user that is subscribed
            $msg_composer = new EventMessageComposer();
            $msg_composer->setSubjectLangText('email', '_NEW_USER_SUBSCRIBED_SUBJECT', false);
            $msg_composer->setBodyLangText('email', '_NEW_USER_SUBSCRIBED_TEXT', $array_subst);
            $msg_composer->setBodyLangText('sms', '_NEW_USER_SUBSCRIBED_TEXT_SMS', $array_subst);
            // send message to the user subscribed
            createNewAlert('UserCourseInserted', 'subscribe', 'insert', '1', 'User subscribed', $user_subscribed, $msg_composer);
        }
        Util::jump_to('index.php?modname=course&op=course_list&result=ok');
    }
    $sel->setLink('index.php?modname=meta_certificate&amp;op=new_assign');
    $sel->show_coursepath_selector = false;
    $sel->show_catalogue_selector = false;
    $array_level = CourseLevel::getLevels();
    $array_level['0'] = $lang->def('_ALL');
    $arr_status = array('-2' => $lang->def('_ALL'), _CUS_CONFIRMED => $lang->def('_USER_STATUS_CONFIRMED'), _CUS_SUBSCRIBED => $lang->def('_USER_STATUS_SUBS'), _CUS_BEGIN => $lang->def('_USER_STATUS_BEGIN'), _CUS_END => $lang->def('_USER_STATUS_END'), _CUS_SUSPEND => $lang->def('_SUSPENDED'), _CUS_CANCELLED => $lang->def('_USER_STATUS_CANCELLED'));
    $out->add(getTitleArea($lang->def('_IMPORT_FROM_COURSE')) . '<div class="std_block">' . Form::openForm('course_selection', 'index.php?modname=subscribe&amp;op=subscribe_from_course') . Form::openElementSpace() . Form::getDropdown($lang->def('_LEVEL_TO_IMPORT'), 'level', 'level', $array_level, isset($_POST['level']) ? $_POST['level'] : '0') . Form::getDropdown($lang->def('_STATUS_TO_IMPORT'), 'status', 'status', $arr_status, isset($_POST['status']) ? $_POST['status'] : '-2') . Form::getCheckbox($lang->def('_SEND_ALERT'), 'alert', 'alert', '1', $delete_prev) . Form::getCheckbox($lang->def('_DELETE'), 'delete_from_prev', 'delete_from_prev', '1', $delete_prev) . Form::closeElementSpace());
    $sel->loadSelector(false);
    $out->add(Form::getHidden('id_course', 'id_course', $id_course) . Form::getHidden('edition_id', 'edition_id', $edition_id) . Form::openButtonSpace() . Form::getBreakRow() . Form::getButton('subscribe_import', 'subscribe_import', $lang->def('_SUBSCRIBE')) . Form::getButton('undo_course', 'undo_course', $lang->def('_UNDO')) . Form::closeButtonSpace() . Form::closeForm() . '</div>');
}
Пример #10
0
 public function delDate($id_date)
 {
     $res = false;
     $id_course = $this->getDateCourse($id_date);
     $subscribed = $this->getDateSubscribed($id_date);
     foreach ($subscribed as $id_user) {
         $control = $this->removeUserFromDate($id_user, $id_date, $id_course);
         if (!$control) {
             require_once _lms_ . '/admin/modules/subscribe/subscribe.php';
             require_once _lms_ . '/lib/lib.course.php';
             $docebo_course = new DoceboCourse($id_course);
             $course_man = new Man_Course();
             $course_info = $course_man->getCourseInfo($id_course);
             $date_begin = $course_info["date_begin"];
             $date_end = $course_info["date_end"];
             $group_levels = $docebo_course->getCourseLevel($id_course);
             $user_levels = getSubscribedLevel($id_course, false, false, 0);
             removeSubscription($id_course, $id_user, $group_levels[$user_levels[$id_user]], 0, $date_begin, $date_end);
         }
     }
     if ($this->clearDateDay($id_date)) {
         $query = "DELETE FROM " . $this->date_table . " WHERE id_date = " . $id_date;
         $res = sql_query($query);
     }
     return $res;
 }
Пример #11
0
 /**
  * deleteTransaction
  * @param <int> $id_trans
  * @param <boolean> $rem_user_subscription
  * @return boolean
  */
 public function deleteTransaction($id_trans, $rem_user_subscription = false)
 {
     $res = false;
     $transaction_info = $this->getTransactionInfo($id_trans);
     $id_user = $transaction_info['id_user'];
     if ($rem_user_subscription) {
         foreach ($transaction_info['product'] as $prod) {
             // remove subscription request
             require_once _lms_ . '/admin/modules/subscribe/subscribe.php';
             $man_course = new Man_Course();
             if ($prod['activated'] == 0) {
                 $id_course = $prod['id_course'];
                 $edition_id = $prod['id_edition'];
                 $docebo_course = new DoceboCourse($id_course);
                 $group_levels = $docebo_course->getCourseLevel($id_course);
                 $waiting_users = $man_course->getWaitingSubscribed($id_course);
                 $level = $waiting_users['users_info'][$id_user]['level'];
                 $result = removeSubscription($id_course, $id_user, $group_levels[$level], $edition_id);
             }
         }
     }
     $qtxt = "DELETE FROM %adm_transaction_info WHERE id_trans = " . (int) $id_trans;
     $q1 = sql_query($qtxt);
     $qtxt = "DELETE FROM %adm_transaction WHERE id_trans = " . (int) $id_trans;
     $q2 = sql_query($qtxt);
     if ($q1 && $q2) {
         $res = true;
     }
     return $res;
 }
<?php

chdir("../../database");
require_once "storeAccount.php";
if (isset($_GET["productId"]) and isset($_GET["userId"])) {
    $productId = intval($_GET["productId"]);
    $userId = intval($_GET["userId"]);
    removeSubscription($userId, $productId);
    echo json_encode(array("result" => "ok"));
} else {
    echo json_encode(array("result" => "missingParams"));
}
 function approveusers()
 {
     if (!$this->permissions['moderate']) {
         die("You can't access");
     }
     require_once _lms_ . '/lib/lib.course.php';
     require_once _base_ . '/lib/lib.preference.php';
     $id_course = Get::req('id_course', DOTY_INT, 0);
     $course_info = Man_Course::getCourseInfo($id_course);
     $edition_id = Get::req('id_edition', DOTY_INT, 0);
     $re = true;
     $approve_user = array();
     $deny_user = array();
     if (isset($_POST['waiting_user'])) {
         $man_course = new Man_Course();
         $waiting_users =& $man_course->getWaitingSubscribed($id_course);
         $tot_deny = array();
         require_once _lms_ . '/lib/lib.course.php';
         require_once _lms_ . '/admin/modules/subscribe/subscribe.php';
         $docebo_course = new DoceboCourse($id_course);
         $group_levels = $docebo_course->getCourseLevel($id_course);
         if (count($group_levels) == 0 || $group_levels[1] == '') {
             $group_levels =& $docebo_course->createCourseLevel($id_course);
         }
         while (list($id_user, $action) = each($_POST['waiting_user'])) {
             if ($action == 0) {
                 // approved -----------------------------------------------
                 $text_query = "\r\n\t\t\t\t\tUPDATE " . $GLOBALS['prefix_lms'] . "_courseuser\r\n\t\t\t\t\tSET waiting = 0,\r\n\t\t\t\t\t\tstatus = '" . _CUS_SUBSCRIBED . "'\r\n\t\t\t\t\tWHERE idCourse = '" . $id_course . "' AND idUser = '******' ";
                 $text_query .= "AND edition_id='" . $edition_id . "'";
                 $result = sql_query($text_query);
                 if ($result) {
                     $approve_user[] = $id_user;
                 }
                 $re &= $result;
             } elseif ($action == 1) {
                 // refused --------------------------------------------------
                 $level = $waiting_users['users_info'][$id_user]['level'];
                 $sub_by = $waiting_users['users_info'][$id_user]['subscribed_by'];
                 $result = removeSubscription($id_course, $id_user, $group_levels[$level], $edition_id);
                 if ($sub_by != 0 && $id_user != $sub_by) {
                     if (isset($tot_deny[$sub_by])) {
                         $tot_deny[$sub_by]++;
                     } else {
                         $tot_deny[$sub_by] = 1;
                     }
                 }
                 if ($result) {
                     $deny_user[] = $id_user;
                 }
                 $re &= $result;
             }
         }
     }
     if (!empty($tot_deny)) {
         while (list($id_user, $inc) = each($tot_deny)) {
             $pref = new UserPreferences($id_user);
             $max_subscribe = $pref->getAdminPreference('admin_rules.max_course_subscribe');
             $pref->setPreference('admin_rules.max_course_subscribe', $max_subscribe + $inc);
         }
     }
     require_once _base_ . '/lib/lib.eventmanager.php';
     $array_subst = array('[url]' => Get::sett('url'), '[course]' => $course_info['name']);
     if (!empty($approve_user)) {
         $msg_composer = new EventMessageComposer();
         $msg_composer->setSubjectLangText('email', '_APPROVED_SUBSCRIBED_SUBJECT', false);
         $msg_composer->setBodyLangText('email', '_APPROVED_SUBSCRIBED_TEXT', $array_subst);
         $msg_composer->setBodyLangText('email', "\n\n" . $_POST['subscribe_accept'], array(), true);
         $msg_composer->setBodyLangText('sms', '_APPROVED_SUBSCRIBED_TEXT_SMS', $array_subst);
         // send message to the user subscribed
         createNewAlert('UserCourseInserted', 'subscribe', 'approve', '1', 'User course approve', $approve_user, $msg_composer, true);
     }
     if (!empty($deny_user)) {
         $msg_composer = new EventMessageComposer();
         $msg_composer->setSubjectLangText('email', '_DENY_SUBSCRIBED_SUBJECT', false);
         $msg_composer->setBodyLangText('email', '_DENY_SUBSCRIBED_TEXT', $array_subst);
         $msg_composer->setBodyLangText('email', "\n\n" . $_POST['subscribe_refuse'], array(), true);
         $msg_composer->setSubjectLangText('sms', '_DENY_SUBSCRIBED_SUBJECT_SMS', false);
         $msg_composer->setBodyLangText('sms', '_DENY_SUBSCRIBED_TEXT_SMS', $array_subst);
         // send message to the user subscribed
         createNewAlert('UserCourseInserted', 'subscribe', 'deny', '1', 'User course deny', $deny_user, $msg_composer, true);
     }
     Util::jump_to('index.php?r=' . $this->link_course . '/show&res=' . ($re ? 'ok' : 'err'));
 }
Пример #14
0
        $programId = 'USEETVANNV30HR';
        $oldpassword = getoldpass($sender);
        if (!$oldpassword) {
            $pass = md5($sender);
            $oldpassword = substr($pass, strlen($pass) - 5, 5);
        }
        $msg = "User Login: {$sender} dan Password: {$oldpassword}, anda dapat mengganti password melalui www.useetv.com";
        $msgEncode = str_replace(' ', '+', $msg);
        $apiNotif = array("http://202.3.208.6:9100/subs/sendnotif.jsp", "http://202.3.219.2:9100/subs/sendnotif.jsp", "http://202.3.219.3:9100/subs/sendnotif.jsp");
        //shuffle($apiNotif);
        $urlTelkomsel = $apiNotif[0] . "?pwd={$pwd}&sid={$sid}&sms={$msgEncode}&msisdn={$msisdn}&cp_name={$appsid}&programid={$programId}";
        $xsent = file_get_contents($urlTelkomsel);
        break;
    case 'unreg':
        $urlTelkomsel = "-";
        removeSubscription($sender);
        break;
    default:
        $sid = 'VAS_Y_C04000_0000_PULL';
        $msg = "Keyword salah, ketik FREE untuk registrasi, ketik SVOD untuk membeli paket TOVI MOVIES, dan NEW untuk paket TOVI NEW";
        $sent = true;
        break;
}
if ($sid == 'VAS_Y_C04000_3500_PULL') {
    $amount = 3500;
} else {
    if ($sid == 'VAS_Y_C04000_010K_PULL') {
        $amount = 10000;
    }
}
if (!$urlTelkomsel) {