mirror of
https://github.com/xevidos/codiad.git
synced 2024-11-11 05:36:34 +01:00
265 lines
5.9 KiB
PHP
Executable File
265 lines
5.9 KiB
PHP
Executable File
<?php
|
|
|
|
/*
|
|
* Copyright (c) Codiad & Kent Safranski (codiad.com), distributed
|
|
* as-is and without warranty under the MIT License. See
|
|
* [root]/license.txt for more. This information must remain intact.
|
|
*/
|
|
|
|
require_once('../../common.php');
|
|
require_once('./class.project.php');
|
|
|
|
//////////////////////////////////////////////////////////////////
|
|
// Verify Session or Key
|
|
//////////////////////////////////////////////////////////////////
|
|
|
|
checkSession();
|
|
|
|
$Project = new Project();
|
|
$Project->projects = $Project->get_projects();
|
|
|
|
if( ! is_array( $Project->projects ) ) {
|
|
|
|
$Project->projects = array();
|
|
}
|
|
|
|
|
|
if( $_GET['action'] == 'add_user' ) {
|
|
|
|
$invalid_users = array(
|
|
"",
|
|
"null",
|
|
"undefined"
|
|
);
|
|
|
|
if( ! isset( $_GET['access'] ) || in_array( $_GET['access'], $invalid_users ) || ! in_array( $_GET['access'], array_keys( Permissions::LEVELS ) ) ) {
|
|
|
|
exit( formatJSEND( "error", "No access set." ) );
|
|
} else {
|
|
|
|
$Project->access = Permissions::LEVELS[$_GET['access']];
|
|
}
|
|
|
|
if( isset( $_GET['username'] ) && ! in_array( $_GET['username'], $invalid_users ) ) {
|
|
|
|
$Project->user = $_GET['username'];
|
|
} else {
|
|
|
|
echo formatJSEND( "error", "No username set." );
|
|
return;
|
|
}
|
|
|
|
if( $_GET['project_path'] != '' ) {
|
|
|
|
$Project->path = $_GET['project_path'];
|
|
} else {
|
|
|
|
echo formatJSEND( "error", "No project path set." );
|
|
return;
|
|
}
|
|
|
|
if( $Project->check_owner( $_GET["project_path"], true ) ) {
|
|
|
|
$Project->add_user();
|
|
} else {
|
|
|
|
echo formatJSEND( "error", "You can not manage this project." );
|
|
}
|
|
}
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////
|
|
// Create Project
|
|
//////////////////////////////////////////////////////////////////
|
|
|
|
if( $_GET['action'] == 'create' ) {
|
|
|
|
$Project->name = $_GET['project_name'];
|
|
|
|
if( $_GET['public_project'] == 'true' ) {
|
|
|
|
$Project->public_project = true;
|
|
}
|
|
|
|
if( $_GET['project_path'] != '' ) {
|
|
|
|
$Project->path = $_GET['project_path'];
|
|
} else {
|
|
|
|
$Project->path = $_GET['project_name'];
|
|
}
|
|
// Git Clone?
|
|
if( ! empty( $_GET['git_repo'] ) ) {
|
|
|
|
$Project->gitrepo = $_GET['git_repo'];
|
|
$Project->gitbranch = $_GET['git_branch'];
|
|
}
|
|
$Project->Create();
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////
|
|
// Return Current
|
|
//////////////////////////////////////////////////////////////////
|
|
|
|
if( $_GET['action'] == 'current' ) {
|
|
|
|
if( isset( $_SESSION['project'] ) ) {
|
|
|
|
echo formatJSEND( "success", $_SESSION['project'] );
|
|
} else {
|
|
|
|
echo formatJSEND( "error", "No Project Returned" );
|
|
}
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////
|
|
// Delete Project
|
|
//////////////////////////////////////////////////////////////////
|
|
|
|
if( $_GET['action'] == 'delete' ) {
|
|
|
|
if( isset( $_GET['project_path'] ) ) {
|
|
|
|
$Project->path = $_GET['project_path'];
|
|
$Project->Delete();
|
|
}
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////
|
|
// Get Project Access
|
|
//////////////////////////////////////////////////////////////////
|
|
|
|
if( $_GET['action'] == 'get_access' ) {
|
|
|
|
$access = $Project->get_access( $_GET['project_id'] );
|
|
echo formatJSEND( "success", $access );
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////
|
|
// Get Current Project
|
|
//////////////////////////////////////////////////////////////////
|
|
|
|
$no_return = false;
|
|
if( isset( $_GET['no_return'] ) ) {
|
|
|
|
$no_return = true;
|
|
}
|
|
|
|
if( $_GET['action'] == 'get_current' ) {
|
|
|
|
if( ! isset( $_SESSION['project'] ) ) {
|
|
|
|
// Load default/first project
|
|
if( $no_return ) {
|
|
|
|
$Project->no_return = true;
|
|
}
|
|
$project = $Project->GetFirst();
|
|
|
|
if( $project == null ) {
|
|
|
|
exit( formatJSEND( "error", "Error, Could not load a projet." ) );
|
|
} else {
|
|
|
|
exit( formatJSEND( "success", $project ) );
|
|
}
|
|
} else {
|
|
|
|
// Load current
|
|
$Project->path = $_SESSION['project'];
|
|
$project_name = $Project->GetName();
|
|
if( ! $no_return ) {
|
|
|
|
exit( formatJSEND( "success", array( "name" => $project_name, "path" => $_SESSION['project'] ) ) );
|
|
}
|
|
}
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////
|
|
// Check Project Owner
|
|
//////////////////////////////////////////////////////////////////
|
|
|
|
if( $_GET['action'] == 'get_owner' ) {
|
|
|
|
$Project->path = $_GET['project_path'];
|
|
$owner = $Project->get_owner();
|
|
try {
|
|
|
|
$return = json_decode( $owner );
|
|
exit( formatJSEND( "error", null ) );
|
|
} catch( exception $e ) {
|
|
|
|
exit( formatJSEND( "success", array( "owner" => $owner ) ) );
|
|
}
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////
|
|
// Open Project
|
|
//////////////////////////////////////////////////////////////////
|
|
|
|
if( $_GET['action'] == 'open' ) {
|
|
|
|
if( ! isset( $_GET['path'] ) || ! Permissions::has_read( $_GET['path'] ) ) {
|
|
|
|
die( formatJSEND( "error", "No Access to path " . $_GET['path'] ) );
|
|
}
|
|
$Project->path = $_GET['path'];
|
|
$Project->Open();
|
|
}
|
|
|
|
if( $_GET['action'] == 'remove_user' ) {
|
|
|
|
$invalid = array(
|
|
"",
|
|
"null",
|
|
"undefined"
|
|
);
|
|
|
|
if( ! in_array( $_GET['username'], $invalid ) ) {
|
|
|
|
$Project->user = $_GET['username'];
|
|
} else {
|
|
|
|
exit( formatJSEND( "error", "No username set." ) );
|
|
}
|
|
|
|
if( ! in_array( $_GET['project_path'], $invalid ) ) {
|
|
|
|
$Project->path = $_GET['project_path'];
|
|
} else {
|
|
|
|
exit( formatJSEND( "error", "No project path set." ) );
|
|
}
|
|
|
|
if( ! in_array( $_GET['project_id'], $invalid ) ) {
|
|
|
|
$Project->project_id = $_GET['project_id'];
|
|
} else {
|
|
|
|
exit( formatJSEND( "error", "No project id set." ) );
|
|
}
|
|
|
|
if( $Project->check_owner( $_GET["project_path"], true ) ) {
|
|
|
|
$Project->remove_user();
|
|
} else {
|
|
|
|
exit( formatJSEND( "error", "You can not manage this project." ) );
|
|
}
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////
|
|
// Rename Project
|
|
//////////////////////////////////////////////////////////////////
|
|
|
|
if( $_GET['action'] == 'rename' ) {
|
|
|
|
if( ! isset( $_GET['project_path'] ) || ! Permissions::has_owner( $_GET['project_path'] ) ) {
|
|
|
|
die( formatJSEND( "error", "No Access" ) );
|
|
}
|
|
$Project->path = $_GET['project_path'];
|
|
$Project->Rename();
|
|
}
|
|
|