public function Index()
 {
     $this->view->setVar('order_items', is_array($va_items = $this->opt_order->getItems()) ? $va_items : array());
     //
     // Set default dates for order items
     //
     $t_order_item = new ca_commerce_order_items();
     $t_order_item->set('loan_checkout_date', time(), array('SET_DIRECT_DATE' => true));
     if (($vn_loan_period_in_days = $this->opo_client_services_config->get('default_library_loan_period')) <= 0) {
         $vn_loan_period_in_days = 7;
     }
     $t_order_item->set('loan_due_date', time() + $vn_loan_period_in_days * 24 * 60 * 60, array('SET_DIRECT_DATE' => true));
     $va_default_values = array('loan_checkout_date' => $t_order_item->get('loan_checkout_date', array('dateFormat' => 'delimited', 'timeOmit' => true)), 'loan_due_date' => $t_order_item->get('loan_due_date', array('dateFormat' => 'delimited', 'timeOmit' => true)));
     $this->view->setVar('t_order_item', $t_order_item);
     //$this->view->setVar('default_item_prices', $va_default_prices);
     //
     // Additional fees
     //
     $this->view->setVar('additional_fees', $t_order_item->getAdditionalFeesHTMLFormBundle($this->request, array('config' => $this->opo_client_services_config, 'currency_symbol' => $this->opo_client_services_config->get('currency_symbol'), 'type' => 'L')));
     $this->view->setVar('additional_fees_for_new_items', $t_order_item->getAdditionalFeesHTMLFormBundle($this->request, array('config' => $this->opo_client_services_config, 'currency_symbol' => $this->opo_client_services_config->get('currency_symbol'), 'use_defaults' => true, 'type' => 'L')));
     $this->view->setVar('additional_fee_codes', $va_additional_fee_codes = $this->opo_client_services_config->getAssoc('additional_loan_fees'));
     foreach ($va_additional_fee_codes as $vs_code => $va_info) {
         $va_default_values['ADDITIONAL_FEE_' . $vs_code] = $va_info['default_cost'];
     }
     $this->view->setVar('default_values', $va_default_values);
     //
     // Functional options
     //
     $this->view->setVar('loan_use_item_fee_and_tax', (bool) $this->opo_client_services_config->get('loan_use_item_fee_and_tax'));
     $this->view->setVar('loan_use_notes_and_restrictions', (bool) $this->opo_client_services_config->get('loan_use_notes_and_restrictions'));
     $this->view->setVar('loan_use_additional_fees', (bool) $this->opo_client_services_config->get('loan_use_additional_fees'));
     $this->render('checkout_html.php');
 }
