UPGRADE NOTE:
Do not edit or add to this file if you wish to upgrade AbanteCart to newer
versions in the future. If you wish to customize AbanteCart for your
needs please refer to http://www.AbanteCart.com for more information.
------------------------------------------------------------------------------*/
if (! defined ( 'DIR_CORE' )) {
header ( 'Location: static_pages/' );
}
class ControllerPagesAccountDownload extends AController {
public $data = array();
public function main() {
//init controller data
$this->extensions->hk_InitData($this,__FUNCTION__);
if (!$this->customer->isLogged()) {
$this->session->data['redirect'] = $this->html->getSecureURL('account/download');
$this->redirect($this->html->getSecureURL('account/login'));
}
//if disabled downloads redirect to
if (!$this->config->get('config_download')) {
$this->redirect($this->html->getSecureURL('account/account'));
}
$this->document->setTitle( $this->language->get('heading_title') );
$this->document->resetBreadcrumbs();
$this->document->addBreadcrumb( array (
'href' => $this->html->getSecureURL('index/home'),
'text' => $this->language->get('text_home'),
'separator' => FALSE
));
$this->document->addBreadcrumb( array (
'href' => $this->html->getSecureURL('account/account'),
'text' => $this->language->get('text_account'),
'separator' => $this->language->get('text_separator')
));
$this->document->addBreadcrumb( array (
'href' => $this->html->getSecureURL('account/download'),
'text' => $this->language->get('text_downloads'),
'separator' => $this->language->get('text_separator')
));
if (isset($this->request->get['limit'])) {
$limit = (int)$this->request->get['limit'];
$limit = $limit>50 ? 50 : $limit;
} else {
$limit = $this->config->get('config_catalog_limit');
}
if ($this->config->get('config_download')) {
if (isset($this->request->get['page'])) {
$page = $this->request->get['page'];
} else {
$page = 1;
}
$downloads = array();
//get only enabled, not expired, which have remaining count > 0 and available
$customer_downloads = $this->download->getCustomerDownloads(($page-1) * $limit, $limit);
$resource = new AResource('image');
foreach ($customer_downloads as $download_info) {
$text_status = $this->download->getTextStatusForOrderDownload($download_info);
$size = filesize(DIR_RESOURCE . $download_info['filename']);
$i = 0;
$suffix = array(
'B',
'KB',
'MB',
'GB',
'TB',
'PB',
'EB',
'ZB',
'YB'
);
while (($size / 1024) > 1) {
$size = $size / 1024;
$i++;
}
if(!$text_status){
$download_button = HtmlElementFactory::create(
array ( 'type' => 'button',
'name' => 'download_button_'.$download_info['order_download_id'],
'title'=> $this->language->get('text_download'),
'text' => $this->language->get('text_download'),
'style' => 'button',
'href' => $this->html->getSecureURL('account/download/startdownload','&order_download_id='. $download_info['order_download_id']),
'icon' => 'fa fa-download-alt'
)
);
}else{
$download_text = $text_status;
}
$thumbnail = $resource->getMainThumb( 'products',
$download_info['product_id'],
$this->config->get('config_image_cart_width'),
$this->config->get('config_image_cart_height'),
false );
$attributes = $this->download->getDownloadAttributesValuesForCustomer($download_info['download_id']);
$downloads[] = array(
'thumbnail' => $thumbnail,
'attributes' => $attributes,
'order_id' => $download_info['order_id'],
'date_added' => dateISO2Display($download_info['date_added'],$this->language->get('date_format_short')),
'name' => $download_info['name'],
'remaining' => $download_info['remaining_count'],
'size' => round(substr($size, 0, strpos($size, '.') + 4), 2) . $suffix[$i],
'button' => $download_button,
'text' => $download_text,
'expire_date'=> dateISO2Display($download_info['expire_date'], $this->language->get('date_format_short').' '.$this->language->get('time_format_short'))
);
}
$this->data['downloads'] = $downloads;
$this->data['pagination_bootstrap'] = HtmlElementFactory::create( array (
'type' => 'Pagination',
'name' => 'pagination',
'text'=> $this->language->get('text_pagination'),
'text_limit' => $this->language->get('text_per_page'),
'total' => sizeof($downloads),
'page' => $page,
'limit' => $limit,
'url' => $this->html->getURL('account/download&page={page}', '&encode'),
'style' => 'pagination'));
if($downloads){
$template = 'pages/account/download.tpl';
}else{
$template = 'pages/error/not_found.tpl';
}
} else {
$template = 'pages/error/not_found.tpl';
}
$continue = HtmlElementFactory::create( array ('type' => 'button',
'name' => 'continue_button',
'text'=> $this->language->get('button_continue'),
'style' => 'button',
'icon' => 'fa fa-arrow-right',
'href' => $this->html->getSecureURL('account/account')));
$this->data['button_continue'] = $continue;
$this->view->batchAssign($this->data);
$this->processTemplate($template);
//init controller data
$this->extensions->hk_UpdateData($this,__FUNCTION__);
}
public function startdownload() {
//init controller data
$this->extensions->hk_InitData($this,__FUNCTION__);
if(!$this->config->get('config_download')){ // if downloads not allowed
$this->redirect($this->html->getSecureURL('account/account'));
}
if (has_value($this->request->get['download_id'])) {
$download_info = $this->download->getDownloadinfo((int)$this->request->get['download_id']);
} elseif(has_value($this->request->get['order_download_id'])) {
// check is customer logged
if (!$this->customer->isLogged()) {
$this->session->data['redirect'] = $this->html->getSecureURL('account/download');
$this->redirect($this->html->getSecureURL('account/login'));
}
$download_info = $this->download->getOrderDownloadInfo($this->request->get['order_download_id']);
}else {
$download_info = array();
}
$this->extensions->hk_UpdateData($this,__FUNCTION__);
if ($download_info) {
$result = $this->download->sendDownload($download_info);
if($result===false){
$this->redirect($this->html->getSecureURL('account/download'));
}
} else {
$this->session->data['warning'] = $this->language->get('error_download_not_exists');
$this->redirect($this->html->getSecureURL('account/download'));
}
}
}