ACC SHELL
<?php
class Redirection extends Module
{
function Redirection($path)
{
$this->getModuleInfo($path.'/redirection');
}
function install()
{
$db=$GLOBALS['db'];
$db->createTable('redirections', 'module');
$db->createColumn('redirections', 'author', 'integer');
$db->createColumn('redirections', 'id_page', 'integer');
$db->createTable('redirections_languages', 'module');
$db->createColumn('redirections_languages', 'id_redirection', 'integer');
$db->createColumn('redirections_languages', 'id_language', 'integer');
$db->createColumn('redirections_languages', 'url', 'short text');
$db->createColumn('redirections_languages', 'name', 'short text');
return TRUE;
}
function uninstall()
{
$db=$GLOBALS['db'];
$db->dropColumn('redirections', 'author');
$db->dropColumn('redirections', 'id_page');
$db->dropTable('redirections');
$db->dropColumn('redirections_languages', 'id_redirection');
$db->dropColumn('redirections_languages', 'id_language');
$db->dropColumn('redirections_languages', 'url');
$db->dropColumn('redirections_languages', 'name');
$db->dropTable('redirections_languages');
return TRUE;
}
function backEnd()
{
$result='';
$db=$GLOBALS['db'];
$actions=array(
'add'=>'Přidat přesměrování',
'add_now'=>'Přidat',
'list'=>'Seznam ',
'edit'=>'Upravit',
'edit_confirm'=>'Uložit',
'after_add'=>'Upravit',
'after_confirm'=>'přesměrování',
'delete'=>'Smazat',
'delete_confirm'=>'Ano, smazat'
);
$tmp=$db->select('id, id_parent', 'sys_pages', 'active=\'Y\'');
for ($i=0; $i<count($tmp); $i++)
{
$childern[$tmp[$i]['id_parent']][]=$tmp[$i]['id'];
}
$arrayhelp = array(1=>'M', 'T', 'K');
$tmp=$db->select(
'spl.name, sp.id_parent, sp.id, sp.id_type',
'sys_pages as sp
LEFT JOIN sys_pages_languages AS spl ON (sp.id = spl.id_page)',
'spl.id_language=1 AND sp.active=\'Y\'',
'',
'spl.name'
);
for ($i=0; $i<count($tmp); $i++)
{
if ($tmp[$i]["id_parent"]==0){
$cat_names[$tmp[$i]['id']] .= $arrayhelp[$tmp[$i]["id_type"]].' -> '.$tmp[$i]['name'];
}else{
$cat_names[$tmp[$i]['id']] .= $tmp[$i]['name'];
}
if (0==count($childern[$tmp[$i]['id']]))
{
$allowed[]=$tmp[$i]['id'];
}
for ($j=0; $j<count($childern[$tmp[$i]['id']]); $j++)
{
if ("" != trim($tmp[$i]['name']))
{
$cat_names[$childern[$tmp[$i]['id']][$j]]=$arrayhelp[$tmp[$i]["id_type"]].' -> '.$tmp[$i]['name'].' -> '.$cat_names[$childern[$tmp[$i]['id']][$j]];
}
}
}
$id_module=$db->select(
'id',
'sys_modules',
'sys_name = "redirection"',
'1'
);
if (FALSE == isset($_GET["c"])){
$type = array(
'type'=>'reference',
'name'=>'Sekce',
'field'=>'id_page',
'reg'=>'^.+$',
'join'=>' LEFT JOIN sys_pages as sp on (sp.id = sys_pages_languages.id_page)',
'where'=>' AND id_language=1 AND name != "" AND sp.id_module = '.$id_module["id"],
'ftable'=>'sys_pages_languages',
'ffield'=>'name',
'trans'=>$cat_names,
'fkey'=>'id_page',
'default'=>'0',
);
$wh = '';
}else{
$type = array(
'type'=>'hidden',
'name'=>'Typ',
'field'=>'id_page',
'default'=>(int)$_GET["idsys_page"],
);
$wh = ' AND redirections.id_page = '.$_GET["idsys_page"];
}
$args=array(
'name'=>'Přesměrování',
'table'=>'redirection',
'item_title'=>'rl.name',
'documents'=>FALSE,
'actions'=>$actions,
'groupby'=>'id',
'order'=>'id desc',
'join'=>' LEFT JOIN redirections_languages AS rl ON (rl.id_redirection=redirections.id)',
'where'=>' AND rl.id_language=1'.$wh,
'items'=>array(
$type,
array(
'type'=>'multireference',
'name'=>'Obsah',
'mrtable'=>'redirections_languages',
'mrkey'=>'id_redirection',
'mrfkey'=>'id_language',
'ftable'=>'languages',
'ffield'=>'name',
'fkey'=>'id',
'data'=>array(
array(
'type'=>'text',
'name'=>'Název',
'field'=>'name',
'default'=>'',
'reg'=>'^.+$',
),
array(
'type'=>'text',
'name'=>'URL',
'field'=>'url',
'default'=>'',
'reg'=>'^.+$',
),
),
),
array(
'type'=>'void',
'name'=>'Název CZ',
'field'=>'name',
'table'=>'rl',
),
),
'list'=>array(
'columns'=>array(
array(
'name'=>'Název',
'field'=>'Název CZ',
'sort'=>'name',
'href'=>'this',
),
),
),
);
$admin=new Admin($args);
// $admin->innerHTML['detail']['top']=$admin->innerHTML['detail']['bottom']='<br /><a href="newsletter-write.php?new='.$admin->id.'" class="button">Odeslat newsletterem</a>';
$result.=$admin->getHTML();
return $result;
}
// frontend
function frontEnd(&$cms, $type)
{
$ftp = $GLOBALS['ftp'];
$red=$cms->db->select(
'rl.url',
'redirections as r
LEFt JOIN redirections_languages as rl on (rl.id_redirection=r.id)',
'id_language ='.(int)$cms->language['id'].' AND id_page='.(int)$type,
'1',
'r.id desc'
);
if (isset($red["url"])==true){
header('location:'.$cms->httpRoot.$cms->language['code'].$node["path"].$red["url"], true,301);
die();
}
return $result;
}
}
?>
ACC SHELL 2018