/** * 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') . ' '; } else { $label = get_string('separateindividual', 'oublog') . ' '; } $output = ""; if (count($menu) == 1) { $name = reset($menu); $output = $label . ': ' . $name; } else { $active = ''; foreach ($menu as $value => $item) { $url = $urlroot . '&individual=' . $value; $url = str_replace($CFG->wwwroot, '', $url); $url = str_replace('&', '&', $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 . ' ' . $user->lastname); }