Fix PHP warning, format code

1.10.x
Julio Montoya 11 years ago
parent bb6932ffbd
commit e54706f469
  1. 3
      main/inc/ajax/skill.ajax.php
  2. 417
      main/inc/lib/skill.lib.php
  3. 45
      main/social/skills_ranking.php

@ -210,11 +210,8 @@ switch ($action) {
$skills = $_REQUEST['skill_id']; $skills = $_REQUEST['skill_id'];
$total_skills_to_search = $skills; $total_skills_to_search = $skills;
$users = $skill_rel_user->get_user_by_skills($skills); $users = $skill_rel_user->get_user_by_skills($skills);
$user_list = array(); $user_list = array();
$count_skills = count($skills); $count_skills = count($skills);
if (!empty($users)) { if (!empty($users)) {

@ -9,15 +9,23 @@ class SkillProfile extends Model
{ {
public $columns = array('id', 'name', 'description'); public $columns = array('id', 'name', 'description');
/**
* Constructor
*/
public function __construct() public function __construct()
{ {
$this->table = Database::get_main_table(TABLE_MAIN_SKILL_PROFILE); $this->table = Database::get_main_table(TABLE_MAIN_SKILL_PROFILE);
$this->table_rel_profile = Database::get_main_table(TABLE_MAIN_SKILL_REL_PROFILE); $this->table_rel_profile = Database::get_main_table(TABLE_MAIN_SKILL_REL_PROFILE);
} }
/**
* @return array
*/
public function get_profiles() public function get_profiles()
{ {
$sql = "SELECT * FROM $this->table p INNER JOIN $this->table_rel_profile sp ON(p.id = sp.profile_id) "; $sql = "SELECT * FROM $this->table p
INNER JOIN $this->table_rel_profile sp
ON(p.id = sp.profile_id) ";
$result = Database::query($sql); $result = Database::query($sql);
$profiles = Database::store_result($result, 'ASSOC'); $profiles = Database::store_result($result, 'ASSOC');
return $profiles; return $profiles;
@ -32,7 +40,10 @@ class SkillProfile extends Model
public function updateProfileInfo($profileId, $name, $description) public function updateProfileInfo($profileId, $name, $description)
{ {
$profileId = intval($profileId); $profileId = intval($profileId);
$sql = "UPDATE $this->table SET name = '$name', description = '$description' WHERE id = $profileId "; $sql = "UPDATE $this->table SET
name = '$name',
description = '$description'
WHERE id = $profileId ";
$result = Database::query($sql); $result = Database::query($sql);
return $result; return $result;
} }
@ -66,7 +77,8 @@ class SkillProfile extends Model
* @param int $id The skill profile id * @param int $id The skill profile id
* @return boolean Whether delete a skill profile * @return boolean Whether delete a skill profile
*/ */
public function delete($id) { public function delete($id)
{
Database::delete( Database::delete(
$this->table_rel_profile, $this->table_rel_profile,
array( array(
@ -78,27 +90,38 @@ class SkillProfile extends Model
} }
} }
/**
* Class SkillRelProfile
*/
class SkillRelProfile extends Model class SkillRelProfile extends Model
{ {
public $columns = array('id', 'skill_id', 'profile_id'); public $columns = array('id', 'skill_id', 'profile_id');
/**
* Constructor
*/
public function __construct() public function __construct()
{ {
$this->table = Database::get_main_table(TABLE_MAIN_SKILL_REL_PROFILE); $this->table = Database::get_main_table(TABLE_MAIN_SKILL_REL_PROFILE);
$this->tableProfile = Database::get_main_table(TABLE_MAIN_SKILL_PROFILE); $this->tableProfile = Database::get_main_table(TABLE_MAIN_SKILL_PROFILE);
} }
/**
* @param int $profileId
* @return array
*/
public function get_skills_by_profile($profileId) public function get_skills_by_profile($profileId)
{ {
$profileId = intval($profileId); $profileId = intval($profileId);
$skills = $this->get_all(array('where' => array('profile_id = ? ' => $profileId))); $skills = $this->get_all(array('where' => array('profile_id = ? ' => $profileId)));
$return_array = array(); $return = array();
if (!empty($skills)) { if (!empty($skills)) {
foreach ($skills as $skill_data) { foreach ($skills as $skill_data) {
$return_array[] = $skill_data['skill_id']; $return[] = $skill_data['skill_id'];
} }
} }
return $return_array;
return $return;
} }
/** /**
@ -108,16 +131,26 @@ class SkillRelProfile extends Model
public function getProfileInfo($profileId) public function getProfileInfo($profileId)
{ {
$sql = "SELECT * FROM $this->table p INNER JOIN $this->tableProfile pr ON(pr.id = p.profile_id) WHERE p.profile_id = ".intval($profileId); $sql = "SELECT * FROM $this->table p
INNER JOIN $this->tableProfile pr
ON (pr.id = p.profile_id)
WHERE p.profile_id = ".intval($profileId);
$result = Database::query($sql); $result = Database::query($sql);
$profileData = Database::fetch_array($result, 'ASSOC'); $profileData = Database::fetch_array($result, 'ASSOC');
return $profileData; return $profileData;
} }
} }
/**
* Class SkillRelSkill
*/
class SkillRelSkill extends Model class SkillRelSkill extends Model
{ {
public $columns = array('skill_id', 'parent_id', 'relation_type', 'level'); public $columns = array('skill_id', 'parent_id', 'relation_type', 'level');
/**
* Constructor
*/
public function __construct() public function __construct()
{ {
$this->table = Database::get_main_table(TABLE_MAIN_SKILL_REL_SKILL); $this->table = Database::get_main_table(TABLE_MAIN_SKILL_REL_SKILL);
@ -125,25 +158,34 @@ class SkillRelSkill extends Model
/** /**
* Gets an element * Gets an element
* @param int $id
* @return array
*/ */
public function get_skill_info($id) public function get_skill_info($id)
{ {
if (empty($id)) { if (empty($id)) {
return array(); return array();
} }
$result = Database::select('*', $this->table, array('where' => array('skill_id = ?' => intval($id))), 'first'); $result = Database::select(
'*',
$this->table,
array('where' => array('skill_id = ?' => intval($id))),
'first'
);
return $result; return $result;
} }
public function get_skill_parents($skill_id, $add_child_info = true) public function get_skill_parents($skill_id, $add_child_info = true)
{ {
$skill_id = intval($skill_id); $skill_id = intval($skill_id);
$sql = 'SELECT child.* FROM '.$this->table.' child LEFT JOIN '.$this->table.' parent $sql = 'SELECT child.* FROM '.$this->table.' child
LEFT JOIN '.$this->table.' parent
ON child.parent_id = parent.skill_id ON child.parent_id = parent.skill_id
WHERE child.skill_id = '.$skill_id.' '; WHERE child.skill_id = '.$skill_id.' ';
$result = Database::query($sql); $result = Database::query($sql);
$skill = Database::store_result($result, 'ASSOC'); $skill = Database::store_result($result, 'ASSOC');
$skill = isset($skill[0]) ? $skill[0] : null; $skill = isset($skill[0]) ? $skill[0] : null;
$parents = array(); $parents = array();
if (!empty($skill)) { if (!empty($skill)) {
@ -157,11 +199,15 @@ class SkillRelSkill extends Model
return $parents; return $parents;
} }
/**
* @param int $skill_id
* @return array
*/
public function get_direct_parents($skill_id) public function get_direct_parents($skill_id)
{ {
$skill_id = intval($skill_id); $skill_id = intval($skill_id);
$sql = 'SELECT parent_id as skill_id FROM '.$this->table.' $sql = 'SELECT parent_id as skill_id FROM '.$this->table.'
WHERE skill_id = '.$skill_id.' '; WHERE skill_id = '.$skill_id.' ';
$result = Database::query($sql); $result = Database::query($sql);
$skill = Database::store_result($result, 'ASSOC'); $skill = Database::store_result($result, 'ASSOC');
$skill = isset($skill[0]) ? $skill[0] : null; $skill = isset($skill[0]) ? $skill[0] : null;
@ -169,14 +215,20 @@ class SkillRelSkill extends Model
if (!empty($skill)) { if (!empty($skill)) {
$parents[] = $skill; $parents[] = $skill;
} }
return $parents; return $parents;
} }
/**
* @param int $skill_id
* @param bool $load_user_data
* @param bool $user_id
* @return array
*/
public function get_children($skill_id, $load_user_data = false, $user_id = false) public function get_children($skill_id, $load_user_data = false, $user_id = false)
{ {
$skills = $this->find('all', array('where' => array('parent_id = ? ' => $skill_id))); $skills = $this->find('all', array('where' => array('parent_id = ? ' => $skill_id)));
$skill_obj = new Skill(); $skill_obj = new Skill();
$skill_rel_user = new SkillRelUser(); $skill_rel_user = new SkillRelUser();
if ($load_user_data) { if ($load_user_data) {
@ -202,10 +254,15 @@ class SkillRelSkill extends Model
} }
} }
} }
return $skills; return $skills;
} }
function update_by_skill($params) /**
* @param array $params
* @return bool
*/
public function update_by_skill($params)
{ {
$result = Database::update($this->table, $params, array('skill_id = ? ' => $params['skill_id'])); $result = Database::update($this->table, $params, array('skill_id = ? ' => $params['skill_id']));
if ($result) { if ($result) {
@ -214,7 +271,12 @@ class SkillRelSkill extends Model
return false; return false;
} }
function relation_exists($skill_id, $parent_id) /**
* @param int $skill_id
* @param int $parent_id
* @return bool
*/
public function relation_exists($skill_id, $parent_id)
{ {
$result = $this->find( $result = $this->find(
'all', 'all',
@ -228,7 +290,7 @@ class SkillRelSkill extends Model
} }
/** /**
* @package chamilo.library * Class SkillRelGradebook
*/ */
class SkillRelGradebook extends Model class SkillRelGradebook extends Model
{ {
@ -239,6 +301,11 @@ class SkillRelGradebook extends Model
$this->table = Database::get_main_table(TABLE_MAIN_SKILL_REL_GRADEBOOK); $this->table = Database::get_main_table(TABLE_MAIN_SKILL_REL_GRADEBOOK);
} }
/**
* @param int $gradebook_id
* @param int $skill_id
* @return bool
*/
public function exists_gradebook_skill($gradebook_id, $skill_id) public function exists_gradebook_skill($gradebook_id, $skill_id)
{ {
$result = $this->find( $result = $this->find(
@ -268,11 +335,18 @@ class SkillRelGradebook extends Model
return $result; return $result;
} }
/**
* @param int $skill_id
* @param array $gradebook_list
*/
public function update_gradebooks_by_skill($skill_id, $gradebook_list) public function update_gradebooks_by_skill($skill_id, $gradebook_list)
{ {
$original_gradebook_list = $this->find('all', array('where' => array('skill_id = ?' => array($skill_id)))); $original_gradebook_list = $this->find(
$gradebooks_to_remove = array(); 'all',
$gradebooks_to_add = array(); array('where' => array('skill_id = ?' => array($skill_id)))
);
$gradebooks_to_remove = array();
$gradebooks_to_add = array();
$original_gradebook_list_ids = array(); $original_gradebook_list_ids = array();
if (!empty($original_gradebook_list)) { if (!empty($original_gradebook_list)) {
@ -308,7 +382,11 @@ class SkillRelGradebook extends Model
} }
} }
function update_by_skill($params) /**
* @param array $params
* @return bool|void
*/
public function update_by_skill($params)
{ {
$skill_info = $this->exists_gradebook_skill($params['gradebook_id'], $params['skill_id']); $skill_info = $this->exists_gradebook_skill($params['gradebook_id'], $params['skill_id']);
@ -325,18 +403,24 @@ class SkillRelGradebook extends Model
} }
/** /**
* @package chamilo.library * Class SkillRelUser
*/ */
class SkillRelUser extends Model class SkillRelUser extends Model
{ {
public $columns = array('id', 'user_id', 'skill_id', 'acquired_skill_at', 'assigned_by', 'course_id', 'session_id'); public $columns = array('id', 'user_id', 'skill_id', 'acquired_skill_at', 'assigned_by', 'course_id', 'session_id');
/**
* Constructor
*/
public function __construct() public function __construct()
{ {
$this->table = Database::get_main_table(TABLE_MAIN_SKILL_REL_USER); $this->table = Database::get_main_table(TABLE_MAIN_SKILL_REL_USER);
//$this->table_user = Database::get_main_table(TABLE_MAIN_USER);
} }
/**
* @param array $skill_list
* @return array
*/
public function get_user_by_skills($skill_list) public function get_user_by_skills($skill_list)
{ {
$users = array(); $users = array();
@ -344,7 +428,8 @@ class SkillRelUser extends Model
$skill_list = array_map('intval', $skill_list); $skill_list = array_map('intval', $skill_list);
$skill_list = implode("', '", $skill_list); $skill_list = implode("', '", $skill_list);
$sql = "SELECT user_id FROM {$this->table} WHERE skill_id IN ('$skill_list') "; $sql = "SELECT user_id FROM {$this->table}
WHERE skill_id IN ('$skill_list') ";
$result = Database::query($sql); $result = Database::query($sql);
$users = Database::store_result($result, 'ASSOC'); $users = Database::store_result($result, 'ASSOC');
@ -414,7 +499,9 @@ class SkillRelUser extends Model
} }
/**
* Class Skill
*/
class Skill extends Model class Skill extends Model
{ {
public $columns = array('id', 'name', 'description', 'access_url_id', 'short_code', 'icon', 'criteria'); public $columns = array('id', 'name', 'description', 'access_url_id', 'short_code', 'icon', 'criteria');
@ -437,15 +524,19 @@ class Skill extends Model
public function __construct() public function __construct()
{ {
$this->table = Database::get_main_table(TABLE_MAIN_SKILL); $this->table = Database::get_main_table(TABLE_MAIN_SKILL);
$this->table_user = Database::get_main_table(TABLE_MAIN_USER); $this->table_user = Database::get_main_table(TABLE_MAIN_USER);
$this->table_skill_rel_gradebook = Database::get_main_table(TABLE_MAIN_SKILL_REL_GRADEBOOK); $this->table_skill_rel_gradebook = Database::get_main_table(TABLE_MAIN_SKILL_REL_GRADEBOOK);
$this->table_skill_rel_user = Database::get_main_table(TABLE_MAIN_SKILL_REL_USER); $this->table_skill_rel_user = Database::get_main_table(TABLE_MAIN_SKILL_REL_USER);
$this->table_course = Database::get_main_table(TABLE_MAIN_COURSE); $this->table_course = Database::get_main_table(TABLE_MAIN_COURSE);
$this->table_skill_rel_skill = Database::get_main_table(TABLE_MAIN_SKILL_REL_SKILL); $this->table_skill_rel_skill = Database::get_main_table(TABLE_MAIN_SKILL_REL_SKILL);
$this->table_gradebook = Database::get_main_table(TABLE_MAIN_GRADEBOOK_CATEGORY); $this->table_gradebook = Database::get_main_table(TABLE_MAIN_GRADEBOOK_CATEGORY);
} }
/**
* @param int $id
* @return array
*/
public function get_skill_info($id) public function get_skill_info($id)
{ {
$skill_rel_skill = new SkillRelSkill(); $skill_rel_skill = new SkillRelSkill();
@ -457,6 +548,10 @@ class Skill extends Model
return $skill_info; return $skill_info;
} }
/**
* @param array $skill_list
* @return array
*/
public function get_skills_info($skill_list) public function get_skills_info($skill_list)
{ {
$skill_list = array_map('intval', $skill_list); $skill_list = array_map('intval', $skill_list);
@ -469,6 +564,13 @@ class Skill extends Model
return $users; return $users;
} }
/**
* @param bool $load_user_data
* @param bool $user_id
* @param int $id
* @param int $parent_id
* @return array
*/
public function get_all($load_user_data = false, $user_id = false, $id = null, $parent_id = null) public function get_all($load_user_data = false, $user_id = false, $id = null, $parent_id = null)
{ {
$id_condition = ''; $id_condition = '';
@ -487,7 +589,9 @@ class Skill extends Model
} }
$sql = "SELECT s.id, s.name, s.description, ss.parent_id, ss.relation_type, s.icon, s.short_code $sql = "SELECT s.id, s.name, s.description, ss.parent_id, ss.relation_type, s.icon, s.short_code
FROM {$this->table} s INNER JOIN {$this->table_skill_rel_skill} ss ON (s.id = ss.skill_id) $id_condition FROM {$this->table} s
INNER JOIN {$this->table_skill_rel_skill} ss
ON (s.id = ss.skill_id) $id_condition
ORDER BY ss.id, ss.parent_id"; ORDER BY ss.id, ss.parent_id";
$result = Database::query($sql); $result = Database::query($sql);
@ -500,8 +604,6 @@ class Skill extends Model
$row['level'] = count($a) - 1; $row['level'] = count($a) - 1;
$row['gradebooks'] = self::get_gradebooks_by_skill($row['id']); $row['gradebooks'] = self::get_gradebooks_by_skill($row['id']);
$skills[$row['id']] = $row; $skills[$row['id']] = $row;
} }
} }
@ -518,10 +620,15 @@ class Skill extends Model
return $skills; return $skills;
} }
/**
* @param int $skill_id
* @return array|resource
*/
public function get_gradebooks_by_skill($skill_id) public function get_gradebooks_by_skill($skill_id)
{ {
$skill_id = intval($skill_id); $skill_id = intval($skill_id);
$sql = "SELECT g.* FROM {$this->table_gradebook} g INNER JOIN {$this->table_skill_rel_gradebook} sg $sql = "SELECT g.* FROM {$this->table_gradebook} g
INNER JOIN {$this->table_skill_rel_gradebook} sg
ON g.id = sg.gradebook_id ON g.id = sg.gradebook_id
WHERE sg.skill_id = $skill_id"; WHERE sg.skill_id = $skill_id";
$result = Database::query($sql); $result = Database::query($sql);
@ -529,7 +636,13 @@ class Skill extends Model
return $result; return $result;
} }
/* Get one level childrens */ /**
* Get one level childrens
*
* @param int $skill_id
* @param bool $load_user_data
* @return array
*/
public function get_children($skill_id, $load_user_data = false) public function get_children($skill_id, $load_user_data = false)
{ {
$skill_rel_skill = new SkillRelSkill(); $skill_rel_skill = new SkillRelSkill();
@ -542,28 +655,33 @@ class Skill extends Model
return $skills; return $skills;
} }
/* Get all children of the current node (recursive)*/ /**
* Get all children of the current node (recursive)
* @param int $skillId
* @return array
*/
public function get_all_children($skillId) public function get_all_children($skillId)
{ {
$skill_rel_skill = new SkillRelSkill(); $skill_rel_skill = new SkillRelSkill();
$children = $skill_rel_skill->get_children($skill_id); $children = $skill_rel_skill->get_children($skillId);
foreach ($children as $child) { foreach ($children as $child) {
$sub_children = $this->get_all_children($child['skill_id']); $subChildren = $this->get_all_children($child['skill_id']);
} }
if (!empty($sub_children)) {
$children = array_merge($children, $sub_children); if (!empty($subChildren)) {
} $children = array_merge($children, $subChildren);
}
return $children; return $children;
} }
/** /**
* Gets all parents from from the wanted skill * Gets all parents from from the wanted skill
*/ */
public function get_parents($skill_id) public function get_parents($skill_id)
{ {
$skill_rel_skill = new SkillRelSkill(); $skill_rel_skill = new SkillRelSkill();
$skills = $skill_rel_skill->get_skill_parents($skill_id, true); $skills = $skill_rel_skill->get_skill_parents($skill_id, true);
foreach ($skills as &$skill) { foreach ($skills as &$skill) {
$skill['data'] = self::get($skill['skill_id']); $skill['data'] = self::get($skill['skill_id']);
} }
@ -585,8 +703,10 @@ class Skill extends Model
return $skills; return $skills;
} }
/* /**
* Adds a new skill * Adds a new skill
* @param array $params
* @return bool|null
*/ */
public function add($params) public function add($params)
{ {
@ -633,6 +753,12 @@ class Skill extends Model
return null; return null;
} }
/**
* @param int $user_id
* @param int $gradebook_id
* @param int $courseId
* @param int $sessionId
*/
public function add_skill_to_user($user_id, $gradebook_id, $courseId = 0, $sessionId = 0) public function add_skill_to_user($user_id, $gradebook_id, $courseId = 0, $sessionId = 0)
{ {
$skill_gradebook = new SkillRelGradebook(); $skill_gradebook = new SkillRelGradebook();
@ -644,8 +770,8 @@ class Skill extends Model
$user_has_skill = $this->user_has_skill($user_id, $skill_gradebook['skill_id'], $courseId, $sessionId); $user_has_skill = $this->user_has_skill($user_id, $skill_gradebook['skill_id'], $courseId, $sessionId);
if (!$user_has_skill) { if (!$user_has_skill) {
$params = array( $params = array(
'user_id' => $user_id, 'user_id' => $user_id,
'skill_id' => $skill_gradebook['skill_id'], 'skill_id' => $skill_gradebook['skill_id'],
'acquired_skill_at' => api_get_utc_datetime(), 'acquired_skill_at' => api_get_utc_datetime(),
'course_id' => intval($courseId), 'course_id' => intval($courseId),
'session_id' => intval($sessionId) 'session_id' => intval($sessionId)
@ -672,10 +798,12 @@ class Skill extends Model
$this->delete($skill_id); $this->delete($skill_id);
$skill_rel_gradebook->delete($params);*/ $skill_rel_gradebook->delete($params);*/
} }
/**
* @param array $params
* @return null
*/
public function edit($params) public function edit($params)
{ {
if (!isset($params['parent_id'])) { if (!isset($params['parent_id'])) {
@ -720,11 +848,12 @@ class Skill extends Model
* *
* @param int $userId User's id * @param int $userId User's id
*/ */
public function get_user_skills($user_id, $get_skill_data = false) public function get_user_skills($user_id, $get_skill_data = false)
{ {
$user_id = intval($user_id); $user_id = intval($user_id);
$sql = 'SELECT DISTINCT s.id, s.name, s.icon FROM '.$this->table_skill_rel_user.' u INNER JOIN '.$this->table.' s $sql = 'SELECT DISTINCT s.id, s.name, s.icon
FROM '.$this->table_skill_rel_user.' u
INNER JOIN '.$this->table.' s
ON u.skill_id = s.id ON u.skill_id = s.id
WHERE user_id = '.$user_id; WHERE user_id = '.$user_id;
@ -757,6 +886,13 @@ class Skill extends Model
return $clean_skill; return $clean_skill;
} }
/**
* @param int $user_id
* @param int $skill_id
* @param bool $return_flat_array
* @param bool $add_root
* @return array|null
*/
public function get_skills_tree($user_id = null, $skill_id = null, $return_flat_array = false, $add_root = false) public function get_skills_tree($user_id = null, $skill_id = null, $return_flat_array = false, $add_root = false)
{ {
if ($skill_id == 1) { if ($skill_id == 1) {
@ -770,20 +906,19 @@ class Skill extends Model
$original_skill = $this->list = $skills; $original_skill = $this->list = $skills;
//Show 1 item // Show 1 item
if (!empty($skill_id)) { if (!empty($skill_id)) {
if ($add_root) { if ($add_root) {
if (!empty($skill_id)) { if (!empty($skill_id)) {
//Default root node // Default root node
$skills[1] = array('id' => '1', 'name' => get_lang('Root'), 'parent_id' => '0'); $skills[1] = array('id' => '1', 'name' => get_lang('Root'), 'parent_id' => '0');
$skill_info = $this->get_skill_info($skill_id); $skill_info = $this->get_skill_info($skill_id);
//2nd node // 2nd node
$skills[$skill_id] = $skill_info; $skills[$skill_id] = $skill_info;
//Uncomment code below to hide the searched skill // Uncomment code below to hide the searched skill
$skills[$skill_id]['data']['parent_id'] = $skill_info['parent_id']; $skills[$skill_id]['data']['parent_id'] = $skill_info['parent_id'];
$skills[$skill_id]['parent_id'] = 1; $skills[$skill_id]['parent_id'] = 1;
} }
} }
} }
@ -826,18 +961,17 @@ class Skill extends Model
}*/ }*/
} }
if (!isset($skill['data']['real_parent_id'])) { if (!isset($skill['data']['real_parent_id'])) {
$skill['data']['real_parent_id'] = $skill['parent_id']; $skill['data']['real_parent_id'] = $skill['parent_id'];
} }
//User achieved the skill (depends in the gradebook with certification) // User achieved the skill (depends in the gradebook with certification)
$skill['data']['achieved'] = false; $skill['data']['achieved'] = false;
if ($user_id) { if ($user_id) {
$skill['data']['achieved'] = $this->user_has_skill($user_id, $skill['id']); $skill['data']['achieved'] = $this->user_has_skill($user_id, $skill['id']);
} }
//Check if the skill has related gradebooks // Check if the skill has related gradebooks
$skill['data']['skill_has_gradebook'] = false; $skill['data']['skill_has_gradebook'] = false;
if (isset($skill['gradebooks']) && !empty($skill['gradebooks'])) { if (isset($skill['gradebooks']) && !empty($skill['gradebooks'])) {
$skill['data']['skill_has_gradebook'] = true; $skill['data']['skill_has_gradebook'] = true;
@ -846,7 +980,7 @@ class Skill extends Model
$flat_array[$skill['id']] = &$skill; $flat_array[$skill['id']] = &$skill;
} }
//Checking family value // Checking family value
$family_id = 1; $family_id = 1;
$new_family_array = array(); $new_family_array = array();
@ -867,24 +1001,29 @@ class Skill extends Model
$flat_array[$skill_id] = $skills[$skill_id]; $flat_array[$skill_id] = $skills[$skill_id];
} else { } else {
// Moving node to the children index of their parents // Moving node to the children index of their parents
foreach ($skills as $my_skill_id => &$skill) { foreach ($skills as $my_skill_id => &$skill) {
$skill['data']['family_id'] = $new_family_array[$skill['id']]; if (isset($new_family_array[$skill['id']])) {
$skill['data']['family_id'] = $new_family_array[$skill['id']];
}
$refs[$skill['parent_id']]['children'][] = &$skill; $refs[$skill['parent_id']]['children'][] = &$skill;
$flat_array[$my_skill_id] = $skill; $flat_array[$my_skill_id] = $skill;
} }
} }
$skills_tree = array( $skills_tree = array(
'name' => get_lang('SkillRootName'), 'name' => get_lang('SkillRootName'),
'id' => 'root', 'id' => 'root',
'children' => $refs['root']['children'], 'children' => $refs['root']['children'],
'data' => array() 'data' => array()
); );
} }
if ($return_flat_array) { if ($return_flat_array) {
return $flat_array; return $flat_array;
} }
unset($skills); unset($skills);
return $skills_tree; return $skills_tree;
} }
@ -903,8 +1042,8 @@ class Skill extends Model
if (!empty($tree['children'])) { if (!empty($tree['children'])) {
foreach ($tree['children'] as $element) { foreach ($tree['children'] as $element) {
$simple_tree[] = array( $simple_tree[] = array(
'name' => $element['name'], 'name' => $element['name'],
'children' => $this->get_skill_json($element['children'], 1, $main_depth), 'children' => $this->get_skill_json($element['children'], 1, $main_depth)
); );
} }
} }
@ -914,6 +1053,10 @@ class Skill extends Model
/** /**
* Get JSON element * Get JSON element
* @param array $subtree
* @param int $depth
* @param int $max_depth
* @return array|null
*/ */
public function get_skill_json($subtree, $depth = 1, $max_depth = 2) public function get_skill_json($subtree, $depth = 1, $max_depth = 2)
{ {
@ -926,7 +1069,7 @@ class Skill extends Model
$tmp['id'] = $elem['id']; $tmp['id'] = $elem['id'];
$tmp['isSearched'] = self::isSearched($elem['id']); $tmp['isSearched'] = self::isSearched($elem['id']);
if (is_array($elem['children'])) { if (isset($elem['children']) && is_array($elem['children'])) {
$tmp['children'] = $this->get_skill_json($elem['children'], $depth + 1, $max_depth); $tmp['children'] = $this->get_skill_json($elem['children'], $depth + 1, $max_depth);
} else { } else {
//$tmp['colour'] = $this->colours[$depth][rand(0,3)]; //$tmp['colour'] = $this->colours[$depth][rand(0,3)];
@ -951,10 +1094,16 @@ class Skill extends Model
return null; return null;
} }
function get_user_skill_ranking($user_id) /**
* @param int $user_id
* @return bool
*/
public function get_user_skill_ranking($user_id)
{ {
$user_id = intval($user_id); $user_id = intval($user_id);
$sql = "SELECT count(skill_id) count FROM {$this->table} s INNER JOIN {$this->table_skill_rel_user} su ON (s.id = su.skill_id) $sql = "SELECT count(skill_id) count FROM {$this->table} s
INNER JOIN {$this->table_skill_rel_user} su
ON (s.id = su.skill_id)
WHERE user_id = $user_id"; WHERE user_id = $user_id";
$result = Database::query($sql); $result = Database::query($sql);
if (Database::num_rows($result)) { if (Database::num_rows($result)) {
@ -964,32 +1113,47 @@ class Skill extends Model
return false; return false;
} }
function get_user_list_skill_ranking($start, $limit, $sidx, $sord, $where_condition) /**
* @param $start
* @param $limit
* @param $sidx
* @param $sord
* @param $where_condition
* @return array
*/
public function get_user_list_skill_ranking($start, $limit, $sidx, $sord, $where_condition)
{ {
$start = intval($start); $start = intval($start);
$limit = intval($limit); $limit = intval($limit);
/* ORDER BY $sidx $sord */ /* ORDER BY $sidx $sord */
$sql = "SELECT *, @rownum:=@rownum+1 rank FROM ( $sql = "SELECT *, @rownum:=@rownum+1 rank FROM (
SELECT u.user_id, firstname, lastname, count(username) skills_acquired SELECT u.user_id, firstname, lastname, count(username) skills_acquired
FROM {$this->table} s INNER JOIN {$this->table_skill_rel_user} su ON (s.id = su.skill_id) FROM {$this->table} s INNER JOIN {$this->table_skill_rel_user} su ON (s.id = su.skill_id)
INNER JOIN {$this->table_user} u ON u.user_id = su.user_id, (SELECT @rownum:=0) r INNER JOIN {$this->table_user} u ON u.user_id = su.user_id, (SELECT @rownum:=0) r
WHERE 1=1 $where_condition WHERE 1=1 $where_condition
GROUP BY username GROUP BY username
ORDER BY skills_acquired desc ORDER BY skills_acquired desc
LIMIT $start , $limit) AS T1, (SELECT @rownum:=0) r"; LIMIT $start , $limit) AS T1, (SELECT @rownum:=0) r";
$result = Database::query($sql); $result = Database::query($sql);
if (Database::num_rows($result)) { if (Database::num_rows($result)) {
return Database::store_result($result, 'ASSOC'); return Database::store_result($result, 'ASSOC');
} }
return array(); return array();
} }
function get_user_list_skill_ranking_count() /**
* @return int
*/
public function get_user_list_skill_ranking_count()
{ {
$sql = "SELECT count(*) FROM ( $sql = "SELECT count(*) FROM (
SELECT count(distinct 1) SELECT count(distinct 1)
FROM {$this->table} s INNER JOIN {$this->table_skill_rel_user} su ON (s.id = su.skill_id) FROM {$this->table} s
INNER JOIN {$this->table_user} u ON u.user_id = su.user_id INNER JOIN {$this->table_skill_rel_user} su
ON (s.id = su.skill_id)
INNER JOIN {$this->table_user} u
ON u.user_id = su.user_id
GROUP BY username GROUP BY username
) as T1"; ) as T1";
$result = Database::query($sql); $result = Database::query($sql);
@ -1001,9 +1165,16 @@ class Skill extends Model
return 0; return 0;
} }
function get_count_skills_by_course($course_code) /**
* @param string $course_code
* @return int
*/
public function get_count_skills_by_course($course_code)
{ {
$sql = "SELECT count(skill_id) as count FROM {$this->table_gradebook} g INNER JOIN {$this->table_skill_rel_gradebook} sg ON g.id = sg.gradebook_id $sql = "SELECT count(skill_id) as count
FROM {$this->table_gradebook} g
INNER JOIN {$this->table_skill_rel_gradebook} sg
ON g.id = sg.gradebook_id
WHERE course_code = '$course_code'"; WHERE course_code = '$course_code'";
$result = Database::query($sql); $result = Database::query($sql);
@ -1014,13 +1185,22 @@ class Skill extends Model
return 0; return 0;
} }
/**
* @param int $skill_id
* @return array
*/
function get_courses_by_skill($skill_id) function get_courses_by_skill($skill_id)
{ {
$skill_id = intval($skill_id); $skill_id = intval($skill_id);
$sql = "SELECT c.title, c.code FROM {$this->table_gradebook} g INNER JOIN {$this->table_skill_rel_gradebook} sg ON g.id = sg.gradebook_id $sql = "SELECT c.title, c.code
INNER JOIN {$this->table_course} c ON c.code = g.course_code FROM {$this->table_gradebook} g
WHERE sg.skill_id = $skill_id"; INNER JOIN {$this->table_skill_rel_gradebook} sg
ON g.id = sg.gradebook_id
INNER JOIN {$this->table_course} c
ON c.code = g.course_code
WHERE sg.skill_id = $skill_id";
$result = Database::query($sql); $result = Database::query($sql);
return Database::store_result($result, 'ASSOC'); return Database::store_result($result, 'ASSOC');
} }
@ -1111,16 +1291,25 @@ class Skill extends Model
$list = array(); $list = array();
$sql = "SELECT course.id c_id, course.title c_name, course.directory c_directory, user.user_id, user.lastname, " $sql = "SELECT
. "user.firstname, user.username, skill.id skill_id, skill.name skill_name, sru.acquired_skill_at " course.id c_id,
. "FROM {$this->table_skill_rel_user} AS sru " course.title c_name,
. "INNER JOIN {$this->table_course} " course.directory c_directory,
. "ON sru.course_id = course.id " user.user_id,
. "INNER JOIN {$this->table_user} " user.lastname,
. "ON sru.user_id = user.user_id " user.firstname,
. "INNER JOIN {$this->table} " user.username,
. "ON sru.skill_id = skill.id " skill.id skill_id,
. "WHERE course.id = $courseId"; skill.name skill_name,
sru.acquired_skill_at
FROM {$this->table_skill_rel_user} AS sru
INNER JOIN {$this->table_course}
ON sru.course_id = course.id
INNER JOIN {$this->table_user}
ON sru.user_id = user.user_id
INNER JOIN {$this->table}
ON sru.skill_id = skill.id
WHERE course.id = $courseId";
$result = Database::query($sql); $result = Database::query($sql);
@ -1146,16 +1335,25 @@ class Skill extends Model
$list = array(); $list = array();
$sql = "SELECT course.id c_id, course.title c_name, course.directory c_directory, user.user_id, user.lastname, " $sql = "SELECT
. "user.firstname, user.username, skill.id skill_id, skill.name skill_name, sru.acquired_skill_at " course.id c_id,
. "FROM {$this->table_skill_rel_user} AS sru " course.title c_name,
. "INNER JOIN {$this->table_course} " course.directory c_directory,
. "ON sru.course_id = course.id " user.user_id,
. "INNER JOIN {$this->table_user} " user.lastname,
. "ON sru.user_id = user.user_id " user.firstname,
. "INNER JOIN {$this->table} " user.username,
. "ON sru.skill_id = skill.id " skill.id skill_id,
. "WHERE skill.id = $skillId "; skill.name skill_name,
sru.acquired_skill_at
FROM {$this->table_skill_rel_user} AS sru
INNER JOIN {$this->table_course}
ON sru.course_id = course.id
INNER JOIN {$this->table_user}
ON sru.user_id = user.user_id
INNER JOIN {$this->table}
ON sru.skill_id = skill.id
WHERE skill.id = $skillId ";
$result = Database::query($sql); $result = Database::query($sql);
@ -1165,5 +1363,4 @@ class Skill extends Model
return $list; return $list;
} }
} }

@ -1,12 +1,10 @@
<?php <?php
/* For licensing terms, see /chamilo_license.txt */ /* For licensing terms, see /license.txt */
/** /**
* @package chamilo.social * @package chamilo.social
* @author Julio Montoya <gugli100@gmail.com> * @author Julio Montoya <gugli100@gmail.com>
*/ */
/**
* Initialization
*/
$cidReset = true; $cidReset = true;
require_once '../inc/global.inc.php'; require_once '../inc/global.inc.php';
@ -20,21 +18,23 @@ $interbreadcrumb[] = array("url" => "index.php","name" => get_lang('Skills'));
$url = api_get_path(WEB_AJAX_PATH).'model.ajax.php?a=get_user_skill_ranking'; $url = api_get_path(WEB_AJAX_PATH).'model.ajax.php?a=get_user_skill_ranking';
//The order is important you need to check the the $column variable in the model.ajax.php file //The order is important you need to check the the $column variable in the model.ajax.php file
$columns = array(get_lang('Photo'), $columns = array(
get_lang('Firstname'), get_lang('Photo'),
get_lang('Lastname'), get_lang('Firstname'),
get_lang('SkillsAcquired'), get_lang('Lastname'),
get_lang('CurrentlyLearning'), get_lang('SkillsAcquired'),
get_lang('Rank')); get_lang('CurrentlyLearning'),
get_lang('Rank')
);
$column_model = array( $column_model = array(
array('name'=>'photo', 'index'=>'photo', 'width'=>'10', 'align'=>'center', 'sortable' => 'false'), array('name'=>'photo', 'index'=>'photo', 'width'=>'10', 'align'=>'center', 'sortable' => 'false'),
array('name'=>'firstname', 'index'=>'firstname', 'width'=>'70', 'align'=>'left', 'sortable' => 'false'), array('name'=>'firstname', 'index'=>'firstname', 'width'=>'70', 'align'=>'left', 'sortable' => 'false'),
array('name'=>'lastname', 'index'=>'lastname', 'width'=>'70', 'align'=>'left', 'sortable' => 'false'), array('name'=>'lastname', 'index'=>'lastname', 'width'=>'70', 'align'=>'left', 'sortable' => 'false'),
array('name'=>'skills_acquired', 'index'=>'skills_acquired', 'width'=>'30 ', 'align'=>'left', 'sortable' => 'false'), array('name'=>'skills_acquired', 'index'=>'skills_acquired', 'width'=>'30 ', 'align'=>'left', 'sortable' => 'false'),
array('name'=>'currently_learning', 'index'=>'currently_learning', 'width'=>'30', 'align'=>'left', 'sortable' => 'false'), array('name'=>'currently_learning', 'index'=>'currently_learning', 'width'=>'30', 'align'=>'left', 'sortable' => 'false'),
array('name'=>'rank', 'index'=>'rank', 'width'=>'30', 'align'=>'left', 'sortable' => 'false') array('name'=>'rank', 'index'=>'rank', 'width'=>'30', 'align'=>'left', 'sortable' => 'false')
); );
//Autowidth //Autowidth
$extra_params['autowidth'] = 'true'; $extra_params['autowidth'] = 'true';
@ -45,16 +45,13 @@ $extra_params['height'] = 'auto';
//$extra_params['rowList'] = array(10, 20 ,30); //$extra_params['rowList'] = array(10, 20 ,30);
$jqgrid = Display::grid_js('skill_ranking', $url,$columns,$column_model,$extra_params, array(), $action_links,true); $jqgrid = Display::grid_js('skill_ranking', $url,$columns,$column_model,$extra_params, array(), null, true);
$content = Display::grid_html('skill_ranking'); $content = Display::grid_html('skill_ranking');
$tpl = new Template(get_lang('Ranking'));
$tpl = new Template($tool_name); //$tpl->assign('actions', $actions);
//$tpl->assign('message', $message);
$tpl->assign('actions', $actions);
$tpl->assign('message', $message);
$tpl->assign('jqgrid_html', $jqgrid); $tpl->assign('jqgrid_html', $jqgrid);
$content .= $tpl->fetch('default/skill/skill_ranking.tpl'); $content .= $tpl->fetch('default/skill/skill_ranking.tpl');
$tpl->assign('content', $content); $tpl->assign('content', $content);

Loading…
Cancel
Save