gocodebox/lifterlms

View on GitHub
includes/notifications/views/class.llms.notification.view.lesson.complete.php

Summary

Maintainability
B
5 hrs
Test Coverage
F
0%
<?php
/**
 * Notification View: Lesson Complete
 *
 * @package LifterLMS/Notifications/Views/Classes
 *
 * @since 3.8.0
 * @version 3.10.1
 */

defined( 'ABSPATH' ) || exit;

/**
 * Notification View: Lesson Complete
 *
 * @since 3.8.0
 * @since 3.10.1 Unknown.
 */
class LLMS_Notification_View_Lesson_Complete extends LLMS_Abstract_Notification_View {

    /**
     * Settings for basic notifications
     *
     * @var  array
     */
    protected $basic_options = array(
        /**
         * Time in milliseconds to show a notification
         * before automatically dismissing it
         */
        'auto_dismiss' => 10000,
        /**
         * Enables manual dismissal of notifications
         */
        'dismissible'  => true,
    );

    /**
     * Notification Trigger ID
     *
     * @var  [type]
     */
    public $trigger_id = 'lesson_complete';

    /**
     * Setup body content for output
     *
     * @return   string
     * @since    3.8.0
     * @version  3.8.0
     */
    protected function set_body() {
        if ( 'email' === $this->notification->get( 'type' ) ) {
            return sprintf( __( 'Congratulations! %1$s completed %2$s', 'lifterlms' ), '{{STUDENT_NAME}}', '{{LESSON_TITLE}}' );
        }
        $content  = sprintf( __( 'Congratulations! You finished %s', 'lifterlms' ), '{{LESSON_TITLE}}' );
        $content .= "\r\n\r\n{{COURSE_PROGRESS}}";
        return $content;
    }

    /**
     * Setup footer content for output
     *
     * @return   string
     * @since    3.8.0
     * @version  3.8.0
     */
    protected function set_footer() {
        return '';
    }

    /**
     * Setup notification icon for output
     *
     * @return   string
     * @since    3.8.0
     * @version  3.8.0
     */
    protected function set_icon() {
        return $this->get_icon_default( 'positive' );
    }

    /**
     * Setup merge codes that can be used with the notification
     *
     * @return   array
     * @since    3.8.0
     * @version  3.8.0
     */
    protected function set_merge_codes() {
        return array(
            '{{COURSE_PROGRESS}}' => __( 'Course Progress Bar', 'lifterlms' ),
            '{{COURSE_TITLE}}'    => __( 'Course Title', 'lifterlms' ),
            '{{LESSON_TITLE}}'    => __( 'Lesson Title', 'lifterlms' ),
            '{{STUDENT_NAME}}'    => __( 'Student Name', 'lifterlms' ),
        );
    }

    /**
     * Replace merge codes with actual values
     *
     * @param    string $code  the merge code to ge merged data for
     * @return   string
     * @since    3.8.0
     * @version  3.10.1
     */
    protected function set_merge_data( $code ) {

        switch ( $code ) {

            case '{{COURSE_PROGRESS}}':
                $progress = $this->user->get_progress( $this->post->get( 'parent_course' ), 'course' );
                $code     = lifterlms_course_progress_bar( $progress, false, false, false );
                break;

            case '{{COURSE_TITLE}}':
                $course = $this->post->get_course();
                if ( $course ) {
                    $code = $course->get( 'title' );
                } else {
                    $code = '';
                }
                break;

            case '{{LESSON_TITLE}}':
                $code = $this->post->get( 'title' );
                break;

            case '{{STUDENT_NAME}}':
                $code = $this->is_for_self() ? __( 'you', 'lifterlms' ) : $this->user->get_name();
                break;

        }

        return $code;

    }

    /**
     * Setup notification subject for output
     *
     * @return   string
     * @since    3.8.0
     * @version  3.8.0
     */
    protected function set_subject() {
        return sprintf( __( 'Congratulations! %1$s completed %2$s', 'lifterlms' ), '{{STUDENT_NAME}}', '{{LESSON_TITLE}}' );
    }

    /**
     * Setup notification title for output
     *
     * @return   string
     * @since    3.8.0
     * @version  3.8.0
     */
    protected function set_title() {
        return sprintf( __( '%s Completed a Lesson', 'lifterlms' ), '{{STUDENT_NAME}}' );
    }

}