Beispiel #1
0
 public function indexAction()
 {
     $mprojects = new GD_Model_ProjectsMapper();
     $projects = $mprojects->fetchAll();
     $this->view->projects = $projects;
     $this->view->headTitle('Home');
     $this->view->headLink()->appendStylesheet("/css/pages/home.css");
     $this->view->headLink()->appendStylesheet("/css/template/table.css");
 }
 public function editAction()
 {
     $this->view->headTitle('Configuration Management');
     $this->view->headLink()->appendStylesheet("/css/template/form.css");
     $this->view->headLink()->appendStylesheet("/css/pages/configs_edit.css");
     $projects = new GD_Model_ProjectsMapper();
     $project_slug = $this->_getParam("project");
     if ($project_slug != "") {
         $project = $projects->getProjectBySlug($project_slug);
     }
     $this->view->project = $project;
     $configs_map = new GD_Model_ConfigsMapper();
     $config = new GD_Model_Config();
     $config_id = $this->_getParam("id");
     $configs_servers_map = new GD_Model_ConfigsServersMapper();
     $config_server_ids = array();
     $servers_map = new GD_Model_ServersMapper();
     $servers = $servers_map->getServersByProject($project->getId());
     $this->view->servers = $servers;
     $user = GD_Auth_Database::GetLoggedInUser();
     if ($config_id > 0) {
         $configs_map->find($config_id, $config);
         $config_servers = $configs_servers_map->getAllServersForConfig($config->getId());
         foreach ($config_servers as $cs) {
             $config_server_ids[] = $cs->getServersId();
         }
     } else {
         $config->setProjectsId($project->getId());
         $config->setDateAdded(date("Y-m-d H:i:s"));
         $config->setAddedUsersId($user->getId());
         foreach ($servers as $server) {
             $config_server_ids[] = $server->getId();
         }
     }
     $this->view->config_server_ids = $config_server_ids;
     if ($this->getRequest()->isPost()) {
         // First save the config file itself
         $config->setFilename($this->_getParam("filename", ""));
         $config->setContent($this->_getParam("configContent", ""));
         $config->setUpdatedUsersId($user->getId());
         $configs_map->save($config);
         // Then loop through the config_servers and update
         $configs_servers_map->deleteAllServersForConfig($config->getId());
         $add_to_servers = $this->_getParam("servers", array());
         foreach ($add_to_servers as $server_id) {
             $cs = new GD_Model_ConfigServer();
             $cs->setConfigsId($config->getId());
             $cs->setServersId($server_id);
             $configs_servers_map->save($cs);
         }
         $this->_redirect($this->getFrontController()->getBaseUrl() . "/project/" . $this->_getParam("project") . "/configs");
     } else {
         $this->view->config = $config;
     }
 }
 public function populateView()
 {
     $projects = new GD_Model_ProjectsMapper();
     $project_slug = $this->_getParam("project");
     if ($project_slug != "") {
         $project = $projects->getProjectBySlug($project_slug);
     }
     $deployments_map = new GD_Model_DeploymentsMapper();
     $this->view->deployments = $deployments_map->getDeploymentsByProject($project->getId());
     $this->view->project = $project;
 }
Beispiel #4
0
 public function isValid($value)
 {
     $this->_setValue($value);
     $slug = MAL_Util_TextFormatting::MakeSlug($value);
     $m_projects = new GD_Model_ProjectsMapper();
     $existing_project = $m_projects->getProjectBySlug($slug);
     if (is_null($existing_project)) {
         return true;
     } else {
         $this->_error(self::ISUNIQUE);
         return false;
     }
 }
Beispiel #5
0
 /**
  * Implement this by setting $obj values (e.g. $obj->setId($row->Id) from a DB row
  * @param GD_Model_Config $obj
  * @param Zend_Db_Table_Row_Abstract $row
  */
 protected function populateObjectFromRow(&$obj, Zend_Db_Table_Row_Abstract $row)
 {
     $obj->setId($row->id)->setProjectsId($row->projects_id)->setDateAdded($row->date_added)->setAddedUsersId($row->added_users_id)->setDateUpdated($row->date_updated)->setUpdatedUsersId($row->updated_users_id)->setFilename($row->filename)->setContent($row->content);
     $p_map = new GD_Model_ProjectsMapper();
     $project = new GD_Model_Project();
     $p_map->populateObjectFromRow($project, $row->findParentRow('GD_Model_DbTable_Projects'));
     $obj->setProject($project);
     $u_map = new GD_Model_UsersMapper();
     $added_user = new GD_Model_User();
     $u_map->populateObjectFromRow($added_user, $row->findParentRow('GD_Model_DbTable_Users', 'GD_Model_DbTable_Users+Added'));
     $obj->setAddedUser($added_user);
     $updated_user = new GD_Model_User();
     $u_map->populateObjectFromRow($updated_user, $row->findParentRow('GD_Model_DbTable_Users', 'GD_Model_DbTable_Users+Updated'));
     $obj->setUpdatedUser($updated_user);
 }
