]> git.mxchange.org Git - mailer.git/blob - inc/libs/refback_functions.php
Referal system rewritten, ext-refback continued:
[mailer.git] / inc / libs / refback_functions.php
1 <?php
2 /************************************************************************
3  * Mailer v0.2.1-FINAL                                Start: 09/28/2008 *
4  * ===================                          Last change: 09/28/2008 *
5  *                                                                      *
6  * -------------------------------------------------------------------- *
7  * File              : refback_functions.php                            *
8  * -------------------------------------------------------------------- *
9  * Short description : Functions for refback extension                  *
10  * -------------------------------------------------------------------- *
11  * Kurzbeschreibung  : Funktionen fuer Refback-Erweiterung              *
12  * -------------------------------------------------------------------- *
13  * $Revision::                                                        $ *
14  * $Date::                                                            $ *
15  * $Tag:: 0.2.1-FINAL                                                 $ *
16  * $Author::                                                          $ *
17  * -------------------------------------------------------------------- *
18  * Copyright (c) 2003 - 2009 by Roland Haeder                           *
19  * Copyright (c) 2009 - 2011 by Mailer Developer Team                   *
20  * For more information visit: http://www.mxchange.org                  *
21  *                                                                      *
22  * This program is free software; you can redistribute it and/or modify *
23  * it under the terms of the GNU General Public License as published by *
24  * the Free Software Foundation; either version 2 of the License, or    *
25  * (at your option) any later version.                                  *
26  *                                                                      *
27  * This program is distributed in the hope that it will be useful,      *
28  * but WITHOUT ANY WARRANTY; without even the implied warranty of       *
29  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *
30  * GNU General Public License for more details.                         *
31  *                                                                      *
32  * You should have received a copy of the GNU General Public License    *
33  * along with this program; if not, write to the Free Software          *
34  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,               *
35  * MA  02110-1301  USA                                                  *
36  ************************************************************************/
37
38 // Some security stuff...
39 if (!defined('__SECURITY')) {
40         die();
41 } // END - if
42
43 // Payback refback for refid and reduce it for current user
44 function addRefbackPoints ($userid, $ref, $points, $ref_points) {
45         //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',ref=' . $ref . ',points=' . $points . ',ref_points=' . $ref_points . ' - ENTERED!');
46         // Back ref depths
47         $GLOBALS['refback_depth'][$userid][$ref] = $GLOBALS['ref_level'];
48
49         // Init points
50         $return = $ref_points;
51
52         // Get all ref levels
53         $result_refs = SQL_QUERY('SELECT `level`, `percents` FROM `{?_MYSQL_PREFIX?}_refdepths` WHERE `level` > 0 ORDER BY `level` ASC',
54                 __FUNCTION__, __LINE__);
55
56         // "Walk" through all level
57         while ($content = SQL_FETCHARRAY($result_refs)) {
58                 // Reset ref depths
59                 initReferalSystem();
60
61                 // "Walk" through all refids
62                 //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',ref=' . $ref . ',level=' . $content['level'] . ',percents=' . $content['percents'] . ',points=' . $points . ' - LOOP START!');
63                 foreach (getArrayFromRefbackLevel($userid, $content['level']) as $refid) {
64                         // Skip level zero or if both are the same
65                         if ($userid == $refid) {
66                                 continue;
67                         } // END - if
68
69                         // Get refback percents
70                         $percents = getRefbackPercents($userid, $refid);
71                         //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',ref=' . $ref . ',refid=' . $refid . ',points=' . $points . ',percents=' . $percents);
72
73                         // Some percents given?
74                         if ($percents > 0) {
75                                 //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'points=' . $points . ',[percents]=' . $content['percents'] . ',percents=' . $percents . ',level=' . $content['level']);
76                                 // Calculate points for refback
77                                 $refback = $points * ($content['percents'] / 100) * ($percents / 100);
78
79                                 // Update refback table ('refid' and 'userid' must be exchanged!)
80                                 SQL_QUERY_ESC("UPDATE
81         `{?_MYSQL_PREFIX?}_user_refs`
82 SET
83         `points`=`points`+%s
84 WHERE
85         `userid`=%s AND
86         `refid`=%s
87 LIMIT 1",
88                                         array(
89                                                 $refback,
90                                                 $refid,
91                                                 $userid
92                                         ), __FUNCTION__, __LINE__);
93
94                                 // Something must have been updated
95                                 if (SQL_HASZEROAFFECTED()) {
96                                         // Please report this bug
97                                         debug_report_bug(__FUNCTION__, __LINE__, 'Nothing has been updated in user_refs,userid=' . $userid . ',refid=' . $refid . ',refback=' . $refback);
98                                 } // END - if
99
100                                 // Add points again, but only directly
101                                 //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'refback=' . $refback . ',userid=' . $userid . ',ref=' . $ref . ',refid=' . $refid . ' - UPDATE! (' . SQL_AFFECTEDROWS() . ')');
102                                 addPointsThroughReferalSystem(sprintf("refback:%s", $refid), $userid, $refback);
103
104                                 // Reduce points if refid is found
105                                 if ($refid == $ref) {
106                                         // Reduce points here!
107                                         $return = $points * ($content['percents'] / 100) - $refback;
108                                         //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'return=' . $return . ' - REDUCED!');
109                                 } // END - if
110                         } // END - if
111                 } // END foreach
112         } // END - while
113
114         // Free result
115         SQL_FREERESULT($result_refs);
116
117         // Restore ref depth
118         $GLOBALS['ref_level'] = $GLOBALS['refback_depth'][$userid][$ref];
119
120         // Return them
121         //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',ref=' . $ref . ',points=' . $points . ',ref_points=' . $ref_points . ',return=' . $return . ' - EXIT!');
122         return $return;
123 }
124
125 // "Getter" for refback percents
126 function getRefbackPercents ($userid, $ref) {
127         //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',ref=' . $ref . ' - ENTERED!');
128         // Skip identical ids
129         if ($userid == $ref) {
130                 return 0;
131         } // END - if
132
133         // Is it cached?
134         if (!isset($GLOBALS['refback_percents'][$userid][$ref])) {
135                 // Default is zero
136                 $GLOBALS['refback_percents'][$userid][$ref] = '0';
137
138                 // Get percents from database
139                 $result = SQL_QUERY_ESC("SELECT `refback` FROM `{?_MYSQL_PREFIX?}_user_refs` WHERE `userid`=%s AND `refid`=%s LIMIT 1",
140                         array($ref, $userid), __FUNCTION__, __LINE__);
141
142                 // Entry found? (Should be!)
143                 if (SQL_NUMROWS($result) == 1) {
144                         // Fetch percents
145                         list($GLOBALS['refback_percents'][$userid][$ref]) = SQL_FETCHROW($result);
146                         //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',ref=' . $ref . ',percents=' . $GLOBALS['refback_percents'][$userid][$ref]);
147                 } else {
148                         // Debug log
149                         logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',ref=' . $ref . ' - No entry found. :-(');
150                 }
151
152                 // Free result
153                 SQL_FREERESULT($result);
154         } // END - if
155
156         // Return percents
157         //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',ref=' . $ref . ',refback_percents=' . $GLOBALS['refback_percents'][$userid][$ref] . ' - EXIT!');
158         return $GLOBALS['refback_percents'][$userid][$ref];
159 }
160
161 // "Getter" for userid array which will return only one entry
162 function getArrayFromRefbackLevel ($refid, $level) {
163         //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'refid=' . $refid . ',level=' . $level);
164         // Init userids
165         $userIds = array();
166
167         // Look for all
168         $result = SQL_QUERY_ESC("SELECT
169         `userid`
170 FROM
171         `{?_MYSQL_PREFIX?}_user_refs`
172 WHERE
173         `refid`=%s AND `level`=%s
174 ORDER BY
175         `userid` ASC",
176                 array($refid, $level), __FUNCTION__, __LINE__);
177
178         // Entries found?
179         //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'numRows=' . SQL_NUMROWS($result));
180         if (!SQL_HASZERONUMS($result)) {
181                 // Add all
182                 while ($content = SQL_FETCHARRAY($result)) {
183                         //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'refid=' . $refid . ',level=' . $level . ',userid=' . $content['userid']);
184                         $userIds[] = $content['userid'];
185                 } // END - while
186         } // END - if
187
188         // Free result
189         SQL_FREERESULT($result);
190
191         // Return array
192         //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'refid=' . $refid . ',userIds()=' . count($userIds) . ' - EXIT!');
193         return $userIds;
194 }
195
196 // Update "refback table"
197 function updateRefbackTable ($userid) {
198         //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ' - ENTERED!');
199         // Load all referals
200         loadRefbackTable($userid);
201
202         // Add missing level > 1
203         addMissingRefbackLevels($userid);
204
205         // The last step is to flush all userid's entries to the database
206         flushRefbackTableToDatabase($userid);
207
208         //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ' - EXIT!');
209 }
210
211 // Loads all referals for given userid
212 function loadRefbackTable ($userid) {
213         //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ' - ENTERED!');
214         // Init array
215         $GLOBALS['refback_refid'][$userid] = array();
216
217         // Get all level entries from the refsystem table
218         $result = SQL_QUERY_ESC('SELECT `level` FROM `{?_MYSQL_PREFIX?}_refsystem` WHERE `userid`=%s ORDER BY `level` ASC',
219                 array($userid), __FUNCTION__, __LINE__);
220
221         // Do we have entries?
222         //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',SQL_NUMROWS()=' . SQL_NUMROWS($result));
223         if (SQL_NUMROWS($result) > 0) {
224                 // Then walk through all levels
225                 while (list($level) = SQL_FETCHROW($result)) {
226                         // Init array
227                         //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',level=' . $level);
228                         $GLOBALS['refback_refid'][$userid][$level] = array();
229
230                         // Level is = 1?
231                         if ($level == 1) {
232                                 // Load all referals of this user
233                                 $result_refs = SQL_QUERY_ESC('SELECT `userid` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `refid`=%s ORDER BY `userid` ASC',
234                                         array($userid), __FUNCTION__, __LINE__);
235
236                                 // Do we have entries?
237                                 //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',level=' . $level . ',SQL_NUMROWS()=' . SQL_NUMROWS($result_refs));
238                                 if (SQL_NUMROWS($result_refs) > 0) {
239                                         // Then again walk through all
240                                         while (list($refid) = SQL_FETCHROW($result_refs)) {
241                                                 // Add this refid
242                                                 $GLOBALS['refback_refid'][$userid][$level][] = $refid;
243                                                 //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',level=' . $level . ',refid=' . $refid);
244                                                 // Load the refid's array as well
245                                                 loadRefbackTable($refid);
246                                         } // END - while
247                                 } // END - if
248
249                                 // Free result
250                                 SQL_FREERESULT($result_refs);
251                         } // END - if
252                 } // END - while
253         } // END - if
254
255         // Free result
256         SQL_FREERESULT($result);
257         //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ' - EXIT!');
258 }
259
260 // Adds missing refback levels to the array
261 function addMissingRefbackLevels ($userid) {
262         //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ' - ENTERED!');
263         // If the array is gone, you have called this function without calling loadRefbackTable()
264         if (!isset($GLOBALS['refback_refid'][$userid])) {
265                 // Please fix your code
266                 debug_report_bug(__FUNCTION__, __LINE__, 'Called without calling loadRefbackTable() before! userid=' . $userid);
267         } // END - if
268         //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',count()=' . count($GLOBALS['refback_refid'][$userid]));
269
270         // Now walk through the array, first levels
271         foreach ($GLOBALS['refback_refid'][$userid] as $level=>$levelArray) {
272                 //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',level=' . $level . ',count()=' . count($levelArray));
273                 // Next are the users
274                 foreach ($levelArray as $refid) {
275                         //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',level=' . $level . ',refid=' . $refid);
276                         // Does the refid have an array?
277                         if (isset($GLOBALS['refback_refid'][$refid])) {
278                                 //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',level=' . $level . ',refid=' . $refid . ',count()=' . count($GLOBALS['refback_refid'][$refid]));
279                                 // Okay, then walk through here, too
280                                 foreach ($GLOBALS['refback_refid'][$refid] as $refLevel=>$refArray) {
281                                         //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',level=' . $level . ',refid=' . $refid . ',refLevel=' . $refLevel . ',count()=' . count($refArray));
282                                         // Also walk through this one
283                                         foreach ($refArray as $refRefid) {
284                                                 // Calculate new level
285                                                 $newLevel =  $level + $refLevel;
286                                                 //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',level=' . $level . ',refid=' . $refid . ',refLevel=' . $refLevel . ',refRefid=' . $refRefid . ',newLevel=' . $newLevel);
287                                                 // Is the refRefid not in?
288                                                 if ((!isset($GLOBALS['refback_refid'][$userid][$newLevel])) || (!in_array($refRefid, $GLOBALS['refback_refid'][$userid][$newLevel]))) {
289                                                         // Then we must add this ref's refid to the userid's next level
290                                                         //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',newLevel=' . $newLevel . ',refRefid=' . $refRefid . ' - ADDED!');
291                                                         $GLOBALS['refback_refid'][$userid][$newLevel][] = $refRefid;
292                                                 } // END - if
293                                         } // END - foreach
294                                 } // END - foreach
295                         } // END - foreach
296                 } // END - foreach
297         } // END - foreach
298         //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ' - EXIT!');
299 }
300
301 // Flush all entries for given userid to database
302 function flushRefbackTableToDatabase ($userid) {
303         //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ' - ENTERED!');
304         // If the array is gone, you have called this function without calling loadRefbackTable()
305         if (!isset($GLOBALS['refback_refid'][$userid])) {
306                 // Please fix your code
307                 debug_report_bug(__FUNCTION__, __LINE__, 'Called without calling loadRefbackTable() before! userid=' . $userid);
308         } // END - if
309         //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',count()=' . count($GLOBALS['refback_refid'][$userid]));
310
311         // If no entries are there, skip this whole step
312         if (count($GLOBALS['refback_refid'][$userid]) == 0) {
313                 // No entries found
314                 //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ' - ABORTING...');
315                 return;
316         } // END - if
317
318         // Prepare SQL
319         $SQL = 'INSERT INTO `{?_MYSQL_PREFIX?}_user_refs` (`userid`,`level`,`refid`) VALUES ';
320
321         // Now walk through the array, first levels
322         foreach ($GLOBALS['refback_refid'][$userid] as $level=>$levelArray) {
323                 //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',level=' . $level . ',count()=' . count($levelArray));
324                 // Next are the users
325                 foreach ($levelArray as $refid) {
326                         //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',level=' . $level . ',refid=' . $refid);
327                         // Query the user_refs table
328                         list($count) = SQL_FETCHROW(SQL_QUERY_ESC('SELECT COUNT(`id`) AS `count` FROM `{?_MYSQL_PREFIX?}_user_refs` WHERE `userid`=%s AND `level`=%s AND `refid`=%s LIMIT 1',
329                                 array(
330                                         $userid,
331                                         $level,
332                                         $refid
333                                 ), __FUNCTION__, __LINE__));
334
335                         // Do we have no entry?
336                         if ($count == 0) {
337                                 // Then add it to the SQL
338                                 $SQL .= '(' . $userid . ',' . $level . ',' . $refid . '),';
339                         } // END - if
340                 } // END - foreach
341         } // END - foreach
342
343         // Remove last comma from SQL
344         $SQL = substr($SQL, 0, -1);
345
346         // And run it
347         //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',SQL=' . $SQL);
348         SQL_QUERY($SQL, __FUNCTION__, __LINE__);
349
350         //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ' - EXIT!');
351 }
352
353 // "Getter" for array for user refs in given level
354 function getArrayFromRefbackUserRefs ($userid, $level) {
355         //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',level=' . $level . ' - ENTERED!');
356         // Default is no refs and no nickname
357         $refs = array();
358
359         // Get refs from database
360         $result = SQL_QUERY_ESC("SELECT
361         r.`id`,
362         r.`refid`,
363         r.`refback`,
364         r.`points`,
365         d.`status`,
366         d.`joined`,
367         d.`mails_confirmed`,
368         d.`emails_received`,
369         d.`refid` AS `level_refid`
370 FROM
371         `{?_MYSQL_PREFIX?}_user_refs` AS r
372 LEFT JOIN
373         `{?_MYSQL_PREFIX?}_user_data` AS d
374 ON
375         r.`refid`=d.`userid`
376 WHERE
377         r.`userid`=%s AND
378         r.`level`=%s
379 ORDER BY
380         r.`refid` ASC",
381                 array(bigintval($userid), bigintval($level)), __FUNCTION__, __LINE__);
382
383         // Are there some entries?
384         if (!SQL_HASZERONUMS($result)) {
385                 // Fetch all entries
386                 while ($row = SQL_FETCHARRAY($result)) {
387                         // Init click rate
388                         $row['click_rate'] = '0';
389
390                         // Does he have received some mails?
391                         if ($row['emails_received'] > 0) {
392                                 // Calculate click rate
393                                 $row['click_rate'] = ($row['mails_confirmed'] / $row['emails_received'] * 100);
394                         } // END - if
395
396                         // Add row
397                         $refs[$row['id']] = $row;
398                 } // END - while
399         } // END - if
400
401         // Free result
402         SQL_FREERESULT($result);
403
404         // Return result
405         //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . $userid . ',level=' . $level . ',refs()=' . count($refs) . ' - EXIT!');
406         return $refs;
407 }
408
409 // "Getter" for refback entry
410 function getArrayFromUserRefbackData ($id) {
411         //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'id=' . $id . ' - ENTERED!');
412         // Default data is nothing
413         $data = array();
414
415         // Secure id number
416         $id = bigintval($id);
417
418         // Get entry from database
419         $result = SQL_QUERY_ESC("SELECT `id`, `userid`, `refid`, `refback`, `level`, `points` FROM `{?_MYSQL_PREFIX?}_user_refs` WHERE `id`=%s AND `userid`=%s LIMIT 1",
420                 array($id, getMemberId()), __FUNCTION__, __LINE__);
421
422         // Is there an entry?
423         if (SQL_NUMROWS($result) == 1) {
424                 // Fetch data
425                 $data = SQL_FETCHARRAY($result);
426         } // END - if
427
428         // Free result
429         SQL_FREERESULT($result);
430
431         // Return entry
432         //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'id=' . $id . ',data()=' . count($data) . ' - EXIT!');
433         return $data;
434 }
435
436 // Update refback percents (but with some sanity-checks!
437 function updateMemberRefbackPercents ($id, $percents) {
438         //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'id=' . $id . ',percents=' . $percents . ' - ENTERED!');
439         // Default status is failed
440         $status['message'] = '{--MEMBER_REFBACK_ERROR_GENERAL--}';
441
442         // Do some sanity-checks
443         if (!isMember()) {
444                 // No member!
445                 $status['message'] = '{--MEMBER_REFBACK_ERROR_NO_MEMBER--}';
446                 return $status;
447         } elseif (''.$id.'' != ''.($id + 0).'') {
448                 // No number!
449                 $status['message'] = '{--MEMBER_REFBACK_ERROR_INVALID_ID_NUMBER--}';
450                 return $status;
451         } elseif (($percents < 0) || ($percents > 100)) {
452                 // Percentage is not valid!
453                 $status['message'] = '{--MEMBER_REFBACK_ERROR_INVALID_PERCENTAGE--}';
454                 return $status;
455         }
456
457         // Get ref entry
458         $dummy = getArrayFromUserRefbackData($id);
459
460         // Is this valid?
461         if (count($dummy) == 0) {
462                 // id does not belong to user!
463                 $status['message'] = '{--MEMBER_REFBACK_ERROR_ID_MISMATCH--}';
464                 return $status;
465         } // END - if
466
467         // Revert german commata
468         $percents = convertCommaToDot($percents);
469
470         // Update entry
471         SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_user_refs` SET `refback`='%s' WHERE `id`=%s AND `userid`=%s LIMIT 1",
472                 array($percents, $id, getMemberId()), __FUNCTION__, __LINE__);
473
474         // Entry updated?
475         if (SQL_HASZEROAFFECTED()) {
476                 // Entry not updated!
477                 $status['message'] = '{--MEMBER_REFBACK_ERROR_NOT_UPDATED--}';
478                 return $status;
479         } // END - if
480
481         // Prepare email content
482         $dummy['percents'] = $percents;
483
484         // Load member email template
485         $mail = loadEmailTemplate('member_refback', $dummy, $dummy['refid']);
486
487         // Send email to user
488         sendEmail($dummy['refid'], '{--MEMBER_REFBACK_SUBJECT--}', $mail);
489
490         // Send admin notification
491         sendAdminNotification('{--ADMIN_REFBACK_SUBJECT--}', 'admin_refback', $dummy, getMemberId());
492
493         // All fine!
494         $status['ok'] = true;
495
496         // Return status array
497         //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'id=' . $id . ',percents=' . $percents . ' - EXIT!');
498         return $status;
499 }
500
501 // Checks wether refback is enabled
502 function isRefbackEnabled () {
503         // Do we have cache?
504         if (!isset($GLOBALS[__FUNCTION__])) {
505                 // Determine it
506                 $GLOBALS[__FUNCTION__] = (getConfig('refback_enabled') == 'Y');
507         } // END - if
508
509         // Return cache
510         return $GLOBALS[__FUNCTION__];
511 }
512
513 // [EOF]
514 ?>