|
@@ -32,7 +32,7 @@ class SkillProfile extends Model
|
|
|
$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');
|
|
|
|
|
|
return $profiles;
|
|
@@ -47,7 +47,11 @@ class SkillProfile extends Model
|
|
|
*/
|
|
|
public function updateProfileInfo($profileId, $name, $description)
|
|
|
{
|
|
|
- $profileId = intval($profileId);
|
|
|
+ $profileId = (int) $profileId;
|
|
|
+
|
|
|
+ if (empty($profileId)) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
|
|
|
$name = Database::escape_string($name);
|
|
|
$description = Database::escape_string($description);
|
|
@@ -720,16 +724,21 @@ class Skill extends Model
|
|
|
|
|
|
/**
|
|
|
* @param $skills
|
|
|
- * @param string $imageSize
|
|
|
+ * @param string $imageSize mini|small|big
|
|
|
* @param string $style
|
|
|
+ * @param bool $showBadge
|
|
|
+ * @param bool $showTitle
|
|
|
+ *
|
|
|
* @return string
|
|
|
*/
|
|
|
- public function processSkillListSimple($skills, $imageSize = '', $style = '')
|
|
|
+ public function processSkillListSimple($skills, $imageSize = '', $style = '', $showBadge = true, $showTitle = true)
|
|
|
{
|
|
|
if (empty($skills)) {
|
|
|
return '';
|
|
|
}
|
|
|
|
|
|
+ $isHierarchicalTable = api_get_configuration_value('table_of_hierarchical_skill_presentation');
|
|
|
+
|
|
|
if (empty($imageSize)) {
|
|
|
$imageSize = 'img_small';
|
|
|
} else {
|
|
@@ -737,30 +746,36 @@ class Skill extends Model
|
|
|
}
|
|
|
|
|
|
$html = '';
|
|
|
- $html .= '<ul class="list-badges">';
|
|
|
foreach ($skills as $skill) {
|
|
|
if (isset($skill['data'])) {
|
|
|
$skill = $skill['data'];
|
|
|
}
|
|
|
- $item = $skill[$imageSize];
|
|
|
|
|
|
- $name = '<div class="caption">'.$skill['name'].'</div>';
|
|
|
+ $item = '';
|
|
|
+ if ($showBadge) {
|
|
|
+ $item = $skill[$imageSize];
|
|
|
+ }
|
|
|
+
|
|
|
+ $name = $skill['name'];
|
|
|
if (!empty($skill['short_code'])) {
|
|
|
$name = $skill['short_code'];
|
|
|
}
|
|
|
- $item .= $name;
|
|
|
+
|
|
|
+ if (!$isHierarchicalTable) {
|
|
|
+ //$item .= '<br />';
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($showTitle) {
|
|
|
+ $item .= $name;
|
|
|
+ }
|
|
|
+
|
|
|
if (isset($skill['url'])) {
|
|
|
- $html .= '<li class="thumbnail">';
|
|
|
$html .= Display::url($item, $skill['url'], ['target' => '_blank', 'style' => $style]);
|
|
|
- $html .= '</li>';
|
|
|
} else {
|
|
|
- $html .= '<li class="thumbnail">';
|
|
|
$html .= Display::url($item, '#', ['target' => '_blank', 'style' => $style]);
|
|
|
- $html .= '</li>';
|
|
|
}
|
|
|
}
|
|
|
- $html .= '</li>';
|
|
|
-
|
|
|
+
|
|
|
return $html;
|
|
|
}
|
|
|
|
|
@@ -1198,13 +1213,19 @@ class Skill extends Model
|
|
|
|
|
|
/**
|
|
|
* @param Vertex $vertex
|
|
|
+ * @param array $skills
|
|
|
+ * @param int $level
|
|
|
+ *
|
|
|
* @return string
|
|
|
*/
|
|
|
- public function processVertex(Vertex $vertex, $skills = [])
|
|
|
+ public function processVertex(Vertex $vertex, $skills = [], $level = 0)
|
|
|
{
|
|
|
+ $isHierarchicalTable = api_get_configuration_value('table_of_hierarchical_skill_presentation');
|
|
|
$subTable = '';
|
|
|
if ($vertex->getVerticesEdgeTo()->count() > 0) {
|
|
|
- $subTable .= '<ul>';
|
|
|
+ if ($isHierarchicalTable) {
|
|
|
+ $subTable .= '<ul>';
|
|
|
+ }
|
|
|
foreach ($vertex->getVerticesEdgeTo() as $subVertex) {
|
|
|
$data = $subVertex->getAttribute('graphviz.data');
|
|
|
$passed = in_array($data['id'], array_keys($skills));
|
|
@@ -1213,21 +1234,40 @@ class Skill extends Model
|
|
|
// @todo use css class
|
|
|
$transparency = 'opacity: 0.4; filter: alpha(opacity=40);';
|
|
|
}
|
|
|
- $label = $this->processSkillListSimple([$data], 'mini', $transparency);
|
|
|
|
|
|
- /*$subTable .= '<div style="float:left; margin-right:5px; ">';
|
|
|
- $subTable .= '<div style="'.$transparency.'">';
|
|
|
- $subTable .= $label;
|
|
|
- $subTable .= '</div>';*/
|
|
|
+ if ($isHierarchicalTable) {
|
|
|
+ $label = $this->processSkillListSimple([$data], 'mini', $transparency);
|
|
|
+ $subTable .= '<li>'.$label;
|
|
|
+ $subTable .= $this->processVertex($subVertex, $skills, $level + 1);
|
|
|
+ $subTable .= '</li>';
|
|
|
+ } else {
|
|
|
+ $imageSize = 'mini';
|
|
|
+ if ($level == 2) {
|
|
|
+ $imageSize = 'small';
|
|
|
+ }
|
|
|
+ $showTitle = true;
|
|
|
+ if ($level > 2) {
|
|
|
+ $showTitle = false;
|
|
|
+ }
|
|
|
|
|
|
- $subTable .= '<li>'.$label;
|
|
|
+ $label = $this->processSkillListSimple([$data], $imageSize, $transparency, true, $showTitle);
|
|
|
+ $subTable .= '<div class="thumbnail" style="float:left; margin-right:5px; ">';
|
|
|
+ $subTable .= '<div style="'.$transparency.'">';
|
|
|
|
|
|
- $subTable .= $this->processVertex($subVertex, $skills);
|
|
|
+ $subTable .= '<div style="text-align: center">';
|
|
|
+ $subTable .= $label;
|
|
|
+ $subTable .= '</div>';
|
|
|
|
|
|
- $subTable .= '</li>';
|
|
|
+
|
|
|
+ $subTable .= '</div>';
|
|
|
+ $subTable .= $this->processVertex($subVertex, $skills, $level + 1);
|
|
|
+ $subTable .= '</div>';
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- $subTable .= '</ul>';
|
|
|
+ if ($isHierarchicalTable) {
|
|
|
+ $subTable .= '</ul>';
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
return $subTable;
|
|
@@ -1284,12 +1324,19 @@ class Skill extends Model
|
|
|
}
|
|
|
$tableRows[] = $tableRow;
|
|
|
}
|
|
|
+
|
|
|
+ $isHierarchicalTable = api_get_configuration_value('table_of_hierarchical_skill_presentation');
|
|
|
$allowLevels = api_get_configuration_value('skill_levels_names');
|
|
|
|
|
|
- $tableResult = '<div class="table-responsive">';
|
|
|
+ if ($isHierarchicalTable) {
|
|
|
+ $tableResult = '<div class="table-responsive">';
|
|
|
+ } else {
|
|
|
+ $tableResult = '<div id="skillList">';
|
|
|
+ }
|
|
|
+
|
|
|
if ($addTitle) {
|
|
|
$tableResult .= '
|
|
|
- <table class="table" >
|
|
|
+ <table class="table">
|
|
|
<thead>
|
|
|
<tr>
|
|
|
<th>'.get_lang('AchievedSkills').'</th>
|
|
@@ -1331,32 +1378,64 @@ class Skill extends Model
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- $table = '<table class ="table table-bordered">';
|
|
|
- // Getting "root" vertex
|
|
|
- $root = $graph->getVertex(1);
|
|
|
- $table .= '<tr>';
|
|
|
- /** @var Vertex $vertex */
|
|
|
- foreach ($root->getVerticesEdgeTo() as $vertex) {
|
|
|
- $data = $vertex->getAttribute('graphviz.data');
|
|
|
-
|
|
|
- $passed = in_array($data['id'], array_keys($skills));
|
|
|
- $transparency = '';
|
|
|
- if ($passed === false) {
|
|
|
- // @todo use a css class
|
|
|
- $transparency = 'opacity: 0.4; filter: alpha(opacity=40);';
|
|
|
+ if ($isHierarchicalTable) {
|
|
|
+ $table = '<table class ="table table-bordered">';
|
|
|
+ // Getting "root" vertex
|
|
|
+ $root = $graph->getVertex(1);
|
|
|
+ $table .= '<tr>';
|
|
|
+ /** @var Vertex $vertex */
|
|
|
+ foreach ($root->getVerticesEdgeTo() as $vertex) {
|
|
|
+ $data = $vertex->getAttribute('graphviz.data');
|
|
|
+
|
|
|
+ $passed = in_array($data['id'], array_keys($skills));
|
|
|
+ $transparency = '';
|
|
|
+ if ($passed === false) {
|
|
|
+ // @todo use a css class
|
|
|
+ $transparency = 'opacity: 0.4; filter: alpha(opacity=40);';
|
|
|
+ }
|
|
|
+
|
|
|
+ $label = $this->processSkillListSimple([$data], 'mini', $transparency);
|
|
|
+ $table .= '<td >';
|
|
|
+
|
|
|
+ $table .= '<div class="skills_chart"> <ul><li>'.$label;
|
|
|
+ $table .= $this->processVertex($vertex, $skills);
|
|
|
+ $table .= '</ul></li></div>';
|
|
|
+ $table .= '</td>';
|
|
|
}
|
|
|
+ $table .= '</tr></table>';
|
|
|
+ } else {
|
|
|
+ // Getting "root" vertex
|
|
|
+ $root = $graph->getVertex(1);
|
|
|
+ $table = '';
|
|
|
+ /** @var Vertex $vertex */
|
|
|
+ foreach ($root->getVerticesEdgeTo() as $vertex) {
|
|
|
+ $data = $vertex->getAttribute('graphviz.data');
|
|
|
+
|
|
|
+ $passed = in_array($data['id'], array_keys($skills));
|
|
|
+ $transparency = '';
|
|
|
+ if ($passed === false) {
|
|
|
+ // @todo use a css class
|
|
|
+ $transparency = 'opacity: 0.4; filter: alpha(opacity=40);';
|
|
|
+ }
|
|
|
|
|
|
- $label = $this->processSkillListSimple([$data], 'mini', $transparency);
|
|
|
+ $label = $this->processSkillListSimple([$data], 'mini', $transparency, false);
|
|
|
|
|
|
- $table .= '<td >';
|
|
|
+ $skillTable = $this->processVertex($vertex, $skills, 2);
|
|
|
+ $table .= "<h3>$label</h3>";
|
|
|
|
|
|
- //$table .= '<div style="'.$transparency.'">';
|
|
|
- $table .= '<div class="skills_chart"> <ul><li>'.$label;
|
|
|
- $table .= $this->processVertex($vertex, $skills);
|
|
|
- $table .= '</ul></li></div>';
|
|
|
- $table .= '</td>';
|
|
|
+ if (!empty($skillTable)) {
|
|
|
+ $table .= '<table class ="table table-bordered">';
|
|
|
+ $table .= '<tr>';
|
|
|
+ $table .= '<td>';
|
|
|
+ $table .= '<div>';
|
|
|
+ $table .= $skillTable;
|
|
|
+ $table .= '</div>';
|
|
|
+ $table .= '</td>';
|
|
|
+ $table .= '</tr></table>';
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- $table .= '</tr></table>';
|
|
|
+
|
|
|
$tableResult .= $table;
|
|
|
}
|
|
|
} else {
|
|
@@ -1372,7 +1451,6 @@ class Skill extends Model
|
|
|
}
|
|
|
$tableResult .= '</div>';
|
|
|
|
|
|
-
|
|
|
return [
|
|
|
'skills' => $tableRows,
|
|
|
'table' => $tableResult,
|