ACC SHELL
<?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&idobject='.$id.'&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&idobject={|id|}&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 "Dokumenty".<br />Pokud přidáváte nový objekt, tato sekce se objeví až po stisknutí tlačítka "přidat".',
) ,
),
),
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