コード例 #1
0
ファイル: cron.php プロジェクト: narasimhaeabyas/tataaiapro
/**
 * Run the cron functions required by messages
 *
 * @return boolean True if completes successfully, false otherwise
 */
function message_cron() {
    global $CFG, $DB;

    // dismiss old alerts
    $time = time() - (MSG_CRON_DISMISS_ALERTS * (24 * 60 * 60));
    $msgs = tm_messages_get_by_time('local_alert', $time);
    $deleted = array();
    foreach ($msgs as $msg) {
        tm_message_dismiss($msg->id);
        //store message ids for bulk delete
        if (!in_array($msg->id, $deleted)) {
            $deleted[] = $msg->id;
        }
    }

    // dismiss old taskes
    $time = time() - (MSG_CRON_DISMISS_TASKS * (24 * 60 * 60));
    $msgs = tm_messages_get_by_time('local_task', $time);
    foreach ($msgs as $msg) {
        tm_message_dismiss($msg->id);
        //store message ids for bulk delete
        if (!in_array($msg->id, $deleted)) {
            $deleted[] = $msg->id;
        }
    }

    //delete the message records
    $DB->delete_records_list('message', 'id', $deleted);
    // tidy up orphaned metadata records - shouldn't be any - but odd things could happen with core messages cron
    $sql = "SELECT mm.id
            FROM {message_metadata} mm
            LEFT JOIN {message} m ON mm.messageid = m.id
            LEFT JOIN {message_read} mr ON mm.messagereadid = mr.id
            WHERE m.id IS NULL AND mr.id IS NULL";
    $allidstodelete = $DB->get_fieldset_sql($sql);

    if (!empty($allidstodelete)) {
        // We may have really large numbers so split it up into smaller batches.
        $batchidstodelete = array_chunk($allidstodelete, 25000);

        foreach ($batchidstodelete as $idstodelete) {
            list($insql, $params) = $DB->get_in_or_equal($idstodelete);
            $sql = "DELETE
                    FROM {message_metadata}
                    WHERE id {$insql}";
            $DB->execute($sql, $params);
        }
    }

    return true;
}
コード例 #2
0
/**
 * For listing message histories between any two users
 */

require_once(dirname(dirname(dirname(__FILE__))).'/config.php');
require_once('lib.php');

require_login();
$PAGE->set_context(context_system::instance());

if (isguestuser()) {
    redirect($CFG->wwwroot);
}

/// Script parameters
$msgid = required_param('id', PARAM_INT);
$returnto = optional_param('returnto', NULL, PARAM_LOCALURL);

// check message ownership
$message = $DB->get_record('message', array('id' => $msgid));
if (!$message || $message->useridto != $USER->id || !confirm_sesskey()) {
    print_error('notyours', 'local_message', $msgid);
}

// dismiss the message and then return
tm_message_dismiss($msgid);

if ($returnto) {
    redirect($returnto);
}