Files
luos/workflow/engine/methods/userExtendedAttributes/index.php
2021-01-04 11:08:21 -04:00

256 lines
12 KiB
PHP

<?php
use Illuminate\Support\Facades\DB;
use ProcessMaker\BusinessModel\Role;
use ProcessMaker\Model\User;
use ProcessMaker\Model\UserExtendedAttributes;
global $G_PUBLISH;
$G_PUBLISH = new Publisher();
try {
$option = empty($_REQUEST["option"]) ? '' : $_REQUEST["option"];
switch ($option) {
case "list":
$rbacRoles = Role::getAllRoles();
$orders = [
"attributeName" => "UEA_NAME",
"attribute" => "UEA_ATTRIBUTE_ID",
"role" => "UEA_ROLES",
"dateCreated" => "UEA_DATE_CREATE"
];
$query = empty($_REQUEST["query"]) ? "" : $_REQUEST["query"];
$limit = empty($_REQUEST["limit"]) ? 10 : $_REQUEST["limit"];
$start = empty($_REQUEST["start"]) ? 0 : $_REQUEST["start"];
$ascending = !isset($_REQUEST["ascending"]) ? "1" : $_REQUEST["ascending"];
$orderBy = $orders["attributeName"];
if (!empty($_REQUEST["orderBy"]) && !empty($orders[$_REQUEST["orderBy"]])) {
$orderBy = $orders[$_REQUEST["orderBy"]];
}
$count = UserExtendedAttributes::join('USERS', 'USERS.USR_ID', '=', 'USER_EXTENDED_ATTRIBUTES.UEA_OWNER')
->count();
$userExtendedAttributes = UserExtendedAttributes::query()
->join('USERS', 'USERS.USR_ID', '=', 'USER_EXTENDED_ATTRIBUTES.UEA_OWNER')
->where('UEA_NAME', 'LIKE', "%{$query}%")
->orWhere('UEA_ATTRIBUTE_ID', 'LIKE', "%{$query}%")
->orWhere('UEA_ROLES', 'LIKE', "%{$query}%")
->orWhere('UEA_DATE_CREATE', 'LIKE', "%{$query}%")
->orderBy($orderBy, $ascending === "1" ? "asc" : "desc")
->offset($start)
->limit($limit)
->get()
->toArray();
//change key names
array_walk($userExtendedAttributes, function (&$row) use($rbacRoles) {
foreach ($row as $key => $value) {
$string = $key;
$string = strtolower($string);
$string = str_replace(["uea_"], "", $string);
$string = str_replace("_", " ", $string);
$string = ucwords($string);
$string = lcfirst($string);
$string = str_replace(" ", "", $string);
$row[$string] = $row[$key];
unset($row[$key]);
}
//format owner
$row["owner"] = $row["usrUsername"];
//format roles
$rolesLabel = [];
if (is_array($rbacRoles)) {
$roles = G::json_decode($row["roles"]);
foreach ($roles as $rol) {
foreach ($rbacRoles as $item) {
if (isset($item->ROL_CODE) && $rol === $item->ROL_CODE) {
$rolesLabel[] = $item->ROL_NAME;
}
}
}
}
$row["rolesLabel"] = $rolesLabel;
});
$result = [
"data" => $userExtendedAttributes,
"count" => $count
];
echo G::json_encode($result);
break;
case "userExtendedAttributesList":
$roleCode = empty($_REQUEST["roleCode"]) ? "" : $_REQUEST["roleCode"];
$userExtendedAttributes = UserExtendedAttributes::query()
->where("UEA_ROLES", "like", "%\"{$roleCode}\"%")
->orWhere("UEA_OPTION", "=", "allUser")
->orderBy("UEA_NAME")
->get()
->toArray();
//change key names
array_walk($userExtendedAttributes, function (&$row) {
foreach ($row as $key => $value) {
$string = $key;
$string = strtolower($string);
$string = str_replace(["uea_"], "", $string);
$string = str_replace("_", " ", $string);
$string = ucwords($string);
$string = lcfirst($string);
$string = str_replace(" ", "", $string);
$row[$string] = $row[$key];
unset($row[$key]);
}
});
$result = [
"data" => $userExtendedAttributes
];
echo json_encode($result);
break;
case "listByRol":
$rolCode = empty($_REQUEST["rolCode"]) ? "" : $_REQUEST["rolCode"];
$userExtendedAttributes = UserExtendedAttributes::query()
->Where("UEA_ROLES", 'LIKE', "%{$rolCode}%")
->orderBy("UEA_NAME", "asc")
->get()
->toArray();
$default = [
["value" => "USR_FIRSTNAME", "text" => "USR_FIRSTNAME", "extended" => false],
["value" => "USR_LASTNAME", "text" => "USR_LASTNAME", "extended" => false],
["value" => "USR_EMAIL", "text" => "USR_EMAIL", "extended" => false],
["value" => "USR_DUE_DATE", "text" => "USR_DUE_DATE", "extended" => false],
["value" => "USR_STATUS", "text" => "USR_STATUS", "extended" => false],
["value" => "USR_STATUS_ID", "text" => "USR_STATUS_ID", "extended" => false],
["value" => "USR_ADDRESS", "text" => "USR_ADDRESS", "extended" => false],
["value" => "USR_PHONE", "text" => "USR_PHONE", "extended" => false],
["value" => "USR_FAX", "text" => "USR_FAX", "extended" => false],
["value" => "USR_CELLULAR", "text" => "USR_CELLULAR", "extended" => false],
["value" => "USR_ZIP_CODE", "text" => "USR_ZIP_CODE", "extended" => false],
["value" => "USR_POSITION", "text" => "USR_POSITION", "extended" => false],
["value" => "USR_BIRTHDAY", "text" => "USR_BIRTHDAY", "extended" => false],
["value" => "USR_COST_BY_HOUR", "text" => "USR_COST_BY_HOUR", "extended" => false],
["value" => "USR_UNIT_COST", "text" => "USR_UNIT_COST", "extended" => false],
["value" => "USR_PMDRIVE_FOLDER_UID", "text" => "USR_PMDRIVE_FOLDER_UID", "extended" => false],
["value" => "USR_BOOKMARK_START_CASES", "text" => "USR_BOOKMARK_START_CASES", "extended" => false],
["value" => "USR_TIME_ZONE", "text" => "USR_TIME_ZONE", "extended" => false],
["value" => "USR_DEFAULT_LANG", "text" => "USR_DEFAULT_LANG", "extended" => false],
["value" => "USR_LAST_LOGIN", "text" => "USR_LAST_LOGIN", "extended" => false]
];
$data = [];
foreach ($userExtendedAttributes as $key => $value) {
$data[] = [
"value" => $value["UEA_ATTRIBUTE_ID"],
"text" => $value["UEA_NAME"],
"extended" => true
];
}
$data = array_merge($data, $default);
$result = [
"data" => $data
];
echo G::json_encode($result);
break;
case "save":
$userUid = empty($_SESSION['USER_LOGGED']) ? RBAC::ADMIN_USER_UID : $_SESSION['USER_LOGGED'];
$user = new Users();
$user = $user->load($userUid);
$userId = empty($user['USR_ID']) ? null : $user['USR_ID'];
$id = empty($_REQUEST["UEA_ID"]) ? "" : $_REQUEST["UEA_ID"];
$name = empty($_REQUEST["UEA_NAME"]) ? "" : $_REQUEST["UEA_NAME"];
$attributeId = empty($_REQUEST["UEA_ATTRIBUTE_ID"]) ? "" : $_REQUEST["UEA_ATTRIBUTE_ID"];
$hidden = empty($_REQUEST["UEA_HIDDEN"]) ? "" : $_REQUEST["UEA_HIDDEN"];
$required = empty($_REQUEST["UEA_REQUIRED"]) ? "" : $_REQUEST["UEA_REQUIRED"];
$password = empty($_REQUEST["UEA_PASSWORD"]) ? "" : $_REQUEST["UEA_PASSWORD"];
$option = empty($_REQUEST["UEA_OPTION"]) ? "" : $_REQUEST["UEA_OPTION"];
$roles = empty($_REQUEST["UEA_ROLES"]) ? "" : $_REQUEST["UEA_ROLES"];
$owner = empty($_REQUEST["UEA_OWNER"]) ? $userId : $_REQUEST["UEA_OWNER"];
$dateCreate = empty($_REQUEST["UEA_DATE_CREATE"]) ? date("Y-m-d H:i:s") : $_REQUEST["UEA_DATE_CREATE"];
$userExtendedAttributes = UserExtendedAttributes::where('UEA_ID', '=', $id)
->get()
->first();
if (empty($userExtendedAttributes)) {
$userExtendedAttributes = new UserExtendedAttributes();
}
$userExtendedAttributes->UEA_NAME = trim($name);
$userExtendedAttributes->UEA_ATTRIBUTE_ID = trim($attributeId);
$userExtendedAttributes->UEA_HIDDEN = $hidden;
$userExtendedAttributes->UEA_REQUIRED = $required;
$userExtendedAttributes->UEA_PASSWORD = $password;
$userExtendedAttributes->UEA_OPTION = $option;
$userExtendedAttributes->UEA_ROLES = $roles;
$userExtendedAttributes->UEA_OWNER = $owner;
$userExtendedAttributes->UEA_DATE_CREATE = $dateCreate;
$userExtendedAttributes->save();
echo G::json_encode($userExtendedAttributes);
break;
case "delete":
$id = empty($_REQUEST["id"]) ? "" : $_REQUEST["id"];
if (!empty($id)) {
$id = UserExtendedAttributes::where('UEA_ID', '=', $id)
->delete();
}
echo G::json_encode($id);
break;
case "verifyName":
$id = empty($_REQUEST["id"]) ? "" : $_REQUEST["id"];
$name = empty($_REQUEST["name"]) ? "" : $_REQUEST["name"];
$userExtendedAttributes = UserExtendedAttributes::query()
->where('UEA_NAME', '=', trim($name))
->where('UEA_ID', '<>', $id)
->get()
->first();
$result = [
"valid" => empty($userExtendedAttributes),
"message" => empty($userExtendedAttributes) ? "" : G::loadTranslation("ID_NAME_EXISTS")
];
echo G::json_encode($result);
break;
case "verifyAttributeId":
$id = empty($_REQUEST["id"]) ? "" : $_REQUEST["id"];
$attributeId = empty($_REQUEST["attributeId"]) ? "" : $_REQUEST["attributeId"];
$userExtendedAttributes = UserExtendedAttributes::query()
->where('UEA_ATTRIBUTE_ID', '=', trim($attributeId))
->where('UEA_ID', '<>', $id)
->get()
->first();
$result = [
"valid" => empty($userExtendedAttributes),
"message" => empty($userExtendedAttributes) ? "" : G::loadTranslation("ID_EXIST")
];
echo G::json_encode($result);
break;
case "verifyAttributeUse":
$name = empty($_REQUEST["name"]) ? "" : $_REQUEST["name"];
$attributeId = empty($_REQUEST["attributeId"]) ? "" : $_REQUEST["attributeId"];
$user = User::query()
->where("USR_EXTENDED_ATTRIBUTES_DATA", "LIKE", "%\"{$attributeId}\"%")
->get()
->first();
$isUsed = false;
$message = "";
if (!empty($user)) {
$isUsed = true;
$message = G::loadTranslation("ID_THE_ATTRIBUTE_HAS_ALREADY_INFORMATION_STORED_FOR_USERS_PLEASE_CONFIRM_THE_DELETE", [$name]);
}
$result = [
"isUsed" => $isUsed,
"message" => $message
];
echo G::json_encode($result);
break;
default:
$conf = new Configurations();
$pageSize = $conf->getEnvSetting('casesListRowNumber');
$pageSize = empty($pageSize) ? 25 : $pageSize;
$lang = defined("SYS_LANG") ? SYS_LANG : "en";
$html = file_get_contents(PATH_HTML . "lib/userExtendedAttributes/index.html");
$html = str_replace("var pageSize=10;", "var pageSize={$pageSize};", $html);
$html = str_replace("translation.en.js", "translation.{$lang}.js", $html);
echo $html;
break;
}
} catch (Exception $e) {
$message = [
'MESSAGE' => $e->getMessage()
];
$G_PUBLISH->AddContent('xmlform', 'xmlform', 'login/showMessage', '', $message);
G::RenderPage('publish', 'blank');
}