function refresh() { set_time_limit(0); $this->load->helper('file'); // @write_file(FCPATH . 'down', ''); // @unlink(FCPATH . 'up'); $new_urls_array = array(); foreach (glob(APPPATH . 'controllers/*') as $controller) { if (is_dir($controller)) { $dir_name = basename($controller, EXT); foreach (glob(APPPATH . 'controllers/' . $dir_name . '/*') as $sub_dir_controller) { $sub_dir_controller_name = basename($sub_dir_controller, EXT); if (!class_exists($sub_dir_controller_name)) { $this->load->file($sub_dir_controller); } $sub_dir_controller_name_class = new ReflectionClass($sub_dir_controller_name); foreach ($sub_dir_controller_name_class->getMethods() as $sub_dir_controller_name_methods) { if ($sub_dir_controller_name_methods->class === $sub_dir_controller_name_class->name && $sub_dir_controller_name !== $sub_dir_controller_name_methods->name && substr($sub_dir_controller_name_methods->name, 0, 1) !== '_') { array_push($new_urls_array, array('url_directory' => $dir_name, 'url_class' => $sub_dir_controller_name, 'url_method' => $sub_dir_controller_name_methods->name)); } } } } else { if (pathinfo($controller, PATHINFO_EXTENSION) === "php") { $controller_name = basename($controller, EXT); if (!class_exists($controller_name)) { $this->load->file($controller); } $controller_name_class = new ReflectionClass($controller_name); foreach ($controller_name_class->getMethods() as $controller_name_methods) { if ($controller_name_methods->class === $controller_name_class->name && $controller_name !== $controller_name_methods->name && substr($controller_name_methods->name, 0, 1) !== '_') { array_push($new_urls_array, array('url_directory' => NULL, 'url_class' => $controller_name, 'url_method' => $controller_name_methods->name)); } } } } } $old_group_urls_array = $this->Acl_model->get_group_urls(); $old_user_urls_array = $this->Acl_model->get_user_urls(); $old_urls_array = $this->Acl_model->get_urls(); foreach ($new_urls_array as $key => $new_url) { $index = parent::array_search_by_value($old_urls_array, array('url_directory' => $new_url['url_directory'], 'url_class' => $new_url['url_class'], 'url_method' => $new_url['url_method'])); if (count($index) === 1) { $new_urls_array[$key]['url_sets_id'] = $old_urls_array[$index[0]]['url_sets_id']; } else { $new_urls_array[$key]['url_sets_id'] = '0'; } } $this->Acl_model->update_urls($new_urls_array); $urls_array = $this->Acl_model->get_urls(); $groups_array = $this->Acl_model->get_groups(); $new_group_urls_array = array(); $new_user_urls_array = array(); foreach ($groups_array as $group) { foreach ($urls_array as $url) { $group_url_permission = '0'; foreach ($old_group_urls_array as $old_group_urls) { if ($old_group_urls['groups_id'] === $group['group_id'] && $old_group_urls['url_directory'] === $url['url_directory'] && $old_group_urls['url_class'] === $url['url_class'] && $old_group_urls['url_method'] === $url['url_method']) { $group_url_permission = $old_group_urls['group_url_permission']; } } array_push($new_group_urls_array, array('groups_id' => $group['group_id'], 'urls_id' => $url['url_id'], 'group_url_permission' => $group_url_permission)); } } $old_users = array(); foreach ($old_user_urls_array as $old_user_urls) { if (!in_array($old_user_urls['users_id'], $old_users)) { array_push($old_users, $old_user_urls['users_id']); } } foreach ($old_users as $user) { foreach ($urls_array as $url) { $user_url_permission = '0'; foreach ($old_user_urls_array as $old_user_urls) { if ($old_user_urls['users_id'] === $user && $old_user_urls['url_directory'] === $url['url_directory'] && $old_user_urls['url_class'] === $url['url_class'] && $old_user_urls['url_method'] === $url['url_method']) { $user_url_permission = $old_user_urls['user_url_permission']; array_push($new_user_urls_array, array('users_id' => $user, 'urls_id' => $url['url_id'], 'user_url_permission' => $user_url_permission)); } } } } if ($this->Acl_model->update_group_urls($new_group_urls_array) && $this->Acl_model->update_user_urls($new_user_urls_array)) { redirect('acl/url-sets'); } // @write_file(FCPATH . 'up', ''); // @unlink(FCPATH . 'down'); }