Skip to content

class usersystem

Oliver edited this page Apr 26, 2020 · 3 revisions

www/includes/usersystem.inc.php


usersystem

Verschlüsselungs Möglichkeiten: CRYPT_STD_DES - Standard DES-Schlüssel mit 2-Zeichen Salt CRYPT_EXT_DES - Erweiterter DES-Schlüssel mit einem 9-Zeichen Salt CRYPT_MD5 - MD5-Schlüssel mit 12-Zeichen Salt, beginnend mit $1$ CRYPT_BLOWFISH - Erweiterter DES-Schlüssel, 16-Zeichen Salt, beginnend mit $2$

User Typen: 1 = Normaler User ##################### 0 isch nöd so cool wil wenns nöd gsetzt isch chunt jo au 0 2 = [z]member und schöne 0 = nicht eingeloggt ##################### Aber Weber: wenn typ = 2, gits $user jo gar nöd?! -> doch s'usersystem isch jo immer verfügbar verfügbar über $user->typ

Package

zorg\Usersystem

author

  • [z]biko
  • IneX

version

  • 5.0

since

  • 1.0 class added
  • 2.0 additional methods added
  • 3.0 code optimizations and new methods
  • 4.0 10.12.2018 major refactorings & migrated methods from profil.php as part of the usersystem()-class
  • 5.0 26.12.2018 Bug #769: 'usertyp'-Spalte entspricht neu einer Usergruppe aus dem Table 'usergroups' (quasi als Foreign-Key)

Overview

Public Properties

default_activities_allow() | default_addle() | default_chess() | default_clan_tag() | default_firstname() | default_forum_boards() | default_forum_boards_unread() | default_forummaxthread() | default_irc_username() | default_lastname() | default_menulayout() | default_mymenu() | default_notifications() | default_show_comments() | default_sql_tracker() | default_telegram_chat_id() | default_usertype() | default_vereinsmitglied() | default_z_gremium() | default_zorger() | error_message() | field_activities_allow() | field_activity() | field_addle() | field_ausgesperrt_bis() | field_bild() | field_chess() | field_clantag() | field_currentlogin() | field_email() | field_firstname() | field_from_mobile() | field_irc() | field_last_ip() | field_lastlogin() | field_lastname() | field_maxdepth() | field_menulayout() | field_mymenu() | field_notifications() | field_regcode() | field_regdate() | field_sessionid() | field_show_comments() | field_sql_tracker() | field_telegram() | field_user_active() | field_username() | field_userpw() | field_usertyp() | field_vereinsmitglied() | field_z_gremium() | field_zorger() | table_name() | use_cookie() | use_current_login() | use_online_list() | use_registration_code() | use_user_picture() |

Constants

No constants found

Public Methods

__construct() | activate_user() | cacheGravatarImages() | checkimage() | create_newuser() | exec_aussperren() | exec_changeprofile() | exec_newpassword() | exec_uploadimage() | exportGravatarImages() | get_and_create_user_files_dir() | get_gravatar() | getFormFieldUserlist() deprecated | id2mailuser() deprecated | id2user() | id2useremail() | invalidate_session() | is_lockedout() | is_loggedin() | ismobile() | link_userpage() deprecated | logerror() | login() | logout() | new_pass() | online_users() | password_gen() | quote() | regcode_gen() | set_page_style() | user2id() | userHasTelegram() | userImage() | userpagelink() deprecated | userpic() deprecated | userprofile_link() |

Properties

default_activities_allow

public $default_activities_allow

default_addle

public $default_addle

default_chess

public $default_chess

default_clan_tag

Default Userprofile Settings

public $default_clan_tag

Tags
  • used-by: usersystem::exec_changeprofile()

default_firstname

public $default_firstname

default_forum_boards

public $default_forum_boards

default_forum_boards_unread

public $default_forum_boards_unread

default_forummaxthread

public $default_forummaxthread

default_irc_username

public $default_irc_username

default_lastname

public $default_lastname

default_menulayout

public $default_menulayout

default_mymenu

public $default_mymenu

default_notifications

public $default_notifications

default_show_comments

public $default_show_comments

default_sql_tracker

public $default_sql_tracker

default_telegram_chat_id

public $default_telegram_chat_id

default_usertype

public $default_usertype

default_vereinsmitglied

public $default_vereinsmitglied

default_z_gremium

public $default_z_gremium

default_zorger

public $default_zorger

error_message

Object Vars

public $error_message : string

