api.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. <?php
  2. require_once('php/include.php');
  3. // TODO - Add API handling.
  4. $method = $_SERVER['REQUEST_METHOD'];
  5. $ret = Array();
  6. if(isset($_GET['type'])){
  7. if(isset($_GET['id'])){
  8. $id = $_GET['id'];
  9. switch($_GET['type']){
  10. case 'user':
  11. back(true);
  12. if(!isset($_GET['template'])){
  13. $ret['template'] = file_get_contents(PATH_DATA.'pages/user.template');
  14. }
  15. $user = userObj($id);
  16. $context = Array(
  17. 'name'=>$user['name'],
  18. 'email'=>$user['email']
  19. );
  20. if($LOGGEDIN){
  21. $context['key'] = true;
  22. $context['user'] = userObj($_SESSION['username']);
  23. };
  24. $ret['context'] = $context;
  25. retj($ret,'User - '.$context['name']);
  26. break;
  27. case 'group':
  28. back(true);
  29. // TODO - handle group requests
  30. break;
  31. case 'issue':
  32. back(true);
  33. // TODO - handle issue requests
  34. break;
  35. case 'scrum':
  36. back(true);
  37. // TODO - handle scrum requests
  38. break;
  39. case 'project':
  40. back(true);
  41. if(!isset($_GET['template'])){
  42. $ret['template'] = file_get_contents(PATH_DATA.'pages/project.template');
  43. }
  44. $context = projectObj($id);
  45. $context['user'] = userObj($context['user']);
  46. if($LOGGEDIN){
  47. $context['key'] = true;
  48. $context['user'] = userObj($_SESSION['username']);
  49. };
  50. $ret['context'] = $context;
  51. retj($ret,'Project - '.$context['title']);
  52. break;
  53. case 'admin':
  54. back(true);
  55. // TODO - handle admin requests
  56. break;
  57. case 'page':
  58. $title = $id;
  59. if(file_exists(PATH_DATA.'pages/'.$id.'.template')){
  60. if(!isset($_GET['template'])){
  61. $ret['template'] = file_get_contents(PATH_DATA.'pages/'.$id.'.template');
  62. }
  63. $context = Array();
  64. if($LOGGEDIN){
  65. $context['key'] = true;
  66. $context['user'] = userObj($_SESSION['username']);
  67. };
  68. if(file_exists(PATH_DATA.'pages/'.$id.'.options')){
  69. $options = objectToArray(json_decode(file_get_contents(PATH_DATA.'pages/'.$id.'.options'),true));
  70. if(isset($options['secure'])&&$options['secure']&&!$LOGGEDIN){
  71. back(true);
  72. }
  73. if(isset($options['title'])){
  74. $title = $options['title'];
  75. }
  76. if(isset($options['context'])){
  77. foreach($options['context'] as $key){
  78. switch($key){
  79. case 'users':
  80. if($res = query("SELECT name FROM `users`;")){
  81. $context['users'] = fetch_all($res,MYSQLI_ASSOC);
  82. }
  83. break;
  84. case 'projects':
  85. if($res = query("SELECT p.title,p.id,p.description,u.name as user FROM `projects` p JOIN `users` u ON u.id = p.u_id")){
  86. $context['projects'] = fetch_all($res,MYSQLI_ASSOC);
  87. foreach($context['projects'] as $key => $project){
  88. $context['projects'][$key]['user'] = userObj($project['user']);
  89. }
  90. }
  91. break;
  92. }
  93. }
  94. }
  95. }
  96. $ret['context'] = $context;
  97. }else{
  98. $ret['error'] = 'That page does not exist';
  99. }
  100. retj($ret,$title);
  101. break;
  102. case 'action':
  103. switch($id){
  104. case 'login':
  105. $ret['state'] = Array(
  106. 'data'=>Array(
  107. 'type'=>'page',
  108. 'id'=>'login',
  109. )
  110. );
  111. if(isset($_GET['username'])&&isset($_GET['password'])){
  112. $key = login($_GET['username'],$_GET['password']);
  113. if($key){
  114. $_SESSION['username'] = $_GET['username'];
  115. }else{
  116. $ret['error'] = "Login failed. Username or Password didn't match.";
  117. }
  118. }else{
  119. $ret['error'] = "Please provide a valid username and password.";
  120. }
  121. retj($ret,$id);
  122. break;
  123. case 'register':
  124. $ret['state'] = Array(
  125. 'data'=>Array(
  126. 'type'=>'page',
  127. 'id'=>'register'
  128. )
  129. );
  130. if(is_valid('username')&&is_valid('password')&&is_valid('password1')&&is_valid('email')&&is_valid('captcha')){
  131. if($_GET['password']==$_GET['password1']){
  132. if(compare_captcha($_GET['captcha'])){
  133. if(addUser($_GET['username'],$_GET['password'],$_GET['email'])){
  134. $key = login($_GET['username'],$_GET['password']);
  135. $_SESSION['username'] = $_GET['username'];
  136. sendMail('welcome','Welcome!',$_GET['email'],get('email'),Array($_GET['username'],$_GET['password'],get('email')));
  137. }else{
  138. $ret['error'] = "Could not add user. ".$mysqli->error;
  139. }
  140. }else{
  141. $ret['error'] = "Captcha did not match.";
  142. }
  143. }else{
  144. $ret['error'] = "Passwords didn't match.";
  145. }
  146. }else{
  147. $ret['error'] = "Please fill in all the fields.";
  148. }
  149. retj($ret,$id);
  150. break;
  151. case 'project':
  152. back(true);
  153. $ret['state'] = Array(
  154. 'data'=>Array(
  155. 'type'=>'page',
  156. 'id'=>$id,
  157. )
  158. );
  159. if(isset($_GET['pid'])){
  160. $ret['error'] = 'Invalid Action';
  161. }elseif(is_valid('title')&&is_valid('description')){
  162. if(!newProject($_GET['title'],$_GET['description'])){
  163. $ret['error'] = 'Unable to create project.';
  164. }
  165. }else{
  166. $ret['error'] = 'Fill in all the details.';
  167. }
  168. retj($ret,$id);
  169. break;
  170. default:
  171. retj(Array(
  172. 'error'=>'Invalid action.'
  173. ));
  174. }
  175. break;
  176. default:
  177. retj(Array(
  178. 'error'=>'Invalid type.'
  179. ));
  180. }
  181. }else{
  182. retj(Array(
  183. 'error'=>'ID missing.'
  184. ));
  185. }
  186. }else{
  187. retj(Array(
  188. 'error'=>'Type missing.'
  189. ));
  190. }
  191. ?>