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.
		
		
		
		
			
				
					139 lines
				
				3.4 KiB
			
		
		
			
		
	
	
					139 lines
				
				3.4 KiB
			| 
								 
											4 years ago
										 
									 | 
							
								<?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;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |