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'); }
/** * */ 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'); }
/** * */ 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); }
/** * */ 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; }