ACC SHELL

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

<?php

  include('../inc/config.php');
  include('../inc/fce.php');
  include('../inc/db.php');
  include('../inc/admin/admin2.php');
  include('../inc/template-admin.php');


  $content='';

  $db=new Db;

//$db->createColumn('tmp_objects', 'vip', 'checkbox');


  // vlajky


    $flags=$GLOBALS['db']->select(
      'l.id, l.name, f.path, f2.path AS path_inactive',
      '
        languages AS l
        LEFT JOIN files AS f ON (l.flag=f.id)
        LEFT JOIN files AS f2 ON (l.flag_inactive=f2.id)
      '
    );


    $tmp=$GLOBALS['db']->select(
      'DISTINCT id_language, id_object',
      '
        objects_languages
      '
    ); 
    
    $actives=array();
    
    for ($i=0; $i<count($tmp); $i++)
    {
      $actives[$tmp[$i]['id_object']][$tmp[$i]['id_language']]=TRUE;
    } 
    
    

  function flag($id)
  {
    $flags_str='';
    $flags=$GLOBALS['flags'];
    
    for ($i=0; $i<count($flags); $i++)
    {
      if (TRUE==isset($GLOBALS['actives'][$id][$flags[$i]['id']]))
      {
        $field='path';
      }
      else
      {
        $field='path_inactive';
      }
    
      $flags_str.='<a class="flag" href="?actionobject=edit&amp;idobject='.$id.'&amp;objectlanguages='.$flags[$i]['id'].get_params($_GET, array('actionobject', 'idobject', 'objectlanguages')).'">
        <img src="'.$GLOBALS['ftp']['http_root'].'language'.$flags[$i]['id'].'/'.$flags[$i][$field].'" alt="'.$flags[$i]['name'].'" />
      </a>
      ';
    }
    
    return '<div id="flags-edit">
      '.$flags_str.'
    </div>
    ';
  }

  
  for ($i=0; $i<count($flags); $i++)
  {
    $flags_str.='<a class="flag" href="?actionobject=edit&amp;idobject={|id|}&amp;objectlanguages='.$flags[$i]['id'].get_params($_GET, array('actionobject', 'idobject', 'objectlanguages')).'">
      <img src="'.$ftp['http_root'].'language'.$flags[$i]['id'].'/'.$flags[$i]['path'].'" alt="'.$flags[$i]['name'].'" />
      </a>
    ';
  }

  if (TRUE==$flags_str)
  {
    $flags_str='<div id="flags-edit">
      '.$flags_str.'
    </div>
    ';
  }



  if (TRUE==isset($_POST['idobject']))
  {
    $id=$_POST['idobject'];
  }
  else if (TRUE==isset($_GET['idobject']))
  {
    $id=$_GET['idobject'];
  }
  else
  {
    $id='';
  }



    




