+// Prepares an SQL statement part for HTML mail and/or holiday depency
+// @TODO Can this be rewritten to a filter?
+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 getTotalReceivers ($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),
+ __FUNCTION__, __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 generateCategoryOptionsList ($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`", __FUNCTION__, __LINE__);
+ if (SQL_NUMROWS($result) > 0) {
+ // ... and begin loading stuff
+ while ($content = SQL_FETCHARRAY($result)) {
+ // Transfer some data
+ $CATS['id'][] = $content['id'];
+ $CATS['name'][] = $content['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($content['id'])), __FUNCTION__, __LINE__);
+
+ // Start adding all
+ $uid_cnt = 0;
+ // @TODO Rewrite this to $content = SQL_FETCHARRAY()
+ 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)), __FUNCTION__, __LINE__);
+
+ // Add user count
+ $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;
+ } // END - while
+
+ // Free memory
+ SQL_FREERESULT($result);
+
+ // Generate options
+ $OUT = '';
+ foreach ($CATS['id'] as $key => $value) {
+ if (strlen($CATS['name'][$key]) > 20) $CATS['name'][$key] = substr($CATS['name'][$key], 0, 17)."...";
+ $OUT .= ' <option value="' . $value . '">' . $CATS['name'][$key] . ' (' . $CATS['uids'][$key] . ' {--USER_IN_CAT--})</option>';
+ } // END - foreach
+ } else {
+ // No cateogries are defined yet
+ $OUT = '<option class="member_failed">{!MEMBER_NO_CATS!}</option>';
+ }
+
+ // Return HTML code
+ return $OUT;
+}