getModel(); // Get the ID $id = $model->getState('id', 0); $cid = $this->input->get('cid', array(), 'array'); if (empty($id)) { if (is_array($cid) && !empty($cid)) { $id = $cid[0]; } else { $id = -1; } } $model->setState('id', $id); $profileID = $this->input->getInt('profileid', 0); $model->setState('profileid', $profileID); try { $model->validateRequest(); } catch (\Exception $e) { $message = $e->getMessage(); $router = $this->container->router; $this->setRedirect($router->route('index.php?view=manage'), $message, 'error'); $this->redirect(); return; } $model->setState('restorationstep', 0); $this->display(); } /** * Show the restoration user interface and start the restoration * * @return void */ public function start() { $this->csrfProtection(); $this->getView()->setLayout('restore'); /** @var \Solo\Model\Restore $model */ $model = $this->getModel(); $model->setState('restorationstep', 1); // This is required. validateRequest loads the correct backup profile. We need it to get the site directory. try { $model->validateRequest(); } catch (\Exception $e) { $message = $e->getMessage(); $router = $this->container->router; $this->setRedirect($router->route('index.php?view=manage'), $message, 'error'); $this->redirect(); return; } // Set the model's state $model->setState('jps_key', $this->input->get('jps_key', '', 'cmd')); $model->setState('procengine', $this->input->get('procengine', 'direct', 'cmd')); $model->setState('zapbefore', $this->input->get('zapbefore', 0, 'int')); $model->setState('min_exec', $this->input->get('min_exec', 0, 'int')); $model->setState('max_exec', $this->input->get('max_exec', 5, 'int')); $model->setState('ftp_host', $this->input->get('ftp_host', '', 'none', 2)); $model->setState('ftp_port', $this->input->get('ftp_port', 21, 'int')); $model->setState('ftp_user', $this->input->get('ftp_user', '', 'none', 2)); $model->setState('ftp_pass', $this->input->get('ftp_pass', '', 'none', 2)); $model->setState('ftp_root', $this->input->get('ftp_root', '', 'none', 2)); $model->setState('tmp_path', $this->input->get('tmp_path', '', 'none', 2)); $model->setState('ftp_ssl', $this->input->get('usessl', 'false', 'cmd') == 'true'); $model->setState('ftp_pasv', $this->input->get('passive', 'true', 'cmd') == 'true'); try { $model->createRestorationFile(); } catch (\Exception $e) { $router = $this->container->router; $this->setRedirect($router->route('index.php?view=manage'), Text::_('COM_AKEEBA_RESTORE_ERROR_CANT_WRITE') . '
' . $e->getMessage(), 'error'); $this->redirect(); return; } $this->display(); } /** * Perform an AJAX request, returning the result encoded in JSON and surrounded by triple hashes * * @return void */ public function ajax() { /** @var \Solo\Model\Restore $model */ $model = $this->getModel(); $ajax = $this->input->get('ajax', '', 'cmd'); $model->setState('ajax', $ajax); $ret = $model->doAjax(); @ob_end_clean(); echo '###' . json_encode($ret) . '###'; flush(); $this->container->application->close(); } }