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; }
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'])); } }
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?
/** * 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)); }
/** * 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'])); } }
<?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'; }
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) {
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>'; } }
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&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&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>'); }
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; }
/** * 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')); }
$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) {