/**
 * Get an object with details of individual activity
 * @param $cm
 * @param $urlroot
 * @param $oublog
 * @param $currentgroup
 * @param $context
 * @return an object
 */
function oublog_individual_get_activity_details($cm, $urlroot, $oublog, $currentgroup, $context)
{
    global $CFG, $USER, $SESSION, $OUTPUT;
    if (strpos($urlroot, 'http') !== 0) {
        // Will also work for https
        debugging('oublog_print_individual_activity_menu requires absolute URL for ' . '$urlroot, not <tt>' . s($urlroot) . '</tt>. Example: ' . 'oublog_print_individual_activity_menu($cm, $CFG->wwwroot . \'/mod/mymodule/view.php?id=13\');', DEBUG_DEVELOPER);
    }
    // get groupmode and individualmode
    $groupmode = oublog_get_activity_groupmode($cm);
    $individualmode = $oublog->individual;
    // No individual blogs.
    if ($individualmode == OUBLOG_NO_INDIVIDUAL_BLOGS) {
        return '';
    }
    // If no groups or 'all groups' selection' ($currentgroup == 0).
    if ($groupmode == NOGROUPS || $currentgroup == 0) {
        // Visible individual.
        if ($individualmode == OUBLOG_VISIBLE_INDIVIDUAL_BLOGS) {
            $allowedindividuals = oublog_individual_get_all_users($cm->course, $cm->instance);
        }
        // Separate individual (check capability of present user.
        if ($individualmode == OUBLOG_SEPARATE_INDIVIDUAL_BLOGS) {
            $allowedindividuals = oublog_individual_get_all_users($cm->course, $cm->instance, 0, $context);
        }
    }
    // If a group is selected ($currentgroup > 0).
    if ($currentgroup > 0) {
        // Visible individual.
        if ($individualmode == OUBLOG_VISIBLE_INDIVIDUAL_BLOGS) {
            $allowedindividuals = oublog_individual_get_all_users($cm->course, $cm->instance, $currentgroup);
        }
        // Separate individual.
        if ($individualmode == OUBLOG_SEPARATE_INDIVIDUAL_BLOGS) {
            $allowedindividuals = oublog_individual_get_all_users($cm->course, $cm->instance, $currentgroup, $context);
        }
    }
    $activeindividual = oublog_individual_get_active_user($allowedindividuals, $individualmode, true);
    // Setup the drop-down menu.
    $menu = array();
    if (count($allowedindividuals) > 1) {
        if ($currentgroup > 0) {
            // Selected group.
            $menu[0] = get_string('viewallusersingroup', 'oublog');
        } else {
            // No groups or all groups.
            $menu[0] = get_string('viewallusers', 'oublog');
        }
    }
    if ($allowedindividuals) {
        foreach ($allowedindividuals as $user) {
            $menu[$user->id] = format_string($user->firstname . ' ' . $user->lastname);
        }
    }
    if ($individualmode == OUBLOG_VISIBLE_INDIVIDUAL_BLOGS) {
        $label = get_string('visibleindividual', 'oublog') . '&nbsp;';
    } else {
        $label = get_string('separateindividual', 'oublog') . '&nbsp;';
    }
    $output = "";
    if (count($menu) == 1) {
        $name = reset($menu);
        $output = $label . ':&nbsp;' . $name;
    } else {
        $active = '';
        foreach ($menu as $value => $item) {
            $url = $urlroot . '&amp;individual=' . $value;
            $url = str_replace($CFG->wwwroot, '', $url);
            $url = str_replace('&amp;', '&', $url);
            $urls[$url] = $item;
            if ($activeindividual == $value) {
                $active = $url;
            }
        }
        if (!empty($urls)) {
            $select = new url_select($urls, $active, null, 'selectindividual');
            $select->set_label($label);
            $output = $OUTPUT->render($select);
        }
    }
    $output = '<div class="oublog-individualselector">' . $output . '</div>';
    // Set up the object details needed.
    $individualdetails = new stdClass();
    $individualdetails->display = $output;
    $individualdetails->activeindividual = $activeindividual;
    $individualdetails->mode = $individualmode;
    $individualdetails->userids = array_keys($allowedindividuals);
    $individualdetails->newblogpost = true;
    // Hid the "New blog post" button.
    if ($activeindividual == 0 && !array_key_exists($USER->id, $allowedindividuals) || $activeindividual > 0 && $activeindividual != $USER->id) {
        $individualdetails->newblogpost = false;
    }
    return $individualdetails;
}
/// Print Groups
if ($showgroupselector) {
    groups_print_activity_menu($cm, $returnurl);
}
/// Print Individual
if ($oublog->individual) {
    if ($individualdetails) {
        echo $individualdetails->display;
        $individualmode = $individualdetails->mode;
        $currentindividual = $individualdetails->activeindividual;
    }
}
echo '</div>';
/// Shared Blog mode, display user names. to filter posts by user
if ($oublog->individual == OUBLOG_NO_INDIVIDUAL_BLOGS) {
    $allowedindividuals = oublog_individual_get_all_users($cm->course, $cm->instance, 0);
    //setup the drop-down menu
    $menu = array();
    if (count($allowedindividuals) > 1) {
        if ($currentgroup > 0) {
            //selected group
            $menu[0] = get_string('viewallusersingroup', 'oublog');
        } else {
            //no groups or all groups
            $menu[0] = get_string('viewallusers', 'oublog');
        }
    }
    if ($allowedindividuals) {
        foreach ($allowedindividuals as $user) {
            $menu[$user->id] = format_string($user->firstname . '&nbsp;' . $user->lastname);
        }