/** * Returns the search results for the archived submissions * * @param array $search The parameters we want to search against * @param int $offset What result to start showing paginated results from * @param int $limit How many results to show * * @return array A data structure containing results (see top of file). */ function build_admin_archived_submissions_results($search, $offset, $limit) { global $USER; $wantedparams = array('query', 'sortby', 'sortdir', 'institution'); $params = array(); foreach ($search as $k => $v) { if (!in_array($k, $wantedparams)) { continue; } if (!empty($v)) { $params[] = $k . '=' . $v; } } $searchurl = get_config('wwwroot') . 'admin/groups/archives.php?' . join('&', $params) . '&limit=' . $limit; // Use get_admin_user_search_results() as it hooks into the same // funky stuff the user search box query does on user/search.php page. $search->archivedsubmissions = true; $results = get_admin_user_search_results($search, $offset, $limit); // Now that we have the users we need to do some last minute alterations if (!empty($results['count'])) { foreach ($results['data'] as $key => $data) { // alter the archivectime to be human readable $results['data'][$key]['archivectime'] = format_date($data['archivectime']); // make sure the archive file is still on server at the path 'filepath' (not moved or deleted by server admin) $results['data'][$key]['filemissing'] = !file_exists($data['filepath'] . $data['filename']) ? true : false; // make the deleted group name more human readable $results['data'][$key]['groupdeleted'] = false; if (preg_match('/^(.*?)(\\.deleted\\.)(.*)$/', $data['submittedto'], $matches)) { $results['data'][$key]['groupdeleted'] = true; $results['data'][$key]['submittedto'] = $matches[1] . ' (' . get_string('deleted') . ' ' . format_date($matches[3]) . ')'; } } } $pagination = build_pagination(array('id' => 'admin_exportqueue_pagination', 'class' => 'center', 'url' => $searchurl, 'count' => $results['count'], 'setlimit' => true, 'limit' => $limit, 'jumplinks' => 8, 'numbersincludeprevnext' => 2, 'offset' => $offset, 'datatable' => 'searchresults', 'searchresultsheading' => 'resultsheading', 'jsonscript' => 'admin/groups/archives.json.php')); $cols = array('submittedto' => array('name' => get_string('submittedto', 'admin'), 'sort' => true, 'template' => 'admin/groups/submittedtocontentcolumn.tpl'), 'specialid' => array('name' => get_string('ID', 'admin'), 'sort' => true), 'icon' => array('template' => 'admin/users/searchiconcolumn.tpl', 'class' => 'center', 'accessible' => get_string('profileicon')), 'firstname' => array('name' => get_string('firstname'), 'sort' => true, 'template' => 'admin/users/searchfirstnamecolumn.tpl'), 'lastname' => array('name' => get_string('lastname'), 'sort' => true, 'template' => 'admin/users/searchlastnamecolumn.tpl'), 'preferredname' => array('name' => get_string('displayname'), 'sort' => true), 'username' => array('name' => get_string('username'), 'sort' => true, 'template' => 'admin/users/searchusernamecolumn.tpl'), 'filetitle' => array('name' => get_string('filenameleap', 'admin'), 'sort' => true, 'template' => 'admin/groups/leap2acontentcolumn.tpl'), 'archivectime' => array('name' => get_string('archivedon', 'admin'), 'sort' => true)); $smarty = smarty_core(); $smarty->assign_by_ref('results', $results); $smarty->assign('USER', $USER); $smarty->assign('limit', $limit); $smarty->assign('limitoptions', array(10, 50, 100, 200, 500)); $smarty->assign('cols', $cols); $smarty->assign('ncols', count($cols)); $html = $smarty->fetch('searchresulttable.tpl'); return array($html, $cols, $pagination, array('url' => $searchurl, 'sortby' => $search->sortby, 'sortdir' => $search->sortdir)); }
function build_admin_user_search_results($search, $offset, $limit, $sortby, $sortdir) { global $USER; $results = get_admin_user_search_results($search, $offset, $limit, $sortby, $sortdir); $params = array(); foreach ($search as $k => $v) { if (!empty($v)) { $params[] = $k . '=' . $v; } } $searchurl = get_config('wwwroot') . 'admin/users/search.php?' . join('&', $params) . '&limit=' . $limit; $usernametemplate = '<a href="' . get_config('wwwroot') . '{if $USER->is_admin_for_user($r.id)}admin/users/edit.php?id={$r.id}{else}user/view.php?id={$r.id}{/if}">{$r.username}</a>'; $cols = array('icon' => array('name' => '', 'template' => '<img src="{profile_icon_url user=$r maxwidth=40 maxheight=40}" alt="' . get_string('profileimage') . '" />', 'class' => 'center'), 'firstname' => array('name' => get_string('firstname')), 'lastname' => array('name' => get_string('lastname')), 'username' => array('name' => get_string('username'), 'template' => $usernametemplate), 'email' => array('name' => get_string('email'))); $institutions = get_records_assoc('institution', '', '', '', 'name,displayname'); if (count($institutions) > 1) { $cols['institution'] = array('name' => get_string('institution'), 'template' => '{if !$r.institutions}{$institutions.mahara->displayname}{else}{foreach from=$r.institutions item=i}<div>{$institutions[$i]->displayname}</div>{/foreach}{/if}{if !$r.requested}{foreach from=$r.requested item=i}<div class="pending">{str tag=requestto section=admin} {$institutions[$i]->displayname}{if $USER->is_institutional_admin("$i")} (<a href="{$WWWROOT}admin/users/addtoinstitution.php?id={$r.id}&institution={$i}">{str tag=confirm section=admin}</a>){/if}</div>{/foreach}{/if}{if !$r.invitedby}{foreach from=$r.invitedby item=i}<div class="pending">{str tag=invitedby section=admin} {$institutions[$i]->displayname}</div>{/foreach}{/if}'); } $smarty = smarty_core(); $smarty->assign_by_ref('results', $results); $smarty->assign_by_ref('institutions', $institutions); $smarty->assign('USER', $USER); $smarty->assign('searchurl', $searchurl); $smarty->assign('sortby', $sortby); $smarty->assign('sortdir', $sortdir); $smarty->assign('pagebaseurl', $searchurl . '&sortby=' . $sortby . '&sortdir=' . $sortdir); $smarty->assign('cols', $cols); $smarty->assign('ncols', count($cols)); return $smarty->fetch('searchresulttable.tpl'); }
require dirname(dirname(dirname(__FILE__))) . '/init.php'; global $CFG; if (!$CFG->current_app->hasPrivilege('GCUser')) { $CFG->current_app->gcError('Unprivileged attempted access to /eschooladmin/eclassroom.php', 'gcpageaccessdenied'); } require_once 'pieforms/pieform.php'; require_once 'searchlib.php'; safe_require('artefact', 'eschooladmin'); define('TITLE', 'Set eClassrooms'); $eschoolid = param_integer('eschoolid', $CFG->current_app->getDefaultEschool()->id); $eschool = Doctrine::getTable('GcrEschool')->findOneById($eschoolid); if (!$eschool || $eschool->getInstitution()->getShortName() != $CFG->current_app->getShortName()) { $CFG->current_app->gcError('Invalid eschool id ' . $eschoolid, 'gcdatabaseerror'); } $users = $eschool->getEclassroomUsers(); $results = get_admin_user_search_results('', 0, 0, 'firstname', 'asc'); $users_not_in_moodle = array(); $users_exist = false; $potential_users = array(); $eclassroom_users = array(); $mhr_user_objs = $CFG->current_app->selectFromMhrTable('usr'); foreach ($mhr_user_objs as $mhr_user_obj) { $mhr_user = new GcrMhrUser($mhr_user_obj, $CFG->current_app); if ($mhr_user_obj->admin != 1 && $mhr_user_obj->deleted != 1) { $user_string = ucfirst(trim($mhr_user_obj->firstname . ' ' . ucfirst($mhr_user_obj->lastname) . ' (' . $mhr_user_obj->email . ')')); if ($mhr_user->hasEclassroom($eschool)) { $eclassroom_users[$mhr_user_obj->id] = $user_string; } else { $potential_users[$mhr_user_obj->id] = $user_string; } }
$reason = param_variable('reason'); try { suspend_user($id, $reason); } catch (MaharaException $e) { json_reply('local', get_string('suspendfailed', 'admin') . ': ' . $e->getMessage()); } json_reply(false, get_string('usersuspended', 'admin')); } if ($action == 'search') { require_once 'searchlib.php'; $params = new StdClass(); $params->query = trim(param_variable('query', '')); $params->institution = param_alphanum('institution', null); $params->f = param_alpha('f', null); $params->l = param_alpha('l', null); $params->institution_requested = param_alphanum('institution_requested', null); $offset = param_integer('offset', 0); $limit = param_integer('limit', 10); $sortby = param_alpha('sortby', 'firstname'); $sortdir = param_alpha('sortdir', 'asc'); json_headers(); if (param_boolean('raw', false)) { $data = get_admin_user_search_results($params, $offset, $limit, $sortby, $sortdir); } else { $data['data'] = build_admin_user_search_results($params, $offset, $limit, $sortby, $sortdir); } $data['error'] = false; $data['message'] = null; echo json_encode($data); exit; }
<?php /** * * @package mahara * @subpackage admin * @author Catalyst IT Ltd * @license http://www.gnu.org/copyleft/gpl.html GNU GPL version 3 or later * @copyright For copyright information on Mahara, please see the README file distributed with this software. * */ define('INTERNAL', 1); define('ADMIN', 1); define('INSTITUTIONALADMIN', 1); require dirname(dirname(dirname(__FILE__))) . '/init.php'; require_once 'searchlib.php'; $search = (object) array('query' => '', 'sortby' => 'firstname', 'sortdir' => 'asc', 'archivedsubmissions' => true); $search->institution = param_alphanum('institution', null); if (!empty($search->institution)) { if (!$USER->get('admin') && !$USER->is_institutional_admin($search->institution)) { throw new AccessDeniedException(); } } $results = get_admin_user_search_results($search, 0, false); if (!empty($results['data'])) { $csvfields = array('username', 'email', 'firstname', 'lastname', 'preferredname', 'submittedto', 'specialid', 'filetitle', 'filepath', 'filename', 'archivectime'); $USER->set_download_file(generate_csv($results['data'], $csvfields), 'archivedsubmissions.csv', 'text/csv'); redirect(get_config('wwwroot') . 'download.php'); } $SESSION->add_error_msg(get_string('nocsvresults', 'admin')); redirect(get_config('wwwroot') . 'admin/groups/archives.php?institution=' . $search->institution);
function build_admin_user_search_results($search, $offset, $limit, $sortby, $sortdir) { global $USER; $results = get_admin_user_search_results($search, $offset, $limit, $sortby, $sortdir); $params = array(); foreach ($search as $k => $v) { if (!empty($v)) { $params[] = $k . '=' . $v; } } $searchurl = get_config('wwwroot') . 'admin/users/search.php?' . join('&', $params) . '&limit=' . $limit; $usernametemplate = '<a href="' . get_config('wwwroot') . 'admin/users/edit.php?id={$r.id}">{$r.username|escape}</a>'; if (!$USER->get('admin')) { // Only create the edit link if the returned user belongs to an institution that the viewer administers $cond = array(); foreach ($USER->get('admininstitutions') as $i) { $cond[] = 'isset($r.institutions.' . $i . ')'; } $usernametemplate = '{if ' . join('||', $cond) . '}' . $usernametemplate . '{else}{$r.username}{/if}'; } $cols = array('icon' => array('name' => '', 'template' => '<img src="' . get_config('wwwroot') . 'thumb.php?type=profileicon&maxwidth=40&maxheight=40&id={$r.id}" alt="' . get_string('profileimage') . '" />', 'class' => 'center'), 'firstname' => array('name' => get_string('firstname')), 'lastname' => array('name' => get_string('lastname')), 'username' => array('name' => get_string('username'), 'template' => $usernametemplate), 'email' => array('name' => get_string('email'))); $institutions = get_records_assoc('institution', '', '', '', 'name,displayname'); if (count($institutions) > 1) { $cols['institution'] = array('name' => get_string('institution'), 'template' => '{if empty($r.institutions)}{$institutions.mahara->displayname}{else}{foreach from=$r.institutions item=i}<div>{$institutions[$i]->displayname}</div>{/foreach}{/if}{if !empty($r.requested)}{foreach from=$r.requested item=i}<div class="pending">{str tag=requestto section=admin} {$institutions[$i]->displayname}{if $USER->is_institutional_admin("$i")} (<a href="{$WWWROOT}admin/users/addtoinstitution.php?id={$r.id}&institution={$i}">{str tag=confirm section=admin}</a>){/if}</div>{/foreach}{/if}{if !empty($r.invitedby)}{foreach from=$r.invitedby item=i}<div class="pending">{str tag=invitedby section=admin} {$institutions[$i]->displayname}</div>{/foreach}{/if}'); } $smarty = smarty_core(); $smarty->assign_by_ref('results', $results); $smarty->assign_by_ref('institutions', $institutions); $smarty->assign('USER', $USER); $smarty->assign('searchurl', $searchurl); $smarty->assign('sortby', $sortby); $smarty->assign('sortdir', $sortdir); $smarty->assign('pagebaseurl', $searchurl . '&sortby=' . $sortby . '&sortdir=' . $sortdir); $smarty->assign('cols', $cols); $smarty->assign('ncols', count($cols)); return $smarty->fetch('searchresulttable.tpl'); }