daily pastebin goal
67%
SHARE
TWEET

Untitled

a guest Jul 21st, 2017 64 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2.  
  3. class Stage5_Model_User
  4. {
  5.     // vaste string die voor ieder wachtwoord wordt geplakt om het een lastiger te raden wachtwoord te maken
  6.     const SALT = '*S5&^9339%$#';
  7.     // Het id van de gebruiker
  8.     private $_id;
  9.     // De gebruikersnaam (inlognaam)
  10.     private $_userName;
  11.     // voornaam
  12.     private $_firstName;
  13.     // Achternaam
  14.     private $_lastName;
  15.     // Het emailaddress van de gebruiker
  16.     private $_email;
  17.     // De rol die de gebruiker heeft
  18.     private $_role;
  19.     // Het versleutelde wachtwoord van de gebruiker
  20.     private $_password;
  21.     // De afbeelding van de gebruiker
  22.     private $_image;
  23.     // De datamapper voor de user
  24.     private $_mapper;
  25.  
  26.     /**
  27.      * constructor initialiseert alle member. Wachtwoord wordt leeg gezet.
  28.      * @var data array de constructor kan een leeg object aanmaken, het is ook
  29.      * mogelijk om alle waarden mee te geven in een array
  30.      */
  31.     public function __construct($data = null ) {
  32.         $this->_role = Stage5_Model_Authentication::DEFAULT_ROLE;
  33.         $this->_id = -1;
  34.         $exclude = array('password2', 'MAX_FILE_SIZE','captcha', 'opslaan','Send');
  35.         if($data !== null && is_array($data)){
  36.            foreach($data as $key=>$value){
  37.                if(in_array($key,$exclude)){
  38.                    continue;
  39.                }
  40.                $methodName = 'set'.ucfirst($key);
  41.                if(method_exists(get_class($this),$methodName)){
  42.                    $this->$methodName($value);    
  43.                }else{
  44.                    throw new Exception("De methode $methodName bestaad niet in class ".get_class($this));
  45.                }
  46.                
  47.            }        
  48.         }
  49.     }
  50.      
  51.     /**
  52.      * setter voor $_id
  53.      * @param int $id
  54.      * @return void
  55.      * @throws InvalidArgumentException
  56.      */
  57.     public function setId($id) {
  58.         if (is_int($id) || (is_string($id) && ctype_digit($id))) {
  59.             if (is_int($id)) {
  60.                 $this->_id = $id;
  61.             } else {
  62.                 $this->_id = intVal($id);
  63.             }
  64.         } else {
  65.             throw new InvalidArgumentException('id should be numeric');
  66.         }
  67.         return $this;
  68.     }
  69.     /**
  70.      * getter voor _id
  71.      * @return int
  72.      */
  73.     public function getId() {
  74.         return $this->_id;
  75.     }
  76.      
  77.     /**
  78.      * setter voor _userName
  79.      * @param string $name
  80.      * @return void
  81.      * @throws InvalidArgumentException
  82.      */
  83.     public function setUserName($name) {
  84.         if (is_string($name)) {
  85.             $this->_userName = $name;
  86.         } else {
  87.             throw new InvalidArgumentException('username should be of type string');
  88.         }
  89.         return $this;
  90.     }
  91.     /**
  92.      * getter voor _userName
  93.      * @return string
  94.      */
  95.     public function getUserName() {
  96.         return $this->_userName;
  97.     }
  98.  
  99.     /**
  100.      * setter voor $_email
  101.      * @param string $email Een geldig email adres
  102.      * @return Site_Model_User
  103.      * @throws InvalidArgumentException
  104.      */
  105.     public function setEmail($email) {
  106.         if (is_string($email)) {
  107.             // valideer of de string een geldig email adres is
  108.             $validate = new Zend_Validate_EmailAddress();
  109.             if ($validate->isValid($email)) {
  110.                 $this->_email = $email;
  111.             } else {
  112.                 throw new InvalidArgumentException('email should be valid email address');
  113.             }
  114.         } else {
  115.             throw new InvalidArgumentException('email should be of type string');
  116.         }
  117.         return $this;
  118.     }
  119.  
  120.     /**
  121.      * getter voor $_email
  122.      * @return string Het email adres
  123.      */
  124.     public function getEmail() {
  125.         return $this->_email;
  126.     }
  127.  
  128.     /**
  129.      * setter voor _firstName
  130.      * @var string $name
  131.      * @return Site_Model_User supports fluent interface
  132.      * @throws InvalidArgumentException
  133.      */
  134.     public function setFirstName($name) {
  135.         if (is_string($name)) {
  136.             $this->_firstName = $name;
  137.         } else {
  138.             throw new InvalidArgumentException('firstname should be of type string');
  139.         }
  140.         return $this;
  141.     }
  142.  
  143.     /**
  144.      * getter voor _firstName
  145.      * @return string
  146.      */
  147.     public function getFirstName() {
  148.         return $this->_firstName;
  149.     }
  150.  
  151.     /**
  152.      * setter voor $_lastName
  153.      * @var string $name
  154.      * @return Site_Model_User supports fluent interface
  155.      * @throws InvalidArgumentException
  156.      */
  157.     public function setLastName($name) {
  158.         if (is_string($name)) {
  159.             $this->_lastName = $name;
  160.         } else {
  161.             throw new InvalidArgumentException('lastname should be of type string');
  162.         }
  163.         return $this;
  164.     }
  165.  
  166.     /**
  167.      * getter voor $_lastName
  168.      * @return string
  169.      */
  170.     public function getLastName() {
  171.         return $this->_lastName;
  172.     }
  173.  
  174.     /**
  175.      * Geeft de volledige naam van de gebruiker terug
  176.      * @return string
  177.      */
  178.     public function getFullName() {
  179.         $name = '';
  180.         if (strlen($this->getFirstName()) > 0) {
  181.             $name = $this->getFirstName();
  182.         }
  183.         if (strlen($this->getLastName()) > 0) {
  184.             $name .= ' '.$this->getLastName();
  185.         }
  186.         return $name;
  187.     }
  188.  
  189.     /**
  190.      * Het wachtwoord kan gegeven worden in gewone tekst vorm, in dat geval moet het nog
  191.      * worden versleuteld, of het kan al versleuteld worden meegegeven waarna het niet meer versleuteld
  192.      * hoeft te worden. Om een versleuteld wachtwoord moeilijker te maken wordt er voor ieder
  193.      * wachtwoord een vaste string geplaatst. Hierdoor krijgen eenvoudige wachtwoorden toch een niet te
  194.      * raden versleutelde string
  195.      * @param string $password
  196.      * @param boolean $encrypt true betekent dat het gegeven wachtwoord versleuteld moet worden
  197.      * @throws InvalidArgumentException
  198.      */
  199.     public function setPassword($password, $encrypt = true) {
  200.         if (is_string($password)) {
  201.             if ($encrypt ==true){
  202.                 // plain password
  203.                 $this->_password = sha1(self::SALT . $password);
  204.             } else {
  205.                 $this->_password = $password;
  206.             }
  207.         } else {
  208.             throw new InvalidArgumentException('password must be string');
  209.         }
  210.     }
  211.  
  212.     /**
  213.      * Geeft altijd een SHA1 versleuteld wachtwoord terug
  214.      * @return string
  215.      */
  216.     public function getPassword() {
  217.         return $this->_password;
  218.     }
  219.  
  220.     /**
  221.      * Zet de huidige rol van de gebruiker
  222.      * @param string $role
  223.      * @throws InvalidArgumentException
  224.      */
  225.     public function setRole($role) {
  226.         if (is_string($role)) {
  227.             $this->_role = $role;
  228.         } else {
  229.             throw new InvalidArgumentException('role should be string');
  230.         }
  231.     }
  232.  
  233.     /**
  234.      * geeft de huidige rol van de gebruiker terug
  235.      * @return string
  236.      */
  237.     public function getRole() {
  238.         return $this->_role;
  239.     }
  240.    
  241.     public function setImage($image) {
  242.         $this->_image = $image;
  243.     }
  244.    
  245.     public function getImage() {
  246.         return $this->_image;
  247.     }
  248.  
  249.     /**
  250.      * methode om in één keer verschillende setters aan te roepen
  251.      * Array moet geassocieerde array met één van de volgende opties
  252.      * id, username, firstname, lastname, nameext, email, role, password, encrypt
  253.      * Password kan gezet worden met of zonder encryptie. Een extra boolean associatie 'encrypt' kan worden gegeven
  254.      * encrypt => true passsword is gegeven in plain text en wordt gecrypt, encrypt => false password is al versleuteld
  255.      * mapper kan niet via populate worden gezet vanwege het speciale karakter
  256.      * @param array $data
  257.      * @throws InvalidArgumentException
  258.      */
  259.     public function populate($data) {
  260.         if (is_array($data)) {
  261.             if (isset($data['id'])) {
  262.                 $this->setId($data['id']);
  263.             }
  264.             if (isset($data['username'])) {
  265.                 $this->setUserName($data['username']);
  266.             }
  267.             if (isset($data['firstname'])) {
  268.                 $this->setFirstName($data['firstname']);
  269.             }
  270.             if (isset($data['lastname'])) {
  271.                 $this->setLastName($data['lastname']);
  272.             }
  273.             if (isset($data['email'])) {
  274.                 $this->setEmail($data['email']);
  275.             }
  276.             if (isset($data['role'])) {
  277.                 $this->setRole($data['role']);
  278.             }
  279.             if (isset($data['password'])) {
  280.                 $encrypt = false;
  281.                 if (isset($data['encrypt']) && is_bool($data['encrypt'])) {
  282.                     $encrypt = $data['encrypt'];
  283.                 }
  284.                 $this->setPassword($data['password'], $encrypt);
  285.             }
  286.             if (isset($data['pic'])) {
  287.                 $this->setImage($data['pic']);
  288.             }
  289.         } else {
  290.             throw new InvalidArgumentException('data must be associated array');
  291.         }
  292.     }
  293.  
  294.     /**
  295.      *
  296.      * @param Site_Model_Db_DataMapperAbstract $mapper
  297.      */
  298.     public function setMapper($mapper) {
  299.         $this->_mapper = $mapper;
  300.         return $this;
  301.     }
  302.  
  303.     /**
  304.      * geef het ingestelde DataMapper object terug. Als deze nog niet bestaat wordt het aangemaakt
  305.      * @return Site_Model_Db_UserMapper
  306.      */
  307.     public function getMapper() {
  308.         if (null === $this->_mapper) {
  309.             $this->setMapper(new Stage5_Model_Db_UserMapper('Stage5_Model_Db_UserDao'));
  310.         }
  311.         return $this->_mapper;
  312.     }
  313.  
  314.     /**
  315.      * load de user met het gegeven id
  316.      * @param int $id
  317.      * @return Site_Model_User|null
  318.      * @throws InvalidArgumentException
  319.      */
  320.     public function load($id) {
  321.         if (is_int($id) || (is_string($id) && ctype_digit($id))) {
  322.             return $this->getMapper()->find($id, $this);
  323.         } else {
  324.             throw new InvalidArgumentException('id must be numeric');
  325.         }
  326.     }
  327.  
  328.     /**
  329.      * laad de user met een bepaalde username
  330.      * @param string $username
  331.      * @return Site_Model_User|null Geeft null als de user niet geladen kon worden
  332.      */
  333.     public function loadByUserName($username) {
  334.         return $this->getMapper()->findByUserName($username, $this);
  335.     }
  336.  
  337.     /**
  338.      * sla de hudige user op
  339.      */
  340.     public function save() {
  341.        
  342.         return $this->getMapper()->save($this);
  343.     }
  344.  
  345.     /**
  346.      * Verwijder de user met het gegeven id
  347.      * @param int $id
  348.      * @return int Het aantal gewijzigde records
  349.      */
  350.     public static function delete($id) {
  351.         $mapper = new Stage5_Model_Db_UserMapper('Stage5_Model_Db_UserDao');
  352.         return $mapper->delete($id);
  353.     }
  354.    
  355.    
  356.     public function getUserIdByEmail($email){
  357.        $user = $this->getMapper()->findByFieldName('email',$email);
  358.        return ($user->_id) ? $user->_id : null;
  359.        
  360.        
  361.     }
  362.    
  363.  
  364. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top