PageRenderTime 1600ms CodeModel.GetById 33ms RepoModel.GetById 1ms app.codeStats 0ms

/rep.php

https://github.com/RootLoudDev/fluency_tool
PHP | 569 lines | 517 code | 43 blank | 9 comment | 81 complexity | f6b18e458d1cdf298a6d3b5fb5508a87 MD5 | raw file
  1. <?php
  2. include_once('includes/_bootstrap.php');
  3. session_start();
  4. checkLogin('associate');
  5. $userassociate = $_SESSION['user_name'];
  6. $associateid = $_SESSION['user_id'];
  7. // Set up recorder
  8. $userDir=$userassociate;
  9. $uploadsDir = "./uploads/" . $userDir;
  10. // Get user data
  11. $currentUser = new User;
  12. $currentUser->setUserFromID($_SESSION['user_id']);
  13. $currentUser->getScenarios();
  14. //// Update scenario results
  15. for ($i=1; $i<=7; $i++)
  16. {
  17. $scenario[$i] = $currentUser->scenarios[($i-1)];
  18. }
  19. // Get feedback data
  20. $queryfeedback = "SELECT fbscenario, fbtext, fbtype, firstname, lastname FROM feedback, users
  21. WHERE associateid='$associateid' AND
  22. (feedback.managerid = users.ID)";
  23. $resultfeedback = mysql_query($queryfeedback);
  24. if (mysql_num_rows($resultfeedback) >= 1)
  25. {
  26. while ($rowfeedback = mysql_fetch_array($resultfeedback))
  27. {
  28. $scn = $rowfeedback['fbscenario'];
  29. $txt = $rowfeedback['fbtext'];
  30. $type = $rowfeedback['fbtype'];
  31. $fname = $rowfeedback['firstname'];
  32. $lname = $rowfeedback['lastname'];
  33. $fbText[$scn] .= $fname." ".$lname." - ".$txt.'\n';
  34. }
  35. }
  36. // Get peerreview status
  37. $querypeer = "SELECT * FROM peerreview WHERE reviewer='$associateid'";
  38. $resultpeer = mysql_query($querypeer);
  39. if (mysql_num_rows($resultpeer) >= 1)
  40. {
  41. $userIsReviewer = 1;
  42. } else {
  43. $userIsReviewer = 0;
  44. }
  45. ?>
  46. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  47. <html xmlns="http://www.w3.org/1999/xhtml">
  48. <head>
  49. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  50. <title>PULMOZYME: Associate Screen</title>
  51. <link href="styles.css" rel="stylesheet" type="text/css" />
  52. <link href="css/start/jquery-ui-1.8.2.custom.css" rel="stylesheet" type="text/css" />
  53. <script type="text/javascript" src="script/jquery-min.js"></script>
  54. <script type="text/javascript" src="script/jquery-ui-1.8.2.custom.min.js"></script>
  55. <script type="text/javascript">
  56. $(function() {
  57. $("#accordion").accordion();
  58. });
  59. </script>
  60. <script language="javascript">
  61. var scenarioDone=new Array(7);
  62. scenarioDone[1] = "<?php echo $scenario[1] ?>"
  63. scenarioDone[2] = "<?php echo $scenario[2] ?>"
  64. scenarioDone[3] = "<?php echo $scenario[3] ?>"
  65. scenarioDone[4] = "<?php echo $scenario[4] ?>"
  66. scenarioDone[5] = "<?php echo $scenario[5] ?>"
  67. scenarioDone[6] = "<?php echo $scenario[6] ?>"
  68. scenarioDone[7] = "<?php echo $scenario[7] ?>"
  69. var fileName = "";
  70. var uploadsDir = "<?php echo $uploadsDir?>";
  71. var fileExtension = ".spx";
  72. var userIsReviewer = "<?php echo $userIsReviewer?>";
  73. function scenarioNameDisplay()
  74. {
  75. var fileNameDisplay = fileName.replace(fileExtension, "");
  76. fileNameDisplay = fileNameDisplay.substring(0,8) + " " + fileNameDisplay.substring(8);
  77. return fileNameDisplay;
  78. }
  79. function loadPlayer(playFilename, displayName)
  80. {
  81. var d = new Date();
  82. var playString = playFilename + "?time=" + d.getTime();
  83. var display = displayName
  84. document.ListenUpPlayer.loadRecording(playString);
  85. document.getElementById("nowplaying").innerHTML = display;
  86. }
  87. function selectScenarioPlayable ()
  88. {
  89. var playString = uploadsDir + "/" + fileName
  90. // var fileNameDisplay = fileName.replace(fileExtension, "");
  91. // fileNameDisplay = fileNameDisplay.substring(0,8) + " " + fileNameDisplay.substring(8);
  92. var fileNameDisplay = scenarioNameDisplay();
  93. loadPlayer(playString, fileNameDisplay);
  94. document.getElementById('loadIdealResponse').disabled = false;
  95. }
  96. function selectScenarioUnplayable (scenarioChanged)
  97. {
  98. var scenarioChanged = scenarioChanged;
  99. document.getElementById('loadIdealResponse').disabled = true;
  100. if (scenarioChanged == true)
  101. {
  102. document.ListenUpPlayer.erase();
  103. document.getElementById("nowplaying").innerHTML = "Scenario not uploaded.";
  104. }
  105. }
  106. function selectScenario(scenario)
  107. {
  108. var playable = document.JavaSonicRecorderUploader.isPlayable();
  109. var scenarioChanged = false;
  110. switch (scenario)
  111. {
  112. case 'one':
  113. if (fileName != "Scenario1" + fileExtension)
  114. {
  115. scenarioChanged = true;
  116. }
  117. if (playable && scenarioChanged == true)
  118. {
  119. document.JavaSonicRecorderUploader.erase();
  120. }
  121. fileName = "Scenario1.spx";
  122. document.getElementById('notes').value = "<?php echo $fbText[1]; ?>";
  123. document.JavaSonicRecorderUploader.addNameValuePair("scenario", fileName);
  124. document.getElementById("nowrecording").innerHTML = scenarioNameDisplay();
  125. if (scenarioDone[1] == 1) {
  126. selectScenarioPlayable();
  127. }else{
  128. selectScenarioUnplayable(scenarioChanged);
  129. }
  130. break;
  131. case 'two':
  132. if (fileName != "Scenario2" + fileExtension)
  133. {
  134. scenarioChanged = true;
  135. }
  136. if (playable && scenarioChanged == true)
  137. {
  138. document.JavaSonicRecorderUploader.erase();
  139. }
  140. fileName = "Scenario2.spx";
  141. document.getElementById('notes').value = "<?php echo $fbText[2]; ?>";
  142. document.JavaSonicRecorderUploader.addNameValuePair("scenario", fileName);
  143. document.getElementById("nowrecording").innerHTML = scenarioNameDisplay();
  144. if (scenarioDone[2] == 1) {
  145. selectScenarioPlayable();
  146. }else{
  147. selectScenarioUnplayable(scenarioChanged);
  148. }
  149. break;
  150. case 'three':
  151. if (fileName != "Scenario3" + fileExtension)
  152. {
  153. scenarioChanged = true;
  154. }
  155. if (playable && scenarioChanged == true)
  156. {
  157. document.JavaSonicRecorderUploader.erase();
  158. }
  159. fileName = "Scenario3.spx";
  160. document.getElementById('notes').value = "<?php echo $fbText[3]; ?>";
  161. document.JavaSonicRecorderUploader.addNameValuePair("scenario", fileName);
  162. document.getElementById("nowrecording").innerHTML = scenarioNameDisplay();
  163. if (scenarioDone[3] == 1) {
  164. selectScenarioPlayable();
  165. }else{
  166. selectScenarioUnplayable(scenarioChanged);
  167. }
  168. break;
  169. case 'four':
  170. if (fileName != "Scenario4" + fileExtension)
  171. {
  172. scenarioChanged = true;
  173. }
  174. if (playable && scenarioChanged == true)
  175. {
  176. document.JavaSonicRecorderUploader.erase();
  177. }
  178. fileName = "Scenario4.spx";
  179. document.getElementById('notes').value = "<?php echo $fbText[4]; ?>";
  180. document.JavaSonicRecorderUploader.addNameValuePair("scenario", fileName);
  181. document.getElementById("nowrecording").innerHTML = scenarioNameDisplay();
  182. if (scenarioDone[4] == 1) {
  183. selectScenarioPlayable();
  184. }else{
  185. selectScenarioUnplayable(scenarioChanged);
  186. }
  187. break;
  188. case 'five':
  189. if (fileName != "Scenario5" + fileExtension)
  190. {
  191. scenarioChanged = true;
  192. }
  193. if (playable && scenarioChanged == true)
  194. {
  195. document.JavaSonicRecorderUploader.erase();
  196. }
  197. fileName = "Scenario5.spx";
  198. document.getElementById('notes').value = "<?php echo $fbText[5]; ?>";
  199. document.JavaSonicRecorderUploader.addNameValuePair("scenario", fileName);
  200. document.getElementById("nowrecording").innerHTML = scenarioNameDisplay();
  201. if (scenarioDone[5] == 1) {
  202. selectScenarioPlayable();
  203. }else{
  204. selectScenarioUnplayable(scenarioChanged);
  205. }
  206. break;
  207. case 'six':
  208. if (fileName != "Scenario6" + fileExtension)
  209. {
  210. scenarioChanged = true;
  211. }
  212. if (playable && scenarioChanged == true)
  213. {
  214. document.JavaSonicRecorderUploader.erase();
  215. }
  216. fileName = "Scenario6.spx";
  217. document.getElementById('notes').value = "<?php echo $fbText[6]; ?>";
  218. document.JavaSonicRecorderUploader.addNameValuePair("scenario", fileName);
  219. document.getElementById("nowrecording").innerHTML = scenarioNameDisplay();
  220. if (scenarioDone[6] == 1) {
  221. selectScenarioPlayable();
  222. }else{
  223. selectScenarioUnplayable(scenarioChanged);
  224. }
  225. break;
  226. case 'seven':
  227. if (fileName != "Scenario7" + fileExtension)
  228. {
  229. scenarioChanged = true;
  230. }
  231. if (playable && scenarioChanged == true)
  232. {
  233. document.JavaSonicRecorderUploader.erase();
  234. }
  235. fileName = "Scenario7.spx";
  236. document.getElementById('notes').value = "<?php echo $fbText[7]; ?>";
  237. document.JavaSonicRecorderUploader.addNameValuePair("scenario", fileName);
  238. document.getElementById("nowrecording").innerHTML = scenarioNameDisplay();
  239. if (scenarioDone[7] == 1) {
  240. selectScenarioPlayable();
  241. }else{
  242. selectScenarioUnplayable(scenarioChanged);
  243. }
  244. break;
  245. }
  246. }
  247. function scenarioUpload () {
  248. var scenariofile = fileName;
  249. selectScenarioPlayable();
  250. document.JavaSonicRecorderUploader.addNameValuePair("scenario", scenariofile);
  251. switch (scenariofile)
  252. {
  253. case 'Scenario1.spx':
  254. scenarioDone[1]="1";
  255. break;
  256. case 'Scenario2.spx':
  257. scenarioDone[2]="1";
  258. break;
  259. case 'Scenario3.spx':
  260. scenarioDone[3]="1";
  261. break;
  262. case 'Scenario4.spx':
  263. scenarioDone[4]="1";
  264. break;
  265. case 'Scenario5.spx':
  266. scenarioDone[5]="1";
  267. break;
  268. case 'Scenario6.spx':
  269. scenarioDone[6]="1";
  270. break;
  271. case 'Scenario7.spx':
  272. scenarioDone[7]="1";
  273. break; }
  274. }
  275. function loadYourResponse()
  276. {
  277. document.getElementById('loadIdealResponse').disabled = false;
  278. document.getElementById('loadResponse').disabled = true;
  279. var playString = uploadsDir + "/" + fileName
  280. var fileNameDisplay = scenarioNameDisplay();
  281. loadPlayer(playString, fileNameDisplay);
  282. }
  283. function loadIdealResponse()
  284. {
  285. var bestScenarioFileName = "Optimal" + fileName;
  286. var bestDir = "exampleAudio/"
  287. var playString = bestDir + bestScenarioFileName;
  288. var fileNameDisplay = "Ideal " + scenarioNameDisplay();
  289. loadPlayer(playString, fileNameDisplay);
  290. document.getElementById('loadIdealResponse').disabled = true;
  291. // Only allow load your response if you've actually uploaded a response
  292. var num = fileName.substring(8,9);
  293. if (scenarioDone[num] == "1") {
  294. document.getElementById('loadResponse').disabled = false;
  295. }
  296. }
  297. function recorderStateChange( previousState, newState)
  298. {
  299. if (newState == "recording" && fileName == "")
  300. {
  301. document.JavaSonicRecorderUploader.erase();
  302. alert("Please select a scenario before recording");
  303. }
  304. if (previousState == "recording" && fileName != "")
  305. {
  306. document.getElementById('loadIdealResponse').disabled = false;
  307. }
  308. }
  309. function appletLoaded()
  310. {
  311. if( !document.ListenUpPlayer.isActive() )
  312. {
  313. // Wait 100 milliseconds and try again.
  314. setTimeout('appletLoaded()', 100 );
  315. } else if ( !document.JavaSonicRecorderUploader.isActive())
  316. {
  317. setTimeout('appletLoaded()', 100 );
  318. } else {
  319. document.JavaSonicRecorderUploader.setUploadCompletionScript("scenarioUpload();");
  320. animatedcollapse.init();
  321. selectScenario('one_response');
  322. }
  323. }
  324. </script>
  325. </head>
  326. <body onLoad="appletLoaded();" rel="toggle[scen1]">
  327. <div id="container">
  328. <div class="blue" name="navmenu" id="navmenu" style="width: 100px; float: right;"><a href="logout.php"> Log Out </a>
  329. </div>
  330. <img src="images/logo.gif" width="303" height="98" alt="Pulmozyme" />
  331. <div id="content" align="center">
  332. <table width="839" border="0">
  333. <tr>
  334. <td width="420" rowspan="3" valign="top">
  335. <div id="column-wide">
  336. <div id="menu-bar3" style="text-align:center;"> Scenarios</div>
  337. <div class="contentInterior">
  338. <div class="scenario">
  339. <form action="" method="" name="territoryForm" id="territoryForm" onsubmit="">
  340. <table border="0" cellspacing="1" cellpadding="0">
  341. <tr>
  342. <td width="562" class="blue">
  343. <div id="instructions" class="drop" style="text-align:left"><strong>Instructions</strong>
  344. <p>Follow these instructions to get started:</p>
  345. <ol>
  346. <li>Read the first scenario presented.</li>
  347. <li>Record your audio response. </li>
  348. <li>Listen to your response. </li>
  349. <li>Listen to an ideal response to the scenario.</li>
  350. <li>Re-record until you are satisfied with your response.</li>
  351. <li>Upload your audio response.</li>
  352. <li>Continue this process until you have responded to all seven scenarios.</li>
  353. </ol>
  354. </div>
  355. <!-- Begin Scenarios -->
  356. <div id="accordion">
  357. <?php
  358. $results = mysql_query("SELECT * FROM scenarios");
  359. while($row = mysql_fetch_row($results)){
  360. $id = $row[0];
  361. $scenarioTitle = $row[1];
  362. $scenarioDescription = $row[2];
  363. $scenarioResource = $row[3];
  364. ?>
  365. <h3><a href="#"><?=$scenarioTitle?></a></h3>
  366. <div>
  367. <p><strong>Description of the Situation</strong></p>
  368. <?=$scenarioDescription?>
  369. <p>
  370. <strong>Description of Resources and Response</strong></p>
  371. <p><?=$scenarioResource?></p>
  372. <p><strong><u>Resources</u></strong></p>
  373. <ul>
  374. <?php $resource1Results = mysql_query("SELECT resource from resources WHERE scenarioID = '$id' AND resourceType = 1");
  375. while ($row1 = mysql_fetch_array($resource1Results)) {
  376. $resource1 = $row1[0];
  377. ?>
  378. <li><?=$resource1?></li>
  379. <?php
  380. }
  381. ?>
  382. </ul>
  383. <p>For your background information only: Reprint Binder</p>
  384. <ul>
  385. <?php $resource2Results = mysql_query("SELECT resource from resources WHERE scenarioID = '$id' AND resourceType = 2");
  386. while ($row2 = mysql_fetch_array($resource2Results)) {
  387. $resource2 = $row2[0];
  388. ?>
  389. <li><?=$resource2?></li>
  390. <?php
  391. }
  392. ?>
  393. </ul>
  394. </div>
  395. <?php
  396. }
  397. ?>
  398. </div>
  399. <!-- End Scenarios -->
  400. </td>
  401. </tr>
  402. </table>
  403. </form>
  404. </div>
  405. </div>
  406. </div></td>
  407. <td height="113" valign="top">
  408. <div id="column-wide">
  409. <div id="menu-bar3" style="text-align:center;"> Record</div>
  410. <div class="contentInterior" >
  411. <div id="nowrecording" style="text-align:center;" class="blue">Loading, please wait...</div>
  412. <!-- Recorder Applet -->
  413. <applet
  414. CODE="com.softsynth.javasonics.recplay.RecorderUploadApplet"
  415. mayscript = "true"
  416. CODEBASE="./codebase"
  417. ARCHIVE="JavaSonicsListenUp.jar,OggXiphSpeexJS.jar"
  418. NAME="JavaSonicRecorderUploader"
  419. WIDTH="386" HEIGHT="130">
  420. <param name="background" value="ffffff">
  421. <param name="foreground" value="000000">
  422. <param name="waveBackground" value="DCDCF6">
  423. <param name="waveForeground" value="03175C">
  424. <param name="skin" value="./images/DiddlySkin1.jpg">
  425. <param name="bevelSize" value="0">
  426. <param name="uploadURL" value="handle_upload_simple.php">
  427. <param name="uploadFileName" value="upload.spx">
  428. <param name="showLogo" value="no">
  429. <param name="sendButtonText" value="Upload">
  430. <param name="requestStateChanges" value="yes">
  431. <param name="stateChangeCallback" value="recorderStateChange">
  432. <param name="format" value="speex">
  433. <param name="frameRate" value="8000">
  434. <param name="fieldName_1" value="userDir">
  435. <param name="fieldRows_1" value="0">
  436. <param name="fieldDefault_1" value="<?php echo $userDir ?>">
  437. <param name="fieldName_2" value="scenario"> -->
  438. <param name="fieldRows_2" value="0"> -->
  439. <param name="fieldDefault_2" value="Scenario1.spx"> -->
  440. <param name="fieldName_3" value="userId">
  441. <param name="fieldRows_3" value="0">
  442. <param name="fieldDefault_3" value="<?php echo $associateid ?>">
  443. </applet>
  444. <!-- End Recorder Applet -->
  445. <div id="scenario2" class="drop">
  446. <table border="0" cellspacing="1" cellpadding="0">
  447. <tr>
  448. <td width="562" class="blue" style="text-align:left">Using the controls above, you can record and upload your audio response. First, select a scenario from the ones to the left. Then click the microphone button to begin recording. Click Upload when you are done recording. Be sure to upload your recording BEFORE changing scenarios or your work will be lost. Once you have recorded your response, you will be able to listen to an ideal response in the Listen section below. </td>
  449. </tr>
  450. </table>
  451. </div>
  452. </div>
  453. <div id="menu-bar3" style="text-align:center;"> Listen</div>
  454. <div class="contentInterior">
  455. <div id="nowplaying" style="text-align:center;" class="blue">Scenario not uploaded.</div>
  456. <!-- Player Applet -->
  457. <applet
  458. CODE="com.softsynth.javasonics.recplay.PlayerApplet"
  459. mayscript = "true"
  460. CODEBASE="./codebase"
  461. ARCHIVE="JavaSonicsListenUp.jar,OggXiphSpeexJS.jar"
  462. NAME="ListenUpPlayer"
  463. WIDTH="386"
  464. HEIGHT="90">
  465. <param name="background" value="ffffff">
  466. <param name="foreground" value="000000">
  467. <param name="waveBackground" value="DCDCF6">
  468. <param name="waveForeground" value="03175C">
  469. <param name="skin" value="./images/DiddlySkin1.jpg">
  470. <param name="bevelSize" value="0">
  471. <param name="showTimeText" value="yes">
  472. <param name="showLogo" value="no">
  473. </applet>
  474. <!-- End Applet -->
  475. <input type="button" id="loadResponse" value="Load Your Response" disabled=true onclick="loadYourResponse()">
  476. <input type="button" id="loadIdealResponse" value="Load Ideal Response" disabled=true onclick="loadIdealResponse()">
  477. <p>
  478. <div id="scenario2" class="drop">
  479. <table border="0" cellspacing="1" cellpadding="0">
  480. <tr>
  481. <td width="562" class="blue" style="text-align:left">Using the controls above, you can listen to your uploaded response and an ideal response. Your response is automatically loaded for listening immediately after upload or when you select a scenario you have already uploaded a response for. "Load Ideal Response" will be available for a scenario after you have recorded your response. Click "Load Ideal Response" to load the ideal response for your review. Once you listen to the ideal response, you may choose to re-record your response to the scenario by going back to the Record section (above). Remember to upload your response each time you re-record. Only the last response recorded will be available for evaluation.</td>
  482. </tr>
  483. </table>
  484. </div>
  485. </div>
  486. <div id="menu-bar3" style="text-align:center;"> Feedback</div>
  487. <div class="contentInterior">
  488. <div id="scenario2" class="drop">
  489. <table border="0" cellspacing="1" cellpadding="0" >
  490. <tr>
  491. <td width="562" align="center" class="blue" ><form id="form1" name="form1" method="post" action="">
  492. <label>
  493. <textarea name="notes" cols="40" rows="9" id="notes" disabled=true></textarea>
  494. </label>
  495. </form></td>
  496. </tr>
  497. </table>
  498. </div>
  499. </div>
  500. </div></td>
  501. </tr>
  502. <tr>
  503. <td height="200" valign="bottom">
  504. </td>
  505. </tr>
  506. <tr>
  507. <td width="409" height="2" valign="bottom"></td>
  508. </tr>
  509. </table>
  510. </div>
  511. </div>
  512. <script>
  513. if (userIsReviewer == "1")
  514. {
  515. document.getElementById("navmenu").innerHTML = '<?=$currentUser->username?> <a href="logout.php">Log Out </a><br/><br/><a href="manager.php"> Peer Review </a>';
  516. } else {
  517. document.getElementById("navmenu").innerHTML = '<?=$currentUser->username?> <a href="logout.php"> Log Out </a>';
  518. }
  519. </script>
  520. <div id="footer1">
  521. <p>THIS INFORMATION IS CONFIDENTIAL AND FOR INTERNAL EDUCATIONAL PURPOSES ONLY.
  522. <br />
  523. SOME OF THE CONTENT WITHIN THIS CASE STUDY MAY NOT BE CONSISTENT WITH THE U.S. PRESCRIBING INFORMATION. </p>
  524. </div>
  525. </body>
  526. </html>