PageRenderTime 27ms CodeModel.GetById 7ms RepoModel.GetById 0ms app.codeStats 1ms

/php/share.php

https://gitlab.com/AaronDeb/cloudbox
PHP | 190 lines | 154 code | 25 blank | 11 comment | 62 complexity | fc0ba11d94e7f3a4fc9f1e54d07597d4 MD5 | raw file
  1. <?PHP
  2. include 'init.php';
  3. session_start();
  4. date_default_timezone_set('Europe/Rome');
  5. $mode = $_GET['mode'];
  6. printXML("shareRequest");
  7. if($mode == 'init')
  8. {
  9. $time = $_GET['tmstmp'];
  10. $filename = $_GET['filename'];
  11. $fileIdResult = dbUtil::SELECT("SELECT clmnFileId FROM tblFiles WHERE clmnFileName=:name AND clmnUNFile=:uname", array(':name' => $filename, ':uname' => $_SESSION['un']));
  12. if(count($fileIdResult) != 0) {
  13. $fileId = $fileIdResult[0]['clmnFileId'];
  14. } else { die(); }
  15. $userIdResult = dbUtil::SELECT("SELECT clmnId FROM tblUsers WHERE clmnUserName=:uname", array(':uname' => $_SESSION['un']));
  16. if(count($userIdResult) != 0) {
  17. $userId = $userIdResult[0]['clmnId'];
  18. } else { die(); }
  19. $currUserActivityResult = dbUtil::SELECT("SELECT clmnFwId FROM tblFileWatch WHERE clmnUserId=:unid AND clmnFileId=:fileid", array(':unid' => $userId, ':fileid' => $fileId));
  20. if(count($currUserActivityResult) == 0) { //Check if I am already watching...
  21. //(false) Make it look like I'm watching
  22. $exc = dbUtil::INSERT("INSERT INTO tblFileWatch VALUES('', :clmnfileid, :clmnuserid, :activity)", array(':clmnfileid' => $fileId, ':clmnuserid' => $userId, ':activity' => $time));
  23. if($exc == true)
  24. {
  25. //sucess
  26. }
  27. } else {
  28. //(true) Update my activity
  29. $exc = dbUtil::UPDATE("UPDATE tblFileWatch SET clmnActivity=:activity WHERE clmnUserId=:unid", array(':unid' => $userId, ':activity' => $time));
  30. if($exc == true)
  31. {
  32. //sucess
  33. }
  34. }
  35. $fileShrIdResult = dbUtil::SELECT("SELECT clmnUsrID FROM tblSharedFiles WHERE clmnFileID=:fileid", array(':fileid' => $fileId));
  36. printXML("shared");
  37. if(count($fileShrIdResult) != 0) {
  38. //File is Shared
  39. echo "true";
  40. } else {
  41. //File is not Shared
  42. echo "false";
  43. die();
  44. }
  45. printXML("/shared");
  46. getWatchers($fileId, $userId, false);
  47. $actFileNameResult = dbUtil::SELECT("SELECT clmnActFN FROM tblFiles WHERE clmnFileId=:fileid", array(':fileid' => $fileId));
  48. $actFileName = $actFileNameResult[0]['clmnActFN'];
  49. $fh = fopen("../files/" . $actFileName,'r');
  50. $fileArray = null;
  51. $i = 0;
  52. while ($line = fgets($fh)) {
  53. $fileArray[$i] = $line;
  54. $i++;
  55. }
  56. fclose($fh);
  57. printXML("text");
  58. for ($x = 0; $x <= (sizeof($fileArray)-1); $x++) {
  59. printXML("line" . $x);
  60. echo str_replace(array('\n', '
  61. '), '', $fileArray[$x]);
  62. printXML("/line" . $x);
  63. }
  64. printXML("/text");
  65. } else if($mode == 'activity') {
  66. $fileName = $_GET['file'];
  67. $fileIdResult = dbUtil::SELECT("SELECT clmnFileId FROM tblFiles WHERE clmnFileName=:name AND clmnUNFile=:uname", array(':name' => $fileName, ':uname' => $_SESSION['un']));
  68. if(count($fileIdResult) != 0) {
  69. $fileId = $fileIdResult[0]['clmnFileId'];
  70. } else { die(); }
  71. $userIdResult = dbUtil::SELECT("SELECT clmnId FROM tblUsers WHERE clmnUserName=:uname", array(':uname' => $_SESSION['un']));
  72. if(count($userIdResult) != 0) {
  73. $userId = $userIdResult[0]['clmnId'];
  74. } else { die(); }
  75. getWatchers($fileId, $userId, true);
  76. } else if($mode == 'action') {
  77. $actMode = $_GET['action'];
  78. $fileName = $_GET['file'];
  79. $lineNo = $_GET['line'];
  80. $text = $_GET['text'];
  81. $cursPos = $_GET['pos'];
  82. $val = validateAction($actMode);
  83. if($val == true) {
  84. $fileIdResult = dbUtil::SELECT("SELECT clmnFileId FROM tblFiles WHERE clmnFileName=:name AND clmnUNFile=:uname", array(':name' => $fileName, ':uname' => $_SESSION['un']));
  85. if(count($fileIdResult) != 0) {
  86. $fileId = $fileIdResult[0]['clmnFileId'];
  87. } else { die(); }
  88. $userIdResult = dbUtil::SELECT("SELECT clmnId FROM tblUsers WHERE clmnUserName=:uname", array(':uname' => $_SESSION['un']));
  89. if(count($userIdResult) != 0) {
  90. $userId = $userIdResult[0]['clmnId'];
  91. } else { die(); }
  92. $exc = dbUtil::INSERT("INSERT INTO tblFileModif VALUES('', :clmnfileid, :clmnuserid, :clmnfileline, :clmnmode, :clmntext, :clmnpos)", array(':clmnfileid' => $fileId, ':clmnuserid' => $userId, ':clmnfileline' => $lineNo, ':clmnmode' => $actMode, ':clmntext' => $text, ':clmnpos' => $curPos));
  93. if($exc == true)
  94. {
  95. //sucess
  96. }
  97. }
  98. }
  99. printXML("/shareRequest");
  100. header('Content-Type: application/xml; charset=utf-8');
  101. function getWatchers($fileId, $userId, $delete) {
  102. $lastActivityResult = dbUtil::SELECT("SELECT clmnUserId, clmnActivity FROM tblFileWatch WHERE clmnFileId=:fileid", array(':fileid' => $fileId));
  103. if(count($lastActivityResult) != 0) {
  104. //File has Watchers (Check if there are on-line)
  105. foreach($lastActivityResult as $row) {
  106. if($row['clmnUserId'] != $userId)
  107. {
  108. $lastActivity = new DateTime($row['clmnActivity']);
  109. $currentTime = new DateTime(date("m/d/Y H:i:s"));
  110. $interval = $lastActivity->diff($currentTime);
  111. ///var_dump($currentTime > $lastActivity);
  112. //echo $interval->d . "d " . $interval->h . "h " . $interval->i . "m " . $interval->s . "s";
  113. if($currentTime > $lastActivity)
  114. {
  115. if(($interval->d + $interval->h ) == 0 && $interval->i <= 1) {
  116. printXML("watchers");
  117. //active user found!
  118. $userNameResult = dbUtil::SELECT("SELECT clmnUserName FROM tblUsers WHERE clmnId=:unid", array(':unid' => $row['clmnUserId']));
  119. echo $userNameResult[0]['clmnUserName'];
  120. printXML("/watchers");
  121. printUserLocation($row['clmnUserId'], $fileId, $delete);
  122. }
  123. }
  124. }
  125. }
  126. }
  127. }
  128. function validateAction($action) {
  129. if($action == "write") {
  130. return true;
  131. } else if($action == "newline") {
  132. return true;
  133. } else if($action == "backspace") {
  134. return true;
  135. } else if($action == "delete") {
  136. return true;
  137. }
  138. return false;
  139. }
  140. function printUserLocation($activeUser, $fileId, $delete) {
  141. $userLocationResult = dbUtil::SELECT("SELECT clmnFileLine, clmnLineMode, clmnLineText, clmnLinePos FROM tblFileModif WHERE clmnFileId=:fileid AND clmnUserId=:userid", array(':userid' => $activeUser, ':fileid' => $fileId));
  142. foreach($userLocationResult as $row) {
  143. printXML("userloc");
  144. printXML("line");
  145. echo $row['clmnFileLine'];
  146. printXML("/line");
  147. printXML("mode");
  148. echo $row['clmnLineMode'];
  149. printXML("/mode");
  150. printXML("ltext");
  151. echo str_replace(array('\n', '\r'), "", $row['clmnLineText']);
  152. printXML("/ltext");
  153. printXML("pos");
  154. echo $row['clmnLinePos'];
  155. printXML("/pos");
  156. printXML("/userloc");
  157. }
  158. if($delete) {
  159. $deleteLogsResult = dbUtil::DELETE("DELETE FROM tblFileModif WHERE clmnFileId=:fileid AND clmnUserId=:userid", array(':userid' => $activeUser, ':fileid' => $fileId));
  160. }
  161. }
  162. function printXML($str) {
  163. echo "<" . $str . ">";
  164. }
  165. ?>