You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							119 lines
						
					
					
						
							4.4 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							119 lines
						
					
					
						
							4.4 KiB
						
					
					
				
								<?php
							 | 
						|
								require_once(MO_LIB_DIR . '/DBAction.class.php');
							 | 
						|
								
							 | 
						|
								class addAction extends Action {
							 | 
						|
								
							 | 
						|
									public function getDefaultView() {
							 | 
						|
								        $db = DBAction::getInstance();
							 | 
						|
								        $request = $this->getContext()->getRequest();
							 | 
						|
								        // 查询模块表(模块名称、模块标识、模块描述)
							 | 
						|
								        $sql = "select * from lkt_core_menu where s_id = 0 order by sort,id";
							 | 
						|
								        $r = $db->select($sql);
							 | 
						|
								        if($r){
							 | 
						|
								            foreach ($r as $k =>$v){
							 | 
						|
								                $id_1 = $v->id;
							 | 
						|
								                // 根据上级id,查询下级信息
							 | 
						|
								                $sql = "select * from lkt_core_menu where s_id = '$id_1' order by sort,id";
							 | 
						|
								                $r_1 = $db->select($sql);
							 | 
						|
								                if($r_1){
							 | 
						|
								                    foreach ($r_1 as $ke => $va){
							 | 
						|
								                        $id_2 = $va->id;
							 | 
						|
								                        // 根据上级id,查询下级信息
							 | 
						|
								                        $sql = "select * from lkt_core_menu where s_id = '$id_2' order by sort,id";
							 | 
						|
								                        $r_2 = $db->select($sql);
							 | 
						|
								                        if($r_2){
							 | 
						|
								                            foreach ($r_2 as $key => $val){
							 | 
						|
								                                $id_3 = $val->id;
							 | 
						|
								                                // 根据上级id,查询下级信息
							 | 
						|
								                                $sql = "select * from lkt_core_menu where s_id = '$id_3' order by sort,id";
							 | 
						|
								                                $r_3 = $db->select($sql);
							 | 
						|
								                                $val->res = $r_3;
							 | 
						|
								
							 | 
						|
								                            }
							 | 
						|
								                            $va->res = $r_2;
							 | 
						|
								                        }
							 | 
						|
								                    }
							 | 
						|
								                    $v->res = $r_1;
							 | 
						|
								                }
							 | 
						|
								            }
							 | 
						|
								        }
							 | 
						|
								        $request->setAttribute("list",$r);
							 | 
						|
								
							 | 
						|
								        return View :: INPUT;
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									public function execute(){
							 | 
						|
										$db = DBAction::getInstance();
							 | 
						|
										$request = $this->getContext()->getRequest();
							 | 
						|
								        $admin_id = $this->getContext()->getStorage()->read('admin_id');
							 | 
						|
								
							 | 
						|
								        // 接收数据 
							 | 
						|
								        $name = addslashes(trim($request->getParameter('name'))); // 角色
							 | 
						|
								        $permissions = $request->getParameter('permission'); // 权限
							 | 
						|
								        if($name == ''){
							 | 
						|
								            header("Content-type:text/html;charset=utf-8");
							 | 
						|
								            echo "<script type='text/javascript'>" .
							 | 
						|
								                "alert('角色不能为空!');" .
							 | 
						|
								                "</script>";
							 | 
						|
								            return $this->getDefaultView();
							 | 
						|
								        }else{
							 | 
						|
								            $sql = "select id from lkt_role where name = '$name'";
							 | 
						|
								            $r = $db->select($sql);
							 | 
						|
								            if($r){
							 | 
						|
								                header("Content-type:text/html;charset=utf-8");
							 | 
						|
								                echo "<script type='text/javascript'>" .
							 | 
						|
								                    "alert('角色已经存在!');" .
							 | 
						|
								                    "</script>";
							 | 
						|
								                return $this->getDefaultView();
							 | 
						|
								            }
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        /* 避免选择中间一级,最上面一级没被选中 */
							 | 
						|
								        $res = [];
							 | 
						|
								        foreach ($permissions as $a => $b){
							 | 
						|
								            $rew = substr($b,strpos($b,'/')+1); // 获取第一个/后面的内容
							 | 
						|
								            $res[] = substr($rew,0,strpos($rew, '/')); // 获取第一个/ 前面的内容(得到name值)
							 | 
						|
								        }
							 | 
						|
								        $list = [];
							 | 
						|
								        $list1 = array_unique($res); // 去重复
							 | 
						|
								        foreach ($list1 as $c => $d){ // 循环去空值
							 | 
						|
								            if($d != ''){
							 | 
						|
								                $list[] = $d;
							 | 
						|
								            }
							 | 
						|
								        }
							 | 
						|
								        foreach ($list as $e => $f){
							 | 
						|
								            $permissions[] = '1/' . $f; // 拼接最上面一级权限
							 | 
						|
								        }
							 | 
						|
								        $permissions = array_unique($permissions); // 去重复
							 | 
						|
								        $permissions = serialize($permissions); // 转序列化
							 | 
						|
								        // 添加一条数据
							 | 
						|
								        $sql = "insert into lkt_role(name,permission,add_date)values('$name','$permissions',CURRENT_TIMESTAMP)";
							 | 
						|
								        $r = $db->insert($sql);
							 | 
						|
								        if($r == -1){
							 | 
						|
								            $db->admin_record($admin_id,' 添加角色失败 ',1);
							 | 
						|
								
							 | 
						|
								            header("Content-type:text/html;charset=utf-8");
							 | 
						|
								            echo "<script type='text/javascript'>" .
							 | 
						|
								                "alert('未知原因,添加失败!');" .
							 | 
						|
								                "</script>";
							 | 
						|
								            return $this->getDefaultView();
							 | 
						|
								        }else{
							 | 
						|
								            $db->admin_record($admin_id,' 添加角色 '.$name,1);
							 | 
						|
								
							 | 
						|
								            header("Content-type:text/html;charset=utf-8");
							 | 
						|
								            echo "<script type='text/javascript'>" .
							 | 
						|
								                "alert('添加成功!');" .
							 | 
						|
								                "location.href='index.php?module=role';</script>";
							 | 
						|
								            return $this->getDefaultView();
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
									    return;
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									public function getRequestMethods(){
							 | 
						|
										return Request :: POST;
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								?>
							 |