<?php
/* For licensing terms, see /license.txt */

/**
 * Class SmsPlugin
 *
 * @author Julio Montoya
 *
 */
class SmsPlugin extends Plugin
{
    const WELCOME_LOGIN_PASSWORD = 0;
    const NEW_FILE_SHARED_COURSE_BY = 1;
    const ACCOUNT_APPROVED_CONNECT = 2;
    const NEW_COURSE_BEEN_CREATED = 3;
    const NEW_USER_SUBSCRIBED_COURSE = 4;
    const NEW_COURSE_SUGGESTED_TEACHER = 5;
    const COURSE_OPENING_REQUEST_CODE_REGISTERED = 6;
    const COURSE_OPENING_REQUEST_CODE_APPROVED = 7;
    const COURSE_OPENING_REQUEST_CODE_REJECTED = 8;
    const COURSE_OPENING_REQUEST_CODE = 9;
    const BEEN_SUBSCRIBED_COURSE = 10;
    const ASSIGNMENT_BEEN_CREATED_COURSE = 11;
    const ACCOUNT_CREATED_UPDATED_LOGIN_PASSWORD = 12;
    const PASSWORD_UPDATED_LOGIN_PASSWORD = 13;
    const REQUESTED_PASSWORD_CHANGE = 14;
    const RECEIVED_NEW_PERSONAL_MESSAGES = 15;
    const NEW_USER_PENDING_APPROVAL = 16;
    const POSTED_FORUM_COURSE = 17;
    const CHECK_EMAIL_CONNECT_MORE_INFO = 18;
    const STUDENT_ANSWERED_TEST = 19;
    const STUDENT_ANSWERED_TEST_OPEN_QUESTION = 20;
    const STUDENT_ANSWERED_TEST_VOICE_QUESTION = 21;
    const ANSWER_OPEN_QUESTION_TEST_REVIEWED = 22;
    const NEW_THREAD_STARTED_FORUM = 23;
    const NEW_ANSWER_POSTED_FORUM = 24;
    const NEW_SYSTEM_ANNOUNCEMENT_ADDED = 25;
    const TEST_NEW_SYSTEM_ANNOUNCEMENT_ADDED = 26;
    const SYSTEM_ANNOUNCEMENT_UPDATE = 27;
    const TEST_SYSTEM_ANNOUNCEMENT_UPDATE = 28;
    const USER_UPLOADED_ASSIGNMENT_COURSE_STUDENT_SUBMITS_PAPER = 29;
    const USER_UPLOADED_ASSIGNMENT_CHECK_STUDENT_SUBMITS_PAPER = 30;
    const USER_UPLOADED_ASSIGNMENT_COURSE = 31;
    const USER_UPLOADED_ASSIGNMENT_CHECK = 32;
    const SUBSCRIBED_SESSION = 33;
    const SUBSCRIBED_SESSION_CSV = 34;
    const USER_SUGGESTED_BE_FRIENDS = 35;
    const USER_ANSWERED_INBOX_MESSAGE = 36;
    const BEEN_INVITED_JOIN_GROUP = 37;
    const MESSAGES_SENT_EDITED_GROUP_EDITED = 38;
    const MESSAGES_SENT_EDITED_GROUP_ADDED = 39;
    const BEEN_INVITED_COMPLETE_SURVEY_COURSE = 40;
    const REMINDER_ASSIGNMENT_COURSE_DUE = 41;
    const USER_DETAILS_MODIFIED = 42;

    public $isCoursePlugin = true;
    public $isMailPlugin = true;

    /**
     * getSmsTypeOptions (returns all SMS types)
     * @return  array   SMS types
     */
    public function getSmsTypeOptions()
    {
        return array(
            'MessageWelcomeXLoginXPasswordX',
            'MessageXNewFileSharedCourseXByX',
            'MessageXAccountApprovedConnectX',
            'MessageXNewCourseXBeenCreatedX',
            'MessageXNewUserXSubscribedCourseX',
            'MessageXNewCourseSuggestedTeacherX',
            'MessageXCourseOpeningRequestCodeXRegistered',
            'MessageXCourseOpeningRequestCourseCodeXApproved',
            'MessageXRequestOpenCourseCodeXReject',
            'MessageXCourseOpeningRequestCourseCodeX',
            'MessageXBeenSubscribedCourseX',
            'MessageXAssignmentBeenCreatedCourseX',
            'MessageXAccountCreatedUpdatedLoginXPasswordX',
            'MessageXPasswordUpdatedLoginXPasswordX',
            'MessageXRequestedPasswordChange',
            'MessageXReceivedNewPersonalMessages',
            'MessageXNewUserXPendingApproval',
            'MessageXXPostedForumXCourseX',
            'MessageXXXCheckEmailConnectMoreInfo',
            'MessageXXStudentXAnsweredTestX',
            'MessageXXStudentXAnsweredTestXOpenQuestion',
            'MessageXXStudentXAnsweredTestXVoiceQuestion',
            'MessageXXAnswerOpenQuestionTestXReviewed',
            'MessageXXNewThreadXStartedForumX',
            'MessageXXNewAnswerPostedXForumX',
            'MessageXXNewSystemAnnouncementAdded',
            'MessageXTestXNewSystemAnnouncementAdded',
            'MessageXXSystemAnnouncementUpdate',
            'MessageXTestXSystemAnnouncementUpdate',
            'MessageXUserXUploadedAssignmentXCourseXStudentSubmitsPaper',
            'MessageXUserXUploadedAssignmentXCheckXStudentSubmitsPaper',
            'MessageXUserXUploadedAssignmentXCourseX',
            'MessageXUserXUploadedAssignmentXCheckX',
            'MessageXSubscribedSessionX',
            'MessageXSubscribedSessionXCSV',
            'MessageXUserXSuggestedBeFriends',
            'MessageXUserXAnsweredInboxMessage',
            'MessageXBeenInvitedJoinGroupX',
            'MessageXMessagesSentEditedGroupXEdited',
            'MessageXMessagesSentEditedGroupXAdded',
            'MessageXBeenInvitedCompleteSurveyXCourseX',
            'MessageXReminderAssignmentXCourseXDue',
            'MessageXUserDetailsModified'
        );
    }

    /**
     * addMobilePhoneNumberField (adds a mobile phone number field if it is not
     * already created)
     * @return  void
     */
    private function addMobilePhoneNumberField()
    {
        $extraField = new ExtraField('user');
        $extraFieldInfo = $extraField->get_handler_field_info_by_field_variable('mobile_phone_number');

        if (empty($extraFieldInfo)) {
            $extraField->save(array(
                'field_type' => 1,
                'variable' => 'mobile_phone_number',
                'display_text' => $this->get_lang('mobile_phone_number'),
                'default_value' => null,
                'field_order' => 2,
                'visible' => 1,
                'changeable' => 1,
                'filter' => null
            ));
        }
    }

    /**
     * install (installs the plugin)
     * @return  void
     */
    public function install()
    {
        $this->addMobilePhoneNumberField();
    }
}
