/** * update_access_levels * Update access levels of repos * * @param type $repo_id * @param type $permissions * * @return boolean */ function update_access_levels($repo_id = 0, $permissions = "") { $access_table_name = TABLE_PREFIX . 'rt_gitolite_access_master'; if ($repo_id == 0 || $repo_id == "" || $permissions == "") { return false; } /* echo "update ".$access_table_name." set permissions = '$permissions' where repo_id = ".DB::escape($repo_id); die(); */ $update_access = DB::execute("update " . $access_table_name . " set permissions = " . DB::escape($permissions) . " where repo_id = " . DB::escape($repo_id)); ProjectGitolite::update_repo_conf_column(DB::escape($repo_id), $permissions); return true; }
/** * Delete selected repository, if repository is gitolite repository or remote repository delete that too. */ function delete_git() { if (($this->request->isAsyncCall() || $this->request->isApiCall()) && $this->request->isSubmitted()) { if ($this->active_repository->isLoaded()) { if ($this->active_repository->canDelete($this->logged_user)) { try { $repo_table_name = TABLE_PREFIX . "rt_gitolite_repomaster"; /* echo "DELETE from $repo_table_name where repo_fk = '".$this->active_repository->getId()."'"; die(); */ $this->active_repository->delete(); $repo_table_name = TABLE_PREFIX . "rt_gitolite_repomaster"; $repo_access_table_name = TABLE_PREFIX . "rt_gitolite_access_master"; $remote_repo_table_name = TABLE_PREFIX . "rt_remote_repos"; $repo_fk = $this->active_repository->getId(); $chk_gitolite = ProjectGitolite::is_gitolite_repo($repo_fk); //print_r($chk_gitolite); if (is_array($chk_gitolite) && sizeof($chk_gitolite) > 0 && $chk_gitolite['chk_gitolite'] > 0) { DB::execute("DELETE repo_acc,repo_tb FROM {$repo_table_name} repo_tb\n JOIN {$repo_access_table_name} repo_acc ON repo_acc.repo_id = repo_tb.repo_id\n WHERE repo_tb.repo_fk = '" . $repo_fk . "'"); $repo_path = GIT_FILES_PATH . "/" . $chk_gitolite["repo_name"]; @ProjectGitolite::remove_directory($repo_path); } else { $remote_name_arr = DB::executeFirstRow("SELECT remote_repo_name,actual_repo_name from {$remote_repo_table_name} where repo_fk = '" . $repo_fk . "'"); if ($remote_name_arr) { $remote_name = $remote_name_arr["actual_repo_name"]; } DB::execute("DELETE from {$remote_repo_table_name} where repo_fk = '" . $repo_fk . "'"); $repo_path = GIT_FILES_PATH . "/" . $remote_name; if ($remote_name != "") { @ProjectGitolite::remove_directory($repo_path); } } $this->response->respondWithData($this->active_repository, array('as' => 'repository')); } catch (Exception $e) { $this->response->exception($e); } // if } else { $this->response->forbidden(); } // if } else { $this->response->notFound(); } // if } else { $this->response->badRequest(); } // if }
/** * Render conf file once mapping is done * @return string message */ function render_after_clone_conf() { $res = ProjectGitolite::render_conf_file(); $settings = GitoliteAdmin::get_admin_settings(); $dir = $settings['gitoliteadminpath'] . "gitolite-admin"; $command = "cd " . $dir . " && git add * && git commit -am 'render conf file' && git push || echo 'Not found'"; exec($command, $output, $return_var); //print_r($output); die("ok"); }
function add_ftp_connections() { /* $cus = new CustomFields(); //$cus->initForType("Users",2); $flds = $cus->getCustomFieldsByType("Users"); //$cus->initForType("Project",1); if(is_array($flds) && count($flds) > 0) { foreach ($flds as $key => $value) { $settings["$key"]["label"] = "Comments"; $settings["$key"]["is_enabled"] = "1"; $cus->setCustomFieldsByType("Users", $settings); } } print_r($flds); die(); */ //$settings["label"]; //$cus->setCustomFieldsByType("Project", $settings); $repo_branches = $this->active_repository; $eng = $repo_branches->getEngine($this->active_project->getId()); //print_r($eng->getBranches); $branches_array = $eng->getBranches(); $repo_branches_str = implode(",", $branches_array); $repo_id = array_var($_GET, 'project_source_repository_id'); //project objects id $repo_obj = new ProjectSourceRepository($repo_id); $src_repo_id = $repo_obj->getIntegerField1(); if ($this->request->isSubmitted()) { // check for form submission $post_data = $this->request->post(); //print_r($post_data); try { $errors = new ValidationErrors(); $ftpdetials = $post_data["ftpdetials"]; $fld_cnt = count($ftpdetials["ftp_domain"]); //print_r($ftpdetials); //die(); $array_urls = array(); for ($i = 0; $i < $fld_cnt; $i++) { if ($ftpdetials["ftp_domain"][$i] == "" || $ftpdetials["ftp_port"][$i] == "" || $ftpdetials["ftp_username"][$i] == "" || $ftpdetials["ftp_password"][$i] == "" || $ftpdetials["branches"][$i] == "" || $ftpdetials["ftp_dir"][$i] == "") { $errors->addError("Please fill all connection parameters."); } else { $arra_conn[$i] = array("ftp_domain" => $ftpdetials["ftp_domain"][$i], "ftp_port" => $ftpdetials["ftp_port"][$i], "ftp_username" => $ftpdetials["ftp_username"][$i], "ftp_password" => $ftpdetials["ftp_password"][$i], "branches" => $ftpdetials["branches"][$i], "ftp_dir" => $ftpdetials["ftp_dir"][$i]); } /* if(!filter_var($value, FILTER_VALIDATE_URL) && $value != "") { $errors->addError("$value is not a valid URL."); } else { $array_urls[] = $value; } */ } if ($errors->hasErrors()) { throw $errors; } DB::beginWork('Add FTP Details @ ' . __CLASS__); if (is_array($arra_conn) && count($arra_conn) > 0) { $ftp_details_exists = ProjectGitolite::ftp_connections_exists($src_repo_id); if (is_array($ftp_details_exists) && $ftp_details_exists["ftp_cnt"] > 0) { $ftp_table_name = TABLE_PREFIX . "rt_ftp_connections"; DB::execute("DELETE FROM {$ftp_table_name} where repo_fk = '" . $src_repo_id . "'"); } for ($i = 0; $i < $fld_cnt; $i++) { $ftp_details_add = ProjectGitolite::add_ftp_details($arra_conn[$i], $src_repo_id, $this->logged_user->getId()); if (!$ftp_details_add) { $errors->addError('Problem occured while saving data, please try again.'); throw $errors; } } DB::commit('FTP details Added @ ' . __CLASS__); $this->response->ok(); } else { $errors->addError("Error while saving FTP details."); throw $errors; } } catch (Exception $e) { DB::rollback('Failed to add FTP details @ ' . __CLASS__); $this->response->exception($e); } } $ftp_details_exists = ProjectGitolite::get_connection_details($src_repo_id); $this->response->assign(array('repo_branches_str' => $repo_branches_str, 'branches_array' => $branches_array, 'ftp_test_url' => Router::assemble('test_ftp_conn', array('project_slug' => $this->active_project->getSlug(), 'project_source_repository_id' => $repo_id)), 'form_action' => Router::assemble('add_ftp_conn', array('project_slug' => $this->active_project->getSlug(), 'project_source_repository_id' => $repo_id)), "ftp_details_exists" => $ftp_details_exists)); }
/** * Remove a specific publick key * @return void */ function remove_key() { $get_data = $this->request->get(); if (isset($get_data['key_id'])) { $key_id = $get_data['key_id']; $filename = GitoliteAc::get_filename($key_id); if ($filename != "") { $delete_keys = GitoliteAc::remove_keys($key_id); if (!$delete_keys) { throw new Exception("Can't delete key"); } else { $settings = GitoliteAdmin::get_admin_settings(); $dirpath = $settings['gitoliteadminpath'] . "gitolite-admin/keydir/"; $path = $dirpath . $filename . ".pub"; @unlink($path); $active_user = $this->active_user; ProjectGitolite::update_repo_conf_on_public_key($active_user->getId()); $command = "cd " . $dirpath . " && git add * && git commit -am 'deleted key {$filename}.pub' && git push || echo 'Not found'"; exec($command, $output); } } } echo '<script type="text/javascript">window.location.href = "' . $this->active_user->getViewUrl() . '"</script>'; die(0); }