X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Fmysql-manager.php;h=b47722f6d9c735cc4c978dc6a3ab34744c7d953b;hp=186b1d43e1c678457ef27ae9e0f24ac82e7a75c6;hb=0211214187aa95bd5726ecc7dac13dfe0f699c63;hpb=dfaa8c1675da4071ea451406a6f6fedd4c568416
diff --git a/inc/mysql-manager.php b/inc/mysql-manager.php
index 186b1d43e1..b47722f6d9 100644
--- a/inc/mysql-manager.php
+++ b/inc/mysql-manager.php
@@ -50,7 +50,7 @@ function ADD_MODULE_TITLE($mod) {
$name = $cacheArray['modules']['title'][$mod];
// Update cache hits
- $_CONFIG['cache_hits']++;
+ if (isset($_CONFIG['cache_hits'])) { $_CONFIG['cache_hits']++; } else { $_CONFIG['cache_hits'] = 1; }
} else {
// Load from database
$result = SQL_QUERY_ESC("SELECT title FROM "._MYSQL_PREFIX."_mod_reg WHERE module='%s' LIMIT 1", array($mod), __FILE__, __LINE__);
@@ -115,7 +115,7 @@ function CHECK_MODULE($mod) {
$mem = $cacheArray['modules']['mem_only'][$mod_chk];
// Update cache hits
- $_CONFIG['cache_hits']++;
+ if (isset($_CONFIG['cache_hits'])) { $_CONFIG['cache_hits']++; } else { $_CONFIG['cache_hits'] = 1; }
$found = true;
} else {
// No, then we have to update it!
@@ -191,9 +191,14 @@ function CHECK_MODULE($mod) {
// Add menu description pending on given file name (without path!)
function ADD_DESCR($ACC_LVL, $file, $return = false, $output = true) {
global $DEPTH, $_CONFIG;
+ // Use only filename of the file ;)
+ $file = basename($file);
+
+ // Init variables
$LINK_ADD = ""; $OUT = ""; $AND = "";
+
// First we have to do some analysis...
- if (ereg("action-", $file)) {
+ if (substr($file, 0, 7) == "action-") {
// This is an action file!
$type = "action";
$search = substr($file, 7);
@@ -210,7 +215,7 @@ function ADD_DESCR($ACC_LVL, $file, $return = false, $output = true) {
break;
}
$AND = " AND (what='' OR what IS NULL)";
- } elseif (ereg("what-", $file)) {
+ } elseif (substr($file, 0, 5) == "what-") {
// This is an admin what file!
$type = "what";
$search = substr($file, 5);
@@ -282,8 +287,17 @@ function ADD_DESCR($ACC_LVL, $file, $return = false, $output = true) {
//* DEBUG: */ die("
".print_r($_CONFIG, true)."
");
if (($type == "what") || (($type == "action") && ((!isset($GLOBALS['what'])) || ($GLOBALS['what'] == "overview")))) {
//* DEBUG: */ echo __LINE__."+".$type."+ \n";
- $OUT .= " \n";
- $DEPTH="0";
+ $OUT .= "\n";
+
+ // Extension removeip activated?
+ if ((EXT_IS_ACTIVE("removeip")) && (isset($_CONFIG['removeip_'.strtolower($ACC_LVL).'_show'])) && ($_CONFIG['removeip_'.strtolower($ACC_LVL).'_show'] == "Y")) {
+ // Add anoymity/privacy infos
+ $OUT .= REMOVEIP_ADD_INFOS();
+ } // END - if
+
+ // Add line-break tag
+ $OUT .= " \n";
+ $DEPTH = "0";
// Handle failed logins here if not in guest
//* DEBUG: */ print __FUNCTION__."(".__LINE__."):type={$type},action={$GLOBALS['action']},what={$GLOBALS['what']},lvl={$ACC_LVL} \n";
@@ -445,7 +459,7 @@ function IS_ADMIN($admin="")
$valPass = $cacheArray['admin_hash'];
} elseif ((!empty($passCookie)) && (isset($cacheArray['admins']['password'][$admin])) && (!empty($admin))) {
// Count cache hits
- $_CONFIG['cache_hits']++;
+ if (isset($_CONFIG['cache_hits'])) { $_CONFIG['cache_hits']++; } else { $_CONFIG['cache_hits'] = 1; }
// Login data is valid or not?
$valPass = generatePassString($cacheArray['admins']['password'][$admin]);
@@ -629,6 +643,7 @@ function IS_MEMBER()
} else {
// Cookie data is invalid!
//* DEBUG: */ echo __LINE__."*** ";
+ destroy_user_session();
// Reset userid
$GLOBALS['userid'] = 0;
@@ -689,8 +704,8 @@ function UPDATE_LOGIN_DATA () {
} // END - if
// Update last module / online time
- $result = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_user_data SET last_module='%s', last_online=UNIX_TIMESTAMP() WHERE userid=%s LIMIT 1",
- array($GLOBALS['what'], $GLOBALS['userid']), __FILE__, __LINE__);
+ $result = SQL_QUERY_ESC("UPDATE "._MYSQL_PREFIX."_user_data SET last_module='%s', last_online=UNIX_TIMESTAMP(), REMOTE_ADDR='%s' WHERE userid=%s LIMIT 1",
+ array($GLOBALS['what'], GET_REMOTE_ADDR(), $GLOBALS['userid']), __FILE__, __LINE__);
}
} else {
// Destroy session, we cannot update!
@@ -1059,17 +1074,18 @@ function REMOVE_RECEIVER(&$ARRAY, $key, $uid, $pool_id, $stats_id="", $bonus=fal
// Return status for sending routine
return $ret;
}
-//
-function GET_TOTAL_DATA($search, $tableName, $lookFor, $whereStatement="userid", $onlyRows=false) {
+
+// Calculate sum (default) or count records of given criteria
+function GET_TOTAL_DATA($search, $tableName, $lookFor, $whereStatement="userid", $onlyRows=false, $add="") {
$ret = 0;
if ($onlyRows) {
// Count rows
- $result = SQL_QUERY_ESC("SELECT COUNT(%s) FROM "._MYSQL_PREFIX."_%s WHERE %s='%s'",
- array($lookFor, $tableName, $whereStatement, $search), __FILE__, __LINE__);
+ $result = SQL_QUERY_ESC("SELECT COUNT(`%s`) FROM `"._MYSQL_PREFIX."_%s` WHERE `%s`='%s'%s",
+ array($lookFor, $tableName, $whereStatement, $search, $add), __FILE__, __LINE__);
} else {
// Add all rows
- $result = SQL_QUERY_ESC("SELECT SUM(%s) FROM "._MYSQL_PREFIX."_%s WHERE %s='%s'",
- array($lookFor, $tableName, $whereStatement, $search), __FILE__, __LINE__);
+ $result = SQL_QUERY_ESC("SELECT SUM(`%s`) FROM `"._MYSQL_PREFIX."_%s` WHERE `%s`='%s'%s",
+ array($lookFor, $tableName, $whereStatement, $search, $add), __FILE__, __LINE__);
}
// Load row
@@ -1102,7 +1118,7 @@ function GET_REF_LEVEL_PERCENTS ($level) {
$per = $cacheArray['ref_depths']['percents'][$key];
// Count cache hit
- $_CONFIG['cache_hits']++;
+ if (isset($_CONFIG['cache_hits'])) { $_CONFIG['cache_hits']++; } else { $_CONFIG['cache_hits'] = 1; }
}
} else {
// Get referal data
@@ -1124,15 +1140,15 @@ function GET_REF_LEVEL_PERCENTS ($level) {
}
/**
*
- * Dynamic referral system, can also send mails!
+ * Dynamic referal system, can also send mails!
*
- * uid = Referral ID wich should receive...
+ * uid = Referal ID wich should receive...
* points = ... xxx points
- * send_notify = shall I send the referral an email or not?
+ * send_notify = shall I send the referal an email or not?
* rid = inc/modules/guest/what-confirm.php need this (DEPRECATED???)
* locked = Shall I pay it to normal (false) or locked (true) points ammount?
* add_mode = Add points only to $uid or also refs? (WARNING! Changing "ref" to "direct"
- * for default value will cause no referral will get points ever!!!)
+ * for default value will cause no referal will get points ever!!!)
*/
function ADD_POINTS_REFSYSTEM($uid, $points, $send_notify=false, $rid="0", $locked=false, $add_mode="ref") {
//* DEBUG: */ print "----------------------- ".__FUNCTION__." - ENTRY ------------------------
\n";
@@ -1148,12 +1164,12 @@ function ADD_POINTS_REFSYSTEM($uid, $points, $send_notify=false, $rid="0", $lock
return;
} // END - if
- // Count up referral depth
+ // Count up referal depth
if (!isset($DEPTH)) {
- // Initialialize referral system
+ // Initialialize referal system
$DEPTH = 0;
} else {
- // Increase referral level
+ // Increase referal level
$DEPTH++;
}
@@ -1219,7 +1235,7 @@ function ADD_POINTS_REFSYSTEM($uid, $points, $send_notify=false, $rid="0", $lock
);
// Load email template
- $msg = LOAD_EMAIL_TEMPLATE("confirm-referral", $content, bigintval($uid));
+ $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'))) {
@@ -1257,7 +1273,7 @@ function ADD_POINTS_REFSYSTEM($uid, $points, $send_notify=false, $rid="0", $lock
function UPDATE_REF_COUNTER ($uid) {
global $cacheArray, $cacheInstance;
- // Make it sure referral level zero (member him-/herself) is at least selected
+ // Make it sure referal level zero (member him-/herself) is at least selected
if (empty($cacheArray['ref_level'][$uid])) $cacheArray['ref_level'][$uid] = 1;
//* DEBUG: */ print __FUNCTION__."(".__LINE__."):uid={$uid},level={$cacheArray['ref_level'][$uid]} \n";
@@ -1274,7 +1290,7 @@ function UPDATE_REF_COUNTER ($uid) {
//* DEBUG: */ print __FUNCTION__."(".__LINE__."):uid={$uid} \n";
} // END - if
- // Check for his referral
+ // Check for his referal
$result = SQL_QUERY_ESC("SELECT refid FROM "._MYSQL_PREFIX."_user_data WHERE userid=%s LIMIT 1",
array(bigintval($uid)), __FILE__, __LINE__);
@@ -1285,15 +1301,15 @@ function UPDATE_REF_COUNTER ($uid) {
SQL_FREERESULT($result);
//* DEBUG: */ print __FUNCTION__."(".__LINE__."):uid={$uid},ref={$ref} \n";
- // When he has a referral...
+ // When he has a referal...
if (($ref > 0) && ($ref != $uid)) {
- // Move to next referral level and count his counter one up!
+ // Move to next referal level and count his counter one up!
//* DEBUG: */ print __FUNCTION__."(".__LINE__."):ref={$ref} - ADVANCE! \n";
$cacheArray['ref_level'][$uid]++; UPDATE_REF_COUNTER($ref);
} elseif ((($ref == $uid) || ($ref == 0)) && (GET_EXT_VERSION("cache") >= "0.1.2")) {
// Remove cache here
//* DEBUG: */ print __FUNCTION__."(".__LINE__."):ref={$ref} - CACHE! \n";
- if ($cacheInstance->cache_file("refsystem", true)) $cacheInstance->cache_destroy();
+ REBUILD_CACHE("refsystem", "refsystem");
}
// "Walk" back here
@@ -1334,7 +1350,7 @@ function UPDATE_ONLINE_LIST($SID, $mod, $act, $wht) {
$ADMIN = "Y";
} // END - if
- if (isSessionVariableSet('up_refid')) {
+ if (isSessionVariableSet('refid')) {
// Check cookie
if (get_session('refid') > 0) $rid = bigintval($GLOBALS['refid']);
} // END - if
@@ -1362,7 +1378,7 @@ WHERE sid='%s' LIMIT 1",
} else {
// No entry does exists so we simply add it!
SQL_QUERY_ESC("INSERT INTO "._MYSQL_PREFIX."_online (module, action, what, userid, refid, is_member, is_admin, timestamp, sid, ip) VALUES ('%s','%s','%s', %s, %s, '%s','%s', UNIX_TIMESTAMP(), '%s','%s')",
- array($mod, $act, $wht, $uid, $rid, $MEM, $ADMIN, $SID, getenv('REMOTE_ADDR')), __FILE__, __LINE__
+ array($mod, $act, $wht, $uid, $rid, $MEM, $ADMIN, $SID, GET_REMOTE_ADDR()), __FILE__, __LINE__
);
}
@@ -1396,7 +1412,7 @@ function GET_ADMIN_ID($login) {
$ret = $cacheArray['admins']['aid'][$login];
// Update cache hits
- $_CONFIG['cache_hits']++;
+ if (isset($_CONFIG['cache_hits'])) { $_CONFIG['cache_hits']++; } else { $_CONFIG['cache_hits'] = 1; }
} elseif (!EXT_IS_ACTIVE("cache")) {
// Load from database
$result = SQL_QUERY_ESC("SELECT id FROM "._MYSQL_PREFIX."_admins WHERE login='%s' LIMIT 1",
@@ -1421,7 +1437,7 @@ function GET_ADMIN_HASH($login)
$ret = $cacheArray['admins']['password'][$login];
// Update cache hits
- $_CONFIG['cache_hits']++;
+ if (isset($_CONFIG['cache_hits'])) { $_CONFIG['cache_hits']++; } else { $_CONFIG['cache_hits'] = 1; }
} elseif (!EXT_IS_ACTIVE("cache")) {
// Load from database
$result = SQL_QUERY_ESC("SELECT password FROM "._MYSQL_PREFIX."_admins WHERE login='%s' LIMIT 1",
@@ -1448,7 +1464,7 @@ function GET_ADMIN_LOGIN ($aid) {
$ret = $cacheArray['admins']['login'][$aid];
// Update cache hits
- $_CONFIG['cache_hits']++;
+ if (isset($_CONFIG['cache_hits'])) { $_CONFIG['cache_hits']++; } else { $_CONFIG['cache_hits'] = 1; }
} elseif (!EXT_IS_ACTIVE("cache")) {
// Load from database
$result = SQL_QUERY_ESC("SELECT login FROM "._MYSQL_PREFIX."_admins WHERE id=%s LIMIT 1",
@@ -1476,7 +1492,7 @@ function GET_ADMIN_EMAIL ($aid) {
$ret = $cacheArray['admins']['email'][$aid];
// Update cache hits
- $_CONFIG['cache_hits']++;
+ if (isset($_CONFIG['cache_hits'])) { $_CONFIG['cache_hits']++; } else { $_CONFIG['cache_hits'] = 1; }
} elseif (!EXT_IS_ACTIVE("cache")) {
// Load from database
$result_aid = SQL_QUERY_ESC("SELECT email FROM "._MYSQL_PREFIX."_admins WHERE id=%s LIMIT 1",
@@ -1506,12 +1522,12 @@ function GET_ADMIN_DEFAULT_ACL ($aid) {
$ret = $cacheArray['admins']['def_acl'][$aid];
// Update cache hits
- $_CONFIG['cache_hits']++;
- } else {
+ if (isset($_CONFIG['cache_hits'])) { $_CONFIG['cache_hits']++; } else { $_CONFIG['cache_hits'] = 1; }
+ } elseif (!EXT_IS_ACTIVE("cache")) {
// Load from database
$result_aid = SQL_QUERY_ESC("SELECT default_acl FROM "._MYSQL_PREFIX."_admins WHERE id=%s LIMIT 1",
- array(bigintval($ret)), __FILE__, __LINE__);
- if (SQL_NUMROWS($result) == 1) {
+ array(bigintval($aid)), __FILE__, __LINE__);
+ if (SQL_NUMROWS($result_aid) == 1) {
// Fetch data
list($ret) = SQL_FETCHROW($result_aid);
@@ -1774,11 +1790,11 @@ function MODULE_HAS_MENU($mod, $forceDb = false)
if (isset($cacheArray['modules']['has_menu'][$mod])) {
// Check module cache and count hit
$ret = ($cacheArray['modules']['has_menu'][$mod] == "Y");
- $_CONFIG['cache_hits']++;
+ if (isset($_CONFIG['cache_hits'])) { $_CONFIG['cache_hits']++; } else { $_CONFIG['cache_hits'] = 1; }
} elseif (isset($cacheArray['extensions']['ext_menu'][$mod])) {
// Check cache and count hit
$ret = ($cacheArray['extensions']['ext_menu'][$mod] == "Y");
- $_CONFIG['cache_hits']++;
+ if (isset($_CONFIG['cache_hits'])) { $_CONFIG['cache_hits']++; } else { $_CONFIG['cache_hits'] = 1; }
}
} elseif ((GET_EXT_VERSION("sql_patches") >= "0.3.6") && ((!EXT_IS_ACTIVE("cache")) || ($forceDb === true))) {
// Check database for entry
@@ -1843,7 +1859,7 @@ function UPDATE_CONFIG ($entries, $values, $updateMode="") {
$entries = substr($all, 0, -1);
} elseif (!empty($updateMode)) {
// Update mode set
- $entries .= sprintf("=%s%s%s", $entries, $updateMode, (float)$value);
+ $entries .= sprintf("=%s%s%s", $entries, $updateMode, (float)$values);
} else {
// Regular entry to update
$entries .= sprintf("='%s'", SQL_ESCAPE($values));
@@ -1902,7 +1918,7 @@ VALUES (%s,0,'NEW','EXTENSION','%s','%s',UNIX_TIMESTAMP())",
array(
$admin_id,
$subject,
- addslashes($msg),
+ SQL_ESCAPE($msg),
), __FILE__, __LINE__, true, false
);
} // END - if
@@ -1910,5 +1926,370 @@ VALUES (%s,0,'NEW','EXTENSION','%s','%s',UNIX_TIMESTAMP())",
// Free memory
SQL_FREERESULT($result);
}
-//
+
+// Prepares an SQL statement part for HTML mail and/or holiday depency
+function PREPARE_SQL_HTML_HOLIDAY ($mode) {
+ // Exclude no users by default
+ $MORE = "";
+
+ // HTML mail?
+ if ($mode == "html") $MORE = " AND html='Y'";
+ if (GET_EXT_VERSION("holiday") >= "0.1.3") {
+ // Add something for the holiday extension
+ $MORE .= " AND holiday_active='N'";
+ } // END - if
+
+ // Return result
+ return $MORE;
+}
+
+// "Getter" for total available receivers
+function GET_TOTAL_RECEIVERS ($mode="normal") {
+ // Query database
+ $result_all = SQL_QUERY("SELECT userid
+FROM "._MYSQL_PREFIX."_user_data
+WHERE status='CONFIRMED' AND receive_mails > 0".PREPARE_SQL_HTML_HOLIDAY($mode),
+ __FILE__, __LINE__);
+
+ // Get num rows
+ $numRows = SQL_NUMROWS($result_all);
+
+ // Free result
+ SQL_FREERESULT($result_all);
+
+ // Return value
+ return $numRows;
+}
+
+// Returns HTML code with an "\n";
+ }
+ } else {
+ // No cateogries are defined yet
+ $OUT = "\n";
+ }
+
+ // Return HTML code
+ return $OUT;
+}
+
+// Add bonus mail to queue
+function ADD_BONUS_MAIL_TO_QUEUE ($subject, $text, $receiverList, $points, $seconds, $url, $cat, $mode="normal", $receiver=0) {
+ // Is admin or bonus extension there?
+ if (!IS_ADMIN()) {
+ // Abort here
+ return false;
+ } elseif (!EXT_IS_ACTIVE("bonus")) {
+ // Abort here
+ return false;
+ }
+
+ // Calculcate target sent
+ $target = SELECTION_COUNT(explode(";", $receiverList));
+
+ // Receiver is zero?
+ if ($receiver == 0) {
+ // Then auto-fix it
+ $receiver = $target;
+ } // END - if
+
+ // HTML extension active?
+ if (EXT_IS_ACTIVE("html")) {
+ // No HTML by default
+ $HTML = "N";
+
+ // HTML mode?
+ if ($mode == "html") $HTML = "Y";
+
+ // Add HTML mail
+ $result = SQL_QUERY_ESC("INSERT INTO "._MYSQL_PREFIX."_bonus
+(subject, text, receivers, points, time, data_type, timestamp, url, cat_id, target_send, mails_sent, html_msg)
+VALUES ('%s','%s','%s','%s','%s','NEW', UNIX_TIMESTAMP(),'%s','%s','%s','%s','%s')",
+ array(
+ $subject,
+ $text,
+ $receiverList,
+ $points,
+ $seconds,
+ $url,
+ $cat,
+ $target,
+ bigintval($receiver),
+ $HTML
+), __FILE__, __LINE__);
+ } else {
+ // Add regular mail
+ $result = SQL_QUERY_ESC("INSERT INTO "._MYSQL_PREFIX."_bonus
+(subject, text, receivers, points, time, data_type, timestamp, url, cat_id, target_send, mails_sent)
+VALUES ('%s','%s','%s','%s','%s','NEW', UNIX_TIMESTAMP(),'%s','%s','%s','%s')",
+ array(
+ $subject,
+ $text,
+ $receiverList,
+ $points,
+ $seconds,
+ $url,
+ $cat,
+ $target,
+ bigintval($receiver),
+), __FILE__, __LINE__);
+ }
+}
+
+// Generate a receiver list for given category and maximum receivers
+function GENERATE_RECEIVER_LIST ($cat, $receiver, $mode="") {
+ global $_CONFIG;
+
+ // Init variables
+ $CAT_TABS = "%s";
+ $CAT_WHERE = "";
+ $receiverList = "";
+
+ // Secure data
+ $cat = bigintval($cat);
+ $receiver = bigintval($receiver);
+
+ // Is the receiver zero and mode set?
+ if (($receiver == 0) && (!empty($mode))) {
+ // Auto-fix receiver maximum
+ $receiver = GET_TOTAL_RECEIVERS($mode);
+ } // END - if
+
+ // Category given?
+ if ($cat > 0) {
+ // Select category
+ $CAT_TABS = "LEFT JOIN "._MYSQL_PREFIX."_user_cats AS c ON d.userid=c.userid";
+ $CAT_WHERE = " AND c.cat_id=%s";
+ } // END - if
+
+ // Exclude users in holiday?
+ if (GET_EXT_VERSION("holiday") >= "0.1.3") {
+ // Add something for the holiday extension
+ $CAT_WHERE .= " AND d.holiday_active='N'";
+ } // END - if
+
+ if ((EXT_IS_ACTIVE("html_mail")) && ($mode == "html")) {
+ // Only include HTML receivers
+ $result = SQL_QUERY_ESC("SELECT d.userid FROM "._MYSQL_PREFIX."_user_data AS d ".$CAT_TABS." WHERE d.status='CONFIRMED' AND d.html='Y'".$CAT_WHERE." ORDER BY d.%s %s LIMIT %s",
+ array($cat, $_CONFIG['order_select'], $_CONFIG['order_mode'], $receiver), __FILE__, __LINE__);
+ } else {
+ // Include all
+ $result = SQL_QUERY_ESC("SELECT d.userid FROM "._MYSQL_PREFIX."_user_data AS d ".$CAT_TABS." WHERE d.status='CONFIRMED'".$CAT_WHERE." ORDER BY d.%s %s LIMIT %s",
+ array($cat, $_CONFIG['order_select'], $_CONFIG['order_mode'], $receiver), __FILE__, __LINE__);
+ }
+
+ // Entries found?
+ if ((SQL_NUMROWS($result) >= $receiver) && ($receiver > 0)) {
+ // Load all entries
+ while (list($REC) = SQL_FETCHROW($result)) {
+ // Add receiver when not empty
+ if (!empty($REC)) $receiverList .= $REC.";";
+ } // END - while
+
+ // Free memory
+ SQL_FREERESULT($result);
+
+ // Remove trailing semicolon
+ $receiverList = substr($receiverList, 0, -1);
+ } // END - if
+
+ // Return list
+ return $receiverList;
+}
+
+// Get timestamp for given stats type and data
+function USER_STATS_GET_TIMESTAMP ($type, $data, $uid = 0) {
+ // Default timestamp is zero
+ $stamp = 0;
+
+ // User id set?
+ if ((isset($GLOBALS['userid'])) && ($uid == 0)) {
+ $uid = $GLOBALS['userid'];
+ } // END - if
+
+ // Is the extension installed and updated?
+ if ((!EXT_IS_ACTIVE("sql_patches")) || (EXT_VERSION_IS_OLDER("sql_patches", "0.5.6"))) {
+ // Return zero here
+ return $stamp;
+ } // END - if
+
+ // Try to find the entry
+ $result = SQL_QUERY_ESC("SELECT UNIX_TIMESTAMP(`inserted`) AS `stamp`
+FROM "._MYSQL_PREFIX."_user_stats_data
+WHERE userid=%s AND stats_type='%s' AND stats_data='%s'
+LIMIT 1",
+ array(bigintval($uid), $type, $data), __FILE__, __LINE__);
+
+ // Is the entry there?
+ if (SQL_NUMROWS($result) == 1) {
+ // Get this stamp
+ list($stamp) = SQL_FETCHROW($result);
+ } // END - if
+
+ // Free result
+ SQL_FREERESULT($result);
+
+ // Return stamp
+ return $stamp;
+}
+
+// Inserts user stats
+function USER_STATS_INSERT_RECORD ($uid, $type, $data) {
+ // Is the extension installed and updated?
+ if ((!EXT_IS_ACTIVE("sql_patches")) || (EXT_VERSION_IS_OLDER("sql_patches", "0.5.6"))) {
+ // Return zero here
+ return false;
+ } // END - if
+
+ // Does it exist?
+ if ((!USER_STATS_GET_TIMESTAMP($type, $data, $uid)) && (!is_array($data))) {
+ // Then insert it!
+ SQL_QUERY_ESC("INSERT INTO "._MYSQL_PREFIX."_user_stats_data (`userid`,`stats_type`,`stats_data`) VALUES (%s,'%s','%s')",
+ array(bigintval($uid), $type, $data), __FILE__, __LINE__);
+ } elseif (is_array($data)) {
+ // Invalid data!
+ DEBUG_LOG(__FUNCTION__."(".__LINE__."): uid={$uid},type={$type},data={".gettype($data).": Invalid statistics data type!");
+ }
+}
+
+// "Getter" for array for user refs and points in given level
+function GET_USER_REF_POINTS ($uid, $level) {
+ global $_CONFIG;
+
+ //* DEBUG: */ print "----------------------- ".__FUNCTION__." - ENTRY ------------------------
\n";
+ // Default is no refs and no nickname
+ $ADD = "";
+ $refs = array();
+
+ // Do we have nickname extension installed?
+ if (EXT_IS_ACTIVE("nickname")) {
+ $ADD = ", ud.nickname";
+ } // END - if
+
+ // Get refs from database
+ $result = SQL_QUERY_ESC("SELECT ur.id, ur.refid, ud.status, ud.last_online, ud.mails_confirmed, ud.emails_received".$ADD."
+FROM "._MYSQL_PREFIX."_user_refs AS ur
+LEFT JOIN "._MYSQL_PREFIX."_user_points AS up
+ON ur.refid=up.userid AND ur.level=0
+LEFT JOIN "._MYSQL_PREFIX."_user_data AS ud
+ON ur.refid=ud.userid
+WHERE ur.userid=%s AND ur.level=%s
+ORDER BY ur.refid ASC",
+ array(bigintval($uid), bigintval($level)), __FILE__, __LINE__);
+
+ // Are there some entries?
+ if (SQL_NUMROWS($result) > 0) {
+ // Fetch all entries
+ while ($row = SQL_FETCHARRAY($result)) {
+ // Get total points of this user
+ $row['points'] = GET_TOTAL_DATA($row['refid'], "user_points", "points") - GET_TOTAL_DATA($row['refid'], "user_data", "used_points");
+
+ // Get unconfirmed mails
+ $row['unconfirmed'] = GET_TOTAL_DATA($row['refid'], "user_links", "id", "userid", true);
+
+ // Calculate clickrate
+ $row['clickrate'] = ($row['mails_confirmed'] / $row['emails_received'] * 100);
+
+ // Activity is "active" by default because if autopurge is not installed
+ $row['activity'] = MEMBER_ACTIVITY_ACTIVE;
+
+ // Is autopurge installed and the user inactive?
+ if ((EXT_IS_ACTIVE("autopurge")) && ((time() - $_CONFIG['ap_inactive_since']) >= $row['last_online'])) {
+ // Inactive user!
+ $row['activity'] = MEMBER_ACTIVITY_INACTIVE;
+ } // END - if
+
+ // Remove some entries
+ unset($row['mails_confirmed']);
+ unset($row['emails_received']);
+ unset($row['last_online']);
+
+ // Add row
+ $refs[$row['id']] = $row;
+ } // END - while
+ } // END - if
+
+ // Free result
+ SQL_FREERESULT($result);
+
+ // Return result
+ //* DEBUG: */ print "
----------------------- ".__FUNCTION__." - EXIT ------------------------ \n";
+ return $refs;
+}
+
+// Recuced the amount of received emails for the receipients for given email
+function REDUCT_RECIPIENT_RECEIVED_MAILS ($column, $id, $count) {
+ // Search for mail in database
+ $result = SQL_QUERY_ESC("SELECT `userid` FROM `"._MYSQL_PREFIX."_user_links` WHERE `%s`=%s ORDER BY `userid` ASC LIMIT %s",
+ array($column, bigintval($id), $count), __FILE__, __LINE__);
+
+ // Are there entries?
+ if (SQL_NUMROWS($result) > 0) {
+ // Now load all userids for one big query!
+ $UIDs = array();
+ while (list($uid) = SQL_FETCHROW($result)) {
+ $UIDs[$uid] = $uid;
+ } // END - while
+
+ // Now update all user accounts
+ SQL_QUERY_ESC("UPDATE `"._MYSQL_PREFIX."_user_data` SET `emails_received`=`emails_received`-1 WHERE `userid` IN (%s) LIMIT %s",
+ array(implode(",", $UIDs), count($UIDs)), __FILE__, __LINE__);
+ } // END - if
+
+ // Free result
+ SQL_FREERESULT($result);
+}
+
+// [EOF]
?>