Array: (Optional) Error-Message, see: self::activate_user()

field_activities_allow

Var to map User Fields

public $field_activities_allow

field_activity

public $field_activity

field_addle

public $field_addle

field_ausgesperrt_bis

public $field_ausgesperrt_bis

field_bild

public $field_bild

field_chess

public $field_chess

field_clantag

public $field_clantag

field_currentlogin

public $field_currentlogin

field_email

public $field_email

field_firstname

public $field_firstname

field_from_mobile

public $field_from_mobile

field_irc

public $field_irc

field_last_ip

public $field_last_ip

field_lastlogin

public $field_lastlogin

field_lastname

public $field_lastname

field_maxdepth

public $field_maxdepth

field_menulayout

public $field_menulayout

field_mymenu

public $field_mymenu

field_notifications

public $field_notifications

field_regcode

public $field_regcode

field_regdate

public $field_regdate

field_sessionid

public $field_sessionid

field_show_comments

public $field_show_comments

field_sql_tracker

public $field_sql_tracker

field_telegram

public $field_telegram

field_user_active

public $field_user_active

field_username

public $field_username

field_userpw

public $field_userpw

field_usertyp

public $field_usertyp

field_vereinsmitglied

public $field_vereinsmitglied

field_z_gremium

public $field_z_gremium

field_zorger

public $field_zorger

table_name

public $table_name

use_cookie

Usersystem Configs

public $use_cookie : bool

Array: Auto-einloggen mit Cookie aktivieren

use_current_login

public $use_current_login

use_online_list

public $use_online_list

use_registration_code

public $use_registration_code

use_user_picture

public $use_user_picture

Methods

__construct()

Klassen Konstruktor

public __construct() : object

See also

Tags
  • TODO: Will be deprecated in PHP7! -> http://php.net/manual/de/migration70.deprecated.php
  • author: [z]biko
  • author: IneX
  • version: 4.1
  • since: 1.0 method added
  • since: 2.0 20.11.2018 IneX code & query optimizations, updated Cookie & Session info taken from config.inc.php
  • since: 3.0 27.11.2018 IneX refactored User-Object instantiation if $_SESSION[user_id] is missing but Session-Cookie is there
  • since: 4.0 10.12.2018 IneX adjusted reading the Autologin-Cookies (cannot be dependent on the Session-Cookie, doh!)
  • since: 4.1 02.11.2019 IneX fixed ENUM("0")-Values from User DB-Record wrongfully set=true instead of =false

activate_user()

User aktivieren Aktiviert einen Useraccount mittels Regcode

public activate_user(string $regcode) : bool

Tags
  • version: 2.0
  • since: 1.0 Method added
  • since: 2.0 07.12.2019 IneX Fixed $regcode check and response for profil.php
  • var: Array String to store any Error message for later output
  • global: object $db Globales Class-Object mit allen MySQL-Methoden

cacheGravatarImages()

Fetch Gravatar images for Userlist

public cacheGravatarImages(int|string $userScope) : bool

Tags
  • author: IneX
  • version: 1.0
  • since: 1.0 12.07.2018 IneX function added
  • global: object $db Globales Class-Object mit allen MySQL-Methoden

checkimage()

Userpic prüfen

Überprüft ob ein Bild zum User existiert

public checkimage( $userid) : string|bool

Uses \USER_IMGPATH \USER_IMGEXTENSION

