+// Subtract points from database and mediadata cache
+function SUB_POINTS ($subject, $uid, $points) {
+ // Add points to used points
+ $result = SQL_QUERY_ESC("UPDATE `"._MYSQL_PREFIX."_user_data` SET `used_points`=`used_points`+%s WHERE userid=%s LIMIT 1",
+ array($points, bigintval($uid)), __FILE__, __LINE__);
+
+ // Insert booking record
+ if (EXT_IS_ACTIVE("booking")) {
+ // Add record
+ ADD_BOOKING_RECORD($subject, $uid, $points, "sub");
+ } // END - if
+
+ // Update mediadata as well
+ if (GET_EXT_VERSION("mediadata") >= "0.0.4") {
+ // Update database
+ MEDIA_UPDATE_ENTRY(array("total_points"), "sub", $points);
+ } // END - if
+}
+
+// Update config entries
+function UPDATE_CONFIG ($entries, $values, $updateMode="") {
+ global $CSS;
+
+ // Do not update config in CSS mode
+ if (($CSS == "1") || ($CSS == -1)) {
+ return;
+ } // END - if
+
+ // Do we have multiple entries?
+ if (is_array($entries)) {
+ // Walk through all
+ $all = "";
+ foreach ($entries as $idx => $entry) {
+ // Update mode set?
+ if (!empty($updateMode)) {
+ // Update entry
+ $all .= sprintf("%s=%s%s%s,", $entry, $entry, $updateMode, (float)$values[$idx]);
+ } else {
+ // Check if string or number
+ if (($values[$idx] + 0) === $values[$idx]) {
+ // Number detected
+ $all .= sprintf("%s=%s,", $entry, (float)$values[$idx]);
+ } elseif ($values[$idx] == "UNIX_TIMESTAMP()") {
+ // Function UNIX_TIMESTAMP() detected
+ $all .= sprintf("%s=%s,", $entry, $values[$idx]);
+ } else {
+ // String detected
+ $all .= sprintf("%s='%s',", $entry, SQL_ESCAPE($values[$idx]));
+ }
+ }
+ } // END - foreach
+
+ // Remove last comma
+ $entries = substr($all, 0, -1);
+ } elseif (!empty($updateMode)) {
+ // Update mode set
+ $entries .= sprintf("=%s%s%s", $entries, $updateMode, (float)$values);
+ } else {
+ // Regular entry to update
+ $entries .= sprintf("='%s'", SQL_ESCAPE($values));
+ }
+
+ // Run database update
+ //* DEBUG: */ DEBUG_LOG(__FUNCTION__, __LINE__, "entries={$entries}");
+ SQL_QUERY("UPDATE `"._MYSQL_PREFIX."_config` SET ".$entries." WHERE config=0 LIMIT 1", __FILE__, __LINE__);
+
+ // Get affected rows
+ $affectedRows = SQL_AFFECTEDROWS();
+ //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):entries={$entries},affectedRows={$affectedRows}<br />\n";
+
+ // Rebuild cache
+ REBUILD_CACHE("config", "config");
+}
+
+// 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 "<option> list" of all categories
+function ADD_CATEGORY_OPTIONS ($mode) {
+ // Prepare WHERE statement
+ $whereStatement = " WHERE visible='Y'";
+ if (IS_ADMIN()) $whereStatement = "";
+
+ // Initialize array...
+ $CATS = array(
+ 'id' => array(),
+ 'name' => array(),
+ 'uids' => array()
+ );
+
+ // Get categories
+ $result = SQL_QUERY("SELECT id, cat FROM "._MYSQL_PREFIX."_cats".$whereStatement." ORDER BY sort", __FILE__, __LINE__);
+ if (SQL_NUMROWS($result) > 0) {
+ // ... and begin loading stuff
+ while (list($id, $cat) = SQL_FETCHROW($result)) {
+ // Transfer some data
+ $CATS['id'][] = $id;
+ $CATS['name'][] = $cat;
+
+ // Check which users are in this category
+ $result_uids = SQL_QUERY_ESC("SELECT userid FROM "._MYSQL_PREFIX."_user_cats WHERE cat_id=%s",
+ array(bigintval($id)), __FILE__, __LINE__);
+
+ // Start adding all
+ $uid_cnt = 0;
+ while (list($ucat) = SQL_FETCHROW($result_uids)) {
+ $result_ver = SQL_QUERY_ESC("SELECT userid FROM "._MYSQL_PREFIX."_user_data
+WHERE userid=%s AND status='CONFIRMED' AND receive_mails > 0".PREPARE_SQL_HTML_HOLIDAY($mode)." LIMIT 1",
+ array(bigintval($ucat)), __FILE__, __LINE__);
+ $uid_cnt += SQL_NUMROWS($result_ver);
+
+ // Free memory
+ SQL_FREERESULT($result_ver);
+ } // END - while
+
+ // Free memory
+ SQL_FREERESULT($result_uids);
+
+ // Add counter
+ $CATS['uids'][] = $uid_cnt;