$actions=array(
    'add'=>'Přidat Objekt',
    'add_now'=>'přidat',
    'list'=>'Seznam objektů',
    'edit'=>'uložit',
    'edit_confirm'=>'uložit',
    'after_add'=>'uložit',
    'after_confirm'=>'uložit',
    'delete'=>'smazat vlastnost',
    'delete_confirm'=>'Ano, smazat'
  );
  
  
  if (TRUE==$GLOBALS['user']['id_tic'])
  {
    $tmp=$db->select('active', 'objects', 'id='.(int)$_GET['idobject'], '1');
    
    if ('Y'==$tmp['active'])
    {
      $actions['on_update']=record_update;
      $actions['on_document_upload']=document_upload;
    }
    $actions['on_insert']=record_insert;
  }

  $tmp=$db->select(
    'id_object_type, id_object',
    'objects_object_types AS oot
     LEFT JOIN object_types AS ot ON (oot.id_object_type=ot.id)
    ',
    'ot.active=\'N\''
  );
  $tmp_array=array();
  
  for ($i=0; $i<count($tmp); $i++)
  {
    $tmp_array[]=$tmp[$i]['id_object'];
    $tmp_array2[]=$tmp[$i]['id_object_type'];
  }
  
  if (0<count($tmp_array))
  {
    $not_included=' AND objects.id NOT IN ('.implode(', ', $tmp_array).')';
    $where_types=' AND object_types_languages.id_object_type NOT IN ('.implode(', ', $tmp_array2).')';
  }
  else
  {
    $not_included='';
    $where_type='';
  }
  

    $tmp_db=$db->select(
      'DISTINCT o.id AS object, c.id AS city, c.id_region AS region',
      'objects AS o
       LEFT JOIN objects_object_types AS oot ON (o.id=oot.id_object)
       LEFT JOIN object_types AS ot ON (ot.id=oot.id_object_type)
       LEFT JOIN objects_users AS ou ON (ou.id_object=o.id)
       LEFT JOIN citys_tics AS ct ON (o.id_city=ct.id_city)
       LEFT JOIN citys AS c ON (c.id=ct.id_city)
      ',
      '
      ct.id_tic='.(int)$GLOBALS['user']['id_tic'].$tmp_where
    );
    
    
    $tmp_city=$tmp_region=$tmp_object=array();
    for ($i=0; $i<count($tmp_db); $i++)
    {
      $tmp_region[]=(int)$tmp_db[$i]['region'];
      $tmp_city[]=(int)$tmp_db[$i]['city'];
      $tmp_object[]=(int)$tmp_db[$i]['object'];
    }
    
    
    if (0<count($tmp_city))
    {
      $city_where=' AND citys.id IN ('.implode(', ', $tmp_city).')';
    }
    else
    {
      $city_where=' AND 0';
    }
    $city_reg='^.+$';

    if (TRUE==in_array($GLOBALS['user']['rights'], array('1', '2')))
    {
      $city_where=' AND 1';
    }

  $args=array(
    'name'=>'Objekty',
    'table'=>'object',  
    'item_title'=>'av.name',    
    'actions'=>$actions,
    'thumb_directory'=>'thumb-s',
    'documents'=>TRUE,
    'join'=>'LEFT JOIN objects_languages AS av ON (objects.id=av.id_object)',
    'where'=>' AND av.id_language=1'.$not_included,
        'default_language'=>'1',
    'ftp'=>$ftp,
    'items'=>array(
        array(
        'type'=>'multireference',
        'name'=>'data',
        'field'=>'name',
        'ftable'=>'languages',
        'mrkey'=>'id_object',
        'mrfkey'=>'id_language',
        'ffield'=>'name',
        'fkey'=>'id',
        'key'=>'id',
        'mrtable'=>'objects_languages',
        'reg'=>'^.*$',
        'whaere'=>' AND object_types_languages.id_language=1',
        'data'=>array(
          array(
            'type'=>'text',
            'name'=>'Název',
            'field'=>'name',
            'reg'=>'^.+$',
          ) ,
          array(
            'type'=>'wysiwyg',
            'name'=>'Popis',
            'field'=>'description',
            'reg'=>'^.*$',
            'help'=>'Vyplňte popis objektu.<br /><br />Do popisu prosím nepřidávejte obrázky. Obrázky a jiné soubory můžete přidat v sekci &quot;Dokumenty&quot;.<br />Pokud přidáváte nový objekt, tato sekce se objeví až po stisknutí tlačítka &quot;přidat&quot;.',
          ) ,
          ),
        ),
          array(
            'type'=>'hidden',
            'name'=>'tic',
            'field'=>'id_tic',
            'default'=>(int)$GLOBALS['user']['id_tic'],
          ) ,
        array(
        'type'=>'multireference',
        'name'=>'Kategorie',
        'mrtable'=>'objects_object_types',
        'mrkey'=>'id_object',
        'mrfkey'=>'id_object_type',
        'field'=>'name',
        'ftable'=>'object_types_languages',
        'ffield'=>'name',
        'fkey'=>'id_object_type',
        'key'=>'id',
        'order'=>'name',
        'where'=>' AND id_language=1'.$where_types,
        'reg'=>'^.*$',
        'help'=>'Zvolte kategorie, pod které obec spadá.<br />Více kategorií zvolíte podržením tlačítka ctrl a současným klikáním na přislušné názvy.<br /><br />Pozor: dojde-li k nechtěnému odznačení, změny neukládejte.',
      ),
        array(
        'type'=>'checkbox',
        'name'=>'Zajímavý objekt',
        'field'=>'vip',
        'help'=>'Zaškrtněte v případě že se má objekt na stránkach jevit jako zajímavý.',
      ),
      array(
        'type'=>'text',
        'name'=>'GPS E',
        'field'=>'x',
        'help'=>'Zadejte GPS souřadnici ve formátu XX°XX\'XX.XX (např. 16°36\'29.93).'
      ),
      array(
        'type'=>'text',
        'name'=>'GPS N',
        'field'=>'y',
        'help'=>'Zadejte GPS souřadnici ve formátu XX°XX\'XX.XX (např. 49°11\'32.12).'
      ),
        array(
        'type'=>'void',
        'name'=>'name',
        'field'=>'name',
        'table'=>'av',
      ),
        array(
        'type'=>'void',
        'name'=>'last_update',
        'field'=>'FROM_UNIXTIME(objects.create_time, \'%d. %m. %Y\')',
        'table'=>'',
      ),
        array(
          'type'=>'reference',
          'name'=>'Obec',
          'field'=>'id_city',   
          'reg'=>'^.*$',
          'ftable'=>'citys',
          'fkey'=>'id',
          'ffield'=>'name',
          'order'=>'name',
          'reg'=>$city_reg,
           'where'=>$city_where,
        'help'=>'Vyberte obec, pod kterou objekt spadá.'
        ),

      
    ),
    'list'=>array(
      'columns'=>array(
        array(
          'name'=>'Název',
          'field'=>'name',
          'sort'=>'av.name',
          'href'=>'this',
          'width'=>'180',
        ),

      ),
      'edit'=>flag,
    ),
    'templates'=>array(
      'detail'=>'inc/templates/objects-detail.tpl.php',
    ),
  );


  if (FALSE==in_array($GLOBALS['user']['rights'], array(1,2)))
  {
    $args['where'].=' AND objects.id_tic='.(int)$GLOBALS['user']['id_tic'];
    
    // vybere pouze objekty, ktere jsou uzivateli prirazeny
    if ('3'!=$GLOBALS['user']['rights'])
    {
      $tmp=$db->select('DISTINCT id_object', 'objects_users', 'id_user='.(int)$GLOBALS['user']['id']);
      $obj=array();
      for ($i=0; $i<count($tmp); $i++)
      {
        $obj[]=(int)$tmp[$i]['id_object'];
      }
      if (0<count($obj))
      {
         $args['where'].=' AND objects.id IN ('.implode(', ', $obj).')';
      }
      else
      {
        $args['where'].=' AND FALSE';
      }
      
      $args['where'].=' AND objects.id_tic='.(int)$GLOBALS['user']['id_tic'];
    }
    
    
  }
  else
  {
      $args['items'][]=
        array(
          'type'=>'reference',
          'name'=>'TIC',
          'field'=>'id_tic',   
          'reg'=>'^.*$',
          'ftable'=>'tics_languages',
          'fkey'=>'id_tic',
          'ffield'=>'name',
          'order'=>'name',
          'reg'=>'^.*$',
        );
  }
 

