PageRenderTime 65ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 1ms

/php/lib/weblcms_manager/component/admin_request_browser.class.php

https://bitbucket.org/chamilo/chamilo-app-weblcms/
PHP | 191 lines | 146 code | 33 blank | 12 comment | 15 complexity | e2de8d59e7629772f31429a3e3b8a0dd MD5 | raw file
  1. <?php
  2. namespace application\weblcms;
  3. use common\libraries\PatternMatchCondition;
  4. use common\libraries\ActionBarRenderer;
  5. use common\libraries\ToolbarItem;
  6. use common\libraries\Header;
  7. use admin\AdminManager;
  8. use common\libraries\Redirect;
  9. use common\libraries\Display;
  10. use common\libraries\Theme;
  11. use common\libraries\DynamicTabsRenderer;
  12. use common\libraries\OrCondition;
  13. use common\libraries\Breadcrumb;
  14. use common\libraries\BreadcrumbTrail;
  15. use common\libraries\AndCondition;
  16. use common\libraries\EqualityCondition;
  17. use common\libraries\Request;
  18. use common\libraries\Translation;
  19. use common\libraries\Utilities;
  20. /**
  21. * $Id: admin_course_type_browser.class.php 218 2010-03-11 14:21:26Z Yannick & Tristan $
  22. * @package application.lib.weblcms.weblcms_manager.component
  23. */
  24. require_once dirname(__FILE__) . '/admin_request_browser/admin_request_browser_table.class.php';
  25. require_once dirname(__FILE__) . '/../../course/requests_tree_renderer.class.php';
  26. /**
  27. * Weblcms component which allows the the platform admin to browse the request
  28. */
  29. class WeblcmsManagerAdminRequestBrowserComponent extends WeblcmsManager
  30. {
  31. const PENDING_REQUEST_VIEW = 'pending_request_view';
  32. const ALLOWED_REQUEST_VIEW = 'allowed_request_view';
  33. const DENIED_REQUEST_VIEW = 'denied_request_view';
  34. private $action_bar;
  35. private $request_type;
  36. private $request_view;
  37. /**
  38. * Runs this component and displays its output.
  39. */
  40. function run()
  41. {
  42. Header :: set_section('admin');
  43. $this->request_type = Request :: get(WeblcmsManager :: PARAM_REQUEST_TYPE);
  44. $this->request_view = Request :: get(WeblcmsManager :: PARAM_REQUEST_VIEW);
  45. if (is_null($this->request_type))
  46. $this->request_type = CommonRequest :: CREATION_REQUEST;
  47. if (is_null($this->request_view))
  48. $this->request_view = self :: PENDING_REQUEST_VIEW;
  49. $trail = BreadcrumbTrail :: get_instance();
  50. if (! $this->get_user()->is_platform_admin())
  51. {
  52. $this->display_header();
  53. Display :: error_message(Translation :: get('NotAllowed', null ,Utilities:: COMMON_LIBRARIES));
  54. $this->display_footer();
  55. exit();
  56. }
  57. $this->display_header();
  58. $this->action_bar = $this->get_action_bar();
  59. echo $this->get_request_html();
  60. $this->display_footer();
  61. }
  62. function get_request_html()
  63. {
  64. $html = array();
  65. $menu = new RequestsTreeRenderer($this);
  66. $html[] = '<div style="clear: both;"></div>';
  67. $html[] = $this->action_bar->as_html() . '<br />';
  68. $html[] = '<div style="float: left; padding-right: 20px; width: 18%; overflow: auto; height: 100%;">' . $menu->render_as_tree() . '</div>';
  69. $html[] = '<div style="float: right; width: 80%;">';
  70. if ($this->request_view && $this->request_type)
  71. $html[] = $this->get_table_html();
  72. $html[] = '</div>';
  73. $html[] = '<div style="clear: both;"></div>';
  74. $html[] = '</div>';
  75. $html[] = '</div>';
  76. return implode($html, "\n");
  77. }
  78. function get_action_bar()
  79. {
  80. $action_bar = new ActionBarRenderer(ActionBarRenderer :: TYPE_HORIZONTAL);
  81. $action_bar->set_search_url($this->get_url());
  82. //$action_bar->add_common_action(new ToolbarItem(Translation :: get('Add', null ,Utilities:: COMMON_LIBRARIES), Theme :: get_common_image_path().'action_add.png', $this->get_url(array(Application :: PARAM_ACTION => WeblcmsManager :: ACTION_ADMIN_COURSE_TYPE_CREATOR)), ToolbarItem :: DISPLAY_ICON_AND_LABEL));
  83. $action_bar->add_common_action(new ToolbarItem(Translation :: get('ShowAll', null ,Utilities:: COMMON_LIBRARIES), Theme :: get_common_image_path() . 'action_browser.png', $this->get_url(), ToolbarItem :: DISPLAY_ICON_AND_LABEL));
  84. return $action_bar;
  85. }
  86. function get_table_html()
  87. {
  88. $parameters = array();
  89. $parameters[WeblcmsManager :: PARAM_APPLICATION] = WeblcmsManager :: APPLICATION_NAME;
  90. $parameters[WeblcmsManager :: PARAM_ACTION] = WeblcmsManager :: ACTION_ADMIN_REQUEST_BROWSER;
  91. $parameters[WeblcmsManager :: PARAM_REQUEST_TYPE] = $this->request_type;
  92. $table = new AdminRequestBrowserTable($this, $parameters, $this->get_condition(), $this->request_type);
  93. $html = array();
  94. $html[] = $table->as_html();
  95. return implode($html, "\n");
  96. }
  97. function get_condition()
  98. {
  99. $query = $this->action_bar->get_query();
  100. $conditions = array();
  101. if (isset($query) && $query != '')
  102. {
  103. $conditions = array();
  104. $conditions[] = new PatternMatchCondition(CommonRequest :: PROPERTY_MOTIVATION, '*' . $query . '*');
  105. $conditions[] = new PatternMatchCondition(CommonRequest :: PROPERTY_SUBJECT, '*' . $query . '*');
  106. //$conditions[] = new PatternMatchCondition(CourseType :: PROPERTY_DESCRIPTION, '*' . $query . '*');
  107. $search_conditions = new OrCondition($conditions);
  108. }
  109. if (count($search_conditions))
  110. $conditions[] = $search_conditions;
  111. switch ($this->request_view)
  112. {
  113. case self :: PENDING_REQUEST_VIEW :
  114. $conditions[] = new EqualityCondition(CommonRequest :: PROPERTY_DECISION, CommonRequest :: NO_DECISION);
  115. break;
  116. case self :: ALLOWED_REQUEST_VIEW :
  117. $conditions[] = new EqualityCondition(CommonRequest :: PROPERTY_DECISION, CommonRequest :: ALLOWED_DECISION);
  118. break;
  119. case self :: DENIED_REQUEST_VIEW :
  120. $conditions[] = new EqualityCondition(CommonRequest :: PROPERTY_DECISION, CommonRequest :: DENIED_DECISION);
  121. break;
  122. }
  123. $condition = null;
  124. if (count($conditions) > 1)
  125. $condition = new AndCondition($conditions);
  126. else
  127. if (count($conditions) == 1)
  128. $condition = $conditions[0];
  129. return $condition;
  130. }
  131. function get_request_type()
  132. {
  133. return $this->request_type;
  134. }
  135. function get_request_view()
  136. {
  137. return $this->request_view;
  138. }
  139. function add_additional_breadcrumbs(BreadcrumbTrail $breadcrumbtrail)
  140. {
  141. if ($this->get_user()->is_platform_admin())
  142. {
  143. $breadcrumbtrail->add(new Breadcrumb(Redirect :: get_link(AdminManager :: APPLICATION_NAME, array(AdminManager :: PARAM_ACTION => AdminManager :: ACTION_ADMIN_BROWSER), array(), false, Redirect :: TYPE_CORE), Translation :: get('TypeName', null, 'admin')));
  144. $breadcrumbtrail->add(new Breadcrumb(Redirect :: get_link(AdminManager :: APPLICATION_NAME, array(AdminManager :: PARAM_ACTION => AdminManager :: ACTION_ADMIN_BROWSER, DynamicTabsRenderer :: PARAM_SELECTED_TAB => WeblcmsManager :: APPLICATION_NAME), array(), false, Redirect :: TYPE_CORE), Translation :: get('Courses')));
  145. }
  146. if ($this->category)
  147. {
  148. $category = WeblcmsDataManager :: get_instance()->retrieve_course_category($this->category);
  149. $trail->add(new Breadcrumb($this->get_url(), $category->get_name()));
  150. }
  151. $breadcrumbtrail->add_help('requests general');
  152. }
  153. function get_additional_parameters()
  154. {
  155. return array();
  156. }
  157. }
  158. ?>