Adding search profile (skills) form see #1791

skala
Julio Montoya 14 years ago
parent f97ca0b0ee
commit db7616e73f
  1. 151
      main/admin/skills_profile.php
  2. 22
      main/inc/lib/skill.lib.php
  3. 66
      main/template/default/skill/profile.tpl

@ -0,0 +1,151 @@
<?php
/* For licensing terms, see /license.txt */
/**
* @package chamilo.admin
*/
// Language files that need to be included.
$language_file = array('admin');
$cidReset = true;
require_once '../inc/global.inc.php';
require_once api_get_path(LIBRARY_PATH).'skill.lib.php';
$this_section = SECTION_PLATFORM_ADMIN;
//api_protect_admin_script();
$htmlHeadXtra[] = '<script src="'.api_get_path(WEB_LIBRARY_PATH).'javascript/tag/jquery.fcbkcomplete.js" type="text/javascript" language="javascript"></script>';
$htmlHeadXtra[] = '<link href="'.api_get_path(WEB_LIBRARY_PATH).'javascript/tag/style.css" rel="stylesheet" type="text/css" />';
$htmlHeadXtra[] = api_get_jquery_ui_js();
$skill = new Skill();
$skill_profile = new SkillProfile();
$skill_rel_user = new SkillRelUser();
$url = api_get_path(WEB_AJAX_PATH).'skill.ajax.php';
$tpl = new Template();
$form = new FormValidator('profile_search');
$form->addElement('select', 'skills', null, null, array('id'=>'skills'));
$form->addElement('style_submit_button', 'submit', get_lang('Search'), 'class="a_button blue "');
$total_skills_to_search = array();
if ($form->validate()) {
$values = $form->getSubmitValues();
$skills = $values['skills'];
if (!empty($skills)) {
$hidden_skills = isset($values['hidden_skills']) ? $values['hidden_skills'] : array();
$skills = array_merge($skills, $hidden_skills);
$skills = array_filter($skills);
$skills = array_unique($skills);
$_SESSION['skills'] = $skills;
} else {
$skills = isset($_SESSION['skills']) ? $_SESSION['skills']: null ;
}
} else {
$skills = isset($_SESSION['skills']) ? $_SESSION['skills']: null ;
}
$user_list = array();
$count_skills = count($skills);
$users = $skill_rel_user->get_user_by_skills($skills);
if (!empty($users)) {
foreach($users as $user) {
$user_info = api_get_user_info($user['user_id']);
$user_list[$user['user_id']]['user'] = $user_info;
$my_user_skills = $skill_rel_user->get_user_skills($user['user_id']);
$user_skills = array();
$found_counts = 0 ;
foreach($my_user_skills as $my_skill) {
$found = false;
if (in_array($my_skill['skill_id'], $skills)) {
$found = true;
$found_counts++;
}
$user_skills[] = array('skill_id' => $my_skill['skill_id'], 'found' => $found);
$total_skills_to_search[$my_skill['skill_id']] = $my_skill['skill_id'];
}
$user_list[$user['user_id']]['skills'] = $user_skills;
$user_list[$user['user_id']]['total_found_skills'] = $found_counts;
}
$ordered_user_list = array();
foreach($user_list as $user_id => $user_data) {
$ordered_user_list[$user_data['total_found_skills']][] = $user_data;
}
//sort($ordered_user_list);
var_dump($ordered_user_list);
}
//var_dump($user_list);
$tpl->assign('user_list', $user_list);
$tpl->assign('total_search_skills', $count_skills);
$action = isset($_REQUEST['a']) ? $_REQUEST['a'] : null;
$id = isset($_REQUEST['id']) ? intval($_REQUEST['id']) : null;
switch ($action) {
case 'remove_skill':
$new_skill = array();
foreach($skills as $skill_id) {
if ($id != $skill_id) {
$new_skill[] = $skill_id;
}
}
$skills = $_SESSION['skills'] = $new_skill;
break;
case 'save_profile':
break;
}
if (!empty($skills)) {
$counter = 0;
foreach($skills as $hidden_skill_id) {
$form->addElement('hidden', 'hidden_skills[]', $hidden_skill_id);
$counter++;
}
}
if (!empty($skills)) {
foreach($skills as $my_skill) {
$total_skills_to_search[$my_skill] = $my_skill;
}
}
$total_skills_to_search = $skill->get_skills_info($total_skills_to_search);
$skill_list = array();
foreach($total_skills_to_search as &$skill_info) {
$skill_list[$skill_info['id']] = $skill_info;
}
$tpl->assign('skill_list', $skill_list);
$tpl->assign('search_skill_list', $skills);
$form_to_html = $form->return_form();
//var_dump($total_skills_to_search);
$tpl->assign('form', $form_to_html);
$tpl->assign('url', $url);
$content = $tpl->fetch('default/skill/profile.tpl');
$tpl->assign('content', $content);
$tpl->display_one_col_template();

