public static function get_popup_notifications($useridto = 0, $sort = 'DESC', $limit = 0, $offset = 0) {
        global $DB, $USER;

        $sort = strtoupper($sort);
        if ($sort != 'DESC' && $sort != 'ASC') {
            throw new \moodle_exception('invalid parameter: sort: must be "DESC" or "ASC"');
        }

        if (empty($useridto)) {
            $useridto = $USER->id;
        }

        // Is notification enabled ?
        if ($useridto == $USER->id) {
            $disabled = $USER->emailstop;
        } else {
            $user = \core_user::get_user($useridto, "emailstop", MUST_EXIST);
            $disabled = $user->emailstop;
        }
        if ($disabled) {
            // Notifications are disabled.
            return array();
        }

        $sql = "SELECT n.id, n.useridfrom, n.useridto,
                       n.subject, n.fullmessage, n.fullmessageformat,
                       n.fullmessagehtml, n.smallmessage, n.contexturl,
                       n.contexturlname, n.timecreated, n.component,
                       n.eventtype, n.timeread, n.customdata
                  FROM {notifications} n
                 WHERE n.id IN (SELECT notificationid FROM {message_popup_notifications})
                   AND n.useridto = ?
              ORDER BY timecreated $sort, timeread $sort, id $sort";

        $notifications = [];
        $records = $DB->get_recordset_sql($sql, [$useridto], $offset, $limit);
        foreach ($records as $record) {
            $notifications[] = (object) $record;
        }
        $records->close();

        return $notifications;
    }