register_error(elgg_echo("subsite_manager:action:error:on_subsite"));
    forward(REFERER);
}
// this could take a while
set_time_limit(0);
$subsite_options = array("type" => "site", "subtype" => Subsite::SUBTYPE, "limit" => false, "joins" => array("JOIN " . get_config("dbprefix") . "sites_entity se ON se.guid = e.guid"), "order_by" => "se.name ASC");
$batch = new ElggBatch("elgg_get_entities", $subsite_options);
$batch->rewind();
if ($batch->valid()) {
    // create a temp file for storage
    $fh = tmpfile();
    $headers = array("name", "url", "site time created (unix)", "site time created (YYYY-MM-DD HH:MM:SS)", "member count", "last activity (unix)", "last activity (YYYY-MM-DD HH:MM:SS)", "admin name", "admin email", "admin profile");
    fwrite($fh, "\"" . implode("\";\"", $headers) . "\"" . PHP_EOL);
    foreach ($batch as $subsite) {
        $member_count = $subsite->getMembers(array("count" => true));
        $last_activity = subsite_manager_get_subsite_last_activity($subsite->getGUID());
        $last_activity_readable = date("Y-m-d G:i:s", $last_activity);
        $admin_guids = $subsite->getAdminGuids();
        $output = array($subsite->name, $subsite->url, $subsite->time_created, date("Y-m-d G:i:s", $subsite->time_created), $member_count, $last_activity, $last_activity_readable);
        if (!empty($admin_guids)) {
            foreach ($admin_guids as $admin_guid) {
                $admin = get_user($admin_guid);
                if (!empty($admin)) {
                    $admin_output = $output;
                    $admin_output[] = $admin->name;
                    $admin_output[] = $admin->email;
                    $admin_output[] = $admin->getURL();
                    // write to file
                    fwrite($fh, "\"" . implode("\";\"", $admin_output) . "\"" . PHP_EOL);
                    // cache cleanup
                    _elgg_invalidate_cache_for_entity($admin->getGUID());
Beispiel #2
0
$offset = (int) max(get_input('offset', 0), 0);
$subsite_options = array("type" => "site", "subtype" => Subsite::SUBTYPE, "limit" => $limit, "offset" => $offset, "joins" => array("JOIN " . get_config("dbprefix") . "sites_entity se ON se.guid = e.guid"), "order_by" => "se.name ASC");
$export_button = "";
if ($subsites = elgg_get_entities($subsite_options)) {
    // create export button
    $export_button = elgg_view("output/url", array("text" => elgg_echo("export"), "href" => "action/subsites/export_admins", "is_action" => true, "class" => "elgg-button elgg-button-action float-alt"));
    // add pagination
    $subsite_options["count"] = true;
    $count = elgg_get_entities($subsite_options);
    $pagination = elgg_view("navigation/pagination", array("limit" => $limit, "offset" => $offset, "count" => $count));
    $subsite_list = $pagination;
    foreach ($subsites as $subsite) {
        // some stats
        $temp_list = "<div class='elgg-subtext'>";
        $temp_list .= elgg_echo("members") . ": " . $subsite->getMembers(array("count" => true)) . "<br />";
        if ($time = subsite_manager_get_subsite_last_activity($subsite->getGUID())) {
            $temp_list .= elgg_echo("content:latest") . ": " . elgg_view_friendly_time($time);
        } else {
            $temp_list .= elgg_echo("content:latest") . ": " . elgg_echo("river:none");
        }
        $temp_list .= "</div>";
        // get admins
        if ($admins = $subsite->getAdminGuids()) {
            $subadmin_options = array("type" => "user", "limit" => false, "site_guids" => false, "joins" => array("JOIN " . get_config("dbprefix") . "users_entity ue ON ue.guid = e.guid"), "wheres" => array("e.guid IN (" . implode(",", $admins) . ")"), "order_by" => "ue.name", "full_view" => false, "pagination" => false, "view_type_toggle" => false);
            $temp_list .= "<div class='elgg-divide-left pls'>";
            $temp_list .= elgg_list_entities($subadmin_options);
            $temp_list .= "</div>";
        } else {
            $temp_list .= elgg_echo("subsite_manager:subsites:admins:subsite_admins:none");
        }
        // add to list