Source for file ChangeProfile.class.php

Documentation is available at ChangeProfile.class.php

  1. <?php
  2. /**
  3.  * R.E. Login 2.0 - Profil módosítás - class/ChangeProfile.class.php
  4.  *
  5.  * Profil módosítás megvalósítása<br />
  6.  * <br />
  7.  * <b>Dátum:</b> 2010.04.02.
  8.  *
  9.  * <b>Szerző weboldala:</b> {@link http://rimelek.hu/}<br />
  10.  * <b>Login weblapja:</b> {@link http://rimelek.hu/meghivos-loginrendszer-r-e-login-v2-0 R.E. Login v2.0}
  11.  *
  12.  * @author Takács Ákos (Rimelek), programmer [at] rimelek [dot] hu
  13.  * @copyright Copyright (C) 2010, Takács Ákos
  14.  * @license http://www.gnu.org/licenses/gpl.html
  15.  * @package RELogin
  16.  * @version 2.0
  17.  */
  18.  
  19. /**
  20.  * Profil módosítás
  21.  *
  22.  * <b>Szerző weboldala:</b> {@link http://rimelek.hu/}<br />
  23.  * <b>Login weblapja:</b> {@link http://rimelek.hu/meghivos-loginrendszer-r-e-login-v2-0 R.E. Login v2.0}
  24.  *
  25.  * @author Takács Ákos (Rimelek), programmer [at] rimelek [dot] hu
  26.  * @copyright Copyright (C) 2010, Takács Ákos
  27.  * @license http://www.gnu.org/licenses/gpl.html
  28.  * @package RELogin
  29.  */
  30. {
  31.     /**
  32.      * Módosítandó user példánya.
  33.      *
  34.      * @var User 
  35.      */
  36.     private static $user;
  37.  
  38.     /**
  39.      * Hibaüzenetek tömbje
  40.      *
  41.      * @var array 
  42.      */
  43.     private static $errors = array();
  44.  
  45.     /**
  46.      * Űrlapon megjelenítendő inputok értékei
  47.      *
  48.      * @var array 
  49.      */
  50.     private static $data = array(
  51.         'lastname'=>'','firstname'=>'','bdyear'=>'','avatar'=>'',
  52.         'bdmonth'=>'','bdday'=>'','sex'=>'','country'=>'',
  53.         'city'=>'','useremail'=>'','public_mail'=>'','website'=>'',
  54.         'msn'=>'','skype'=>'','other'=>''
  55.     );
  56.  
  57.     /**
  58.      * Hibaüzenetek tömbje
  59.      *
  60.      * @return array 
  61.      */
  62.     public static function errors()
  63.     {
  64.         return self::$errors;
  65.     }
  66.  
  67.     /**
  68.      * Űrlapon megjelenítendő inputok értékeinek kezelése
  69.      *
  70.      * Paraméter nélkül hívva az összes értéket visszaadja.
  71.      * Egy paraméterrel az $index-nek megfelelő értéket visszaadja.
  72.      * Két paraméterrel hívva az $index-nek megfelelő értéket $value-ra állítja.
  73.      * Utóbbi esetben nem tér vissza semmivel.
  74.      *
  75.      * @param string $index 
  76.      * @param mixed $value 
  77.      * @return mixed 
  78.      */
  79.     public static function data($index=null, $value=null)
  80.     {
  81.         $num = func_num_args();
  82.         if ($num == 0) return self::$data;
  83.         if ($num == 1) return isset(self::$data[$index]) ? self::$data[$index] : null;
  84.         self::$data[$index] = $value;
  85.     }
  86.  
  87.     /**
  88.      * Elküldött adatok ellenőrzése.
  89.      *
  90.      * @param array $post Posztolt adatok tömbjének referenciája.
  91.      * @return bool Érvényes adatokat adott-e meg a user.
  92.      */
  93.     private static function isValidInput(&$post)
  94.     {
  95.         require_once System::getIncLoginDir().'libs/PHPMailer/class.phpmailer.php';
  96.         if (!isset($post['userpass']) or Login::getPasswordHash($post['userpass']) != System::$user->userpass)
  97.         {
  98.             self::$errors[] = 'Hibás jelszó!';
  99.         } 
  100.         else if (!empty($post['newuserpass']))
  101.         {
  102.             if ($post['newuserpass'] != $post['renewuserpass'])
  103.             {
  104.                 self::$errors[] = 'A két új jelszó nem egyezik!';
  105.             }
  106.             if (strlen($post['userpass']) < ($min = Config::MINLENGTH_PASSWORD))
  107.             {
  108.                 self::$errors[] =  "A jelszó minimum $min karakter lehet!";
  109.             }
  110.         }
  111.         if (isset($post['useremail']) and !PHPMailer::ValidateAddress($post['useremail']))
  112.         {
  113.             self::$errors[] = 'Az e-mail cím érvénytelen formátumú!';
  114.         }
  115.         else if (array_shift(mysql_fetch_row(mysql_query("select count(userid) from ".Config::DBPREF.
  116.                 "users where useremail = '".mysql_real_escape_string($post['useremail']).
  117.                 "' and userid != ".self::$user->T_users_userid))))
  118.         {
  119.             self::$errors[] = 'Már létezik ilyen e-mail cím!';
  120.         }
  121.  
  122.         $y = date('Y');
  123.         if (isset($post['bdyear']) and max(1900, min((int)$y, (int)$post['bdyear'])) != $post['bdyear'])
  124.         {
  125.             self::$errors[] = 'Az évszám 1900 és '.$y.' között lehet! - ';
  126.         }
  127.         if (isset($post['bdmonth']) and max(1, min((int)$post['bdmonth'], 12)) != $post['bdmonth'])
  128.         {
  129.             self::$errors[] = 'A hónap 1 és 12 között lehet!';
  130.         }
  131.         if (isset($post['bdday']) and max(1, min((int)$post['bdday'], 31)) != $post['bdday'])
  132.         {
  133.             self::$errors[] = 'A nap 1 és 31 között lehet!';
  134.         }
  135.  
  136.  
  137.         return count(self::errors()) == 0;
  138.     }
  139.  
  140.     /**
  141.      *
  142.      * @param array $post Elküldött adatok tömbjének referenciája.
  143.      * @param User $user Módosítandó felhasználó példánya.
  144.      * @return bool Sikeres volt-e a módosítás.
  145.      */
  146.     public static function request(&$post,User $user)
  147.     {
  148.         self::$user = $user;
  149.         if (!self::isValidInput($post))
  150.         {
  151.             return false;
  152.         }
  153.         
  154.         $email = strtolower(trim($post['useremail']));
  155.         if ($email != strtolower(self::$user->T_users_useremail))
  156.         {
  157.             if (Config::EMAIL_ACTIVATION)
  158.             {
  159.                 self::$user->T_profiles_useremail = $email;
  160.                 require_once System::getIncLoginDir().'classes/Register.class.php';
  161.                 $link  = Register::createLink(self::$user->T_users_userid, $email,Config::FILE_REGISTER);
  162.                 $body =
  163.                     "Az e-mail címed sikeresen megváltoztattad.".PHP_EOL.
  164.                     "Kattints az alábbi linkre az aktiválásához: <br />".PHP_EOL.
  165.                     "<a href='".$link."'>".$link."</a>";
  166.                 System::sendEmail($email, "E-mail cím aktiválás", $body);
  167.             }
  168.             else
  169.             {
  170.                 self::$user->useremail = $email;
  171.             }
  172.         }
  173.  
  174.         if ($post['newuserpass'])
  175.         {
  176.             $userpass = Login::getPasswordHash($post['newuserpass']);
  177.             self::$user->userpass = $userpass;
  178.             Login::changePassword($userpass);
  179.  
  180.         }
  181.  
  182.  
  183.         self::$user->birthdate = $post['bdyear']."-".$post['bdmonth']."-".$post['bdday'];
  184.         self::$user->public_mail = $post['public_mail'] == 'yes' ? true : false;
  185.         
  186.         self::$user->sex = $post['sex'] == 'f' ? 'f' : 'm';
  187.         self::$user->lastname = $post['lastname'];
  188.         self::$user->firstname = $post['firstname'];
  189.         self::$user->country = $post['country'];
  190.         self::$user->city = $post['city'];
  191.         self::$user->website = $post['website'];
  192.         self::$user->msn = $post['msn'];
  193.         self::$user->skype = $post['skype'];
  194.         self::$user->other = $post['other'];
  195.         self::$user->avatar = $post['avatar'];
  196.  
  197.     
  198.         if (count(self::errors()))
  199.         {
  200.             return false;
  201.         }
  202.  
  203.         self::$user->update();
  204.         return true;
  205.     }
  206. }
  207. ?>

Documentation generated on Sun, 04 Apr 2010 22:43:31 +0200 by phpDocumentor 1.4.1