TeacherTimeReport.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <?php
  2. /* For licensing terms, see /license.txt */
  3. /**
  4. * Library for generate a teacher time report
  5. *
  6. * @author Angel Fernando Quiroz Campos <angel.quiroz@beeznest.com>
  7. * @package chamilo.admin
  8. */
  9. class TeacherTimeReport
  10. {
  11. /**
  12. * The report data
  13. * @var array
  14. */
  15. public $data = array();
  16. /**
  17. * Callback for compare sessions names
  18. * @param array $dataA The datab A
  19. * @param array $dataB The data B
  20. * @return int returns -1 if dataA is less than dataB, 1 if dataA is greater than dataB, and 0 if they are equal
  21. */
  22. public function compareSessions($dataA, $dataB)
  23. {
  24. return strnatcmp($dataA['session']['name'], $dataB['session']['name']);
  25. }
  26. /**
  27. * Callback for compare courses names
  28. * @param array $dataA The datab A
  29. * @param array $dataB The data B
  30. * @return int returns -1 if dataA is less than dataB, 1 if dataA is greater than dataB, and 0 if they are equal
  31. */
  32. public function compareCourses($dataA, $dataB)
  33. {
  34. return strnatcmp($dataA['course']['name'], $dataB['course']['name']);
  35. }
  36. /**
  37. * Callback for compare coaches names
  38. * @param array $dataA The datab A
  39. * @param array $dataB The data B
  40. * @return int returns -1 if dataA is less than dataB, 1 if dataA is greater than dataB, and 0 if they are equal
  41. */
  42. public function compareCoaches($dataA, $dataB)
  43. {
  44. return strnatcmp($dataA['coach']['completeName'], $dataB['coach']['completeName']);
  45. }
  46. /**
  47. * Sort the report data
  48. * @param boolean $withFilter Whether sort by sessions and courses
  49. */
  50. public function sortData($withFilter = false)
  51. {
  52. if ($withFilter) {
  53. uasort($this->data, array($this, 'compareSessions'));
  54. uasort($this->data, array($this, 'compareCourses'));
  55. }
  56. uasort($this->data, array($this, 'compareCoaches'));
  57. }
  58. public function prepareDataToExport($withFilter = false)
  59. {
  60. $dataToExport = array();
  61. if ($withFilter) {
  62. $dataToExport[] = array(
  63. get_lang('Session'),
  64. get_lang('Course'),
  65. get_lang('Coach'),
  66. get_lang('TotalTime')
  67. );
  68. } else {
  69. $dataToExport[] = array(
  70. get_lang('Coach'),
  71. get_lang('TotalTime')
  72. );
  73. }
  74. foreach ($this->data as $row) {
  75. $data = array();
  76. if ($withFilter) {
  77. $data[] = $row['session']['name'];
  78. $data[] = $row['course']['name'];
  79. }
  80. $data[] = $row['coach']['completeName'];
  81. $data[] = $row['totalTime'];
  82. $dataToExport[] = $data;
  83. }
  84. return $dataToExport;
  85. }
  86. }