- // Add booking record if extension is installed
- if (EXT_IS_ACTIVE('booking')) {
- // Add record
- ADD_BOOKING_RECORD($subject, $uid, $points, 'add');
- } // END - if
-
- // Count up referal depth
- if (!isset($GLOBALS['ref_level'])) {
- // Initialialize referal system
- //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>): Referal system initialized!<br />\n";
- $GLOBALS['ref_level'] = 0;
- } else {
- // Increase referal level
- $GLOBALS['ref_level']++;
- //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>): Referal level increased. DEPTH={$GLOBALS['ref_level']}<br />\n";
- }
-
- // Default is 'normal' points
- $data = 'points';
-
- // Which points, locked or normal?
- if ($locked) $data = 'locked_points';
-
- // Check user account
- $result_user = SQL_QUERY_ESC("SELECT refid, email FROM `{!_MYSQL_PREFIX!}_user_data` WHERE userid=%s AND `status`='CONFIRMED' LIMIT 1",
- array(bigintval($uid)), __FUNCTION__, __LINE__);
-
- //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):uid={$uid},numRows=".SQL_NUMROWS($result_user).",points={$points}<br />\n";
- if (SQL_NUMROWS($result_user) == 1) {
- // This is the user and his ref
- list($ref, $email) = SQL_FETCHROW($result_user);
- $GLOBALS['cache_array']['add_uid'][$ref] = $uid;
-
- // Get percents
- $per = GET_REF_LEVEL_PERCENTS($GLOBALS['ref_level']);
- //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):uid={$uid},points={$points},depth={$GLOBALS['ref_level']},per={$per},mode={$add_mode}<br />\n";
-
- // Some percents found?
- if ($per > 0) {
- // Calculate new points
- //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):uid={$uid},points={$points},per={$per},depth={$GLOBALS['ref_level']}<br />\n";
- $ref_points = $points * $per / 100;
-
- // Pay refback here if level > 0 and in ref-mode
- if ((EXT_IS_ACTIVE('refback')) && ($GLOBALS['ref_level'] > 0) && ($per < 100) && ($add_mode == "ref") && (isset($GLOBALS['cache_array']['add_uid'][$uid]))) {
- //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):uid={$uid},data={$GLOBALS['cache_array']['add_uid'][$uid]},ref_points={$ref_points},depth={$GLOBALS['ref_level']} - BEFORE!<br />\n";
- $ref_points = ADD_REFBACK_POINTS($GLOBALS['cache_array']['add_uid'][$uid], $uid, $points, $ref_points);
- //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):uid={$uid},data={$GLOBALS['cache_array']['add_uid'][$uid]},ref_points={$ref_points},depth={$GLOBALS['ref_level']} - AFTER!<br />\n";
- } // END - if
-
- // Update points...
- SQL_QUERY_ESC("UPDATE `{!_MYSQL_PREFIX!}_user_points` SET %s=%s+%s WHERE userid=%s AND ref_depth='%s' LIMIT 1",
- array($data, $data, $ref_points, bigintval($uid), bigintval($GLOBALS['ref_level'])), __FUNCTION__, __LINE__);
- //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):data={$data},ref_points={$ref_points},uid={$uid},depth={$GLOBALS['ref_level']},mode={$add_mode} - UPDATE! (".SQL_AFFECTEDROWS().")<br />\n";
-
- // No entry updated?
- if (SQL_AFFECTEDROWS() < 1) {
- // First ref in this level! :-)
- SQL_QUERY_ESC("INSERT INTO `{!_MYSQL_PREFIX!}_user_points` (userid,ref_depth,%s) VALUES (%s,'%s',%s)",
- array($data, bigintval($uid), bigintval($GLOBALS['ref_level']), $ref_points), __FUNCTION__, __LINE__);
- //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):data={$data},ref_points={$ref_points},uid={$uid},depth={$GLOBALS['ref_level']},mode={$add_mode} - INSERTED! (".SQL_AFFECTEDROWS().")<br />\n";
- } // END - if
-
- // Update mediadata as well
- if (GET_EXT_VERSION('mediadata') >= '0.0.4') {
- // Update database
- MEDIA_UPDATE_ENTRY(array('total_points'), 'add', $ref_points);
- } // END - if
-
- // Points updated, maybe I shall send him an email?
- if (($send_notify) && ($ref > 0) && (!$locked)) {
- // Prepare content
- $content = array(
- 'percent' => $per,
- 'level' => bigintval($GLOBALS['ref_level']),
- 'points' => $ref_points,
- 'refid' => bigintval($ref)
- );
-
- // Load email template
- $msg = LOAD_EMAIL_TEMPLATE('confirm-referal', $content, bigintval($uid));
-
- SEND_EMAIL($email, THANX_REFERRAL_ONE, $msg);
- } elseif (($send_notify) && ($ref == 0) && (!$locked) && ($add_mode == "direct") && (!defined('__POINTS_VALUE'))) {
- // Direct payment shall be notified about
- define('__POINTS_VALUE', $ref_points);
-
- // Prepare content
- $content = array(
- 'text' => getMessage('REASON_DIRECT_PAYMENT'),
- 'points' => TRANSLATE_COMMA($ref_points)
- );
-
- // Load message
- $msg = LOAD_EMAIL_TEMPLATE('add-points', $content, $uid);
-
- // And sent it away
- SEND_EMAIL($email, getMessage('SUBJECT_DIRECT_PAYMENT'), $msg);
- if (!REQUEST_ISSET_GET(('mid'))) LOAD_TEMPLATE('admin_settings_saved', false, getMessage('ADMIN_POINTS_ADDED'));
- }
-
- // Maybe there's another ref?
- if (($ref > 0) && ($points > 0) && ($ref != $uid) && ($add_mode == 'ref')) {
- // Then let's credit him here...
- //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):uid={$uid},ref={$ref},points={$points} - ADVANCE!<br />\n";
- ADD_POINTS_REFSYSTEM(sprintf("%s_ref:%s", $subject, $GLOBALS['ref_level']), $ref, $points, $send_notify, $ref, $locked);
- } // END - if
- } // END - if
- } // END - if
-
- // Free result
- SQL_FREERESULT($result_user);
- //* DEBUG: */ print "</li></ul>----------------------- <font color=\"#aa0000\">".__FUNCTION__." - EXIT</font> ------------------------<br />\n";