UserProfile.php 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. <?php
  2. /**
  3. * User profile.
  4. * @use User
  5. * @require User
  6. */
  7. class UserProfile {
  8. public static function load($force = false) {
  9. if ($force) {
  10. $_SESSION['USER_PROFILE'] = array();
  11. }
  12. if (empty($_SESSION['USER_PROFILE'])) {
  13. $_SESSION['USER_PROFILE'] = array();
  14. // load user profile (hidden column, UserBookmarks)
  15. $sql = "select `ADM_WWW_PROFILE` from `ADMIN_USERS` where `ADM_ACCOUNT`='".User::getName()."' limit 0,1 ";
  16. $db = DB::getDB();
  17. $res = $db->query($sql);
  18. while ($h = $db->fetch($res)) {
  19. $ADM_WWW_PROFILE = "{$h->ADM_WWW_PROFILE}";
  20. if (!empty($ADM_WWW_PROFILE)) {
  21. if (' Array' === substr($ADM_WWW_PROFILE, 0, 6) || 'Array' === substr($ADM_WWW_PROFILE, 0, 5)) {
  22. eval("\$_SESSION['USER_PROFILE'] = {$ADM_WWW_PROFILE} ;");
  23. } else {
  24. $profileFromJson = json_decode($ADM_WWW_PROFILE);
  25. if ($profileFromJson && !empty($profileFromJson)) {
  26. $profileFromJson = (array)$profileFromJson;
  27. foreach ($profileFromJson as $k => $v) {
  28. $profileFromJson[$k] = (array)$v;
  29. }
  30. $_SESSION['USER_PROFILE'] = $profileFromJson;
  31. } else {
  32. $_SESSION['USER_PROFILE'] = array();
  33. }
  34. }
  35. } else {
  36. $_SESSION['USER_PROFILE'] = array();
  37. }
  38. }
  39. }
  40. return $_SESSION['USER_PROFILE'];
  41. }
  42. public static function set($key, $val) {
  43. self::load();// profile must be loaded
  44. $_SESSION['USER_PROFILE'][$key] = $val;
  45. }
  46. public static function get($key) {
  47. self::load();// profile must be loaded
  48. return V::get($key, '', $_SESSION['USER_PROFILE']);
  49. }
  50. public static function getColumn($column_name, $key) {
  51. self::load();// profile must be loaded
  52. if (!empty($_SESSION['USER_PROFILE'][$column_name][$key])) {
  53. return $_SESSION['USER_PROFILE'][$column_name][$key];
  54. }
  55. return null;
  56. }
  57. public static function setColumn($column_name, $key, $value) {
  58. self::load();// profile must be loaded
  59. $_SESSION['USER_PROFILE'][$column_name][$key] = $value;
  60. self::save();
  61. }
  62. public static function removeColumn($column_name, $key) {
  63. self::load();// profile must be loaded
  64. unset($_SESSION['USER_PROFILE'][$column_name][$key]);
  65. self::save();
  66. }
  67. public static function save() {
  68. self::load();// profile must be loaded
  69. $db = DB::getDB();
  70. if(0){// old way
  71. $USER_PROFILE = $_SESSION['USER_PROFILE'];
  72. reset($USER_PROFILE);
  73. $VAR = " Array ( ";
  74. for ( ;(key($USER_PROFILE)); next($USER_PROFILE)) {
  75. $VAR = $VAR . "\"" . key($USER_PROFILE) . "\" => Array ( ";
  76. for ( ;(key($USER_PROFILE[key($USER_PROFILE)])); next($USER_PROFILE[key($USER_PROFILE)])) {
  77. $VAR = $VAR . " \"" . key($USER_PROFILE[key($USER_PROFILE)]) . "\"=>\"" . $USER_PROFILE[key($USER_PROFILE)][key($USER_PROFILE[key($USER_PROFILE)])] . "\"," ;
  78. }
  79. $VAR = $VAR . " ), ";
  80. }
  81. $VAR = $VAR . " ) " ;
  82. if(0){// old way debug
  83. echo'<pre>$VAR('.strlen($VAR).'):';print_r($VAR);echo'</pre>';//!!
  84. $profileJson = json_encode($_SESSION['USER_PROFILE']);
  85. echo'<pre>json_encode('.strlen($profileJson).'):';print_r($profileJson);echo'</pre>';//!!
  86. echo'<pre>profileRaw:';print_r($_SESSION['USER_PROFILE']);echo'</pre>';//!!
  87. $profileFromJson = json_decode($profileJson);
  88. echo'<pre>profileFromJson:';print_r($profileFromJson);echo'</pre>';
  89. }// old way debug
  90. }// old way
  91. $VAR = json_encode($_SESSION['USER_PROFILE']);
  92. $sql = "update `ADMIN_USERS` set `ADM_WWW_PROFILE`='{$VAR}' where `ADM_ACCOUNT`='".User::getName()."' limit 1 ";
  93. $res = $db->query($sql);
  94. if (($affected = $db->affected_rows($res)) != 1) {
  95. // TODO: error msg
  96. }
  97. return $VAR;
  98. }
  99. public static function isHiddenColumn($idTable, $idField) {
  100. $isHidden = false;
  101. // $_SESSION['USER_PROFILE'][$idTable][$idField] => boolean
  102. if (isset($_SESSION['USER_PROFILE'][$idTable])) {
  103. if (isset($_SESSION['USER_PROFILE'][$idTable][$idField])) {
  104. if ($_SESSION['USER_PROFILE'][$idTable][$idField] != 1) {
  105. $isHidden = true;
  106. }
  107. }
  108. }
  109. return $isHidden;
  110. }
  111. public static function getHiddenCols($idTable) {
  112. $colVis = array();
  113. if (array_key_exists($idTable, $_SESSION['USER_PROFILE'])) {
  114. $colVis = $_SESSION['USER_PROFILE'][$idTable];
  115. }
  116. return $colVis;
  117. }
  118. public static function setHiddenCols($idTable, $colVis) {
  119. $isAnyHidden = false;
  120. foreach ($colVis as $idField => $isVisible) {
  121. if ($isVisible != 1) {
  122. $isAnyHidden = true;
  123. }
  124. }
  125. if ($isAnyHidden) {
  126. $_SESSION['USER_PROFILE'][$idTable] = $colVis;
  127. } else {
  128. unset($_SESSION['USER_PROFILE'][$idTable]);// every column is visible
  129. }
  130. }
  131. public static function getTableAjaxSettings() {
  132. $tableAjaxSettings = array();
  133. if (array_key_exists('_table_ajax_settings', $_SESSION['USER_PROFILE'])) {
  134. $tableAjaxSettings = $_SESSION['USER_PROFILE']['_table_ajax_settings'];
  135. }
  136. return $tableAjaxSettings;
  137. }
  138. public static function setTableAjaxSettings($colVis) {
  139. $_SESSION['USER_PROFILE']['_table_ajax_settings'] = $colVis;
  140. }
  141. }