/admin/users/search.php

https://github.com/ULCC/mahara · PHP · 104 lines · 85 code · 10 blank · 9 comment · 3 complexity · 801fea9bc81908f60f563f0b433a5568 MD5 · raw file

  1. <?php
  2. /**
  3. *
  4. * @package mahara
  5. * @subpackage admin
  6. * @author Catalyst IT Ltd
  7. * @license http://www.gnu.org/copyleft/gpl.html GNU GPL version 3 or later
  8. * @copyright For copyright information on Mahara, please see the README file distributed with this software.
  9. *
  10. */
  11. define('INTERNAL', 1);
  12. define('INSTITUTIONALSTAFF', 1);
  13. define('MENUITEM', 'configusers/usersearch');
  14. require(dirname(dirname(dirname(__FILE__))) . '/init.php');
  15. define('TITLE', get_string('usersearch', 'admin'));
  16. define('SECTION_PLUGINTYPE', 'core');
  17. define('SECTION_PLUGINNAME', 'admin');
  18. define('SECTION_PAGE', 'usersearch');
  19. require_once('searchlib.php');
  20. $search = (object) array(
  21. 'query' => trim(param_variable('query', '')),
  22. 'f' => param_alpha('f', null), // first initial
  23. 'l' => param_alpha('l', null), // last initial
  24. 'sortby' => param_alpha('sortby', 'firstname'),
  25. 'sortdir' => param_alpha('sortdir', 'asc'),
  26. 'loggedin' => param_alpha('loggedin', 'any'),
  27. 'loggedindate' => param_variable('loggedindate', strftime(get_string('strftimedatetimeshort'))),
  28. 'duplicateemail' => param_boolean('duplicateemail', false),
  29. );
  30. $offset = param_integer('offset', 0);
  31. $limit = param_integer('limit', 10);
  32. if ($USER->get('admin') || $USER->get('staff')) {
  33. $institutions = get_records_array('institution', '', '', 'displayname');
  34. $search->institution = param_alphanum('institution', 'all');
  35. }
  36. else {
  37. $institutionnames = array_keys(array_merge($USER->get('admininstitutions'), $USER->get('staffinstitutions')));
  38. $institutions = get_records_select_array(
  39. 'institution',
  40. 'name IN (' . join(',', array_fill(0, count($institutionnames), '?')) . ')',
  41. $institutionnames,
  42. 'displayname'
  43. );
  44. }
  45. $loggedintypes = array();
  46. $loggedintypes[] = array('name' => 'any', 'string' => get_string('anyuser', 'admin'));
  47. $loggedintypes[] = array('name' => 'ever', 'string' => get_string('usershaveloggedin', 'admin'));
  48. $loggedintypes[] = array('name' => 'never', 'string' => get_string('usershaveneverloggedin', 'admin'));
  49. $loggedintypes[] = array('name' => 'since', 'string' => get_string('usershaveloggedinsince', 'admin'));
  50. $loggedintypes[] = array('name' => 'notsince', 'string' => get_string('usershavenotloggedinsince', 'admin'));
  51. $calendar = array(
  52. 'name' => 'loggedindate',
  53. 'id' => 'loggedindate',
  54. 'tabindex' => false,
  55. 'type' => 'calendar',
  56. 'title' => get_string('date'),
  57. 'imagefile' => $THEME->get_url('images/btn_calendar.png'),
  58. 'defaultvalue' => strtotime($search->loggedindate),
  59. 'caloptions' => array(
  60. 'showsTime' => true,
  61. 'ifFormat' => get_string('strftimedatetimeshort'),
  62. ),
  63. );
  64. $calendarform = new Pieform(array(
  65. 'name' => 'loggedinform',
  66. 'elements' => array(
  67. 'loggedindate' => $calendar,
  68. ),
  69. ));
  70. $calendarform->include_plugin('element', 'calendar');
  71. $loggedindate = pieform_element_calendar($calendarform, $calendar);
  72. list($html, $columns, $pagination, $search) = build_admin_user_search_results($search, $offset, $limit);
  73. $js = <<<EOF
  74. addLoadEvent(function() {
  75. var p = {$pagination['javascript']}
  76. new UserSearch(p);
  77. })
  78. EOF;
  79. $smarty = smarty(array('adminusersearch', 'paginator'), array(), array('ascending' => 'mahara', 'descending' => 'mahara'));
  80. $smarty->assign('search', $search);
  81. $smarty->assign('limit', $limit);
  82. $smarty->assign('loggedintypes', $loggedintypes);
  83. $smarty->assign('loggedindate', $loggedindate);
  84. $smarty->assign('alphabet', explode(',', get_string('alphabet')));
  85. $smarty->assign('institutions', $institutions);
  86. $smarty->assign('results', $html);
  87. $smarty->assign('pagination', $pagination['html']);
  88. $smarty->assign('columns', $columns);
  89. $smarty->assign('searchurl', $search['url']);
  90. $smarty->assign('sortby', $search['sortby']);
  91. $smarty->assign('sortdir', $search['sortdir']);
  92. $smarty->assign('INLINEJAVASCRIPT', $js);
  93. $smarty->assign('PAGEHEADING', TITLE);
  94. $smarty->display('admin/users/search.tpl');