<?
function MEMBER($options=array())
{
  if (isset($_SESSION['member'])){return($_SESSION['member']);}
  else {$_SESSION['member']=new i_account($options);return($_SESSION['member']);}
}

class i_account
{
   public $id ;    // идентификатор пользователя по БД (если он внесен в БД)
   public $name ;  // имя владельца аккаунта или название оргазинации + имя лица
   public $contact_name ; // имя контактного лица
   public $login ;
   public $reffer ; // идентификатор в формате сслыки
   public $parent ; // раздел, в котором находиться аккаунт пользователя
   public $login_id ;  // код записи по входу клиента в систему в журнале статистики входов
   public $login_time ; // время входа клиента в систему
   public $info ; // информация по клиенту
   public $partner_uid ;
   public $dop_info ;
   public $use_system ;
   public $cur_group_id;
   public $cur_groups_visible;
   public $timezone;
   public $setting=array();
   public $rol;
   public $working;
   public $use_auch_as_smena;
   public $smena_monopole_mode;
   public $_smena_status;
   public $certificate;
   public $cryptopro;
   public $_smena_in;
   public $_smena_out;
   public $personal_viewer_name='view_personals_active';
public $viewer_name = '';

 function __construct($rec=array(),$options=array())
 {  $this->read_cookies() ;
    $this->update_info($rec) ;
    $this->login_time=0 ;
 }

 function read_cookies()
 { //echo 'read_cookies<br>';
   if ($_COOKIE["puid"] and !$this->partner_uid) $this->partner_uid=$_COOKIE["puid"] ;
 }

 // обновляем инфу
 function update_info($rec=array())
 {   if (!_sizeof($rec) and $this->id) $rec=ACCOUNTS()->get_account_by_id($this->id,['get_right'=>1]) ;
     if (!_sizeof($rec)) return ;
     $this->update_member_info($rec) ;
 }

 function update_member_info($rec)
 {   //trace() ;
   $this->info=$rec ;
   $this->id=$rec['pkey'] ;
   $this->reffer=$rec['_reffer'];
   $this->parent=$rec['parent'] ;
   $this->login=$rec['login'] ;
   $this->name=$rec['obj_name'];

   $group_setting=array() ; $rec_group=[] ;
   if ($this->cur_group_id and isset(ACCOUNTS()->tree[$this->cur_group_id]))
   { $this->cur_groups_visible=ACCOUNTS()->tree[$this->cur_group_id]->get_list_child() ;
     $rec_group=ACCOUNTS()->get_group_by_id(MEMBER()->cur_group_id) ;
     $group_setting=$rec_group['_ext_info'] ;
   }
   //damp_array($group_setting) ;
   $this->timezone=($group_setting['timezone'])? $group_setting['timezone']:'Europe/Moscow' ;
   date_default_timezone_set($this->timezone) ;
   //LOGS()->reg_log('timezone','clss:210->update_member_info - '.$this->timezone.' ['.date('d.m.Y H:i:s').'] '._CUR_PAGE_DIR) ;


   // получаем вьювер по сотрудникам, которые доступны текущему аккаунту
   // привязка организаций группам теперь работает только для фильтра в отчетам
   // для настройки области видимости сотрудников аккаунта необходимо настроить фильтры по персоналу либо будут использованы настройки группы
   // в которой авторизуется аккаунт
   //ob_start() ; trace(); $text=ob_get_clean() ; LOGS()->reg_log('debug_trace','',['save_to_file'=>$text]) ;

   $this->personal_viewer_name=$this->viewer_name ;
   if (!$this->personal_viewer_name) $this->personal_viewer_name=PERSONALS_FILTER()->get_personals_viewer_name_to_item($rec['_reffer']) ;
   if (!$this->personal_viewer_name)
   {   if ($rec_group['pkey']) $this->personal_viewer_name=PERSONALS_FILTER()->get_personals_viewer_name_to_item($rec_group['_reffer']) ;
       else $this->personal_viewer_name='view_personals_active' ;
   }
   if (!$this->personal_viewer_name) $this->personal_viewer_name='view_personals_active' ;
   //$rec['viewer_name'] ;

   // aspmo
   $this->rol=$rec['rol'];
   $this->working=$rec['_rol_name'];
   $this->use_auch_as_smena=$_SESSION['ARR_roll'][$rec['rol']]['use_auch_as_smena']   ;
   $this->smena_monopole_mode=$_SESSION['ARR_roll'][$rec['rol']]['smena_monopole_mode']   ;
   $this->autologout=$_SESSION['ARR_roll'][$rec['rol']]['autologout']   ;

   //$this->right=$rec['_right'] ;

   if ($rec['smena_in']) $this->_smena_in=date('d.m.Y H:i',$rec['smena_in']) ;
   if ($rec['smena_out']) $this->_smena_out=date('d.m.Y H:i',$rec['smena_out']) ;
   $this->_smena_status=$_SESSION['ARR_smena_status'][$rec['smena']] ;

   $this->certificate=$rec['_ext_info']['certificate'] ;
   $this->cryptopro=$rec['_ext_info']['cryptopro'] ;
   /// временно для совместимости данных
   if (!$this->certificate['SerialNumber'] and $rec['sert_id']) $this->certificate['SerialNumber']=$rec['sert_id'] ;
   if (!$this->certificate['SubjectName'] and $rec['sert_name']) $this->certificate['SubjectName']=$rec['sert_name'] ;
   if (!$this->certificate['IssuerName'] and $rec['sert_ud']) $this->certificate['IssuerName']=$rec['sert_ud'] ;
   if (!$this->certificate['ValidFromDate'] and $rec['sert_from']) $this->certificate['ValidFromDate']=date('d.m.Y H:i:s',$rec['sert_from']) ;
   if (!$this->certificate['ValidToDate'] and $rec['sert_to']) $this->certificate['ValidToDate']=date('d.m.Y H:i:s',$rec['sert_to']) ;

   //damp_array($this,1,-1) ;
}

    function on_change_event($tkey,$pkey,$fname,&$fvalue)
       {   // при сохранении пароля переводим его в хеш
           if ($fname=='password')
           {
               $login=execSQL_value('select login from '._DOT($tkey)->table_name.' where pkey='.$pkey) ;
               $fvalue=ACCOUNTS()->get_pass_hash($login,$fvalue) ;

           }
           //return parent::on_change_event($tkey,$pkey,$fname,$fvalue); // TODO: Change the autogenerated stub
       }


}
?>