Ejemplo n.º 2
0
 /**
  *
  */
 public function isOnLoan()
 {
     if (!$this->getPrimaryKey()) {
         return null;
     }
     $t_order = new ca_commerce_orders();
     if (is_array($va_orders = $t_order->getOrders(array('object_id' => $this->getPrimaryKey(), 'type' => 'L'))) && sizeof($va_orders)) {
         $va_order = array_shift($va_orders);
         $t_order_item = new ca_commerce_order_items();
         if ($t_order_item->load(array('order_id' => $va_order['order_id'], 'object_id' => $this->getPrimaryKey()))) {
             if (!$t_order_item->get('loan_return_date', array('GET_DIRECT_DATE' => true))) {
                 return array('loan_checkout_date' => $t_order_item->get('loan_checkout_date'), 'loan_checkout_date_raw' => $t_order_item->get('loan_checkout_date', array('GET_DIRECT_DATE' => true)), 'loan_due_date' => $t_order_item->get('loan_due_date'), 'loan_due_date_raw' => $t_order_item->get('loan_due_date', array('GET_DIRECT_DATE' => true)), 'client' => $va_order['billing_fname'] . ' ' . $va_order['billing_lname'] . " (" . $va_order['billing_email'] . ")", 'billing_fname' => $va_order['billing_fname'], 'billing_lname' => $va_order['billing_lname'], 'billing_email' => $va_order['billing_email'], 'order_id' => $va_order['order_id']);
             }
         }
     }
     return false;
 }
 public function ItemList()
 {
     if (!$this->opt_order->getPrimaryKey()) {
         $this->Edit();
         return;
     }
     $va_items = $this->opt_order->getItems();
     foreach ($va_items as $vn_item_id => $va_item) {
         $va_items[$vn_item_id]['loan_checkout_date'] = $va_items[$vn_item_id]['loan_checkout_date'] ? caGetLocalizedDate($va_items[$vn_item_id]['loan_checkout_date'], array('dateFormat' => 'delimited')) : '';
         $va_items[$vn_item_id]['loan_due_date'] = $va_items[$vn_item_id]['loan_due_date'] ? caGetLocalizedDate($va_items[$vn_item_id]['loan_due_date'], array('dateFormat' => 'delimited')) : '';
         $va_items[$vn_item_id]['loan_return_date'] = $va_items[$vn_item_id]['loan_return_date'] ? caGetLocalizedDate($va_items[$vn_item_id]['loan_return_date'], array('dateFormat' => 'delimited')) : '';
     }
     $this->view->setVar('order_items', $va_items);
     $va_service_groups = $this->opo_client_services_config->getAssoc('service_groups');
     $va_default_prices = array();
     foreach ($va_service_groups as $vs_group => $va_group_info) {
         foreach ($va_group_info['services'] as $vs_service => $va_service_info) {
             $va_default_prices[$vs_service] = $va_service_info;
         }
     }
     $this->view->setVar('default_item_prices', $va_default_prices);
     if (($vn_loan_period_in_days = $this->opo_client_services_config->get('default_library_loan_period')) <= 0) {
         $vn_loan_period_in_days = 7;
     }
     $t_order_item = new ca_commerce_order_items();
     $t_order_item->set('loan_checkout_date', time(), array('SET_DIRECT_DATE' => true));
     $t_order_item->set('loan_due_date', time() + $vn_loan_period_in_days * 24 * 60 * 60, array('SET_DIRECT_DATE' => true));
     $va_default_values = array('loan_checkout_date' => $t_order_item->get('loan_checkout_date', array('dateFormat' => 'delimited', 'timeOmit' => true)), 'loan_due_date' => $t_order_item->get('loan_due_date', array('dateFormat' => 'delimited', 'timeOmit' => true)));
     $this->view->setVar('t_order_item', $t_order_item);
     $this->view->setVar('additional_fees', $t_order_item->getAdditionalFeesHTMLFormBundle($this->request, array('config' => $this->opo_client_services_config, 'currency_symbol' => $this->opo_client_services_config->get('currency_symbol'), 'type' => 'L')));
     $this->view->setVar('additional_fees_for_new_items', $t_order_item->getAdditionalFeesHTMLFormBundle($this->request, array('config' => $this->opo_client_services_config, 'currency_symbol' => $this->opo_client_services_config->get('currency_symbol'), 'type' => 'L')));
     $this->view->setVar('additional_fee_codes', $va_additional_fee_codes = $this->opo_client_services_config->getAssoc('additional_loan_fees'));
     foreach ($va_additional_fee_codes as $vs_code => $va_info) {
         $va_default_values['ADDITIONAL_FEE_' . $vs_code] = $va_info['default_cost'];
     }
     $this->view->setVar('default_values', $va_default_values);
     $this->render('order_item_list_html.php');
 }
Ejemplo n.º 4
0
 /**
  * 
  */
 public function removeItem($pn_item_id, $pa_options = null)
 {
     if (isset($pa_options['order_id']) && (int) $pa_options['order_id']) {
         $vn_order_id = (int) $pa_options['order_id'];
     } else {
         $vn_order_id = $this->getPrimaryKey();
     }
     if (!$vn_order_id) {
         return null;
     }
     $t_item = new ca_commerce_order_items($pn_item_id);
     if (!$t_item->getPrimaryKey()) {
         return false;
     }
     if ($t_item->get('order_id') != $vn_order_id) {
         return false;
     }
     $t_item->setMode(ACCESS_WRITE);
     $t_item->delete(true);
     if ($t_item->numErrors()) {
         $this->errors = $t_item->errors;
         return false;
     }
     return true;
 }
 /**
  *
  */
 public function GetSelectedRepresentationCount()
 {
     $pn_item_id = $this->request->getParameter('item_id', pInteger);
     $t_order_item = new ca_commerce_order_items($pn_item_id);
     $t_order = new ca_commerce_orders($t_order_item->get('order_id'));
     $vn_num_reps_selected = $t_order_item->getSelectedRepresentationCount();
     $vn_num_reps = $t_order_item->getRepresentationCount();
     $vs_msg = $vn_num_reps == 1 ? _t("%1/%2 page selected", $vn_num_reps_selected, $vn_num_reps) : _t("%1/%2 pages selected", $vn_num_reps_selected, $vn_num_reps);
     $this->response->addContent($vs_msg);
 }