Tags
  • author: [z]biko
  • author: IneX
  • version: 3.1
  • since: 1.0 Method added
  • since: 2.0 11.07.2018 IneX added check for locally cached Gravatar, replaced 'file_exists' with 'stream_resolve_include_path'
  • since: 3.0 16.07.2018 IneX Method now returns path to userpic (or queried Gravatar result) as string, instead of true.
  • since: 3.1 18.04.2020 IneX replaced 'stream_resolve_include_path' with more performant 'is_file' (https://stackoverflow.com/a/19589043/5750030)

create_newuser()

Benutzer erstellen

Erstellt einen Neuen Benutzer

public create_newuser(string $username, string $pw, string $pw2, string $email) : string

Uses \crypt_pw() \t()

Tags
  • version: 3.0
  • since: 1.0 method added
  • since: 2.0 replaced messages with Translation-String solution t()
  • since: 3.0 04.12.2018 removed IMAP-code, code & query optimizations
  • global: object $db Globales Class-Object mit allen MySQL-Methoden

exec_aussperren()

User aussperren bis zu einem gewissen Zeitpunkt

public exec_aussperren(int $user_id, array $date_array) : bool

See also

Tags
  • author: IneX
  • version: 1.0
  • since: 1.0 11.11.2018 method added, code adapted from /actions/profil.php
  • var:
  • global: object $db Globales Class-Object mit allen MySQL-Methoden
  • global: array $_geaechtet Globales Array mit allen geächteten Usern

exec_changeprofile()

Userprofil aktualisieren

Execute a Profile info & settings update for a User

public exec_changeprofile(int $user_id, array $data_array) : array

Uses \check_email()

Tags
  • author: [z]biko
  • author: IneX
  • version: 3.0
  • since: 1.0 function added
  • since: 2.0 02.10.2018 function improved to handle $_POST data dynamically
  • since: 3.0 11.11.2018 function moved to usersystem()-Class
  • var:
  • global: object $db Globales Class-Object mit allen MySQL-Methoden
  • global: object $user Globales Class-Object mit den User-Methoden & Variablen
  • global: array $_geaechtet Globales Array mit allen User-IDs welche einen Force-Logout haben

exec_newpassword()

Password change

Execute a password change for a User

public exec_newpassword(int $user_id, string $old_pass, string $new_pass, string $new_pass2) : array

Uses \crypt_pw()

Tags
  • author: [z]biko
  • author: IneX
  • version: 3.0
  • since: 1.0 function added
  • since: 2.0 03.10.2018 function improved
  • since: 3.0 11.11.2018 function moved to usersystem()-Class
  • global: object $db Globales Class-Object mit allen MySQL-Methoden
  • global: object $user Globales Class-Object mit den User-Methoden & Variablen

exec_uploadimage()

Userpic hochladen

public exec_uploadimage(int $user_id, array|resource $new_pic_files_array) : array

Uses \createPic()

Tags
  • TODO: move this function to the usersystem()-Class
  • author: [z]biko
  • author: IneX
  • version: 4.0
  • since: 1.0 function added
  • since: 2.0 Userpic Archivierung eingebaut / IneX
  • since: 3.0 03.10.2018 function fixed and modernized
  • since: 4.0 11.11.2018 function moved to usersystem()-Class
  • global: object $db Globales Class-Object mit allen MySQL-Methoden

exportGravatarImages()

Fetch & save Gravatar Userpics to local Filecache

Downloads & stores Gravatar images locally using cURL, so we don't query gravatar.com all the time

public exportGravatarImages(array $userids) : bool

See also

Tags
  • author: IneX
  • version: 2.0
  • since: 1.0 11.07.2018 IneX function added
  • since: 2.0 13.08.2018 IneX added md5 file hash check to compare files before downloading
  • TODO: wenn die self::id2useremail() Funktion gefixt ist (nicht nur eine response wenn E-Mail Notifications = true), dann Query ersetzen mit Methode
  • global: object $db Globales Class-Object mit allen MySQL-Methoden

get_and_create_user_files_dir()

User specific /data/files/ Check if User's /files/{$user_id}/ Directory exists, if not, create it

public get_and_create_user_files_dir(mixed $user_id) : mixed

Tags
  • author: IneX
  • version: 1.0
  • since: 1.0 27.01.2016 IneX method added

get_gravatar()

Gravatar Userpic

Get either a Gravatar URL or complete image tag for a specified email address.

public get_gravatar(string $email, string $s = 150, string $d = '404', string $r = 'x') : string

Uses \SITE_PROTOCOL

Tags
  • source:
  • author: IneX
  • version: 3.0
  • since: 1.0 IneX 24.07.2014
  • since: 2.0 11.01.2017 IneX Fixed Gravatar-URL to https using SITE_PROTOCOL
  • since: 3.0 16.07.2018 IneX Removed possibility to return img-Tag

getFormFieldUserlist()

Retrieve list of Users for Notification-Messages in Comments or Personal Messages

public getFormFieldUserlist(mixed $name, mixed $size, mixed $users_selected, mixed $tabindex = 10) : mixed deprecated

Tags
  • author: IneX
  • date: 26.12.2017
  • TODO: remove this function 'getFormFieldUserlist()' & make sure to remove all references in corresponding files pointing to it

id2mailuser()

ID zu Mail_Username

Wandelt eine User ID in IMAP-Mail_Username um

public id2mailuser(int $id) : string deprecated

id2user()

Convert ID to Username/Userpic

Konvertiert eine ID zum entsprechenden Username (wahlweise inkl. Clantag oder ohne), oder dem HTML-Code zur Anzeige des Userpics

public id2user(int $id, bool $clantag = FALSE, bool $pic = FALSE) : string|bool

Uses \self::userprofile_link()

Tags
  • author: IneX
  • version: 5.0
  • since: 1.0
  • since: 2.0
  • since: 3.0 Method now really only resolves an ID to a Username, redirects other features
  • since: 4.0 changed output to new function usersystem::userprofile_link()
  • since: 5.0 added better validation for $id & changed return to 'false' if $id doesn't exist
  • TODO: 20.07.2018 Find out & fix issue with Query failing on id=$id instead of id="$id"...
  • global: object $db Globales Class-Object mit allen MySQL-Methoden

id2useremail()

ID zu User E-Mail

Gibt aufgrund einer User ID dessen E-Mailadresse zurück.

public id2useremail(int $id) : string|bool

Uses \check_email()

Tags
  • author: IneX
  • version: 4.1
  • since: 1.0 17.03.2018 IneX method added
  • since: 2.0 added additional check for "email_notification=TRUE"
  • since: 3.0 updated method return values, added query try-catch
  • since: 4.0 removed check for "email_notification=TRUE" due to new Notifications() Class
  • since: 4.1 05.12.2019 IneX removed unneccessary try-catch

invalidate_session()

Session & Cookies invalidieren

public invalidate_session() : void static

Tags
  • author: IneX
  • version: 1.0
  • since: 1.0 28.11.2018 IneX method added

is_lockedout()

Überprüfen ob User ausgesperrt ist

public is_lockedout(int $ausgesperrt_bis_timestamp) : bool

Tags
  • author: IneX
  • version: 1.0
  • since: 1.0 14.11.2018 method added
  • var:
  • global: array $_geaechtet Globales Array mit allen geächteten Usern

is_loggedin()

Überprüft ob der User eingeloggt ist

public is_loggedin() : bool

Tags
  • author: IneX
  • version: 2.0
  • since: 1.0 method added
  • since: 2.0 14.11.2018 method renamed from "islogged_in" => "is_loggedin"

ismobile()

User Mobile Agent

Prüft eine User-ID, ob der User von einem Mobilen Browser zugreift

public ismobile( $id) : string

link_userpage()

Link zum Userprofil

Gibt eine User ID als link zur userpage aus

public link_userpage(int $user_id, bool $pic = FALSE) : string deprecated >2.0 Ersetzt mit usersystem::userprofile_link()

Uses \self::userprofile_link()

Tags
  • author: [z]milamber
  • author: IneX
  • version: 2.0
  • since: 1.0 initial version
  • since: 2.0 changed output to new function usersystem::userprofile_link()

logerror()

Error loggen

Speichert ein Fehler des Users in der DB ab.

public logerror( $do, $user_id) : void

Tags
  • TODO: Refactor this functionality & solve this differently. Needs updateing of usersystem::login()

login()

User Login

Erstellt eine Session (login)

public login(string $username, string $password = null, bool $use_cookie = false) : void|string

See also

Tags
  • author: [z]biko
  • author: IneX
  • version: 4.1
  • since: 1.0 method added
  • since: 2.0 12.11.2018 code & query optimizations
  • since: 3.0 21.11.2018 Fixed redirect bei Login auf jeweils aktuelle Seite, nicht immer Home
  • since: 4.0 10.12.2018 Improved Cookie-Settings (secure and stuff)
  • since: 4.1 21.12.2018 Fixed redirect auf ursprüngliche Seite bei Cookie-Login ohne Session
  • var:

logout()

User Logout

Logt einen User aus!

public logout() : void static

See also

  • Uses \self::invalidate_session()
Tags
  • author: [z]biko
  • author: IneX
  • version: 3.0
  • since: 1.0 method added
  • since: 2.0 fixed "If you put a date too far in the past, IE will bark and igores it, i.e. the value will not be removed"
  • since: 3.0 21.11.2018 Fixed redirect bei Logout auf jeweils aktuelle Seite, nicht immer Home

new_pass()

Neues Passwort Generiert ein Passwort für einen bestehenden User

public new_pass(string $email) : string

Uses \usersystem::password_gen() \crypt_pw() \ZORG_EMAIL

Tags
  • version: 4.1
  • since: 1.0 method added
  • since: 2.0 global strings added
  • since: 3.0 17.10.2018 Fixed Bug #763: Passwort vergessen funktioniert nicht
  • since: 4.0 21.10.2018 Code & DB-Query improvements
  • since: 4.1 04.01.2019 Fixed handling $db->update() result, changed Error messages, added debugging-output on DEV
  • global: object $db Globales Class-Object mit allen MySQL-Methoden

online_users()

Online Users Gibt Online Users als HTML aus

public online_users(bool $pic = FALSE) : string

Uses \USER_TIMEOUT

Tags
  • version: 2.1
  • since: 1.0 Method added
  • since: 2.0 IneX Code optimizations
  • since: 2.1 17.04.2020 IneX SQL Slow-Query optimization
  • TODO: HTML can be returned using new function usersystem::userpage_link()
  • global: object $db Globales Class-Object mit allen MySQL-Methoden

password_gen()

Passwort-Generator

Erstellt ein zufälliges Passwort

public password_gen( $length = 12) : string

Tags
  • author: [z]biko
  • author: IneX
  • version: 2.0
  • since: 1.0 method added
  • since: 2.0 04.01.2019 updated mechanism and form of generated passwords, not using $username string anymore

quote()

User Quote (?)

Gibt ein random Quote zurück. Falls mit user_id wird es ein quote dieses users sein

public quote( $user_id) : string

Tags
  • TODO: @[z]milamber: Warum ist dies nicht im quotes.inc.php? Und wir brauchen das nicht mal?!

regcode_gen()

Registrationscode generieren

Erstellt einen Registrationscode für einen Benutzer

public regcode_gen( $username) : string

set_page_style()

Speichert ob User zorg oder zooomclan Layout haben will

public set_page_style(int $user_id, bool $zorg = TRUE, bool $zooomclan = FALSE) : mixed

user2id()

Get User ID based on Username

Konvertiert einen Username zur dazugehörigen User ID

public user2id( $username) : int

Tags
  • version: 2.0
  • since: 1.0 initial function
  • since: 2.0 optimized sql-query
  • author: IneX
  • global: object $db Globales Class-Object mit allen MySQL-Methoden

userHasTelegram()

Get User Telegram Chat-ID

Prüft ob der User-ID einen Telegram Messenger Chat-ID eingetragen hat -> wenn ja, wird die Telegram Chat-ID zurückgegeben

public userHasTelegram(int $user_id) : int

Tags
  • author: IneX
  • version: 1.0
  • since: 1.0 22.01.2017 IneX method added

userImage()

Userpic Pfad

Gibt den Pfad zum Bild des Users. Falls kein Bild: none.jpg

public userImage(int $userid, bool $large = false) : string

Uses \USER_IMGPATH \USER_IMGPATH_PUBLIC \USER_IMGSIZE_SMALL \USER_IMGSIZE_LARGE \self::checkimage() \self::get_gravatar()

Tags
  • version: 2.0
  • since: 1.0 Method added
  • since: 2.0 IneX Check & load cached Gravatar, optimized if-else

userpagelink()

Link zu einem Userprofil

public userpagelink(mixed $userid, mixed $clantag, mixed $username) : mixed deprecated Ersetzt mit usersystem::userprofile_link()

Uses \self::userpage_link()

Tags
  • TODO: wird diese Methode usersystem::userpagelink() noch benötigt irgendwo? Sonst: raus!

userpic()

Userpic (klein) ausgeben

public userpic(int $id, bool $displayName = FALSE) : string deprecated

Uses \self::userprofile_link()

Tags
  • author: IneX
  • date: 02.10.2009
  • version: 2.0
  • since: 1.0 initial function
  • since: 2.0 changed output to new function usersystem::userprofile_link()
  • TODO: there is no $clantag passed to this function?!
  • global: object $db Globales Class-Object mit allen MySQL-Methoden
  • global: object $user Globales Class-Object mit den User-Methoden & Variablen
  • global: object $smarty Globales Class-Object mit allen Smarty-Methoden
  • static: array $_users

userprofile_link()

Show Userprofile for a User ID

Gibt eine User ID als Username aus - mit diversen Darstellungsmöglichkeiten:

  • Username: ja/nein?
  • Clantag im Username: ja/nein?
  • Userpic: ja/nein?
  • Verlinkung auf Userprofil: ja/nein?

public userprofile_link(int $userid, array $params) : string

See also

Tags
  • author: IneX
  • version: 1.0
  • since: 1.0 05.07.2018 IneX initial version (output from Smarty-Template)
  • global: object $smarty Globales Class-Object mit allen Smarty-Methoden

\ » Classes » usersystem

Clone this wiki locally