PageRenderTime 38ms CodeModel.GetById 9ms RepoModel.GetById 0ms app.codeStats 0ms

/magehelp/application/models/acl/permission.php

https://bitbucket.org/jit_bec/shopifine
PHP | 291 lines | 166 code | 57 blank | 68 comment | 15 complexity | ef57b1060246fee5f0f7a05c8b4e502c 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 Base_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. return $query->result_array();
  167. }
  168. function getAllPermissionTypes (){
  169. $this->db->select('*');
  170. $query =$this->db->get('acl_permissions');
  171. return $query->result_array();
  172. }
  173. function getAllPermissionMapping($csv = false,$whereClause=null,$order_limit_clause=array(),$like_fields_array=null,$or_where_clause_array=null){
  174. $orderBy = 'id';
  175. $orderDir= 'desc';
  176. $startLimit = 0;
  177. $limit = 1000;
  178. if (!empty($order_limit_clause['orderBy'])){
  179. $orderBy = $order_limit_clause['orderBy'];
  180. }
  181. if (!empty($order_limit_clause['orderDir'])){
  182. $orderDir = $order_limit_clause['orderDir'];
  183. }
  184. if (!empty($order_limit_clause['startLimit'])){
  185. $startLimit = $order_limit_clause['startLimit'];
  186. }
  187. if (!empty($order_limit_clause['limit'])){
  188. $limit = $order_limit_clause['limit'];
  189. }
  190. $this->load->dbutil();
  191. $this->db->select('*');
  192. if (!empty($whereClause)){
  193. $this->db->where($whereClause);
  194. }
  195. if (!empty($or_where_clause_array)){
  196. $this->db->or_where($or_where_clause_array);
  197. }
  198. if (!empty($like_fields_array)){
  199. $this->db->like($like_fields_array);
  200. }
  201. $this->db->order_by($orderBy,$orderDir);
  202. $this->db->limit($limit,$startLimit);
  203. $query = $this->db->get('acl_role_resource_permission_mapping');
  204. if ($csv){
  205. return $this->dbutil->csv_from_result($query);
  206. }
  207. return $query->result_array();
  208. }
  209. function totalNoOfRowsPermissionMapping () {
  210. $this->db->from('acl_role_resource_permission_mapping');
  211. return $this->db->count_all_results() ;
  212. }
  213. function permissionExists($roleid,$resourceid,$permissionid) {
  214. $this->db->from('acl_role_resource_permission_mapping');
  215. $this->db->where('role_id',$roleid);
  216. $this->db->where('resource_id',$resourceid);
  217. $this->db->where('permission_id',$permissionid);
  218. $query = $this->db->get();
  219. return ($query->num_rows()==1);
  220. }
  221. function permissionExistsById($id) {
  222. $this->db->from('acl_role_resource_permission_mapping');
  223. $this->db->where('id',$id);
  224. $query = $this->db->get();
  225. return ($query->num_rows()==1);
  226. }
  227. function anyPermissionExistsForResource($resource) {
  228. $this->db->from('acl_role_resource_permission_mapping');
  229. $this->db->where('resource_name',$resource);
  230. $query = $this->db->get();
  231. return ($query->num_rows()>0);
  232. }
  233. }
  234. ?>