Source for file Admin.class.php
Documentation is available at Admin.class.php
* R.E. Login 2.0 - Admin - class/Admin.class.php
* Az adminisztrációs folyamatok megvalósítása egy osztályban<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
* Minden adminisztrációs művelet itt van definiálva.
* Egy runXXX metódus indítja az XXX-nek megfelelő műveletet.
* Majd az XXX osztály megvalósítja azt.
* <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
const INVITE_SUB =
'invitesub';
const INVITE_ADD =
'inviteadd';
const INVITE_SET =
'inviteset';
const METHOD_INVITE =
'method_invite';
const METHOD_CONFIG =
'method_config';
const METHOD_USERS =
'method_users';
const METHOD_RANKS =
'method_ranks';
private static $errors =
array();
* Feldolgozandó beállítások tömbje
private static $values =
array();
* Űrlap inputok címe. Egyúttal a Config fájlba generálandó
* megjegyzések a megfelelő konstansok fölé.
private static $titles =
array();
* Maximálisan beállítható meghívók száma.
private static $maxInvitation =
100;
* Config admin elindítása
* @param array $values {@link $values}
* @param array $titles {@link $titles}
* @return bool Sikeres volt-e a művelet
return self::run($values, $titles,self::METHOD_CONFIG);
* @param array $values {@link $values}
* @return bool Sikeres volt-e a művelet
return self::run($values, null,self::METHOD_USERS);
* @param array $values {@link $values}
* @return bool Sikeres volt-e a művelet
return self::run($values, null,self::METHOD_INVITE);
* @param array $values {@link $values}
* @return bool Sikeres volt-e a művelet
return self::run($values, null,self::METHOD_RANKS);
* Bármilyen admin indítása
* A $mode paraméterben várja melyik admint kell indítani.
* Ezt osztályszintű konstansok segítségével lehet megadni.
* Ha a $_POST['admin'] tömb nincs beállítva, akkor nem indul el.
* @param array $values {@link $values}
* @param array $titles {@link $titles}
* @param string $mode Melyik admint indítsa. Lehetséges értékek:
* {@link METHOD_INVITE}, {@link METHOD_RANKS},
* {@link METHOD_USERS}, {@link METHOD_CONFIG}
* @return bool Sikeres volt-e a művelet
private static function run($values, $titles,$mode)
if (!isset
($_POST['admin']) or !is_array($_POST['admin']))
case self::METHOD_INVITE:
return self::inviteAdmin();
return self::userAdmin();
return self::ranksAdmin();
case self::METHOD_CONFIG:
return self::writeConfigFile();
return self::writeConfigFile();
* Users admin megvalósítása
* Felhasználók jogainak beállítása, illetve felhasználó törlése.
* Törléskor törlődnek a felhasználó üzenetei, illetve a keresési
* @return bool Sikeres volt-e a művelet
private static function userAdmin()
$username =
trim(self::$values['username']);
require_once System::getIncLoginDir().
'classes/UserList.class.php';
self::$errors[] =
'Nincs "'.
$username.
'" nevű felhasználó';
if ($ids[0] ==
System::$user->T_users_userid)
self::$errors[] =
'Saját magad nem módosíthatod!';
$user =
new User((int)
$ids[0]);
$isAdmin =
$user->rank(array('admin','owner'));
if ($isAdmin and !System::$user->rank('owner'))
self::$errors[] =
'Adminokat csak '.
Ranks::getNameByVar('owner').
' rangú módosíthat!';
if (self::$values['rankid'] ==
'x')
$userlist =
new UserList();
mysql_query('delete from '.
Config::DBPREF.
'searchlog where userid = '.
$ids[0]);
$userlist->delete('userid', $ids[0]);
$user->rank =
self::$values['rankid'];
* Invite admin megvalósítása.
* Meghívók kiosztása, elvétele.
* @return bool Sikeres volt-e a művelet
private static function inviteAdmin()
$username =
trim(self::$values['username']);
require_once System::getIncLoginDir().
'classes/UserList.class.php';
if (self::$values['allusers'] ===
null)
self::$errors[] =
'Nincs "'.
$username.
'" nevű felhasználó';
$userid =
count($ids) ?
$ids[0] :
0;
self::setInvitations($userid, self::$values['invitations'], self::$values['mode']);
private static function ranksAdmin()
$valid_var =
preg_match('/^[a-z_]+[a-z0-9_]*$/i',self::$values['varname']);
$err_invalid_varname =
'Érvénytelen változónév!
Érvényes: 0-9, a-z, _, ékezet nélkül (Számmal nem kezdődhet)';
if (trim(self::$values['rankid']) ==
"")
self::$errors[] =
$err_invalid_varname;
Ranks::addRank(self::$values['varname'], self::$values['rankname'],true);
else if (self::$values['op'] ==
"delete")
if (self::$values['rankid'] <
5)
self::$errors[] =
'Alapértelmezett rangok nem törölhetők';
header('Location: '.
$_SERVER['REQUEST_URI']);
else if (self::$values['act'] ==
'mod')
self::$errors[] =
$err_invalid_varname;
$rank =
Ranks::getRank(null, 'rankid', self::$values['rankid']);
if ($rank->varname !=
self::$values['varname'])
self::$errors[] =
'Alapértelmezett rangok változóneve nem módosítható!';
if (count(self::$errors))
$rank->varname =
self::$values['varname'];
$rank->name =
self::$values['rankname'];
* A $mode paraméterben megadott művelet szerint elvesz, hozzáad, vagy
* beállít $invitations számű meghívót a $userid id-jű felhasználónak.
* @param int $userid Felhasználó azonosítója
* @param int $invitations Meghívók száma
* @param string $mode Meghívó módosítás módja. Értéke lehet:
* {@link INVITE_SET}, {@link INVITE_ADD}, {@link INVITE_SUB}
* Alapértelmezetten beállítás történik.
public static function setInvitations($userid, $invitations,$mode=
self::INVITE_SET)
self::addInvitations($userid, $invitations);
self::subInvitations($userid, $invitations);
self::invitationQuery($invitations,$userid);
self::invitationQuery($invitations,$userid);
* @param int $userid Felhasználó azonosítója
* @param int $invitations Elveendő meghívók száma
$inv = (int)
$invitations;
self::invitationQuery(" if(invitations > $inv, invitations-$inv, 0 ) ", $userid);
* @param int $userid Felhasználó azonosítója
* @param int $invitations Elveendő meghívók száma
$inv = (int)
$invitations;
self::invitationQuery(" if(invitations < ".
(self::maxInvitation()-
$inv).
",
invitations+$inv, ".
self::maxInvitation().
" ) ",
* Maximálisan kiosztható meghívók száma egy felhasználónak
* A $max paramétert megadva be is állítja új értékre.
* Mindenképpen visszatér az aktuális értékkel a beállítás után.
* @param int $max Maximális meghívók száma
self::$maxInvitation = (int)
$max;
return self::$maxInvitation;
* Meghívók beállításának frissítése.
* Itt fut le a mysql_query() az összeállított sql kóddal.
* @param string $set Meghívók új számának sql kódja.
* @param int $userid Felhasználó azonosítója
private static function invitationQuery($set,$userid)
"update ".
Config::DBPREF.
"users set invitations = ".
$sql .=
" where userid = $uid";
* @return bool Sikeres volt-e a művelet
private static function writeConfigFile()
if (self::$values['SMTP_AUTH'] and
(empty(self::$values['SMTP_HOST']) or
empty(self::$values['SMTP_PORT']) or
empty(self::$values['SMTP_USERNAME']) or
empty(self::$values['SMTP_PASSWORD'])) )
self::$errors[] =
'Bejelölted az SMTP hitelesítést, ezért
minden SMTP beállítást meg kell adnod';
"final class Config".
PHP_EOL.
"{".
PHP_EOL.
foreach (self::$values as $key =>
$value)
$value =
(!is_bool($value))
?
"'".
$value.
"'" :
($value ?
'true' :
'false');
if (isset
(self::$titles[$key]))
$title =
self::$titles[$key];
else if (isset
(self::$titles['+'.
$key]))
$title =
self::$titles['+'.
$key];
else if (isset
(self::$titles['-'.
$key]))
$title =
self::$titles['-'.
$key];
$t .=
PHP_EOL.
"\t\t".
$key.
" = ".
$value.
",";
$t =
rtrim($t,',').
';'.
PHP_EOL;
"\tprivate static \$instance;".
PHP_EOL.
"\tprivate function __construct(){}".
PHP_EOL.
"\tfunction __get(\$var)".
PHP_EOL.
"\t\tif (!isset(\$this->\$var))".
PHP_EOL.
"\t\t\teval('\$ret = self::'.\$var.';');".
PHP_EOL.
"\t\t\treturn \$ret;".
PHP_EOL.
"\tpublic static function getInstance()".
PHP_EOL.
"\t\tif (!isset(self::\$instance)) {".
PHP_EOL.
"\t\t\t\$c=__CLASS__;".
PHP_EOL.
"\t\t\tself::\$instance = new \$c;".
PHP_EOL.
"\t\treturn self::\$instance;".
PHP_EOL.
public static function errors()
Documentation generated on Sun, 04 Apr 2010 22:43:30 +0200 by phpDocumentor 1.4.1