PageRenderTime 53ms CodeModel.GetById 29ms RepoModel.GetById 0ms app.codeStats 0ms

/Model/NatsMember.php

https://github.com/Wargo/reddevil
PHP | 93 lines | 78 code | 13 blank | 2 comment | 9 complexity | 318309895ab5020e410ee124c28e1b27 MD5 | raw file
Possible License(s): GPL-2.0, AGPL-1.0, LGPL-2.1, GPL-3.0
  1. <?php
  2. class NatsMember extends AppModel {
  3. public $useDbConfig = 'nats';
  4. public $useTable = 'member';
  5. public function importMembers() {
  6. $User = ClassRegistry::init('User');
  7. App::uses('File', 'Utility');
  8. $File = new File(APP . 'Config' . DS . 'Nats' . DS . 'last_import');
  9. $last_import = (int) $File->read();
  10. $conditions = array('status' => 1, 'joined >' => $last_import);
  11. $order = array('joined' => 'asc');
  12. $members = $this->find('all', compact('conditions', 'order'));
  13. foreach ($members as $member) {
  14. extract($member);
  15. if ($user = $User->find('first', array('conditions' => array('username' => $NatsMember['username'])))) {
  16. if ($user['User']['email_verified']) {
  17. continue;
  18. }
  19. }
  20. $memberid = $NatsMember['memberid'];
  21. $conditions = array('memberid' => $memberid);
  22. $order = array('expires' => 'desc');
  23. $memberSubscription = ClassRegistry::init('NatsMemberSubscription')->find('first', compact('conditions', 'order'));
  24. $caducidad = strftime('%Y-%m-%d %H:%M:%S', $memberSubscription['NatsMemberSubscription']['expires']);
  25. $data = array(
  26. 'password' => $NatsMember['password'],
  27. 'group' => 'user',
  28. 'email_verified' => $NatsMember['mailok'],
  29. 'email' => $NatsMember['email'],
  30. 'username' => $NatsMember['username'],
  31. 'first_name' => $NatsMember['original_username'],
  32. 'second_name' => $NatsMember['original_username'],
  33. 'active' => 1,
  34. 'caducidad' => $caducidad,
  35. );
  36. $User->Behaviors->detach('MiUsers.UserAccount');
  37. if (!empty($user)) {
  38. $User->id = $user['User']['id'];
  39. } else {
  40. $User->create();
  41. }
  42. $return = $User->save($data);
  43. $User->Behaviors->attach('MiUsers.UserAccount');
  44. $last_import = $NatsMember['joined'];
  45. }
  46. $File->delete();
  47. $File->write($last_import);
  48. }
  49. //Comprobar al loguearse si el usuario sigue activo en la tabla de Nats
  50. public function checkActive($user) {
  51. if (in_array($user['group'], array('vip', 'admin'))) {
  52. return true;
  53. }
  54. $member = $this->find('first', array('conditions' => array('username' => $user['username'])));
  55. return ($member[$this->alias]['status'] == 1);
  56. }
  57. //Actualizar la fecha de caducidad si ha cambiado en las tablas de NATS
  58. public function updateSubscription($user) {
  59. if (in_array($user['group'], array('vip', 'admin'))) {
  60. $User = ClassRegistry::init('User');
  61. $User->id = $user['id'];
  62. $caducidad = '3000-01-01 00:00:00';
  63. $User->save(array('caducidad' => $caducidad));
  64. return $caducidad;
  65. }
  66. $member = $this->find('first', array('conditions' => array('username' => $user['username'])));
  67. $memberid = $member[$this->alias]['memberid'];
  68. $conditions = array('memberid' => $memberid);
  69. $order = array('expires' => 'desc');
  70. $memberSubscription = ClassRegistry::init('NatsMemberSubscription')->find('first', compact('conditions', 'order'));
  71. if ($memberSubscription['NatsMemberSubscription']['expires'] != strtotime($user['caducidad'])) {
  72. $User = ClassRegistry::init('User');
  73. $User->id = $user['id'];
  74. $caducidad = strftime('%Y-%m-%d %H:%M:%S', $memberSubscription['NatsMemberSubscription']['expires']);
  75. $User->save(array('caducidad' => $caducidad));
  76. return $caducidad;
  77. }
  78. return false;
  79. }
  80. }