1: <?php defined('_JOOS_CORE') or exit();
2:
3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
16: class actionsAdminUsers extends joosAdminController
17: {
18: 19: 20:
21: protected static $submenu = array(
22: 'default' => array(
23: 'name' => 'Все пользователи',
24: 'model' => 'modelAdminUsers',
25: 'fields' => array('id', 'user_name', 'lastvisit_date', 'state'),
26: 'active' => false
27: ),
28: 'my_profile_edit' => array(
29: 'name' => 'Мой профиль',
30: 'href' => 'index2.php?option=users&menu=my_profile_edit&task=my_profile_edit',
31: 'model' => 'modelAdminUsers',
32: 'active' => false
33: ),
34: 'user_groups' => array(
35: 'name' => 'Группы пользователей',
36: 'model' => 'modelAdminUsersAclGroups',
37: 'fields' => array('title'),
38: 'active' => false
39: ),
40: 'acl_rules_list' => array(
41: 'name' => 'Права',
42: 'model' => 'modelAdminUsersAclRules',
43: 'fields' => array('title'),
44: 'active' => false
45: ),
46: 'acl_table' => array(
47: 'name' => 'Рапределение прав',
48: 'href' => 'index2.php?option=users&menu=acl_table&task=acl_table',
49: 'model' => false,
50: 'active' => false
51: ),
52: );
53:
54: public static function action_before()
55: {
56: parent::action_before();
57:
58: joosDocument::instance()
59: ->add_js_file( JPATH_SITE . '/app/components/users/media/js/users.admin.js' );
60:
61: }
62:
63: 64: 65: 66: 67: 68:
69: public static function my_profile_edit()
70: {
71: $current_user = joosCore::user();
72: $_GET['id'] = $current_user->id;
73:
74: return parent::edit();
75: }
76:
77: 78: 79: 80: 81: 82:
83: public static function acl_table()
84: {
85: $group_obj = new modelUsersAclGroups;
86: $groups = $group_obj->find_all( array('select'=>'id,title') );
87:
88: $acl_list_obj = new modelUsersAclRules;
89: $acls = $acl_list_obj->find_all( array('select'=>'id,title,acl_group,acl_name') );
90:
91: $acl_list = array();
92: foreach ($acls as $acl) {
93: $acl_list[$acl->acl_group][sprintf('%s::%s', $acl->acl_group, $acl->acl_name)] = $acl;
94: }
95:
96: $acl_groups = array_keys($acl_list);
97:
98: $sql = 'SELECT ag.id AS group_id, al.id AS list_id FROM #__users_acl_rules_groups AS aa INNER JOIN #__users_acl_groups AS ag ON ( ag.id=aa.group_id ) INNER JOIN #__users_acl_rules AS al ON ( al.id=aa.task_id )';
99: $acl_rules_array = joosDatabase::instance()->set_query($sql)->load_assoc_list();
100:
101: $acl_rules = array();
102: foreach ($acl_rules_array as $value) {
103: $acl_rules[$value['group_id']][$value['list_id']] = true;
104: }
105:
106: return array(
107: 'groups' => $groups,
108: 'acl_groups' => $acl_groups,
109: 'acl_list' => $acl_list,
110: 'acls' => $acls,
111: 'acl_rules' => $acl_rules
112: );
113: }
114:
115: public static function get_actions()
116: {
117: $location = JPATH_BASE . '/app/components/';
118:
119: $Directory = new RecursiveDirectoryIterator($location);
120: $Iterator = new RecursiveIteratorIterator($Directory);
121: $Regex = new RegexIterator($Iterator, '/^.+controller.+/i', RecursiveRegexIterator::GET_MATCH);
122:
123: $options = array(
124: 'properties' => array(
125: 'class' => array(
126: 'methods'
127: ),
128: )
129: );
130: $reflect = new PHP_Reflect($options);
131:
132: $classes = array();
133: foreach ($Regex as $path) {
134: $source = $path[0];
135: $reflect->scan($source);
136: $cl = $reflect->getClasses();
137: foreach ($cl['\\'] as $k => $cc) {
138: foreach ($cc['methods'] as $km => $m) {
139: $classes[$k . $km] = array(
140: 'title' => sprintf('%s::%s', $k, $km),
141: 'acl_group' => $k,
142: 'acl_name' => $km,
143: 'created_at' => JCURRENT_SERVER_TIME
144: );
145: }
146: }
147: }
148:
149:
150:
151: $acls_list = new modelUsersAclRules;
152: $acls_list->insert_array($classes);
153:
154: echo sprintf('Вставлено %s правил', count($classes));
155: }
156:
157: }
158: