<?php
// новый вариант, где данные по дереву используюся из poll_tree
include_once(_DIR_EXT.'/HTML/c_page_JSON.php');
class c_services_poll_tree extends c_page_JSON
{
    public $tree_root=0 ; // с какого раздела будет раскрываться дерево каталога, 0 - будет показан корневой элемент, 1 - будут показываны сразу разделы второго уровня

    function block_main()
    { if($_GET['id']=='#') $id=$this->tree_root ;
		  else list($id,$tkey)=explode('_',$_GET['id']); // tkey не важен, он будет разных таблиц

		    $rec_node=execSQL_van('select * from view_poll_tree where pkey='.$id) ;
				$recs_childs=execSQL('select * from view_poll_tree where parent='.$id);

				// для исключения элементов, которые не надо показывать в дереве добавить условие not i_clss in (....)
			  $_usl=[] ;
			  $_usl[]='parent in ('.implode(',',array_keys($recs_childs)).')' ;
			  //$_usl[]='not i_clss in (574)' ;
			  $usl=implode(' and ',$_usl) ;

			  $cnt_childs=execSQL_row('select parent,count(pkey) as cnt
  										   		 	   from poll_tree 
  											 		     where '.$usl.'
  											 		 		 group by parent',0,1) ;

        $res=array();
        if(_sizeof($recs_childs)) foreach($recs_childs as $rec)
        {
            $has_children=($cnt_childs[$rec['pkey']])? true:false;
            $perent_uid=($rec['parent']==$this->tree_root)? '#':$rec_node['pkey'].'_'.$rec_node['tkey'];
            $type='clss_'.$rec['clss'];
            $uid=$rec['pkey'].'_'.$rec['tkey'];
            $res[]=array('id'=>$uid,
                         //'reffer'=>$rec['_reffer'],
                         'reffer'=>$rec['pkey'].'.'.$rec['tkey'], // в reffer передаем reffer объекта дерева
                         'text'=>$rec['obj_name'],
                         'parent'=>$perent_uid,
                         'type'=>$type,
                         'children'=>$has_children,
                         'state'=>array('opened'=>false,'selected'=>false));
        }

        return ($res);
    }

}
