|
|
@@ -4,9 +4,42 @@
|
|
|
* User profile.
|
|
|
* @use User
|
|
|
* @require User
|
|
|
+ *
|
|
|
+ * $_SESSION['USER_PROFILE']['{$idTable}-hidden'] = [ idField, ... ]
|
|
|
+ * $_SESSION['USER_PROFILE']['_table_ajax_settings'] = [ idField, ... ]
|
|
|
+ *
|
|
|
+ * old:
|
|
|
+ * $_SESSION['USER_PROFILE'][$idTable] = [ idField => 1 | 0, ... ] // old version
|
|
|
*/
|
|
|
class UserProfile {
|
|
|
|
|
|
+ static function getStorageTableHiddenCols($idTable) {
|
|
|
+ if (!empty($_SESSION['USER_PROFILE']["{$idTable}-hidden"])) {
|
|
|
+ return $_SESSION['USER_PROFILE']["{$idTable}-hidden"];
|
|
|
+ }
|
|
|
+ if (!empty($_SESSION['USER_PROFILE']["{$idTable}"])) { // read from old version
|
|
|
+ return array_keys(array_filter($_SESSION['USER_PROFILE']["{$idTable}"], function ($isFieldVisible) {
|
|
|
+ return (!$isFieldVisible);
|
|
|
+ }));
|
|
|
+ }
|
|
|
+ return [];
|
|
|
+ }
|
|
|
+ static function setStorageTableProfile($idTable, $tableProfile) {
|
|
|
+ $_SESSION['USER_PROFILE'][$idTable] = $tableProfile;
|
|
|
+ }
|
|
|
+ static function setStorageTableHiddenCols($idTable, $hiddenCols) {
|
|
|
+ unset($_SESSION['USER_PROFILE'][$idTable]); // clean up old version
|
|
|
+ $filteredHiddenCols = array_filter($hiddenCols, [ 'V', 'filterPositiveInteger' ]);
|
|
|
+ if (empty($filteredHiddenCols)) {
|
|
|
+ unset($_SESSION['USER_PROFILE']["{$idTable}-hidden"]);
|
|
|
+ } else {
|
|
|
+ $_SESSION['USER_PROFILE']["{$idTable}-hidden"] = $filteredHiddenCols;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ static function removeStorageTableProfile($idTable) {
|
|
|
+ unset($_SESSION['USER_PROFILE'][$idTable]); // every column is visible
|
|
|
+ }
|
|
|
+
|
|
|
public static function load($force = false) {
|
|
|
if ($force) {
|
|
|
$_SESSION['USER_PROFILE'] = array();
|
|
|
@@ -52,7 +85,7 @@ class UserProfile {
|
|
|
return V::get($key, '', $_SESSION['USER_PROFILE']);
|
|
|
}
|
|
|
|
|
|
- public static function getColumn($column_name, $key) {
|
|
|
+ public static function getColumn($column_name, $key) { // TODO: use only in Column.php (only by procesy5.php)
|
|
|
self::load();// profile must be loaded
|
|
|
if (!empty($_SESSION['USER_PROFILE'][$column_name][$key])) {
|
|
|
return $_SESSION['USER_PROFILE'][$column_name][$key];
|
|
|
@@ -60,18 +93,6 @@ class UserProfile {
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
- public static function setColumn($column_name, $key, $value) {
|
|
|
- self::load();// profile must be loaded
|
|
|
- $_SESSION['USER_PROFILE'][$column_name][$key] = $value;
|
|
|
- self::save();
|
|
|
- }
|
|
|
-
|
|
|
- public static function removeColumn($column_name, $key) {
|
|
|
- self::load();// profile must be loaded
|
|
|
- unset($_SESSION['USER_PROFILE'][$column_name][$key]);
|
|
|
- self::save();
|
|
|
- }
|
|
|
-
|
|
|
public static function save() {
|
|
|
self::load();// profile must be loaded
|
|
|
$db = DB::getDB();
|
|
|
@@ -107,38 +128,22 @@ class UserProfile {
|
|
|
}
|
|
|
|
|
|
public static function isHiddenColumn($idTable, $idField) {
|
|
|
- $isHidden = false;
|
|
|
- // $_SESSION['USER_PROFILE'][$idTable][$idField] => boolean
|
|
|
- if (isset($_SESSION['USER_PROFILE'][$idTable])) {
|
|
|
- if (isset($_SESSION['USER_PROFILE'][$idTable][$idField])) {
|
|
|
- if ($_SESSION['USER_PROFILE'][$idTable][$idField] != 1) {
|
|
|
- $isHidden = true;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- return $isHidden;
|
|
|
- }
|
|
|
-
|
|
|
- public static function getHiddenCols($idTable) {
|
|
|
- $colVis = array();
|
|
|
- if (array_key_exists($idTable, $_SESSION['USER_PROFILE'])) {
|
|
|
- $colVis = $_SESSION['USER_PROFILE'][$idTable];
|
|
|
- }
|
|
|
- return $colVis;
|
|
|
+ return in_array($idField, self::getStorageTableHiddenCols($idTable));
|
|
|
}
|
|
|
|
|
|
- public static function setHiddenCols($idTable, $colVis) {
|
|
|
- $isAnyHidden = false;
|
|
|
- foreach ($colVis as $idField => $isVisible) {
|
|
|
- if ($isVisible != 1) {
|
|
|
- $isAnyHidden = true;
|
|
|
+ static function setTableFieldVisible($idTable, $idField) {
|
|
|
+ self::setStorageTableHiddenCols($idTable, array_filter(
|
|
|
+ self::getStorageTableHiddenCols($idTable),
|
|
|
+ function ($idHiddenCol) use ($idField) {
|
|
|
+ return ($idHiddenCol != $idField);
|
|
|
}
|
|
|
- }
|
|
|
- if ($isAnyHidden) {
|
|
|
- $_SESSION['USER_PROFILE'][$idTable] = $colVis;
|
|
|
- } else {
|
|
|
- unset($_SESSION['USER_PROFILE'][$idTable]);// every column is visible
|
|
|
- }
|
|
|
+ ));
|
|
|
+ }
|
|
|
+ static function setTableFieldHidden($idTable, $idField) {
|
|
|
+ self::setStorageTableHiddenCols($idTable, array_unique(array_merge(
|
|
|
+ self::getStorageTableHiddenCols($idTable),
|
|
|
+ [ $idField ]
|
|
|
+ )));
|
|
|
}
|
|
|
|
|
|
public static function getTableAjaxSettings() {
|
|
|
@@ -149,8 +154,8 @@ class UserProfile {
|
|
|
return $tableAjaxSettings;
|
|
|
}
|
|
|
|
|
|
- public static function setTableAjaxSettings($colVis) {
|
|
|
- $_SESSION['USER_PROFILE']['_table_ajax_settings'] = $colVis;
|
|
|
+ public static function setTableAjaxSettings($tableAjaxSettings) { // @used 'pageSize' in TableAjax
|
|
|
+ $_SESSION['USER_PROFILE']['_table_ajax_settings'] = $tableAjaxSettings;
|
|
|
}
|
|
|
|
|
|
}
|