PageRenderTime 57ms CodeModel.GetById 9ms RepoModel.GetById 0ms app.codeStats 1ms

/opensourcepos/application/models/acl/permission.php

https://bitbucket.org/jit_bec/shopifine
PHP | 279 lines | 160 code | 50 blank | 69 comment | 15 complexity | 43c8d2c9fbd0d949a5c595960e065d8d MD5 | raw file
Possible License(s): LGPL-3.0
  1. <?php
  2. /*
  3. * To change this template, choose Tools | Templates
  4. * and open the template in the editor.
  5. */
  6. /**
  7. * Description of resource
  8. *
  9. * @author abhijit
  10. */
  11. class Permission extends CI_Model {
  12. // function insert($role_data,$parents = array())
  13. // {
  14. // //$this->db->insert('invoice',$invoice_data);
  15. // //return $this->db->insert('roles',$role_data);
  16. // $this->db->trans_start();
  17. // $this->db->insert('roles',$role_data);
  18. // $id = $this->db->insert_id();
  19. // if (!empty($parents)){
  20. // foreach ($parents as $parent){
  21. // $parent_name = $this->getName($parent);
  22. // if (!empty($parent_name)){
  23. // $role_inherit_data = array('role_id'=>$id,'role_name'=>$role_data['role_name'],
  24. // 'parent_role_id'=>$parent,'parent_role_name'=>$parent_name);
  25. // $this->db->insert('role_inheritance_mapping',$role_inherit_data);
  26. // }
  27. // }
  28. // }
  29. // $this->db->trans_complete();
  30. // if ($this->db->trans_status() === FALSE)
  31. // {
  32. // //echo $this->db->_error_message();
  33. // die( 'Shipping Failed.Please check log ');
  34. // }
  35. // else {
  36. // $success = true;
  37. // }
  38. // }
  39. function save($permission_data,$id=false){
  40. $success=false;
  41. //Run these queries as a transaction, we want to make sure we do all or nothing
  42. if (!empty($permission_data)){
  43. try {
  44. if (!$id or !$this->permissionExistsById($id)){
  45. $success = $this->db->insert('acl_role_resource_permission_mapping',$permission_data);
  46. }
  47. else{
  48. $this->db->where('id', $id);
  49. $success = $this->db->update('acl_role_resource_permission_mapping',$permission_data);
  50. }
  51. if ($success){
  52. log_message('debug','Permission Suceesfully Created');
  53. }
  54. }
  55. catch (Exception $e){
  56. log_message('Permission Creation Failed '.$this->db->_error_message() );
  57. throw new Exception('RePermissionsource Creation Failed' );
  58. }
  59. }
  60. return $success;
  61. }
  62. function getRoleResourcePermissionMapping($where_clause=null){
  63. $this->db->select('*');
  64. if (!empty($where_clause)){
  65. $this->db->where($where_clause);
  66. }
  67. $query = $this->db->get('acl_role_resource_permission_mapping');
  68. return $query->result_array();
  69. }
  70. function getParent($child){
  71. $sql = "SELECT parent.resource parentresource FROM " .$this->db->dbprefix
  72. ."acl_resources child left join ".$this->db->dbprefix."acl_resources parent on
  73. child.parent_id=parent.id where child.resource =?";
  74. $query = $this->db->query($sql,$child);
  75. if($query->num_rows()>0){
  76. $row = $query->row();
  77. return $row->parentresource;
  78. }
  79. }
  80. function getId($role_name){
  81. $this->db->select('id');
  82. $this->db->where('role_name',$role_name);
  83. $query = $this->db->get('roles');
  84. if ($query->num_rows() > 0)
  85. {
  86. $row = $query->row_array();
  87. return $row['id'];
  88. }
  89. return null;
  90. }
  91. function getPermissionName($id){
  92. $this->db->select('permission');
  93. $this->db->where('id',$id);
  94. $query = $this->db->get('acl_permissions');
  95. if ($query->num_rows() > 0)
  96. {
  97. $row = $query->row_array();
  98. return $row['permission'];
  99. }
  100. return null;
  101. }
  102. // function getMenu($userName){
  103. // $menu ="-menu";
  104. // $sql = "SELECT resource.id,resource.resource, resource.ui_display_name, resource.relative_path_link, user.username
  105. // FROM ".$this->db->dbprefix."acl_resources AS resource
  106. // LEFT JOIN ".$this->db->dbprefix."acl_role_resource_permission_mapping AS permission ON resource.resource = permission.resource_name
  107. // LEFT JOIN ".$this->db->dbprefix."acl_users AS user ON permission.role_id = user.role_id
  108. // WHERE user.username = ?
  109. // AND permission.isAllowed =1
  110. // AND resource.resource LIKE '%".$this->db->escape_like_str($menu)."%' order by relative_order_in_category";
  111. // $query = $this->db->query($sql,array($userName));
  112. // log_message('debug', $this->db->last_query());
  113. // //echo $this->db->last_query();
  114. // return $query->result();
  115. // }
  116. function getMenu($userName){
  117. $menu ="-menu";
  118. $sql = "SELECT id,resource, ui_display_name,relative_path_link, relative_order_in_category,username,isAllowed,0 as relative_order_parent
  119. FROM ".$this->db->dbprefix."user_role_permission_mapping WHERE username = ? AND isAllowed is not null
  120. AND resource LIKE '%".$this->db->escape_like_str($menu)."%' UNION ".
  121. "SELECT id,resource, ui_display_name,relative_path_link, relative_order_in_category,username,isAllowed,relative_order_parent
  122. FROM ".$this->db->dbprefix."user_parentrole_permission_mapping WHERE username = ? AND isAllowed is not null
  123. AND resource LIKE '%-menu%' ".
  124. " order by `relative_order_parent` desc ";
  125. $query = $this->db->query($sql,array($userName,$userName));
  126. //log_message('debug', $this->db->last_query());
  127. //echo $this->db->last_query();
  128. return $query->result_array();
  129. }
  130. // function getAdminMenu($userName){
  131. // $menu ="-adminmenu";
  132. // $sql = "SELECT resource.id,resource.resource, resource.ui_display_name, resource.relative_path_link, user.username
  133. // FROM ".$this->db->dbprefix."acl_resources AS resource
  134. // LEFT JOIN ".$this->db->dbprefix."acl_role_resource_permission_mapping AS permission ON resource.resource = permission.resource_name
  135. // LEFT JOIN ".$this->db->dbprefix."acl_users AS user ON permission.role_id = user.role_id
  136. // WHERE user.username = ?
  137. // AND permission.isAllowed =1
  138. // AND resource.resource LIKE '%".$this->db->escape_like_str($menu)."%' order by relative_order_in_category";
  139. // $query = $this->db->query($sql,array($userName));
  140. // //echo $this->db->last_query();
  141. // return $query->result();
  142. // }
  143. function getAdminMenu($userName){
  144. $menu ="-adminmenu";
  145. $sql = "SELECT id,resource, ui_display_name,relative_path_link, relative_order_in_category,username,isAllowed,0 as relative_order_parent
  146. FROM ".$this->db->dbprefix."user_role_permission_mapping WHERE username = ? AND isAllowed is not null
  147. AND resource LIKE '%".$this->db->escape_like_str($menu)."%' UNION ".
  148. "SELECT id,resource, ui_display_name,relative_path_link, relative_order_in_category,username,isAllowed,relative_order_parent
  149. FROM ".$this->db->dbprefix."user_parentrole_permission_mapping WHERE username = ? AND isAllowed is not null
  150. AND resource LIKE '%".$this->db->escape_like_str($menu)."%' ".
  151. " order by `relative_order_parent` desc ";
  152. $query = $this->db->query($sql,array($userName,$userName));
  153. //log_message('debug', 'admin menu ' .$this->db->last_query());
  154. return $query->result_array();
  155. }
  156. function getSubMenu($userName,$parent_resource_id){
  157. $menu ="-submenu";
  158. $sql = "SELECT id,resource, ui_display_name,relative_path_link, relative_order_in_category,username,isAllowed,0 as relative_order_parent
  159. FROM ".$this->db->dbprefix."user_role_permission_mapping WHERE username = ? AND parent_id = ? AND isAllowed is not null
  160. AND resource LIKE '%".$this->db->escape_like_str($menu)."%' UNION ".
  161. "SELECT id,resource, ui_display_name,relative_path_link,relative_order_in_category, username,isAllowed,relative_order_parent
  162. FROM ".$this->db->dbprefix."user_parentrole_permission_mapping WHERE username = ? AND parent_id = ? AND isAllowed is not null
  163. AND resource LIKE '%".$this->db->escape_like_str($menu)."%' "." order by `relative_order_parent` desc ";
  164. $query = $this->db->query($sql,array($userName,$parent_resource_id,$userName,$parent_resource_id));
  165. //log_message('debug', 'sub menu'.$this->db->last_query());
  166. //echo $this->db->last_query();
  167. return $query->result_array();
  168. }
  169. function getAllPermissionTypes (){
  170. $this->db->select('*');
  171. $query =$this->db->get('acl_permissions');
  172. return $query->result_array();
  173. }
  174. function getAllPermissionMapping($csv = false,$whereClause=null,$order_limit_clause=array(),$like_fields_array=null,$or_where_clause_array=null){
  175. $orderBy = 'id';
  176. $orderDir= 'desc';
  177. $startLimit = 0;
  178. $limit = 1000;
  179. if (!empty($order_limit_clause['orderBy'])){
  180. $orderBy = $order_limit_clause['orderBy'];
  181. }
  182. if (!empty($order_limit_clause['orderDir'])){
  183. $orderDir = $order_limit_clause['orderDir'];
  184. }
  185. if (!empty($order_limit_clause['startLimit'])){
  186. $startLimit = $order_limit_clause['startLimit'];
  187. }
  188. if (!empty($order_limit_clause['limit'])){
  189. $limit = $order_limit_clause['limit'];
  190. }
  191. $this->load->dbutil();
  192. $this->db->select('*');
  193. if (!empty($whereClause)){
  194. $this->db->where($whereClause);
  195. }
  196. if (!empty($or_where_clause_array)){
  197. $this->db->or_where($or_where_clause_array);
  198. }
  199. if (!empty($like_fields_array)){
  200. $this->db->like($like_fields_array);
  201. }
  202. $this->db->order_by($orderBy,$orderDir);
  203. $this->db->limit($limit,$startLimit);
  204. $query = $this->db->get('acl_role_resource_permission_mapping');
  205. if ($csv){
  206. return $this->dbutil->csv_from_result($query);
  207. }
  208. return $query->result_array();
  209. }
  210. function totalNoOfRowsPermissionMapping () {
  211. $this->db->from('acl_role_resource_permission_mapping');
  212. return $this->db->count_all_results() ;
  213. }
  214. function permissionExists($roleid,$resourceid,$permissionid) {
  215. $this->db->from('acl_role_resource_permission_mapping');
  216. $this->db->where('role_id',$roleid);
  217. $this->db->where('resource_id',$resourceid);
  218. $this->db->where('permission_id',$permissionid);
  219. $query = $this->db->get();
  220. return ($query->num_rows()==1);
  221. }
  222. function permissionExistsById($id) {
  223. $this->db->from('acl_role_resource_permission_mapping');
  224. $this->db->where('id',$id);
  225. $query = $this->db->get();
  226. return ($query->num_rows()==1);
  227. }
  228. }
  229. ?>