From 83e7c0b0773ccf2a68f0299487776884cc450be8 Mon Sep 17 00:00:00 2001 From: Branislav Stojkovic Date: Sat, 22 Oct 2016 12:45:49 +0200 Subject: [PATCH] add back end PHP code to the repository --- diylc-server-api/.project | 11 + diylc-server-api/v1/createUser.php | 64 ++++++ diylc-server-api/v1/download-icon-32.png | Bin 0 -> 717 bytes diylc-server-api/v1/download-icon.png | Bin 0 -> 2401 bytes diylc-server-api/v1/error_log | 55 +++++ diylc-server-api/v1/getCategories.php | 39 ++++ diylc-server-api/v1/left-arrow.png | Bin 0 -> 4100 bytes diylc-server-api/v1/login.php | 52 +++++ diylc-server-api/v1/loginWithToken.php | 53 +++++ diylc-server-api/v1/properties.php | 250 +++++++++++++++++++++++ diylc-server-api/v1/right-arrow.png | Bin 0 -> 4099 bytes diylc-server-api/v1/search.php | 150 ++++++++++++++ diylc-server-api/v1/testUpload.html | 27 +++ diylc-server-api/v1/upload.php | 134 ++++++++++++ 14 files changed, 835 insertions(+) create mode 100644 diylc-server-api/.project create mode 100644 diylc-server-api/v1/createUser.php create mode 100644 diylc-server-api/v1/download-icon-32.png create mode 100644 diylc-server-api/v1/download-icon.png create mode 100644 diylc-server-api/v1/error_log create mode 100644 diylc-server-api/v1/getCategories.php create mode 100644 diylc-server-api/v1/left-arrow.png create mode 100644 diylc-server-api/v1/login.php create mode 100644 diylc-server-api/v1/loginWithToken.php create mode 100644 diylc-server-api/v1/properties.php create mode 100644 diylc-server-api/v1/right-arrow.png create mode 100644 diylc-server-api/v1/search.php create mode 100644 diylc-server-api/v1/testUpload.html create mode 100644 diylc-server-api/v1/upload.php diff --git a/diylc-server-api/.project b/diylc-server-api/.project new file mode 100644 index 00000000..6f7ed32c --- /dev/null +++ b/diylc-server-api/.project @@ -0,0 +1,11 @@ + + + diylc-server-api + + + + + + + + diff --git a/diylc-server-api/v1/createUser.php b/diylc-server-api/v1/createUser.php new file mode 100644 index 00000000..e5b01fa9 --- /dev/null +++ b/diylc-server-api/v1/createUser.php @@ -0,0 +1,64 @@ +load($propertiesFile); + +// Connect to the DB +$username=$dbProperties->getProperty("user"); +$password=$dbProperties->getProperty("pass"); +$database=$dbProperties->getProperty("db"); +$mysqli = new mysqli(localhost,$username,$password,$database); + +// Run the query +$sql= "SELECT name FROM diylc_user WHERE LOWER(name) = LOWER('".$name."')"; + +if (!$result = $mysqli->query($sql)) { + echo "{\"string\":Error}"; + exit; +} + +$num = $num = $result->num_rows; +if ($num === 0) { + $sql= "INSERT INTO diylc_user (name, password, email, website, bio) VALUES ('".addslashes($name)."', '".$pwd."', '".addslashes($email)."', '".addslashes($website)."', '".addslashes($bio)."')"; + + if ($mysqli->query($sql) === TRUE) { + echo "{\"string\":Success}"; + } else { + echo "{\"string\":Error}"; + } + +} else { + echo "{\"string\":User already exists.}"; +} + +$mysqli->close(); +?> \ No newline at end of file diff --git a/diylc-server-api/v1/download-icon-32.png b/diylc-server-api/v1/download-icon-32.png new file mode 100644 index 0000000000000000000000000000000000000000..090ed55653e1842e0770438e42a65da2cbc5c462 GIT binary patch literal 717 zcmV;;0y6!HP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02y>eSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E-^Ag1Z(U700KQpL_t(oN7dHNi%oGH$MNf_D5Nk8qa+VY zEEIc<9SdSHjg2fU*w_%|A);h5+Yus~@~}{vzeQsqp)5Ryggm_8-0$r-$2sSodpq|| zKJ}_|&-tC-_j~Vo_}#|;oCVm43%HF5T*e5Np=Viyb9jee1-{}sR-o2w!V}~b&GQD^ z(N#9!46foVb|L-NFL45nn~!-|k3*P3jPutRLgmbc*YYP~lB|1JjH1}gCB*nw7(k^Q zLs~3r5_3=`V~F$oQf)IAZ{Z2=u>(us-R}O+7(~^0X`aLRJm2|Cvj)-es5_Eu#?il< z9pxfo&ModJ%K^mThwi8$`w(+}#D3&v80n4o8cR`>mDt{#@ehcCHsLB5pWTk)a$#$`_IH}CNSp9Ik+*Ge$Mz)ICbD{3 zJW|wz`+8nHl5L`|#Us(gj1-Spc*cs?kVfM-O2PMqkOJZ900000NkvXXu0mjfA3{z0 literal 0 HcmV?d00001 diff --git a/diylc-server-api/v1/download-icon.png b/diylc-server-api/v1/download-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2a53d12edfff2efdbf98adbe225ae7ea4d2f14b2 GIT binary patch literal 2401 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 Ts7%);00000NkvXXu0mjf#YT|M literal 0 HcmV?d00001 diff --git a/diylc-server-api/v1/error_log b/diylc-server-api/v1/error_log new file mode 100644 index 00000000..68a7c73b --- /dev/null +++ b/diylc-server-api/v1/error_log @@ -0,0 +1,55 @@ +[22-Dec-2009 22:17:29] PHP Parse error: syntax error, unexpected T_ECHO, expecting ',' or ';' in /home/diyfever/public_html/diylc/db/project_search.php on line 40 +[22-Dec-2009 22:19:40] PHP Fatal error: Call to a member function getProperty() on a non-object in /home/diyfever/public_html/diylc/db/project_search.php on line 15 +[23-Dec-2009 11:39:11] PHP Warning: mysql_numrows(): supplied argument is not a valid MySQL result resource in /home/diyfever/public_html/diylc/db/downloadProject.php on line 25 +[23-Dec-2009 11:39:11] PHP Warning: Cannot modify header information - headers already sent by (output started at /home/diyfever/public_html/diylc/db/downloadProject.php:25) in /home/diyfever/public_html/diylc/db/downloadProject.php on line 28 +[23-Dec-2009 11:39:11] PHP Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /home/diyfever/public_html/diylc/db/downloadProject.php on line 29 +[23-Dec-2009 11:39:39] PHP Warning: mysql_numrows(): supplied argument is not a valid MySQL result resource in /home/diyfever/public_html/diylc/db/downloadProject.php on line 25 +[23-Dec-2009 11:39:39] PHP Warning: Cannot modify header information - headers already sent by (output started at /home/diyfever/public_html/diylc/db/downloadProject.php:25) in /home/diyfever/public_html/diylc/db/downloadProject.php on line 28 +[23-Dec-2009 11:39:39] PHP Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /home/diyfever/public_html/diylc/db/downloadProject.php on line 29 +[23-Dec-2009 11:40:46] PHP Warning: mysql_numrows(): supplied argument is not a valid MySQL result resource in /home/diyfever/public_html/diylc/db/downloadProject.php on line 25 +[23-Dec-2009 11:40:46] PHP Warning: Cannot modify header information - headers already sent by (output started at /home/diyfever/public_html/diylc/db/downloadProject.php:25) in /home/diyfever/public_html/diylc/db/downloadProject.php on line 28 +[23-Dec-2009 11:40:46] PHP Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /home/diyfever/public_html/diylc/db/downloadProject.php on line 29 +[10-Oct-2011 11:17:43] PHP Warning: mysql_numrows(): supplied argument is not a valid MySQL result resource in /home/diyfever/public_html/diylc/db/downloadProject.php on line 25 +[10-Oct-2011 11:17:43] PHP Warning: Cannot modify header information - headers already sent by (output started at /home/diyfever/public_html/diylc/db/downloadProject.php:25) in /home/diyfever/public_html/diylc/db/downloadProject.php on line 28 +[10-Oct-2011 11:17:43] PHP Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /home/diyfever/public_html/diylc/db/downloadProject.php on line 29 +[23-Jul-2014 13:13:53 Europe/Belgrade] PHP Warning: mysql_numrows() expects parameter 1 to be resource, boolean given in /home/diyfever/public_html/diylc/db/downloadProject.php on line 25 +[23-Jul-2014 13:13:53 Europe/Belgrade] PHP Warning: Cannot modify header information - headers already sent by (output started at /home/diyfever/public_html/diylc/db/downloadProject.php:25) in /home/diyfever/public_html/diylc/db/downloadProject.php on line 28 +[23-Jul-2014 13:13:53 Europe/Belgrade] PHP Warning: mysql_result() expects parameter 1 to be resource, boolean given in /home/diyfever/public_html/diylc/db/downloadProject.php on line 29 +[14-Oct-2016 12:36:05 Europe/Belgrade] PHP Warning: require_once(properties.php): failed to open stream: No such file or directory in /home/diyfever/public_html/diylc/db/login.php on line 7 +[14-Oct-2016 12:36:05 Europe/Belgrade] PHP Fatal error: require_once(): Failed opening required 'properties.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/diyfever/public_html/diylc/db/login.php on line 7 +[14-Oct-2016 13:36:44 Europe/Belgrade] PHP Parse error: syntax error, unexpected '}' in /home/diyfever/public_html/diylc/db/projectSearch.php on line 26 +[14-Oct-2016 15:32:48 Europe/Belgrade] PHP Parse error: syntax error, unexpected '.' in /home/diyfever/public_html/diylc/db/projectSearch.php on line 30 +[14-Oct-2016 16:08:33 Europe/Belgrade] PHP Fatal error: Call to undefined function query() in /home/diyfever/public_html/diylc/db/createUser.php on line 46 +[14-Oct-2016 16:09:24 Europe/Belgrade] PHP Fatal error: Call to undefined function query() in /home/diyfever/public_html/diylc/db/createUser.php on line 50 +[14-Oct-2016 16:09:53 Europe/Belgrade] PHP Fatal error: Call to undefined function query() in /home/diyfever/public_html/diylc/db/createUser.php on line 52 +[14-Oct-2016 16:27:45 Europe/Belgrade] PHP Parse error: syntax error, unexpected ':' in /home/diyfever/public_html/diylc/db/login.php on line 45 +[14-Oct-2016 17:50:59 Europe/Belgrade] PHP Fatal error: Call to a member function free() on boolean in /home/diyfever/public_html/diylc/db/login.php on line 50 +[14-Oct-2016 17:53:52 Europe/Belgrade] PHP Parse error: syntax error, unexpected 'echo' (T_ECHO) in /home/diyfever/public_html/diylc/db/loginWithToken.php on line 47 +[19-Oct-2016 12:45:17 Europe/Belgrade] PHP Parse error: syntax error, unexpected '.' in /home/diyfever/public_html/diylc/db/projectSearch.php on line 83 +[19-Oct-2016 12:45:54 Europe/Belgrade] PHP Parse error: syntax error, unexpected '.' in /home/diyfever/public_html/diylc/db/projectSearch.php on line 83 +[19-Oct-2016 12:56:27 Europe/Belgrade] PHP Parse error: syntax error, unexpected '}', expecting ',' or ';' in /home/diyfever/public_html/diylc/db/projectSearch.php on line 94 +[19-Oct-2016 12:56:35 Europe/Belgrade] PHP Warning: Illegal string offset 'owner' in /home/diyfever/public_html/diylc/db/projectSearch.php on line 84 +[19-Oct-2016 12:57:13 Europe/Belgrade] PHP Warning: Illegal string offset 'owner' in /home/diyfever/public_html/diylc/db/projectSearch.php on line 86 +[19-Oct-2016 13:44:33 Europe/Belgrade] PHP Parse error: syntax error, unexpected '"' (T_CONSTANT_ENCAPSED_STRING), expecting ',' or ';' in /home/diyfever/public_html/diylc/db/projectSearch.php on line 105 +[19-Oct-2016 14:15:35 Europe/Belgrade] PHP Parse error: syntax error, unexpected 'right' (T_STRING), expecting ',' or ';' in /home/diyfever/public_html/diylc/db/projectSearch.php on line 106 +[19-Oct-2016 14:25:05 Europe/Belgrade] PHP Parse error: syntax error, unexpected 'right' (T_STRING), expecting ',' or ';' in /home/diyfever/public_html/diylc/db/projectSearch.php on line 96 +[19-Oct-2016 15:48:00 Europe/Belgrade] PHP Warning: mysql_query(): Access denied for user ''@'localhost' (using password: NO) in /home/diyfever/public_html/diylc/db/upload.php on line 96 +[19-Oct-2016 15:48:00 Europe/Belgrade] PHP Warning: mysql_query(): A link to the server could not be established in /home/diyfever/public_html/diylc/db/upload.php on line 96 +[19-Oct-2016 15:51:34 Europe/Belgrade] PHP Parse error: syntax error, unexpected ')' in /home/diyfever/public_html/diylc/db/upload.php on line 113 +[19-Oct-2016 15:56:04 Europe/Belgrade] PHP Warning: move_uploaded_file(/path/to/your/destination/4.png): failed to open stream: No such file or directory in /home/diyfever/public_html/diylc/db/upload.php on line 120 +[19-Oct-2016 15:56:04 Europe/Belgrade] PHP Warning: move_uploaded_file(): Unable to move '/tmp/phpCQK5Bb' to '/path/to/your/destination/4.png' in /home/diyfever/public_html/diylc/db/upload.php on line 120 +[19-Oct-2016 15:56:04 Europe/Belgrade] PHP Warning: move_uploaded_file(/path/to/your/destination/4.diy): failed to open stream: No such file or directory in /home/diyfever/public_html/diylc/db/upload.php on line 121 +[19-Oct-2016 15:56:04 Europe/Belgrade] PHP Warning: move_uploaded_file(): Unable to move '/tmp/phpCQK5Bb' to '/path/to/your/destination/4.diy' in /home/diyfever/public_html/diylc/db/upload.php on line 121 +[19-Oct-2016 15:56:04 Europe/Belgrade] PHP Fatal error: Call to a member function free() on boolean in /home/diyfever/public_html/diylc/db/upload.php on line 131 +[19-Oct-2016 15:58:21 Europe/Belgrade] PHP Fatal error: Call to a member function free() on boolean in /home/diyfever/public_html/diylc/db/upload.php on line 131 +[19-Oct-2016 16:00:57 Europe/Belgrade] PHP Warning: move_uploaded_file(public_html/diylc/thumbnails7.png): failed to open stream: No such file or directory in /home/diyfever/public_html/diylc/db/upload.php on line 120 +[19-Oct-2016 16:00:57 Europe/Belgrade] PHP Warning: move_uploaded_file(): Unable to move '/tmp/php5NzI1v' to 'public_html/diylc/thumbnails7.png' in /home/diyfever/public_html/diylc/db/upload.php on line 120 +[19-Oct-2016 16:00:57 Europe/Belgrade] PHP Warning: move_uploaded_file(public_html/diylc/uploads/7.diy): failed to open stream: No such file or directory in /home/diyfever/public_html/diylc/db/upload.php on line 121 +[19-Oct-2016 16:00:57 Europe/Belgrade] PHP Warning: move_uploaded_file(): Unable to move '/tmp/phpYopq2O' to 'public_html/diylc/uploads/7.diy' in /home/diyfever/public_html/diylc/db/upload.php on line 121 +[19-Oct-2016 16:26:43 Europe/Belgrade] PHP Parse error: syntax error, unexpected '$isJson' (T_VARIABLE) in /home/diyfever/public_html/diylc/api/search.php on line 14 +[19-Oct-2016 16:26:55 Europe/Belgrade] PHP Parse error: syntax error, unexpected 'require_once' (T_REQUIRE_ONCE) in /home/diyfever/public_html/diylc/api/search.php on line 43 +[19-Oct-2016 16:33:12 Europe/Belgrade] PHP Parse error: syntax error, unexpected '<' in /home/diyfever/public_html/diylc/api/search.php on line 130 +[19-Oct-2016 16:33:25 Europe/Belgrade] PHP Parse error: syntax error, unexpected end of file in /home/diyfever/public_html/diylc/api/search.php on line 137 +[19-Oct-2016 16:40:41 Europe/Belgrade] PHP Parse error: syntax error, unexpected '&' in /home/diyfever/public_html/diylc/api/search.php on line 131 +[22-Oct-2016 10:10:56 Europe/Belgrade] PHP Parse error: syntax error, unexpected end of file in /home/diyfever/public_html/diylc/api/v1/getAvailableCategories.php on line 39 +[22-Oct-2016 10:26:50 Europe/Belgrade] PHP Parse error: syntax error, unexpected '"', expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in /home/diyfever/public_html/diylc/api/v1/getCategories.php on line 32 diff --git a/diylc-server-api/v1/getCategories.php b/diylc-server-api/v1/getCategories.php new file mode 100644 index 00000000..56d373f9 --- /dev/null +++ b/diylc-server-api/v1/getCategories.php @@ -0,0 +1,39 @@ +load($propertiesFile); + +// Connect to the DB +$username=$dbProperties->getProperty("user"); +$password=$dbProperties->getProperty("pass"); +$database=$dbProperties->getProperty("db"); +$mysqli = new mysqli(localhost,$username,$password,$database); + +// Run the query +$sql= "SELECT name FROM diylc_category ORDER BY sort_order"; + +if (!$result = $mysqli->query($sql)) { + echo "{\"string\":Error}"; + exit; +} + +echo "{\"list\":{\"java.lang.String\":["; + +$i=0; + +while ($row = $result->fetch_assoc()) { + if ($i>0) + echo ","; + echo "\"".$row["name"]."\""; + $i++; +} + +echo "]}}"; + +$mysqli->close(); +?> \ No newline at end of file diff --git a/diylc-server-api/v1/left-arrow.png b/diylc-server-api/v1/left-arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..42f1a9eb92ea9b7decc603e531ddc3542af45c74 GIT binary patch literal 4100 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 + +// Connect to the DB +$username=$dbProperties->getProperty("user"); +$password=$dbProperties->getProperty("pass"); +$database=$dbProperties->getProperty("db"); +$mysqli = new mysqli(localhost,$username,$password,$database); + +// Run the query +$sql= "SELECT name FROM diylc_user WHERE name = \"".addslashes($name)."\" AND password = \"".addslashes($pwd)."\""; +if (!$result = $mysqli->query($sql)) { + echo "{\"string\":Error}"; + exit; +} + +if ($result->num_rows === 0) { + echo "{\"string\":Error}"; +} else { + $token = uniqid(addslashes($name), false); + $sql = "UPDATE diylc_user SET last_login = NOW(), machine_id = '".$machineId."', token='".$token."' WHERE name = \"".$name."\""; + $result2 = $mysqli->query($sql); + echo "{\"string\":".$token."}"; +} +$result->free(); +$mysqli->close(); +?> \ No newline at end of file diff --git a/diylc-server-api/v1/loginWithToken.php b/diylc-server-api/v1/loginWithToken.php new file mode 100644 index 00000000..abe540df --- /dev/null +++ b/diylc-server-api/v1/loginWithToken.php @@ -0,0 +1,53 @@ +load($propertiesFile); + +// Connect to the DB +$username=$dbProperties->getProperty("user"); +$password=$dbProperties->getProperty("pass"); +$database=$dbProperties->getProperty("db"); +$mysqli = new mysqli(localhost,$username,$password,$database); + +// Run the query +$sql= "SELECT name FROM diylc_user WHERE name = \"".addslashes($name)."\" AND token= \"".addslashes($pwd)."\" AND machine_id = \"".addslashes($machineId)."\""; + +if (!$result = $mysqli->query($sql)) { + echo "{\"string\":Error}"; + exit; +} + +if ($result->num_rows === 0) { + echo "{\"string\":Error}"; +} else { + $sql = "UPDATE diylc_user SET last_login = NOW() WHERE name = \"".$name."\""; + $result2 = $mysqli->query($sql); + echo "{\"string\":Success}"; +} + + +$result->free(); +$mysqli->close(); +?> \ No newline at end of file diff --git a/diylc-server-api/v1/properties.php b/diylc-server-api/v1/properties.php new file mode 100644 index 00000000..9467326b --- /dev/null +++ b/diylc-server-api/v1/properties.php @@ -0,0 +1,250 @@ +defaults = $defaults; + } + + $this->properties = array(); + } + + /** + * Retrieves a property value. If a value is not found for this key, the + * defaults object is searched for a default. If not default value is + * found there, the default value passed into this function is used. If + * a value still cannot be determined, null is returned. + */ + public function getProperty($key, $defaultValue = null) { + $value = null; + + if(array_key_exists($key, $this->properties)) { + $value = $this->properties[$key]; + } + + if($value == null && $this->defaults != null) { + $value = $this->defaults->getProperty($key); + } + + if($value == null) { + $value = $defaultValue; + } + + return $value; + } + + /** + * Sets a property value. Returns the old value, if available. No defaults + * are used when searching for the old value; a value is returned only if it + * was explicitly set. + */ + public function setProperty($key, $value) { + $oldValue = null; + if(array_key_exists($key, $this->properties)) { + $oldValue = $this->properties[$key]; + } + $this->properties[$key] = $value; + return $oldValue; + } + + /** + * Returns the names of all keys in this property set, including keys in the + * default property set if no value is defined in this property set. + */ + public function propertyNames() { + $keys = array(); + if($this->defaults != null) { + $keys = $this->defaults->propertyNames(); + } + + $myKeys = array_keys($this->properties); + sort($myKeys); + for($i = 0; $i < count($myKeys); $i++) { + if(!array_key_exists($myKeys[$i], $keys)) { + array_push($keys, $myKeys[$i]); + } + } + + return $keys; + } + + /** + * Writes the properties to the given stream, in the format defined by + * java.util.Properties. + */ + public function store($handle, $comment = null) { + if($comment != null) { + fwrite($handle, "#" . $this->escapeComment($comment) . PHP_EOL); + } + fwrite($handle, "#" . date("D M d H:i:s T Y") . PHP_EOL); + + $propertyNames = array_keys($this->properties); + for($i = 0; $i < count($propertyNames); $i++) { + fwrite($handle, $this->escapeKey($propertyNames[$i]) . "=" . $this->escapeValue($this->properties[$propertyNames[$i]]) . PHP_EOL); + } + } + + /** + * Loads a file from the given stream, in the format defined by + * java.util.Properties + */ + public function load($handle) { + $this->properties = array(); + + $logicalLine = ""; + $appendNext = false; + while(!feof($handle)) { + $line = fgets($handle); + $line = rtrim($line, "\r\n"); // Chomp! + $line = ltrim($line); + + // If the previous line was a continuation line, append this one + if($appendNext) { + $logicalLine .= $line; + $appendNext = false; + } else { + $logicalLine = $line; + } + + // Is it a comment line? + // Check this before checking for continuations, as comments cannot be continued + if(preg_match("/^[ ]*[#!]/", $logicalLine)) { + continue; + } + + // Is this line continued? + // A continuation line is one ending in an odd number of backslashes + $numTrailingBackslashes = 0; + while((strlen($logicalLine) - $numTrailingBackslashes - 1) > -1 && + $logicalLine[strlen($logicalLine) - $numTrailingBackslashes - 1] == "\\") { + $numTrailingBackslashes++; + } + if($numTrailingBackslashes % 2 == 1) { + // If it is a continuation line, append a newline.. this will + // removed when the line is unescaped, but appending it in + // advance prevents backslashes other than the final one from + // escaping the next line, e.g. in the case + // a=b\\\ + // n + // If you are not careful, this will be transformed into + // a=b\\n + // And bad things could happen. + $logicalLine .= "\n"; + $appendNext = true; + continue; + } + + // Now that we've combined the physical lines to form one large + // logical line, see if it's empty. + if(strcmp($logicalLine, "") == 0) { + continue; + } + + // Split into key-value pairs + $matches = array(); + $key = ""; + $value = ""; + + // This regex splits the string into 3 sections: + // - Leading whitespace plus all non-whitespace characters up to + // the first unescaped :, =, space, or tab character + // - The :, =, space, or tab character itself, which separates + // the key from the value + // - The rest of the string + // If this match succeeds, the first and third pieces form the key + // and value. Otherwise, the entire string is considered to be a + // key with no value. + if(preg_match("/^([ ]*.*?[^\\\\])([:= ]+?)([^:= ].*)$/s", $logicalLine, $matches)) { + $key = $matches[1]; + $value = $matches[3]; + } else { + $key = $logicalLine; + } + + $key = $this->unescapeGeneric($key); + $value = $this->unescapeGeneric($value); + + $this->properties[$key] = $value; + } + + } + + /** + * List the contents to an output stream. This is useful for debugging. + */ + public function debugList($handle) { + fwrite($handle, "-- listing properties --" . PHP_EOL); + $propertyNames = $this->propertyNames(); + for($i = 0; $i < count($propertyNames); $i++) { + fwrite($handle, $propertyNames[$i] . "=" . $this->getProperty($propertyNames[$i]) . PHP_EOL); + } + } + + private function escapeKey($key) { + return str_replace(" ", "\\ ", $this->escapeGeneric($key)); + } + + private function escapeValue($value) { + $value = $this->escapeGeneric($value); + + // Values have leading space replaced, but none other + if(strlen($value) > 0 && strcmp($value[0], ' ') == 0) { + $value = "\\" . $value; + } + + return $value; + } + + private function escapeGeneric($value) { + $value = str_replace("#", "\\#", $value); + $value = str_replace("!", "\\!", $value); + $value = str_replace("=", "\\=", $value); + $value = str_replace(":", "\\:", $value); + $value = str_replace("\t", "\\t", $value); + $value = str_replace("\n", "\\n", $value); + $value = str_replace("\r", "\\r", $value); + return $value; + } + + private function escapeComment($comment) { + return preg_replace("/\n([^#])/", "\n#\\1", $comment); + } + + private function unescapeGeneric($value) { + $value = preg_replace("/\\\\([^\\\\trn\\n])/s", "\\1", $value); + $value = str_replace("\\\n", "", $value); + $value = str_replace("\\t", "\t", $value); + $value = str_replace("\\r", "\r", $value); + $value = str_replace("\\n", "\n", $value); + return $value; + } + + private $properties /* Array */; + private $defaults /* Properties */; +} + +?> diff --git a/diylc-server-api/v1/right-arrow.png b/diylc-server-api/v1/right-arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..baceadb3c5bc0aadc7a25b51371a9e96d4d4ea74 GIT binary patch literal 4099 zcmV+e5d80nP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE2000U( 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 B$mak6 literal 0 HcmV?d00001 diff --git a/diylc-server-api/v1/search.php b/diylc-server-api/v1/search.php new file mode 100644 index 00000000..6cca990c --- /dev/null +++ b/diylc-server-api/v1/search.php @@ -0,0 +1,150 @@ +load($propertiesFile); + +// Connect to the DB +$username=$dbProperties->getProperty("user"); +$password=$dbProperties->getProperty("pass"); +$database=$dbProperties->getProperty("db"); +$mysqli = new mysqli(localhost,$username,$password,$database); + +$sql = " +SELECT p.project_id, p.name, p.description, c.name AS 'category', u.name AS 'owner', p.last_update +FROM diylc_project p, diylc_category c, diylc_user u +WHERE p.category_id = c.category_id AND p.owner_user_id = u.user_id ".$condition.$orderBy.$limit; + +//echo $sql; + +if (!$result = $mysqli->query($sql)) { + echo "{\"string\":Error}"; + exit; +} + +$num = $num = $result->num_rows; +if ($num === 0) { + if ($isJson) + echo "{\"list\":\"\"}"; + else { + echo "
No matching projects found.
"; + echo "
"; + + if ($page > 1) + echo ""; + echo "
"; + } +} else { + // JSON header + if ($isJson) + echo "{\"list\":{\"".$className."\":["; + else + echo ""; + + $i=0; + while ($row = $result->fetch_assoc()) { + if ($i>0) { + if ($isJson) + echo ","; + else + echo ""; + } + + $time = strtotime($row["last_update"]); + $updated = date("Y-m-d", $time); + + if ($isJson) + { + echo "{"; + echo "\"id\":".$row["project_id"].","; + echo "\"name\":\"".$row["name"]."\","; + echo "\"description\":\"".$row["description"]."\","; + echo "\"owner\":\"".$row["owner"]."\","; + echo "\"category\":\"".$row["category"]."\","; + echo "\"updated\":\"".$updated ."\","; + echo "\"thumbnailUrl\":\"http://diy-fever.com/diylc/thumbnails/".$row["project_id"].".png\","; + echo "\"downloadUrl\":\"http://diy-fever.com/diylc/uploads/".$row["project_id"].".diy\""; + echo "}"; + } else { + echo " + + + + + + + + + + + + + + + + + "; + } + $i++; + } + + // JSON footer + if ($isJson) + echo "]}}"; + else { + echo "
".$row["name"]."by ".$row["owner"]."

".$row["description"]."

Category: ".$row["category"]."
Uploaded on ".$updated."
"; + echo "
"; + + echo "
"; + if ($page > 1) + echo ""; + echo ""; + if ($num == $itemsPerPage) + echo ""; + echo "
"; + } +} + +$result->free(); +$mysqli->close(); +?> \ No newline at end of file diff --git a/diylc-server-api/v1/testUpload.html b/diylc-server-api/v1/testUpload.html new file mode 100644 index 00000000..29fe3daa --- /dev/null +++ b/diylc-server-api/v1/testUpload.html @@ -0,0 +1,27 @@ + + +
+ Username: +
+ MachineId: +
+ Token: +
+ Name: +
+ Category: +
+ Description: +
+ Version: +
+ Keywords: +
+ Thumb: +
+ Project: +
+ +
+ + \ No newline at end of file diff --git a/diylc-server-api/v1/upload.php b/diylc-server-api/v1/upload.php new file mode 100644 index 00000000..84093818 --- /dev/null +++ b/diylc-server-api/v1/upload.php @@ -0,0 +1,134 @@ + 100000) { + echo "{\"string\":Thumbnail file is too big.}"; + exit; +} +if ($projectFile['size'] > 10000000) { + echo "{\"string\":Project file is too big.}"; + exit; +} +if (getimagesize($thumbnailFile['tmp_name']) == false) { + echo "{\"string\":Thumbnail image is not valid.}"; + exit; +} + +// Load help class +require_once("properties.php"); + +// Load properties +$dbProperties = new Properties(); +$propertiesFile = fopen("db.properties", "rb"); +$dbProperties->load($propertiesFile); + +// Connect to the DB +$username=$dbProperties->getProperty("user"); +$password=$dbProperties->getProperty("pass"); +$database=$dbProperties->getProperty("db"); +$mysqli = new mysqli(localhost,$username,$password,$database); + +// Verify that the user is logged in +$sql = " +SELECT user_id +FROM diylc_user +WHERE name = \"".addslashes($name)."\" AND token= \"".addslashes($token)."\" AND machine_id = \"".addslashes($machineId)."\""; + +if (!$result = $mysqli->query($sql)) { + echo "{\"string\":Error while looking up the user.}"; + exit; +} + +if ($row = $result->fetch_assoc()) { + $userId = $row["user_id"]; + + // Find the right category + $sql = " + SELECT category_id + FROM diylc_category + WHERE LOWER(name) = LOWER(\"".addslashes($category)."\")"; + + if (!$result = $mysqli->query($sql)) { + echo "{\"string\":Error while determining the category.}"; + exit; + } + + if ($row = $result->fetch_assoc()) { + $categoryId = $row["category_id"]; + + // Insert into the database + $sql= " + INSERT INTO diylc_project (name, description, category_id, owner_user_id, diylc_version, keywords, uploaded_on, last_update) + VALUES (\"".$projectName."\",\"".$description."\",".$categoryId.",".$userId.",\"".$diylcVersion."\",\"".$keywords."\",now(),now())"; + + if (!$result = $mysqli->query($sql)) { + echo "{\"string\":Error while uploading the project into the database.}"; + exit; + } else { + $projectId = $mysqli->insert_id; + // Move the uploaded files + if (move_uploaded_file($thumbnailFile['tmp_name'], '/home/diyfever/public_html/diylc/thumbnails/'.$projectId.".png") and + move_uploaded_file($projectFile['tmp_name'], '/home/diyfever/public_html/diylc/uploads/'.$projectId.".diy")) + echo "{\"string\":Success}"; + else { + // delete the entry if we couldn't move the files + $sql="DELETE diylc_project WHERE project_id=".$projectId; + $mysqli->query($sql); + echo "{\"string\":Error processing uploaded files.}"; + } + } + } else { + echo "{\"string\":Invalid category.}"; + } +} else { + echo "{\"string\":User is not logged in.}"; +} + +$mysqli->close(); + +?> \ No newline at end of file