user_functions.php
上传用户:gzy2002
上传日期:2010-02-11
资源大小:1785k
文件大小:18k
源码类别:

电子政务应用

开发平台:

Java

  1. <?php
  2. // +-------------------------------------------------------------+
  3. // | DeskPRO v [2.0.1 Production]
  4. // | Copyright (C) 2001 - 2004 Headstart Solutions Limited
  5. // | Supplied by WTN-WDYL
  6. // | Nullified by WTN-WDYL
  7. // | Distribution via WebForum, ForumRU and associated file dumps
  8. // +-------------------------------------------------------------+
  9. // | DESKPRO IS NOT FREE SOFTWARE
  10. // +-------------------------------------------------------------+
  11. // | License ID : Full Enterprise License =) ...
  12. // | License Owner : WTN-WDYL Team
  13. // +-------------------------------------------------------------+
  14. // | $RCSfile: user_functions.php,v $
  15. // | $Date: 2004/02/10 01:34:25 $
  16. // | $Revision: 1.31 $
  17. // +-------------------------------------------------------------+
  18. // | File Details:
  19. // | - Utility functions for the user interface
  20. // +-------------------------------------------------------------+
  21. error_reporting(E_ALL ^ E_NOTICE);
  22. /*****************************************************
  23. function check_user
  24. -----DESCRIPTION: -----------------------------------
  25. - runs user_p_check for checks on logged in users
  26. - displays login form if user is not logged in
  27. -----RETURNS:----------------------------------------
  28. true or displays login form
  29. *****************************************************/
  30. function check_user($skip = 0) {
  31. global $user, $session;
  32. if (!$skip) {
  33. user_p_checks();
  34. }
  35. if ($user OR $session[userid]) {
  36. return 1;
  37. } else {
  38. login_form();
  39. }
  40. }
  41. /*****************************************************
  42. function user_p_checks
  43. -----DESCRIPTION: -----------------------------------
  44. - a number of checks run on a registered user who
  45. is not quite a "full" user because something needs to be completed.
  46. In the future this should be replaced with user groups
  47. -----RETURNS:----------------------------------------
  48. directly prints any errors, starting in the order the user
  49. can do something about
  50. *****************************************************/
  51. function user_p_checks() {
  52. global $user, $dplang;
  53. // user needs to validate themselves
  54. if ($user[awaiting_validation]) {
  55. error($dplang['error_awaiting_validation'] . " <a href="profile.php?do=resend_welcome">$dplang[click_here]</a>.", 1);
  56. }
  57. // user awaiting tech to validate them
  58. if ($user[awaiting_manual_validation]) {
  59. error($dplang['error_awaiting_manual_validation'], 1);
  60. }
  61. }
  62. /*******************************************************
  63. function user_category_array
  64. ---- DESCRIPTION: --------------------------------------
  65. Replace names of non-user-viewable categories with the
  66. display name for the selected display category.
  67. ---- RETURN: -------------------------------------------
  68. An array containing re-mapped categories (categories
  69. that are not meant to be shown to users are given
  70. the "displayed" name here)
  71. ********************************************************/
  72. function user_category_array($location='new') {
  73. global $db, $session, $settings;
  74. // categories not viewable to users
  75. if (!$settings[category_user_viewable]) {
  76. return false;
  77. }
  78. // do users get to pick the category on new ticket?
  79. if ($location == 'new' AND !$settings[category_user_start]) {
  80. return false;
  81. }
  82. // do users get to edit the ticket category?
  83. if ($location == 'edit' AND !$settings[category_user_editable]) {
  84. return false;
  85. }
  86. // still here so we are getting some categories
  87. // if we are not logged in, only categories for logged out users picked
  88. if (!$session[userid]) {
  89. $term = 'WHERE require_registration = 0';
  90. }
  91. // get category data
  92. $categories = $db->query_return_array("SELECT * FROM ticket_cat $term ORDER by cat_order");
  93. // no categories?
  94. if (!$db->num_rows()) {
  95. return false;  
  96. }
  97. foreach ($categories AS $category) {
  98. if (!$category['user_view']) {
  99. $cat_replace[$category['id']] = $category['show_category'];
  100. }
  101. if (!$category['user_select'] AND ($location == 'edit' OR $location == 'new')) {
  102. $cat_replace[$category['id']] = 1;
  103. }
  104. }
  105. // check on language
  106. if ($session[language] == $settings[default_language]) {
  107. foreach ($categories AS $cat) {
  108. $cats[$cat[id]] = $cat[name];
  109. }
  110. } else {
  111. // get category languages
  112. if (!$category_languages) {
  113. $category_languages = unserialize(get_data('category_languages'));
  114. }
  115. foreach ($categories AS $cat) {
  116. if ($category_languages[$session[language]][$cat[id]]['name'] != '') {
  117. $cats[$cat[id]] = $category_languages[$session[language]][$cat[id]]['name'];
  118. } else {
  119. $cats[$cat[id]] = $cat[name];
  120. }
  121. }
  122. }
  123. if (is_array($cat_replace)) {
  124. foreach ($cat_replace AS $repl => $with) {
  125. if ($location == 'edit' OR $location == 'new') {
  126. unset($cats[$repl]);
  127. } else {
  128. $cats[$repl] = $cats[$with];
  129. }
  130. }
  131. }
  132. return $cats;
  133. }
  134. /*******************************************************
  135. function user_priority_array
  136. ---- DESCRIPTION: --------------------------------------
  137. Replace names of non-user-viewable priorities with the
  138. display name for the selected display priority.
  139. ---- RETURN: -------------------------------------------
  140. An array containing re-mapped priorities (priorities
  141. that are not meant to be shown to users are given
  142. the "displayed" name here)
  143. ********************************************************/
  144. function user_priority_array($location='new') {
  145. global $db, $session, $settings;
  146. // priorities not viewable to users
  147. if (!$settings[priority_user_viewable]) {
  148. return false;
  149. }
  150. // do users get to pick the priority on new ticket?
  151. if ($location == 'new' AND !$settings[priority_user_start]) {
  152. return false;
  153. }
  154. // do users get to edit the ticket priority?
  155. if ($location == 'edit' AND !$settings[priority_user_editable]) {
  156. return false;
  157. }
  158. // still here so we are getting some priorities
  159. // if we are not logged in, only priorities for logged out users picked
  160. if (!$session[userid]) {
  161. $term = 'WHERE require_registration = 0';
  162. }
  163. // get priority data
  164. $priorities = $db->query_return_array("SELECT * FROM ticket_pri $term ORDER by pri_order");
  165. // no priorities?
  166. if (!$db->num_rows()) {
  167. return false;  
  168. }
  169. foreach ($priorities AS $priority) {
  170. if (!$priority['user_view']) {
  171. $pri_replace[$priority['id']] = $priority['show_priority'];
  172. }
  173. if (!$priority['user_select'] AND ($location == 'edit' OR $location == 'new')) {
  174. $pri_replace[$priority['id']] = 1;
  175. }
  176. }
  177. // check on language
  178. if ($session[language] == $settings[default_language]) {
  179. foreach ($priorities AS $pri) {
  180. $pris[$pri[id]] = $pri[name];
  181. }
  182. } else {
  183. // get priority languages
  184. if (!$priority_languages) {
  185. $priority_languages = unserialize(get_data('priority_languages'));
  186. }
  187. foreach ($priorities AS $pri) {
  188. if ($priority_languages[$session[language]][$pri[id]]['name'] != '') {
  189. $pris[$pri[id]] = $priority_languages[$session[language]][$pri[id]]['name'];
  190. } else {
  191. $pris[$pri[id]] = $pri[name];
  192. }
  193. }
  194. }
  195. if (is_array($pri_replace)) {
  196. foreach ($pri_replace AS $repl => $with) {
  197. if ($location == 'edit' OR $location == 'new') {
  198. unset($pris[$repl]);
  199. } else {
  200. $pris[$repl] = $pris[$with];
  201. }
  202. }
  203. }
  204. return $pris;
  205. }
  206. /*****************************************************
  207. function make_password
  208. -----DESCRIPTION: -----------------------------------
  209. - makes a password
  210. -----RETURNS:----------------------------------------
  211. 8 alphanumeric keys
  212. *****************************************************/
  213. function make_password() {
  214. return substr(md5(time()),0,8);
  215. }
  216. /*****************************************************
  217. function get_replacements
  218. -----DESCRIPTION: -----------------------------------
  219. - gets and parses the replacement variables
  220. - evals() them in the presence of the settings variables and themselves
  221. -----RETURNS:----------------------------------------
  222. true
  223. *****************************************************/
  224. function get_replacements() {
  225. global $db, $settings, $r;
  226. $db->query("SELECT name, value from template_replace");
  227. while ($replace = $db->row_array()) {
  228. $r[$replace[name]] = $replace[value];
  229. }
  230. foreach ($r AS $key => $var) {
  231. eval("$r[$key] = "" . $var . "";");
  232. }
  233. }
  234. /*****************************************************
  235. function add_navigation
  236. -----DESCRIPTION: -----------------------------------
  237. - navigation for user interface
  238. -----RETURNS:----------------------------------------
  239. the html
  240. *****************************************************/
  241. function add_navigation($name, $url) {
  242. return ' // ' . "<a class="light" href="$url">$name</a>";
  243. }
  244. /*****************************************************
  245. function divides
  246. -----DESCRIPTION: -----------------------------------
  247. - checks if a number is divisible.
  248. -----RETURNS:----------------------------------------
  249. true / false
  250. *****************************************************/
  251. function divides($number, $value) {
  252. if (is_int($number / $value)) {
  253. return 1;
  254. } else {
  255. return 0;
  256. }
  257. }
  258. /*****************************************************
  259. function checkvalue
  260. -----DESCRIPTION: -----------------------------------
  261. - checks if number is value
  262. - used in templates during looping
  263. -----RETURNS:----------------------------------------
  264. true / false
  265. *****************************************************/
  266. function checkvalue(&$number, $value) {
  267. if ($number == $value) {
  268. $number = 0;
  269. return true;
  270. } else {
  271. return false;
  272. }
  273. }
  274. /*****************************************************
  275. function login_form
  276. -----DESCRIPTION: -----------------------------------
  277. - displays login form
  278. - keeps track of any submitted variables and passes them on
  279. -----RETURNS:----------------------------------------
  280. displays login form
  281. *****************************************************/
  282. function login_form($error='', $getvars='', $postvars='', $filevars='') {
  283. global $r, $t, $css, $settings, $_SERVER, $_POST, $this_language, $_GET, $_FILES, $user, $dplang, $session;
  284. if ($error) {
  285. $log_out = 1;
  286. }
  287. // transfer form data depending upon 1st/2nd time of login
  288. if ($getvars OR $postvars OR $filevars) {
  289. $_getvars = htmlspecialchars($getvars);
  290. $_postvars = htmlspecialchars($postvars);
  291. $_filevars = htmlspecialchars($filevars);
  292. } else {
  293. $_getvars = htmlspecialchars(serialize($_GET));
  294. $_postvars = htmlspecialchars(serialize($_POST));
  295. $_filevars = htmlspecialchars(serialize($_FILES));
  296. }
  297. if (!$page) {
  298. $action = 'index.php';
  299. }
  300. $currentpage = $_SERVER[PHP_SELF] . $session_url;
  301. $page = 'login';
  302.  
  303. header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
  304. header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
  305. header("Cache-Control: no-cache, must-revalidate");
  306. header("Pragma: no-cache"); 
  307. eval(makeeval('header', 'HF_header'));
  308. eval(makeeval('footer', 'HF_footer'));
  309. eval(makeeval('echo', 'PROFILE_login'));
  310. exit();
  311. }
  312. /*****************************************************
  313. function error
  314. -----DESCRIPTION: -----------------------------------
  315. - displays error message
  316. -----RETURNS:----------------------------------------
  317. displays error message
  318. *****************************************************/
  319. function error($message='', $notice = 0) {
  320. global $r, $t, $css, $user, $this_language, $session, $header, $footer, $settings, $dplang, $headinclude, $navbar, $footer;
  321. if ($dplang[$message] != '') {
  322. $message = $dplang[$message];
  323. }
  324. eval(makeeval('header', 'HF_header'));
  325. eval(makeeval('footer', 'HF_footer'));
  326. eval(makeeval('echo', 'ERROR_default'));
  327. exit();
  328. }
  329. /*****************************************************
  330. function jump
  331. -----DESCRIPTION: -----------------------------------
  332. - jumps to another page
  333. -----RETURNS:----------------------------------------
  334. echos the html to jump to the next page
  335. *****************************************************/
  336. function jump($url, $message='', $time=1) {
  337. global $r, $css, $session_url, $this_language, $dplang;
  338. // we need to change the url to take account of session
  339. if ($session_url) {
  340. if (in_string('php?', $url)) {
  341. $url = str_replace('php?', "php" . $session_url . '&', $url);
  342. } else {
  343. $url = str_replace('php', "php" . $session_url, $url);
  344. }
  345. }
  346. $message = $dplang[$message];
  347. eval(makeeval('echo', 'REDIRECT_standard_redirect'));
  348. exit();
  349. }
  350. /*****************************************************
  351. function form_input
  352. *****************************************************/
  353. function form_input($name, $value="", $size="30", $to_array='') {
  354. if ($to_array != "") {
  355. $name = $to_array . "[" . $name . "]";
  356. }
  357. $value = htmlspecialchars($value);
  358. $html= "<input type="text" name="$name" value="$value" size="$size">";
  359. return $html;
  360. }
  361. /*****************************************************
  362. function form_select
  363. -----VALS: -----------------------------------
  364. $name - name of form element
  365. $data - the array of data to popluate select menu
  366. $start - the selected value
  367. $array - if name of form element should include an array
  368. $same - should the key/val be the same
  369. $size - if a big select box
  370. *****************************************************/
  371. function form_select($name, $data, $start='', $array='', $same='', $size='') {
  372. if ($to_array != "") {
  373. $name = $to_array . "[" . $name . "]";
  374. }
  375. if ($size) {
  376. $name = $name . '[]';
  377. $html .= "<select name="$name" size="$size" MULTIPLE>n";
  378. } else {
  379. $html .= "<select name="$name">n";
  380. }
  381. while (list ($key, $val) = each ($data)) {
  382. if ($same) {
  383. $key = $val;
  384. }
  385. if ($key == $start) {
  386. $html .= "<option selected="selected" value="$key">$val</option>n";
  387. } else {
  388. $html .= "<option value="$key">$val</option>n";
  389. }
  390. }
  391. $html .= "</select>n";
  392. return $html;
  393. }
  394. /*****************************************************
  395. function form_checkbox
  396. -----VALS: -----------------------------------
  397. $name - name of form element
  398. $data - the array of data to create checkboxes
  399. $checked - should the select box be selected
  400. $array - if name of form element should include an array
  401. $perline - used to specify a number of checkboxes per line
  402. *****************************************************/
  403. function form_checkbox($name, $data, $checked, $array, $perline) {
  404. if ($to_array != "") {
  405. $name = $to_array . "[" . $name . "]";
  406. }
  407. if ($perline) {
  408. $html .= "<table><tr>";
  409. }
  410. if (is_array($data)) {
  411. $i=0;
  412. while (list ($key, $val) = each ($data)) {
  413. if ($perline) {
  414. if ($i == $perline) {
  415. $html .= "</tr><tr>";
  416. $i=0;
  417. }
  418. $html .= "<td><b>$name</b> <input type="checkbox" name="$name" value="$value" $checked[$key]></td>n";
  419. $i++;
  420. } else {
  421. $html .= "<b>$name</b> <input type="checkbox" name="$name" value="$value" $checked[$key]>n";
  422. }
  423. }
  424. if ($perline) {
  425. if ($perline == $i) {
  426. $html .= "</tr></table>";
  427. } else {
  428. $html .= str_repeat("<td></tr>", $perline - $i);
  429. $html .= "</tr></table>";
  430. }
  431. }
  432. } else {
  433. $html = "<b>$name</b> <input type="checkbox" name="$name" value="$value" $checked>n";
  434. }
  435. return $html;
  436. }
  437. /*****************************************************
  438. function form_radio
  439. *****************************************************/
  440. function form_radio($name, $value, $start='') {
  441. global $r;
  442. $num_elements = count($value);
  443. $form = "<table>";
  444. for ($idx = 0; $idx < $num_elements; ++$idx) {
  445. $form .= "<tr><td>$r[normalfont]$value[$idx]:</font></td><td>";
  446. if ($value[$idx] == $start) {
  447. $form .= "<input type="radio" name="$name" value="$value[$idx]" checked></td></tr>n";
  448. } else {
  449. $form .= "<input type="radio" name="$name" value="$value[$idx]"></td></tr>n";
  450. }
  451. }
  452. $form .= "</table>";
  453. return $form;
  454. }
  455. /*****************************************************
  456. function form_radio_yn
  457. *****************************************************/
  458. function form_radio_yn($name, $array='', $yes='0') {
  459. if ($array) {
  460. $name = $array . "[" . $name . "]";
  461. }
  462. if ($yes) {
  463. $html .= "<font face="verdana, arial, helvetica" size="2"><b>";
  464. $html .= "Yes: <input type="radio" name="$name" value="1" checked>n";
  465. $html .= "No: <input type="radio" name="$name" value="0">n";
  466. $html .= "</b></font>";
  467. } else {
  468. $html .= "<font face="verdana, arial, helvetica" size="2"><b>";
  469. $html .= "Yes: <input type="radio" name="$name" value="1">n";
  470. $html .= "No: <input type="radio" name="$name" value="0" checked>n";
  471. $html .= "</b></font>";
  472. }
  473. return $html;
  474. }
  475. /*****************************************************
  476. function form_textarea
  477. *****************************************************/
  478. function form_textarea($name, $cols='30', $rows='5', $value='', $to_array='') {
  479. $value = htmlspecialchars($value);
  480. if ($to_array != "") {
  481. $name = $to_array . "[" . $name . "]";
  482. }
  483. $temp = "<textarea name="$name" cols="$cols" rows="$rows">$value</textarea>n";
  484. return $temp;
  485. }
  486. /*****************************************************
  487. function form_hidden
  488. *****************************************************/
  489. function form_hidden($name, $value) {
  490. $temp = "<input type="hidden" name="$name" value="$value">n";
  491. return $temp;
  492. }
  493. /*****************************************************
  494. function form_password
  495. *****************************************************/
  496. function form_password($name, $size, $maxlength, $value) {
  497. return "<input type="password" name="$name" size="$size" maxlength="$maxlength" value="$value">n";
  498. }
  499. ?>