} $file = array('name' => $name, 'size' => $info[7], 'mdate' => $info[9], 'cdate' => $info[10], 'nicesize' => filesize_format($info[7]), 'nicemdate' => date($time_format, $info[9]), 'nicecdate' => date($time_format, $info[10]), 'comment' => $comment, 'type' => filetype("{$file}")); if ($file[type] == "dir" || $file[type] == 'link') { $dirs[] = $file; } else { $files[] = $file; } } if ($dirs[0]) { array_key_multi_sort($dirs, strtolower($sort)); if ($desc) { $dirs = array_reverse($dirs); } } if ($files[0]) { array_key_multi_sort($files, strtolower($sort)); if ($desc) { $files = array_reverse($files); } } $dirlist = ""; if ($dir) { $dirlist .= "<option value=\"{$dir}/../\">..</option>"; } if ($dirs[0]) { foreach ($dirs as $thisdir) { $dirlist .= "<option value=\"{$dir}/{$thisdir['name']}\">{$thisdir['name']}</option>"; } } #if ($dirlist) { $dirlist = "<option selected value=''>Move to...</option>$dirlist"; } $list = array_merge($dirs, $files);
function assessAndRank($initialCandidates, $reqs) { /** * Core function of the system. Assessess and ranks the initial candidates * according to the requirements. */ global $debugar, $token; $owaWeights = NULL; $out = array(); //echo 'REQS: <pre>'.print_r($reqs, TRUE).'</pre>'; foreach ($initialCandidates as $cand) { //echo 'AQUII cand:<pre>'.print_r($cand, true).'</pre>'; $profile = $cand['profile']; $assessments = array(); // Skills foreach ($reqs['skills'] as $reqSkill) { $assessment = assessSkill($profile, $reqSkill); $assessments[] = $assessment; if ($debugar) { echo 'Candidate ' . $cand['username'] . '. Assessment for required skill ' . $reqSkill['id'] . '-' . $reqSkill['level'] . ': ' . $assessment . '<br />'; } } // Subskills if (array_key_exists(STRING_SUBSKILLS, $reqs)) { foreach ($reqs[STRING_SUBSKILLS] as $reqSkill) { //echo '<pre>'.print_r($reqSkill).'</pre>'; $assessment = assessQualification($profile, $reqSkill); $assessments[] = $assessment; if ($debugar) { echo 'Candidate ' . $cand['username'] . '. Assessment for required subskill ' . $reqSkill['id'] . '-' . $reqSkill['level'] . ': ' . $assessment . '<br />'; } } } // Proximity $assessment = assessProximity($profile, $reqs['proximity']); if ($assessment != -1) { $assessments[] = $assessment; if ($debugar) { echo 'Candidate ' . $cand['username'] . '. Assessment for proximity: ' . $assessment . '<br />'; } } // Availability $assessment = assessAvailability($profile, $reqs['availability']); $assessments[] = $assessment; if ($debugar) { echo 'Candidate ' . $cand['username'] . '. Assessment for availability: ' . $assessment . '<br />'; } if ($owaWeights == NULL) { $owaWeights = getOWAWeights(count($assessments)); if ($debugar) { echo 'OWA weights (' . count($assessments) . '):<pre>' . print_r($owaWeights, TRUE) . '</pre>'; } } if ($debugar) { echo 'Assessments for candidate <strong>' . $cand['username'] . '</strong>: ' . print_r($assessments, TRUE) . '<br />'; } $cand['assessments'] = $assessments; $cand['assess'] = round(aggregateValues($assessments, $owaWeights) * 10000, 0) / 10000; // Random assessment // $cand['assess'] = round(mt_rand() / mt_getrandmax() * 10000, 0) / 10000; $out[] = $cand; } // Sorting by assessment $out = array_key_multi_sort($out, 'assess'); return $out; }