Exemplo n.º 1
0
 public function indexAction()
 {
     $form = new GDApp_Form_ServerSettings();
     $this->view->form = $form;
     $this->view->headLink()->appendStylesheet("/css/template/form.css");
     $this->view->headLink()->appendStylesheet("/css/pages/project_servers.css");
     // Grab the project so we can add it to the title
     $project_slug = $this->_getParam("project");
     $projects = new GD_Model_ProjectsMapper();
     $project = $projects->getProjectBySlug($project_slug);
     $this->view->project = $project;
     $servers = new GD_Model_ServersMapper();
     $server = new GD_Model_Server();
     $server_id = $this->_request->getParam('id', 0);
     if ($server_id > 0 && $this->_method == "edit") {
         $this->view->headTitle('Edit Server');
         $servers->find($server_id, $server);
     } else {
         if ($this->_method == "add") {
             $this->view->headTitle('Add Server');
             $server->setProjectsId($project->getId());
             $server->setName("New Server");
             $server->setPort(21);
         }
     }
     $this->view->server = $server;
     if ($this->getRequest()->isPost()) {
         if ($form->isValid($this->getRequest()->getParams())) {
             $server->setName($this->_request->getParam('name', false));
             $server->setHostname($this->_request->getParam('hostname', false));
             $server->setConnectionTypesId($this->_request->getParam('connectionTypeId', false));
             $server->setPort($this->_request->getParam('port', 21));
             $server->setUsername($this->_request->getParam('username', false));
             $server->setPassword($this->_request->getParam('password', false));
             $server->setRemotePath($this->_request->getParam('remotePath', false));
             if ($server->getPort() <= 0) {
                 $server->setPort(21);
             }
             // Test the connection first
             $ftp = new GD_Ftp($server);
             $result = $ftp->testConnection();
             if (!$result) {
                 //throw new GD_Exception("Failed to test connection to FTP server.");
                 $form->addError("FTP_CONNECT_ERROR");
                 $this->view->ftpMessage = $ftp->getLastError();
             } else {
                 $servers->save($server);
                 $this->_redirect($this->getFrontController()->getBaseUrl() . "/project/" . $this->_getParam("project") . "/settings");
             }
         }
     } else {
         $data = array('name' => $server->getName(), 'hostname' => $server->getHostname(), 'connectionTypeId' => $server->getConnectionTypesId(), 'port' => $server->getPort(), 'username' => $server->getUsername(), 'password' => $server->getPassword(), 'remotePath' => $server->getRemotePath());
         $form->populate($data);
     }
 }