ACC SHELL
<?php
class News extends Module
{
function News($path)
{
$this->getModuleInfo($path.'/news');
}
function install()
{
$db=$GLOBALS['db'];
$db->createTable('news', 'module');
$db->createColumn('news', 'show_from', 'date');
$db->createColumn('news', 'show_to', 'date');
$db->createColumn('news', 'preview', 'integer');
$db->createColumn('news', 'author', 'integer');
$db->createColumn('news', 'id_page', 'integer');
$db->createTable('news_files', 'module');
$db->createColumn('news_files', 'id_new', 'integer');
$db->createColumn('news_files', 'id_file', 'integer');
$db->createTable('news_languages', 'module');
$db->createColumn('news_languages', 'id_new', 'integer');
$db->createColumn('news_languages', 'id_language', 'integer');
$db->createColumn('news_languages', 'title', 'short text');
$db->createColumn('news_languages', 'text', 'medium text');
return TRUE;
}
function uninstall()
{
$db=$GLOBALS['db'];
$db->dropColumn('news', 'show_from');
$db->dropColumn('news', 'show_to');
$db->dropColumn('news', 'preview');
$db->dropColumn('news', 'author');
$db->dropColumn('news', 'id_page');
$db->dropTable('news');
$db->dropColumn('news_files', 'id_new');
$db->dropColumn('news_files', 'id_file');
$db->dropTable('news_files');
$db->dropColumn('news_languages', 'id_new');
$db->dropColumn('news_languages', 'id_language');
$db->dropColumn('news_languages', 'title');
$db->dropColumn('news_languages', 'text');
$db->dropTable('news_languages');
return TRUE;
}
function backEnd()
{
$result='';
$db=$GLOBALS['db'];
$actions=array(
'add'=>'Přidat novinku',
'add_now'=>'přidat',
'list'=>'Seznam novinek',
'edit'=>'upravit',
'edit_confirm'=>'uložit',
'after_add'=>'upravit',
'after_confirm'=>'Seznam novinek',
'delete'=>'smazat novinku',
'delete_confirm'=>'Ano, smazat',
'deactive'=>'deaktivovat',
'active'=>'aktivovat'
);
$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',
'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 = "news"',
'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 news.id_page = '.$_GET["idsys_page"];
}
$args=array(
'name'=>'Novinky',
'table'=>'new',
'item_title'=>'nl.title',
'documents'=>TRUE,
'actions'=>$actions,
'join'=>' LEFT JOIN news_languages AS nl ON (nl.id_new=news.id) ',
'where'=>' AND nl.id_language=1 '.$wh,
'groupby'=>'id',
'order'=>'news.show_from desc',
'thumb_directory'=>'thumb-s',
'thumbs'=>array(
array(
'width'=>'220',
'height'=>'150',
'directory'=>'thumb-m',
'quality'=>'80',
),
array(
'width'=>'100',
'height'=>'80',
'directory'=>'thumb-s',
'quality'=>'60',
),
array(
'width'=>'45',
'height'=>'80',
'directory'=>'thumb-l',
'quality'=>'60',
),
),
'ftp'=>$GLOBALS['ftp'],
'items'=>array(
array(
'type'=>'date',
'name'=>'Vystavit od',
'field'=>'show_from',
'reg'=>'^.+$',
),
array(
'type'=>'date',
'name'=>'Vystavit do',
'field'=>'show_to',
'reg'=>'^.+$',
),
$type,
array(
'type'=>'multireference',
'name'=>'Obsah',
'mrtable'=>'news_languages',
'mrkey'=>'id_new',
'mrfkey'=>'id_language',
'ftable'=>'languages',
'ffield'=>'name',
'fkey'=>'id',
'data'=>array(
array(
'type'=>'text',
'name'=>'Nadpis',
'field'=>'title',
'default'=>'',
'reg'=>'^.+$',
),
array(
'type'=>'wysiwyg',
'name'=>'Text',
'field'=>'text',
'default'=>'',
'reg'=>'^.+$',
),
),
),
array(
'type'=>'void',
'name'=>'Nadpis CZ',
'field'=>'title',
'table'=>'nl',
),
),
'list'=>array(
'columns'=>array(
array(
'name'=>'Nadpis',
'field'=>'Nadpis CZ',
'sort'=>'title',
'href'=>'this',
'width'=>'130',
),
),
),
);
$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)
{
$result='';
$ftp = $GLOBALS['ftp'];
$icons = $GLOBALS['icons'];
$news_str='';
$today=date('Y-m-d', time());
if (TRUE==isset($_GET['id']))
{
$id=$_GET['id'];
}
else
{
$id='';
}
if (TRUE==$id)
{
$new=$cms->db->select(
'
news.id, nl.title, nl.text, preview,
DATE_FORMAT(news.show_from, \'%d. %m. %Y\') AS date_from,
files.name AS filename,
files.width,
files.height,
files.type,
files.path',
'news
LEFT JOIN news_languages AS nl ON (nl.id_new=news.id)
LEFT JOIN files ON (files.id=news.preview)',
'news.show_from<=\''.(addslashes($today)).'\'
AND
news.show_to>=\''.(addslashes($today)).'\'
AND
news.id='.(int)$id.'
AND news.active ="Y" AND
nl.id_language='.(int)$cms->language['id'].'
',
'1'
);
if (0==count($new))
{
header('Location: ?');
die();
}
$files=$cms->db->select(
'f.*,
f.name AS file_name,
f.type
',
'
news_files AS nf
LEFT JOIN files AS f ON (nf.id_file=f.id)
',
'nf.id_new='.(int)$new['id']
);
$files_str='';
$image_types=array('image/jpeg', 'image/pjpeg', 'image/gif');
$images = '';
for ($i=0; $i<count($files); $i++)
{
if (in_array($files[$i]["type"], $image_types)==true AND $files[$i]["id"] != $new["preview"]){
$images .= '
<a rel="example_group" class="rel" href="'.$ftp['http_root'].'new'.$new['id'].'/'.$files[$i]['path'].'" title="'.$files[$i]["filename"].'">
<img src="'.$ftp['http_root'].'new'.$new['id'].'/user2/'.$files[$i]['path'].'" class="float_left margin_right" alt="'.$files[$i]["filename"].'" />
</a>
';
}elseif(in_array($files[$i]["type"], $image_types)==false ){
$files_str.='<img src="'.$cms->httpRoot.'images/ico/'.$icons[$files[$i]['type']].'" alt="" class="nobackground " />
<a target="_blank" class="files" href="'.$ftp['http_root'].'new'.$new['id'].'/'.$files[$i]['path'].'">'.$files[$i]['file_name'].'
</a>
<hr class="cl">
';
}
}
if (TRUE==$files_str)
{
$files_str='<p class="clear_both"><hr class="cl"> <br />
<b>Soubory ke stažení:</b><br />
'.$files_str.'
</p>
<hr class="cl"> <br />
';
}
if (TRUE==$new['path'] AND in_array($new["type"], $image_types)== true)
{
$img_str='
<a rel="example_group" class="img rel" href="'.$ftp['http_root'].'new'.$new['id'].'/'.$new['path'].'" title="'.$new["filename"].'">
<img src="'.$ftp['http_root'].'new'.$new['id'].'/user/'.$new['path'].'" class="news_left" alt="'.$new["filename"].'" />
</a>
';
}
else
{
$img_str='';
}
$text=$new['text'];
$result.='
<div id="new_detail">
<h3>'.$new['title'].'</h3>
<div class="news-inserted"><strong><i style="color:grey;font-size:11px;">vloženo: '.$new['date_from'].'</i></strong></div>
'.$img_str.'
<div class="detail-text">'.stripslashes($text).'</div>
<div class="clear_both"><!-- --></div><br /><br />
'.$images.'
<div class="clear_both"><!-- --></div>
'.$files_str.'
<div class="clear_both"><!-- --></div><br /><br />
<a href="?">zpět na výpis novinek</a>
</div>
';
}
else
{
if (isset($type)){
$t = 'news.id_page = '.$type;
}else{
$t = '1=1';
}
$news=$cms->db->select(
'nl.title, nl.text, news.id,
DATE_FORMAT(news.show_from, \'%d. %m. %Y\') AS date_from,
files.name AS filename,
files.width,
files.height,
files.path,
files.type',
'news
LEFT JOIN news_languages AS nl ON (nl.id_new=news.id)
LEFT JOIN files ON (files.id=news.preview)',
'news.show_from<=\''.(addslashes($today)).'\'
AND
news.show_to>=\''.(addslashes($today)).'\'
AND news.active ="Y" AND
nl.id_language='.(int)$cms->language['id'].'
AND '.$t.'
ORDER BY news.show_from DESC '
);
$title='';
$perex_length=120;
if (TRUE==isset($_GET['offset']))
{
$offset=$_GET['offset'];
}
else
{
$offset=0;
}
$on_page=10;
$pages=10;
$paging=paging($on_page, count($news), $pages, $offset, '', $_GET);
if ($offset>count($news))
{
$offset=count($news)-$on_page;
}
$end=$offset+$on_page;
if ($end>count($news))
{
$end=count($news);
}
$image_types=array('image/jpeg', 'image/pjpeg', 'image/gif');
for ($i=$offset; $i<$end; $i++)
{
$perex=stripslashes(strip_tags($news[$i]['text']));
$img_str = '';
if (TRUE==$news[$i]['path'] AND in_array($news[$i]["type"], $image_types))
{
$img_str='
<a class="img" href="?id='.$news[$i]['id'].get_params($_GET, array('id')).'">
<img src="'.$ftp['http_root'].'new'.$news[$i]['id'].'/user/'.$news[$i]['path'].'" alt="'.$news[$i]['filename'].'" />
</a>
';
}
else
{
$img_str='
<a class="img" href="?id='.$news[$i]['id'].get_params($_GET, array('id')).'">
<img src="'.$cms->httpRoot.'images/page_types/new.jpg" alt="no image" />
</a>
';
}
if (strlen($perex)>$perex_length)
{
$perex=ereg_replace('^(.*)\ .*$', '\\1', substr($perex, 0, $perex_length));
$perex.='... <a href="?id='.$news[$i]['id'].get_params($_GET, array('id')).'">více</a>';
}
else
{
$perex.='<div><a href="?id='.$news[$i]['id'].get_params($_GET, array('id')).'">více</a></div>';
}
$news_str.='<div class="news-item">
'.$img_str.'
<h3><a href="?id='.$news[$i]['id'].'">'.$news[$i]['title'].'</a></h3>
<div class="news_inserted"><i style="color:grey;font-size:11px;">vloženo: '.$news[$i]['date_from'].'</i></div>
<div class="news-popis"> '.$perex.' </div>
<div class="clear_both"><!-- --></div>
</div>
';
}
$result.='
<div class="float_left">
'.$paging.'
<div id="news">
'.$news_str.'
</div>
'.$paging.'
</div>
<div class="clear_both"><!-- --></div>
';
if (0==count($news))
{
$result.='<p>V současné době nejsou k dispozici žádné novinky</p>';
}
}
return $result;
}
function frontEndPreview($cms, $type , $limit=3)
{
$result='';
$ftp = $GLOBALS['ftp'];
$icons = $GLOBALS['icons'];
$news_str='';
$today=date('Y-m-d', time());
if (isset($type)){
$t = 'news.id_page = '.$type;
}else{
$t = '1=1';
}
$news=$cms->db->select(
'nl.title, nl.text, news.id,
DATE_FORMAT(news.show_from, \'%d. %m. %Y\') AS date_from,
files.name AS filename,
files.width,
files.height,
files.path,
files.type',
'news
LEFT JOIN news_languages AS nl ON (nl.id_new=news.id)
LEFT JOIN files ON (files.id=news.preview)',
'news.show_from<=\''.(addslashes($today)).'\'
AND
news.show_to>=\''.(addslashes($today)).'\'
AND news.active ="Y" AND
nl.id_language='.(int)$cms->language['id'].'
AND '.$t.'
ORDER BY news.show_from DESC ',
(int)$limit
);
$title='';
$perex_length=50;
if (TRUE==isset($_GET['offset']))
{
$offset=$_GET['offset'];
}
else
{
$offset=0;
}
$on_page=10;
$pages=10;
$paging=paging($on_page, count($news), $pages, $offset, '', $_GET);
if ($offset>count($news))
{
$offset=count($news)-$on_page;
}
$end=$offset+$on_page;
if ($end>count($news))
{
$end=count($news);
}
$image_types=array('image/jpeg', 'image/pjpeg', 'image/gif');
for ($i=$offset; $i<$end; $i++)
{
$perex=strip_tags($news[$i]['text']);
$img_str = '';
if (TRUE==$news[$i]['path'] AND in_array($news[$i]["type"], $image_types))
{
$img_str='
<a class="img rel" href="'.$ftp['http_root'].'new'.$news[$i]['id'].'/'.$news[$i]['path'].'" title="'.$news[$i]['filename'].'">
<img src="'.$ftp['http_root'].'new'.$news[$i]['id'].'/user4/'.$news[$i]['path'].'" alt="'.$news[$i]['filename'].'" />
</a>
';
}
else
{
$img_str='
<a class="img" href="" title="no image">
<img src="'.$ftp['http_root2'].'images/page_types/new.jpg" alt="no image" />
</a>
';
}
if (strlen($perex)>$perex_length)
{
$perex=ereg_replace('^(.*)\ .*$', '\\1', substr($perex, 0, $perex_length));
$perex2='<a class="more" href="'.str_replace('//','/',$cms->httpRoot.$cms->language["code"].pageLang(5, $cms->language["id"])).'?id='.$news[$i]['id'].get_params($_GET, array('id')).'">'.$cms->langs['vice'].'</a>';
}
else
{
$perex2='<a class="more" href="'.str_replace('//','/',$cms->httpRoot.$cms->language["code"].pageLang(5, $cms->language["id"])).'?id='.$news[$i]['id'].get_params($_GET, array('id')).'">'.$cms->langs['vice'].'</a>';
}
$news_str.='<div class="news-uvod">
<div class="news-datum">'.$news[$i]['date_from'].' </div>
<a href="'.str_replace('//','/',$cms->httpRoot.$cms->language["code"].pageLang(5, $cms->language["id"])).'?id='.$news[$i]['id'].get_params($_GET, array('id')).'" class="news-nadpis">'.$news[$i]['title'].' </a>
<div class="news-text">'.$perex.'</div>
'.$perex2.'
</div>
<div class="clear_both"><!-- --></div>
';
}
$result.='
<div id="news">
'.$news_str.'
</div>
<div class="clear_both"><!-- --></div>
';
if (0==count($news))
{
$result.='<div class="problem">'.$cms->langs['zadne-novinky'].'</div>';
}
return $result;
}
function frontEndPreview2($cms, $type , $limit=3)
{
$result='';
$ftp = $GLOBALS['ftp'];
$icons = $GLOBALS['icons'];
$news_str='';
$today=date('Y-m-d', time());
if (isset($type)){
$t = 'news.id_page = '.$type;
}else{
$t = '1=1';
}
$news=$cms->db->select(
'nl.title, nl.text, news.id,
DATE_FORMAT(news.show_from, \'%d. %m. %Y\') AS date_from,
files.name AS filename,
files.width,
files.height,
files.path,
files.type',
'news
LEFT JOIN news_languages AS nl ON (nl.id_new=news.id)
LEFT JOIN files ON (files.id=news.preview)',
'news.show_from<=\''.(addslashes($today)).'\'
AND
news.show_to>=\''.(addslashes($today)).'\'
AND
nl.id_language='.(int)$cms->language['id'].'
AND '.$t.'
ORDER BY news.show_from DESC ',
(int)$limit
);
$title='';
$perex_length=120;
if (TRUE==isset($_GET['offset']))
{
$offset=$_GET['offset'];
}
else
{
$offset=0;
}
$on_page=10;
$pages=10;
$paging=paging($on_page, count($news), $pages, $offset, '', $_GET);
if ($offset>count($news))
{
$offset=count($news)-$on_page;
}
$end=$offset+$on_page;
if ($end>count($news))
{
$end=count($news);
}
$image_types=array('image/jpeg', 'image/pjpeg', 'image/gif');
for ($i=$offset; $i<$end; $i++)
{
$perex=strip_tags($news[$i]['text']);
$img_str = '';
if (TRUE==$news[$i]['path'] AND in_array($news[$i]["type"], $image_types))
{
$img_str='
<a class="img rel" href="'.$ftp['http_root'].'new'.$news[$i]['id'].'/'.$news[$i]['path'].'" title="'.$news[$i]['filename'].'">
<img src="'.$ftp['http_root'].'new'.$news[$i]['id'].'/user4/'.$news[$i]['path'].'" alt="'.$news[$i]['filename'].'" />
</a>
';
}
else
{
$img_str='
<a class="img" href="" title="no image">
<img src="'.$ftp['http_root2'].'images/page_types/new.jpg" alt="no image" />
</a>
';
}
if (strlen($perex)>$perex_length)
{
$perex=ereg_replace('^(.*)\ .*$', '\\1', substr($perex, 0, $perex_length));
$perex.='... <a href="'.$cms->httpRoot.$cms->language['code'].'/novinky/?id='.$news[$i]['id'].get_params($_GET, array('id')).'">více</a>';
}
else
{
$perex.='... <a href="'.$cms->httpRoot.$cms->language['code'].'/novinky/?id='.$news[$i]['id'].get_params($_GET, array('id')).'">více</a>';
}
$news_str.='<div class="news-item">
<h3>'.$news[$i]['title'].'</h3>
<div class="news_inserted"><strong>'.$news[$i]['date_from'].'</strong></div>
'.$perex.'
<div class="clear_both"><!-- --></div>
</div>
';
}
$result.='
<div class="float_left">
'.$paging.'
<div id="news">
'.$news_str.'
</div>
'.$paging.'
</div>
<div class="clear_both"><!-- --></div>
';
if (0==count($news))
{
$result.='<p>V současné době nejsou k dispozici žádné novinky.</p>';
}
return $result;
}
}
?>
ACC SHELL 2018