2012-02-02 17:29:14 +00:00
|
|
|
<?php
|
|
|
|
class Object_Naf extends Libs_Row
|
|
|
|
{
|
|
|
|
public function naf($niveau, $key)
|
|
|
|
{
|
|
|
|
require_once 'Scores/SessionCiblage.php';
|
|
|
|
$sessionCiblage = new SessionCiblage();
|
|
|
|
$val = $sessionCiblage->getCritere($key);
|
|
|
|
$valuesChecked = array();
|
|
|
|
$valuesUndetermined = array();
|
|
|
|
if ($val != null){
|
|
|
|
$valuesChecked = explode(',',$val);
|
|
|
|
foreach($valuesChecked as $value){
|
|
|
|
$valuesUndetermined = array_merge($valuesUndetermined, $this->getNafParent($value, true));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$nafM = new Table_Nafs();
|
|
|
|
$sql = $nafM->select()->where('niveau = ?', $niveau)->order('code ASC');
|
|
|
|
|
|
|
|
$result = $nafM->fetchAll($sql)->toArray();
|
|
|
|
$tabNaf = array();
|
|
|
|
foreach($result as $item)
|
|
|
|
{
|
|
|
|
$structure = array(
|
|
|
|
'data' => $item['code'].' - '.$item['lib'],
|
|
|
|
'attr' => array('id' => $item['code'], 'niveau' => $item['niveau']),
|
|
|
|
'state' => 'closed',
|
|
|
|
'children' => array(),
|
|
|
|
);
|
|
|
|
if (in_array($item['code'], $valuesChecked)){
|
|
|
|
$structure['attr']['class'] = 'jstree-checked';
|
|
|
|
}
|
|
|
|
if (in_array($item['code'], $valuesUndetermined)){
|
|
|
|
$structure['attr']['class'] = 'jstree-undetermined';
|
|
|
|
}
|
|
|
|
$tabNaf[] = $structure;
|
|
|
|
}
|
2012-02-15 09:25:21 +00:00
|
|
|
return json_encode($tabNaf);
|
2012-02-02 17:29:14 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
protected function getNafParent($value, $niveau1 = false)
|
|
|
|
{
|
|
|
|
$out = array();
|
|
|
|
if (strlen($value)>2) {
|
|
|
|
$niveau = strlen($value)-1;
|
|
|
|
$new = substr($value,0,$niveau);
|
|
|
|
$out = array_merge($out, array($new), $this->getNafParent($new, $niveau1));
|
|
|
|
} elseif (strlen($value)==2 && $niveau1 === true) {
|
2012-02-15 09:25:21 +00:00
|
|
|
$nafM = new Table_Nafs();
|
2012-02-02 17:29:14 +00:00
|
|
|
$sql = $nafM->select()
|
|
|
|
->from($nafM, array('parent'))
|
|
|
|
->where('code = ?', $value);
|
|
|
|
$result = $nafM->fetchRow($sql);
|
|
|
|
$out[] = $result->parent;
|
|
|
|
}
|
|
|
|
return $out;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function ajax($parent, $niveau, $key)
|
|
|
|
{
|
|
|
|
//Récupération des valeurs enregistrées en session
|
|
|
|
require_once 'Scores/SessionCiblage.php';
|
|
|
|
$sessionCiblage = new SessionCiblage();
|
|
|
|
$val = $sessionCiblage->getCritere($key);
|
|
|
|
$valuesChecked = array();
|
|
|
|
|
|
|
|
$valuesUndetermined = array();
|
|
|
|
if ($val != null){
|
|
|
|
$valuesChecked = explode(',',$val);
|
|
|
|
foreach($valuesChecked as $value){
|
|
|
|
$valuesUndetermined = array_merge($valuesUndetermined, $this->getNafParent($value));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
$niveau++;
|
|
|
|
$nafM = new Table_Nafs();
|
|
|
|
$sql = $nafM->select();
|
|
|
|
if (!empty($parent) && $niveau==2) {
|
|
|
|
$sql->where('parent = ?', $parent);
|
|
|
|
} elseif (!empty($parent) && $niveau>2) {
|
|
|
|
$sql->where("code LIKE '".$parent."%'");
|
|
|
|
}
|
|
|
|
$sql->where('niveau = ?', $niveau)->order('code ASC');
|
|
|
|
|
|
|
|
$result = $nafM->fetchAll($sql)->toArray();
|
|
|
|
$tabNaf = array();
|
|
|
|
foreach($result as $item){
|
|
|
|
$structure = array(
|
|
|
|
'data' => $item['code'].' - '.$item['lib'],
|
|
|
|
'attr' => array('id' => $item['code'], 'niveau' => $item['niveau']),
|
|
|
|
);
|
|
|
|
if (in_array($item['code'], $valuesChecked)){
|
|
|
|
$structure['attr']['class'] = 'jstree-checked';
|
|
|
|
}
|
|
|
|
if (in_array($item['code'], $valuesUndetermined)){
|
|
|
|
$structure['attr']['class'] = 'jstree-undetermined';
|
|
|
|
}
|
|
|
|
if ($niveau<5){
|
|
|
|
$structure['state'] = 'closed';
|
|
|
|
$structure['children'] = array();
|
|
|
|
}
|
|
|
|
$tabNaf[] = $structure;
|
|
|
|
}
|
2012-02-15 09:25:21 +00:00
|
|
|
return json_encode($tabNaf);
|
2012-02-02 17:29:14 +00:00
|
|
|
}
|
|
|
|
}
|