mirror of
https://gitlab.com/CodeSolutionsProject/CodeShare.git
synced 2026-03-05 09:52:02 +01:00
\#5, TODO: Add codes and add sources and versions
This commit is contained in:
@@ -132,7 +132,8 @@ class DB
|
||||
*/
|
||||
public function loadDiff($id, $lang)
|
||||
{
|
||||
$query = "SELECT Lang,Code,Version FROM Sources NATURAL JOIN Codes WHERE IDC=$id AND Lang<>'$lang' AND Version = (SELECT MAX(Version) FROM Sources NATURAL JOIN Codes WHERE IDC=$id AND Lang<>'$lang')";
|
||||
$lang=dbw_escape_string($this->conn,$lang);
|
||||
$query = "SELECT Lang,Code,Version FROM Sources WHERE IDC=$id AND Lang<>'$lang' AND Version = (SELECT MAX(Version) FROM Sources WHERE IDC=$id AND Lang='$lang')";
|
||||
$code = dbw_query($this->conn, $query);
|
||||
return $code;
|
||||
}
|
||||
@@ -459,7 +460,7 @@ class DB
|
||||
*/
|
||||
public function updatePass($idu, $pass)
|
||||
{
|
||||
$query = "UPDATE Users SET password='" . hash('sha256', $pass) . "' WHERE IDU='$idu'";
|
||||
$query = "UPDATE Users SET pass='" . hash('sha256', $pass) . "' WHERE IDU='$idu'";
|
||||
dbw_query($this->conn, $query);
|
||||
}
|
||||
}
|
||||
@@ -35,17 +35,29 @@ $string = file_get_contents(__DIR__."/../data/supported.json");
|
||||
$app["supported"] = json_decode($string, true);
|
||||
|
||||
$app['db']=null;
|
||||
try {
|
||||
$app['db'] = new DB();
|
||||
}catch (Exception $ex){
|
||||
exit();
|
||||
function connectDB(){
|
||||
global $app;
|
||||
try {
|
||||
$app['db'] = new DB();
|
||||
}catch (Exception $ex){
|
||||
$app->abort('503','ERROR en la Base de Datos');
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/* Security */
|
||||
$app['security.role_hierarchy'] = array(
|
||||
'ROLE_DELETE' => array('ROLE_COMMON'),
|
||||
'ROLE_COMMON' => array('ROLE_USER'),
|
||||
);
|
||||
/* End Security */
|
||||
|
||||
$app->boot();
|
||||
|
||||
/* Basics */
|
||||
$app->get('/', function (Request $request) use($app) {
|
||||
|
||||
connectDB();
|
||||
$user = getUser($app);
|
||||
$query = $app['db']->loadLast();
|
||||
$last = lastToArray($app["db"],$query,$app['supported']);
|
||||
|
||||
@@ -55,32 +67,42 @@ $app->get('/', function (Request $request) use($app) {
|
||||
"last" => $last,
|
||||
"supported" => $app["supported"],
|
||||
"page" => "home",
|
||||
"grouped" => groupByCategory($app["supported"]))
|
||||
"grouped" => groupByCategory($app["supported"])),
|
||||
'user' => $user
|
||||
));
|
||||
})->bind('home');
|
||||
|
||||
$app->get('/doc', function (Request $request) use($app){
|
||||
connectDB();
|
||||
$user = getUser($app);
|
||||
$page = array(
|
||||
"title" => "Documentation",
|
||||
"description" => "All documentation about how to upload code in CodeShare",
|
||||
"page" => "doc"
|
||||
"page" => "doc",
|
||||
);
|
||||
return $app['twig']->render($app['fronthtml'].'/doc.twig', array("page" => $page));
|
||||
return $app['twig']->render($app['fronthtml'].'/doc.twig', array("page" => $page, "user" => $user));
|
||||
})->bind('doc');
|
||||
|
||||
$app->get('/about', function (Request $request) use($app){
|
||||
connectDB();
|
||||
$user = getUser($app);
|
||||
$page = array(
|
||||
"title" => "About CodeShare",
|
||||
"description" => "Developed by JKA Network's Team",
|
||||
"page" => "about",
|
||||
);
|
||||
return $app['twig']->render($app['fronthtml'].'/about.twig', array("page" => $page));
|
||||
return $app['twig']->render($app['fronthtml'].'/about.twig', array("page" => $page,'user'=>$user));
|
||||
})->bind('about');
|
||||
|
||||
/* Codes */
|
||||
$app->get('/code/{idc}/{lang}/{version}', function (Request $request, $idc, $lang, $version) use($app){
|
||||
$app->get('/code/{lang}-{idc}-{version}', function (Request $request, $lang, $idc, $version) use($app){
|
||||
connectDB();
|
||||
$user = getUser($app);
|
||||
|
||||
$array = $app['db']->loadAll($idc,$lang,$version);
|
||||
if(!$array){
|
||||
$app->abort('404');
|
||||
}
|
||||
$page = array(
|
||||
"page" => 'code',
|
||||
"title" => "$array[Name] by $array[nick]",
|
||||
@@ -104,5 +126,186 @@ $app->get('/code/{idc}/{lang}/{version}', function (Request $request, $idc, $lan
|
||||
"code" => $code,
|
||||
"otherImplementation" => $otherImplementation,
|
||||
"supported" => $app['supported'],
|
||||
"user" => $user
|
||||
));
|
||||
})->bind('code');
|
||||
})->bind('code');
|
||||
|
||||
$app->get('/code/{lang}-{idc}', function(Request $request, $lang, $idc) use($app){
|
||||
connectDB();
|
||||
$user = getUser($app);
|
||||
|
||||
$array = $app['db']->loadOtherVersion($idc,$lang);
|
||||
$other = otherVersionToArray($app['db'],$array,$app['supported']);
|
||||
$name = $other[0]['name'];
|
||||
|
||||
$page = array(
|
||||
"title" => "Other versions of $name",
|
||||
"description" => "All differents version of $name uploaded in CodeShare",
|
||||
"last" => $other,
|
||||
"page" => ""
|
||||
);
|
||||
return $app['twig']->render($app['fronthtml'].'/otherVersion.twig', array(
|
||||
"page" => $page, "user" => $user
|
||||
));
|
||||
})->bind('codeVer');
|
||||
|
||||
/* User */
|
||||
$app->get('/tos',function(Request $request) use($app){
|
||||
connectDB();
|
||||
$user = getUser($app);
|
||||
$page = array(
|
||||
"title" => "Terms of service",
|
||||
"description" => "Terms of services and privacy policies",
|
||||
"page" => ""
|
||||
);
|
||||
|
||||
return $app['twig']->render($app['fronthtml'].'/TOS.twig', array("page" => $page, "user" => $user));
|
||||
})->bind('tos');
|
||||
|
||||
$app->get('/login', function(Request $request) use ($app){
|
||||
connectDB();
|
||||
$user = getUser($app);
|
||||
if($user != null){
|
||||
return $app->redirect($app["url_generator"]->generate('home'));
|
||||
}
|
||||
if ($request->getMethod() == 'GET'){
|
||||
return loginRegister('login');
|
||||
}
|
||||
else{
|
||||
$state = checkInfo($request);
|
||||
return loginOrRegister($state,$request);
|
||||
}
|
||||
|
||||
})->bind('login')->method('GET|POST');
|
||||
|
||||
$app->get('/signup', function(Request $request) use ($app){
|
||||
connectDB();
|
||||
$user = getUser($app);
|
||||
if($user != null){
|
||||
return $app->redirect($app["url_generator"]->generate('home'));
|
||||
}
|
||||
|
||||
if ($request->getMethod() == 'GET'){
|
||||
return loginRegister('sign-up');
|
||||
}else{
|
||||
$state = checkInfo($request);
|
||||
return loginOrRegister($state,$request);
|
||||
}
|
||||
|
||||
})->bind('register')->method('GET|POST');
|
||||
|
||||
function loginRegister($default,$state=0){
|
||||
global $app;
|
||||
|
||||
$page = array(
|
||||
"title" => ucfirst($default),
|
||||
"description" => "Start now in CodeShare",
|
||||
"page" => "$default",
|
||||
"state" => $state, //0=no logged, 1 login fail, 2 register fail, 3 all correct (render home)
|
||||
);
|
||||
return $app['twig']->render($app['fronthtml']."/loginregister.twig", array("page" => $page));
|
||||
}
|
||||
|
||||
function loginOrRegister($state,$request){
|
||||
global $app;
|
||||
|
||||
switch ($state){
|
||||
case 3:
|
||||
return loginRegister('login',1);
|
||||
case 1:
|
||||
if(checklogin($request->get('email'),$request->get('pwd'))){
|
||||
return $app->redirect($app["url_generator"]->generate('home'));
|
||||
}else{
|
||||
return loginRegister("login",1);
|
||||
}
|
||||
case 2:
|
||||
if(register($request->get('emailre'),$request->get('emailre-re'),
|
||||
$request->get('pwdre'), $request->get('pwdre-re'),$request->get('nick'))){
|
||||
return $app->redirect($app["url_generator"]->generate('home'));
|
||||
}else{
|
||||
return loginRegister("sing-up",2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$app->get('logout',function(Request $request) use ($app){
|
||||
logout();
|
||||
return $app->redirect($app['url_generator']->generate('home'));
|
||||
})->bind('logout');
|
||||
|
||||
$app->get('/user', function(Request $request) use ($app){
|
||||
connectDB();
|
||||
$user = getUser($app);
|
||||
if($user == null)
|
||||
$app->abort('403');
|
||||
|
||||
$status = 0;
|
||||
if($request->getMethod() == 'POST'){
|
||||
$passact = $request->get("passact");
|
||||
$newpass = $request->get("newpass");
|
||||
$newpassre = $request->get("newpass-re");
|
||||
if($app['db']->checkPass($user['email'],$passact) && $newpass == $newpassre){
|
||||
$status=1;
|
||||
$app['db']->updatePass($user['IDU'],$newpass);
|
||||
}else
|
||||
$status=2;
|
||||
$app['db']->close();
|
||||
}
|
||||
$page = array(
|
||||
"page" => "user",
|
||||
"title" => "$user[nick]",
|
||||
"description" => "NOT RELEVANT",
|
||||
"status" => $status
|
||||
);
|
||||
return $app['twig']->render($app['fronthtml']."/user.twig",array("page"=>$page,"user"=>$user));
|
||||
|
||||
})->bind('user')->method('GET|POST');
|
||||
|
||||
/* Error Codes */
|
||||
function HTTPError($code){
|
||||
switch($code){
|
||||
case 401:
|
||||
$text = "Unauthorized user";
|
||||
break;
|
||||
case 403:
|
||||
$text = "Forbidden page";
|
||||
break;
|
||||
case 404:
|
||||
$text = "Page not found";
|
||||
break;
|
||||
case 503:
|
||||
$text = "Database unavailable";
|
||||
break;
|
||||
case 500:
|
||||
$text = "Internal server error";
|
||||
break;
|
||||
default:
|
||||
$text = "Please, return to home page";
|
||||
$code = "Internal error";
|
||||
break;
|
||||
}
|
||||
return array("text"=>$text,"number"=>$code);
|
||||
}
|
||||
|
||||
$app->error(function (\Exception $e,$request, $code) use ($app) {
|
||||
$user = null;
|
||||
try{
|
||||
$user = getUser($app);
|
||||
}catch(Throwable $ex){
|
||||
//Nothing
|
||||
}
|
||||
if ($app['debug']) {
|
||||
return;
|
||||
}else{
|
||||
|
||||
$error = HTTPError($code);
|
||||
return $app['twig']->render($app['fronthtml'].'/error.twig', Array(
|
||||
'page' => array("title"=>$code),
|
||||
'error' => $error,
|
||||
'user' => $user,
|
||||
));
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
@@ -64,6 +64,6 @@ function otherImplementationToArray($db,&$query,$supported){
|
||||
return $other;
|
||||
}
|
||||
|
||||
function otherVersionToArray($db,&$query,&$supported){
|
||||
function otherVersionToArray($db,$query,$supported){
|
||||
return lastToArray($db,$query,$supported);
|
||||
}
|
||||
@@ -6,6 +6,17 @@
|
||||
* Time: 19:06
|
||||
*/
|
||||
|
||||
function checkInfo($request){
|
||||
$email = $request->get('email');
|
||||
$emailre = $request->get('emailre');
|
||||
if ($email != null)
|
||||
return 1;
|
||||
else if ($emailre != null)
|
||||
return 2;
|
||||
else
|
||||
return 3;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if login is correct
|
||||
*
|
||||
@@ -37,8 +48,10 @@ function checklogin($email,$pass){
|
||||
* @param $nick new user's nickname
|
||||
* @return bool true if email never exists before, else false
|
||||
*/
|
||||
function register($email,$pass,$nick){
|
||||
function register($email,$emailre,$pass,$passre,$nick){
|
||||
$db = new DB();
|
||||
if($emailre != $email || $pass != $passre)
|
||||
return false;
|
||||
$bool = $db->register($email,$pass,$nick);
|
||||
if($bool) {
|
||||
$db->close();
|
||||
@@ -61,7 +74,7 @@ function getUser($app){
|
||||
$user=null;
|
||||
if(isset($_SESSION['sessionID'])){
|
||||
if($app['db']->checkCookie($_SESSION['sessionID'],$_SESSION['token'])){
|
||||
$user = $db->loadProfile($_SESSION['sessionID']);
|
||||
$user = $app['db']->loadProfile($_SESSION['sessionID']);
|
||||
}
|
||||
}
|
||||
return $user;
|
||||
|
||||
Reference in New Issue
Block a user