AjaxReq.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <?php
  2. /*
  3. * static class
  4. */
  5. class AjaxReq {
  6. /*
  7. * Wygenerowanie id requestu dla ajaxowych requestow.
  8. * TODO: params ID_PROCES, ID_ZASOB_TABLE
  9. */
  10. function generate_id($proces_id, $tbl_zasob_id) {
  11. $generate_uniq_ajax_req_id = '_tbl_'.uniqid();// uniq string eg. 4e9eaf7b82516
  12. self::_gc();
  13. if ($proces_id == 'CRM_LISTA_ZASOBOW') {
  14. $conf = array();
  15. $conf['proces_id'] = 'CRM_LISTA_ZASOBOW';
  16. $conf['step_id'] = 'CRM_LISTA_ZASOBOW';
  17. $conf['title'] = 'CRM_LISTA_ZASOBOW';
  18. $conf['sql_db'] = 'default';
  19. $conf['sql_table'] = 'CRM_LISTA_ZASOBOW';
  20. // TODO: read from wskazniki
  21. $allowed_cols = array();
  22. $allowed_cols ['ID']= 'ID';
  23. $allowed_cols ['PARENT_ID']= 'P_ID';
  24. $allowed_cols ['PARENT_ID_ACCESS']= 'P_ID2';
  25. $allowed_cols ['PARENT_ID_MAP']= 'P_ID3';
  26. $allowed_cols ['ALIAS_ID']= 'ALIAS';
  27. $allowed_cols ['TYPE']= 'TYPE';
  28. $allowed_cols ['DESC']= 'DESC';
  29. $allowed_cols ['OPIS']= 'OPIS';
  30. $sql_cols = array();
  31. foreach ($allowed_cols as $k_field => $v_label) {
  32. $sql_cols[$k_field] = '';
  33. }
  34. $db = DB::getDB( $conf['sql_db'] );
  35. $sql = "show fields from `".$conf['sql_table']."`; ";
  36. $res = $db->query( $sql );
  37. while ($r = $db->fetch( $res )) {
  38. /**
  39. [Field] => ID
  40. [Type] => int(8)
  41. [Null] => NO
  42. [Key] => PRI
  43. [Default] =>
  44. [Extra] => auto_increment
  45. */
  46. if (array_key_exists($r->Field, $sql_cols)) {
  47. $r->Perm = 'RWC';// TODO: raed from wskaznik.pytanie
  48. $r->Label = $allowed_cols[$r->Field];
  49. $sql_cols[$r->Field] = (array)$r;//json_encode( $r );
  50. }
  51. }
  52. $conf['sql_cols'] = $sql_cols;// ['sql_col_name'] = 'sql_name;perm;type;default';
  53. $conf['_last_access_time'] = time();// _gc
  54. $_SESSION['_ajax_req_id'] [$generate_uniq_ajax_req_id] = $conf;
  55. } else {
  56. trigger_error("App::generat_ajax_request_id: unknown tbl '$tbl_zasob_id'", E_USER_WARNING);
  57. }
  58. return $generate_uniq_ajax_req_id;
  59. }
  60. function &get_conf($ajax_req_id) {
  61. $ret = null;
  62. if (array_key_exists($ajax_req_id, $_SESSION['_ajax_req_id'])) {
  63. $_SESSION['_ajax_req_id'][$ajax_req_id]['_last_access_time'] = time();
  64. return $_SESSION['_ajax_req_id'][$ajax_req_id];
  65. }
  66. return $ret;
  67. }
  68. /*
  69. * Garbage collector - remove old ajax request from $_SESSION.
  70. */
  71. function _gc() {
  72. $count_limit = 10;// TODO: limit na ilosc requestow - usuwac najstarsze
  73. $time_limit = 5 * 60;
  74. foreach ($_SESSION['_ajax_req_id'] as $ajax_req_id => $conf) {
  75. if (!isset($conf['_last_access_time'])) {// bad data
  76. unset($_SESSION['_ajax_req_id'][$ajax_req_id]);
  77. } else if (time() - $conf['_last_access_time'] > $time_limit) {// too old request
  78. unset($_SESSION['_ajax_req_id'][$ajax_req_id]);
  79. }
  80. }
  81. }
  82. }