X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=0.2.1%2Finc%2Flibs%2Frallye_functions.php;h=e55876b3eeed4e3fb0b07b07160492c9616509ca;hp=5beddb3cadd6faf81697558918c39539330f154d;hb=7bc25dd08431c94ce9edca131d56c1a36b13c28a;hpb=157ee010917df5ca07e6d31b42f67417b2516d74 diff --git a/0.2.1/inc/libs/rallye_functions.php b/0.2.1/inc/libs/rallye_functions.php index 5beddb3cad..e55876b3ee 100644 --- a/0.2.1/inc/libs/rallye_functions.php +++ b/0.2.1/inc/libs/rallye_functions.php @@ -1,842 +1,842 @@ - 0 AND d.mails_confirmed >= %s AND p.ref_depth='1' AND p.points > 0 AND d.userid=%d", - array($CONFIG['ref_payout'], bigintval($uid)), __FILE__, __LINE__); - list($cpoints) = SQL_FETCHROW($result_ref); - SQL_FREERESULT($result_ref); - - if (empty($cpoints)) $cpoints = "0.00000"; - - // Add info line - $result_ref = SQL_QUERY_ESC("INSERT INTO "._MYSQL_PREFIX."_rallye_users (rallye_id, userid, refs, curr_points) -VALUES ('%s', '%s', '%s', '%s')", - array(bigintval($id), bigintval($uid), bigintval($cnt), $cpoints), __FILE__, __LINE__); - $un = true; - } - - // Ignored but for the template required refs (made before start of rallye) - $DATA['refs'] = $cnt; - - // Shall I notify this member? - if (($notify == "Y") && ($un)) - { - // Load email template and send it to the user - $msg = LOAD_EMAIL_TEMPLATE("member_rallye_notify", $prices, $uid); - SEND_EMAIL($uid, RALLYE_MEMBER_NOTIFY.$title, $msg); - } - } - - // Send email to admin - $templ = "admin_rallye_no_notify"; - if ($notify == "Y") $templ = "admin_rallye_notify"; - if (GET_EXT_VERSION("admins") < "0.4.1") - { - // Use old method to send out - $msg = LOAD_EMAIL_TEMPLATE($templ, $prices, 0); - SEND_ADMIN_EMAILS(RALLYE_ADMIN_NOTIFY.$title, $msg); - } - else - { - // Use new system to send out - SEND_ADMIN_EMAILS_PRO(RALLYE_ADMIN_NOTIFY.$title, $templ, $prices, "0"); - } - - // Free memory - SQL_FREERESULT($result_user); -} -// -function RALLYE_ADD_PRICES($rallye,$mode="email") -{ - // Output mode - switch($mode) - { - case "email": $mode = "\n"; break; - case "html" : $mode = "
\n"; break; - } - - // Load prices - $result_prices = SQL_QUERY("SELECT price_level, points, info FROM "._MYSQL_PREFIX."_rallye_prices WHERE rallye_id='".$rallye."' ORDER BY price_level", __FILE__, __LINE__); - if (SQL_NUMROWS($result_prices) > 0) - { - // Load prices - if ($mode == "\n") $prices = RALLYE_MEMBER_PRICES_ADDED.":".$mode."------------------------------".$mode; - $prices = ""; - while (list($level, $points, $info) = SQL_FETCHROW($result_prices)) - { - $prices .= $level.RALLYE_PRICE.": "; - if (!empty($info)) - { - $prices .= $info; - } - else - { - $prices .= $points." ".POINTS; - } - $prices .= "".$mode; - } - - // Free memory - SQL_FREERESULT($result_prices); - } - else - { - // No prices??? - $prices = RALLYE_MEMBER_NO_PRICES.$mode; - } - // Add last line for email mode - if ($mode == "\n") $prices .= "------------------------------"; - - // Return price list - return $prices; -} -// -function RALLYE_ADD_TOPUSERS($rallye,$default=0) -{ - global $CONFIG; - $since = (time() - $CONFIG['ap_in_since']); - - // First check how many prices are set - $result = SQL_QUERY_ESC("SELECT id FROM "._MYSQL_PREFIX."_rallye_prices WHERE rallye_id=%d ORDER BY price_level", - array(bigintval($rallye)), __FILE__, __LINE__); - $prices = SQL_NUMROWS($result); - SQL_FREERESULT($result); - - // And load only limited users - $result = SQL_QUERY_ESC("SELECT DISTINCT u.userid, u.refs, u.curr_points FROM "._MYSQL_PREFIX."_rallye_users AS u -LEFT JOIN "._MYSQL_PREFIX."_refsystem AS r -ON u.userid=r.userid -WHERE u.rallye_id=%d AND r.counter > 0 ORDER BY u.refs DESC", - array(bigintval($rallye)), __FILE__, __LINE__); - - // Load users - $DATA = array( - 'uid' => array(), - 'ref' => array(), - 'cpoints' => array() - ); - - while(list($uid, $refs, $cpoints) = SQL_FETCHROW($result)) - { - // Get current refs - $cnt = RALLYE_GET_REFCOUNT($uid, $refs); - - // Points of ref's - $result_ref = SQL_QUERY_ESC("SELECT DISTINCT p.points FROM "._MYSQL_PREFIX."_user_points AS p -LEFT JOIN "._MYSQL_PREFIX."_user_data AS d -ON p.userid=d.userid -WHERE d.userid=%d AND d.status='CONFIRMED' AND p.ref_depth='1' AND d.max_mails > 0 AND d.mails_confirmed >= %s AND d.last_online >= %s -LIMIT 1", array(bigintval($uid), $CONFIG['ref_payout'], $since), __FILE__, __LINE__); - list($refpoints) = SQL_FETCHROW($result_ref); - SQL_FREERESULT($result_ref); - - if (empty($refpoints)) $refpoints = "0"; - - // And subtract start refs - $cnt -= $refs; - - $_uid = "---"; - // List only users with at least one ref! - if (($cnt > 0) && ($refpoints > $cpoints)) { $_uid = $uid; } else { $cnt = ""; } - - // Save values to array - $DATA['uid'][] = $_uid; - $DATA['ref'][] = $cnt; - $DATA['cpoints'][] = $cpoints; - } - - // Free memory - SQL_FREERESULT($result); - - // Sort whole array - array_pk_sort($DATA, array("ref", "cpoints"), 0, 1, true); - - // Generate table - $OUT = LOAD_TEMPLATE("guest_rallye_header", true); - $SW = 2; - for ($idx = 0; $idx < $prices; $idx++) - { - if (empty($DATA['uid'][$idx])) $DATA['uid'][$idx] = "---"; - if (empty($DATA['ref'][$idx])) $DATA['ref'][$idx] = "---"; - // Add row - $OUT .= " -   ".($idx+1).". - "; - if (($DATA['uid'][$idx] == $default) && ($default > 0)) $OUT .= ""; - $OUT .= $DATA['uid'][$idx]; - if (($DATA['uid'][$idx] == $default) && ($default > 0)) $OUT .= ""; - $OUT .= " - "; - if (($DATA['uid'][$idx] == $default) && ($default > 0)) $OUT .= ""; - $OUT .= $DATA['ref'][$idx]; - if (($DATA['uid'][$idx] == $default) && ($default > 0)) $OUT .= ""; - $OUT .= " -\n"; - $SW = 3 - $SW; - } - // Add footer - $OUT .= LOAD_TEMPLATE("guest_rallye_footer", true); - - // And finnally return the output - return $OUT; -} -// Run this function only when a new member has confirmed his email address! -function RALLYE_AUTOADD_USER($uid) -{ - global $DATA; - // Check for an auto-add rallye - $result = SQL_QUERY("SELECT id, title, start_time, end_time, send_notify FROM "._MYSQL_PREFIX."_rallye_data WHERE is_active='Y' AND notified='Y' AND auto_add_new_user='Y' AND expired='N' LIMIT 1", __FILE__, __LINE__); - if (SQL_NUMROWS($result) == 1) - { - // Load data - list($id, $title, $start, $end, $notify) = SQL_FETCHROW($result); - SQL_FREERESULT($result); - - // Check if line is already included... - $result = SQL_QUERY_ESC("SELECT id FROM "._MYSQL_PREFIX."_rallye_users WHERE rallye_id=%d AND userid=%d LIMIT 1", - array(bigintval($id), bigintval($uid)), __FILE__, __LINE__); - if (SQL_NUMROWS($result) == 0) - { - // Add userid and his ref count to table - $result = SQL_QUERY_ESC("INSERT INTO "._MYSQL_PREFIX."_rallye_users (rallye_id, userid, refs) -VALUES ('%s', '%s', '0')", - array(bigintval($id), bigintval($uid)), __FILE__, __LINE__); - } - else - { - // Free memory - SQL_FREERESULT($result); - } - - if ($notify == "Y") - { - // Transfer all neccessary data to the global $DATA array - $DATA['start'] = MAKE_DATETIME($start, "2"); - $DATA['end'] = MAKE_DATETIME($end , "2"); - $DATA['now_t'] = MAKE_DATETIME(time(), "2"); - $DATA['title'] = $title; - $DATA['id'] = $id; // ID for the rallye details link - $DATA['ref'] = "0"; - - // Load prices - $prices = RALLYE_ADD_PRICES($id); - - // Send notification to member - $msg = LOAD_EMAIL_TEMPLATE("member_rallye_notify", $prices, $uid); - SEND_EMAIL($uid, RALLYE_MEMBER_NOTIFY.$title, $msg); - } - } -} -// -function RALLYE_EXPIRE_RALLYES($result) -{ - global $DATA, $CONFIG; - - // Latest online time - $since = (time() - $CONFIG['ap_in_since']); - - // Load rallye data - list($id, $title, $start, $end, $notify, $min_users, $min_prices) = SQL_FETCHROW($result); - SQL_FREERESULT($result); - - // Load users array (!) with assigned prices - $prices = RALLYE_LOAD_USERS_ARRAY($id); - - // Init array - $DATA = array(); $cnt = 0; - $users = array(); - $DATA['title'] = $title; - $DATA['start'] = MAKE_DATETIME($start, "1"); - $DATA['end'] = MAKE_DATETIME($end , "1"); - $DATA['now_t'] = MAKE_DATETIME(time(), "1"); - - // Just count... - $TOTAL = 0; - foreach($prices['uid'] as $key=>$uid) - { - // Check status - // active = 1: account is still confirmed - // active = 0: account is deleted or locked - $result = SQL_QUERY_ESC("SELECT COUNT(userid) AS active -FROM "._MYSQL_PREFIX."_user_data -WHERE userid=%d AND status='CONFIRMED' AND last_online >= %s -LIMIT 1", array(bigintval($uid), $since), __FILE__, __LINE__); - list($active) = SQL_FETCHROW($result); - SQL_FREERESULT($result); - - $prices['active'][$key] = $active; - - // Allow valid and active users with at least one ref to get points - if (($uid > 0) && ($prices['ref'][$key] > 0) && ($active == 1) && ($prices['cpoints'][$key] > 0)) - { - $TOTAL++; - } - } - - if (($TOTAL < $min_prices) || ($TOTAL == 0)) - { - // Do not end this rallye! - return; - } - - // Expire rallye - $result = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_rallye_data SET expired='Y' WHERE id=%d LIMIT 1", - array(bigintval($id)), __FILE__, __LINE__); - - // Run array through (by uid is the most important 2nd-level-array) - foreach($prices['uid'] as $key=>$uid) - { - // Allow valid and active users with at least one ref to get points - if (($uid > 0) && ($prices['ref'][$key] > 0) && ($prices['active'][$key] == 1) && ($prices['cpoints'][$key] > 0)) - { - // Transfer data to array for the mail template - $DATA['level'] = $prices['level'][$key]; - $DATA['points'] = $prices['points'][$key]; - $DATA['info'] = $prices['info'][$key]; - $DATA['ref'] = $prices['ref'][$key]; - - if ($DATA['points'] > 0) - { - // Add points directly to user's account - $result = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_user_points SET points=points+%s WHERE userid=%d AND ref_depth='0' LIMIT 1", - array($DATA['points'], bigintval($uid)), __FILE__, __LINE__); - - // Update mediadata as well - if (GET_EXT_VERSION("mediadata") >= "0.0.4") - { - // Update database - MEDIA_UPDATE_ENTRY(array("total_points"), "add", $DATA['points']); - } - } - - if ($notify == "Y") - { - // Prepare infos for the mail template - if (!empty($DATA['info'])) - { - // Take direct infos - $DATA['infos'] = $DATA['info']; - } - else - { - // Take points - $DATA['infos'] = $DATA['points']." ".POINTS; - } - - // Add suffix to template name - $template = "member_rallye_expired"; - if ($DATA['level'] == 1) - { - // The winner! - $template .= "_gold"; - } - elseif ($DATA['level'] == 2) - { - // The vice winner! - $template .= "_silver"; - } - elseif ($DATA['level'] == 3) - { - // The bronce winner - $template .= "_bronce"; - } - - // Load template - $msg = LOAD_EMAIL_TEMPLATE($template, $DATA, $uid); - SEND_EMAIL($uid, RALLYE_MEMBER_EXPIRED.": ".$DATA['level']." "._RALLYE_PRICE, $msg); - } - - // Count userid - $cnt++; - $users['uid'][$uid] = $uid; - $users['poi'][$uid] = $DATA['infos']; - } - } - - // Select template depending on notfication is switch on / off - if ($notify == "Y") - { - $templ = "admin_rallye_expired"; - } - elseif (is_array($users['uid'])) - { - $templ = "admin_rallye_expired_no"; - $cnt = RALLYE_LOAD_USER_DATA($users); - } - - // Send mail to admin - if (GET_EXT_VERSION("admins") < "0.4.1") - { - // Use old method to send out - $msg = LOAD_EMAIL_TEMPLATE($templ, $cnt, 0); - SEND_ADMIN_EMAILS(RALLYE_ADMIN_EXPIRED.": ".$title, $msg); - } - else - { - // Use new system to send out - SEND_ADMIN_EMAILS_PRO(RALLYE_ADMIN_EXPIRED.": ".$title, $templ, $cnt, 0); - } - - // Add task - $result = SQL_QUERY_ESC("INSERT INTO "._MYSQL_PREFIX."_task_system (status, task_type, subject, text, task_created) -VALUES ('NEW', 'RALLYE_EXPIRED', '".RALLYE_ADMIN_EXPIRED.": %s', '".RALLYE_ADMIN_EXPIRED_TEXT."', UNIX_TIMESTAMP())", - array($title), __FILE__, __LINE__); - - // All work done here... -} -// -function RALLYE_LOAD_USER_DATA($uids_array) -{ - // Implode user ids - $uid_string = implode(",", $uids_array['uid']); - - // Load users - $result = SQL_QUERY_ESC("SELECT userid, sex, surname, family, email FROM "._MYSQL_PREFIX."_user_data WHERE userid IN(%s) AND status='CONFIRMED' ORDER BY userid LIMIT %s", - array($uid_string, count($uids_array)), __FILE__, __LINE__); - $ret = ""; - while (list($u, $sex, $surname, $family, $email) = SQL_FETCHROW($result)) - { - $ret .= TRANSLATE_SEX($sex)." ".$surname." ".$family." (".$email.") - ".$uids_array['poi'][$u]."\n"; - } - - // Return result - return substr($ret, 0, -1); -} -// -function RALLYE_LOAD_PRICES_ARRAY($rallye) -{ - // Init multi array - $prices = array( - 'level' => array(), - 'points' => array(), - 'info' => array() - ); - - // Load prices - $result = SQL_QUERY_ESC("SELECT price_level, points, info FROM "._MYSQL_PREFIX."_rallye_prices WHERE rallye_id=%d ORDER BY price_level", - array(bigintval($rallye)), __FILE__, __LINE__); - while(list($level, $points, $info) = SQL_FETCHROW($result)) - { - $prices['level'][] = $level; - $prices['points'][] = $points; - $prices['info'][] = $info; - } - - // Free memory - SQL_FREERESULT($result); - - // Return array - return $prices; -} -// -function RALLYE_LOAD_USERS_ARRAY($rallye) -{ - global $CONFIG; - - // Fix zero points to 0.00000 - if ($CONFIG['ref_payout'] == "0") $CONFIG['ref_payout'] = "0.00000"; - - // Init multi array - $users = array( - 'uid' => array(), - 'ref' => array(), - 'cpoints' => array(), - ); - - // Load users uid old points earned - $result_user = SQL_QUERY_ESC("SELECT userid, refs, curr_points FROM "._MYSQL_PREFIX."_rallye_users WHERE rallye_id=%d ORDER BY userid", - array(bigintval($rallye)), __FILE__, __LINE__); - while(list($uid, $refs, $cpoints) = SQL_FETCHROW($result_user)) - { - // Load current ref count - $cnt = RALLYE_GET_REFCOUNT($uid, $refs); - - // Points of ref's - $result_ref = SQL_QUERY_ESC("SELECT DISTINCT SUM(p.points) -FROM "._MYSQL_PREFIX."_user_points AS p -LEFT JOIN "._MYSQL_PREFIX."_user_data AS d -ON p.userid=d.userid -WHERE d.status='CONFIRMED' AND d.max_mails > 0 AND d.mails_confirmed >= %s AND p.ref_depth='1' AND p.points > 0 AND d.userid=%d", - array($CONFIG['ref_payout'], bigintval($uid)), __FILE__, __LINE__); - list($refpoints) = SQL_FETCHROW($result_ref); - SQL_FREERESULT($result_ref); - - if (empty($refpoints)) $refpoints = "0"; - - // Store calculated new refs to array - $users['uid'][] = $uid; - $users['ref'][] = abs($cnt - $refs); - $users['cpoints'][] = $refpoints - $cpoints; - } - - // Free memory - SQL_FREERESULT($result_user); - - // Sort array for refs (descending) - array_pk_sort($users, array("ref", "cpoints"), 0, 1, true); - - // Load prices array (!) - $prices = RALLYE_LOAD_PRICES_ARRAY($rallye); - - // Merge users into prices - foreach ($prices['level'] as $k=>$lvl) - { - $prices['uid'][$k] = $users['uid'][$k]; - if (empty($prices['uid'][$k])) $prices['uid'][$k] = "---"; - $prices['ref'][$k] = $users['ref'][$k]; - if (empty($prices['ref'][$k])) $prices['ref'][$k] = "---"; - $prices['cpoints'][$k] = $users['cpoints'][$k]; - } - - // Return completed array - return $prices; -} -// -function RALLYE_LIST_WINNERS($rallye,$default=0) -{ - // First check how many prices are set - $result_prices = SQL_QUERY_ESC("SELECT id FROM "._MYSQL_PREFIX."_rallye_prices WHERE rallye_id=%d ORDER BY price_level", - array(bigintval($rallye)), __FILE__, __LINE__); - $prices = SQL_NUMROWS($result_prices); - SQL_FREERESULT($result_prices); - - // Load data - $DATA = RALLYE_LOAD_USERS_ARRAY($rallye); - - // Generate table - $OUT = LOAD_TEMPLATE("guest_rallye_expired_header", true); - $SW = 2; - for ($idx = 0; $idx < $prices; $idx++) - { - // Check status - // active = 1: account is still confirmed - // active = 0: account is deleted or locked - $result_active = SQL_QUERY_ESC("SELECT COUNT(userid) FROM "._MYSQL_PREFIX."_user_data WHERE userid=%d AND status='CONFIRMED' LIMIT 1", - array(bigintval($DATA['uid'][$idx])), __FILE__, __LINE__); - list($active) = SQL_FETCHROW($result_active); - SQL_FREERESULT($result_active); - - if (empty($DATA['uid'][$idx])) $DATA['uid'][$idx] = "---"; - if ((empty($DATA['ref'][$idx])) || ($DATA['ref'][$idx] == 0) || ($active == 0) || ("".round($DATA['cpoints'][$idx])."" == "0") || (empty($DATA['cpoints'][$idx]))) - { - // Allow valid and active users with at least one ref to get points - $DATA['ref'][$idx] = "---"; - $DATA['uid'][$idx] = "---"; - } - if (!empty($DATA['info'][$idx])) - { - // Take direct infos - $DATA['infos'][$idx] = $DATA['info'][$idx]; - } - else - { - // Take ppints - $DATA['infos'][$idx] = $DATA['points'][$idx]." ".POINTS; - } - - // Add row - $ADD = ""; - $OUT .= " -   ".($idx+1).". - "; - if (($DATA['uid'][$idx] == $default) && ($default > 0)) $OUT .= ""; - $OUT .= $DATA['uid'][$idx]; - if (($DATA['uid'][$idx] == $default) && ($default > 0)) $OUT .= ""; - $OUT .= " - "; - if (($DATA['uid'][$idx] == $default) && ($default > 0)) $OUT .= ""; - $OUT .= $DATA['ref'][$idx]; - if (($DATA['uid'][$idx] == $default) && ($default > 0)) $OUT .= ""; - $OUT .= " - "; - if (($DATA['uid'][$idx] == $default) && ($default > 0)) $OUT .= ""; - $OUT .= $DATA['infos'][$idx]; - if (($DATA['uid'][$idx] == $default) && ($default > 0)) $OUT .= ""; - $OUT .= " -\n"; - $SW = 3 - $SW; - } - // Add footer - $OUT .= LOAD_TEMPLATE("guest_rallye_expired_footer", true); - - // And finnally return the output - return $OUT; -} -// -function RALLYE_DELETE_EXPIRED_RALLYES() -{ - global $DATA, $CONFIG; - // Check for expired rallyes - $EXPIRE = time() - ONE_DAY * 3; // The hard-coded value... - $result_rallye = SQL_QUERY_ESC("SELECT id, title, start_time, end_time FROM "._MYSQL_PREFIX."_rallye_data WHERE end_time <= %s AND expired='Y'", - array($EXPIRE), __FILE__, __LINE__); - - if (SQL_NUMROWS($result_rallye) > 0) - { - // Expire found rallyes and notify admin - while(list($id, $title, $start, $end) = SQL_FETCHROW($result_rallye)) - { - // Prepare data for mail template - $DATA['title'] = $title; - $DATA['start'] = MAKE_DATETIME($start, "1"); - $DATA['end'] = MAKE_DATETIME($end , "1"); - $DATA['now_t'] = MAKE_DATETIME(time(), "1"); - - // Send mail to admin - if (GET_EXT_VERSION("admins") < "0.4.1") - { - // Use old method to send out - $msg = LOAD_EMAIL_TEMPLATE("admin_rallye_purged", "", 0); - SEND_ADMIN_EMAILS(RALLYE_ADMIN_PURGED.": ".$title, $msg); - } - else - { - // Use new system to send out - SEND_ADMIN_EMAILS_PRO(RALLYE_ADMIN_PURGED.": ".$title, "admin_rallye_purged", "", 0); - } - - // Purge whole rallye - $result_purge = SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_rallye_data WHERE id=%d LIMIT 1", - array(bigintval($id)), __FILE__, __LINE__); - $result_purge = SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_rallye_prices WHERE rallye_id=%d LIMIT 1", - array(bigintval($id)), __FILE__, __LINE__); - $result_purge = SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_rallye_users WHERE rallye_id=%d LIMIT 1", - array(bigintval($id)), __FILE__, __LINE__); - } - - // Add task - $result_task = SQL_QUERY_ESC("INSERT INTO "._MYSQL_PREFIX."_task_system (status, task_type, subject, text, task_created) -VALUES ('NEW', 'RALLYE_PURGED', '".RALLYE_ADMIN_PURGED.": %s', '".RALLYE_ADMIN_PURGED_TEXT."', UNIX_TIMESTAMP())", - array($title), __FILE__, __LINE__); - } - - // Free memory - SQL_FREERESULT($result_rallye); -} -// -function RALLYE_TEMPLATE_SELECTION($name="template", $default="") -{ - // Check templates directory - $OUT = ""; $ral = array(); - $BASE = PATH."templates/".GET_LANGUAGE()."/html"; - $dir = opendir($BASE); - while ($read = readdir($dir)) - { - // If it is no dir (so a file) - if (!is_dir($BASE.$read)) - { - // Accept only templates matching with rallye_????.tpl.xx - if (eregi("^rallye_.*\.tpl", $read)) - { - $read = substr($read, 7, strpos($read, ".") - 7); - // Accept only template names between 1 and 255 chars length - if ((strlen($read) < 256) && (!empty($read))) $ral[] = $read; - } - } - } - closedir($dir); - - // Do we have found templates which we can link with the new rallye? - if (!empty($ral[0])) - { - // Generate selection box for all found templates - $OUT = "\n"; - } - else - { - // No rallye templates found - $OUT = RALLYE_NO_TEMPLATES_FOUND; - } - - // Return selection - return $OUT; -} -// -function RALLYE_GET_REFCOUNT($uid, $old=0) -{ - global $REF_SYSTEM, $REF_DEPTHS, $CONFIG; - // Check current refs - if (GET_EXT_VERSION("cache") >= "0.1.2") - { - // Get refs from cache - $cnt = 0; - foreach ($REF_SYSTEM['userid'] as $id=>$u_id) - { - if (($u_id == $uid) && ($REF_SYSTEM['level'][$id] == 0)) - { - foreach ($REF_DEPTHS['level'] as $level) - { - if (($level == $REF_SYSTEM['level'][$id]) && ($level == 0)) - { - // Level does exist so abort here - $cnt = $REF_SYSTEM['counter'][$id]; - //* DEBUG: */ echo "*".$uid."/".$cnt."*
"; - break; - } - elseif ($level > 0) - { - // Not interesting here... - break; - } - } - // Abort also here! - if ($cnt > 0) break; - } - } - //* DEBUG: */ echo "
";
-		//* DEBUG: */ print_r($REF_SYSTEM);
-		//* DEBUG: */ echo "
"; - //* DEBUG: */ die(); - - if ($cnt > 0) - { - // Count cache hits - $CONFIG['cache_hits']++; - - // Remove old refs - //* DEBUG: */ echo "+".$cnt."/".$old."+
"; - $cnt -= $old; - } - } - else - { - // Load current refs from database - $result_ref = SQL_QUERY_ESC("SELECT DISTINCT SUM(s.counter) AS cnt -FROM "._MYSQL_PREFIX."_refsystem AS s -LEFT JOIN "._MYSQL_PREFIX."_refdepths AS d -ON s.level=d.level -WHERE s.userid=%d AND s.level=0", array(bigintval($uid)), __FILE__, __LINE__); - list($cnt) = SQL_FETCHROW($result_ref); - SQL_FREERESULT($result_ref); - if (empty($cnt)) - { - $cnt = "0"; - } - else - { - $cnt -= $old; - } - } - - // Return count - //* DEBUG: */ echo "*".$uid."/".$old."/".$cnt."*
"; - return $cnt; -} -// -?> + 0 AND d.mails_confirmed >= %s AND p.ref_depth='1' AND p.points > 0 AND d.userid=%d", + array($CONFIG['ref_payout'], bigintval($uid)), __FILE__, __LINE__); + list($cpoints) = SQL_FETCHROW($result_ref); + SQL_FREERESULT($result_ref); + + if (empty($cpoints)) $cpoints = "0.00000"; + + // Add info line + $result_ref = SQL_QUERY_ESC("INSERT INTO "._MYSQL_PREFIX."_rallye_users (rallye_id, userid, refs, curr_points) +VALUES ('%s', '%s', '%s', '%s')", + array(bigintval($id), bigintval($uid), bigintval($cnt), $cpoints), __FILE__, __LINE__); + $un = true; + } + + // Ignored but for the template required refs (made before start of rallye) + $DATA['refs'] = $cnt; + + // Shall I notify this member? + if (($notify == "Y") && ($un)) + { + // Load email template and send it to the user + $msg = LOAD_EMAIL_TEMPLATE("member_rallye_notify", $prices, $uid); + SEND_EMAIL($uid, RALLYE_MEMBER_NOTIFY.$title, $msg); + } + } + + // Send email to admin + $templ = "admin_rallye_no_notify"; + if ($notify == "Y") $templ = "admin_rallye_notify"; + if (GET_EXT_VERSION("admins") < "0.4.1") + { + // Use old method to send out + $msg = LOAD_EMAIL_TEMPLATE($templ, $prices, 0); + SEND_ADMIN_EMAILS(RALLYE_ADMIN_NOTIFY.$title, $msg); + } + else + { + // Use new system to send out + SEND_ADMIN_EMAILS_PRO(RALLYE_ADMIN_NOTIFY.$title, $templ, $prices, "0"); + } + + // Free memory + SQL_FREERESULT($result_user); +} +// +function RALLYE_ADD_PRICES($rallye,$mode="email") +{ + // Output mode + switch($mode) + { + case "email": $mode = "\n"; break; + case "html" : $mode = "
\n"; break; + } + + // Load prices + $result_prices = SQL_QUERY("SELECT price_level, points, info FROM "._MYSQL_PREFIX."_rallye_prices WHERE rallye_id='".$rallye."' ORDER BY price_level", __FILE__, __LINE__); + if (SQL_NUMROWS($result_prices) > 0) + { + // Load prices + if ($mode == "\n") $prices = RALLYE_MEMBER_PRICES_ADDED.":".$mode."------------------------------".$mode; + $prices = ""; + while (list($level, $points, $info) = SQL_FETCHROW($result_prices)) + { + $prices .= $level.RALLYE_PRICE.": "; + if (!empty($info)) + { + $prices .= $info; + } + else + { + $prices .= $points." ".POINTS; + } + $prices .= "".$mode; + } + + // Free memory + SQL_FREERESULT($result_prices); + } + else + { + // No prices??? + $prices = RALLYE_MEMBER_NO_PRICES.$mode; + } + // Add last line for email mode + if ($mode == "\n") $prices .= "------------------------------"; + + // Return price list + return $prices; +} +// +function RALLYE_ADD_TOPUSERS($rallye,$default=0) +{ + global $CONFIG; + $since = (time() - $CONFIG['ap_in_since']); + + // First check how many prices are set + $result = SQL_QUERY_ESC("SELECT id FROM "._MYSQL_PREFIX."_rallye_prices WHERE rallye_id=%d ORDER BY price_level", + array(bigintval($rallye)), __FILE__, __LINE__); + $prices = SQL_NUMROWS($result); + SQL_FREERESULT($result); + + // And load only limited users + $result = SQL_QUERY_ESC("SELECT DISTINCT u.userid, u.refs, u.curr_points FROM "._MYSQL_PREFIX."_rallye_users AS u +LEFT JOIN "._MYSQL_PREFIX."_refsystem AS r +ON u.userid=r.userid +WHERE u.rallye_id=%d AND r.counter > 0 ORDER BY u.refs DESC", + array(bigintval($rallye)), __FILE__, __LINE__); + + // Load users + $DATA = array( + 'uid' => array(), + 'ref' => array(), + 'cpoints' => array() + ); + + while(list($uid, $refs, $cpoints) = SQL_FETCHROW($result)) + { + // Get current refs + $cnt = RALLYE_GET_REFCOUNT($uid, $refs); + + // Points of ref's + $result_ref = SQL_QUERY_ESC("SELECT DISTINCT p.points FROM "._MYSQL_PREFIX."_user_points AS p +LEFT JOIN "._MYSQL_PREFIX."_user_data AS d +ON p.userid=d.userid +WHERE d.userid=%d AND d.status='CONFIRMED' AND p.ref_depth='1' AND d.max_mails > 0 AND d.mails_confirmed >= %s AND d.last_online >= %s +LIMIT 1", array(bigintval($uid), $CONFIG['ref_payout'], $since), __FILE__, __LINE__); + list($refpoints) = SQL_FETCHROW($result_ref); + SQL_FREERESULT($result_ref); + + if (empty($refpoints)) $refpoints = "0"; + + // And subtract start refs + $cnt -= $refs; + + $_uid = "---"; + // List only users with at least one ref! + if (($cnt > 0) && ($refpoints > $cpoints)) { $_uid = $uid; } else { $cnt = ""; } + + // Save values to array + $DATA['uid'][] = $_uid; + $DATA['ref'][] = $cnt; + $DATA['cpoints'][] = $cpoints; + } + + // Free memory + SQL_FREERESULT($result); + + // Sort whole array + array_pk_sort($DATA, array("ref", "cpoints"), 0, 1, true); + + // Generate table + $OUT = LOAD_TEMPLATE("guest_rallye_header", true); + $SW = 2; + for ($idx = 0; $idx < $prices; $idx++) + { + if (empty($DATA['uid'][$idx])) $DATA['uid'][$idx] = "---"; + if (empty($DATA['ref'][$idx])) $DATA['ref'][$idx] = "---"; + // Add row + $OUT .= " +   ".($idx+1).". + "; + if (($DATA['uid'][$idx] == $default) && ($default > 0)) $OUT .= ""; + $OUT .= $DATA['uid'][$idx]; + if (($DATA['uid'][$idx] == $default) && ($default > 0)) $OUT .= ""; + $OUT .= " + "; + if (($DATA['uid'][$idx] == $default) && ($default > 0)) $OUT .= ""; + $OUT .= $DATA['ref'][$idx]; + if (($DATA['uid'][$idx] == $default) && ($default > 0)) $OUT .= ""; + $OUT .= " +\n"; + $SW = 3 - $SW; + } + // Add footer + $OUT .= LOAD_TEMPLATE("guest_rallye_footer", true); + + // And finnally return the output + return $OUT; +} +// Run this function only when a new member has confirmed his email address! +function RALLYE_AUTOADD_USER($uid) +{ + global $DATA; + // Check for an auto-add rallye + $result = SQL_QUERY("SELECT id, title, start_time, end_time, send_notify FROM "._MYSQL_PREFIX."_rallye_data WHERE is_active='Y' AND notified='Y' AND auto_add_new_user='Y' AND expired='N' LIMIT 1", __FILE__, __LINE__); + if (SQL_NUMROWS($result) == 1) + { + // Load data + list($id, $title, $start, $end, $notify) = SQL_FETCHROW($result); + SQL_FREERESULT($result); + + // Check if line is already included... + $result = SQL_QUERY_ESC("SELECT id FROM "._MYSQL_PREFIX."_rallye_users WHERE rallye_id=%d AND userid=%d LIMIT 1", + array(bigintval($id), bigintval($uid)), __FILE__, __LINE__); + if (SQL_NUMROWS($result) == 0) + { + // Add userid and his ref count to table + $result = SQL_QUERY_ESC("INSERT INTO "._MYSQL_PREFIX."_rallye_users (rallye_id, userid, refs) +VALUES ('%s', '%s', '0')", + array(bigintval($id), bigintval($uid)), __FILE__, __LINE__); + } + else + { + // Free memory + SQL_FREERESULT($result); + } + + if ($notify == "Y") + { + // Transfer all neccessary data to the global $DATA array + $DATA['start'] = MAKE_DATETIME($start, "2"); + $DATA['end'] = MAKE_DATETIME($end , "2"); + $DATA['now_t'] = MAKE_DATETIME(time(), "2"); + $DATA['title'] = $title; + $DATA['id'] = $id; // ID for the rallye details link + $DATA['ref'] = "0"; + + // Load prices + $prices = RALLYE_ADD_PRICES($id); + + // Send notification to member + $msg = LOAD_EMAIL_TEMPLATE("member_rallye_notify", $prices, $uid); + SEND_EMAIL($uid, RALLYE_MEMBER_NOTIFY.$title, $msg); + } + } +} +// +function RALLYE_EXPIRE_RALLYES($result) +{ + global $DATA, $CONFIG; + + // Latest online time + $since = (time() - $CONFIG['ap_in_since']); + + // Load rallye data + list($id, $title, $start, $end, $notify, $min_users, $min_prices) = SQL_FETCHROW($result); + SQL_FREERESULT($result); + + // Load users array (!) with assigned prices + $prices = RALLYE_LOAD_USERS_ARRAY($id); + + // Init array + $DATA = array(); $cnt = 0; + $users = array(); + $DATA['title'] = $title; + $DATA['start'] = MAKE_DATETIME($start, "1"); + $DATA['end'] = MAKE_DATETIME($end , "1"); + $DATA['now_t'] = MAKE_DATETIME(time(), "1"); + + // Just count... + $TOTAL = 0; + foreach($prices['uid'] as $key=>$uid) + { + // Check status + // active = 1: account is still confirmed + // active = 0: account is deleted or locked + $result = SQL_QUERY_ESC("SELECT COUNT(userid) AS active +FROM "._MYSQL_PREFIX."_user_data +WHERE userid=%d AND status='CONFIRMED' AND last_online >= %s +LIMIT 1", array(bigintval($uid), $since), __FILE__, __LINE__); + list($active) = SQL_FETCHROW($result); + SQL_FREERESULT($result); + + $prices['active'][$key] = $active; + + // Allow valid and active users with at least one ref to get points + if (($uid > 0) && ($prices['ref'][$key] > 0) && ($active == 1) && ($prices['cpoints'][$key] > 0)) + { + $TOTAL++; + } + } + + if (($TOTAL < $min_prices) || ($TOTAL == 0)) + { + // Do not end this rallye! + return; + } + + // Expire rallye + $result = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_rallye_data SET expired='Y' WHERE id=%d LIMIT 1", + array(bigintval($id)), __FILE__, __LINE__); + + // Run array through (by uid is the most important 2nd-level-array) + foreach($prices['uid'] as $key=>$uid) + { + // Allow valid and active users with at least one ref to get points + if (($uid > 0) && ($prices['ref'][$key] > 0) && ($prices['active'][$key] == 1) && ($prices['cpoints'][$key] > 0)) + { + // Transfer data to array for the mail template + $DATA['level'] = $prices['level'][$key]; + $DATA['points'] = $prices['points'][$key]; + $DATA['info'] = $prices['info'][$key]; + $DATA['ref'] = $prices['ref'][$key]; + + if ($DATA['points'] > 0) + { + // Add points directly to user's account + $result = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_user_points SET points=points+%s WHERE userid=%d AND ref_depth='0' LIMIT 1", + array($DATA['points'], bigintval($uid)), __FILE__, __LINE__); + + // Update mediadata as well + if (GET_EXT_VERSION("mediadata") >= "0.0.4") + { + // Update database + MEDIA_UPDATE_ENTRY(array("total_points"), "add", $DATA['points']); + } + } + + if ($notify == "Y") + { + // Prepare infos for the mail template + if (!empty($DATA['info'])) + { + // Take direct infos + $DATA['infos'] = $DATA['info']; + } + else + { + // Take points + $DATA['infos'] = $DATA['points']." ".POINTS; + } + + // Add suffix to template name + $template = "member_rallye_expired"; + if ($DATA['level'] == 1) + { + // The winner! + $template .= "_gold"; + } + elseif ($DATA['level'] == 2) + { + // The vice winner! + $template .= "_silver"; + } + elseif ($DATA['level'] == 3) + { + // The bronce winner + $template .= "_bronce"; + } + + // Load template + $msg = LOAD_EMAIL_TEMPLATE($template, $DATA, $uid); + SEND_EMAIL($uid, RALLYE_MEMBER_EXPIRED.": ".$DATA['level']." "._RALLYE_PRICE, $msg); + } + + // Count userid + $cnt++; + $users['uid'][$uid] = $uid; + $users['poi'][$uid] = $DATA['infos']; + } + } + + // Select template depending on notfication is switch on / off + if ($notify == "Y") + { + $templ = "admin_rallye_expired"; + } + elseif (is_array($users['uid'])) + { + $templ = "admin_rallye_expired_no"; + $cnt = RALLYE_LOAD_USER_DATA($users); + } + + // Send mail to admin + if (GET_EXT_VERSION("admins") < "0.4.1") + { + // Use old method to send out + $msg = LOAD_EMAIL_TEMPLATE($templ, $cnt, 0); + SEND_ADMIN_EMAILS(RALLYE_ADMIN_EXPIRED.": ".$title, $msg); + } + else + { + // Use new system to send out + SEND_ADMIN_EMAILS_PRO(RALLYE_ADMIN_EXPIRED.": ".$title, $templ, $cnt, 0); + } + + // Add task + $result = SQL_QUERY_ESC("INSERT INTO "._MYSQL_PREFIX."_task_system (status, task_type, subject, text, task_created) +VALUES ('NEW', 'RALLYE_EXPIRED', '".RALLYE_ADMIN_EXPIRED.": %s', '".RALLYE_ADMIN_EXPIRED_TEXT."', UNIX_TIMESTAMP())", + array($title), __FILE__, __LINE__); + + // All work done here... +} +// +function RALLYE_LOAD_USER_DATA($uids_array) +{ + // Implode user ids + $uid_string = implode(",", $uids_array['uid']); + + // Load users + $result = SQL_QUERY_ESC("SELECT userid, sex, surname, family, email FROM "._MYSQL_PREFIX."_user_data WHERE userid IN(%s) AND status='CONFIRMED' ORDER BY userid LIMIT %s", + array($uid_string, count($uids_array)), __FILE__, __LINE__); + $ret = ""; + while (list($u, $sex, $surname, $family, $email) = SQL_FETCHROW($result)) + { + $ret .= TRANSLATE_SEX($sex)." ".$surname." ".$family." (".$email.") - ".$uids_array['poi'][$u]."\n"; + } + + // Return result + return substr($ret, 0, -1); +} +// +function RALLYE_LOAD_PRICES_ARRAY($rallye) +{ + // Init multi array + $prices = array( + 'level' => array(), + 'points' => array(), + 'info' => array() + ); + + // Load prices + $result = SQL_QUERY_ESC("SELECT price_level, points, info FROM "._MYSQL_PREFIX."_rallye_prices WHERE rallye_id=%d ORDER BY price_level", + array(bigintval($rallye)), __FILE__, __LINE__); + while(list($level, $points, $info) = SQL_FETCHROW($result)) + { + $prices['level'][] = $level; + $prices['points'][] = $points; + $prices['info'][] = $info; + } + + // Free memory + SQL_FREERESULT($result); + + // Return array + return $prices; +} +// +function RALLYE_LOAD_USERS_ARRAY($rallye) +{ + global $CONFIG; + + // Fix zero points to 0.00000 + if ($CONFIG['ref_payout'] == "0") $CONFIG['ref_payout'] = "0.00000"; + + // Init multi array + $users = array( + 'uid' => array(), + 'ref' => array(), + 'cpoints' => array(), + ); + + // Load users uid old points earned + $result_user = SQL_QUERY_ESC("SELECT userid, refs, curr_points FROM "._MYSQL_PREFIX."_rallye_users WHERE rallye_id=%d ORDER BY userid", + array(bigintval($rallye)), __FILE__, __LINE__); + while(list($uid, $refs, $cpoints) = SQL_FETCHROW($result_user)) + { + // Load current ref count + $cnt = RALLYE_GET_REFCOUNT($uid, $refs); + + // Points of ref's + $result_ref = SQL_QUERY_ESC("SELECT DISTINCT SUM(p.points) +FROM "._MYSQL_PREFIX."_user_points AS p +LEFT JOIN "._MYSQL_PREFIX."_user_data AS d +ON p.userid=d.userid +WHERE d.status='CONFIRMED' AND d.max_mails > 0 AND d.mails_confirmed >= %s AND p.ref_depth='1' AND p.points > 0 AND d.userid=%d", + array($CONFIG['ref_payout'], bigintval($uid)), __FILE__, __LINE__); + list($refpoints) = SQL_FETCHROW($result_ref); + SQL_FREERESULT($result_ref); + + if (empty($refpoints)) $refpoints = "0"; + + // Store calculated new refs to array + $users['uid'][] = $uid; + $users['ref'][] = abs($cnt - $refs); + $users['cpoints'][] = $refpoints - $cpoints; + } + + // Free memory + SQL_FREERESULT($result_user); + + // Sort array for refs (descending) + array_pk_sort($users, array("ref", "cpoints"), 0, 1, true); + + // Load prices array (!) + $prices = RALLYE_LOAD_PRICES_ARRAY($rallye); + + // Merge users into prices + foreach ($prices['level'] as $k=>$lvl) + { + $prices['uid'][$k] = $users['uid'][$k]; + if (empty($prices['uid'][$k])) $prices['uid'][$k] = "---"; + $prices['ref'][$k] = $users['ref'][$k]; + if (empty($prices['ref'][$k])) $prices['ref'][$k] = "---"; + $prices['cpoints'][$k] = $users['cpoints'][$k]; + } + + // Return completed array + return $prices; +} +// +function RALLYE_LIST_WINNERS($rallye,$default=0) +{ + // First check how many prices are set + $result_prices = SQL_QUERY_ESC("SELECT id FROM "._MYSQL_PREFIX."_rallye_prices WHERE rallye_id=%d ORDER BY price_level", + array(bigintval($rallye)), __FILE__, __LINE__); + $prices = SQL_NUMROWS($result_prices); + SQL_FREERESULT($result_prices); + + // Load data + $DATA = RALLYE_LOAD_USERS_ARRAY($rallye); + + // Generate table + $OUT = LOAD_TEMPLATE("guest_rallye_expired_header", true); + $SW = 2; + for ($idx = 0; $idx < $prices; $idx++) + { + // Check status + // active = 1: account is still confirmed + // active = 0: account is deleted or locked + $result_active = SQL_QUERY_ESC("SELECT COUNT(userid) FROM "._MYSQL_PREFIX."_user_data WHERE userid=%d AND status='CONFIRMED' LIMIT 1", + array(bigintval($DATA['uid'][$idx])), __FILE__, __LINE__); + list($active) = SQL_FETCHROW($result_active); + SQL_FREERESULT($result_active); + + if (empty($DATA['uid'][$idx])) $DATA['uid'][$idx] = "---"; + if ((empty($DATA['ref'][$idx])) || ($DATA['ref'][$idx] == 0) || ($active == 0) || ("".round($DATA['cpoints'][$idx])."" == "0") || (empty($DATA['cpoints'][$idx]))) + { + // Allow valid and active users with at least one ref to get points + $DATA['ref'][$idx] = "---"; + $DATA['uid'][$idx] = "---"; + } + if (!empty($DATA['info'][$idx])) + { + // Take direct infos + $DATA['infos'][$idx] = $DATA['info'][$idx]; + } + else + { + // Take ppints + $DATA['infos'][$idx] = $DATA['points'][$idx]." ".POINTS; + } + + // Add row + $ADD = ""; + $OUT .= " +   ".($idx+1).". + "; + if (($DATA['uid'][$idx] == $default) && ($default > 0)) $OUT .= ""; + $OUT .= $DATA['uid'][$idx]; + if (($DATA['uid'][$idx] == $default) && ($default > 0)) $OUT .= ""; + $OUT .= " + "; + if (($DATA['uid'][$idx] == $default) && ($default > 0)) $OUT .= ""; + $OUT .= $DATA['ref'][$idx]; + if (($DATA['uid'][$idx] == $default) && ($default > 0)) $OUT .= ""; + $OUT .= " + "; + if (($DATA['uid'][$idx] == $default) && ($default > 0)) $OUT .= ""; + $OUT .= $DATA['infos'][$idx]; + if (($DATA['uid'][$idx] == $default) && ($default > 0)) $OUT .= ""; + $OUT .= " +\n"; + $SW = 3 - $SW; + } + // Add footer + $OUT .= LOAD_TEMPLATE("guest_rallye_expired_footer", true); + + // And finnally return the output + return $OUT; +} +// +function RALLYE_DELETE_EXPIRED_RALLYES() +{ + global $DATA, $CONFIG; + // Check for expired rallyes + $EXPIRE = time() - ONE_DAY * 3; // The hard-coded value... + $result_rallye = SQL_QUERY_ESC("SELECT id, title, start_time, end_time FROM "._MYSQL_PREFIX."_rallye_data WHERE end_time <= %s AND expired='Y'", + array($EXPIRE), __FILE__, __LINE__); + + if (SQL_NUMROWS($result_rallye) > 0) + { + // Expire found rallyes and notify admin + while(list($id, $title, $start, $end) = SQL_FETCHROW($result_rallye)) + { + // Prepare data for mail template + $DATA['title'] = $title; + $DATA['start'] = MAKE_DATETIME($start, "1"); + $DATA['end'] = MAKE_DATETIME($end , "1"); + $DATA['now_t'] = MAKE_DATETIME(time(), "1"); + + // Send mail to admin + if (GET_EXT_VERSION("admins") < "0.4.1") + { + // Use old method to send out + $msg = LOAD_EMAIL_TEMPLATE("admin_rallye_purged", "", 0); + SEND_ADMIN_EMAILS(RALLYE_ADMIN_PURGED.": ".$title, $msg); + } + else + { + // Use new system to send out + SEND_ADMIN_EMAILS_PRO(RALLYE_ADMIN_PURGED.": ".$title, "admin_rallye_purged", "", 0); + } + + // Purge whole rallye + $result_purge = SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_rallye_data WHERE id=%d LIMIT 1", + array(bigintval($id)), __FILE__, __LINE__); + $result_purge = SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_rallye_prices WHERE rallye_id=%d LIMIT 1", + array(bigintval($id)), __FILE__, __LINE__); + $result_purge = SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM "._MYSQL_PREFIX."_rallye_users WHERE rallye_id=%d LIMIT 1", + array(bigintval($id)), __FILE__, __LINE__); + } + + // Add task + $result_task = SQL_QUERY_ESC("INSERT INTO "._MYSQL_PREFIX."_task_system (status, task_type, subject, text, task_created) +VALUES ('NEW', 'RALLYE_PURGED', '".RALLYE_ADMIN_PURGED.": %s', '".RALLYE_ADMIN_PURGED_TEXT."', UNIX_TIMESTAMP())", + array($title), __FILE__, __LINE__); + } + + // Free memory + SQL_FREERESULT($result_rallye); +} +// +function RALLYE_TEMPLATE_SELECTION($name="template", $default="") +{ + // Check templates directory + $OUT = ""; $ral = array(); + $BASE = PATH."templates/".GET_LANGUAGE()."/html"; + $dir = opendir($BASE); + while ($read = readdir($dir)) + { + // If it is no dir (so a file) + if (!is_dir($BASE.$read)) + { + // Accept only templates matching with rallye_????.tpl.xx + if (eregi("^rallye_.*\.tpl", $read)) + { + $read = substr($read, 7, strpos($read, ".") - 7); + // Accept only template names between 1 and 255 chars length + if ((strlen($read) < 256) && (!empty($read))) $ral[] = $read; + } + } + } + closedir($dir); + + // Do we have found templates which we can link with the new rallye? + if (!empty($ral[0])) + { + // Generate selection box for all found templates + $OUT = "\n"; + } + else + { + // No rallye templates found + $OUT = RALLYE_NO_TEMPLATES_FOUND; + } + + // Return selection + return $OUT; +} +// +function RALLYE_GET_REFCOUNT($uid, $old=0) +{ + global $REF_SYSTEM, $REF_DEPTHS, $CONFIG; + // Check current refs + if (GET_EXT_VERSION("cache") >= "0.1.2") + { + // Get refs from cache + $cnt = 0; + foreach ($REF_SYSTEM['userid'] as $id=>$u_id) + { + if (($u_id == $uid) && ($REF_SYSTEM['level'][$id] == 0)) + { + foreach ($REF_DEPTHS['level'] as $level) + { + if (($level == $REF_SYSTEM['level'][$id]) && ($level == 0)) + { + // Level does exist so abort here + $cnt = $REF_SYSTEM['counter'][$id]; + //* DEBUG: */ echo "*".$uid."/".$cnt."*
"; + break; + } + elseif ($level > 0) + { + // Not interesting here... + break; + } + } + // Abort also here! + if ($cnt > 0) break; + } + } + //* DEBUG: */ echo "
";
+		//* DEBUG: */ print_r($REF_SYSTEM);
+		//* DEBUG: */ echo "
"; + //* DEBUG: */ die(); + + if ($cnt > 0) + { + // Count cache hits + $CONFIG['cache_hits']++; + + // Remove old refs + //* DEBUG: */ echo "+".$cnt."/".$old."+
"; + $cnt -= $old; + } + } + else + { + // Load current refs from database + $result_ref = SQL_QUERY_ESC("SELECT DISTINCT SUM(s.counter) AS cnt +FROM "._MYSQL_PREFIX."_refsystem AS s +LEFT JOIN "._MYSQL_PREFIX."_refdepths AS d +ON s.level=d.level +WHERE s.userid=%d AND s.level=0", array(bigintval($uid)), __FILE__, __LINE__); + list($cnt) = SQL_FETCHROW($result_ref); + SQL_FREERESULT($result_ref); + if (empty($cnt)) + { + $cnt = "0"; + } + else + { + $cnt -= $old; + } + } + + // Return count + //* DEBUG: */ echo "*".$uid."/".$old."/".$cnt."*
"; + return $cnt; +} +// +?>