public function __construct($ps_plugin_path) { $this->description = _t('Handles periodic cleanup and email alert tasks for client services features.'); parent::__construct(); $this->opo_config = Configuration::load(); $this->opo_client_services_config = caGetClientServicesConfiguration(); }
public static function getProcessor() { $o_config = caGetClientServicesConfiguration(); $vs_classname = $o_config->get("payment_processor") . "Gateway"; if (!file_exists(__CA_LIB_DIR__ . "/core/Payment/{$vs_classname}.php")) { return null; } require_once __CA_LIB_DIR__ . "/core/Payment/{$vs_classname}.php"; return new $vs_classname(); }
print $this->request->getBaseUrlPath(); ?> /index.php/Search/lookup', {showIcons: false, searchDelay: 100, minimumCharacters: 3, limitPerCategory: 3}); }); // initialize CA Utils caUI.initUtils(); </script> </head> <body> <div id="topBar"> <?php print join(" ", $this->getVar('nav')->getHTMLMenuBarAsLinkArray()); $vb_client_services = (bool) $this->request->config->get('enable_client_services'); if (!$this->request->config->get('dont_allow_registration_and_login')) { if ($this->request->isLoggedIn()) { $o_client_services_config = caGetClientServicesConfiguration(); if ($vb_client_services && (bool) $o_client_services_config->get('enable_user_communication')) { // // Unread client communications // $t_comm = new ca_commerce_communications(); $va_unread_messages = $t_comm->getMessages(array('unreadOnly' => true, 'user_id' => $this->request->getUserID())); $va_message_set_ids = array(); foreach ($va_unread_messages as $vn_transaction_id => $va_messages) { $va_message_set_ids[] = $va_messages[0]['set_id']; } } if (!$this->request->config->get('disable_my_collections')) { # --- get all sets for user $t_set = new ca_sets(); $va_sets = caExtractValuesByUserLocale($t_set->getSets(array('table' => 'ca_objects', 'user_id' => $this->request->getUserID())));
public function __construct($pn_id = null) { $this->opo_client_services_config = caGetClientServicesConfiguration(); if ($va_service_groups = $this->opo_client_services_config->getAssoc('service_groups')) { $va_services = array(); foreach ($va_service_groups as $vs_group_code => $va_group_info) { $this->opa_service_groups[$vs_group_code] = $va_group_info; foreach ($va_group_info['services'] as $vs_service_code => $va_service_info) { $va_services[$va_service_info['label']] = $vs_service_code; $vs_cost = $this->_formatCostForDisplay($va_service_info); $this->opa_service_groups[$vs_group_code]['services'][$vs_service_code]['label'] = $va_service_info['label'] . "<br/><em>{$vs_cost}</em>"; $this->opo_services_list[$vs_service_code] = $va_service_info; } } BaseModel::$s_ca_models_definitions['ca_commerce_order_items']['FIELDS']['service']['BOUNDS_CHOICE_LIST'] = $va_services; } if (is_array($va_methods = $this->opo_client_services_config->getAssoc('fulfillment_methods'))) { $va_method_list = array(); foreach ($va_methods as $vs_code => $va_info) { $va_method_list[$va_info['label']] = $vs_code; } BaseModel::$s_ca_models_definitions['ca_commerce_order_items']['FIELDS']['fullfillment_method']['BOUNDS_CHOICE_LIST'] = $va_method_list; } parent::__construct($pn_id); }
/** * Sets payment information and saves to database (unless dontSaveToDatabase option is set) * * @param array $ps_payment_info * @param array $pa_options Options array: * dontSaveToDatabase = * dontChargeCreditCard = */ public function setPaymentInfo($pa_payment_info, $pa_options = null) { $o_config = caGetClientServicesConfiguration(); $vs_currency = $o_config->get('currency'); $va_payment_info = array('order_id' => $this->getPrimaryKey(), 'created_on' => (int) $this->get('created_on', array('GET_DIRECT_DATE' => true))); $vb_dont_save_to_database = isset($pa_options['dontSaveToDatabase']) && $pa_options['dontSaveToDatabase'] ? true : false; $vb_dont_charge_credit_card = isset($pa_options['dontChargeCreditCard']) && $pa_options['dontChargeCreditCard'] ? true : false; $this->clearErrors(); switch ($vs_payment_method = $this->get('payment_method')) { case 'CREDIT': foreach (array('credit_card_type', 'credit_card_number', 'credit_card_ccv', 'credit_card_exp_mon', 'credit_card_exp_yr') as $vs_fld) { $vs_val = isset($pa_payment_info[$vs_fld]) ? $pa_payment_info[$vs_fld] : null; switch ($vs_fld) { case 'credit_card_type': $va_cc_types = $o_config->getAssoc('credit_card_types'); if (!is_array($va_cc_types)) { $va_cc_types = array(); } if (array_search($vs_val, $va_cc_types) === false) { $this->postError(1101, _t('Credit card type is invalid'), 'ca_commerce_orders->setPaymentInfo()'); } break; case 'credit_card_ccv': switch ($pa_payment_info['credit_card_type']) { case 'AMEX': if (strlen($vs_val) != 4) { $this->postError(1101, _t('Credit card CCV is invalid'), 'ca_commerce_orders->setPaymentInfo()'); } break; default: if (strlen($vs_val) != 3) { $this->postError(1101, _t('Credit card CCV is invalid'), 'ca_commerce_orders->setPaymentInfo()'); } break; } break; case 'credit_card_number': $vs_val = preg_replace('![^\\d]+!', '', $vs_val); if (!caValidateCreditCardNumber($vs_val)) { $this->postError(1101, _t('Credit card number is invalid'), 'ca_commerce_orders->setPaymentInfo()'); } break; case 'credit_card_exp_mon': if ((int) $vs_val < 1 || (int) $vs_val > 12) { $this->postError(1101, _t('Credit card month is invalid'), 'ca_commerce_orders->setPaymentInfo()'); } break; case 'credit_card_exp_yr': $vn_current_year = (int) date("Y"); $vn_current_month = (int) date("m"); if ((int) $vs_val < $vn_current_year || (int) $vs_val == $vn_current_year && $pa_payment_info['credit_card_exp_mon'] < $vn_current_month) { $this->postError(1101, _t('Credit card is expired'), 'ca_commerce_orders->setPaymentInfo()'); } if ((int) $vs_val > $vn_current_year + 12) { $this->postError(1101, _t('Credit card year is invalid'), 'ca_commerce_orders->setPaymentInfo()'); } break; } $va_payment_info[$vs_fld] = $vs_val; } break; case 'CHECK': foreach (array('check_payee', 'check_bank', 'check_date', 'check_number') as $vs_fld) { $vs_val = isset($pa_payment_info[$vs_fld]) ? $pa_payment_info[$vs_fld] : null; if ($this->get('payment_received_on')) { switch ($vs_fld) { case 'check_payee': if (!strlen($vs_val)) { $this->postError(1101, _t('Payee name must be set'), 'ca_commerce_orders->setPaymentInfo()'); } break; case 'check_bank': if (!strlen($vs_val)) { $this->postError(1101, _t('Bank name must be set'), 'ca_commerce_orders->setPaymentInfo()'); } break; case 'check_date': if (!caDateToUnixTimestamp($vs_val)) { $this->postError(1101, _t('Check date is invalid'), 'ca_commerce_orders->setPaymentInfo()'); } break; case 'check_number': if (!strlen($vs_val)) { $this->postError(1101, _t('Check number must be set'), 'ca_commerce_orders->setPaymentInfo()'); } break; } } $va_payment_info[$vs_fld] = $vs_val; } break; case 'PO': foreach (array('purchase_order_date', 'purchase_order_number') as $vs_fld) { $vs_val = isset($pa_payment_info[$vs_fld]) ? $pa_payment_info[$vs_fld] : null; if ($this->get('payment_received_on')) { switch ($vs_fld) { case 'purchase_order_date': if (!caDateToUnixTimestamp($vs_val)) { $this->postError(1101, _t('Purchase order date is invalid'), 'ca_commerce_orders->setPaymentInfo()'); } break; case 'purchase_order_number': if (!strlen($vs_val)) { $this->postError(1101, _t('Purchase order number must be set'), 'ca_commerce_orders->setPaymentInfo()'); } break; } } $va_payment_info[$vs_fld] = $vs_val; } break; case 'NONE': case 'CASH': default: // noop break; } if ($vb_ret = $this->numErrors() > 0 ? false : true) { if ($vs_payment_method === 'CREDIT' && !$vb_dont_charge_credit_card && !$this->get('payment_received_on')) { // if it's a credit card try to actually charge the card if (!($o_payment = Payment::getProcessor())) { return null; } // couldn't load processor if ($va_payment_response = $o_payment->DoPayment($this->getTotal(), $va_payment_info, $this->getBillingInfo(), array('currency' => $vs_currency, 'note' => $o_config->get('payment_note')))) { if ($va_payment_response['success'] === true) { $this->set('payment_status', 'RECEIVED'); $this->set('payment_response', $va_payment_response); $this->set('payment_received_on', date('c')); $this->sendEmailPaymentNotification(true, $o_payment->getGatewayName(), $va_payment_response); } else { $this->postError(1101, _t('Credit card charge failed: %1', $va_payment_response['error']), 'ca_commerce_orders->setPaymentInfo()'); $this->sendEmailPaymentNotification(false, $o_payment->getGatewayName(), $va_payment_response); return false; } } } if ($vs_payment_method === 'CREDIT') { // obscure credit card # and CCV $vs_len = strlen($va_payment_info['credit_card_number']); $va_payment_info['credit_card_number'] = 'xxxx-xxxxxxx-x' . substr($va_payment_info['credit_card_number'], $vs_len - 5, 5); //$va_payment_info['credit_card_ccv'] = str_repeat("x", strlen($va_payment_info['credit_card_ccv'])); } $this->set('payment_details', $va_payment_info); } else { // Errors in payment info return $vb_ret; } if (!$vb_dont_save_to_database) { $this->setMode(ACCESS_WRITE); $_REQUEST['form_timestamp'] = time(); // disable form collision checking since this update will trigger it return $this->update(); } return $vb_ret; }