PageRenderTime 41ms CodeModel.GetById 14ms RepoModel.GetById 1ms app.codeStats 0ms

/masportales/application/models/modules_model.php

https://github.com/eloypineda/XHTMLized
PHP | 145 lines | 78 code | 17 blank | 50 comment | 12 complexity | 124cddd270a0c39fd449acafd65cf030 MD5 | raw file
  1. <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
  2. class Modules_model extends CI_Model
  3. {
  4. function __construct()
  5. {
  6. parent::__construct();
  7. }
  8. /**
  9. * modules. getModule
  10. *
  11. * @access public
  12. * @since 0.9
  13. *
  14. * @param int $module_ID
  15. *
  16. * @return mixed
  17. */
  18. public function getModule($module_ID)
  19. {
  20. if (is_numeric($module_ID)) {
  21. $where = "m.module_ID = " . $this->db->escape($module_ID);
  22. } else {
  23. $where = "m.module_url = " . $this->db->escape($module_ID);
  24. }
  25. $sql = "SELECT m.*, mp.name AS parent_name FROM modules m
  26. LEFT JOIN modules mp ON m.parent_ID = mp.module_ID
  27. WHERE $where LIMIT 1";
  28. $query = $this->db->query($sql);
  29. if ($query->num_rows() > 0) {
  30. $module_data = $query->row_array();
  31. } else {
  32. $module_data = false;
  33. }
  34. if ($module_data) {
  35. /*
  36. $sql = "SELECT * FROM modules_meta WHERE module_ID = '" . $module_data['user_ID'] . "'";
  37. $query = $this->db->query($sql);
  38. if ($query->num_rows() > 0) {
  39. foreach ($query->result_array() as $row) {
  40. $module_data[$row['meta_key']] = $row['meta_value'];
  41. }
  42. }
  43. */
  44. // get modules roles
  45. $sql = "SELECT r.* FROM modules_roles as mr LEFT JOIN roles as r ON mr.role_ID = r.role_ID WHERE module_ID = '" . $module_data['module_ID'] . "'";
  46. $query = $this->db->query($sql);
  47. if ($query->num_rows() > 0) {
  48. foreach ($query->result_array() as $row) {
  49. $module_data['roles'][$row['role_ID']] = $row['name'];
  50. }
  51. } else {
  52. $module_data['roles'] = array();
  53. }
  54. }
  55. return $module_data;
  56. }
  57. /**
  58. * modules. getModules
  59. *
  60. * @access public
  61. * @since 0.9
  62. *
  63. * @param int $parent_ID
  64. *
  65. * @return mixed
  66. */
  67. public function getModules($parent_ID = 0)
  68. {
  69. $sql = "SELECT * FROM modules WHERE parent_ID = '$parent_ID' ORDER BY menu_order, name";
  70. $query = $this->db->query($sql);
  71. /*
  72. echo '<pre>';
  73. print_r($query->num_rows());
  74. echo '</pre>';
  75. */
  76. if ($query->num_rows() > 0) {
  77. $modules_menu = array();
  78. foreach ($query->result_array() as $module) {
  79. $module_ID = $module['module_ID'];
  80. $modules_menu[$module_ID] = $module;
  81. //$modules_menu['sub_modules'] = $this->getMenus($module_ID);
  82. }
  83. return $modules_menu;
  84. } else {
  85. return false;
  86. }
  87. }
  88. /**
  89. * modules. getModulesPermission
  90. *
  91. * @access public
  92. * @since 0.9
  93. *
  94. * @param int $parent_ID
  95. *
  96. * @return mixed
  97. */
  98. public function getModulesPermission($parent_ID = 0, $roles = array())
  99. {
  100. $roles_clauses = array();
  101. foreach ($roles as $role) {
  102. $roles_clauses[] = "mr2.name = '$role'";
  103. }
  104. $clauses_and = "AND (" . implode(" OR ", $roles_clauses) . ")";
  105. $sql = "SELECT m.* FROM modules m
  106. LEFT JOIN ( SELECT mr.module_ID, r.* FROM modules_roles AS mr
  107. LEFT JOIN roles AS r
  108. ON mr.role_ID = r.role_ID ) mr2
  109. ON m.module_ID = mr2.module_ID
  110. WHERE m.parent_ID = '$parent_ID' $clauses_and
  111. ORDER BY m.menu_order, m.name";
  112. //echo '<p>' . $sql . '</p><br /> <br />';
  113. $query = $this->db->query($sql);
  114. if ($query->num_rows() > 0) {
  115. $modules_menu = array();
  116. foreach ($query->result_array() as $module) {
  117. $module_ID = $module['module_ID'];
  118. $modules_menu[$module_ID] = $module;
  119. //$modules_menu['sub_modules'] = $this->getMenus($module_ID);
  120. }
  121. return $modules_menu;
  122. } else {
  123. return false;
  124. }
  125. }
  126. }
  127. /* End of file modules_model.php */
  128. /* Location: ./application/models/modules_model.php */