getRow ( 'CALL visit_register (#, #, #, #, #, #, #, #, #)', [ nullIf ($_COOKIE, 'hedera_visit') ,nullIf ($browser, 'platform') ,nullIf ($browser, 'browser') ,nullIf ($browser, 'version') ,nullIf ($browser, 'javascript') ,nullIf ($browser, 'cookies') ,isset ($agent) ? $agent : NULL ,isset ($ip) && $ip ? $ip : NULL ,nullIf ($_SERVER, 'HTTP_REFERER') ] ); if (isset ($row['access'])) { setcookie ('hedera_visit', $row['visit'], time () + 31536000); // 1 Year $_SESSION['access'] = $row['access']; } else $_SESSION['skipVisit'] = TRUE; } /** * Opens the system database connection. **/ static function sysInit () { global $conf; if (self::$sysConn) return; self::$sysConn = new Conn (); self::$sysConn->open ( 'p:'. $conf['db']['host'] ,$conf['db']['user'] ,base64_decode ($conf['db']['pass']) ,$conf['db']['schema'] ); } /** * Obtains the version of the library. **/ static function getVersion () { return (int) filemtime (__FILE__); } static function login () { global $conf; $wasLoged = Auth::isLogged (); $useCookies = TRUE; $success = TRUE; if (isset ($_GET['guest'])) { $row = self::$sysConn->getRow ( 'SELECT guest_user, guest_pass FROM config'); if ($row) { $_POST['user'] = $row['guest_user']; $_POST['password'] = base64_decode ($row['guest_pass']); $useCookies = FALSE; } } try { Auth::getCredentials (); self::$conn = new Conn (); self::$conn->open ( $conf['db']['host'] ,Auth::getUser () ,Auth::getPassword () ,$conf['db']['schema'] ); self::$conn->query ('CALL user_session_start (#)', [session_id()]); Auth::login ($useCookies); } catch (\Exception $e) { self::$conn = NULL; $success = FALSE; } // Registering the user access if ($success && !$wasLoged) unset ($_SESSION['visitUser']); if (isset ($_SESSION['access']) && !isset ($_SESSION['visitUser'])) { self::sysInit (); $_SESSION['visitUser'] = self::$sysConn->getValue ( 'CALL visit_user_new (#, #, #)', [ $_SESSION['access'] ,nullIf ($_SESSION, 'visitUser') ,session_id () ] ); if (!isset ($_SESSION['visitUnknown']) && !$success) $_SESSION['visitUnknown'] = $_SESSION['visitUser']; } return $success; } static function deinit () { if (self::$conn) self::$conn->query ('CALL user_session_end ()'); } static function logout () { $_SESSION['visitUser'] = nullIf ($_SESSION, 'visitUnknown'); Auth::logout (); if (self::$conn) { self::$conn->query ( 'DELETE FROM user_session_view ' .'WHERE connection_id = CONNECTION_ID()' ); self::$conn->close (); self::$conn = NULL; } } } ?>