delete( 'pp_users', [ 'id' => (int)$user_id ] ); } public static function user_details( $user_id ) { global $mdb; return $mdb -> get( 'pp_users', '*', [ 'id' => (int)$user_id ] ); } public static function user_privileges( $user_id ) { global $mdb; return $mdb -> select( 'pp_users_privileges', '*', ['id_user' => (int)$user_id]); } public static function user_save( $user_id, $login, $status, $active_to, $password, $password_re, $admin, $privileges ) { global $mdb, $lang; $mdb -> delete( 'pp_users_privileges', [ 'id_user' => (int) $user_id ] ); if ( !$user_id ) { if ( strlen( $password ) < 5 ) return $response = [ 'status' => 'error', 'msg' => 'Podane hasło jest zbyt krótkie.' ]; if ( $password != $password_re ) return $response = [ 'status' => 'error', 'msg' => 'Podane hasła są różne' ]; if ( $mdb -> insert( 'pp_users', [ 'login' => $login, 'status' => $status == 'on' ? 1 : 0, 'active_to' => $active_to == '' ? NULL : $active_to, 'admin' => $admin, 'password' => md5( $password ), ] ) ) $id_user = $mdb -> get( 'pp_users', 'id', [ 'ORDER' => [ 'id' => 'DESC' ] ] ); if ( is_array( $privileges ) ) { foreach ( $privileges as $pri ) { $mdb -> insert( 'pp_users_privileges', [ 'name' => $pri, 'id_user' => $id_user ] ); } } else { $mdb -> insert( 'pp_users_privileges', [ 'name' => $privileges, 'id_user' => $id_user ] ); } return $response = [ 'status' => 'ok', 'msg' => 'Użytkownik został zapisany.' ]; } else { if ( $password and strlen( $password ) < 5 ) return $response = [ 'status' => 'error', 'msg' => 'Podane hasło jest zbyt krótkie.' ]; if ( $password and $password != $password_re ) return $response = [ 'status' => 'error', 'msg' => 'Podane hasła są różne' ]; if ( $password ) $mdb -> update( 'pp_users', [ 'password' => md5( $password ) ], [ 'id' => (int) $user_id ] ); $mdb -> update( 'pp_users', [ 'login' => $login, 'admin' => $admin, 'status' => $status == 'on' ? 1 : 0, 'active_to' => $active_to == '' ? NULL : $active_to, 'error_logged_count' => 0 ], [ 'id' => (int) $user_id ] ); if ( is_array( $privileges ) ) { foreach ( $privileges as $pri ) { $mdb -> insert( 'pp_users_privileges', [ 'name' => $pri, 'id_user' => $user_id ] ); } } else { $mdb -> insert( 'pp_users_privileges', [ 'name' => $privileges, 'id_user' => $user_id ] ); } return $response = [ 'status' => 'ok', 'msg' => 'Uzytkownik został zapisany.' ]; } \S::delete_cache(); } public static function check_login( $login, $user_id ) { global $mdb; if ( $mdb -> get( 'pp_users', 'login', [ 'AND' => [ 'login' => $login, 'id[!]' => (int)$user_id ] ] ) ) return $response = [ 'status' => 'error', 'msg' => 'Podany login jest już zajęty.' ]; return $response = [ 'status' => 'ok' ]; } public static function logon( $login, $password ) { global $mdb; if ( !$mdb -> get( 'pp_users', '*', [ 'login' => $login ] ) ) return 0; if ( !$mdb -> get( 'pp_users', '*', [ 'AND' => [ 'login' => $login, 'status' => 1, 'error_logged_count[<]' => 5 ] ] ) ) return -1; if ( $mdb -> get( 'pp_users', '*', [ 'AND' => [ 'login' => $login, 'status' => 1, 'password' => md5( $password ), 'OR' => [ 'active_to[>=]' => date('Y-m-d'), 'active_to' => null ] ] ] ) ) { $mdb -> update( 'pp_users', [ 'last_logged' => date( 'Y-m-d H:i:s' ), 'error_logged_count' => 0 ], [ 'login' => $login ] ); return 1; } else { $mdb -> update( 'pp_users', [ 'last_error_logged' => date( 'Y-m-d H:i:s' ), 'error_logged_count[+]' => 1 ], [ 'login' => $login ] ); if ( $mdb -> get( 'pp_users', 'error_logged_count', [ 'login' => $login ] ) >= 5 ) { $mdb -> update( 'pp_users', [ 'status' => 0 ], [ 'login' => $login ] ); return -1; } } return 0; } public static function details( $login ) { global $mdb; return $mdb -> get( 'pp_users', '*', [ 'login' => $login ] ); } public static function check_privileges( $name, $user_id ) { global $mdb; if ( $user_id == 1 ) return true; else { if ( !$privilages = \Cache::fetch( "check_privileges:$user_id:$name-tmp" ) ) { $privilages = $mdb -> count( 'pp_users_privileges', [ 'AND' => ['name' => $name, 'id_user' => (int)$user_id ]]); \Cache::store( "check_privileges:$user_id:$name", $privilages ); } return $privilages; } } } ?>