<?
include_once('clss_0.php') ;
class clss_100 extends clss_0
{

 function show_list_items($table_id,$usl,$options=array())
 { // не годится - объекты разных классов выводятся общим списком, получается путаница
   //parent::show_list_items($table_id,$usl,array('buttons'=>array('save',array('title'=>'Удалить ССЫЛКУ','cmd'=>'delete_check_objs')))) ;
   //$options['debug']=1 ;
   $arr_clss_id=$this->get_arr_clss_of_reffer_objs($table_id,$usl,$options) ; // получаем массив id записей класса 100, которые объединены по классам Reffer

   if (_sizeof($arr_clss_id))
   { foreach($arr_clss_id as $clss=>$str_pkeys)
    { $options['title']='Ссылки на '._CLSS($clss)->name  ;
      $options['buttons']=array('save','delete'=>array('title'=>'Удалить ССЫЛКУ','cmd'=>'delete_check_objs','data-confirm'=>"Вы действительно хотите удалить выбранные объекты?"))  ;
      parent::show_list_items($table_id,'pkey in ('.$str_pkeys.')',$options) ;
    }
   }
 }

 function get_arr_clss_of_reffer_objs($table_id,$usl,$options=array())
 {  if (isset($_SESSION['pkey_by_table'][$table_id])) $table_id=$_SESSION['pkey_by_table'][$table_id] ;
    $ref_recs=array() ;  $arr5=array() ;
    $list_recs=execSQL_row('select reffer,pkey from '._DOT($table_id)->table_name.' where '.$usl,$options) ; //damp_array($list_recs) ;
    if (_sizeof($list_recs))
      { $_pkeys=array() ;
        foreach ($list_recs as $reffer=>$id)
        { list($ref_pkey,$ref_tkey)=explode('.',$reffer) ;
          if ($ref_tkey) $_pkeys[$ref_tkey][]=$ref_pkey ;
        }
        if (_sizeof($_pkeys)) foreach ($_pkeys as $ref_tkey=>$arr_pkey) if (_sizeof($arr_pkey)) $ref_recs[$ref_tkey]=implode(',',$arr_pkey) ;
      }
    //damp_array($ref_recs) ;
    if (_sizeof($ref_recs)) foreach($ref_recs as $tkey=>$ids)
    { $arr_clss=execSQL_row('select pkey as id,clss from '._DOT($tkey)->table_name.' where pkey in ('.$ids.')',$options) ;
      if (_sizeof($arr_clss))
      { $arr2=array() ;
        foreach($arr_clss as $pkey=>$clss) $arr2[$clss][]=$pkey ; // в одной таблице сожет быть несколько объектов разеных классов
        //damp_array($arr2,1,-1) ;
        if (_sizeof($arr2)) foreach($arr2 as $clss=>$arr3)
        { $arr4=array() ;
          if (_sizeof($arr3)) foreach($arr3 as $pkey) $arr4[]=$list_recs[$pkey.'.'.$tkey] ; //damp_array($arr4) ;
          $arr5[$clss]=implode(',',$arr4) ;
        }
      }
    }
    //damp_array($arr5) ;
    return($arr5) ; // получаем в итоге массив id записей класса 100, которые объединены обзем классом - темерь можно выводить
 }

 // свойства объекта-ссылки
 function show_props($obj_info,$options=array()) // необходимо показать объект функцией того класса, к которому принадлежит объект
  { if ($obj_info['_reffer'])
    {   list($pkey,$tkey)=explode('.',$obj_info['_reffer']) ;
        $ref_info=select_db_obj_info($tkey,$pkey,array('no_child_obj'=>1)) ;
	    if ($ref_info['pkey'])  _CLSS($ref_info['clss'])->show_props($ref_info,$options) ;
	    else echo 'Объект не существует' ;
	}  else echo 'Ссылка не определена' ;
	?><br><br>Создана:<?echo generate_field_text($obj_info,'c_data') ;?>&nbsp;&nbsp;&nbsp;Изменена: <?echo generate_field_text($obj_info,'r_data')?><?
  }

}

?>
