mirror of
https://gitlab.com/CodeSolutionsProject/CodeShare.git
synced 2026-02-20 20:11:33 +01:00
@@ -87,6 +87,18 @@ class Config
|
||||
return dbw_connect($DB["SGBD"], $DB["path"], $DB["db"], $DB["user"], $DB["password"]);
|
||||
}
|
||||
|
||||
public static function getDBalConexion(){
|
||||
if(!Config::initialized())
|
||||
Config::init();
|
||||
$DB = Config::$config["database"];
|
||||
return array(
|
||||
'dbname' => $DB['db'],
|
||||
'user' => $DB['user'],
|
||||
'password' => $DB['password'],
|
||||
'host' => $DB['path'],
|
||||
'driver' => "pdo_".$DB['SGBD']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get options of project if exists
|
||||
*
|
||||
|
||||
@@ -10,57 +10,41 @@ class DB
|
||||
/**
|
||||
* @var bool connection with database
|
||||
*/
|
||||
public $conn;
|
||||
private $conn;
|
||||
|
||||
/**
|
||||
* DB constructor
|
||||
*/
|
||||
function __construct()
|
||||
function __construct($db)
|
||||
{
|
||||
$this->conn = Config::getDBConexion();
|
||||
$this->conn = $db;
|
||||
$this->createTable();
|
||||
}
|
||||
|
||||
/**
|
||||
* Close the connection
|
||||
*/
|
||||
public function close()
|
||||
{
|
||||
dbw_close($this->conn);
|
||||
/*Base methods*/
|
||||
public function newQueryBuilder(){
|
||||
$queryBuilder = new \Doctrine\DBAL\Query\QueryBuilder($this->conn);
|
||||
return $queryBuilder;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the first array of a query result
|
||||
*
|
||||
* @param $query sql query
|
||||
* @return array array
|
||||
*/
|
||||
private function getQuery($query)
|
||||
{
|
||||
return dbw_fetch_array($this->conn, dbw_query($this->conn, $query));
|
||||
public function execute($queryBuilder){
|
||||
$query = $queryBuilder->execute();
|
||||
return $query;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the total of codes in database
|
||||
*
|
||||
* @return int total of codes
|
||||
*/
|
||||
private function numOfCodes()
|
||||
{
|
||||
return $this->getQuery("SELECT COUNT(*) FROM Sources")[0];
|
||||
public function getData($queryBuilder){
|
||||
|
||||
return $this->execute($queryBuilder)->fetchAll();
|
||||
}
|
||||
/*End methods*/
|
||||
|
||||
|
||||
/**
|
||||
* Create table if not exist in deploy (Database must be exist).
|
||||
*/
|
||||
private function createTable()
|
||||
{
|
||||
$query = "SET NAMES utf8; SET time_zone = '+00:00'; CREATE TABLE IF NOT EXISTS `Users`( `IDU` int(11) NOT NULL AUTO_INCREMENT, `email` varchar(64) NOT NULL, `pass` varchar(64) NOT NULL, `nick` varchar(40) NOT NULL, `token` varchar(50) DEFAULT NULL, `ROLE` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`IDU`)) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `Codes` ( `IDC` int(11) NOT NULL AUTO_INCREMENT, `UserCreator` int(11) NOT NULL, `Name` varchar(80) NOT NULL, `Description` text NOT NULL, `Input` text NOT NULL, `Output` text NOT NULL, PRIMARY KEY (`IDC`), KEY `UserCreator` (`UserCreator`), CONSTRAINT `Codes_ibfk_1` FOREIGN KEY (`UserCreator`) REFERENCES `Users` (`IDU`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `Sources` ( `IDC` int(11) NOT NULL, `IDU` int(11) NOT NULL, `Lang` varchar(15) NOT NULL, `Version` int(11) NOT NULL, `Modification` int(11) NOT NULL, `Code` text NOT NULL, `UseExtLib` text, `UseExtLibVer` varchar(55) DEFAULT NULL, PRIMARY KEY (`IDC`,`Lang`,`Version`), KEY `IDU` (`IDU`), CONSTRAINT `Sources_ibfk_1` FOREIGN KEY (`IDU`) REFERENCES `Users` (`IDU`), CONSTRAINT `Sources_ibfk_2` FOREIGN KEY (`IDC`) REFERENCES `Codes` (`IDC`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8";
|
||||
$query = explode(";",$query);
|
||||
foreach ($query as $queryPart){
|
||||
dbw_query($this->conn,$queryPart);
|
||||
}
|
||||
//dbw_multi_query($this->conn, $query);
|
||||
/*TODO*/
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -77,8 +61,16 @@ class DB
|
||||
*/
|
||||
public function loadOriginalAuthor($IDC)
|
||||
{
|
||||
$query = "SELECT UserCreator FROM Codes WHERE IDC='$IDC'";
|
||||
return $this->getQuery($query)[0];
|
||||
$queryBuilder = $this->newQueryBuilder();
|
||||
$queryBuilder
|
||||
->select('UserCreator')
|
||||
->from('Codes')
|
||||
->where($queryBuilder->expr()->eq(
|
||||
'IDC','?'
|
||||
))
|
||||
->setParameter(0,$IDC);
|
||||
return $this->getData($queryBuilder)[0];
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -91,9 +83,29 @@ class DB
|
||||
*/
|
||||
public function loadAll($id, $lang, $version)
|
||||
{
|
||||
$query = "SELECT * FROM Users NATURAL JOIN Sources NATURAL JOIN Codes WHERE IDC=$id AND Lang='$lang' AND Version=$version";
|
||||
$code = $this->getQuery($query);
|
||||
return $code;
|
||||
$queryBuilder = $this->newQueryBuilder();
|
||||
$queryBuilder
|
||||
->select('*')
|
||||
->from('Users','u')
|
||||
->join('u','Sources','s',
|
||||
$queryBuilder->expr()->eq(
|
||||
'u.IDU','s.IDU'
|
||||
))
|
||||
->join('s','Codes','c',
|
||||
$queryBuilder->expr()->eq(
|
||||
's.IDC','c.IDC'
|
||||
))
|
||||
->where($queryBuilder->expr()->andX(
|
||||
$queryBuilder->expr()->eq('c.IDC','?'),
|
||||
$queryBuilder->expr()->eq('s.Lang','?'),
|
||||
$queryBuilder->expr()->eq('s.Version','?')
|
||||
))
|
||||
->setParameter(0,$id)
|
||||
->setParameter(1,$lang)
|
||||
->setParameter(2,$version);
|
||||
$data = $this->getData($queryBuilder)[0];
|
||||
return $data;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -103,11 +115,40 @@ class DB
|
||||
*/
|
||||
public function loadLast($page = 0)
|
||||
{
|
||||
$page=$page*10;
|
||||
$query = "SELECT IDC,Name,nick,Lang,Description,Code,Version FROM Users NATURAL JOIN Sources as S NATURAL JOIN Codes WHERE Version = (SELECT MAX(Version) FROM Sources WHERE S.Lang = Lang AND S.IDC = IDC) ORDER BY Modification DESC LIMIT $page, 10";
|
||||
//echo $query;
|
||||
$code = dbw_query($this->conn, $query);
|
||||
return $code;
|
||||
$each=10;
|
||||
$page=$page*$each;
|
||||
$queryBuilder = $this->newQueryBuilder();
|
||||
$subQuery = $this->newQueryBuilder();
|
||||
$queryBuilder
|
||||
->select("c.IDC","Name","nick","Lang","Description","Code","Version")
|
||||
->from('Users','u')
|
||||
->join('u','Sources','s',
|
||||
$queryBuilder->expr()->eq(
|
||||
'u.IDU','s.IDU'
|
||||
))
|
||||
->join('s','Codes','c',
|
||||
$queryBuilder->expr()->eq(
|
||||
's.IDC','c.IDC'
|
||||
))
|
||||
->where(
|
||||
$queryBuilder->expr()->eq(
|
||||
's.Version','('.
|
||||
$subQuery
|
||||
->select('MAX(Version)')
|
||||
->from('Sources')
|
||||
->where(
|
||||
$subQuery->expr()->andX(
|
||||
$subQuery->expr()->eq('s.Lang','Lang'),
|
||||
$subQuery->expr()->eq('s.IDC','IDC')
|
||||
))
|
||||
->getSql()
|
||||
.')'
|
||||
))
|
||||
->orderBy('Modification','DESC')
|
||||
->setFirstResult($page)
|
||||
->setMaxResults(10);
|
||||
|
||||
return $this->execute($queryBuilder);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -119,8 +160,22 @@ class DB
|
||||
*/
|
||||
public function loadOtherVersion($id, $lang)
|
||||
{
|
||||
$query = "SELECT * FROM Users NATURAL JOIN Sources NATURAL JOIN Codes WHERE IDC='$id' AND Lang='$lang' ORDER BY Version ASC";
|
||||
return dbw_query($this->conn, $query);
|
||||
$queryBuilder = $this->newQueryBuilder();
|
||||
$queryBuilder
|
||||
->select('*')
|
||||
->from('Users','u')
|
||||
->join('u','Sources','s',
|
||||
$queryBuilder->expr()->eq('u.IDU','s.IDU'))
|
||||
->join('s','Codes','c',
|
||||
$queryBuilder->expr()->eq('s.IDC','c.IDC'))
|
||||
->where($queryBuilder->expr()->andX(
|
||||
$queryBuilder->expr()->eq('c.IDC','?'),
|
||||
$queryBuilder->expr()->eq('s.Lang','?')
|
||||
))
|
||||
->orderBy('Version','ASC')
|
||||
->setParameter(0,$id)
|
||||
->setParameter(1,$lang);
|
||||
return $this->execute($queryBuilder);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -132,10 +187,26 @@ class DB
|
||||
*/
|
||||
public function loadDiff($id, $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;
|
||||
$queryBuilder = $this->newQueryBuilder();
|
||||
$subQueryBuilder = $this->newQueryBuilder();
|
||||
$queryBuilder
|
||||
->select('s.Lang','s.Code','s.Version')
|
||||
->from('Sources','s')
|
||||
->where($queryBuilder->expr()->andX(
|
||||
$queryBuilder->expr()->neq('s.Lang','?'),
|
||||
$queryBuilder->expr()->eq('s.IDC','?'),
|
||||
$queryBuilder->expr()->eq('s.Version','('.
|
||||
$subQueryBuilder
|
||||
->select('MAX(su.Version)')
|
||||
->from('Sources','su')
|
||||
->where($subQueryBuilder->expr()->andX(
|
||||
$queryBuilder->expr()->eq('su.IDC','?'),
|
||||
$queryBuilder->expr()->eq('su.Lang','?')
|
||||
))->getSQL().')'
|
||||
)
|
||||
))
|
||||
->setParameters(array($lang,$id,$id,$lang));
|
||||
return $this->getData($queryBuilder);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -146,10 +217,15 @@ class DB
|
||||
*/
|
||||
public function loadLangs($IDC)
|
||||
{
|
||||
$query = "SELECT DISTINCT Lang FROM Sources WHERE IDC='$IDC'";
|
||||
$toFetch = dbw_query($this->conn, $query);
|
||||
$queryBuilder = $this->newQueryBuilder();
|
||||
$queryBuilder
|
||||
->select('DISTINCT Lang')
|
||||
->from('Sources')
|
||||
->where($queryBuilder->expr()->eq('IDC','?'))
|
||||
->setParameter(0,$IDC);
|
||||
$query = $this->getData($queryBuilder);
|
||||
$toReturn = array();
|
||||
while ($var = dbw_fetch_array($this->conn, $toFetch)) {
|
||||
foreach ($query as $var) {
|
||||
array_push($toReturn, $var["Lang"]);
|
||||
}
|
||||
return $toReturn;
|
||||
@@ -164,8 +240,17 @@ class DB
|
||||
*/
|
||||
public function getLastVersion($IDC, $lang)
|
||||
{
|
||||
$query = "SELECT MAX(Version) FROM Sources WHERE IDC='$IDC' AND Lang='$lang'";
|
||||
return $this->getQuery($query)[0];
|
||||
$queryBuilder = $this->newQueryBuilder();
|
||||
$queryBuilder
|
||||
->select('MAX(Version)')
|
||||
->from('Sources')
|
||||
->where($queryBuilder->expr()->andX(
|
||||
$queryBuilder->expr()->eq('IDC','?'),
|
||||
$queryBuilder->expr()->eq('Lang','?')
|
||||
))
|
||||
->setParameter(0,$IDC)
|
||||
->setParameter(1,$lang);
|
||||
return $this->getData($queryBuilder)[0]['MAX(Version)'];
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -175,8 +260,13 @@ class DB
|
||||
*/
|
||||
public function getLastIDC($name)
|
||||
{
|
||||
$query = "SELECT MAX(IDC) FROM Codes WHERE name='$name'";
|
||||
return $this->getQuery($query)[0];
|
||||
$queryBuiler = $this->newQueryBuilder();
|
||||
$queryBuiler
|
||||
->select('MAX(IDC)')
|
||||
->from('Codes')
|
||||
->where($queryBuiler->expr()->eq('name','?'))
|
||||
->setParameter(0,$name);
|
||||
return $this->getData($queryBuiler)[0]['MAX(IDC)'];
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -187,8 +277,13 @@ class DB
|
||||
*/
|
||||
public function loadCode($idc)
|
||||
{
|
||||
$query = "SELECT * FROM Codes WHERE IDC=" . $idc;
|
||||
return $this->getQuery($query);
|
||||
$queryBuilder = $this->newQueryBuilder();
|
||||
$queryBuilder
|
||||
->select('*')
|
||||
->from('Codes')
|
||||
->where($queryBuilder->expr()->eq('IDC','?'))
|
||||
->setParameter(0,$idc);
|
||||
return $this->getData($queryBuilder);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -199,35 +294,54 @@ class DB
|
||||
*/
|
||||
public function loadFilter($array,$global_search)
|
||||
{
|
||||
$query = "SELECT IDC,Name,nick,Lang,Description,Code,Version FROM Users NATURAL JOIN Sources as S NATURAL JOIN Codes ";
|
||||
$where = "WHERE (";
|
||||
$count = false;
|
||||
foreach ($array as $key => $value) {
|
||||
if ($key != "search" and $key != "o") {
|
||||
if ($count) {
|
||||
$where = $where . "OR S.Lang='$value' ";
|
||||
} else {
|
||||
$where = $where . "S.Lang='$value' ";
|
||||
$count = !$count;
|
||||
$queryBuilder = $this->newQueryBuilder();
|
||||
$queryBuilder
|
||||
->select('c.IDC','c.Name','u.nick','s.Lang','c.Description','s.Code','s.Version')
|
||||
->from('Users','u')
|
||||
->join('u','Sources','s',
|
||||
$queryBuilder->expr()->eq('u.IDU','s.IDU'))
|
||||
->join('s','Codes','c',
|
||||
$queryBuilder->expr()->eq('s.IDC','c.IDC'));
|
||||
|
||||
if($global_search){
|
||||
$queryBuilder
|
||||
->where('TRUE');
|
||||
}
|
||||
else{
|
||||
$count = false;
|
||||
foreach ($array as $key => $value) {
|
||||
if ($key != "search" and $key != "o") {
|
||||
if ($count) {
|
||||
$queryBuilder
|
||||
->orWhere($queryBuilder->expr()->eq('s.Lang',"'$value'"));
|
||||
} else {
|
||||
$queryBuilder->where($queryBuilder->expr()->eq('s.Lang',"'$value'"));
|
||||
$count = !$count;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//var_dump($global_search);
|
||||
if ($global_search){
|
||||
$where = "WHERE (TRUE";
|
||||
}
|
||||
|
||||
if (array_key_exists("o",$array))
|
||||
$first = $array["o"] * 10;
|
||||
else
|
||||
$first = 0;
|
||||
if(array_key_exists("search",$array))
|
||||
$search = $this->search($array["search"]);
|
||||
else
|
||||
$search = "";
|
||||
$queryLast = ") AND Version = (SELECT MAX(Version) FROM Sources WHERE S.Lang = Lang AND S.IDC = IDC)" . $search . " ORDER BY Modification DESC LIMIT $first, 10";
|
||||
//echo $query.$where.$queryLast;
|
||||
return dbw_query($this->conn, $query . $where . $queryLast);
|
||||
$queryBuilder = $this->search($queryBuilder,$array["search"]);
|
||||
$subQuery = $this->newQueryBuilder();
|
||||
$queryBuilder->andWhere(
|
||||
$queryBuilder->expr()->eq('s.Version','('.
|
||||
$subQuery
|
||||
->select('MAX(su.Version)')
|
||||
->from('Sources','su')
|
||||
->where($subQuery->expr()->andX(
|
||||
$subQuery->expr()->eq('s.Lang','su.Lang'),
|
||||
$subQuery->expr()->eq('s.IDC','su.IDC'))
|
||||
)->getSQL().')'
|
||||
))
|
||||
->orderBy('Modification','DESC')
|
||||
->setFirstResult($first)
|
||||
->setMaxResults(10);
|
||||
return $this->execute($queryBuilder);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -236,26 +350,24 @@ class DB
|
||||
* @param $text input by user
|
||||
* @return string sql query fragment
|
||||
*/
|
||||
public function search($text)
|
||||
public function search(Doctrine\DBAL\Query\QueryBuilder $queryBuilder, $text)
|
||||
{
|
||||
$text = dbw_escape_string($this->conn, $text);
|
||||
$subWhere = "";
|
||||
if ($text != "") {
|
||||
$query = "";
|
||||
$textExplode = explode(" ", $text);
|
||||
$value = true;
|
||||
$value = 0;
|
||||
foreach ($textExplode as $find) {
|
||||
if ($find != "") {
|
||||
if ($value) {
|
||||
$query = $query . "AND (Description LIKE '%" . $find . "%' OR Name LIKE '%" . $find . "%'";
|
||||
$value = false;
|
||||
} else {
|
||||
$query = $query . "AND Description LIKE '%" . $find . "%' OR Name LIKE '%" . $find . "%'";
|
||||
if ($value != 0) {
|
||||
$subWhere .= " AND ";
|
||||
}
|
||||
$subWhere.="c.Description LIKE ".$queryBuilder->getConnection()->quote("%$find%")." OR c.Name LIKE ".$queryBuilder->getConnection()->quote("%$find%");
|
||||
$value++;
|
||||
}
|
||||
}
|
||||
return $query . ")";
|
||||
return $queryBuilder->andWhere($subWhere);
|
||||
} else {
|
||||
return "";
|
||||
return $queryBuilder;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -286,13 +398,24 @@ class DB
|
||||
$version = 0;
|
||||
$version++;
|
||||
$modification = time();
|
||||
|
||||
|
||||
$query = "INSERT INTO Sources (`IDC`,`Lang`,`Version`,`Modification`,`Code`,`UseExtLib`,`UseExtLibVer`,`IDU`) VALUES ('$IDC','$lang',$version,$modification,'$code','$lib','$libV','$IDU')";
|
||||
//echo $query . ';';
|
||||
dbw_query($this->conn, $query);
|
||||
$queryBuilder = $this->newQueryBuilder();
|
||||
$queryBuilder
|
||||
->insert('Sources')
|
||||
->values(
|
||||
array(
|
||||
'IDC' => '?',
|
||||
'Lang' => '?',
|
||||
'Version' => '?',
|
||||
'Modification' => '?',
|
||||
'Code' => '?',
|
||||
'UseExtLib' => '?',
|
||||
'UseExtLibVer' => '?',
|
||||
'IDU' => '?'
|
||||
)
|
||||
)
|
||||
->setParameters(array($IDC,$lang,$version,$modification,$code,$lib,$libV,$IDU));
|
||||
$this->execute($queryBuilder);
|
||||
return $version;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -312,34 +435,58 @@ class DB
|
||||
*/
|
||||
public function addOrModifyCodes($IDC, $name, $description, $input, $output, $lang, $code, $IDU, $extlib = null, $extlibver = null)
|
||||
{
|
||||
$in = dbw_escape_string($this->conn, $input);
|
||||
$out = dbw_escape_string($this->conn, $output);
|
||||
$_code = dbw_escape_string($this->conn, $code);
|
||||
if ($IDC == 0) {
|
||||
$query = "INSERT INTO Codes (`UserCreator`,`Name`,`Description`,`Input`,`Output`) VALUES ('$IDU','$name','$description','$in','$out') ";
|
||||
//echo $query.';';
|
||||
//die();
|
||||
dbw_query($this->conn, $query);
|
||||
$queryBuilder = $this->newQueryBuilder();
|
||||
$queryBuilder
|
||||
->insert('Codes')
|
||||
->values(array(
|
||||
'UserCreator' => '?',
|
||||
'Name' => '?',
|
||||
'Description' => '?',
|
||||
'Input' => '?',
|
||||
'Output' => '?'
|
||||
))
|
||||
->setParameters(array($IDU,$name,$description,$input,$output));
|
||||
//$query = "INSERT INTO Codes (`UserCreator`,`Name`,`Description`,`Input`,`Output`) VALUES ('$IDU','$name','$description','$in','$out') ";
|
||||
$this->execute($queryBuilder);
|
||||
$myID = $this->getLastIDC($name);
|
||||
$this->addSource($myID, $lang, $_code, $IDU, $extlib, $extlibver);
|
||||
$this->addSource($myID, $lang, $code, $IDU, $extlib, $extlibver);
|
||||
return $myID;
|
||||
} else {
|
||||
$arr = $this->loadAll($IDC, $lang, $this->getLastVersion($IDC, $lang));
|
||||
$codewrite = $arr["Code"];
|
||||
$version = 0;
|
||||
if ($_code != dbw_escape_string($this->conn,$codewrite)) {
|
||||
$version = $this->addSource($IDC, $lang, $_code, $IDU, $extlib, $extlibver,$codewrite);
|
||||
if ($code != $codewrite) {
|
||||
$version = $this->addSource($IDC, $lang, $code, $IDU, $extlib, $extlibver);
|
||||
} else if ($extlib != $arr["UseExtLib"] || $extlibver != $arr["UseExtLibVer"]) {
|
||||
|
||||
$query = "UPDATE Sources SET `UseExtLib`='$extlib', `UseExtLibVer`='$extlibver' WHERE IDC=$IDC AND Lang='$arr[Lang]' AND Version=$arr[Version]";
|
||||
//echo $query.';';
|
||||
dbw_query($this->conn, $query);
|
||||
$queryBuilder = $this->newQueryBuilder();
|
||||
$queryBuilder
|
||||
->update('Sources')
|
||||
->set('UseExtLib','?')
|
||||
->set('UseExtLibVer','?')
|
||||
->where($queryBuilder->expr()->andX(
|
||||
$queryBuilder->expr()->eq('IDC','?'),
|
||||
$queryBuilder->expr()->eq('Lang','?'),
|
||||
$queryBuilder->expr()->eq('Version','?')
|
||||
))
|
||||
->setParameter(0,$extlib)
|
||||
->setParameter(1,$extlibver)
|
||||
->setParameter(2,$IDC)
|
||||
->setParameter(3,$arr['Lang'])
|
||||
->setParameter(4,$arr['Version']);
|
||||
$this->execute($queryBuilder);
|
||||
}
|
||||
|
||||
$query = "UPDATE Codes SET `Name`='$name', `Description`='$description', `Input`='$in', `Output`='$out' WHERE IDC='$IDC'";
|
||||
|
||||
//echo $query.';';
|
||||
dbw_query($this->conn, $query);
|
||||
$queryBuilder = $this->newQueryBuilder();
|
||||
$queryBuilder
|
||||
->update('Codes')
|
||||
->set('Name','?')
|
||||
->set('Description','?')
|
||||
->set('Input','?')
|
||||
->set('Output','?')
|
||||
->where($queryBuilder->expr()->eq('IDC','?'))
|
||||
->setParameters(array($name,$description,$input,$output,$IDC));
|
||||
$this->execute($queryBuilder);
|
||||
return $version;
|
||||
}
|
||||
}
|
||||
@@ -372,8 +519,13 @@ class DB
|
||||
*/
|
||||
public function loadProfile($id)
|
||||
{
|
||||
$query = "SELECT * FROM Users WHERE IDU=" . $id;
|
||||
return $this->getQuery($query);
|
||||
$queryBuilder = $this->newQueryBuilder();
|
||||
$queryBuilder
|
||||
->select('*')
|
||||
->from('Users','u')
|
||||
->where($queryBuilder->expr()->eq('u.IDU','?'))
|
||||
->setParameter(0,$id);
|
||||
return $this->getData($queryBuilder)[0];
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -384,8 +536,13 @@ class DB
|
||||
*/
|
||||
public function loadIDU($field,$mode='email')
|
||||
{
|
||||
$query = "SELECT IDU FROM Users WHERE $mode='" . $field . "'";
|
||||
return $this->getQuery($query)["IDU"];
|
||||
$queryBuilder = $this->newQueryBuilder();
|
||||
$queryBuilder
|
||||
->select('IDU')
|
||||
->from('Users')
|
||||
->where($queryBuilder->expr()->eq($mode,'?'))
|
||||
->setParameter(0,$field);
|
||||
return $this->getData($queryBuilder)[0]['IDU'];
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -397,7 +554,13 @@ class DB
|
||||
*/
|
||||
public function checkCookie($IDU, $token)
|
||||
{
|
||||
$tokenDB = $this->getQuery("SELECT token FROM Users WHERE IDU=" . $IDU)["token"];
|
||||
$queryBuilder = $this->newQueryBuilder();
|
||||
$queryBuilder
|
||||
->select('token')
|
||||
->from('Users')
|
||||
->where($queryBuilder->expr()->eq('IDU','?'))
|
||||
->setParameter(0,$IDU);
|
||||
$tokenDB = $this->getData($queryBuilder)[0]["token"];
|
||||
if ($tokenDB == $token)
|
||||
return true;
|
||||
else
|
||||
@@ -413,8 +576,13 @@ class DB
|
||||
*/
|
||||
public function checkPass($email, $pass)
|
||||
{
|
||||
$query = "SELECT pass FROM Users WHERE email='$email'";
|
||||
$passDB = $this->getQuery($query)["pass"];
|
||||
$queryBuilder = $this->newQueryBuilder();
|
||||
$queryBuilder
|
||||
->select("pass")
|
||||
->from("Users")
|
||||
->where($queryBuilder->expr()->eq('email','?'))
|
||||
->setParameter(0,$email);
|
||||
$passDB = $this->getData($queryBuilder)[0]["pass"];
|
||||
if ($passDB == hash('sha256', $pass))
|
||||
return true;
|
||||
else
|
||||
@@ -439,7 +607,16 @@ class DB
|
||||
return 'NICK_IN_USE';
|
||||
else {
|
||||
$password = hash('sha256', $pass);
|
||||
dbw_query($this->conn, "INSERT INTO Users (`email`,`pass`,`nick`) VALUES ('$email','$password','$nick')");
|
||||
$queryBuilder = $this->newQueryBuilder();
|
||||
$queryBuilder
|
||||
->insert('Users')
|
||||
->values(array(
|
||||
'email' => '?',
|
||||
'pass' => '?',
|
||||
'nick' => '?'
|
||||
))
|
||||
->setParameters(array($email,$password,$nick));
|
||||
$this->execute($queryBuilder);
|
||||
return 'CORRECT';
|
||||
}
|
||||
}
|
||||
@@ -452,7 +629,14 @@ class DB
|
||||
*/
|
||||
public function setToken($IDU, $token)
|
||||
{
|
||||
dbw_query($this->conn, "UPDATE Users SET token='$token' WHERE IDU='$IDU'");
|
||||
$queryBuilder = $this->newQueryBuilder();
|
||||
$queryBuilder
|
||||
->update('Users')
|
||||
->set('token','?')
|
||||
->where($queryBuilder->expr()->eq('IDU','?'))
|
||||
->setParameter(0,$token)
|
||||
->setParameter(1,$IDU);
|
||||
$this->execute($queryBuilder);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -463,7 +647,13 @@ class DB
|
||||
*/
|
||||
public function updatePass($idu, $pass)
|
||||
{
|
||||
$query = "UPDATE Users SET pass='" . hash('sha256', $pass) . "' WHERE IDU='$idu'";
|
||||
dbw_query($this->conn, $query);
|
||||
$queryBuilder = $this->newQueryBuilder();
|
||||
$queryBuilder
|
||||
->update('Users')
|
||||
->set('pass','?')
|
||||
->where($queryBuilder->expr()->eq('IDU','?'))
|
||||
->setParameter(0,hash('sha256',$pass))
|
||||
->setParameter(1,$idu);
|
||||
$this->execute($queryBuilder);
|
||||
}
|
||||
}
|
||||
@@ -18,6 +18,7 @@ use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
|
||||
$app['debug'] = true;
|
||||
$app->register(new Silex\Provider\UrlGeneratorServiceProvider());
|
||||
$app->register(new Silex\Provider\TwigServiceProvider(), array(
|
||||
'twig.path' => __DIR__.'/../',
|
||||
));
|
||||
@@ -34,16 +35,11 @@ foreach($valores as $asset){
|
||||
$string = file_get_contents(__DIR__."/../data/supported.json");
|
||||
$app["supported"] = json_decode($string, true);
|
||||
|
||||
$app['db']=null;
|
||||
function connectDB(){
|
||||
global $app;
|
||||
try {
|
||||
$app['db'] = new DB();
|
||||
}catch (Exception $ex){
|
||||
$app->abort('503','ERROR en la Base de Datos');
|
||||
|
||||
}
|
||||
}
|
||||
$app->register(new Silex\Provider\DoctrineServiceProvider(), array(
|
||||
'db.options' => Config::getDBalConexion()
|
||||
));
|
||||
|
||||
$app['data'] = new DB($app['db']);
|
||||
|
||||
/* Security */
|
||||
$app['security.role_hierarchy'] = array(
|
||||
@@ -56,9 +52,8 @@ $app->boot();
|
||||
|
||||
/* Basics */
|
||||
$app->get('/', function (Request $request) use($app) {
|
||||
connectDB();
|
||||
|
||||
$user = getUser($app);
|
||||
$last = array();
|
||||
$ajax=false;
|
||||
if($request->getMethod()=="POST"){
|
||||
if($request->get('globalSearch')!=null){
|
||||
@@ -69,11 +64,11 @@ $app->get('/', function (Request $request) use($app) {
|
||||
$type=false;
|
||||
$ajax=true;
|
||||
}
|
||||
$last = $app['db']->loadFilter($data,$type);
|
||||
$last = lastToArray($app['db'],$last,$app['supported']);
|
||||
$last = $app['data']->loadFilter($data,$type);
|
||||
$last = lastToArray($last,$app['supported']);
|
||||
}else{
|
||||
$query = $app['db']->loadLast();
|
||||
$last = lastToArray($app["db"],$query,$app['supported']);
|
||||
$query = $app['data']->loadLast();
|
||||
$last = lastToArray($query,$app['supported']);
|
||||
}
|
||||
$page = array( 'title' => "CodeShare",
|
||||
"description" => "Sharing your solutions with all",
|
||||
@@ -96,7 +91,7 @@ $app->get('/', function (Request $request) use($app) {
|
||||
|
||||
|
||||
$app->get('/doc', function (Request $request) use($app){
|
||||
connectDB();
|
||||
|
||||
$user = getUser($app);
|
||||
$page = array(
|
||||
"title" => "Documentation",
|
||||
@@ -107,7 +102,7 @@ $app->get('/doc', function (Request $request) use($app){
|
||||
})->bind('doc');
|
||||
|
||||
$app->get('/about', function (Request $request) use($app){
|
||||
connectDB();
|
||||
|
||||
$user = getUser($app);
|
||||
$page = array(
|
||||
"title" => "About CodeShare",
|
||||
@@ -119,7 +114,7 @@ $app->get('/about', function (Request $request) use($app){
|
||||
|
||||
/* User */
|
||||
$app->get('/tos',function(Request $request) use($app){
|
||||
connectDB();
|
||||
|
||||
$user = getUser($app);
|
||||
$page = array(
|
||||
"title" => "Terms of service",
|
||||
@@ -131,7 +126,7 @@ $app->get('/tos',function(Request $request) use($app){
|
||||
})->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'));
|
||||
@@ -147,7 +142,7 @@ $app->get('/login', function(Request $request) use ($app){
|
||||
})->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'));
|
||||
@@ -177,18 +172,19 @@ function loginRegister($default,$state=''){
|
||||
}
|
||||
|
||||
function loginOrRegister($state,$request){
|
||||
global $app;
|
||||
switch ($state){
|
||||
case 3:
|
||||
return loginRegister('login','BAD_CREDENTIAL');
|
||||
case 1:
|
||||
if(checklogin($request->get('email'),$request->get('pwd'))==''){
|
||||
if(checklogin($request->get('email'),$request->get('pwd'),$app['data'])==''){
|
||||
return 'redirect';
|
||||
}else{
|
||||
return loginRegister("login",'BAD_CREDENTIAL');
|
||||
}
|
||||
case 2:
|
||||
$state = register($request->get('emailre'),$request->get('emailre-re'),
|
||||
$request->get('pwdre'), $request->get('pwdre-re'),$request->get('nick'));
|
||||
$request->get('pwdre'), $request->get('pwdre-re'),$request->get('nick'),$app['data']);
|
||||
if ($state == '')
|
||||
return 'redirect';
|
||||
else
|
||||
@@ -203,7 +199,7 @@ $app->get('logout',function(Request $request) use ($app){
|
||||
})->bind('logout');
|
||||
|
||||
$app->get('/user', function(Request $request) use ($app){
|
||||
connectDB();
|
||||
|
||||
$user = getUser($app);
|
||||
if($user == null)
|
||||
$app->abort('403');
|
||||
@@ -213,12 +209,11 @@ $app->get('/user', function(Request $request) use ($app){
|
||||
$passact = $request->get("passact");
|
||||
$newpass = $request->get("newpass");
|
||||
$newpassre = $request->get("newpass-re");
|
||||
if($app['db']->checkPass($user['email'],$passact) && $newpass == $newpassre){
|
||||
if($app['data']->checkPass($user['email'],$passact) && $newpass == $newpassre){
|
||||
$status=1;
|
||||
$app['db']->updatePass($user['IDU'],$newpass);
|
||||
$app['data']->updatePass($user['IDU'],$newpass);
|
||||
}else
|
||||
$status=2;
|
||||
$app['db']->close();
|
||||
}
|
||||
$page = array(
|
||||
"page" => "user",
|
||||
@@ -259,7 +254,7 @@ function HTTPError($code){
|
||||
return array("text"=>$text,"number"=>$code);
|
||||
}
|
||||
|
||||
$app->error(function (\Exception $e,$request, $code) use ($app) {
|
||||
$app->error(function (\Exception $e,$request, $code = 500) use ($app) {
|
||||
$user = null;
|
||||
try{
|
||||
$user = getUser($app);
|
||||
@@ -283,10 +278,10 @@ $app->error(function (\Exception $e,$request, $code) use ($app) {
|
||||
|
||||
/* Codes */
|
||||
$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);
|
||||
$array = $app['data']->loadAll($idc,$lang,$version);
|
||||
if(!$array){
|
||||
$app->abort('404');
|
||||
}
|
||||
@@ -299,18 +294,17 @@ $app->get('/code/{lang}-{idc}-{version}', function (Request $request, $lang, $id
|
||||
"description" => "$array[Name] by $array[nick] in ".$app['supported'][$lang][0],
|
||||
"otherV" => false,
|
||||
"otherI" => false,
|
||||
"existedLangs" => $app['db']->loadLangs($idc),
|
||||
"original" => $app['db']->loadOriginalAuthor($idc),
|
||||
"existedLangs" => $app['data']->loadLangs($idc),
|
||||
"original" => $app['data']->loadOriginalAuthor($idc),
|
||||
);
|
||||
$code = allCodeToArray($array,$app['supported']);
|
||||
if($array['Version']!=1)
|
||||
$page['otherV'] = true;
|
||||
$diff = $app['db']->loadDiff($idc,$lang);
|
||||
if(dbw_fetch_array($app['db']->conn,$diff)){
|
||||
$diff = $app['data']->loadDiff($idc,$lang);
|
||||
if(count($diff)>=1){
|
||||
$page['otherI'] = true;
|
||||
}
|
||||
dbw_query_goto($app['db']->conn,$diff);
|
||||
$otherImplementation = otherImplementationToArray($app['db'],$diff,$app['supported']);
|
||||
$otherImplementation = otherImplementationToArray($diff,$app['supported']);
|
||||
return $app['twig']->render($app['fronthtml'].'/code.twig', array(
|
||||
"page" => $page,
|
||||
"code" => $code,
|
||||
@@ -332,8 +326,7 @@ function updateCode($request,$idc,$lang,$version,$user){
|
||||
if ($code == null or $lang == null)
|
||||
$app->abort(400);
|
||||
if($lang2 != null){
|
||||
$app['db']->addSource($idc,$lang2,$code,$user['IDU'],$extlib,$extlibver);
|
||||
$app['db']->close();
|
||||
$app['data']->addSource($idc,$lang2,$code,$user['IDU'],$extlib,$extlibver);
|
||||
return $app->redirect($app['url_generator']->generate('code',array("idc"=>$idc,"version"=>1,"lang"=>$lang2)));
|
||||
}else{
|
||||
$name = $request->get("name");
|
||||
@@ -342,8 +335,7 @@ function updateCode($request,$idc,$lang,$version,$user){
|
||||
$output = htmlentities($request->get("output"));
|
||||
if($name == null || $description == null || $input == null ||$output == null)
|
||||
$app->abort(400);
|
||||
$version2 = $app['db']->addOrModifyCodes($idc,$name,$description,$input,$output,$lang,$code,$user['IDU'],$extlibver,$extlibver);
|
||||
$app['db']->close();
|
||||
$version2 = $app['data']->addOrModifyCodes($idc,$name,$description,$input,$output,$lang,$code,$user['IDU'],$extlibver,$extlibver);
|
||||
if($version2!=0)
|
||||
return $app->redirect($app['url_generator']->generate('code',array("idc"=>$idc,"version"=>$version2,"lang"=>$lang)));
|
||||
else
|
||||
@@ -352,11 +344,11 @@ function updateCode($request,$idc,$lang,$version,$user){
|
||||
}
|
||||
|
||||
$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']);
|
||||
$array = $app['data']->loadOtherVersion($idc,$lang);
|
||||
$other = otherVersionToArray($array,$app['supported']);
|
||||
$name = $other[0]['name'];
|
||||
|
||||
$page = array(
|
||||
@@ -371,7 +363,7 @@ $app->get('/code/{lang}-{idc}', function(Request $request, $lang, $idc) use($app
|
||||
})->bind('codeVer');
|
||||
|
||||
$app->get('/add', function(Request $request) use($app){
|
||||
connectDB();
|
||||
|
||||
$user = getUser($app);
|
||||
if ($user == null)
|
||||
return $app->redirect($app['url_generator']->generate('login'));
|
||||
@@ -390,7 +382,7 @@ $app->get('/add', function(Request $request) use($app){
|
||||
$app->abort(400);
|
||||
}
|
||||
else{
|
||||
$idc = $app['db']->addOrModifyCodes(
|
||||
$idc = $app['data']->addOrModifyCodes(
|
||||
0,
|
||||
$name,
|
||||
$description,
|
||||
|
||||
@@ -1,382 +0,0 @@
|
||||
<?php
|
||||
if(isset($_COOKIE['cookieconsent_status'])) {
|
||||
session_start(); //Start session in app, before loading vars ($_SESSION)
|
||||
}
|
||||
|
||||
require_once __DIR__ . '/../vendor/autoload.php';
|
||||
//require_once __DIR__ . '/dbwrapper.php';
|
||||
require_once __DIR__ . '/Config.php';
|
||||
require 'functions.php';
|
||||
require 'DB.php';
|
||||
require 'dbToTable.php';
|
||||
require 'users.php';
|
||||
|
||||
|
||||
$path = array(
|
||||
"html" => "assets/html/",
|
||||
"css" => "assets/css/",
|
||||
"js" => "assets/js/",
|
||||
"img" => "assets/img/",
|
||||
);
|
||||
$string = file_get_contents(__DIR__."/../data/supported.json");
|
||||
$supported = json_decode($string, true);
|
||||
$loader = new Twig_Loader_Filesystem($path['html']);
|
||||
$twig = new Twig_Environment($loader);
|
||||
$user = array();
|
||||
$db=null;
|
||||
try {
|
||||
$db = new DB();
|
||||
}catch (Exception $ex){
|
||||
sendHTTPError(503);
|
||||
exit();
|
||||
}
|
||||
|
||||
function run(){
|
||||
global $user;
|
||||
if(isset($_SESSION['sessionID'])){
|
||||
global $db;
|
||||
if($db->checkCookie($_SESSION['sessionID'],$_SESSION['token'])){
|
||||
$user = $db->loadProfile($_SESSION['sessionID']);
|
||||
}
|
||||
}
|
||||
if (isset($_POST["search"])){
|
||||
firstPage(false,true);
|
||||
}
|
||||
else if ($_GET) {
|
||||
if ($_GET["page"]) {
|
||||
switch ($_GET["page"]) {
|
||||
case "code":
|
||||
codeViewer();
|
||||
break;
|
||||
case "index":
|
||||
firstPage();
|
||||
break;
|
||||
case "register":
|
||||
case "login":
|
||||
loginRegister($_GET['page']);
|
||||
break;
|
||||
case "logout":
|
||||
logout();
|
||||
header("Location: index.php");
|
||||
break;
|
||||
case "about":
|
||||
about();
|
||||
break;
|
||||
case "add":
|
||||
add();
|
||||
break;
|
||||
case "doc":
|
||||
doc();
|
||||
break;
|
||||
case "tos":
|
||||
tos();
|
||||
break;
|
||||
case "user":
|
||||
user();
|
||||
break;
|
||||
case "error":
|
||||
sendHTTPError($_GET['error']);
|
||||
/*case "del":
|
||||
deleteSource();*/
|
||||
break;
|
||||
default:
|
||||
sendHTTPError(404);
|
||||
}
|
||||
} else {
|
||||
sendHTTPError(404);
|
||||
}
|
||||
} else {
|
||||
//header("CodeShare");
|
||||
firstPage();
|
||||
}
|
||||
}
|
||||
|
||||
function sendHTTPError($code){
|
||||
global $twig, $path,$user;
|
||||
$page = array("title" => $code."");
|
||||
|
||||
header($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;
|
||||
}
|
||||
|
||||
$error = array("number" => $code."","text"=>$text);
|
||||
echo $twig->render('error.twig',array("page" => $page, "path" => $path, "user" => $user,"error" => $error));
|
||||
}
|
||||
|
||||
/**
|
||||
* Index page
|
||||
*
|
||||
* @param bool $filter if filters are enabled (when ajax)
|
||||
* @param bool $globalSearch if filters are in nav-bar search box
|
||||
*/
|
||||
function firstPage($filter=false,$globalSearch=false){
|
||||
global $supported,$twig,$path,$user;
|
||||
global $db;
|
||||
//var_dump($_POST);
|
||||
if(!$filter and !$globalSearch) //Common index
|
||||
if(isset($_GET["p"])) //If page (not 0)
|
||||
$query = $db->loadLast($_GET["p"]);
|
||||
else
|
||||
$query = $db->loadLast();
|
||||
else
|
||||
$query = $db->loadFilter($_POST,$globalSearch);
|
||||
$last = lastToArray($db,$query,$supported);
|
||||
$page = array(
|
||||
"title" => "CodeShare",
|
||||
"description" => "Sharing your solution with all",
|
||||
"last" => $last,
|
||||
"supported" => $supported,
|
||||
"page" => "home",
|
||||
"grouped" => groupByCategory($supported)
|
||||
);
|
||||
if(!$filter)
|
||||
echo $twig->render("firstpage.twig",array("page" => $page, "path" => $path, "user" => $user));
|
||||
else
|
||||
echo $twig->render("firstCodes.twig",array("page" => $page, "path" => $path, "user" => $user));
|
||||
$db->close();
|
||||
}
|
||||
|
||||
function doc(){
|
||||
global $twig,$path,$user;
|
||||
$page = array(
|
||||
"title" => "Documentation",
|
||||
"description" => "All documentation about how to upload code in CodeShare",
|
||||
"page" => "doc"
|
||||
);
|
||||
echo $twig->render("doc.twig",array("page" => $page, "path" => $path, "user" => $user));
|
||||
}
|
||||
|
||||
function add(){
|
||||
global $twig,$path,$user,$supported;
|
||||
if(!isset($user['IDU'])){
|
||||
header("Location: ?page=login");
|
||||
}
|
||||
if(isset($_POST['name'])){
|
||||
$db=new DB();
|
||||
$extlib = isset($_POST['extlib']) ? $_POST['extlib'] : null;
|
||||
$extlibver = isset($_POST['extlibver']) ? $_POST['extlibver'] : null;
|
||||
$db->addOrModifyCodes(
|
||||
0,
|
||||
$_POST['name'],
|
||||
$_POST['description'],
|
||||
htmlentities($_POST['input']),
|
||||
htmlentities($_POST['output']),
|
||||
$_POST['lang'],
|
||||
htmlentities($_POST['code']),
|
||||
$user['IDU'],
|
||||
$extlib,
|
||||
$extlibver);
|
||||
//die();
|
||||
$idc=$db->getLastIDC();
|
||||
header("Location: ?page=code&id=$idc&lang=$_POST[lang]&version=1");
|
||||
}
|
||||
$page=array(
|
||||
"title" => "Add your own solution",
|
||||
"description" => "Share now your snippet",
|
||||
"page" => "add",
|
||||
);
|
||||
echo $twig->render("add.twig",array("page" => $page,"path" => $path, "user" => $user, "supported" => $supported));
|
||||
|
||||
}
|
||||
|
||||
function codeViewer(){
|
||||
global $supported,$twig,$path,$user;
|
||||
global $db;
|
||||
|
||||
if(isset($_POST['lang'])){
|
||||
$extlib = isset($_POST['extlib']) ? $_POST['extlib'] : null;
|
||||
$extlibver = isset($_POST['extlibver']) ? $_POST['extlibver'] : null;
|
||||
$db->addSource($_GET['id'],$_POST['lang'],htmlentities($_POST['code']),$user["IDU"],$extlib,$extlibver);
|
||||
$db->close();
|
||||
header("Location: ?page=code&id=$_GET[id]&lang=$_POST[lang]&version=1");
|
||||
}else if(isset($_POST['name'])){
|
||||
$extlib = isset($_POST['extlib']) ? $_POST['extlib'] : null;
|
||||
$extlibver = isset($_POST['extlibver']) ? $_POST['extlibver'] : null;
|
||||
$version=$db->addOrModifyCodes(
|
||||
$_GET['id'],
|
||||
$_POST['name'],
|
||||
$_POST['description'],
|
||||
htmlentities($_POST['input']),
|
||||
htmlentities($_POST['output']),
|
||||
$_GET['lang'],
|
||||
htmlentities($_POST['code']),
|
||||
$user['IDU'],
|
||||
$extlib,
|
||||
$extlibver);
|
||||
//die();
|
||||
$db->close();
|
||||
if($version!=0){
|
||||
header("Location: ?page=code&id=$_GET[id]&lang=$_GET[lang]&version=$version");
|
||||
}else{
|
||||
header('Refresh:0');
|
||||
}
|
||||
}else if(isset($_POST['code'])){
|
||||
$version=$db->addSource($_GET['id'],$_GET['lang'],htmlentities($_POST['code']),$user['IDU'],$_POST['extlib'],$_POST['extlibver']);
|
||||
$db->close();
|
||||
header("Location: ?page=code&id=$_GET[id]&lang=$_GET[lang]&version=$version");
|
||||
}
|
||||
|
||||
if (!$_GET['lang'] || !$_GET['id']) {
|
||||
sendHTTPError(404);
|
||||
}elseif($_GET['version']){
|
||||
$array = $db->loadAll($_GET['id'],$_GET['lang'],$_GET['version']);
|
||||
if($array){
|
||||
$page = array(
|
||||
"title" => "$array[Name] by $array[nick]",
|
||||
"description" => "$array[Name] by $array[nick] in ".$supported[$_GET['lang']][0],
|
||||
"otherV" => false,
|
||||
"otherI" => false,
|
||||
"existedLangs" => $db->loadLangs($_GET['id']),
|
||||
"original" => $db->loadOriginalAuthor($_GET['id']),
|
||||
);
|
||||
$code = allCodeToArray($array,$supported);
|
||||
if($array['Version']!=1){
|
||||
$page['otherV'] = true;
|
||||
}
|
||||
$diff = $db->loadDiff($_GET["id"],$_GET["lang"]);
|
||||
if (dbw_fetch_array($db->conn, $diff)) {
|
||||
$page['otherI'] = true;
|
||||
}
|
||||
dbw_query_goto($db->conn,$diff);
|
||||
$otherImplementation = otherImplementationToArray($db,$diff,$supported);
|
||||
echo $twig->render("code.twig", array(
|
||||
"page" => $page,
|
||||
"code" => $code,
|
||||
"otherImplementation" => $otherImplementation,
|
||||
"path" => $path,
|
||||
"user" => $user,
|
||||
"supported" => $supported,
|
||||
));
|
||||
}else{
|
||||
sendHTTPError(404);
|
||||
}
|
||||
}else{
|
||||
$query = $db->loadOtherVersion($_GET['id'], $_GET['lang']);
|
||||
$other = otherVersionToArray($db,$query,$supported);
|
||||
$name = $other[0]['name'];
|
||||
$page = array(
|
||||
"title" => "Other versions of $name",
|
||||
"description" => "All differents version of $name uploaded in CodeShare",
|
||||
"last" => $other,
|
||||
"page" => ""
|
||||
);
|
||||
echo $twig->render("otherVersion.twig",array(
|
||||
"page" => $page,
|
||||
"path" => $path,
|
||||
"user" => $user
|
||||
));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function loginRegister($default){
|
||||
global $twig,$path;
|
||||
|
||||
$bool=false;
|
||||
|
||||
$page = array(
|
||||
"title" => ucfirst($default),
|
||||
"description" => "Start now in CodeShare",
|
||||
"page" => $default,
|
||||
"state" => 0, //0=no logged, 1 login fail, 2 register fail, 3 all correct (render home)
|
||||
);
|
||||
|
||||
if(array_key_exists('email',$_POST) or array_key_exists('emailre',$_POST)){
|
||||
if($_POST["email"]){
|
||||
$bool=checklogin($_POST['email'],$_POST['pwd']);
|
||||
if(!$bool){
|
||||
$page['state']=1;
|
||||
}
|
||||
}else{
|
||||
$bool=register($_POST["emailre"],$_POST["pwdre"],$_POST["name"]);
|
||||
if(!$bool){
|
||||
$page['state']=2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if($bool) {
|
||||
header("Location: index.php");
|
||||
}else
|
||||
echo $twig->render("loginregister.twig", array("page" => $page, "path" => $path ));
|
||||
}
|
||||
|
||||
function about(){
|
||||
global $twig, $path, $user;
|
||||
$page = array(
|
||||
"title" => "About CodeShare",
|
||||
"description" => "Developed by JKA Network's Team",
|
||||
"page" => "about",
|
||||
);
|
||||
echo $twig->render("about.twig",array("page" => $page, "path" => $path,"user" => $user));
|
||||
}
|
||||
|
||||
function tos(){
|
||||
global $twig, $path, $user;
|
||||
$page = array(
|
||||
"title" => "Terms of service",
|
||||
"description" => "Terms of services and privacy policies"
|
||||
);
|
||||
echo $twig->render("TOS.twig",array("page" => $page, "path" => $path, "user" => $user));
|
||||
}
|
||||
|
||||
function user(){
|
||||
global $twig,$path,$user;
|
||||
|
||||
if($user['nick']) {
|
||||
$status=0;
|
||||
if(array_key_exists("passact",$_POST)){
|
||||
$passact = $_POST["passact"];
|
||||
$newpass = $_POST["newpass"];
|
||||
global $db;
|
||||
if($db->checkPass($user['email'],$passact)){
|
||||
$status=1;
|
||||
$db->updatePass($user['IDU'],$newpass);
|
||||
}else
|
||||
$status=2;
|
||||
$db->close();
|
||||
}
|
||||
$page = array(
|
||||
"title" => "$user[nick]",
|
||||
"description" => "NOT RELEVANT",
|
||||
"status" => $status
|
||||
);
|
||||
echo $twig->render("user.twig",array("page"=>$page,"path"=>$path, "user"=>$user));
|
||||
}else{
|
||||
sendHTTPError(403);
|
||||
}
|
||||
}
|
||||
|
||||
/*function deleteSource(){
|
||||
global $user;
|
||||
if(array_key_exists('ROLE',$user)){
|
||||
if($user['ROLE']==3){
|
||||
$db = new DB();
|
||||
$db->deleteSource($_GET['id'],$_GET['lang'],$_GET['version']);
|
||||
$db->close();
|
||||
header('Location: index.php');
|
||||
}else
|
||||
sendHTTPError(403);
|
||||
}else{
|
||||
sendHTTPError(403);
|
||||
}
|
||||
}*/
|
||||
@@ -11,9 +11,10 @@
|
||||
* Methods to get an array to send to twig
|
||||
*/
|
||||
|
||||
function lastToArray($db,&$query,$supported){
|
||||
function lastToArray(&$query,$supported){
|
||||
$last = array();
|
||||
while($var = dbw_fetch_array($db->conn,$query)){
|
||||
$list = $query->fetchAll();
|
||||
foreach($list as $var){
|
||||
$array = array
|
||||
( "idc" => $var["IDC"],
|
||||
"lang" => $var["Lang"],
|
||||
@@ -50,9 +51,9 @@ function allCodeToArray(&$query,$supported){
|
||||
|
||||
}
|
||||
|
||||
function otherImplementationToArray($db,&$query,$supported){
|
||||
function otherImplementationToArray(&$query,$supported){
|
||||
$other = array();
|
||||
while($var = dbw_fetch_array($db->conn,$query)){
|
||||
foreach($query as $var){
|
||||
$array = array
|
||||
( "lang" => $var["Lang"],
|
||||
"version" => $var["Version"],
|
||||
@@ -64,6 +65,6 @@ function otherImplementationToArray($db,&$query,$supported){
|
||||
return $other;
|
||||
}
|
||||
|
||||
function otherVersionToArray($db,$query,$supported){
|
||||
return lastToArray($db,$query,$supported);
|
||||
function otherVersionToArray(&$query,$supported){
|
||||
return lastToArray($query,$supported);
|
||||
}
|
||||
@@ -24,8 +24,7 @@ function checkInfo($request){
|
||||
* @param $pass user's input password
|
||||
* @return bool true if email-password combination is correct, false if not
|
||||
*/
|
||||
function checklogin($email,$pass){
|
||||
$db = new DB();
|
||||
function checklogin($email,$pass,$db){
|
||||
$bool = $db->checkPass($email,$pass);
|
||||
|
||||
if($bool){
|
||||
@@ -34,10 +33,8 @@ function checklogin($email,$pass){
|
||||
$db->setToken($idu,$token);
|
||||
$_SESSION['token'] = $token;
|
||||
$_SESSION['sessionID'] =$idu;
|
||||
$db->close();
|
||||
return '';
|
||||
}
|
||||
$db->close();
|
||||
return 'BAD';
|
||||
}
|
||||
|
||||
@@ -49,16 +46,14 @@ function checklogin($email,$pass){
|
||||
* @param $nick new user's nickname
|
||||
* @return bool true if email never exists before, else false
|
||||
*/
|
||||
function register($email,$emailre,$pass,$passre,$nick){
|
||||
$db = new DB();
|
||||
function register($email,$emailre,$pass,$passre,$nick,$db){
|
||||
|
||||
if($emailre != $email || $pass != $passre)
|
||||
return 'POST_ERROR';
|
||||
$state = $db->register($email,$pass,$nick);
|
||||
if($state == 'CORRECT') {
|
||||
$db->close();
|
||||
return checklogin($email, $pass);
|
||||
return checklogin($email, $pass,$db);
|
||||
}else {
|
||||
$db->close();
|
||||
return $state;
|
||||
}
|
||||
|
||||
@@ -74,8 +69,8 @@ function logout(){
|
||||
function getUser($app){
|
||||
$user=null;
|
||||
if(isset($_SESSION['sessionID'])){
|
||||
if($app['db']->checkCookie($_SESSION['sessionID'],$_SESSION['token'])){
|
||||
$user = $app['db']->loadProfile($_SESSION['sessionID']);
|
||||
if($app['data']->checkCookie($_SESSION['sessionID'],$_SESSION['token'])){
|
||||
$user = $app['data']->loadProfile($_SESSION['sessionID']);
|
||||
}
|
||||
}
|
||||
return $user;
|
||||
|
||||
Reference in New Issue
Block a user