Source for file System.class.php
Documentation is available at System.class.php
* R.E. Login 2.0 - A rendszer magja - class/System.class.php
* A rendszerrel összefüggő műveletek itt történnek. Itt inicializálja a
* login rendszerváltozókat, amikre bármelyik osztályban szükség lehet,
* és mindig beállítottnak kell lenniük addigra már. <br />
* <b>Dátum:</b> 2010.04.02.
* <b>Szerző weboldala:</b> {@link http://rimelek.hu/}<br />
* <b>Login weblapja:</b> {@link http://rimelek.hu/meghivos-loginrendszer-r-e-login-v2-0 R.E. Login v2.0}
* @author Takács Ákos (Rimelek), programmer [at] rimelek [dot] hu
* @copyright Copyright (C) 2010, Takács Ákos
* @license http://www.gnu.org/licenses/gpl.html
* Egyke osztály. Példányosítás:
* <code>$system = System::getInstance();</code>
* <b>Szerző weboldala:</b> {@link http://rimelek.hu/}<br />
* <b>Login weblapja:</b> {@link http://rimelek.hu/meghivos-loginrendszer-r-e-login-v2-0 R.E. Login v2.0}
* @author Takács Ákos (Rimelek), programmer [at] rimelek [dot] hu
* @copyright Copyright (C) 2010, Takács Ákos
* @license http://www.gnu.org/licenses/gpl.html
* Konfig adatokat tartalmazó objektum
* Belépés után a user maga, lekérhető adataival
* A weboldal gyökérmappája. include-hoz / jellel végződik
* A Login gyökérmappája. include-hoz / jellel végződik
* A szerver gyökér mappája
* A weboldal gyökere a doc root-tól
* Időbélyeg. Szerveridőtől különbözhet
private function __construct()
* Rendszer inicializálása
* Adatbázis kapcsolat létrehozás, szükséges osztályok beemelése, nyelv beállítás, stb
self::setSlashes($_POST,false);
//self::setSlashes($_GET, false);
require_once self::$INC_LOGINDIR.
"classes/Config.class.php";
require_once self::$INC_LOGINDIR.
'libs/REDBObjects/REDBObjects.class.php';
REDBObjects::uses('mysql');
require_once self::$INC_LOGINDIR.
'classes/Session.class.php';
require_once self::$INC_LOGINDIR.
"classes/Login.class.php";
require_once self::$INC_LOGINDIR.
'classes/Url.class.php';
self::$config =
Config::getInstance();
self::$session =
Session::getInstance();
self::$logged =
Login::authUser('username','userpass');
if (isset
($_GET['logout'])) self::logout();
* Adatbázisszerver kapcsolat létrehozása
private static function dbconnect()
mysql_query("set names '".
self::$config->DBCHARSET.
"' collate '".
self::$config->DBCOLLATE.
"'");
private static function dbselect()
mysql_select_db(self::$config->DBNAME);
* A time() függvényhez hasonlóan működik. Csak rosszul működő szerveróra esetén
* már a módosított időt tartalmazza.
* TimeStamp lekérdezése. Y-m-d H:i:s formátumban
* Login gyökér beállítása az includehoz
private static function setIncLoginDir()
//változó definiálása az oldal könyvtárához, az include használata esetén
self::$INC_LOGINDIR =
str_replace('\\', '/', dirname(dirname(__FILE__
)) .
'/');
* Login gyökér lekérdezése az includehoz
* @return string Login gyökér az includehoz
return self::$INC_LOGINDIR;
* Weboldal gyökér beállítása szerver gyökértől
private static function setIncSiteDir()
//változó definiálása az oldal könyvtárához, az include használata esetén
self::$INC_SITEDIR =
dirname(self::getIncLoginDir()).
'/';
* Weblap gyökér lekérdezése a szerver gyökértől
* @return string Weblap gyökér az includehoz
return self::$INC_SITEDIR;
* Tárhely gyökér beállítása
private static function setBaseDir()
//Könyvtárak száma a gyökértől
$dir_count =
substr_count($_SERVER['PHP_SELF'], '/') -
1;
//Konstans definiálása gyökérkönyvtárra
$symlink =
trim(Config::SYMLINK) ==
'' ?
'' :
trim(Config::SYMLINK,'/').
'/';
self::$BASEDIR =
str_repeat('../', $dir_count).
$symlink;
* Tárhelygyökér lekérdezése
* @return string tárhely gyökér
* Weblap gyökér beállítása linkekhez
* Tárhely gyökértől számított útvonal
private static function setSitedir()
$explode_fn =
explode('/', str_replace("\\\\","/",$_SERVER['SCRIPT_FILENAME']));
for ($i =
0; $i <
substr_count($_SERVER['PHP_SELF'], '/'); $i++
)
$fn_count =
count($explode_fn);
for ($i =
0; $i <
$fn_count; $i++
)
$symlink =
trim(Config::SYMLINK) ==
'' ?
'' :
trim(Config::SYMLINK,'/').
'/';
$sitedir =
'/'.
$symlink .
implode('/', $explode_isd);
$sitedir =
$sitedir .
'/';
self::$SITEDIR =
str_replace('//', '/', $sitedir);
* Weblap gyökér a tárhely gyökértől számítva
* @return string Weblap gyökér linkekhez
* Login mappa útvonala a tárhely gyökértől
* @return string Login gyökér linkekhez
return self::getSitedir().
basename(self::getIncLoginDir()).
'/';
* Weblap gyökér url-je HTTP-vel
return "http://".
$_SERVER['HTTP_HOST'].
self::getSitedir();
* Login mappa url-je HTTP-vel
return "http://".
$_SERVER['HTTP_HOST'].
self::getLogindir();
* URL a sitedir-től számítva
$sitedir =
self::$SITEDIR;
$uri =
$_SERVER['REQUEST_URI'];
$ret =
substr($uri, strlen($sitedir));
if (isset
($_GET['lang']))
$ret =
(($pos =
strpos($ret,'/')) !==
false) ?
* Tömb elemeinek backslashelt vagy nem backslashelt verzióra állítása
* @param mixed $string array vagy string. Tömb esetén rekurzivan működik
* @param boolean $bool true, ha a felhasználói adatbeviteleket backslashelni akarjuk. Amúgy false
public static function setSlashes(&$string,$bool=
false)
foreach ($string as $key =>
&$str) {
self::setSlashes($str, $bool);
if (!isset
(self::$instance)) {
self::$instance =
new $c;
* Statikus tulajdonságok elérhetővé tétele nem statikusan
* Csak akkor, ha $_GET['relogin_logout'] létezik, és értéke 1
* Utána eltünteti az url-ből ezt a változót.
public static function logout()
if (!isset
($_GET['relogin_logout']) or $_GET['relogin_logout'] !=
1)
), Config::FILE_LOGOUT, '&');
* Átirányítás egy oldalra
* @param string $site Erre az oldalra irányít át
public static function redirect($site=
null)
$site =
$_SERVER['REQUEST_URI'];
* Ha a felhasználó nem jogosult az oldal megtekintésére, átirányítja az
* @param mixed $rank Az oldalt megtekinthető felhasználók rangja, ha string.
* Ha tömb, akkor több rang engedélyezhető.
* Ha nincs megadva ez a paraméter, akkor csak belépett felhasználók
if (!$rank and System::$logged) return;
if (System::$user->rank($rank))
$site =
Config::FILE_PROTECTED_SITE;
$site = isset
($_SERVER['HTTP_REFERER'])
?
$_SERVER['HTTP_REFERER']
if (!isset
($_SESSION['redirected']))
$_SESSION['redirected'] =
true;
* @see http://phpmailer.worxware.com/
* @param string $to címzett, ha $params['toadmin] = false, egyébként válaszcím
* @param string $subject Tárgy
* @param string $body Tartalom
* @param array $params Egyéb paraméterek tömbje:<br />
* boolean $html True, ha html levél, false, ha szöveges<br />
* boolean $toadmin True, ha adminnak megy a levél a usertől. Egyébként false. default: false
public static function sendEmail($to,$subject,$body,$params=
array())
$html = isset
($params['html']) ? (bool)
$params['html'] :
true;
$toadmin = isset
($params['toadmin']) ?
$params['toadmin'] :
false;
require_once self::getIncLoginDir().
'libs/PHPMailer/class.phpmailer.php';
$mailer->Host =
Config::SMTP_HOST.
':'.
Config::SMTP_PORT;
if ($mailer->SMTPAuth =
Config::SMTP_AUTH) {
$mailer->Username =
Config::SMTP_USERNAME;
$mailer->Password =
Config::SMTP_PASSWORD;
$from =
Config::MAIL_FROM;
$http_host =
$_SERVER['HTTP_HOST'];
if (substr($http_host,0,4) ==
'www.')
$http_host =
substr($http_host, 4);
$mailer->SetFrom($from, $http_host);
$mailer->AddAddress($to);
$mailer->AddAddress(Config::MAIL_TO);
$mailer->AddReplyTo($to);
$type =
($html) ?
'html' :
'plain';
$footer =
@file_get_contents(self::getIncLoginDir().
'includes/email/email_footer-'.
$type.
'.html');
self::getSitedirWithHTTP(),
$mailer->CharSet =
'UTF-8';
$mailer->Body =
$body.
$footer;
if (($err =
$mailer->send()) !==
true) {
exit('Hiba az email küldésnél');
* Akkor fut le, ha be van jelentkezve a felhasználó.
* Online idő állítása, frissítési idő módosítása
private static function runIfLogged()
if (!self::$logged) return;
if (self::$user->refreshtime and
($refreshtime =
strtotime(self::$user->refreshtime)) >=
self::getTime() -
Config::MAX_ONLINE_TIME)
self::$user->onlinetime +=
self::getTime() -
$refreshtime;
self::$user->refreshtime =
self::getTimeStamp();
* @see Messages::msgStat()
require_once self::getIncLoginDir().
'classes/Messages.class.php';
Documentation generated on Sun, 04 Apr 2010 22:43:52 +0200 by phpDocumentor 1.4.1