Extensions::edit PHP Method

edit() public method

public edit ( )
    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);
    }