public function edit()
{
$this->user->restrict('Admin.Extensions.Access');
$extension_name = $this->input->get('name') ? $this->input->get('name') : $this->uri->rsegment(4);
$extension_type = $this->uri->rsegment(3);
$loaded = FALSE;
$error_msg = FALSE;
if ($extension = $this->Extensions_model->getExtension($extension_name)) {
$data['extension_name'] = $extension_name;
$ext_controller = $extension['name'] . '/admin_' . $extension['name'];
$ext_class = ucfirst('admin_' . $extension['name']);
$module_layouts = $this->Layouts_model->getModuleLayouts($extension_name);
if (empty($module_layouts) and isset($extension['config']['layout_ready']) and $extension['config']['layout_ready'] === TRUE) {
$this->alert->set('info', sprintf($this->lang->line('alert_warning_layouts'), site_url('layouts')));
}
if (isset($extension['config'], $extension['installed'], $extension['settings'])) {
if (!is_array($extension['config'])) {
$error_msg = $this->lang->line('error_config');
} else {
if ($extension['settings'] === FALSE) {
$error_msg = $this->lang->line('error_options');
} else {
if ($extension['installed'] === FALSE) {
$error_msg = $this->lang->line('error_installed');
} else {
$this->load->module($ext_controller);
if (class_exists($ext_class, FALSE)) {
if ($this->input->post()) {
$this->user->restrict("Admin.Extensions.Manage");
}
$data['extension'] = $this->{strtolower($ext_class)}->index($extension);
$loaded = TRUE;
} else {
$error_msg = sprintf($this->lang->line('error_failed'), $ext_class);
}
}
}
}
}
}
if (!$loaded or $error_msg !== FALSE) {
$this->alert->set('warning', $error_msg);
redirect(referrer_url());
}
$this->template->render('extensions_edit', $data);
}