Ejemplo n.º 1
0
/**
 * Get the list of potential subscribers to a quora.
 *
 * @param object $quoracontext the quora context.
 * @param integer $groupid the id of a group, or 0 for all groups.
 * @param string $fields the list of fields to return for each user. As for get_users_by_capability.
 * @param string $sort sort order. As for get_users_by_capability.
 * @return array list of users.
 * @deprecated since Moodle 2.8 use \mod_quora\subscriptions::get_potential_subscribers() instead
 */
function quora_get_potential_subscribers($quoracontext, $groupid, $fields, $sort = '')
{
    debugging("quora_get_potential_subscribers() has been deprecated, please use \\mod_quora\\subscriptions::get_potential_subscribers() instead.", DEBUG_DEVELOPER);
    \mod_quora\subscriptions::get_potential_subscribers($quoracontext, $groupid, $fields, $sort);
}
Ejemplo n.º 2
0
/**
 * Given an object containing all the necessary data,
 * (defined by the form in mod_form.php) this function
 * will update an existing instance with new data.
 *
 * @global object
 * @param object $quora quora instance (with magic quotes)
 * @return bool success
 */
function quora_update_instance($quora, $mform)
{
    global $DB, $OUTPUT, $USER;
    $quora->timemodified = time();
    $quora->id = $quora->instance;
    if (empty($quora->assessed)) {
        $quora->assessed = 0;
    }
    if (empty($quora->ratingtime) or empty($quora->assessed)) {
        $quora->assesstimestart = 0;
        $quora->assesstimefinish = 0;
    }
    $oldquora = $DB->get_record('quora', array('id' => $quora->id));
    // MDL-3942 - if the aggregation type or scale (i.e. max grade) changes then recalculate the grades for the entire quora
    // if  scale changes - do we need to recheck the ratings, if ratings higher than scale how do we want to respond?
    // for count and sum aggregation types the grade we check to make sure they do not exceed the scale (i.e. max score) when calculating the grade
    if ($oldquora->assessed != $quora->assessed or $oldquora->scale != $quora->scale) {
        quora_update_grades($quora);
        // recalculate grades for the quora
    }
    if ($quora->type == 'single') {
        // Update related discussion and post.
        $discussions = $DB->get_records('quora_discussions', array('quora' => $quora->id), 'timemodified ASC');
        if (!empty($discussions)) {
            if (count($discussions) > 1) {
                echo $OUTPUT->notification(get_string('warnformorepost', 'quora'));
            }
            $discussion = array_pop($discussions);
        } else {
            // try to recover by creating initial discussion - MDL-16262
            $discussion = new stdClass();
            $discussion->course = $quora->course;
            $discussion->quora = $quora->id;
            $discussion->name = $quora->name;
            $discussion->assessed = $quora->assessed;
            $discussion->message = $quora->intro;
            $discussion->messageformat = $quora->introformat;
            $discussion->messagetrust = true;
            $discussion->mailnow = false;
            $discussion->groupid = -1;
            $message = '';
            quora_add_discussion($discussion, null, $message);
            if (!($discussion = $DB->get_record('quora_discussions', array('quora' => $quora->id)))) {
                print_error('cannotadd', 'quora');
            }
        }
        if (!($post = $DB->get_record('quora_posts', array('id' => $discussion->firstpost)))) {
            print_error('cannotfindfirstpost', 'quora');
        }
        $cm = get_coursemodule_from_instance('quora', $quora->id);
        $modcontext = context_module::instance($cm->id, MUST_EXIST);
        $post = $DB->get_record('quora_posts', array('id' => $discussion->firstpost), '*', MUST_EXIST);
        $post->subject = $quora->name;
        $post->message = $quora->intro;
        $post->messageformat = $quora->introformat;
        $post->messagetrust = trusttext_trusted($modcontext);
        $post->modified = $quora->timemodified;
        $post->userid = $USER->id;
        // MDL-18599, so that current teacher can take ownership of activities.
        if ($mform and $draftid = file_get_submitted_draft_itemid('introeditor')) {
            // Ugly hack - we need to copy the files somehow.
            $options = array('subdirs' => true);
            // Use the same options as intro field!
            $post->message = file_save_draft_area_files($draftid, $modcontext->id, 'mod_quora', 'post', $post->id, $options, $post->message);
        }
        $DB->update_record('quora_posts', $post);
        $discussion->name = $quora->name;
        $DB->update_record('quora_discussions', $discussion);
    }
    $DB->update_record('quora', $quora);
    $modcontext = context_module::instance($quora->coursemodule);
    if ($quora->forcesubscribe == FORUM_INITIALSUBSCRIBE && $oldquora->forcesubscribe != $quora->forcesubscribe) {
        $users = \mod_quora\subscriptions::get_potential_subscribers($modcontext, 0, 'u.id, u.email', '');
        foreach ($users as $user) {
            \mod_quora\subscriptions::subscribe_user($user->id, $quora, $modcontext);
        }
    }
    quora_grade_item_update($quora);
    return true;
}
Ejemplo n.º 3
0
 /**
  * Returns a list of user objects who are subscribed to this quora.
  *
  * @param stdClass $quora The quora record.
  * @param int $groupid The group id if restricting subscriptions to a group of users, or 0 for all.
  * @param context_module $context the quora context, to save re-fetching it where possible.
  * @param string $fields requested user fields (with "u." table prefix).
  * @param boolean $includediscussionsubscriptions Whether to take discussion subscriptions and unsubscriptions into consideration.
  * @return array list of users.
  */
 public static function fetch_subscribed_users($quora, $groupid = 0, $context = null, $fields = null, $includediscussionsubscriptions = false)
 {
     global $CFG, $DB;
     if (empty($fields)) {
         $allnames = get_all_user_name_fields(true, 'u');
         $fields = "u.id,\n                      u.username,\n                      {$allnames},\n                      u.maildisplay,\n                      u.mailformat,\n                      u.maildigest,\n                      u.imagealt,\n                      u.email,\n                      u.emailstop,\n                      u.city,\n                      u.country,\n                      u.lastaccess,\n                      u.lastlogin,\n                      u.picture,\n                      u.timezone,\n                      u.theme,\n                      u.lang,\n                      u.trackquoras,\n                      u.mnethostid";
     }
     // Retrieve the quora context if it wasn't specified.
     $context = quora_get_context($quora->id, $context);
     if (self::is_forcesubscribed($quora)) {
         $results = \mod_quora\subscriptions::get_potential_subscribers($context, $groupid, $fields, "u.email ASC");
     } else {
         // Only active enrolled users or everybody on the frontpage.
         list($esql, $params) = get_enrolled_sql($context, '', $groupid, true);
         $params['quoraid'] = $quora->id;
         if ($includediscussionsubscriptions) {
             $params['squoraid'] = $quora->id;
             $params['dsquoraid'] = $quora->id;
             $params['unsubscribed'] = self::FORUM_DISCUSSION_UNSUBSCRIBED;
             $sql = "SELECT {$fields}\n                        FROM (\n                            SELECT userid FROM {quora_subscriptions} s\n                            WHERE\n                                s.quora = :squoraid\n                                UNION\n                            SELECT userid FROM {quora_discussion_subs} ds\n                            WHERE\n                                ds.quora = :dsquoraid AND ds.preference <> :unsubscribed\n                        ) subscriptions\n                        JOIN {user} u ON u.id = subscriptions.userid\n                        JOIN ({$esql}) je ON je.id = u.id\n                        ORDER BY u.email ASC";
         } else {
             $sql = "SELECT {$fields}\n                        FROM {user} u\n                        JOIN ({$esql}) je ON je.id = u.id\n                        JOIN {quora_subscriptions} s ON s.userid = u.id\n                        WHERE\n                          s.quora = :quoraid\n                        ORDER BY u.email ASC";
         }
         $results = $DB->get_records_sql($sql, $params);
     }
     // Guest user should never be subscribed to a quora.
     unset($results[$CFG->siteguest]);
     // Apply the activity module availability resetrictions.
     $cm = get_coursemodule_from_instance('quora', $quora->id, $quora->course);
     $modinfo = get_fast_modinfo($quora->course);
     $info = new \core_availability\info_module($modinfo->get_cm($cm->id));
     $results = $info->filter_user_list($results);
     return $results;
 }