if (TRUE==$id)
{
    $tmp=$db->select(
      'id_object_type',
      'objects_object_types',
      'id_object='.(int)$id
    );
    
    $where_array=array();
    for ($i=0; $i<count($tmp); $i++)
    {
      $where_array[]=(int)$tmp[$i]['id_object_type'];
    }
    
    if (0<count($where_array))
    {
      $tmp_where='ac.id_object_type IN ('.implode(', ', $where_array).')';
    }
    else
    {
      $tmp_where='0';
    }
    
    
    $tmp=$db->select(
      'DISTINCT a.id, c.admin_type, al.name',
      'attributes_object_types AS ac
       LEFT JOIN attributes AS a ON (ac.id_attribute=a.id)
       LEFT JOIN attributes_languages AS al ON (al.id_attribute=a.id)
       LEFT JOIN sys_db_column_types AS c ON (c.id=a.id_column_type)
      ',
      '
      al.id_language=1
       AND
      '.$tmp_where
    );
    
    
    $data=array(
      
    );
    for ($i=0; $i<count($tmp); $i++)
    {
      if (TRUE==$tmp[$i]['admin_type']) 
      {
    $args['items'][]=
      array(
        'type'=>'multireference',
        'name'=>'atribut_'.$tmp[$i]['name'],
        'field'=>'name',
        'ftable'=>'languages',
        'mrkey'=>'id_object',
        'mrfkey'=>'id_language',
        'ffield'=>'name',
        'fkey'=>'id',
        'key'=>'id', 
        'mrtable'=>'attribute_values',
        'reg'=>'^.+$',
        'mr_where'=>' AND id_attribute='.(int)$tmp[$i]['id'],
        'data'=>array(
            array(
              'type'=>$tmp[$i]['admin_type'],
              'name'=>$tmp[$i]['name'],
              'field'=>'value',
            ),
          ),
       'addValues'=>array(
            array(
               'field'=>'id_attribute',
                'value'=>(int)$tmp[$i]['id'],
              ),
        ),
            
      );
      }
    }
    
    
 }  
 
  
  $admin=new Admin($args);




  $content.='
  '.$admin->getHTML().'<div class="clear_both"><!-- --></div>'; 

  echo html('Objekty', $content);  

?>


ACC SHELL 2018