Fixes for missing user data in referal list
[mailer.git] / inc / modules / admin / what-list_refs.php
index 83b1760ceda9d482c048b26ac55c90a120ee923f..8783448eb4f6fb090cba6329a9d67ea629539723 100644 (file)
@@ -6,7 +6,7 @@
  * -------------------------------------------------------------------- *
  * File              : what-list_refs.php                               *
  * -------------------------------------------------------------------- *
- * Short description : Show all referrals made by a member              *
+ * Short description : Show all referals made by a member               *
  * -------------------------------------------------------------------- *
  * Kurzbeschreibung  : Alle generierten Refs eines Mitgliedes anzeigen  *
  * -------------------------------------------------------------------- *
@@ -18,7 +18,7 @@
  *                 Highly modified by Roland Haeder                     *
  *                                                                      *
  * -------------------------------------------------------------------- *
- * Copyright (c) 2003 - 2008 by Roland Haeder                           *
+ * Copyright (c) 2003 - 2009 by Roland Haeder                           *
  * For more information visit: http://www.mxchange.org                  *
  *                                                                      *
  * This program is free software; you can redistribute it and/or modify *
  ************************************************************************/
 
 // Some security stuff...
-if ((!defined('__SECURITY')) || (!IS_ADMIN())) {
-       $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4) . "/security.php";
-       require($INC);
+if ((!defined('__SECURITY')) || (!isAdmin())) {
+       die();
 }
 
 // Add description as navigation point
