/**
 * 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);
示例#6
0
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('&amp;', $params) . '&amp;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');
}