@ -202,9 +202,9 @@ class SkillRelUser extends Model {
public function get_user_by_skills($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);
$users = Database::store_result($result, 'ASSOC');
@ -235,8 +235,8 @@ class Skill extends Model {
$skill_rel_skill = new SkillRelSkill();
$skill_info = $this->get($id);
if (!empty($skill_info)) {
$skill_info['extra'] = $skill_rel_skill->get_skill_info($id);
$skill_info['gradebooks'] = self::get_gradebooks_by_skill($id);
$skill_info['extra'] = $skill_rel_skill->get_skill_info($id);
$skill_info['gradebooks'] = self::get_gradebooks_by_skill($id);
}
return $skill_info;
}
@ -244,7 +244,19 @@ class Skill extends Model {
public function skill_exists($skill_id) {
}
function get_skills_info($skill_list) {
$skill_list = array_map('intval', $skill_list);
$skill_list = implode("', '", $skill_list);
$sql = "SELECT * FROM {$this->table} WHERE id IN ('$skill_list') ";
$result = Database::query($sql);
$users = Database::store_result($result, 'ASSOC');
return $users;
}
function get_all($load_user_data = false) {
$sql = "SELECT id, name, description, parent_id, relation_type
FROM {$this->table} skill INNER JOIN {$this->table_skill_rel_skill} skill_rel_skill

@ -55,27 +55,53 @@ function checkLength( o, n, min, max ) {
</script>
{$form}
{foreach $user_list as $user}
<div class="ui-widget">
<div class="ui-widget-header">
{$user['user'].username}
</div>
<div class="ui-widget-content">
{$user['user'].firstname}
{$user['user'].lastname}
<h3>Skills</h3>
<ul>
{foreach $user['skills'] as $skill}
<li>{$skill.skill_id} </li>
{if !empty($search_skill_list) }
<ul class="holder">
{foreach $search_skill_list as $search_skill_id}
<li class="bit-box">
{$skill_list[$search_skill_id].name}
<a class="closebutton" href="?a=remove_skill&id={$search_skill_id}"></a>
</li>
{/foreach}
</ul>
</div>
</div>
{/foreach}
</ul>
<a class="a_button gray small" href="?a=save_profile"> {"SaveThisSearch"|get_lang}</a>
{/if}
{if !empty($user_list) }
{foreach $user_list as $user}
<div class="ui-widget">
<div class="ui-widget-header">
{$user['user'].username}
</div>
<div class="ui-widget-content ">
<img src="{$user['user'].avatar_small}" />
{$user['user'].complete_name}
<h3>Skills</h3>
<ul>
{$user.total_found_skills} / {$total_search_skills}
{foreach $user['skills'] as $skill_data}
<li>
<span class="label_tag notice">{$skill_list[$skill_data.skill_id].name}</span>
{if $skill_data.found}
* I have this skill *
{/if}
</li>
{/foreach}
</ul>
</div>
</div>
{/foreach}
{else}
{"No results"|get_lang}
{/if}
<div id="dialog-form" style="display:none;">
<form id="add_item" name="form">

Loading…
Cancel
Save