PageRenderTime 44ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/application/modules_core/users/models/mdl_users.php

https://bitbucket.org/hlevine/myclientbase-south-african-version
PHP | 208 lines | 118 code | 90 blank | 0 comment | 12 complexity | ac34d983710789ed55aea5d2488824a0 MD5 | raw file
Possible License(s): GPL-3.0, LGPL-2.1, GPL-2.0
  1. <?php (defined('BASEPATH')) OR exit('No direct script access allowed');
  2. class Mdl_Users extends MY_Model {
  3. public function __construct() {
  4. parent::__construct();
  5. $this->table_name = 'mcb_users';
  6. $this->primary_key = 'mcb_users.user_id';
  7. $this->select_fields = "
  8. SQL_CALC_FOUND_ROWS *";
  9. $this->order_by = 'last_name, first_name';
  10. $this->custom_fields = $this->mdl_fields->get_object_fields(6);
  11. }
  12. public function validate() {
  13. $this->form_validation->set_rules('global_admin', $this->lang->line('global_administrator'));
  14. $this->form_validation->set_rules('username', $this->lang->line('username'), 'required|callback_username_check');
  15. if (!uri_assoc('user_id') and $this->uri->segment(2) <> 'profile') {
  16. $this->form_validation->set_rules('password', $this->lang->line('password'), 'required');
  17. $this->form_validation->set_rules('passwordv', $this->lang->line('password_verify'), 'required|matches[password]');
  18. }
  19. $this->form_validation->set_rules('company_name', $this->lang->line('company_name'));
  20. $this->form_validation->set_rules('first_name', $this->lang->line('first_name'), 'required');
  21. $this->form_validation->set_rules('last_name', $this->lang->line('last_name'), 'required');
  22. $this->form_validation->set_rules('address', $this->lang->line('street_address'));
  23. $this->form_validation->set_rules('address_2', $this->lang->line('street_address_2'));
  24. $this->form_validation->set_rules('city', $this->lang->line('city'));
  25. $this->form_validation->set_rules('state', $this->lang->line('state'));
  26. $this->form_validation->set_rules('zip', $this->lang->line('zip'));
  27. $this->form_validation->set_rules('country', $this->lang->line('country'));
  28. $this->form_validation->set_rules('phone_number', $this->lang->line('phone_number'));
  29. $this->form_validation->set_rules('fax_number', $this->lang->line('fax_number'));
  30. $this->form_validation->set_rules('mobile_number', $this->lang->line('mobile_number'));
  31. $this->form_validation->set_rules('email_address', $this->lang->line('email_address'));
  32. $this->form_validation->set_rules('web_address', $this->lang->line('web_address'));
  33. $this->form_validation->set_rules('tax_id_number', $this->lang->line('tax_id_number'));
  34. foreach ($this->custom_fields as $custom_field) {
  35. $this->form_validation->set_rules($custom_field->column_name, $custom_field->field_name);
  36. }
  37. return parent::validate($this);
  38. }
  39. public function username_check($username) {
  40. $this->db->where('username', $username);
  41. if (uri_assoc('user_id')) {
  42. $this->db->where('user_id <>', uri_assoc('user_id'));
  43. }
  44. elseif ($this->uri->segment(2) == 'profile') {
  45. $this->db->where('user_id <>', $this->session->userdata('user_id'));
  46. }
  47. $query = $this->db->get('mcb_users');
  48. if ($query->num_rows()) {
  49. $this->form_validation->set_message('username_check', $this->lang->line('username_already_exists'));
  50. return FALSE;
  51. }
  52. return TRUE;
  53. }
  54. public function db_array() {
  55. $db_array = parent::db_array();
  56. if (isset($db_array['password'])) {
  57. $db_array['password'] = md5($db_array['password']);
  58. }
  59. if (!$this->input->post('global_admin')) {
  60. $db_array['global_admin'] = 0;
  61. }
  62. unset($db_array['passwordv']);
  63. return $db_array;
  64. }
  65. public function save($db_array, $user_id = NULL) {
  66. parent::save($db_array, $user_id);
  67. if (!$user_id) {
  68. $user_id = $this->db->insert_id();
  69. }
  70. return $user_id;
  71. }
  72. public function validate_change_password() {
  73. $this->form_validation->set_rules('new_password', $this->lang->line('new_password'), 'required');
  74. $this->form_validation->set_rules('new_passwordv', $this->lang->line('new_password_verify'), 'required|matches[new_password]');
  75. return parent::validate();
  76. }
  77. public function save_change_password($user_id) {
  78. if ($user_id) {
  79. $this->db->where('user_id', $user_id);
  80. $db_array = array(
  81. 'password' => md5($this->input->post('new_password'))
  82. );
  83. $this->db->update('mcb_users', $db_array);
  84. }
  85. }
  86. public function get_email_address($user_id) {
  87. $this->db->select('email_address');
  88. $this->db->where('user_id', $user_id);
  89. return $this->db->get('mcb_users')->row()->email_address;
  90. }
  91. public function delete($user_id) {
  92. if ($user_id) {
  93. if ($user_id == $this->session->userdata('user_id')) {
  94. $this->session->set_flashdata('custom_error', $this->lang->line('cannot_delete_user_account') . '.');
  95. }
  96. else {
  97. parent::delete(array('user_id'=>$user_id));
  98. $this->load->model('invoices/mdl_invoices');
  99. $this->db->where('client_user_id', $user_id);
  100. $this->db->delete('mcb_clients');
  101. $this->db->where('tax_rate_user_id', $user_id);
  102. $this->db->delete('mcb_tax_rates');
  103. $this->db->where('invoice_group_user_id', $user_id);
  104. $this->db->delete('mcb_invoice_groups');
  105. $this->db->where('user_id', $user_id);
  106. $this->db->delete('mcb_invoices');
  107. $this->db->where('inventory_user_id', $user_id);
  108. $this->db->delete('mcb_inventory');
  109. $this->db->where('inventory_type_user_id', $user_id);
  110. $this->db->delete('mcb_inventory_types');
  111. $this->db->where('mcb_userdata_user_id', $user_id);
  112. $this->db->delete('mcb_userdata');
  113. $this->mdl_invoices->delete_orphans();
  114. }
  115. }
  116. }
  117. }
  118. ?>