Ejemplo n.º 6
0
 /**
  *
  */
 public function Download()
 {
     $pn_item_id = $this->request->getParameter('item_id', pInteger);
     $t_item = new ca_commerce_order_items($pn_item_id);
     $t_order = new ca_commerce_orders($t_item->get('order_id'));
     $t_transaction = new ca_commerce_transactions($t_order->get('transaction_id'));
     $o_media = new Media();
     if ($t_item->getPrimaryKey() && $t_order->getPrimaryKey()) {
         // Is the order paid for...
         if (!in_array($t_order->get('order_status'), array('PROCESSED', 'PROCESSED_AWAITING_DIGITIZATION', 'COMPLETED'))) {
             $this->notification->addNotification(_t("This order must be processed before you can download items"), __NOTIFICATION_TYPE_ERROR__);
             $this->Index();
             return;
         }
         // ... and accessible by this user?
         if ($t_transaction->get('user_id') != $this->request->getUserID()) {
             $this->notification->addNotification(_t("You may not download this item"), __NOTIFICATION_TYPE_ERROR__);
             $this->Index();
             return;
         }
         // Is this item downloadable?
         if ($t_item->get('fullfillment_method') != 'DOWNLOAD') {
             $this->notification->addNotification(_t("This item cannot be downloaded"), __NOTIFICATION_TYPE_ERROR__);
             $this->Index();
             return;
         }
         // Which reps, and what versions?
         $t_object = new ca_objects($t_item->get('object_id'));
         $va_services_list = array();
         if (is_array($va_service_groups = $this->opo_client_services_config->getAssoc("service_groups"))) {
             foreach ($va_service_groups as $vs_group => $va_services_in_group) {
                 foreach ($va_services_in_group['services'] as $vs_service => $va_service_info) {
                     $va_services_list[$vs_service] = $va_service_info;
                 }
             }
         }
         if (!($vs_version = $va_services_list[$t_item->get('service')]['download_version'])) {
             $vs_version = 'small';
         }
         $va_reps = $t_object->getRepresentations(array($vs_version));
         $va_reps_to_download = $t_item->getRepresentationIDs();
         $o_zip = new ZipFile();
         $va_files = array();
         $vn_size = 0;
         foreach ($va_reps as $va_rep) {
             if (!isset($va_reps_to_download[$va_rep['representation_id']]) || !$va_reps_to_download[$va_rep['representation_id']]) {
                 continue;
             }
             $va_tmp = explode('.', $va_rep['paths'][$vs_version]);
             $vs_ext = array_pop($va_tmp);
             if ($va_rep['original_filename']) {
                 $va_tmp2 = explode(".", $va_rep['original_filename']);
                 if (sizeof($va_tmp2) > 1) {
                     array_pop($va_tmp2);
                 }
                 $vs_filename = join(".", $va_tmp2) . ".{$vs_ext}";
             } else {
                 $vs_filename = $t_object->get('idno') . "_" . $va_rep['representation_id'] . ".{$vs_ext}";
             }
             $vn_size += $va_files[$va_rep['paths'][$vs_version]] = filesize($va_rep['paths'][$vs_version]);
             $o_zip->addFile($va_rep['paths'][$vs_version], $vs_filename, 0, array('compression' => 0));
         }
         $this->view->setVar('zip', $o_zip);
         $this->view->setVar('version_download_name', date('dmY', $t_order->get('created_on', array('GET_DIRECT_DATE' => true))) . '-' . $t_order->getPrimaryKey());
         // Log fulfillment
         $t_item->logFulfillmentEvent('DOWNLOAD', array('ip_addr' => $_SERVER['REMOTE_ADDR'], 'user_id' => $this->request->getUserID(), 'datetime' => time(), 'user_agent' => $_SERVER['HTTP_USER_AGENT'], 'files' => $va_files, 'size' => $vn_size, 'representation_ids' => $va_reps_to_download));
         return $this->render('Account/download_binary.php');
     }
     $this->notification->addNotification(_t("You may not download this"), __NOTIFICATION_TYPE_ERROR__);
     $this->Index();
     return;
 }