You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							138 lines
						
					
					
						
							3.4 KiB
						
					
					
				
			
		
		
	
	
							138 lines
						
					
					
						
							3.4 KiB
						
					
					
				<?php
 | 
						|
 | 
						|
/* For licensing terms, see /license.txt */
 | 
						|
 | 
						|
class SkillRelGradebookModel extends Model
 | 
						|
{
 | 
						|
    public $columns = ['id', 'gradebook_id', 'skill_id'];
 | 
						|
 | 
						|
    public function __construct()
 | 
						|
    {
 | 
						|
        $this->table = Database::get_main_table(TABLE_MAIN_SKILL_REL_GRADEBOOK);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @param int $gradebookId
 | 
						|
     * @param int $skillId
 | 
						|
     *
 | 
						|
     * @return bool
 | 
						|
     */
 | 
						|
    public function existsGradeBookSkill($gradebookId, $skillId)
 | 
						|
    {
 | 
						|
        $result = $this->find(
 | 
						|
            'all',
 | 
						|
            [
 | 
						|
                'where' => [
 | 
						|
                    'gradebook_id = ? AND skill_id = ?' => [
 | 
						|
                        $gradebookId,
 | 
						|
                        $skillId,
 | 
						|
                    ],
 | 
						|
                ],
 | 
						|
            ]
 | 
						|
        );
 | 
						|
        if (!empty($result)) {
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
 | 
						|
        return false;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * Gets an element.
 | 
						|
     */
 | 
						|
    public function getSkillInfo($skill_id, $gradebookId)
 | 
						|
    {
 | 
						|
        if (empty($skill_id)) {
 | 
						|
            return [];
 | 
						|
        }
 | 
						|
        $result = Database::select(
 | 
						|
            '*',
 | 
						|
            $this->table,
 | 
						|
            [
 | 
						|
                'where' => [
 | 
						|
                    'skill_id = ? AND gradebook_id = ? ' => [
 | 
						|
                        $skill_id,
 | 
						|
                        $gradebookId,
 | 
						|
                    ],
 | 
						|
                ],
 | 
						|
            ],
 | 
						|
            'first'
 | 
						|
        );
 | 
						|
 | 
						|
        return $result;
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @param int   $skill_id
 | 
						|
     * @param array $gradebook_list
 | 
						|
     */
 | 
						|
    public function updateGradeBookListBySkill($skill_id, $gradebook_list)
 | 
						|
    {
 | 
						|
        $original_gradebook_list = $this->find(
 | 
						|
            'all',
 | 
						|
            ['where' => ['skill_id = ?' => [$skill_id]]]
 | 
						|
        );
 | 
						|
        $gradebooks_to_remove = [];
 | 
						|
        $gradebooks_to_add = [];
 | 
						|
        $original_gradebook_list_ids = [];
 | 
						|
 | 
						|
        if (!empty($original_gradebook_list)) {
 | 
						|
            foreach ($original_gradebook_list as $gradebook) {
 | 
						|
                if (!in_array($gradebook['gradebook_id'], $gradebook_list)) {
 | 
						|
                    $gradebooks_to_remove[] = $gradebook['id'];
 | 
						|
                }
 | 
						|
            }
 | 
						|
            foreach ($original_gradebook_list as $gradebook_item) {
 | 
						|
                $original_gradebook_list_ids[] = $gradebook_item['gradebook_id'];
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        if (!empty($gradebook_list)) {
 | 
						|
            foreach ($gradebook_list as $gradebook_id) {
 | 
						|
                if (!in_array($gradebook_id, $original_gradebook_list_ids)) {
 | 
						|
                    $gradebooks_to_add[] = $gradebook_id;
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        if (!empty($gradebooks_to_remove)) {
 | 
						|
            foreach ($gradebooks_to_remove as $id) {
 | 
						|
                $this->delete($id);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        if (!empty($gradebooks_to_add)) {
 | 
						|
            foreach ($gradebooks_to_add as $gradebook_id) {
 | 
						|
                $attributes = [
 | 
						|
                    'skill_id' => $skill_id,
 | 
						|
                    'gradebook_id' => $gradebook_id,
 | 
						|
                ];
 | 
						|
                $this->save($attributes);
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @param array $params
 | 
						|
     *
 | 
						|
     * @return bool|void
 | 
						|
     */
 | 
						|
    public function updateBySkill($params)
 | 
						|
    {
 | 
						|
        $skillInfo = $this->existsGradeBookSkill(
 | 
						|
            $params['gradebook_id'],
 | 
						|
            $params['skill_id']
 | 
						|
        );
 | 
						|
 | 
						|
        if ($skillInfo) {
 | 
						|
            return;
 | 
						|
        } else {
 | 
						|
            $result = $this->save($params);
 | 
						|
        }
 | 
						|
        if ($result) {
 | 
						|
            return true;
 | 
						|
        }
 | 
						|
 | 
						|
        return false;
 | 
						|
    }
 | 
						|
}
 | 
						|
 |