تعریف انواع پیغام در پلاگین‌ها (Message provider)

دسترسی‌ها

برای پیکربندی ماژول پیغام، کاربر باید دسترسی moodle/site:config و همچنین برای تنظیمات شخصی باید دسترسی moodle/user:editownmessageprofile را داشته باشد.

انواع پیغام

هر پلاگین می‌تواند به هر تعداد نوع پیغام جدید به مودل اضافه کند. به عنوان مثال یک ماژول ثبت نام از طریق پرداخت درگاه بانکی، می‌تواند بعد از انجام موفقیت آمیز پرداخت کاربر را از ثبت نام مطلع کند.

برای تعریف نوع پیغام در فایل db/messages.php در پوشه پلاگین به صورت زیر انواع پیغام را تعریف کنید:

$messageproviders = array (
 
    // notify teacher that a student has submitted a quiz attempt
    'submission' => array (
        'capability'  => 'mod/quiz:emailnotifysubmission'
    ),
 
    // confirm a student's quiz attempt
    'confirmation' => array (
        'capability'  => 'mod/quiz:emailconfirmsubmission'
    )
 
);

سپس در پلاگین با استفاده از کد زیر پیغام را ارسال می‌کنیم.

$eventdata = new stdClass();
$eventdata->modulename = 'moodle';
$eventdata->component = 'mod_quiz';
$eventdata->name = 'submission';
$eventdata->userfrom = $admin;
$eventdata->userto = $admin;
$eventdata->subject = $subject;
$eventdata->fullmessage = $message;
$eventdata->fullmessageformat = FORMAT_PLAIN;
$eventdata->fullmessagehtml = '';
$eventdata->smallmessage = '';
message_send($eventdata);

تذکر: اطلاعات فایل db/messages.php هنگام نصب ماژول پردازش شده و در جدول message_providers به صورت زیر ذخیره می‌شود.

id  name            component   capability
12  submission      mod_quiz    mod/quiz:emailnotifysubmission
13  confirmation    mod_quiz    mod/quiz:emailconfirmsubmission

هنگام تعریف انواع پیغام در فایل db/messages.php می‌توان تنظیمات پیش فرض خروجی پیغام را نیز تعیین کرد.

$messageproviders = array (
 
/// Ordinary single forum posts
    'assignment_updates' => array (
        'defaults' => array(
            'popup' => MESSAGE_DEFAULT_LOGGEDIN,
            'email' => MESSAGE_FORCED,
        ),
    ),
 
);

برای تعیین تنظیمات پیش فرض ثابت های زیر را در نظر بگیرید. لذا در کد بالا هرگاه پیغامی با نام "assignment_updates" ارسال شد، در صورت لاگین بودن کاربر پیغام از طریق popup به کاربر ارسال می‌شود و همچنین صرف نظر از لاگین یا غیر لاگین بودن کاربر یک نسخه از پیغام نیز ایمیل می‌شود. همچنین کاربر نمیتواند تنظیمات مربوط به ارسال از طریق ایمیل را غیر فعال کند.

نوعثابت‌ها
PermissionsMESSAGE_DISALLOWED | MESSAGE_PERMITTED | MESSAGE_FORCED
Defaults for loggedin stateMESSAGE_DEFAULT_LOGGEDIN
Defaults for loggedoff stateMESSAGE_DEFAULT_OFFLINE

در فایل مربوط به زبان پلاگین‌هایی که نوع پیغام جدید تعریف می‌کنند باید با فرمت messageprovider:provider_name عبارتی وجود داشته باشد. این عبارت در صفحات مدیریتی برای اشاره به این نوع پیغام استفاده می‌شود.

$string['messageprovider:confirmation'] = 'Confirmation of your own quiz submissions';
$string['messageprovider:submission']   = 'Notification of quiz submissions';

خروجی پیغام

نوع پیغام (Message type) از طریق پلاگین‌های خروجی پیغام (Message output) بر اساس تنظیمات مدیریتی و تنظیمات کاربر ارسال می‌شود. در مطلبی در مورد پلاگین‌های خروجی پیغام صحبت خواهد شد.

 

افزودن نظر جدید