PageRenderTime 77ms CodeModel.GetById 45ms RepoModel.GetById 1ms app.codeStats 0ms

/module/user/index.php

https://github.com/ECP-Black/ECP
PHP | 265 lines | 265 code | 0 blank | 0 comment | 72 complexity | fd1d1c2bc32fb83adbd8a7c0b532d415 MD5 | raw file
  1. <?php
  2. $conditions = array('LIMIT' => LIMIT_COMMENTS,
  3. 'ORDER' => 'DESC',
  4. 'SPAM' => SPAM_USER_GB_COMMENTS,
  5. 'section' => 'user');
  6. function user_details($id) {
  7. if(@$_SESSION['rights']['public']['user']['view'] OR @$_SESSION['rights']['superadmin']) {
  8. global $db, $countries, $groups;
  9. $data = $db->fetch_assoc('SELECT ID, `username`, `country`, `sex`, `signatur`, `realname`, `wohnort`, `geburtstag`, `homepage`, `icq`, `msn`, `yahoo`, `skype`, `xfire`, `aim`,
  10. `clanname`, `clanirc`, `clanhomepage`, `clanhistory`, `cpu`, `mainboard`, `ram`, `gkarte`, `skarte`, `monitor`, `maus`, `tastatur`, `mauspad`,
  11. `internet`, `festplatte`, `headset`, `aboutme`, lastlogin, registerdate, uID AS online, user_pic FROM '.DB_PRE.'ecp_user
  12. LEFT JOIN '.DB_PRE.'ecp_online ON (uID = '.$id.' AND lastklick > '.(time()-SHOW_USER_ONLINE).')
  13. WHERE ID = '.$id.' GROUP BY ID');
  14. if(isset($data['username'])) {
  15. if(isset($_SESSION['userID']) AND $_SESSION['userID'] != $id) {
  16. $db->query('UPDATE '.DB_PRE.'ecp_user_lastvisits SET datum = '.time().' WHERE userID = '.$id.' AND visitID = '.$_SESSION['userID']);
  17. if($db->affekt_rows() == 0) {
  18. $db->query('INSERT INTO '.DB_PRE.'ecp_user_lastvisits (userID, visitID, datum) VALUES ('.$id.', '.$_SESSION['userID'].', '.time().')');
  19. }
  20. $anzahl = $db->result(DB_PRE.'ecp_user_lastvisits', 'COUNT(userID)', 'userID = '.$id);
  21. if($anzahl > 10) {
  22. $db->query('DELETE FROM '.DB_PRE.'ecp_user_lastvisits WHERE userID ='.$id.' LIMIT '.($anzahl-10));
  23. }
  24. }
  25. if(!isset($_SESSION['profil'][$id]) AND @$_SESSION['userID'] != $id) {
  26. $db->query('UPDATE '.DB_PRE.'ecp_user_stats SET profilhits = profilhits + 1 WHERE userID = '.$id);
  27. $_SESSION['profil'][$id] = true;
  28. }
  29. $tpl = new smarty;
  30. $data['ID'] = format_nr($data['ID']);
  31. $data['homepage'] = check_url_length($data['homepage']);
  32. $data['clanhomepage'] = check_url_length($data['clanhomepage']);
  33. $data['registerdate'] = date(LONG_DATE, $data['registerdate']);
  34. if($data['lastlogin'] == 0) {
  35. $data['lastlogin'] = NEVER_LOGGED_IN;
  36. } else
  37. $data['lastlogin'] = date(LONG_DATE, $data['lastlogin']);
  38. $data['countryname'] = $countries[$data['country']];
  39. if($data['geburtstag'] == '0000-00-00') $data['geburtstag'] = '';
  40. if($data['geburtstag']) {
  41. $birthday = explode('-', $data['geburtstag']);
  42. $data['geburtstag'] = $birthday[2].'.'.$birthday[1].'.'.$birthday[0];
  43. $alter = alter($birthday[2], $birthday[1], $birthday[0]);
  44. IF(date('m') == $birthday[1] AND date('d') < $birthday[2]) $alter -=1;
  45. $next = @mktime(0,0,0,$birthday[1],$birthday[2],$birthday[0] + $alter + 1) - time();
  46. $tpl->assign('alter', $alter);
  47. IF (date('m') == $birthday[1] AND date('d') == $birthday[2]) {
  48. $tpl->assign('next', BIRTH_TODAY);
  49. } else {
  50. $tpl->assign('next', round(($next+86400)/60/60/24).' '.DAYS);
  51. }
  52. }
  53. $data['icqtrim'] = str_replace('-', '',$data['icq']);
  54. $data['sextext'] = ($data['sex'] == 'male') ? MALE : FEMALE;
  55. foreach($data AS $key =>$value) {
  56. $tpl->assign($key, $value);
  57. }
  58. ob_start();
  59. $conditions = array('LIMIT' => LIMIT_COMMENTS,
  60. 'ORDER' => 'DESC',
  61. 'SPAM' => SPAM_USER_GB_COMMENTS,
  62. 'section' => 'user');
  63. $conditions['action'] = 'add';
  64. $conditions['link'] = '?section=user&view=gb&id='.$id;
  65. comments_get('user', $id, $conditions, 0, 0);
  66. $content = ob_get_contents();
  67. $tpl->assign('guestbook', $content);
  68. ob_end_clean();
  69. $db->query('SELECT buddyID, username, country, uID as online, user_pic, lastlogin, sex FROM '.DB_PRE.'ecp_buddy LEFT JOIN '.DB_PRE.'ecp_user ON (buddyID = ID) LEFT JOIN '.DB_PRE.'ecp_online ON (uID = buddyID AND lastklick > '.(time()-SHOW_USER_ONLINE).') WHERE userID = '.$id.' GROUP BY buddyID ORDER BY online DESC,username ASC');
  70. $buddy = array();
  71. while($row = $db->fetch_assoc()) {
  72. if($row['lastlogin'] == 0) {
  73. $row['lastlogin'] = NEVER_LOGGED_IN;
  74. } else
  75. $row['lastlogin'] = date(SHORT_DATE, $row['lastlogin']);
  76. $buddy[] = $row;
  77. }
  78. $tpl->assign('buddies', $buddy);
  79. $last = array();
  80. $db->query('SELECT visitID, username, country, datum, uID as online FROM '.DB_PRE.'ecp_user_lastvisits LEFT JOIN '.DB_PRE.'ecp_user ON visitID = ID LEFT JOIN '.DB_PRE.'ecp_online ON (uID = visitID AND lastklick > '.(time()-SHOW_USER_ONLINE).') WHERE userID = '.$id.' GROUP BY visitID ORDER BY datum DESC');
  81. while($row = $db->fetch_assoc()) {
  82. $row['countryname'] = $countries[$row['country']];
  83. $row['time'] = goodtime(time()-$row['datum'], 4);
  84. $last[] = $row;
  85. }
  86. $tpl->assign('last', $last);
  87. $user = $db->fetch_assoc('SELECT `registerdate`, rankname, `clicks`, `logins`, `comments`, a.money, iconname, `msg_s`, `msg_r`, `profilhits`, `scheine`, `2er`, `3er`, `4er`, COUNT(b.scheinID) as scheine FROM '.DB_PRE.'ecp_user LEFT JOIN '.DB_PRE.'ecp_user_stats as a ON (a.userID = ID) LEFT JOIN '.DB_PRE.'ecp_ranks ON (rID = rankID) LEFT JOIN '.DB_PRE.'ecp_lotto_scheine as b ON (b.userID = ID) WHERE ID = '.$id.' GROUP BY ID');
  88. $db->query('SELECT SUM(gewinn) as gewinn, art FROM '.DB_PRE.'ecp_lotto_gewinner WHERE userID = '.$id.' GROUP BY art');
  89. $user['wonmoney'] = 0;
  90. $user['2ermoney'] = 0;
  91. $user['3ermoney'] = 0;
  92. $user['4ermoney'] = 0;
  93. while($row = $db->fetch_assoc()) {
  94. $user['wonmoney'] += $row['gewinn'];
  95. $user[$row['art'].'ermoney'] = $row['gewinn'];
  96. }
  97. $user['runden'] = $db->result(DB_PRE.'ecp_lotto_scheine', 'COUNT(DISTINCT(rundenID)) as runden', 'userID = '.$id);
  98. $user['gesamtrunden'] = mysql_result($db->query('SHOW TABLE STATUS LIKE "'.DB_PRE.'ecp_lotto_runden"'),0, 'Auto_increment')-1;
  99. $user['tage'] = ceil((time() - $user['registerdate'])/86400);
  100. $user['teilqoute'] = format_nr($user['runden']/($user['gesamtrunden'] == 0 ? 1 : $user['gesamtrunden'])*100,2);
  101. $user['scheinrunde'] = format_nr($user['scheine']/($user['runden'] == 0 ? 1 : $user['runden']),2);
  102. $user['winscheine'] = format_nr($user['2er']+$user['3er']+$user['4er']);
  103. $user['winqoute'] = format_nr($user['winscheine']/($user['scheine'] == 0 ? 1 : $user['scheine'])*100,2);
  104. $user['registerdate'] = date(LONG_DATE, $user['registerdate']);
  105. $user['2erpro'] = format_nr($user['2er']/($user['winscheine'] == 0 ? 1 : $user['winscheine'])*100,2);
  106. $user['3erpro'] = format_nr($user['3er']/($user['winscheine'] == 0 ? 1 : $user['winscheine'])*100,2);
  107. $user['4erpro'] = format_nr($user['4er']/($user['winscheine'] == 0 ? 1 : $user['winscheine'])*100,2);
  108. $user['2ermpro'] = format_nr($user['2ermoney']/($user['wonmoney'] == 0 ? 1 : $user['wonmoney'])*100,2);
  109. $user['3ermpro'] = format_nr($user['3ermoney']/($user['wonmoney'] == 0 ? 1 : $user['wonmoney'])*100,2);
  110. $user['4ermpro'] = format_nr($user['4ermoney']/($user['wonmoney'] == 0 ? 1 : $user['wonmoney'])*100,2);
  111. foreach($user AS $key=>$value) {
  112. if($key == 'clicks' OR $key == 'comments' OR $key == 'gesamtrunden' OR $key == 'runden' OR $key == 'msg_s' OR $key == 'msg_r' OR $key == 'profilhits' OR $key == 'scheine' OR $key == '2er' OR $key == '3er' OR $key == '4er') $value = format_nr($value);
  113. if($key == 'money' OR $key == 'wonmoney' OR $key == '2ermoney' OR $key == '3ermoney' OR $key == '4ermoney') $value = format_nr($value, 2);
  114. $tpl->assign($key, $value);
  115. }
  116. $db->query('SELECT `awardID`, `eventname`, `eventdatum`, `url`, `platz`, `teamID`, `gID`, `preis`, tname, icon, gamename, COUNT(comID) as comments FROM `'.DB_PRE.'ecp_awards` LEFT JOIN '.DB_PRE.'ecp_teams ON tID = teamID LEFT JOIN '.DB_PRE.'ecp_wars_games ON gameID = gID LEFT JOIN '.DB_PRE.'ecp_comments ON (bereich = "awards" AND subID = awardID) WHERE spieler LIKE "%,'.$id.',%" GROUP BY awardID ORDER BY eventdatum DESC');
  117. $awards = array();
  118. while($row = $db->fetch_assoc()) {
  119. $row['eventdatum'] = date('d.m.Y', $row['eventdatum']);
  120. $awards[] = $row;
  121. }
  122. $tpl->assign('awards', $awards);
  123. $tpl->assign('award', count($awards));
  124. $db->query('SELECT `warID`, '.DB_PRE.'ecp_wars.datum, `result`, `resultscore`, `tname`, `oppname`, `country`, '.DB_PRE.'ecp_wars_opp.homepage, `icon`, `gamename`, `matchtypename`, COUNT(comID) as comments
  125. FROM '.DB_PRE.'ecp_wars
  126. LEFT JOIN '.DB_PRE.'ecp_teams ON '.DB_PRE.'ecp_teams.tID = '.DB_PRE.'ecp_wars.tID
  127. LEFT JOIN '.DB_PRE.'ecp_wars_games ON gID = gameID
  128. LEFT JOIN '.DB_PRE.'ecp_wars_opp ON oID = oppID
  129. LEFT JOIN '.DB_PRE.'ecp_wars_matchtype ON mID = matchtypeID
  130. LEFT JOIN '.DB_PRE.'ecp_comments ON (subID = warID AND bereich = "clanwars")
  131. WHERE status = 1 AND ownplayers LIKE "%,'.$id.',%"
  132. GROUP BY warID
  133. ORDER BY datum DESC');
  134. $clanwars = array();
  135. while($row = $db->fetch_assoc()) {
  136. $row['datum'] = date('d.m.y', $row['datum']);
  137. $row['countryname'] = $countries[$row['country']];
  138. $clanwars[] = $row;
  139. }
  140. $tpl->assign('clanwars', $clanwars);
  141. $tpl->assign('clanwar', count($clanwars));
  142. ob_start();
  143. $tpl->display(DESIGN.'/tpl/user/user_stats.html');
  144. $content = ob_get_contents();
  145. ob_end_clean();
  146. $tpl->assign('stats', $content);
  147. ob_start();
  148. $db->query('SELECT gID, name FROM `'.DB_PRE.'ecp_user_groups` LEFT JOIN `'.DB_PRE.'ecp_groups` ON (gID = groupID) WHERE userID = '.$id.' ORDER BY name ASC');
  149. $gruppen = array();
  150. while($row = $db->fetch_assoc()) {
  151. if(array_key_exists($row['name'], $groups)) $row['name'] = $groups[$row['name']];
  152. $gruppen[] = $row;
  153. }
  154. $tpl->assign('gruppen', $gruppen);
  155. $tpl->display(DESIGN.'/tpl/user/user_details.html');
  156. $content = ob_get_contents();
  157. ob_end_clean();
  158. main_content(USER_PROFIL, $content, '',1);
  159. } else {
  160. table(ERROR, NO_ENTRIES_ID);
  161. }
  162. } else {
  163. table(ERROR, ACCESS_DENIED);
  164. }
  165. }
  166. function user_view_online() {
  167. global $db, $countries;
  168. $db->query('SELECT username, country, uID, lastklick, betretten FROM '.DB_PRE.'ecp_online LEFT JOIN '.DB_PRE.'ecp_user ON (uID = ID) WHERE uID != 0 AND lastklick > '.(time()-SHOW_USER_ONLINE).' ORDER BY username ASC');
  169. if($db->num_rows()) {
  170. $user = array();
  171. while($row = $db->fetch_assoc()) {
  172. $row['betretten'] = goodtime(time()-$row['betretten']);
  173. $row['lastklick'] = goodtime(time()-$row['lastklick']);
  174. $row['countryname'] = $countries[$row['country']];
  175. $user[] = $row;
  176. }
  177. $tpl = new Smarty();
  178. $tpl->assign('user', $user);
  179. ob_start();
  180. $tpl->display(DESIGN.'/tpl/user/user_online.html');
  181. $content = ob_get_contents();
  182. ob_end_clean();
  183. main_content(USER_ONLINE, $content, '',1);
  184. } else {
  185. table(ERROR, NO_ENTRIES);
  186. }
  187. }
  188. function user_liste() {
  189. global $db, $countries;
  190. $tpl = new smarty();
  191. $anzahl = $db->result(DB_PRE.'ecp_user', 'COUNT(ID)', '1');
  192. $limits = get_sql_limit($anzahl, LIMIT_MEMBERS);
  193. $erlaubt = array('username', 'registerdate', 'lastlogin', 'geburtstag', 'online', 'sex', 'rangname');
  194. if(isset($_GET['orderby'])) {
  195. if(!in_array($_GET['orderby'], $erlaubt)) $_GET['orderby'] = 'username';
  196. ($_GET['order'] == 'DESC') ? '' : $_GET['order'] = 'ASC';
  197. if($_GET['orderby'] == 'geburtstag') ($_GET['order'] == 'DESC') ? $_GET['order'] = 'ASC' : $_GET['order'] = 'DESC';
  198. if($_GET['orderby'] == 'rangname') {
  199. ($_GET['order'] == 'ASC') ? $_GET['orderby'] = 'fest ASC, abposts ASC' : $_GET['orderby'] = 'fest DESC, abposts DESC';
  200. $_GET['order'] = '';
  201. }
  202. } else {
  203. $_GET['orderby'] = 'username';
  204. $_GET['order'] = 'ASC';
  205. }
  206. $db->query('SELECT geburtstag, xfire, icq, sex, registerdate, clanname, homepage, lastlogin, wohnort, user_pic, `ID`, username, country, uID as online, rankname, iconname FROM '.DB_PRE.'ecp_user LEFT JOIN '.DB_PRE.'ecp_ranks ON (rID = rankID) LEFT JOIN '.DB_PRE.'ecp_online ON (uID = ID AND lastklick > '.(time()- SHOW_USER_ONLINE).') GROUP BY ID ORDER BY '.strsave($_GET['orderby']).' '.strsave($_GET['order']).' LIMIT '.$limits[1].','.LIMIT_MEMBERS);
  207. $user = array();
  208. while($row = $db->fetch_assoc()) {
  209. ($row['lastlogin']) ? $row['lastlogin'] = date(LONG_DATE, $row['lastlogin']) : $row['lastlogin'] = NEVER_LOGGED_IN;
  210. $row['registerdate2'] = date('d.m.Y', $row['registerdate']);
  211. $row['registerdate'] = date(LONG_DATE, $row['registerdate']);
  212. if($row['geburtstag'] == '0000-00-00') $row['geburtstag'] = '';
  213. if($row['geburtstag']) {
  214. $birthday = explode('-', $row['geburtstag']);
  215. $row['geburtstag'] = $birthday[2].'.'.$birthday[1].'.'.$birthday[0];
  216. $alter = alter($birthday[2], $birthday[1], $birthday[0]);
  217. IF(date('m') == $birthday[1] AND date('d') < $birthday[2]) $alter -=1;
  218. $next = @mktime(0,0,0,$birthday[1],$birthday[2],$birthday[0] + $alter + 1) - time();
  219. $row['alter'] = $alter;
  220. }
  221. $row['countryname'] = $countries[$row['country']];
  222. $row['icqtrim'] = str_replace('-', '',$row['icq']);
  223. $user[] = $row;
  224. }
  225. $tpl->assign('anzahl', $anzahl);
  226. if($limits[0] > 1)
  227. $tpl->assign('seiten', makepagelink_ajax('?section=user&action=list&orderby='.$_GET['orderby'].'&order='.$_GET['order'],'return load_user(\'orderby='.$_GET['orderby'].'&order='.$_GET['order'].'&page={nr}\');',@$_GET['page'], $limits[0]));
  228. $tpl->assign('user', $user);
  229. ob_start();
  230. $tpl->display(DESIGN.'/tpl/user/user_list.html');
  231. $content = ob_get_contents();
  232. ob_end_clean();
  233. main_content(USER_LIST, $content, '',1);
  234. }
  235. if(isset($_GET['action'])) {
  236. switch($_GET['action']) {
  237. case 'viewonline':
  238. user_view_online();
  239. break;
  240. case 'list':
  241. if(@$_SESSION['rights']['public']['user']['list'] OR @$_SESSION['rights']['superadmin']) {
  242. user_liste();
  243. } else {
  244. table(ERROR, ACCESS_DENIED);
  245. }
  246. break;
  247. case 'addcomment':
  248. $conditions['action'] = 'add';
  249. $conditions['link'] = '?section=user&view=gb&id='.(int)$_GET['id'];
  250. comments_add('user', (int)$_GET['id'], $conditions);
  251. break;
  252. case 'editcomment':
  253. $conditions['action'] = 'edit';
  254. $conditions['link'] = '?section=user&view=gb&id='.(int)$_GET['subid'];
  255. comments_edit('user', (int)$_GET['subid'], (int)$_GET['id'], $conditions);
  256. break;
  257. default:
  258. table(ERROR, NO_FUNKTION_CHOOSE);
  259. }
  260. } elseif (isset($_GET['id'])) {
  261. user_details((int)$_GET['id']);
  262. } else {
  263. table(ERROR, NO_FUNKTION_CHOOSE);
  264. }
  265. ?>