Advertisement
Guest User

Untitled

a guest
Jul 21st, 2017
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.54 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement