ACC SHELL

Path : /srv/www/vhosts/profias/inc/admin/
File Upload :
Current File : /srv/www/vhosts/profias/inc/admin/reference.php

<?php

  class Reference extends AdminItem
  {
    var $fTable; // cizi tabulka
    var $fAlias; // alias cizi tabulky
    var $fAliasC; // alias cizi tabulky
    var $fField; // atribut v cizi tabulce
    var $fKey; // klic v cizi tabulce
    var $order; // strizeni hodnot v cizi tabulce
    var $ajax; 
    var $join;
    var $trans; // aliasy pro hodnoty
    var $where;
    
    function Reference($args)
    {
      $this->setBasicParametres($args);
      
      if (TRUE==isset($args['ffield']))
      {
        $this->fField=addslashes($args['ffield']);
      }
      else
      {
        die('Class Multireference error: no ffield specified.');
      }
      
      if (TRUE==isset($args['ftable']))
      {
        $this->fTable=addslashes($args['ftable']);
      }
      else
      {
        die('Class Multireference error: no ftable specified.');
      }

      if (TRUE==isset($args['alias']))
      {
        $this->fAlias=addslashes($args['alias']);
        $this->fAliasC=addslashes($args['alias']);
      }
      else
      {
        $this->fAlias=$this->fTable;
        $this->fAliasC=$this->fTable;
      }

      if (TRUE==isset($args['falias']))
      {
        $this->fAliasC=addslashes($args['falias']);
      }

      
      if (TRUE==isset($args['fkey']))
      {
        $this->fKey=addslashes($args['fkey']);
      }
      else
      {
        die('Class Multireference error: no fkey specified.');
      }
      
      
      if (TRUE==isset($args['where']))
      {
        $this->where=$args['where'];
      }
      else
      {
        $this->where='';
      }      

      if (TRUE==isset($args['trans']))
      {
        $this->trans=$args['trans'];
      }
      else
      {
        $this->trans='';
      }  
      
      if (TRUE==isset($args['order']))
      {
        $this->order=$args['order'];
      }
      else
      {
        $this->order='';
      }      

      if (TRUE==isset($args['data']))
      {
        $this->data=$args['data'];
      }

      if (TRUE==isset($args['ajax']))
      {
        $this->ajax=$args['ajax'];
      }
      
      if (TRUE==isset($args['join']))
      {
        $this->join=$args['join'];
      }
      else
      {
        $this->join='';
      }
     
    }
  
  

  function select($admin)
  {
      $result=array(
        'fields'=>$admin->table.'s.'.$this->field.' AS '.$this->formName,
        'from'=>' LEFT JOIN '.$this->fTable.' AS '.$this->fAlias.' ON ('.$this->fAlias.'.'.$this->fKey.'='.$admin->table.'s.'.$this->field.')',
        'where'=> ' AND '.$this->fTable.'.'.$this->fField.' IS NOT NULL',
      );
      
      return $result;
  }

  
    function getList($admin)
    {
    
      $result=array(
        'fields'=>$this->fAliasC.'.'.$this->fField.' AS '.$this->formName,
        'from'=>' LEFT JOIN '.$this->fTable.' AS '.$this->fAlias.' ON ('.$this->fAlias.'.'.$this->fKey.'='.$admin->table.'s.'.$this->field.')',
        'where'=> ' AND '.$this->fTable.'.'.$this->fField.' IS NOT NULL',      
      );
      
      return $result;
    }

  


    
    function getFormParams(&$admin, &$form)
    {
      $db=$GLOBALS['db'];
    
      if (TRUE==isset($this->ajax['fKey']))
      {
        $add_keys=', '.$this->fAlias.'.'.$this->ajax['fKey'].' AS ajax_fkey, '.$this->fAlias.'.'.$this->ajax['key'].' AS ajax_key';
      }
      else
      {
        $add_keys='';
      }
    
      
    
    
      // sestavi seznam dostupnych hodnot
      $data=$db->select(
        $this->fAliasC.'.'.$this->fField.', '.$this->fAlias.'.'.$this->fKey.$add_keys,
        $this->fTable.' AS '.$this->fAlias.$this->join,
        '1'.$this->where,
        '',
        $this->order
      );
    
    
      if (TRUE==isset($this->ajax['fKey']))
      {
          $tmp=array();
          for ($i=0; $i<count($data); $i++)
          {
            if (TRUE==trim($data[$i][$this->fField]))
            {
              $tmp[$data[$i]['ajax_fkey']][]=$data[$i]['ajax_key'].'%%%'.$data[$i][$this->fField];
            }
          }
          //print_r($tmp);
          
          $this->ajax['value']='';
          $keys=@array_keys($tmp);
          for ($i=0; $i<count($keys); $i++)
          {
            if (TRUE==$keys[$i])
            {
              $this->ajax['value'].=$separator.$keys[$i].'$$$'.implode('~~~', $tmp[$keys[$i]]);
              $separator='|||';
            }
          }
  
        
           
         if (('^.*$'==$this->reg) || (''==$this->reg))
         {
          $null='null';
         }  
         else
         {
          $null='not null';
         }
        
        $form->inputs[$this->ajax['fInput']]->spec.=' onchange="ajaxGet(this.value, \''.$this->id.'\', \''.$null.'\')";';
        $admin->onLoad.=' ajaxInit(\''.$this->id.'\', \''.addslashes(str_replace('"', "&quot;", $this->ajax['value'])).'\');';
      }
      
    
    
    
      $selects=array();

      if (TRUE==preg_match('/'.$this->reg.'/', ''))
      {
        $selects[]=array(
          'text'=>'-',
          'value'=>'',
        );
      }
      
      if (TRUE==$this->trans)
      {
        for ($i=0; $i<count($data); $i++)
        {
          if (TRUE==isset($this->trans[$data[$i][$this->fKey]]))
          {
            $data[$i][$this->fField]=$this->trans[$data[$i][$this->fKey]];
          }
        }
        
        for ($j=0; $j<count($data); $j++)
        for ($i=0; $i<count($data); $i++)
        {
          if ($data[$i][$this->fField]>$data[$j][$this->fField])
          {
            $tmp=$data[$i];
            $data[$i]=$data[$j];
            $data[$j]=$tmp;
          }
        }
      }
      
      
      
      for ($i=0; $i<count($data); $i++)
      {
        
        $include=TRUE;
        if (TRUE==isset($this->ajax['fKey']))
        {
          if ($data[$i]['ajax_fkey']!=$admin->dataRow[$admin->items[$this->ajax['fInput']]->formName])
          {
            $include=FALSE;
          }
        }
      
        if (TRUE==$include)
        {
        if ($data[$i][$this->fKey]==$admin->dataRow[$this->formName])
        {
          $selected=TRUE;
        }
        else
        {
          $selected=FALSE;
        }
      
        $selects[]=array(
          'text'=>$data[$i][$this->fField],
          'value'=>$data[$i][$this->fKey],
          'selected'=>$selected,
        );
        }
      }
      
      // konec: sestavi seznam dostupnych hodnost
    
    
      $result=array(
        'type'=>'select',
        'name'=>$this->formName,
        'value'=>$this->default,
        'reg'=>$this->reg,
        'css_id'=>$this->id,
        'css_class'=>$this->class,
        'spec'=>$this->spec,
        'label'=>$this->name,
        'label_id'=>$this->labelId,
        'label_class'=>$this->labelClass,
        'options'=>$selects,
      );
      
      
      
      return array($result);

    
    }





    

  }


?>

ACC SHELL 2018