Files
2026-04-15 15:24:12 +07:00

314 lines
11 KiB
PHP
Executable File

<?php
class Menu extends MY_Controller
{
function __construct()
{
parent::__construct();
$this->db_smartone = $this->load->database("onedev", true);
}
function change_password() {
$prm = $this->sys_input;
if ( ! $this->isLogin ) {
echo json_encode(
array("status"=>"ERR", "message"=> "Invalid Token")
);
exit;
}
$sm_password = md5($this->one_salt . $prm["old"] . $this->one_salt);
$userID = $this->sys_user["M_UserID"];
$query = $this->db_onedev->query("select * from m_user where M_UserID = ? and M_UserPassword = ?",
array($userID, $sm_password) );
if(!$query) {
echo json_encode(
array("status"=>"ERR", "message"=> "Invalid Password")
);
exit;
}
$rows = $query->result_array();
if(count($rows) == 0 ) {
echo json_encode(
array("status"=>"ERR", "message"=> "Invalid Password")
);
exit;
}
$new_password = md5($this->one_salt . $prm["new"] . $this->one_salt);
$query = $this->db_onedev->query("update m_user set M_UserPassword=? where M_UserID = ?",
array($new_password,$userID) );
if(!$query) {
echo json_encode(
array("status"=>"ERR", "message"=> "Invalid Password")
);
exit;
}
echo json_encode( array("status"=>"OK", "message"=>""));
}
function get_bread_crumb_v2() {
$prm = $this->sys_input;
/*
if ( ! $this->is_login ) {
echo json_encode(
array("status"=>"ERR", "message"=> "Invalid Token","data"=>$data)
);
}
*/
$xpath = parse_url($prm["xref"]);
$path = $xpath["path"];
if ( substr($path,-1) == "/" ) $path = substr($path,0, strlen($path) - 1);
$path = str_replace("/one-ui-lab/","",$path);
$path = str_replace("one-ui-lab/","",$path);
echo "path : $path \n";
$user_id = $this->sys_user['M_UserID'];
// get bread_crumb
$sql = "select fn_sys_breadcrumb(?,?) as breadcrumb";
$qry = $this->db_smartone->query($sql,array($path,$user_id));
$rows = $qry->result();
$breadcrumb = "";
$is_page_allowed = false;
$dashboard = "one-ui-lab/test/vuex/one-fo-verification";
if (count($rows) > 0 ) {
$breadcrumb = $rows[0]->breadcrumb;
if ($breadcrumb != "" ) $is_page_allowed = true;
}
$data = array(
"bread_crumb" => $breadcrumb,
"dashboard" => $dashboard,
"is_page_allowed" => $is_page_allowed
);
echo json_encode(
array("status"=>"OK", "data"=>$data)
);
}
function get_bread_crumb() {
$prm = $this->sys_input;
/*
if ( ! $this->is_login ) {
echo json_encode(
array("status"=>"ERR", "message"=> "Invalid Token","data"=>$data)
);
}
*/
$xpath = parse_url($prm["xref"]);
$path = $xpath["path"];
if ( substr($path,-1) == "/" ) $path = substr($path,0, strlen($path) - 1);
$path = str_replace("/one-ui-lab/","",$path);
$path = str_replace("one-ui-lab/","",$path);
$user_id = $this->sys_user['M_UserID'];
// get bread_crumb
$sql = "select fn_sys_breadcrumb(?,?) as breadcrumb";
$qry = $this->db_smartone->query($sql,array($path,$user_id));
//file_put_contents("/xtmp/fx-last_query","\n" . $this->db_smartone->last_query() );
$rows = $qry->result();
$breadcrumb = "";
$is_page_allowed = false;
$dashboard = "one-ui/test/vuex/one-fo-verification";
if (count($rows) > 0 ) {
$breadcrumb = $rows[0]->breadcrumb;
if ($breadcrumb != "" ) $is_page_allowed = true;
}
$data = array(
"bread_crumb" => $breadcrumb,
"dashboard" => $dashboard,
"is_page_allowed" => $is_page_allowed
);
$sql = "select * from m_branch where M_BranchIsDefault = 'Y' and M_BranchIsActive ='Y'";
$qry =$this->db_smartone->query($sql);
$branch = array();
if ($qry) {
$rows = $qry->result_array();
if (count($rows) > 0 ) {
$branch = $rows[0];
}
}
$data["branch"] = $branch;
echo json_encode(
array("status"=>"OK", "data"=>$data)
);
}
function get_menuxxxx()
{
$sql = "CALL sp_sys_menu_user('{$this->sys_user['M_UserID']}')";
// $query = $this->db_smartone->query($sql);
$index = 0;
$ResultSet = array();
/* execute multi query */
if (mysqli_multi_query($this->db_smartone->conn_id, $sql)) {
do {
if (false != $result = mysqli_store_result($this->db_smartone->conn_id)) {
$rowID = 0;
while ($row = $result->fetch_assoc()) {
$x = json_decode($row['x']);
foreach ($x as $k => $v)
{
if (!isset($ResultSet[$index]['p_'.$v->parent_id]))
$ResultSet[$index]['p_'.$v->parent_id] = [];
$ResultSet[$index]['p_'.$v->parent_id][] = $v;
}
// $ResultSet[$index] =
// $rowID++;
}
}
$index++;
} while (mysqli_next_result($this->db_smartone->conn_id));
}
echo json_encode(["status"=>"OK", "data"=>$ResultSet]);
}
function get_menu()
{
$prm = $this->sys_input;
$user_id = $this->sys_user['M_UserID'];
$xpath = $prm['path'];
$xpath = str_replace("/one-ui-lab/", "", $xpath);
$xpathx = str_replace("/one-ui-lab/", "", $xpath);
$last_char = substr($xpath , -1);
if($last_char == "/")
$xpath = substr($xpath, 0, -1);
$sql = "SELECT S_MenuID, S_MenuName, S_MenuUrl, S_MenuIcon,
S_MenuParentS_MenuID, S_MenuLevel, S_MenuIsParent,
S_MenuOrder
FROM s_privilege
JOIN m_user ON M_UserID = ? AND M_UserIsActive = 'Y' AND
M_UserM_UserGroupID = S_PrivilegeM_UserGroupID
JOIN s_menu ON S_PrivilegeS_MenuID = S_MenuID AND (S_MenuUrl = ? OR S_MenuUrl = ? )AND S_MenuIsActive = 'Y'
WHERE
S_PrivilegeIsActive = 'Y'";
$qry = $this->db->query($sql, [ $user_id , $xpath, $xpath.'/']);
if (!$qry) {
echo json_encode(["status" => "ERR", "message" => $this->db->error()]);
exit;
}
$selected_menu = $qry->result_array();
$menu_exist = count($selected_menu);
$parent_id = $selected_menu[0]['S_MenuParentS_MenuID'];
if($menu_exist == 0){
$sql = "SELECT M_UserGroupDashboard as url_x
FROM m_usergroup
JOIN m_user ON M_UserID = ? AND M_UserIsActive = 'Y' AND
M_UserM_UserGroupID = M_UserGroupID
WHERE
M_UserGroupIsActive = 'Y'";
$qry = $this->db->query($sql, [ $user_id]);
if (!$qry) {
echo json_encode(["status" => "ERR", "message" => $this->db->error()]);
exit;
}
$menu_redirect = $qry->row()->url_x;
echo json_encode(
array("status" => "ERRMENU", "message" => "Not Have Access", "menu" => $menu_redirect)
);
exit;
}
$sql = "SELECT S_MenuID, S_MenuName, S_MenuUrl, S_MenuIcon,
S_MenuParentS_MenuID, S_MenuLevel, S_MenuIsParent,
IFNULL(S_MenuFavoriteOrder, S_MenuOrder) as S_MenuOrder
FROM s_privilege
JOIN m_user ON M_UserID = ? AND M_UserIsActive = 'Y' AND
M_UserM_UserGroupID = S_PrivilegeM_UserGroupID
JOIN s_menu ON S_PrivilegeS_MenuID = S_MenuID AND S_MenuIsActive = 'Y' AND
S_MenuParentS_MenuID = ? AND ( S_MenuUrl <> '{$xpath}' AND S_MenuUrl <> '{$xpath}/' )
LEFT JOIN s_menu_favorite ON S_MenuID = S_MenuFavoriteS_MenuID AND
S_MenuFavoriteM_UserID = M_UserID
AND S_MenuFavoriteIsActive = 'Y'
WHERE
S_PrivilegeIsActive = 'Y'
LIMIT 6";
$qry = $this->db->query($sql, [ $user_id, $parent_id ]);
if (!$qry) {
echo json_encode(["status" => "ERR", "message" => $this->db->error()]);
exit;
}
//echo $this->db->last_query();
//exit;
$rows_favorite = $qry->result_array();
$id_favorite = array_column($rows_favorite, 'S_MenuID');
$id_favorite[] = $selected_menu[0]['S_MenuID'];
$id_favorite = implode(',', $id_favorite);
$sql = "SELECT S_MenuID, S_MenuName, S_MenuUrl, S_MenuIcon,
S_MenuParentS_MenuID, S_MenuLevel, S_MenuIsParent,
IFNULL(S_MenuFavoriteOrder, S_MenuOrder) as S_MenuOrder
FROM s_privilege
JOIN m_user ON M_UserID = ? AND M_UserIsActive = 'Y' AND
M_UserM_UserGroupID = S_PrivilegeM_UserGroupID
JOIN s_menu ON S_PrivilegeS_MenuID = S_MenuID AND S_MenuIsActive = 'Y' AND
S_MenuParentS_MenuID = ? AND S_MenuID NOT IN ($id_favorite)
LEFT JOIN s_menu_favorite ON S_MenuID = S_MenuFavoriteS_MenuID AND
S_MenuFavoriteM_UserID = M_UserID
AND S_MenuFavoriteIsActive = 'Y'
WHERE
S_PrivilegeIsActive = 'Y'
ORDER BY S_MenuOrder ASC
LIMIT 10";
$qry = $this->db->query($sql, [ $user_id, $parent_id ]);
if (!$qry) {
echo json_encode(["status" => "ERR", "message" => $this->db->error()]);
exit;
}
$rows_other_favorite = $qry->result_array();
$sql = "CALL sp_sys_menu_user({$this->sys_user['M_UserID']})";
// $query = $this->db_smartone->query($sql);
$index = 0;
$ResultSet = array();
/* execute multi query */
if (mysqli_multi_query($this->db_smartone->conn_id, $sql)) {
do {
$result = mysqli_store_result($this->db_smartone->conn_id);
if (false != $result) {
$rowID = 0;
while ($row = $result->fetch_assoc()) {
$x = json_decode($row['x']);
foreach ($x as $k => $v) {
if (!isset($ResultSet[$index]['p_' . $v->parent_id]))
$ResultSet[$index]['p_' . $v->parent_id] = [];
$ResultSet[$index]['p_' . $v->parent_id][] = $v;
}
// $ResultSet[$index] =
// $rowID++;
}
} else {
echo mysqli_error($this->db_smartone->conn_id);
}
$index++;
} while (mysqli_next_result($this->db_smartone->conn_id));
} else {
echo mysqli_error($this->db_smartone->conn_id);
}
$dts_menu = array(
'selected_menu' => $selected_menu[0],
'rows_favorite' => $rows_favorite,
'rows_other_favorite' => $rows_other_favorite
);
echo json_encode(["status" => "OK", "data" => $ResultSet, 'menu' => $dts_menu, 'user_id' => $user_id]);
}
}
?>