Пример #1
0
 public function downloadsAction()
 {
     $request = $this->getRequest();
     if (!JO_Session::get('user_id')) {
         JO_Session::set('msg_error', $this->translate('You must be logged to view your downloads'));
         $this->redirect(WM_Router::create($request->getBaseUrl() . '?controller=users&action=login'));
     }
     $this->getLayout()->meta_title = $this->translate('Downloads');
     $this->getLayout()->meta_description = $this->translate('Downloads');
     if (is_numeric($request->getParam('download_id'))) {
         if ($request->getParam('certificate')) {
             $item = Model_Items::get($request->getParam('download_id'));
             $order_info = Model_Orders::isBuyed($request->getParam('download_id'), JO_Session::get('user_id'), $request->getParam('oid'));
             if ($item && $order_info) {
                 $this->noViewRenderer(true);
                 $response = $this->getResponse();
                 $response->addHeader('Content-Type: text/plain; charset=UTF-8');
                 $response->addHeader('Content-Disposition: attachment; filename="item_licence(' . $order_info['id'] . ').txt"');
                 $response->addHeader('Cache-Control: must-revalidate, post-check=0, pre-check=0');
                 $response->addHeader('Pragma: public');
                 $response->addHeader("Content-Transfer-Encoding: binary");
                 $response->addHeader('Expires: 0');
                 if ($order_info['extended'] == 'true') {
                     $this->view->licence = $this->translate('ONE EXTENDED LICENCE');
                 } else {
                     $this->view->licence = $this->translate('ONE REGULAR LICENCE');
                 }
                 $this->view->username = JO_Session::get('username');
                 $this->view->userfirstlastname = JO_Session::get('firstname') . ' ' . JO_Session::get('lastname');
                 $this->view->itemname = $order_info['item_name'];
                 $this->view->item_href = WM_Router::create($this->getRequest()->getBaseUrl() . '?controller=items&item_id=' . $order_info['item_id']);
                 $this->view->item_id = $order_info['item_id'];
                 $this->view->order_id = $order_info['id'];
                 $this->view->admin_mail = JO_Registry::get('admin_mail');
                 if (isset($order_info['main_file_info']) && $order_info['main_file_info']) {
                     $this->view->main_file_info = $order_info['main_file_info'];
                 }
                 $this->view->domain = $request->getDomain();
                 $response->appendBody(str_replace("\n", "\n\r", $this->view->render('certificate', 'users')));
                 exit;
             } else {
                 $this->forward('error', 'error404');
             }
         } else {
             $item = Model_Items::get($request->getParam('download_id'));
             if ($item['free_file'] == 'true' || $item['user_id'] == JO_Session::get('user_id') || Model_Orders::isBuyed($item['id'], JO_Session::get('user_id'))) {
                 if (file_exists(BASE_PATH . '/uploads' . $item['main_file']) && is_file(BASE_PATH . '/uploads' . $item['main_file'])) {
                     $this->noViewRenderer(true);
                     $response = $this->getResponse();
                     $response->addHeader('Content-Type: application/zip');
                     $response->addHeader('Content-Disposition: attachment; filename="' . $item['main_file_name'] . '"');
                     $response->addHeader("Content-Length:" . filesize(BASE_PATH . '/uploads' . $item['main_file']));
                     $response->addHeader('Cache-Control: must-revalidate, post-check=0, pre-check=0');
                     $response->addHeader('Pragma: public');
                     $response->addHeader("Content-Transfer-Encoding: binary");
                     $response->addHeader('Expires: 0');
                     $response->addHeader('Content-Description: ' . JO_Registry::get('meta_title') . ' Download');
                     readfile(BASE_PATH . '/uploads' . $item['main_file']);
                 } else {
                     $this->forward('error', 'error404');
                 }
             } else {
                 $this->forward('error', 'error404');
             }
         }
     }
     if (JO_Session::get('msg_success')) {
         $this->view->msg_success = JO_Session::get('msg_success');
         JO_Session::clear('msg_success');
     }
     if (JO_Session::get('msg_error')) {
         $this->view->msg_error = JO_Session::get('msg_error');
         JO_Session::clear('msg_error');
     }
     $orders = Model_Orders::getAllUserOrders(0, false, 'item_id');
     $this->view->orders = array();
     $username = JO_Session::get('username');
     $this->view->crumbs = array(array('name' => $this->view->translate('Home'), 'href' => $request->getBaseUrl()), array('name' => $username, 'href' => WM_Router::create($request->getBaseUrl() . '?controller=users&username='******'name' => $this->view->translate('Downloads')));
     $user = $this->view->users = Model_Users::getByUsername($username);
     $this->view->author_header = Helper_Author::authorHeader($user);
     $this->view->rate_link = WM_Router::create($request->getBaseUrl() . '?controller=items&action=rate_item');
     if ($orders) {
         foreach ($orders as $order) {
             $order['download'] = true;
             $order['regular_href'] = WM_Router::create($request->getBaseUrl() . '?controller=licence');
             $order['licence_href'] = WM_Router::create($request->getBaseUrl() . '?controller=users&action=downloads&item_id=' . $order['item_id'] . '/certificate/1');
             $order['download_href'] = WM_Router::create($request->getBaseUrl() . '?controller=users&action=downloads&item_id=' . $order['item_id']);
             $this->view->orders[] = Helper_Items::returnViewIndex($order, 'downloads');
         }
     }
     $this->view->children = array();
     $this->view->children['header_part'] = 'layout/header_part';
     $this->view->children['footer_part'] = 'layout/footer_part';
 }