Beispiel #6
0
 /**
  * Initialise the navigation system
  *
  * (non-PHPdoc)
  * @see Zend_Controller_Plugin_Abstract::preDispatch()
  */
 public function preDispatch(Zend_Controller_Request_Abstract $request)
 {
     // Get the view to populate the navigation and logged_in status
     $view = Zend_Controller_Action_HelperBroker::getExistingHelper('ViewRenderer')->view;
     $view->logged_in = Zend_Auth::getInstance()->hasIdentity();
     // If we are on the error controller, return immediately to prevent
     // any database errors happening on error page
     if ($request->controller == "error") {
         return;
     }
     $nav = array();
     if ($view->logged_in) {
         // Always add home link
         $nav[] = array("label" => "Home", "id" => "home-link", "uri" => "/home");
         // If we're in a project, add in the things you can do
         if ($project_slug = $request->getParam("project")) {
             $projects = new GD_Model_ProjectsMapper();
             $project = $projects->getProjectBySlug($project_slug);
             if ($project instanceof GD_Model_Project) {
                 $nav[] = array("label" => "History", "id" => "deployments-link", "uri" => "/project/{$project_slug}/history");
                 $nav[] = array("label" => "Configs", "id" => "configs-link", "uri" => "/project/{$project_slug}/configs");
                 $nav[] = array("label" => "Settings", "id" => "settings-link", "uri" => "/project/{$project_slug}/settings");
                 $nav[] = array("label" => "Deploy", "id" => "deploy-link", "uri" => "/project/{$project_slug}/deploy");
             }
         } else {
             $nav[] = array("label" => "Profile", "id" => "profile-link", "uri" => "/profile");
             // Get the logged in user - if they're an admin, add the admin
             // menu
             $user = GD_Auth_Database::GetLoggedInUser();
             if ($user->isAdmin()) {
                 $nav[] = array("label" => "Admin", "id" => "admin-link", "uri" => "/admin");
             }
         }
     } else {
         $nav[] = array("label" => "Login", "id" => "login-link", "uri" => "/auth/login");
     }
     // Create a Zend_Navigation object from the above array
     $nav = new Zend_Navigation($nav);
     $view->navigation($nav);
     // This finds out if the current URL matches one of the menu items
     // and sets the active page if it does.
     $uri = $request->getRequestUri();
     $page = $view->navigation()->findOneBy("uri", $uri);
     if ($page) {
         $page->setActive();
     }
 }
 /**
  * Implement this by setting $obj values (e.g. $obj->setId($row->Id) from a DB row
  * @param GD_Model_Deployment $obj
  * @param Zend_Db_Table_Row_Abstract $row
  */
 protected function populateObjectFromRow(&$obj, Zend_Db_Table_Row_Abstract $row)
 {
     $obj->setId($row->id)->setUsersId($row->users_id)->setProjectsId($row->projects_id)->setWhen($row->when)->setServersId($row->servers_id)->setFromRevision($row->from_revision)->setToRevision($row->to_revision)->setComment($row->comment)->setDeploymentStatusesId($row->deployment_statuses_id);
     $u_map = new GD_Model_UsersMapper();
     $user = new GD_Model_User();
     $u_map->populateObjectFromRow($user, $row->findParentRow('GD_Model_DbTable_Users'));
     $obj->setUser($user);
     $p_map = new GD_Model_ProjectsMapper();
     $project = new GD_Model_Project();
     $p_map->populateObjectFromRow($project, $row->findParentRow('GD_Model_DbTable_Projects'));
     $obj->setProject($project);
     $s_map = new GD_Model_ServersMapper();
     $server = new GD_Model_Server();
     $s_map->populateObjectFromRow($server, $row->findParentRow('GD_Model_DbTable_Servers'));
     $obj->setServer($server);
     $ds_map = new GD_Model_DeploymentStatusesMapper();
     $deployment_status = new GD_Model_DeploymentStatus();
     $ds_map->populateObjectFromRow($deployment_status, $row->findParentRow('GD_Model_DbTable_DeploymentStatuses'));
     $obj->setDeploymentStatus($deployment_status);
 }
 public function confirmDeleteAction()
 {
     $projects = new GD_Model_ProjectsMapper();
     $project_slug = $this->_getParam("project");
     $project = $projects->getProjectBySlug($project_slug);
     $servers = new GD_Model_ServersMapper();
     $server = new GD_Model_Server();
     $server_id = $this->_request->getParam('id', 0);
     $servers->find($server_id, $server);
     $this->view->project = $project;
     $this->view->server = $server;
     $this->view->headTitle('Confirm Server Delete');
     $this->view->headLink()->appendStylesheet("/css/template/table.css");
     $this->view->headLink()->appendStylesheet("/css/pages/confirm_delete.css");
 }
 public function getLatestRevisionAction()
 {
     // Get project ID from url
     $projects = new GD_Model_ProjectsMapper();
     $project_slug = $this->_getParam("project");
     if ($project_slug != "") {
         $project = $projects->getProjectBySlug($project_slug);
     }
     // Git pull before anything
     $git = GD_Git::FromProject($project);
     $git->gitPull();
     $data = array();
     $last_commit = $git->getLastCommit();
     if (is_array($last_commit)) {
         $to_revision = $last_commit['HASH'];
         $data['toRevision'] = $to_revision;
     }
     $this->_response->setHeader('Content-type', 'text/plain');
     $this->_helper->viewRenderer->setNoRender();
     $this->_helper->layout->disableLayout();
     $jsonData = Zend_Json::encode($data);
     $this->_response->appendBody($jsonData);
 }
 public function recloneAction()
 {
     $projects = new GD_Model_ProjectsMapper();
     $project_slug = $this->_getParam("project");
     $project = $projects->getProjectBySlug($project_slug);
     $git = new GD_Git($project);
     $git->deleteRepository();
     $result = $git->gitClone();
     if ($result !== true) {
         throw new GD_Exception("Reclone failed [{$result}].");
     }
     if ($this->_getParam("return")) {
         $this->_redirect(base64_decode($this->_getParam("return")));
     } else {
         $this->_redirect("/project/{$project_slug}/settings");
     }
 }