PageRenderTime 55ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/addons/user/admin/profile.php

http://wowroster.googlecode.com/
PHP | 372 lines | 277 code | 49 blank | 46 comment | 51 complexity | 9b146c2a85c207f0feb97a4d8e34cb6e MD5 | raw file
Possible License(s): GPL-2.0
  1. <?php
  2. /**
  3. * Dev.PKComp.net WoWRoster Addon
  4. *
  5. * LICENSE: Licensed under the Creative Commons
  6. * "Attribution-NonCommercial-ShareAlike 2.5" license
  7. *
  8. * @copyright 2005-2007 Pretty Kitty Development
  9. * @license http://creativecommons.org/licenses/by-nc-sa/2.5 Creative Commons "Attribution-NonCommercial-ShareAlike 2.5"
  10. * @link http://dev.pkcomp.net
  11. * @package user
  12. * @subpackage Profile Admin
  13. */
  14. if( !defined('IN_ROSTER') )
  15. {
  16. exit('Detected invalid access to this file!');
  17. }
  18. if( isset($_POST['process']) && $_POST['process'] != '' )
  19. {
  20. processData();
  21. }
  22. global $roster, $user, $addon;
  23. $start = (isset($_GET['start']) ? $_GET['start'] : 0);
  24. $listing = $next = $prev = '';
  25. if($roster->auth->uid > 0)
  26. {
  27. $uid = $roster->auth->uid;
  28. }
  29. else
  30. {
  31. $uid = '';
  32. }
  33. /**
  34. * Actual list
  35. */
  36. $query = "SELECT "
  37. . " COUNT( `id` )"
  38. . " FROM `" . $roster->db->table('user_members') . "`"
  39. . " WHERE `id` = " . $uid . ";";
  40. $num_members = $roster->db->query_first($query);
  41. if( $num_members > 0 )
  42. {
  43. $i=1;
  44. $query = 'SELECT '.
  45. '`user`.`id`, '.
  46. '`user`.`usr`, '.
  47. //'`user`.`group_id`, '.
  48. //'`ugroup`.`name`, '.
  49. '`profile`.`uid`, '.
  50. '`profile`.`avsig_src`, '.
  51. '`profile`.`show_fname`, '.
  52. '`profile`.`show_lname`, '.
  53. '`profile`.`show_email`, '.
  54. '`profile`.`show_city`, '.
  55. '`profile`.`show_country`, '.
  56. '`profile`.`show_homepage`, '.
  57. '`profile`.`show_notes`, '.
  58. '`profile`.`show_joined`, '.
  59. '`profile`.`show_lastlogin`, '.
  60. '`profile`.`show_chars`, '.
  61. '`profile`.`show_guilds`, '.
  62. '`profile`.`show_realms` '.
  63. 'FROM `'.$roster->db->table('user_members').'` AS user '.
  64. 'LEFT JOIN `'.$roster->db->table('profile', 'user').'` AS profile ON `user`.`id` = `profile`.`uid` '.
  65. 'WHERE `user`.`id` = "' . $uid . '" '.
  66. 'ORDER BY `usr` ASC'.
  67. ' LIMIT ' . ($start > 0 ? $start : 0) . ', 15;';
  68. $result = $roster->db->query($query);
  69. while( $data = $roster->db->fetch($result) )
  70. {
  71. $roster->tpl->assign_block_vars('profile', array(
  72. 'CNAME' => '<a href="' . makelink('user-user-profile-' . $data['usr']) . '" target="_blank">' . $data['usr'] . '</a>',
  73. 'CUSR' => $data['usr'],
  74. 'ID' => $i,
  75. )
  76. );
  77. $k=0;
  78. foreach( $data as $val_name => $value )
  79. {
  80. if( substr( $val_name, 0, 5 ) != 'show_' )
  81. {
  82. continue;
  83. }
  84. $field = '';
  85. $field .= '<input type="radio" id="chard_f' . $k . '_' . $data['id'] . '" name="disp_' . $data['id'] . ':' . $val_name . '" value="0" ' . ( $value == '0' ? 'checked="checked"' : '' ) . ' /><label for="chard_f' . $k . '_' . $data['id'] . '">Off</label>';
  86. $field .= '<input type="radio" id="chard_n' . $k . '_' . $data['id'] . '" name="disp_' . $data['id'] . ':' . $val_name . '" value="1" ' . ( $value == '1' ? 'checked="checked"' : '' ) . ' /><label for="chard_n' . $k . '_' . $data['id'] . '">On</label>';
  87. $roster->tpl->assign_block_vars('profile.cfg',array(
  88. 'NAME' => $roster->locale->act['user_settings'][substr( $val_name, 5)],
  89. 'FIELD' => $field,
  90. )
  91. );
  92. $k++;
  93. }
  94. $i++;
  95. }
  96. /*
  97. $formbody .= '<tr><td class="membersRow2" colspan="13"><center><div>' . $roster->locale->act['user_settings']['main'] . ': ' . selectMain($uid) . '&nbsp;&nbsp;&nbsp;' . $roster->locale->act['user_settings']['src_gen'] . ': ' . selectGen($uid) . '</div></center></td></tr>';
  98. $formbody .= "</table>\n" . border('syellow','end') . "\n</div>\n";
  99. $formbody .= $prev . $listing . $next;
  100. */
  101. $roster->tpl->assign_block_vars('profile.cfg',array(
  102. 'NAME' => $roster->locale->act['user_settings']['main'],
  103. 'FIELD' => selectMain($uid),
  104. )
  105. );
  106. $roster->tpl->assign_block_vars('profile.cfg',array(
  107. 'NAME' => $roster->locale->act['user_settings']['src_gen'],
  108. 'FIELD' => selectGen($uid),
  109. )
  110. );
  111. }
  112. else
  113. {
  114. $formbody = 'No Data';
  115. }
  116. $roster->output['body_onload'] .= 'initARC(\'config\',\'radioOn\',\'radioOff\',\'checkboxOn\',\'checkboxOff\');';
  117. $tab1 = explode('|',$roster->locale->act['user_settings']['set']);
  118. $tab2 = explode('|',$roster->locale->act['user_settings']['prof']);
  119. $menu = messagebox('
  120. <ul class="tab_menu">
  121. <li><a href="' . makelink('user-user-settings') . '" style="cursor:help;"' . makeOverlib($tab1[1],$tab1[0],'',1,'',',WRAP') . '>' . $tab1[0] . '</a></li>
  122. <li class="selected"><a href="' . makelink('user-user-settings-profile') . '" style="cursor:help;"' . makeOverlib($tab2[1],$tab2[0],'',1,'',',WRAP') . '>' . $tab2[0] . '</a></li>
  123. </ul>
  124. ',$roster->locale->act['user_page']['settings'],'sgray','145px');
  125. $roster->tpl->set_filenames(array(
  126. 'ucp2' => $addon['basename'] . '/ucp-profile.html'
  127. )
  128. );
  129. $roster->tpl->assign_vars(array(
  130. 'ROSTERCP_TITLE' => (!empty($rostercp_title) ? $rostercp_title : $roster->locale->act['roster_cp_ab']),
  131. 'MENU' => $menu,
  132. 'BODY' => $roster->tpl->fetch('ucp2'),
  133. 'PAGE_INFO' => 'User Controle Pannel',
  134. )
  135. );
  136. $roster->tpl->set_filenames(array(
  137. 'ucp' => $addon['basename'] . '/ucp.html'
  138. )
  139. );
  140. $roster->tpl->display('ucp');
  141. /**
  142. * Make select box of characters for main selection
  143. */
  144. function selectMain($uid)
  145. {
  146. global $roster, $addon, $user;
  147. include_once( $addon['inc_dir'] . 'users.lib.php' );
  148. $user = new user();
  149. $query = "SELECT `users`.`id`, `member`.`name`,`member`.`member_id` FROM `".$roster->db->table('user_members')."` AS users LEFT JOIN `".$roster->db->table('members')."` AS member ON `users`.`id` = `member`.`account_id` WHERE `users`.`id` = ".$uid.";";
  150. $result = $roster->db->query($query);
  151. if( !$result )
  152. {
  153. die_quietly($roster->db->error, 'users Profile', __FILE__,__LINE__,$query);
  154. }
  155. $chars = '';
  156. while( $row = $roster->db->fetch($result) )
  157. {
  158. $chars[$row['member_id']] = $row['name'];
  159. }
  160. $input_field = '<select name="select_'.$uid.':is_main">' . "\n";
  161. $select_one = 1;
  162. if(is_array($chars) && count($chars) > 0)
  163. {
  164. foreach( $chars as $member => $name )
  165. {
  166. if( $member == getMain($uid) && $select_one )
  167. {
  168. $input_field .= ' <option value="' . $member . '" selected="selected">-[ ' . $name . ' ]-</option>' . "\n";
  169. $select_one = 0;
  170. }
  171. else
  172. {
  173. $input_field .= ' <option value="' . $member . '">' . $name . '</option>' . "\n";
  174. }
  175. }
  176. }
  177. else
  178. {
  179. $input_field .= ' <option value="none" selected="selected">-[ None ]-</option>' . "\n";
  180. $select_one = 0;
  181. }
  182. $input_field .= '</select>';
  183. return $input_field;
  184. }
  185. function getMain($uid)
  186. {
  187. global $roster, $addon;
  188. $sql = 'SELECT * FROM `' . $roster->db->table('user_link', 'user') . '` WHERE `uid` = ' . $uid . ' AND `is_main` = 1';
  189. $query = $roster->db->query($sql);
  190. while($row = $roster->db->fetch($query))
  191. {
  192. if(!$query || $roster->db->num_rows($query) == 0)
  193. {
  194. return false;
  195. }
  196. $mid = $row['member_id'];
  197. }
  198. return $mid;
  199. }
  200. /**
  201. * Make select box of characters for main selection
  202. */
  203. function selectGen($uid)
  204. {
  205. global $roster, $addon, $user;
  206. $query = "SELECT `avsig_src` FROM `".$roster->db->table('profile','user')."` WHERE `uid` = ".$uid.";";
  207. $result = $roster->db->query($query);
  208. if( !$result )
  209. {
  210. die_quietly($roster->db->error, 'user Profile', __FILE__,__LINE__,$query);
  211. }
  212. $src = '';
  213. while( $row = $roster->db->fetch($result) )
  214. {
  215. $src = $row['avsig_src'];
  216. }
  217. $input_field = '<select name="select_'.$uid.':avsig_src">' . "\n";
  218. $sigGen = active_addon('siggen');
  219. if( $sigGen == 1 && $src == 'SigGen')
  220. {
  221. $input_field .= ' <option value="SigGen" selected="selected">-[ SigGen ]-</option>' . "\n";
  222. $input_field .= ' <option value="default">Default</option>' . "\n";
  223. }
  224. elseif( $sigGen == 1 && $src == 'default' || $src == '')
  225. {
  226. $input_field .= ' <option value="default" selected="selected">-[ Default ]-</option>' . "\n";
  227. $input_field .= ' <option value="SigGen">SigGen</option>' . "\n";
  228. }
  229. else
  230. {
  231. $input_field .= ' <option value="default" selected="selected">-[ Default ]-</option>' . "\n";
  232. }
  233. $input_field .= '</select>';
  234. return $input_field;
  235. }
  236. /**
  237. * Process Data for entry to the database
  238. *
  239. * @return string Settings changed or not changed
  240. */
  241. function processData()
  242. {
  243. global $roster, $addon, $user;
  244. $update_sql = array();
  245. $mid = 0;
  246. $src = '';
  247. //echo '<prE>'; print_r($_POST); echo '</pre>';
  248. // Update only the changed fields
  249. foreach( $_POST as $settingName => $settingValue )
  250. {
  251. if( substr($settingName,0,7) == 'select_' )
  252. {
  253. $settingName = str_replace('select_','',$settingName);
  254. list($uid,$settingName) = explode(':',$settingName);
  255. if( $settingName == 'is_main' && $settingValue != 'none' )
  256. {
  257. /* $get_val = "SELECT `$settingName`"
  258. . " FROM `" . $roster->db->table('members') . "`"
  259. . " WHERE `account_id` = '$uid' AND `member_id` = '" . $roster->db->escape( $settingValue ) . "';";
  260. $result = $roster->db->query($get_val) or die_quietly($roster->db->error(),'Database Error',__FILE__,__LINE__,$get_val);
  261. $config = $roster->db->fetch($result);
  262. */
  263. $mid = $roster->db->escape( $settingValue );//$roster->db->escape( $settingValue );
  264. }
  265. if( $config[$settingName] != $settingValue && $settingName == 'is_main' )
  266. {
  267. $user->profile->setMain($uid, $mid);
  268. }
  269. elseif( $config[$settingName] != $settingValue && $settingName == 'avsig_src' )
  270. {
  271. $update_sql[] = "UPDATE `" . $roster->db->table('profile', 'user') . "`"
  272. . " SET `$settingName` = '" . $roster->db->escape( $settingValue ) . "'"
  273. . " WHERE `uid` = '$uid';";
  274. if( $settingName == 'avsig_src' )
  275. $result = $roster->db->query($get_val) or die_quietly($roster->db->error(),'Database Error',__FILE__,__LINE__,$get_val);
  276. $config = $roster->db->fetch($result);
  277. $src = $roster->db->escape( $settingValue );
  278. //echo 'getavsig<br>';
  279. $user->profile->setAvSig($uid, $mid, $src);
  280. }
  281. }
  282. elseif( substr($settingName,0,5) == 'disp_' )
  283. {
  284. $settingName = str_replace('disp_','',$settingName);
  285. list($uid,$settingName) = explode(':',$settingName);
  286. $get_val = "SELECT `$settingName`"
  287. . " FROM `" . $roster->db->table('profile', 'user') . "`"
  288. . " WHERE `uid` = '$uid';";
  289. $result = $roster->db->query($get_val) or die_quietly($roster->db->error(),'Database Error',__FILE__,__LINE__,$get_val);
  290. $config = $roster->db->fetch($result);
  291. if( $config[$settingName] != $settingValue && $settingName != 'process' )
  292. {
  293. $update_sql[] = "UPDATE `" . $roster->db->table('profile', 'user') . "`"
  294. . " SET `$settingName` = '" . $roster->db->escape( $settingValue ) . "'"
  295. . " WHERE `uid` = '$uid';";
  296. }
  297. }
  298. else
  299. {
  300. //echo $settingName.'<br>';
  301. }
  302. }
  303. // Update DataBase
  304. if( !empty($update_sql) )
  305. {
  306. foreach( $update_sql as $sql )
  307. {
  308. $result = $roster->db->query($sql);
  309. if( !$result )
  310. {
  311. return '<span style="color:#0099FF;font-size:11px;">Error saving settings</span><br />MySQL Said:<br /><pre>' . $roster->db->error() . '</pre><br />';
  312. }
  313. }
  314. return '<span style="color:#0099FF;font-size:11px;">Settings have been changed</span>';
  315. }
  316. else
  317. {
  318. return '<span style="color:#0099FF;font-size:11px;">No changes have been made</span>';
  319. }
  320. return true;
  321. }