Ejemplo n.º 4
0
 require_sesskey();
 switch ($mode) {
     case FORUM_CHOOSESUBSCRIBE:
         // 0
         \mod_quora\subscriptions::set_subscription_mode($quora->id, FORUM_CHOOSESUBSCRIBE);
         redirect($returnto, get_string("everyonecannowchoose", "quora"), 1);
         break;
     case FORUM_FORCESUBSCRIBE:
         // 1
         \mod_quora\subscriptions::set_subscription_mode($quora->id, FORUM_FORCESUBSCRIBE);
         redirect($returnto, get_string("everyoneisnowsubscribed", "quora"), 1);
         break;
     case FORUM_INITIALSUBSCRIBE:
         // 2
         if ($quora->forcesubscribe != FORUM_INITIALSUBSCRIBE) {
             $users = \mod_quora\subscriptions::get_potential_subscribers($context, 0, 'u.id, u.email', '');
             foreach ($users as $user) {
                 \mod_quora\subscriptions::subscribe_user($user->id, $quora, $context);
             }
         }
         \mod_quora\subscriptions::set_subscription_mode($quora->id, FORUM_INITIALSUBSCRIBE);
         redirect($returnto, get_string("everyoneisnowsubscribed", "quora"), 1);
         break;
     case FORUM_DISALLOWSUBSCRIBE:
         // 3
         \mod_quora\subscriptions::set_subscription_mode($quora->id, FORUM_DISALLOWSUBSCRIBE);
         redirect($returnto, get_string("noonecansubscribenow", "quora"), 1);
         break;
     default:
         print_error(get_string('invalidforcesubscribe', 'quora'));
 }