در رويدادهايي که در دروپال رخ ميدهد، گاهي به صورت سيستمي و با دستور drupal_set_message پيامي براي نمايش به کاربر تنظيم ميشود. ممکن است در موقعيتي بخواهيد پيامهايي که تا به حال براي کاربر ثبت شده را بخوانيد. مثلاً ميخواهيد در بخشي از صفحه نمايش دهيد. اين پيامهاي در جلسه يا SESSION کاربر ثبت شده است. بنابراين اين دستور پيامهاي جلسه کاربر را فراخواني میکند.
ساختار کلي: که شکل کلي آن عبارت است از:
drupal_get_messages($type = NULL, $clear_queue = TRUE);
در ساختار اين دستور پارامترهاي زير قابل دريافت است(در بين پرانتز ميتوان 2 پارامتر به اين فانکشن ارسال نمود):
پارامتر | توضيح |
---|---|
$type |
نوع پيامهايي که براي کاربر ثبت شده است. در صورتي که نوع پيام تعيين نشود، همه نوع پيام فراخواني مي شود. اين متغير ميتواند اين مقادير را بپذيرد: - status : وضعيت - warning : هشدار - error : خطا |
$clear_queue |
دو حالت TRUE و FALSE ميپذيرد. در حالت TRUE که پيشفرض هم هست، پيامهاي ثبت شده براي کاربر حذف ميشود. در صورتي که بخواهيد پيامهاي قبلي ثبت شده براي کاربر حذف نشود بايد پارامتر دوم را به صورت FALSE به تابع ارسال نماييد. |
نحوه عملکرد دستور:
- اين دستور با فراخواني تابع drupal_set_message بدون هيچ پارامتري تمام پيامهاي ثبت شده به کاربر را فراخواني کرده و به متغير $messages نسبت ميدهد. اگر پيامي قبلاً براي کاربر ثبت نشده باشد، تابع تنها يک آرايه خالي برميگرداند.
- سپس پارامتر اول يعني type يا نوع پيام بررسي ميشود.
-
اگر نوع پيام براي تابع تعريف شده باشد، عمليات بعدي بر روي تنها همان نوع انجام ميپذيرد:
- حالا اين تابع پارامتر دوم يعني clear_queue را بررسي ميکند. اگر مقدار آن TRUE باشد، پيامهاي از نوع تعريف شده يا تمام پيامها را از جلسه کاربر حذف ميکند.
- سپس اين دستور چک ميکند که آيا پيامي از نوع تعريف شده در متغير $messages (که شامل تمام پيامهاي کاربر بود) وجود دارد يا نه. اگر وجود داشت آن پيامها را به صورت آرايه برميگرداند.
-
و اگر نوع پيام تعيين نشده باشد، عمليات بعدي بر روي تمام پيامها اعمال ميشود:
- اينجا تابع پارامتر دوم يعني clear_queue را بررسي ميکند. اگر مقدار آن TRUE باشد، تمام پيامها را از جلسه کاربر حذف ميکند.
- سپس اين دستور تمام پيامهاي ثبتشده براي کاربر را که در مرحله اول وارد متغير $messages بود را برميگرداند
جايگاه اين دستور:
جايگاه اين دستور فايل includes\bootstrap.inc ميباشد و ساختار اين دستور در دروپال 6 به شکل زير است:
function drupal_get_messages($type = NULL, $clear_queue = TRUE) {
if ($messages = drupal_set_message()) {
if ($type) {
if ($clear_queue) {
unset($_SESSION['messages'][$type]);
}
if (isset($messages[$type])) {
return array($type => $messages[$type]);
}
}
else {
if ($clear_queue) {
unset($_SESSION['messages']);
}
return $messages;
}
}
return array();
}