PageRenderTime 46ms CodeModel.GetById 16ms RepoModel.GetById 1ms app.codeStats 0ms

/php/lib/appointment_manager/component/browser.class.php

https://bitbucket.org/chamilo/chamilo-app-internship-organizer-dev/
PHP | 176 lines | 135 code | 36 blank | 5 comment | 9 complexity | 5ac9704105bf7a04e4b8ea847abdaf21 MD5 | raw file
  1. <?php
  2. namespace application\internship_organizer;
  3. use common\libraries\OrCondition;
  4. use common\libraries\PatternMatchCondition;
  5. use common\libraries\WebApplication;
  6. use common\libraries\Utilities;
  7. use common\libraries\Translation;
  8. use common\libraries\Theme;
  9. use common\libraries\ActionBarRenderer;
  10. use common\libraries\DynamicTabsRenderer;
  11. use common\libraries\ActionBarSearchForm;
  12. use common\libraries\EqualityCondition;
  13. use common\libraries\AndCondition;
  14. use common\libraries\DynamicContentTab;
  15. use common\libraries\InCondition;
  16. use user\UserDataManager;
  17. use user\User;
  18. require_once WebApplication :: get_application_class_lib_path('internship_organizer') . 'appointment_manager/component/moment_rel_location/table.class.php';
  19. require_once WebApplication :: get_application_class_lib_path('internship_organizer') . 'appointment_manager/component/appointment/table.class.php';
  20. require_once WebApplication :: get_application_class_lib_path('internship_organizer') . 'agreement_rel_user.class.php';
  21. class InternshipOrganizerAppointmentManagerBrowserComponent extends InternshipOrganizerAppointmentManager
  22. {
  23. const TAB_MOMENTS = 1;
  24. const TAB_APPOINTMENTS = 2;
  25. private $action_bar;
  26. /**
  27. * Runs this component and displays its output.
  28. */
  29. function run()
  30. {
  31. if (! InternshipOrganizerRights :: is_allowed_in_internship_organizers_subtree(InternshipOrganizerRights :: RIGHT_VIEW, InternshipOrganizerRights :: LOCATION_APPOINTMENT, InternshipOrganizerRights :: TYPE_COMPONENT))
  32. {
  33. $this->display_header();
  34. $this->display_error_message(Translation :: get('NotAllowed'));
  35. $this->display_footer();
  36. exit();
  37. }
  38. $this->action_bar = $this->get_action_bar();
  39. $output = $this->get_browser_html();
  40. $this->display_header();
  41. echo $this->action_bar->as_html() . '<br />';
  42. echo $menu;
  43. echo $output;
  44. $this->display_footer();
  45. }
  46. function get_browser_html()
  47. {
  48. $html = array();
  49. $renderer_name = Utilities :: get_classname_from_object($this, true);
  50. $tabs = new DynamicTabsRenderer($renderer_name);
  51. $parameters = $this->get_parameters();
  52. $parameters[ActionBarSearchForm :: PARAM_SIMPLE_SEARCH_QUERY] = $this->action_bar->get_query();
  53. // Moment table tab
  54. $parameters[DynamicTabsRenderer :: PARAM_SELECTED_TAB] = self :: TAB_MOMENTS;
  55. $table = new InternshipOrganizerMomentRelLocationBrowserTable($this, $parameters, $this->get_moment_condition());
  56. $tabs->add_tab(new DynamicContentTab(self :: TAB_MOMENTS, Translation :: get('Moments'), Theme :: get_image_path(__NAMESPACE__) . 'place_mini_moment.png', '<div style="overflow: auto;">' . $table->as_html() . '<div class="clear"></div></div>'));
  57. // Appointment table tab
  58. $parameters[DynamicTabsRenderer :: PARAM_SELECTED_TAB] = self :: TAB_APPOINTMENTS;
  59. $table = new InternshipOrganizerAppointmentBrowserTable($this, $parameters, $this->get_appointment_condition());
  60. $tabs->add_tab(new DynamicContentTab(self :: TAB_APPOINTMENTS, Translation :: get('Appointments'), Theme :: get_image_path(__NAMESPACE__) . 'place_mini_appointment.png', $table->as_html()));
  61. $html[] = $tabs->render();
  62. $html[] = '</div>';
  63. $html[] = '<div class="clear"></div>';
  64. return implode($html, "\n");
  65. }
  66. function get_moment_condition()
  67. {
  68. $condition = new EqualityCondition(InternshipOrganizerAgreementRelUser :: PROPERTY_USER_ID, $this->get_user_id());
  69. $agreement_rel_users = InternshipOrganizerDataManager :: get_instance()->retrieve_agreement_rel_users($condition);
  70. $agreement_ids = array();
  71. while ($agreement_rel_user = $agreement_rel_users->next_result())
  72. {
  73. $agreement_ids[] = $agreement_rel_user->get_agreement_id();
  74. }
  75. $agreement_ids = array_unique($agreement_ids);
  76. $moment_alias = InternshipOrganizerDataManager :: get_instance()->get_alias(InternshipOrganizerMoment :: get_table_name());
  77. $agreement_rel_user_alias = InternshipOrganizerDataManager :: get_instance()->get_alias(InternshipOrganizerAgreementRelUser :: get_table_name());
  78. $user_alias = UserDataManager :: get_instance()->get_alias(User :: get_table_name());
  79. $location_alias = InternshipOrganizerDataManager :: get_instance()->get_alias(InternshipOrganizerLocation :: get_table_name());
  80. $region_alias = InternshipOrganizerDataManager :: get_instance()->get_alias(InternshipOrganizerRegion :: get_table_name());
  81. $agreement_alias = InternshipOrganizerDataManager :: get_instance()->get_alias(InternshipOrganizerAgreement :: get_table_name());
  82. $period_alias = InternshipOrganizerDataManager :: get_instance()->get_alias(InternshipOrganizerPeriod :: get_table_name());
  83. $conditions = array();
  84. if (count($agreement_ids))
  85. {
  86. $conditions[] = new InCondition(InternshipOrganizerMoment :: PROPERTY_AGREEMENT_ID, $agreement_ids, $moment_alias, true);
  87. }
  88. else
  89. {
  90. $conditions[] = new EqualityCondition(InternshipOrganizerMoment :: PROPERTY_AGREEMENT_ID, 0, $moment_alias, true);
  91. }
  92. $agreement_rel_locations_alias = InternshipOrganizerDataManager :: get_instance()->get_alias(InternshipOrganizerAgreementRelLocation :: get_table_name());
  93. $conditions[] = new EqualityCondition(InternshipOrganizerAgreementRelLocation :: PROPERTY_LOCATION_TYPE, InternshipOrganizerAgreementRelLocation :: APPROVED, $agreement_rel_locations_alias, true);
  94. $query = $this->action_bar->get_query();
  95. if (isset($query) && $query != '')
  96. {
  97. $search_conditions = array();
  98. $search_conditions[] = new PatternMatchCondition(InternshipOrganizerMoment :: PROPERTY_NAME, '*' . $query . '*', $moment_alias, true);
  99. $search_conditions[] = new PatternMatchCondition(InternshipOrganizerMoment :: PROPERTY_DESCRIPTION, '*' . $query . '*', $moment_alias, true);
  100. $search_conditions[] = new PatternMatchCondition(InternshipOrganizerLocation :: PROPERTY_NAME, '*' . $query . '*', $location_alias, true);
  101. $search_conditions[] = new PatternMatchCondition(InternshipOrganizerLocation :: PROPERTY_ADDRESS, '*' . $query . '*', $location_alias, true);
  102. $search_conditions[] = new PatternMatchCondition(InternshipOrganizerLocation :: PROPERTY_TELEPHONE, '*' . $query . '*', $location_alias, true);
  103. $search_conditions[] = new PatternMatchCondition(User :: PROPERTY_FIRSTNAME, '*' . $query . '*', $user_alias, true);
  104. $search_conditions[] = new PatternMatchCondition(User :: PROPERTY_LASTNAME, '*' . $query . '*', $user_alias, true);
  105. $search_conditions[] = new PatternMatchCondition(InternshipOrganizerRegion :: PROPERTY_CITY_NAME, '*' . $query . '*', $region_alias, true);
  106. $search_conditions[] = new PatternMatchCondition(InternshipOrganizerRegion :: PROPERTY_ZIP_CODE, '*' . $query . '*', $region_alias, true);
  107. $search_conditions[] = new PatternMatchCondition(InternshipOrganizerAgreement :: PROPERTY_NAME, '*' . $query . '*', $agreement_alias, true);
  108. $search_conditions[] = new PatternMatchCondition(InternshipOrganizerAgreement :: PROPERTY_DESCRIPTION, '*' . $query . '*', $agreement_alias, true);
  109. $search_conditions[] = new PatternMatchCondition(InternshipOrganizerPeriod :: PROPERTY_NAME, '*' . $query . '*', $period_alias, true);
  110. $conditions[] = new OrCondition($search_conditions);
  111. }
  112. return new AndCondition($conditions);
  113. }
  114. function get_appointment_condition()
  115. {
  116. $moment_alias = InternshipOrganizerDataManager :: get_instance()->get_alias(InternshipOrganizerMoment :: get_table_name());
  117. $agreement_rel_user_alias = InternshipOrganizerDataManager :: get_instance()->get_alias(InternshipOrganizerAgreementRelUser :: get_table_name());
  118. $user_alias = UserDataManager :: get_instance()->get_alias(User :: get_table_name());
  119. $appointment_alias = InternshipOrganizerDataManager :: get_instance()->get_alias(InternshipOrganizerAppointment :: get_table_name());
  120. $conditions = array();
  121. $conditions[] = new EqualityCondition(InternshipOrganizerAppointment :: PROPERTY_OWNER_ID, $this->get_user_id(), $appointment_alias, true);
  122. $query = $this->action_bar->get_query();
  123. if (isset($query) && $query != '')
  124. {
  125. $search_conditions = array();
  126. $search_conditions[] = new PatternMatchCondition(InternshipOrganizerAppointment :: PROPERTY_TITLE, '*' . $query . '*', $appointment_alias, true);
  127. $search_conditions[] = new PatternMatchCondition(InternshipOrganizerAppointment :: PROPERTY_STATUS, '*' . $query . '*', $appointment_alias, true);
  128. $search_conditions[] = new PatternMatchCondition(InternshipOrganizerAppointment :: PROPERTY_DESCRIPTION, '*' . $query . '*', $appointment_alias, true);
  129. $conditions[] = new OrCondition($search_conditions);
  130. }
  131. return new AndCondition($conditions);
  132. }
  133. function get_action_bar()
  134. {
  135. $action_bar = new ActionBarRenderer(ActionBarRenderer :: TYPE_HORIZONTAL);
  136. $action_bar->set_search_url($this->get_url());
  137. return $action_bar;
  138. }
  139. }
  140. ?>