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; }
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; } }
/** * 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); }
/** * 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"); } }