ACC SHELL

Path : /srv/www/vhosts/profias/modules/news/
File Upload :
Current File : /srv/www/vhosts/profias/modules/news/news.php

<?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>
          &nbsp;

    ';
    
    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>
          &nbsp; 

    ';
    
    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>
          &nbsp;

    ';
    
    if (0==count($news))
    {
      $result.='<p>V současné době nejsou k dispozici žádné novinky.</p>';
    } 
    
    return $result;
    
  }
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  }
  
?>

ACC SHELL 2018