-ADD_DESCR("admin", basename(__FILE__));
+addMenuDescription('admin', __FILE__);
+
+if (isGetRequestElementSet('userid')) {
+       // Secure userid
+       $userid = bigintval(getRequestElement('userid'));
 
-if (!empty($_GET['u_id'])) {
        // Check if the user already exists
-       $result = SQL_QUERY_ESC("SELECT userid FROM "._MYSQL_PREFIX."_user_data WHERE userid=%s LIMIT 1",
-        array(bigintval($_GET['u_id'])), __FILE__, __LINE__);
-       if (SQL_NUMROWS($result) == 1) {
+       $result_user = SQL_QUERY_ESC("SELECT `userid` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `userid`=%s LIMIT 1",
+               array($userid), __FILE__, __LINE__);
+
+       // Fix missing variable
+       $result_levels = false;
+
+       // User found?
+       if (SQL_NUMROWS($result_user) == 1) {
+               // Get total refs
+               $menge =     countSumTotalData($userid, 'user_data', 'userid', 'refid', true);
+               $menge_lck = countSumTotalData($userid, 'user_data', 'userid', 'refid', true, " AND `status` != 'CONFIRMED'");
+
+               // Output info message
+               loadTemplate('admin_settings_saved', false, sprintf(getMessage('ADMIN_USER_TOTAL_REFS'), generateUserProfileLink(getRequestElement('userid')), $menge, $menge_lck));
+
                // Load all referal levels
-               $result_levels = SQL_QUERY_ESC("SELECT d.level, d.percents, r.counter
-FROM "._MYSQL_PREFIX."_refdepths AS d
-LEFT JOIN "._MYSQL_PREFIX."_refsystem AS r
-ON d.level=r.level
-WHERE r.userid=%s
-ORDER BY d.level ASC",
-                       array(bigintval($_GET['u_id'])), __FILE__, __LINE__);
+               $result_levels = SQL_QUERY("SELECT
+       `level`, `percents`
+FROM
+       `{?_MYSQL_PREFIX?}_refdepths`
+WHERE
+       `level` > 0
+ORDER BY
+       `level` ASC", __FILE__, __LINE__);
 
                // Are there some levels (VERY BAD IF NONE!)
                if (SQL_NUMROWS($result_levels) > 0) {
-                       // List all ref levels
-                       $OUT = ""; $SW = 2;
+                       // List all ref levels or entries if no refback is installed
+                       $OUT = ''; $SW = 2;
                        while ($levels = SQL_FETCHARRAY($result_levels)) {
                                // Insert more data
                                $levels['sw']    = $SW;
-                               $levels['level'] = ($levels['level'] + 1);
 
-                               // Load all refs of this user
-                               //$result_refs = SQL_QUERY_ESC("SELECT 
-                               // Load level template
-                               $OUT .= LOAD_TEMPLATE("admin_list_refs_level", true, $levels);
+                               // Is the refback still active? ;-)
+                               if (isExtensionActive('refback')) {
+                                       // Load all refs of this user
+                                       $result_refs = SQL_QUERY_ESC("SELECT `refid` FROM `{?_MYSQL_PREFIX?}_user_refs` WHERE `userid`=%s AND `level`='%s' ORDER BY refid ASC",
+                                               array($userid, $levels['level']), __FILE__, __LINE__);
+                                       //* DEBUG: */ outputHtml($userid.'/'.$levels['level'].'/'.SQL_NUMROWS($result_refs)."<br />");
+
+                                       // Do we have levels?
+                                       if (SQL_NUMROWS($result_refs) > 0) {
+                                               // Count entries
+                                               $menge =     countSumTotalData($userid, 'user_data', 'userid', 'refid', true);
+                                               $menge_lck = countSumTotalData($userid, 'user_data', 'userid', 'refid', true, " AND `status` != 'CONFIRMED'");
+
+                                               // Output info message
+                                               $levels['info'] = sprintf(getMessage('ADMIN_USER_TOTAL_REFS'), generateUserProfileLink($userid), $menge, $menge_lck);
+
+                                               // Init variables
+                                               $OUT_REFS = ''; $SW = 2;
+
+                                               // Load all refs
+                                               while ($content = SQL_FETCHARRAY($result_refs)) {
+                                                       // Query for data
+                                                       $result_user = SQL_QUERY_ESC("SELECT `userid`, `gender`, `surname`, `family`, `email`, `status`, `joined` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `userid`=%s LIMIT 1",
+                                                               array($content['refid']), __FILE__, __LINE__);
+
+                                                       // Is the data there?
+                                                       if (SQL_NUMROWS($result_user) == 1) {
+                                                               // Load data
+                                                               $data = SQL_FETCHARRAY($result_user);
+
+                                                               // Check for referals
+                                                               $refs_cnt = countSumTotalData($data['userid'], 'refsystem', 'counter');
+
+                                                               // Prepare data for the template
+                                                               $content = array(
+                                                                       'sw'         => $SW,
+                                                                       'u_link'     => generateUserProfileLink($data['userid']),
+                                                                       'gender'     => translateGender($data['gender']),
+                                                                       'refs_link'  => 0,
+                                                                       'surname'    => $data['surname'],
+                                                                       'family'     => $data['family'],
+                                                                       'email'      => "[<a href=\"".generateEmailLink($data['email'], 'user_data')."\">".$data['email']."</a>]",
+                                                                       'status'     => translateUserStatus($data['status']),
+                                                                       'registered' => generateDateTime($data['joined'], 3),
+                                                               );
+
+                                                               // Check if referal count is larger 0 and update link
+                                                               if ($refs_cnt > 0) $content['refs_link'] = generateUserProfileLink($data['userid'], $refs_cnt, "list_refs");
 
-                               // Switch colors
-                               $SW = 3 - $SW;
-                       } // END - if
+                                                               // Load template for level one
+                                                               $OUT_REFS .= loadTemplate('admin_list_refs_row', true, $content);
+                                                       } else {
+                                                               // No refs found
+                                                               $OUT_REFS = loadTemplate('admin_list_refs_nodata', true, $content);
+                                                       }
+
+                                                       // Free result
+                                                       SQL_FREERESULT($result_user);
+
+                                                       // Add content
+                                                       $levels['rows'] = $OUT_REFS;
+
+                                                       // Switch colors
+                                                       $SW = 3 - $SW;
+                                               } // END - while
+                                       } else {
+                                               // Output info message
+                                               $levels['info'] = sprintf(getMessage('ADMIN_USER_TOTAL_REFS'), generateUserProfileLink($userid), 0, 0);
+
+                                               // No refs found
+                                               $levels['rows'] = loadTemplate('admin_list_refs_norefs', true, array('userid' => $userid));
+                                       }
+
+                                       // Free result
+                                       SQL_FREERESULT($result_refs);
+
+                                       // Load level template
+                                       $OUT .= loadTemplate('admin_list_refs_level', true, $levels);
+                               } else {
+                                       // Check for referals
+                                       $refs_cnt = countSumTotalData($levels['userid'], 'user_data', 'userid', 'refid', true);
+
+                                       // Prepare data for the template
+                                       $content = array(
+                                               'sw'         => $SW,
+                                               'u_link'     => generateUserProfileLink($levels['userid']),
+                                               'gender'     => translateGender($levels['gender']),
+                                               'refs_link'  => 0,
+                                               'surname'    => $levels['surname'],
+                                               'family'     => $levels['family'],
+                                               'email'      => "[<a href=\"".generateEmailLink($levels['email'], 'user_data')."\">".$levels['email']."</a>]",
+                                               'status'     => translateUserStatus($levels['status']),
+                                               'registered' => generateDateTime($levels['joined'], 3),
+                                       );
+
+                                       // Check if referal count is larger 0 and update link
+                                       if ($refs_cnt > 0) $content['refs_link'] = generateUserProfileLink($levels['userid'], $refs_cnt, 'list_refs');
+
+                                       // Load template for level one
+                                       $OUT .= loadTemplate('admin_list_refs_row', true, $content);
+
+                                       // Switch colors
+                                       $SW = 3 - $SW;
+                               }
+                       } // END - while
 
                        // Prepare content
                        $content = array(
                                'rows' => $OUT,
-                               'uid'  => ADMIN_USER_PROFILE_LINK($_GET['u_id'])
+                               'userid'  => generateUserProfileLink(getRequestElement('userid'))
                        );
 
-                       // Load mein template
-                       LOAD_TEMPLATE("admin_list_refs", false, $content);
-               } else {
+                       // Load main template
+                       if (isExtensionActive('refback')) {
+                               loadTemplate('admin_list_refs2', false, $content);
+                       } else {
+                               loadTemplate('admin_list_refs', false, $content);
+                       }
+               } elseif (isExtensionActive('refback')) {
                        // No levels found, very bad!
-                       LOAD_TEMPLATE("admin_settings_saved", false, ADMIN_NO_REF_LEVELS);
+                       loadTemplate('admin_settings_saved', false, getMessage('ADMIN_NO_REF_LEVELS'));
+               } else {
+                       // No refs made so far
+                       loadTemplate('admin_settings_saved', false, getMessage('USER_REF_404'));
                }
 
                // Free result
                SQL_FREERESULT($result_levels);
        } else {
                // User not found
-               LOAD_TEMPLATE("admin_settings_saved", false, sprintf(ADMIN_MEMBER_404, $_GET['u_id']));
+               loadTemplate('admin_settings_saved', false, sprintf(getMessage('ADMIN_MEMBER_404'), getRequestElement('userid')));
        }
 
        // Free memory
-       SQL_FREERESULT($result);
+       SQL_FREERESULT($result_user);
 } else {
        // Output selection form with all confirmed user accounts listed
-       ADD_MEMBER_SELECTION_BOX();
+       addMemberSelectionBox();
 }
 
-//
+// [EOF]
 ?>