Make WordPress Core

Ticket #38884: clickandpledge_payment.class.2.php

File clickandpledge_payment.class.2.php, 61.9 KB (added by krshnkrishna49, 10 years ago)

payment class

Line 
1<?php
2
3//include_once dirname(__FILE__).'/clickandpledge_common.inc';
4require_once dirname(__FILE__).'/clickandpledge_admin_controll.php';
5class Payment_ClickandPledge extends Wpjb_Payment_Abstract
6{
7 var $responsecodes = array();
8 public function __construct(Wpjb_Model_Payment $data = null)
9 {
10 $this->_data = $data;
11 add_action( 'wp_ajax_clickandpledge_transaction', array( __CLASS__, 'clickandpledge_transaction' ) );
12 add_action( 'wp_ajax_nopriv_clickandpledge_transaction', array( __CLASS__, 'clickandpledge_transaction' ) );
13
14 $this->responsecodes = array(2054=>'Total amount is wrong',2055=>'AccountGuid is not valid',2056=>'AccountId is not valid',2057=>'Username is not valid',2058=>'Password is not valid',2059=>'Invalid recurring parameters',2060=>'Account is disabled',2101=>'Cardholder information is null',2102=>'Cardholder information is null',2103=>'Cardholder information is null',2104=>'Invalid billing country',2105=>'Credit Card number is not valid',2106=>'Cvv2 is blank',2107=>'Cvv2 length error',2108=>'Invalid currency code',2109=>'CreditCard object is null',2110=>'Invalid card type ',2111=>'Card type not currently accepted',2112=>'Card type not currently accepted',2210=>'Order item list is empty',2212=>'CurrentTotals is null',2213=>'CurrentTotals is invalid',2214=>'TicketList lenght is not equal to quantity',2215=>'NameBadge lenght is not equal to quantity',2216=>'Invalid textonticketbody',2217=>'Invalid textonticketsidebar',2218=>'Invalid NameBadgeFooter',2304=>'Shipping CountryCode is invalid',2305=>'Shipping address missed',2401=>'IP address is null',2402=>'Invalid operation',2501=>'WID is invalid',2502=>'Production transaction is not allowed. Contact support for activation.',2601=>'Invalid character in a Base-64 string',2701=>'ReferenceTransaction Information Cannot be NULL',2702=>'Invalid Refrence Transaction Information',2703=>'Expired credit card',2805=>'eCheck Account number is invalid',2807=>'Invalid payment method',2809=>'Invalid payment method',2811=>'eCheck payment type is currently not accepted',2812=>'Invalid check number',1001=>'Internal error. Retry transaction',1002=>'Error occurred on external gateway please try again',2001=>'Invalid account information',2002=>'Transaction total is not correct',2003=>'Invalid parameters',2004=>'Document is not a valid xml file',2005=>'OrderList can not be empty',3001=>'Invalid RefrenceTransactionID',3002=>'Invalid operation for this transaction',4001=>'Fraud transaction',4002=>'Duplicate transaction',5001=>'Declined (general)',5002=>'Declined (lost or stolen card)',5003=>'Declined (fraud)',5004=>'Declined (Card expired)',5005=>'Declined (Cvv2 is not valid)',5006=>'Declined (Insufficient fund)',5007=>'Declined (Invalid credit card number)');
15 }
16 function get_user_ip() {
17 $ipaddress = '';
18 if (isset($_SERVER['HTTP_CLIENT_IP']))
19 $ipaddress = $_SERVER['HTTP_CLIENT_IP'];
20 else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
21 $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
22 else if(isset($_SERVER['HTTP_X_FORWARDED']))
23 $ipaddress = $_SERVER['HTTP_X_FORWARDED'];
24 else if(isset($_SERVER['HTTP_FORWARDED_FOR']))
25 $ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
26 else if(isset($_SERVER['HTTP_FORWARDED']))
27 $ipaddress = $_SERVER['HTTP_FORWARDED'];
28 else
29 $ipaddress = $_SERVER['REMOTE_ADDR'];
30 $parts = explode(',', $ipaddress);
31 if(count($parts) > 1) $ipaddress = $parts[0];
32 return $ipaddress;
33 }
34
35 function safeString( $str, $length=1, $start=0 )
36 {
37 $str = preg_replace('/\x03/', '', $str); //Remove new line characters
38 return substr( htmlspecialchars( ( $str ) ), $start, $length );
39 }
40
41 public function clickandpledge_transaction(){
42 $post = $_POST;
43 global $wpdb;
44 $orderplacedcheck = $wpdb->get_row( 'SELECT * FROM '.$wpdb->prefix.'wpjb_payment WHERE id = '.$post['id'], OBJECT );
45 if($orderplacedcheck) {
46 $post['object_id'] = $orderplacedcheck->object_id;
47 $post['object_type'] = $orderplacedcheck->object_type;
48
49 $classObject = new Payment_ClickandPledge();
50 $strParam = $classObject->buildXML($post);
51 $connect = array('soap_version' => SOAP_1_1, 'trace' => 1, 'exceptions' => 0);
52 $client = new SoapClient('https://paas.cloud.clickandpledge.com/paymentservice.svc?wsdl', $connect);
53 $soapParams = array('instruction'=>$strParam);
54 $response = $client->Operation($soapParams);
55 $params = array();
56 if (($response === FALSE)) {
57 $params['error'] = 'Connection to payment gateway failed - no data returned.';
58 $params['ResultCode'] = '99999';
59 $params['status'] = 'Fail';
60 } else {
61 $ResultCode=$response->OperationResult->ResultCode;
62 $transation_number=$response->OperationResult->TransactionNumber;
63 $VaultGUID=$response->OperationResult->VaultGUID;
64
65 if($ResultCode=='0')
66 {
67 $response_message = $response->OperationResult->ResultData;
68 //Success
69 $params['TransactionNumber'] = $VaultGUID;
70 $params['trxn_result_code'] = $response_message;
71 $params['status'] = 'Success';
72 $params['ResultCode'] = $ResultCode;
73 }
74 else
75 {
76 if( in_array( $ResultCode, array( 2051,2052,2053 ) ) )
77 {
78 $AdditionalInfo = $response->OperationResult->AdditionalInfo;
79 }
80 else
81 {
82 if( isset( $classObject->responsecodes[$ResultCode] ) )
83 {
84 $AdditionalInfo = $classObject->responsecodes[$ResultCode];
85 }
86 else
87 {
88 $AdditionalInfo = 'Unknown error';
89 }
90 }
91 $params['error'] = $AdditionalInfo;
92 $params['ResultCode'] = $ResultCode;
93 $params['status'] = 'Fail';
94 }
95 }
96 echo json_encode($params);
97 die();
98 }
99 }
100
101 public function buildXML( $post ) {
102 $params = $post;
103
104 $dom = new DOMDocument('1.0', 'UTF-8');
105 $root = $dom->createElement('CnPAPI', '');
106 $root->setAttribute("xmlns","urn:APISchema.xsd");
107 $root = $dom->appendChild($root);
108
109 $version=$dom->createElement("Version","1.5");
110 $version=$root->appendChild($version);
111
112 $engine = $dom->createElement('Engine', '');
113 $engine = $root->appendChild($engine);
114
115 $application = $dom->createElement('Application','');
116 $application = $engine->appendChild($application);
117
118 $applicationid=$dom->createElement('ID','CnP_WPJobBoard_WordPress');
119 $applicationid=$application->appendChild($applicationid);
120
121 $applicationname=$dom->createElement('Name','CnP_WPJobBoard_WordPress');
122 $applicationid=$application->appendChild($applicationname);
123
124 $applicationversion=$dom->createElement('Version','1.0.0.20150604');
125 $applicationversion=$application->appendChild($applicationversion);
126
127 $request = $dom->createElement('Request', '');
128 $request = $engine->appendChild($request);
129
130 $operation=$dom->createElement('Operation','');
131 $operation=$request->appendChild( $operation );
132
133 $operationtype=$dom->createElement('OperationType','Transaction');
134 $operationtype=$operation->appendChild($operationtype);
135
136 if($this->get_user_ip() != '') {
137 $ipaddress=$dom->createElement('IPAddress',$this->get_user_ip());
138 $ipaddress=$operation->appendChild($ipaddress);
139 }
140
141 $httpreferrer=$dom->createElement('UrlReferrer',htmlentities($_SERVER['HTTP_REFERER']));
142 $httpreferrer=$operation->appendChild($httpreferrer);
143
144 $authentication=$dom->createElement('Authentication','');
145 $authentication=$request->appendChild($authentication);
146
147 $accounttype=$dom->createElement('AccountGuid',$params['clickandpledge_AccountGuid'] );
148 $accounttype=$authentication->appendChild($accounttype);
149
150 $accountid=$dom->createElement('AccountID',$params['clickandpledge_AccountID'] );
151 $accountid=$authentication->appendChild($accountid);
152
153 $order=$dom->createElement('Order','');
154 $order=$request->appendChild($order);
155
156 if( $params['clickandpledge_OrderMode'] == 'test' ){
157 $orderMode = 'Test';
158 }else{
159 $orderMode = 'Production';
160 }
161 $ordermode=$dom->createElement('OrderMode',$orderMode);
162 $ordermode=$order->appendChild($ordermode);
163
164 global $wpdb;
165 $paymentdetails = $wpdb->get_row( 'SELECT * FROM '.$wpdb->prefix.'wpjb_payment WHERE id = '.$params['id'], OBJECT );
166 //Object Type:1-wpjb_job, 2 - wpjb_resume, 3 - wpjb_membership
167 $orderdetails = array();
168 $orderdetails['BillingEmail'] = $paymentdetails->email;
169 $orderdetails['CustomFields'] = array();
170 $order_custom_fields = $wpdb->get_results( 'SELECT * FROM '.$wpdb->prefix.'wpjb_meta meta INNER JOIN '.$wpdb->prefix.'wpjb_meta_value meta_value ON meta.id=meta_value.meta_id WHERE meta.meta_type=3 AND meta_value.object_id = '.$params['object_id'].' ORDER BY meta_value.meta_id ASC', OBJECT );
171 if(count($order_custom_fields) > 0) {
172 $oldname = $strval = '';
173 $fieldindex = 0;
174 foreach($order_custom_fields as $single_row) {
175 $fieldindex++;
176 if($oldname == '') $oldname = $single_row->name;
177 if($oldname != $single_row->name) {
178 $orderdetails['CustomFields'][$oldname] = substr($strval,0,-1);
179 $strval = '';
180 }
181 if(count($order_custom_fields) == $fieldindex) {
182 $orderdetails['CustomFields'][$single_row->name] = $single_row->value;
183 }
184 $strval .= $single_row->value.',';
185 $oldname = $single_row->name;
186 }
187 }
188 if(isset($post['clickandpledge_listing_id']) && $post['clickandpledge_listing_id'] != '') {
189 $parts = explode('_', $post['clickandpledge_listing_id']);
190 if(count($parts) == 3) {
191 $listid = $parts[2];
192 if($listid != '') {
193 $listrow = $wpdb->get_row( 'SELECT * FROM '.$wpdb->prefix.'wpjb_pricing WHERE id = '.$listid, OBJECT );
194 if($listrow != '') {
195 $orderdetails['CustomFields']['Listing Type'] = $listrow->title;
196 }
197 }
198 }
199 }
200 if($params['object_type'] == 1) {
201 $orderplaced = $wpdb->get_row( 'SELECT * FROM '.$wpdb->prefix.'wpjb_job WHERE id = '.$params['object_id'], OBJECT );
202 $orderdetails['ItemName'] = 'Job: '.$orderplaced->job_title;
203 if($orderplaced->job_description != '')
204 $orderdetails['CustomFields']['Description'] = $orderplaced->job_description;
205 if($orderplaced->job_country != '') {
206 $countries = Wpjb_List_Country::getAll();
207 if(count($countries) > 0) {
208 foreach($countries as $country) {
209 if($country['code'] == $orderplaced->job_country)
210 $orderdetails['CustomFields']['Job Country'] = $country['name'];
211 }
212 }
213
214 }
215 if($orderplaced->job_state != '')
216 $orderdetails['CustomFields']['Job State'] = $orderplaced->job_state;
217 if($orderplaced->job_zip_code != '')
218 $orderdetails['CustomFields']['Job Zip-Code'] = $orderplaced->job_zip_code;
219 if($orderplaced->job_city != '')
220 $orderdetails['CustomFields']['Job City'] = $orderplaced->job_city;
221 if($orderplaced->company_name != '')
222 $orderdetails['CustomFields']['Company Name'] = $orderplaced->company_name;
223 if($orderplaced->company_email != '')
224 $orderdetails['CustomFields']['Contact Email'] = $orderplaced->company_email;
225 if($orderplaced->company_url != '')
226 $orderdetails['CustomFields']['Website'] = $orderplaced->company_url;
227
228 $job = new Wpjb_Model_Job($params['object_id']);
229 if(isset($job->getTag()->type) && is_array($job->getTag()->type)) {
230 foreach($job->getTag()->type as $type) {
231 $orderdetails['CustomFields']['Job Type'] = $type->title;
232 }
233 }
234 if(isset($job->tag->category) && is_array($job->tag->category)) {
235 foreach($job->tag->category as $cat) {
236 $orderdetails['CustomFields']['Category'] = $cat->title;
237 }
238 }
239
240 } else if($params['object_type'] == 2) { //Resume
241 $orderplaced = $wpdb->get_row( 'SELECT * FROM '.$wpdb->prefix.'wpjb_resume r INNER JOIN '.$wpdb->prefix.'posts p ON r.post_id = p.id WHERE r.id = '.$params['object_id'], OBJECT );
242 if($orderplaced) {
243 if($orderplaced->post_title != '') {
244 $orderdetails['ItemName'] = 'Resume: '.$orderplaced->post_title;
245 }else {
246 $orderdetails['ItemName'] = 'Single Resume Access';
247 }
248 }
249 else {
250 $orderdetails['ItemName'] = 'Single Resume Access';
251 }
252 } else if($params['object_type'] == 3) { //Membership
253 $orderplaced = $wpdb->get_row( 'SELECT * FROM '.$wpdb->prefix.'wpjb_membership WHERE id = '.$params['object_id'], OBJECT );
254 if($orderplaced->package_id != '') {
255 $package = $wpdb->get_row( 'SELECT * FROM '.$wpdb->prefix.'wpjb_pricing WHERE id = '.$orderplaced->package_id, OBJECT );
256 $orderdetails['ItemName'] = 'Membership: '.$package->title;
257 } else {
258 $orderdetails['ItemName'] = 'Employer Membership Package';
259 }
260 }
261 $UnitPriceCalculate = $TotalDiscountCalculate = 0;
262
263 $cardholder=$dom->createElement('CardHolder','');
264 $cardholder=$order->appendChild($cardholder);
265
266 $billinginfo=$dom->createElement('BillingInformation','');
267 $billinginfo=$cardholder->appendChild($billinginfo);
268
269 if(isset($post['clickandpledge_selectedPaymentMethod']) && $post['clickandpledge_selectedPaymentMethod'] == 'CreditCard') {
270 $billfirst_name=$dom->createElement('BillingFirstName',$this->safeString($params['clickandpledge_FirstName_CreditCard'],50));
271 $billfirst_name=$billinginfo->appendChild($billfirst_name);
272 $billlast_name=$dom->createElement('BillingLastName',$this->safeString($params['clickandpledge_LastName_CreditCard'],50));
273 $billlast_name=$billinginfo->appendChild($billlast_name);
274 } else if(isset($post['clickandpledge_selectedPaymentMethod']) && $post['clickandpledge_selectedPaymentMethod'] == 'eCheck') {
275 $billfirst_name=$dom->createElement('BillingFirstName',$this->safeString($params['clickandpledge_FirstName_eCheck'],50));
276 $billfirst_name=$billinginfo->appendChild($billfirst_name);
277 $billlast_name=$dom->createElement('BillingLastName',$this->safeString($params['clickandpledge_LastName_eCheck'],50));
278 $billlast_name=$billinginfo->appendChild($billlast_name);
279 } else if(isset($post['clickandpledge_selectedPaymentMethod']) && $post['clickandpledge_selectedPaymentMethod'] == 'Invoice') {
280 $billfirst_name=$dom->createElement('BillingFirstName',$this->safeString($params['clickandpledge_FirstName_Invoice'],50));
281 $billfirst_name=$billinginfo->appendChild($billfirst_name);
282 $billlast_name=$dom->createElement('BillingLastName',$this->safeString($params['clickandpledge_LastName_Invoice'],50));
283 $billlast_name=$billinginfo->appendChild($billlast_name);
284 } else if(isset($post['clickandpledge_selectedPaymentMethod']) && $post['clickandpledge_selectedPaymentMethod'] == 'PurchaseOrder') {
285 $billfirst_name=$dom->createElement('BillingFirstName',$this->safeString($params['clickandpledge_FirstName_PO'],50));
286 $billfirst_name=$billinginfo->appendChild($billfirst_name);
287 $billlast_name=$dom->createElement('BillingLastName',$this->safeString($params['clickandpledge_LastName_PO'],50));
288 $billlast_name=$billinginfo->appendChild($billlast_name);
289 }
290
291 if (isset($orderdetails['BillingEmail']) && $orderdetails['BillingEmail'] != '') {
292 $bill_email=$dom->createElement('BillingEmail',$orderdetails['BillingEmail']);
293 $bill_email=$billinginfo->appendChild($bill_email);
294 }
295 //echo 'SELECT * FROM '.$wpdb->prefix.'wpjb_job WHERE post_id = '.$params['id'];
296 //echo '<pre>';
297 //print_r($orderplaced);
298//die('fffffffffff');
299 $billingaddress=$dom->createElement('BillingAddress','');
300 $billingaddress=$cardholder->appendChild($billingaddress);
301
302 if(isset($orderdetails['CustomFields']) && count($orderdetails['CustomFields']) > 0) {
303 $customfieldlist = $dom->createElement('CustomFieldList','');
304 $customfieldlist = $cardholder->appendChild($customfieldlist);
305
306 foreach($orderdetails['CustomFields'] as $key => $val) {
307 $customfield = $dom->createElement('CustomField','');
308 $customfield = $customfieldlist->appendChild($customfield);
309
310 $fieldname = $dom->createElement('FieldName',$key);
311 $fieldname = $customfield->appendChild($fieldname);
312
313 $fieldvalue = $dom->createElement('FieldValue',$this->safeString($val, 500));
314 $fieldvalue = $customfield->appendChild($fieldvalue);
315 }
316 }
317
318 $paymentmethod=$dom->createElement('PaymentMethod','');
319 $paymentmethod=$cardholder->appendChild($paymentmethod);
320
321 if(isset($post['clickandpledge_selectedPaymentMethod']) && $post['clickandpledge_selectedPaymentMethod'] == 'CreditCard') {
322 $payment_type=$dom->createElement('PaymentType','CreditCard');
323 $payment_type=$paymentmethod->appendChild($payment_type);
324
325 $creditcard=$dom->createElement('CreditCard','');
326 $creditcard=$paymentmethod->appendChild($creditcard);
327 $credit_card_name = '';
328 if (isset($params['clickandpledge_nameOnCard']) && $params['clickandpledge_nameOnCard'] != '') {
329 $credit_card_name .= ' '.$params['clickandpledge_nameOnCard'];
330 }
331
332 $credit_name=$dom->createElement('NameOnCard',$this->safeString( $credit_card_name, 50));
333 $credit_name=$creditcard->appendChild($credit_name);
334
335 $credit_number=$dom->createElement('CardNumber',$this->safeString( str_replace(' ', '', $params['clickandpledge_cardNumber']), 17));
336 $credit_number=$creditcard->appendChild($credit_number);
337
338 $credit_cvv=$dom->createElement('Cvv2',$params['clickandpledge_cvc']);
339 $credit_cvv=$creditcard->appendChild($credit_cvv);
340
341 $credit_expdate=$dom->createElement('ExpirationDate',$params['clickandpledge_cardExpMonth'] . "/" . substr($params['clickandpledge_cardExpYear'],2,2));
342 $credit_expdate=$creditcard->appendChild($credit_expdate);
343 }
344 elseif(isset($post['clickandpledge_selectedPaymentMethod']) && $post['clickandpledge_selectedPaymentMethod'] == 'eCheck') {
345 $payment_type=$dom->createElement('PaymentType','Check');
346 $payment_type=$paymentmethod->appendChild($payment_type);
347
348 $echeck=$dom->createElement('Check','');
349 $echeck=$paymentmethod->appendChild($echeck);
350 if(!empty($post['clickandpledge_echeck_AccountNumber'])) {
351 $ecAccount=$dom->createElement('AccountNumber',$this->safeString( $post['clickandpledge_echeck_AccountNumber'], 17));
352 $ecAccount=$echeck->appendChild($ecAccount);
353 }
354 if(!empty($post['clickandpledge_echeck_AccountType'])) {
355 $ecAccount_type=$dom->createElement('AccountType',$post['clickandpledge_echeck_AccountType']);
356 $ecAccount_type=$echeck->appendChild($ecAccount_type);
357 }
358 if(!empty($post['clickandpledge_echeck_RoutingNumber'])) {
359 $ecRouting=$dom->createElement('RoutingNumber',$this->safeString( $post['clickandpledge_echeck_RoutingNumber'], 9));
360 $ecRouting=$echeck->appendChild($ecRouting);
361 }
362 if(!empty($post['clickandpledge_echeck_CheckNumber'])) {
363 $ecCheck=$dom->createElement('CheckNumber',$this->safeString( $post['clickandpledge_echeck_CheckNumber'], 10));
364 $ecCheck=$echeck->appendChild($ecCheck);
365 }
366 if(!empty($post['clickandpledge_echeck_CheckType'])) {
367 $ecChecktype=$dom->createElement('CheckType',$post['clickandpledge_echeck_CheckType']);
368 $ecChecktype=$echeck->appendChild($ecChecktype);
369 }
370 if(!empty($post['clickandpledge_echeck_NameOnAccount'])) {
371 $ecName=$dom->createElement('NameOnAccount',$this->safeString( $post['clickandpledge_echeck_NameOnAccount'], 100));
372 $ecName=$echeck->appendChild($ecName);
373 }
374 if(!empty($post['clickandpledge_echeck_IdType'])) {
375 $ecIdtype=$dom->createElement('IdType',$post['clickandpledge_echeck_IdType']);
376 $ecIdtype=$echeck->appendChild($ecIdtype);
377 }
378 if(!empty($post['clickandpledge_echeck_IdNumber'])) {
379 $IdNumber=$dom->createElement('IdNumber',$this->safeString( $post['clickandpledge_echeck_IdNumber'], 30));
380 $IdNumber=$creditcard->appendChild($IdNumber);
381 }
382 if(!empty($post['clickandpledge_echeck_IdStateCode'])) {
383 $IdStateCode=$dom->createElement('IdStateCode', $post['clickandpledge_echeck_IdStateCode']);
384 $IdStateCode=$creditcard->appendChild($IdStateCode);
385 }
386 }
387 elseif(isset($post['clickandpledge_selectedPaymentMethod']) && $post['clickandpledge_selectedPaymentMethod'] == 'Invoice') {
388 $payment_type=$dom->createElement('PaymentType','Invoice');
389 $payment_type=$paymentmethod->appendChild($payment_type);
390 $invoice=$dom->createElement('Invoice','');
391 $invoice=$paymentmethod->appendChild($invoice);
392 $CheckNumber=$dom->createElement('InvoiceCheckNumber',$post['InvoiceCheckNumber']);
393 $CheckNumber=$invoice->appendChild($CheckNumber);
394 }
395 elseif(isset($post['clickandpledge_selectedPaymentMethod']) && $post['clickandpledge_selectedPaymentMethod'] == 'PurchaseOrder') {
396 $payment_type=$dom->createElement('PaymentType','PurchaseOrder');
397 $payment_type=$paymentmethod->appendChild($payment_type);
398 $PurchaseOrder=$dom->createElement('PurchaseOrder','');
399 $PurchaseOrder=$paymentmethod->appendChild($PurchaseOrder);
400 $CheckNumber=$dom->createElement('PurchaseOrderNumber',$post['PurchaseOrderNumber']);
401 $CheckNumber=$PurchaseOrder->appendChild($CheckNumber);
402 } else {
403 $payment_type=$dom->createElement('PaymentType','CreditCard');
404 $payment_type=$paymentmethod->appendChild($payment_type);
405
406 $creditcard=$dom->createElement('CreditCard','');
407 $creditcard=$paymentmethod->appendChild($creditcard);
408
409 $credit_card_name = '';
410 if (isset($params['clickandpledge_nameOnCard_First']) && $params['clickandpledge_nameOnCard_First'] != '') {
411 $credit_card_name .= $params['clickandpledge_nameOnCard_First'];
412 }
413 if (isset($params['clickandpledge_nameOnCard_Last']) && $params['clickandpledge_nameOnCard_Last'] != '') {
414 $credit_card_name .= ' '.$params['clickandpledge_nameOnCard_Last'];
415 }
416
417 $credit_name=$dom->createElement('NameOnCard',$this->safeString( $credit_card_name, 50));
418 $credit_name=$creditcard->appendChild($credit_name);
419
420 $credit_number=$dom->createElement('CardNumber',$this->safeString( str_replace(' ', '', $params['clickandpledge_cardNumber']), 17));
421 $credit_number=$creditcard->appendChild($credit_number);
422
423 $credit_cvv=$dom->createElement('Cvv2',$params['clickandpledge_cvc']);
424 $credit_cvv=$creditcard->appendChild($credit_cvv);
425
426 $credit_expdate=$dom->createElement('ExpirationDate',$params['clickandpledge_cardExpMonth'] . "/" . substr($params['clickandpledge_cardExpYear'],2,2));
427 $credit_expdate=$creditcard->appendChild($credit_expdate);
428 }
429
430 $orderitemlist=$dom->createElement('OrderItemList','');
431 $orderitemlist=$order->appendChild($orderitemlist);
432
433 $orderitem=$dom->createElement('OrderItem','');
434 $orderitem=$orderitemlist->appendChild($orderitem);
435
436 $itemid=$dom->createElement('ItemID',1);
437 $itemid=$orderitem->appendChild($itemid);
438
439 $itemname=$dom->createElement('ItemName',$this->safeString(trim($orderdetails['ItemName']), 100));
440 $itemname=$orderitem->appendChild($itemname);
441
442 $quntity=$dom->createElement('Quantity',1);
443 $quntity=$orderitem->appendChild($quntity);
444 $line_subtotal = $params['clickandpledge_Amount'];
445 if( isset($params['clickandpledge_isRecurring']) && $params['clickandpledge_isRecurring'] == 'true' ) {
446 if($params['clickandpledge_RecurringMethod'] == 'Installment') {
447 if(isset($params['clickandpledge_indefinite']) && $params['clickandpledge_indefinite'] == 'true') {
448 $UnitPriceDecimal = ($this->number_format(($line_subtotal/999),2,'.','')*100);
449 $UnitPriceCalculate += ($this->number_format(($line_subtotal/999),2,'.','')*1);
450 } else {
451 $UnitPriceDecimal = ($this->number_format(($line_subtotal/$params['clickandpledge_Installment']),2,'.','')*100);
452 $UnitPriceCalculate += ($this->number_format(($line_subtotal/$params['clickandpledge_Installment']),2,'.','')*1);
453 }
454 $unitprice=$dom->createElement('UnitPrice', $UnitPriceDecimal);
455 $unitprice=$orderitem->appendChild($unitprice);
456 } else {
457 $unitprice=$dom->createElement('UnitPrice',($line_subtotal*100));
458 $unitprice=$orderitem->appendChild($unitprice);
459 //New Fix
460 $UnitPriceCalculate += ($line_subtotal*1);
461 }
462 } else {
463 $unitprice=$dom->createElement('UnitPrice',($line_subtotal*100));
464 $unitprice=$orderitem->appendChild($unitprice);
465 $UnitPriceCalculate += ($line_subtotal*1);
466 }
467
468 //Discount
469 if($params['clickandpledge_Discount'] > 0) {
470 $order_discount = $params['clickandpledge_Discount'];
471 if( isset($params['clickandpledge_isRecurring']) && $params['clickandpledge_isRecurring'] == 'true' ) {
472 if($params['clickandpledge_RecurringMethod'] == 'Installment') {
473 $TotalDiscount = ($order_discount)/$params['clickandpledge_Installment'];
474 $TotalDiscount = $this->number_format($TotalDiscount, 2, '.', '')*100;
475 } else {
476 $TotalDiscount = $this->number_format($order_discount, 2, '.', '')*100;
477 }
478 } else {
479 $TotalDiscount = $this->number_format($order_discount, 2, '.', '')*100;
480 }
481 if($TotalDiscount > 0) {
482 $unit_disc=$dom->createElement('UnitDiscount', $TotalDiscount);
483 $unit_disc=$orderitem->appendChild($unit_disc);
484 $TotalDiscountCalculate = $TotalDiscount;
485 }
486 }
487
488 $receipt=$dom->createElement('Receipt','');
489 $receipt=$order->appendChild($receipt);
490
491 $recipt_lang=$dom->createElement('Language','ENG');
492 $recipt_lang=$receipt->appendChild($recipt_lang);
493
494 if( isset($params['clickandpledge_OrganizationInformation']) && $params['clickandpledge_OrganizationInformation'] != '')
495 {
496 $recipt_org=$dom->createElement('OrganizationInformation',$this->safeString($params['clickandpledge_OrganizationInformation'], 1500));
497 $recipt_org=$receipt->appendChild($recipt_org);
498 }
499
500 if( isset($params['clickandpledge_TermsCondition']) && $params['clickandpledge_TermsCondition'] != '')
501 {
502 $recipt_terms=$dom->createElement('TermsCondition',$this->safeString($params['clickandpledge_TermsCondition'], 1500));
503 $recipt_terms=$receipt->appendChild($recipt_terms);
504 }
505
506 if( isset($params['clickandpledge_email_customer']) && $params['clickandpledge_email_customer'] == 'yes' ) { //Sending the email based on admin settings
507 $recipt_email=$dom->createElement('EmailNotificationList','');
508 $recipt_email=$receipt->appendChild($recipt_email);
509
510 $email_notification = '';
511 if (isset($params['billing_email']) && $params['billing_email'] != '') {
512 $email_notification = $params['billing_email'];
513 }
514
515 $email_note=$dom->createElement('NotificationEmail',$email_notification);
516 $email_note=$recipt_email->appendChild($email_note);
517 }
518 $transation=$dom->createElement('Transaction','');
519 $transation=$order->appendChild($transation);
520
521 $trans_type=$dom->createElement('TransactionType','Payment');
522 $trans_type=$transation->appendChild($trans_type);
523
524 $trans_desc=$dom->createElement('DynamicDescriptor','DynamicDescriptor');
525 $trans_desc=$transation->appendChild($trans_desc);
526
527
528 if( isset($params['clickandpledge_isRecurring']) && $params['clickandpledge_isRecurring'] == 'true' )
529 {
530 $trans_recurr=$dom->createElement('Recurring','');
531 $trans_recurr=$transation->appendChild($trans_recurr);
532 if (isset($params['clickandpledge_indefinite']) && $params['clickandpledge_indefinite'] == 'true' )
533 {
534 $total_installment=$dom->createElement('Installment',999);
535 $total_installment=$trans_recurr->appendChild($total_installment);
536 }
537 else
538 {
539 if($params['clickandpledge_Installment'] != '') {
540 $total_installment=$dom->createElement('Installment',$params['clickandpledge_Installment']);
541 $total_installment=$trans_recurr->appendChild($total_installment);
542 } else {
543 $total_installment=$dom->createElement('Installment',1);
544 $total_installment=$trans_recurr->appendChild($total_installment);
545 }
546 }
547 $total_periodicity=$dom->createElement('Periodicity',$params['clickandpledge_Periodicity']);
548 $total_periodicity=$trans_recurr->appendChild($total_periodicity);
549
550 if( isset($params['clickandpledge_RecurringMethod']) ) {
551 $RecurringMethod=$dom->createElement('RecurringMethod',$params['clickandpledge_RecurringMethod']);
552 $RecurringMethod=$trans_recurr->appendChild($RecurringMethod);
553 } else {
554 $RecurringMethod=$dom->createElement('RecurringMethod','Subscription');
555 $RecurringMethod=$trans_recurr->appendChild($RecurringMethod);
556 }
557 }
558
559 $trans_totals=$dom->createElement('CurrentTotals','');
560 $trans_totals=$transation->appendChild($trans_totals);
561 if($TotalDiscountCalculate > 0) {
562 $total_discount=$dom->createElement('TotalDiscount',$TotalDiscountCalculate);
563 $total_discount=$trans_totals->appendChild($total_discount);
564 }
565
566 if( isset($params['clickandpledge_isRecurring']) && $params['clickandpledge_isRecurring'] == 'true' ) {
567 if($params['clickandpledge_RecurringMethod'] == 'Installment') {
568 $Total = $this->number_format($UnitPriceCalculate, 2, '.', '')*100 - $TotalDiscountCalculate;
569 $total_amount=$dom->createElement('Total', $Total);
570 $total_amount=$trans_totals->appendChild($total_amount);
571 } else {
572 $Total = $this->number_format($UnitPriceCalculate, 2, '.', '')*100 - $TotalDiscountCalculate;;
573 $total_amount=$dom->createElement('Total',$Total);
574 $total_amount=$trans_totals->appendChild($total_amount);
575 }
576 } else {
577 $Total = $this->number_format($UnitPriceCalculate, 2, '.', '')*100 - $TotalDiscountCalculate;;
578 $total_amount=$dom->createElement('Total',$Total);
579 $total_amount=$trans_totals->appendChild($total_amount);
580 }
581
582 if($TotalDiscountCalculate > 0) {
583 if(isset($post['clickandpledge_coupon_code']) && $post['clickandpledge_coupon_code'] != '') {
584 $trans_coupon=$dom->createElement('CouponCode',$post['clickandpledge_coupon_code']);
585 $trans_coupon=$transation->appendChild($trans_coupon);
586 }
587 }
588
589 $strParam =$dom->saveXML();
590 //die();
591 return $strParam;
592 }
593
594 public function getEngine() {
595 return "clickandpledge_payment";
596 }
597 public function getTitle() {
598 return "Click & Pledge";
599 }
600
601 public function getForm()
602 {
603 return "Config_ClickandPledge";
604 }
605
606
607
608 public function processTransaction() {
609 return array(
610 "external_id" => $this->_post['token'],
611 "paid" => $this->_post['clickandpledge_Amount']-$this->_post['clickandpledge_Discount'],
612 );
613 }
614 public function bind(array $post, array $get) {
615 // this is a good place to set $this->data
616 $this->setObject(new Wpjb_Model_Payment($post["id"]));
617 parent::bind($post, $get);
618 }
619 private function getMerchant() {
620 $merchant = array();
621 //USD Account
622 $merchant['wpjobboard_clickandpledge_usdaccount'] = $this->conf('wpjobboard_clickandpledge_usdaccount');
623 $merchant['wpjobboard_clickandpledge_USD_AccountID'] = $this->conf('wpjobboard_clickandpledge_USD_AccountID');
624 $merchant['wpjobboard_clickandpledge_USD_AccountGuid'] = $this->conf('wpjobboard_clickandpledge_USD_AccountGuid');
625 $merchant['wpjobboard_clickandpledge_USD_OrderMode'] = $this->conf('wpjobboard_clickandpledge_USD_OrderMode');
626
627 //EUR Account
628 $merchant['wpjobboard_clickandpledge_euraccount'] = $this->conf('wpjobboard_clickandpledge_euraccount');
629 $merchant['wpjobboard_clickandpledge_EUR_AccountID'] = $this->conf('wpjobboard_clickandpledge_EUR_AccountID');
630 $merchant['wpjobboard_clickandpledge_EUR_AccountGuid'] = $this->conf('wpjobboard_clickandpledge_EUR_AccountGuid');
631 $merchant['wpjobboard_clickandpledge_EUR_OrderMode'] = $this->conf('wpjobboard_clickandpledge_EUR_OrderMode');
632
633 //CAD Account
634 $merchant['wpjobboard_clickandpledge_cadaccount'] = $this->conf('wpjobboard_clickandpledge_cadaccount');
635 $merchant['wpjobboard_clickandpledge_CAD_AccountID'] = $this->conf('wpjobboard_clickandpledge_CAD_AccountID');
636 $merchant['wpjobboard_clickandpledge_CAD_AccountGuid'] = $this->conf('wpjobboard_clickandpledge_CAD_AccountGuid');
637 $merchant['wpjobboard_clickandpledge_CAD_OrderMode'] = $this->conf('wpjobboard_clickandpledge_CAD_OrderMode');
638
639 //GBP Account
640 $merchant['wpjobboard_clickandpledge_gbpaccount'] = $this->conf('wpjobboard_clickandpledge_gbpaccount');
641 $merchant['wpjobboard_clickandpledge_GBP_AccountID'] = $this->conf('wpjobboard_clickandpledge_GBP_AccountID');
642 $merchant['wpjobboard_clickandpledge_GBP_AccountGuid'] = $this->conf('wpjobboard_clickandpledge_GBP_AccountGuid');
643 $merchant['wpjobboard_clickandpledge_GBP_OrderMode'] = $this->conf('wpjobboard_clickandpledge_GBP_OrderMode');
644
645 //HKD Account
646 $merchant['wpjobboard_clickandpledge_hkdaccount'] = $this->conf('wpjobboard_clickandpledge_hkdaccount');
647 $merchant['wpjobboard_clickandpledge_HKD_AccountID'] = $this->conf('wpjobboard_clickandpledge_HKD_AccountID');
648 $merchant['wpjobboard_clickandpledge_HKD_AccountGuid'] = $this->conf('wpjobboard_clickandpledge_HKD_AccountGuid');
649 $merchant['wpjobboard_clickandpledge_HKD_OrderMode'] = $this->conf('wpjobboard_clickandpledge_HKD_OrderMode');
650
651 //Payment Methods
652 $merchant['wpjobboard_clickandpledge_Paymentmethods'] = $this->conf('wpjobboard_clickandpledge_Paymentmethods');
653 //Default Payment Method
654 $merchant['wpjobboard_clickandpledge_DefaultpaymentMethod'] = $this->conf('wpjobboard_clickandpledge_DefaultpaymentMethod');
655
656 //Receipt Settings
657 $merchant['wpjobboard_clickandpledge_emailcustomer'] = $this->conf('wpjobboard_clickandpledge_emailcustomer');
658 $merchant['wpjobboard_clickandpledge_OrganizationInformation'] = $this->conf('wpjobboard_clickandpledge_OrganizationInformation');
659 $merchant['wpjobboard_clickandpledge_TermsCondition'] = $this->conf('wpjobboard_clickandpledge_TermsCondition');
660
661 //Recurring Settings
662 $merchant['wpjobboard_clickandpledge_isRecurring'] = $this->conf('wpjobboard_clickandpledge_isRecurring');
663 $merchant['wpjobboard_clickandpledge_RecurringLabel'] = $this->conf('wpjobboard_clickandpledge_RecurringLabel');
664 $merchant['wpjobboard_clickandpledge_Periodicity'] = $this->conf('wpjobboard_clickandpledge_Periodicity');
665 $merchant['wpjobboard_clickandpledge_RecurringMethod_Subscription'] = $this->conf('wpjobboard_clickandpledge_RecurringMethod_Subscription');
666 $merchant['wpjobboard_clickandpledge_maxrecurrings_Subscription'] = $this->conf('wpjobboard_clickandpledge_maxrecurrings_Subscription');
667 $merchant['wpjobboard_clickandpledge_RecurringMethod_Installment'] = $this->conf('wpjobboard_clickandpledge_RecurringMethod_Installment');
668 $merchant['wpjobboard_clickandpledge_maxrecurrings_Installment'] = $this->conf('wpjobboard_clickandpledge_maxrecurrings_Installment');
669 $merchant['wpjobboard_clickandpledge_indefinite'] = $this->conf('wpjobboard_clickandpledge_indefinite');
670 return $merchant;
671 }
672 public function render() {
673 $data = $this->_data;
674 $id = $this->_data->id;
675 $availableCurrencies = array();
676 $paymentMethods = array();
677 $merchant = $this->getMerchant();
678
679 //echo '<pre>';
680 //print_r($_POST);
681 if(isset($merchant['wpjobboard_clickandpledge_usdaccount']) && $merchant['wpjobboard_clickandpledge_usdaccount'] != '')
682 array_push($availableCurrencies, 'USD');
683 if(isset($merchant['wpjobboard_clickandpledge_euraccount']) && $merchant['wpjobboard_clickandpledge_euraccount'] != '')
684 array_push($availableCurrencies, 'EUR');
685 if(isset($merchant['wpjobboard_clickandpledge_cadaccount']) && $merchant['wpjobboard_clickandpledge_cadaccount'] != '')
686 array_push($availableCurrencies, 'CAD');
687 if(isset($merchant['wpjobboard_clickandpledge_gbpaccount']) && $merchant['wpjobboard_clickandpledge_gbpaccount'] != '')
688 array_push($availableCurrencies, 'GBP');
689 if(isset($merchant['wpjobboard_clickandpledge_hkdaccount']) && $merchant['wpjobboard_clickandpledge_hkdaccount'] != '')
690 array_push($availableCurrencies, 'HKD');
691
692
693 $selectedCurrency = $this->_data->payment_currency;
694 if(in_array($selectedCurrency,$availableCurrencies)) {
695 if(isset($merchant['wpjobboard_clickandpledge_Paymentmethods']) && count($merchant['wpjobboard_clickandpledge_Paymentmethods']) > 0) {
696 foreach($merchant['wpjobboard_clickandpledge_Paymentmethods'] as $method) {
697 if($method == 'CreditCard')
698 $paymentMethods[$method] = 'Credit Card';
699 if($method == 'eCheck')
700 $paymentMethods[$method] = 'eCheck';
701 if($method == 'PurchaseOrder')
702 $paymentMethods[$method] = 'Purchase Order';
703 if($method == 'Invoice')
704 $paymentMethods[$method] = 'Invoice';
705 }
706 }
707 else {
708 $paymentMethods['CreditCard'] = 'Credit Card';
709 $paymentMethods['eCheck'] = 'eCheck';
710 $paymentMethods['PurchaseOrder'] = 'Purchase Order';
711 $paymentMethods['Invoice'] = 'Invoice';
712 }
713
714 $defaultpayment = 'CreditCard';
715 if($merchant['wpjobboard_clickandpledge_DefaultpaymentMethod'] != '')
716 $defaultpayment = $merchant['wpjobboard_clickandpledge_DefaultpaymentMethod'];
717
718
719
720 $ajaxurl = admin_url("admin-ajax.php");
721
722 wp_register_script( 'clickandpledge-plugin-script', plugins_url( '/clickandpledge.js', __FILE__ ) );
723 wp_enqueue_script( 'clickandpledge-plugin-script' );
724
725 wp_register_script( 'jquery.validate.min-script', plugins_url( '/jquery.validate.min.js', __FILE__ ) );
726 wp_enqueue_script( 'jquery.validate.min-script' );
727
728 wp_register_script( 'clickandpledge_validations-script', plugins_url( '/clickandpledge_validations.js', __FILE__ ) );
729 wp_enqueue_script( 'clickandpledge_validations-script' );
730 $html = '
731 <style type="text/css">
732 .form-row > label > span {
733 display: block;
734 width: 200px;
735 float: left;
736 line-height: 2em;
737 }
738 .form-row label.error {
739 color: red;
740 font-style: italic;
741 }
742 </style>
743<script type="text/javascript">
744 var WPJB_PAYMENT_ID = '.$id.';
745 if (typeof ajaxurl === "undefined") {
746 ajaxurl = "'.$ajaxurl.'";
747 }
748</script>
749 <form action="" method="POST" id="payment-form">
750 <h3>'.__("Click & Pledge", "wpjobboard").'</h3>
751 <div class="payment-errors"></div>
752 <div class="htmlholder">
753 ';
754
755 if(count($paymentMethods) > 0) {
756 $html .= '<span style="width:980px" id="payment_methods">';
757 foreach($paymentMethods as $pkey => $pval) {
758 if($pkey == $defaultpayment) {
759 $html .= '<input type="radio" id="cnp_payment_method_selection_'.$pkey.'" name="cnp_payment_method_selection" class="cnp_payment_method_selection" style="margin: 0 0 0 0;" value="'.$pkey.'" checked>&nbsp<b>'.$pval.'</b>&nbsp;&nbsp;&nbsp;';
760 } else {
761 $html .= '<input type="radio" id="cnp_payment_method_selection_'.$pkey.'" name="cnp_payment_method_selection" class="cnp_payment_method_selection" style="margin: 0 0 0 0;" value="'.$pkey.'">&nbsp;<b>'.$pval.'</b>&nbsp;&nbsp;&nbsp;';
762 }
763 }
764 $html .= '</span>';
765 }
766
767 $html .= '<script>
768 jQuery("#cnp_payment_method_selection_CreditCard").click(function(){
769 jQuery("#cnp_CreditCard_div").show();
770 jQuery("#cnp_eCheck_div").hide();
771 jQuery("#cnp_Invoice_div").hide();
772 jQuery("#cnp_PurchaseOrder_div").hide();
773
774 });
775 jQuery("#cnp_payment_method_selection_eCheck").click(function(){
776 jQuery("#cnp_CreditCard_div").hide();
777 jQuery("#cnp_eCheck_div").show();
778 jQuery("#cnp_Invoice_div").hide();
779 jQuery("#cnp_PurchaseOrder_div").hide();
780
781 });
782 jQuery("#cnp_payment_method_selection_Invoice").click(function(){
783 jQuery("#cnp_CreditCard_div").hide();
784 jQuery("#cnp_eCheck_div").hide();
785 jQuery("#cnp_Invoice_div").show();
786 jQuery("#cnp_PurchaseOrder_div").hide();
787
788 });
789 jQuery("#cnp_payment_method_selection_PurchaseOrder").click(function(){
790 jQuery("#cnp_CreditCard_div").hide();
791 jQuery("#cnp_eCheck_div").hide();
792 jQuery("#cnp_Invoice_div").hide();
793 jQuery("#cnp_PurchaseOrder_div").show();
794
795 });
796 </script>';
797 $cdivdisplay = ($defaultpayment == 'CreditCard') ? 'block' : 'none';
798 $recurringhtml = '';
799 //echo $merchant['wpjobboard_clickandpledge_isRecurring'].'############';
800 //die();
801 if(isset($merchant['wpjobboard_clickandpledge_isRecurring']) && $merchant['wpjobboard_clickandpledge_isRecurring'] == 1) {
802 if($merchant['wpjobboard_clickandpledge_RecurringLabel'] != '') {
803 $recurringhtml .= '<br><div class="form-row" id="clickandpledge_isRecurring_div">
804 <label>
805 <span>'.__($merchant['wpjobboard_clickandpledge_RecurringLabel'], "wpjobboard").'</span>
806 <input type="checkbox" name="clickandpledge_isRecurring" id="clickandpledge_isRecurring"/>
807 </label>
808 </div>';
809 } else {
810 $recurringhtml .= '<br><div class="form-row" id="clickandpledge_isRecurring_div">
811 <label>
812 <span>'.__('Is this Recurring Payment?', "wpjobboard").'</span>
813 <input type="checkbox" name="clickandpledge_isRecurring" id="clickandpledge_isRecurring"/>
814 </label>
815 </div>';
816 }
817 $RecurringMethod = array();
818 if(isset($merchant['wpjobboard_clickandpledge_RecurringMethod_Subscription']) && is_array($merchant['wpjobboard_clickandpledge_RecurringMethod_Subscription']) && count($merchant['wpjobboard_clickandpledge_RecurringMethod_Subscription']) > 0) {
819 array_push($RecurringMethod, 'Subscription');
820 }
821 if(isset($merchant['wpjobboard_clickandpledge_RecurringMethod_Installment']) && is_array($merchant['wpjobboard_clickandpledge_RecurringMethod_Installment']) && count($merchant['wpjobboard_clickandpledge_RecurringMethod_Installment']) > 0) {
822 array_push($RecurringMethod, 'Installment');
823 }
824 if(count($RecurringMethod) == 0) {
825 array_push($RecurringMethod, 'Subscription');
826 array_push($RecurringMethod, 'Installment');
827 }
828 if(count($RecurringMethod) > 0) {
829 if(count($RecurringMethod) == 1) {
830 $recurringhtml .= '<input type="hidden" name="clickandpledge_RecurringMethod" id="clickandpledge_RecurringMethod" value="'.$RecurringMethod[0].'">';
831 } else {
832 $recurringhtml .= '<br><div class="form-row" id="clickandpledge_RecurringMethod_div">
833 <label>
834 <span>'.__("Recurring Method", "wpjobboard").'</span>
835 <select id="clickandpledge_RecurringMethod" name="clickandpledge_RecurringMethod">';
836 foreach ($RecurringMethod as $r) {
837 $recurringhtml .= '<option value="'.$r.'">'.$r.'</option>';
838 }
839 $recurringhtml .= '</select>
840 </label>
841 </div>';
842 }
843 } else {
844 $recurringhtml .= '<div class="form-row" id="clickandpledge_RecurringMethod_div">
845 <label>
846 <span>'.__("Recurring Method", "wpjobboard").'</span>
847 <select id="clickandpledge_RecurringMethod" name="clickandpledge_RecurringMethod">
848 <option value="Subscription">Subscription</option>
849 <option value="Installment">Installment</option>
850 </select>
851 </label>
852 </div>';
853 }
854
855 if(isset($merchant['wpjobboard_clickandpledge_indefinite']) && is_array($merchant['wpjobboard_clickandpledge_indefinite']) && count($merchant['wpjobboard_clickandpledge_indefinite']) > 0) {
856 $recurringhtml .= '<br><div class="form-row" id="clickandpledge_indefinite_div">
857 <label>
858 <span>'.__("Indefinite Recurring", "wpjobboard").'</span>
859 <input type="checkbox" name="clickandpledge_indefinite" id="clickandpledge_indefinite"/>
860 </label>
861 </div>';
862 }
863
864 if(isset($merchant['wpjobboard_clickandpledge_Periodicity']) && is_array($merchant['wpjobboard_clickandpledge_Periodicity']) && count($merchant['wpjobboard_clickandpledge_Periodicity']) > 0) {
865 $recurringhtml .= '<br><div class="form-row" id="clickandpledge_Periodicity_div">
866 <label>
867 <span>'.__("Every", "wpjobboard").'</span>
868 <select id="clickandpledge_Periodicity" name="clickandpledge_Periodicity">';
869 foreach ($merchant['wpjobboard_clickandpledge_Periodicity'] as $r) {
870 $recurringhtml .= '<option value="'.$r.'">'.$r.'</option>';
871 }
872 $recurringhtml .= '</select>
873 </label>&nbsp;
874 <span id="clickandpledge_Installment_div"><input type="text" name="clickandpledge_Installment" id="clickandpledge_Installment" class="required" title="Installments" style="width:100px;" maxlength="3"/>&nbsp;<font color="#FF0000">*</font> payments</span>
875 </div>
876 <script>
877 jQuery("#clickandpledge_Installment").keypress(function(e) {
878 var a = [];
879 var k = e.which;
880
881 for (i = 48; i < 58; i++)
882 a.push(i);
883
884 if (!(a.indexOf(k)>=0))
885 e.preventDefault();
886 });
887 </script>';
888 } else {
889 $Periodicity = array();
890 $Periodicity['Week'] = 'Week';
891 $Periodicity['2 Weeks'] = '2 Weeks';
892 $Periodicity['Month'] = 'Month';
893 $Periodicity['2 Months'] = '2 Months';
894 $Periodicity['Quarter'] = 'Quarter';
895 $Periodicity['6 Months'] = '6 Months';
896 $Periodicity['Year'] = 'Year';
897 $recurringhtml .= '<br><div class="form-row" id="clickandpledge_Periodicity_div">
898 <label>
899 <span>'.__("Every", "wpjobboard").'</span>
900 <select id="clickandpledge_Periodicity" name="clickandpledge_Periodicity">';
901 foreach ($Periodicity as $k => $v) {
902 $recurringhtml .= '<option value="'.$k.'">'.$v.'</option>';
903 }
904 $recurringhtml .= '</select>
905 </label>&nbsp;
906 <span id="clickandpledge_Installment_div"><input type="text" name="clickandpledge_Installment" id="clickandpledge_Installment" class="required" title="Installments" style="width:100px;" maxlength="3"/>&nbsp;<font color="#FF0000">*</font> payments</span>
907 </div>
908 <script>
909 jQuery("#clickandpledge_Installment").keypress(function(e) {
910 var a = [];
911 var k = e.which;
912
913 for (i = 48; i < 58; i++)
914 a.push(i);
915
916 if (!(a.indexOf(k)>=0))
917 e.preventDefault();
918 });
919 </script>';
920 }
921
922 }
923 //echo $recurringhtml;
924 //die('333333333333');
925 $clickandpledgename_CreditCard = '<div class="form-row cnp_payment_style" >
926 <label>
927 <span>'.__("Name&nbsp;<font color='red'>*</font>", "wpjobboard").'</span>
928 <input type="text" size="20" data-clickandpledge="number" name="clickandpledge_FirstName_CreditCard" id="clickandpledge_FirstName_CreditCard" class="required NameOnCard" placeholder="First Name"/>
929 <input type="text" size="20" data-clickandpledge="number" name="clickandpledge_LastName_CreditCard" id="clickandpledge_LastName_CreditCard" class="required NameOnCard" placeholder="Last Name"/>
930 </label>
931 </div>
932 <style>
933 .cnp_payment_style label span{
934 width: 100%;
935 }
936 #clickandpledge_FirstName_CreditCard, #clickandpledge_LastName_CreditCard {
937 width: 48%;
938 display: inline-block;
939 }
940 </style>
941 ';
942 $clickandpledgename_eCheck = '<div class="form-row cnp_payment_style" >
943 <label>
944 <span>'.__("Name&nbsp;<font color='red'>*</font>", "wpjobboard").'</span>
945 <input type="text" size="20" data-clickandpledge="number" name="clickandpledge_FirstName_eCheck" id="clickandpledge_FirstName_eCheck" class="required NameOnCard" placeholder="First Name"/>
946 <input type="text" size="20" data-clickandpledge="number" name="clickandpledge_LastName_eCheck" id="clickandpledge_LastName_eCheck" class="required NameOnCard" placeholder="Last Name"/>
947 </label>
948 </div>
949 <style>
950 .cnp_payment_style label span{
951 width: 100%;
952 }
953 #clickandpledge_FirstName_eCheck, #clickandpledge_LastName_eCheck {
954 width: 48%;
955 display: inline-block;
956 }
957 </style>
958 ';
959 $clickandpledgename_Invoice = '<div class="form-row cnp_payment_style" >
960 <label>
961 <span>'.__("Name&nbsp;<font color='red'>*</font>", "wpjobboard").'</span>
962 <input type="text" size="20" data-clickandpledge="number" name="clickandpledge_FirstName_Invoice" id="clickandpledge_FirstName_Invoice" class="required NameOnCard" placeholder="First Name"/>
963 <input type="text" size="20" data-clickandpledge="number" name="clickandpledge_LastName_Invoice" id="clickandpledge_LastName_Invoice" class="required NameOnCard" placeholder="Last Name"/>
964 </label>
965 </div>
966 <style>
967 .cnp_payment_style label span{
968 width: 100%;
969 }
970 #clickandpledge_FirstName_Invoice, #clickandpledge_LastName_Invoice {
971 width: 48%;
972 display: inline-block;
973 }
974 </style> ';
975 $clickandpledgename_PO = '<div class="form-row cnp_payment_style" >
976 <label>
977 <span>'.__("Name&nbsp;<font color='red'>*</font>", "wpjobboard").'</span>
978 <input type="text" size="20" data-clickandpledge="number" name="clickandpledge_FirstName_PO" id="clickandpledge_FirstName_PO" class="required NameOnCard" placeholder="First Name"/>
979 <input type="text" size="20" data-clickandpledge="number" name="clickandpledge_LastName_PO" id="clickandpledge_LastName_PO" class="required NameOnCard" placeholder="Last Name"/>
980 </label>
981 </div>
982 <style>
983 .cnp_payment_style label span{
984 width: 100%;
985 }
986 #clickandpledge_FirstName_PO, #clickandpledge_LastName_PO {
987 width: 48%;
988 display: inline-block;
989 }
990 </style> ';
991
992 $html .= '<div style="display:'.$cdivdisplay.'" id="cnp_CreditCard_div">';
993 $html .= $clickandpledgename_CreditCard;
994 $html .= '<div class="form-row">
995 <label>
996 <span>'.__("Name On Card&nbsp;<font color='red'>*</font>", "wpjobboard").'</span>
997 <input type="text" size="20" data-clickandpledge="number" name="clickandpledge_nameOnCard" id="clickandpledge_nameOnCard" class="required NameOnCard" placeholder="Name On Card"/>
998 </label>
999 </div>
1000
1001 <div class="form-row">
1002 <label>
1003 <span>'.__("Card Number&nbsp;<font color='red'>*</font>", "wpjobboard").'</span>
1004 <input type="text" size="20" data-clickandpledge="number" name="clickandpledge_cardNumber" id="clickandpledge_cardNumber" class="required creditcard" placeholder="Card Number"/>
1005 </label>
1006 </div>
1007
1008 <div class="form-row">
1009 <label>
1010 <span>'.__("CVV&nbsp;<font color='red'>*</font>", "wpjobboard").'</span>
1011 <input type="text" size="4" data-clickandpledge="cvc" maxlength="4" name="clickandpledge_cvc" id="clickandpledge_cvc" class="required Cvv2" placeholder="CVV"/>
1012 </label>
1013 </div>
1014 <div class="form-row">
1015 <label><span>'.__("Expiration (MM/YYYY)&nbsp;<font color='red'>*</font>", "wpjobboard").'</span></label>
1016 <select name="clickandpledge_cardExpMonth" id="clickandpledge_cardExpMonth" class="required">'.$this->getMonths().'</select>
1017 <span> / </span>
1018 <select name="clickandpledge_cardExpYear" id="clickandpledge_cardExpYear" class="required" data-clickandpledge="exp-year">'.$this->getYears().'</select>
1019 </div>';
1020 $html .= $recurringhtml;
1021 $html .= '</div>'; //CreditCard Div End
1022
1023 $eCheckdivdisplay = ($defaultpayment == 'eCheck') ? 'block' : 'none';
1024 $recurringhtml_eCheck = '';
1025
1026 if(isset($merchant['wpjobboard_clickandpledge_isRecurring']) && $merchant['wpjobboard_clickandpledge_isRecurring'] == 1) {
1027 if($merchant['wpjobboard_clickandpledge_RecurringLabel'] != '') {
1028 $recurringhtml_eCheck .= '<br><div class="form-row" id="clickandpledge_isRecurring_div_eCheck">
1029 <label>
1030 <span>'.__($merchant['wpjobboard_clickandpledge_RecurringLabel'], "wpjobboard").'</span>
1031 <input type="checkbox" name="clickandpledge_isRecurring_eCheck" id="clickandpledge_isRecurring_eCheck"/>
1032 </label>
1033 </div>';
1034 } else {
1035 $recurringhtml_eCheck .= '<br><div class="form-row" id="clickandpledge_isRecurring_div_eCheck">
1036 <label>
1037 <span>'.__('Is this Recurring Payment?', "wpjobboard").'</span>
1038 <input type="checkbox" name="clickandpledge_isRecurring_eCheck" id="clickandpledge_isRecurring_eCheck"/>
1039 </label>
1040 </div>';
1041 }
1042 $RecurringMethod = array();
1043 if(isset($merchant['wpjobboard_clickandpledge_RecurringMethod_Subscription']) && is_array($merchant['wpjobboard_clickandpledge_RecurringMethod_Subscription']) && count($merchant['wpjobboard_clickandpledge_RecurringMethod_Subscription']) > 0) {
1044 array_push($RecurringMethod, 'Subscription');
1045 }
1046 if(isset($merchant['wpjobboard_clickandpledge_RecurringMethod_Installment']) && is_array($merchant['wpjobboard_clickandpledge_RecurringMethod_Installment']) && count($merchant['wpjobboard_clickandpledge_RecurringMethod_Installment']) > 0) {
1047 array_push($RecurringMethod, 'Installment');
1048 }
1049 if(count($RecurringMethod) == 0) {
1050 array_push($RecurringMethod, 'Subscription');
1051 array_push($RecurringMethod, 'Installment');
1052 }
1053 if(count($RecurringMethod) > 0) {
1054 if(count($RecurringMethod) == 1) {
1055 $recurringhtml_eCheck .= '<input type="hidden" name="clickandpledge_RecurringMethod_eCheck" id="clickandpledge_RecurringMethod_eCheck" value="'.$RecurringMethod[0].'">';
1056 } else {
1057 $recurringhtml_eCheck .= '<br><div class="form-row" id="clickandpledge_RecurringMethod_div_eCheck">
1058 <label>
1059 <span>'.__("Recurring Method", "wpjobboard").'</span>
1060 <select id="clickandpledge_RecurringMethod_eCheck" name="clickandpledge_RecurringMethod_eCheck">';
1061 foreach ($RecurringMethod as $r) {
1062 $recurringhtml_eCheck .= '<option value="'.$r.'">'.$r.'</option>';
1063 }
1064 $recurringhtml_eCheck .= '</select>
1065 </label>
1066 </div>';
1067 }
1068 } else {
1069 $recurringhtml_eCheck .= '<div class="form-row" id="clickandpledge_RecurringMethod_div_eCheck">
1070 <label>
1071 <span>'.__("Recurring Method", "wpjobboard").'</span>
1072 <select id="clickandpledge_RecurringMethod_eCheck" name="clickandpledge_RecurringMethod_eCheck">
1073 <option value="Subscription">Subscription</option>
1074 <option value="Installment">Installment</option>
1075 </select>
1076 </label>
1077 </div>';
1078 }
1079
1080 if(isset($merchant['wpjobboard_clickandpledge_indefinite']) && is_array($merchant['wpjobboard_clickandpledge_indefinite']) && count($merchant['wpjobboard_clickandpledge_indefinite']) > 0) {
1081 $recurringhtml_eCheck .= '<br><div class="form-row" id="clickandpledge_indefinite_div_eCheck">
1082 <label>
1083 <span>'.__("Indefinite Recurring", "wpjobboard").'</span>
1084 <input type="checkbox" name="clickandpledge_indefinite_eCheck" id="clickandpledge_indefinite_eCheck"/>
1085 </label>
1086 </div>';
1087 }
1088
1089 if(isset($merchant['wpjobboard_clickandpledge_Periodicity']) && is_array($merchant['wpjobboard_clickandpledge_Periodicity']) && count($merchant['wpjobboard_clickandpledge_Periodicity']) > 0) {
1090 $recurringhtml_eCheck .= '<br><div class="form-row" id="clickandpledge_Periodicity_div_eCheck">
1091 <label>
1092 <span>'.__("Every", "wpjobboard").'</span>
1093 <select id="clickandpledge_Periodicity_eCheck" name="clickandpledge_Periodicity_eCheck">';
1094 foreach ($merchant['wpjobboard_clickandpledge_Periodicity'] as $r) {
1095 $recurringhtml_eCheck .= '<option value="'.$r.'">'.$r.'</option>';
1096 }
1097 $recurringhtml_eCheck .= '</select>
1098 </label>&nbsp;
1099 <span id="clickandpledge_Installment_div_eCheck"><input type="text" name="clickandpledge_Installment_eCheck" id="clickandpledge_Installment_eCheck" class="required" title="Installments" style="width:100px;" maxlength="3"/>&nbsp;<font color="#FF0000">*</font> payments</span>
1100 </div>
1101 <script>
1102 jQuery("#clickandpledge_Installment_eCheck").keypress(function(e) {
1103 var a = [];
1104 var k = e.which;
1105
1106 for (i = 48; i < 58; i++)
1107 a.push(i);
1108
1109 if (!(a.indexOf(k)>=0))
1110 e.preventDefault();
1111 });
1112 </script>';
1113 } else {
1114 $Periodicity = array();
1115 $Periodicity['Week'] = 'Week';
1116 $Periodicity['2 Weeks'] = '2 Weeks';
1117 $Periodicity['Month'] = 'Month';
1118 $Periodicity['2 Months'] = '2 Months';
1119 $Periodicity['Quarter'] = 'Quarter';
1120 $Periodicity['6 Months'] = '6 Months';
1121 $Periodicity['Year'] = 'Year';
1122 $recurringhtml_eCheck .= '<br><div class="form-row" id="clickandpledge_Periodicity_div_eCheck">
1123 <label>
1124 <span>'.__("Every", "wpjobboard").'</span>
1125 <select id="clickandpledge_Periodicity_eCheck" name="clickandpledge_Periodicity_eCheck">';
1126 foreach ($Periodicity as $k => $v) {
1127 $recurringhtml_eCheck .= '<option value="'.$k.'">'.$v.'</option>';
1128 }
1129 $recurringhtml_eCheck .= '</select>
1130 </label>&nbsp;
1131 <span id="clickandpledge_Installment_div_eCheck"><input type="text" name="clickandpledge_Installment_eCheck" id="clickandpledge_Installment_eCheck" class="required" title="Installments" style="width:100px;" maxlength="3"/>&nbsp;<font color="#FF0000">*</font> payments</span>
1132 </div>
1133 <script>
1134 jQuery("#clickandpledge_Installment_eCheck").keypress(function(e) {
1135 var a = [];
1136 var k = e.which;
1137
1138 for (i = 48; i < 58; i++)
1139 a.push(i);
1140
1141 if (!(a.indexOf(k)>=0))
1142 e.preventDefault();
1143 });
1144 </script>';
1145 }
1146
1147 }
1148 $html .= '<div style="display:'.$eCheckdivdisplay.'" id="cnp_eCheck_div">';
1149 $html .= $clickandpledgename_eCheck;
1150 $html .= '
1151 <div class="form-row">
1152 <label>
1153 <span>'.__("Routing Number&nbsp;<font color='red'>*</font>", "wpjobboard").'</span>
1154 <input type="text" data-clickandpledge="number" name="clickandpledge_echeck_RoutingNumber" id="clickandpledge_echeck_RoutingNumber" class="required RoutingNumber" placeholder="Routing Number"/>
1155 </label>
1156 </div>
1157 <div class="form-row">
1158 <label>
1159 <span>'.__("Check Number&nbsp;<font color='red'>*</font>", "wpjobboard").'</span>
1160 <input type="text" data-clickandpledge="number" name="clickandpledge_echeck_CheckNumber" id="clickandpledge_echeck_CheckNumber" class="required CheckNumber" placeholder="Check Number"/>
1161 </label>
1162 </div>
1163 <div class="form-row">
1164 <label>
1165 <span>'.__("Account Number&nbsp;<font color='red'>*</font>", "wpjobboard").'</span>
1166 <input type="text" data-clickandpledge="number" name="clickandpledge_echeck_AccountNumber" id="clickandpledge_echeck_AccountNumber" class="required AccountNumber" placeholder="Account Number"/>
1167 </label>
1168 </div>
1169 <div class="form-row">
1170 <label>
1171 <span>'.__("Retype Account Number&nbsp;<font color='red'>*</font>", "wpjobboard").'</span>
1172 <input type="text" data-clickandpledge="number" name="clickandpledge_echeck_retypeAccountNumber" id="clickandpledge_echeck_retypeAccountNumber" class="required AccountNumber" placeholder="Retype Account Number"/>
1173 </label>
1174 </div>
1175 <div class="form-row">
1176 <label>
1177 <span>'.__("Account Type&nbsp;<font color='red'>*</font>", "wpjobboard").'</span>
1178 <select name="clickandpledge_echeck_AccountType" id="clickandpledge_echeck_AccountType" title="Account Type">
1179 <option value="SavingsAccount">SavingsAccount</option>
1180 <option value="CheckingAccount">CheckingAccount</option>
1181 </select>
1182 </label>
1183 </div>
1184 <div class="form-row">
1185 <label>
1186 <span>'.__("Check Type&nbsp;<font color='red'>*</font>", "wpjobboard").'</span>
1187 <select name="clickandpledge_echeck_CheckType" id="clickandpledge_echeck_CheckType" title="Check Type">
1188 <option value="Company">Company</option>
1189 <option value="Personal">Personal</option>
1190 </select>
1191 </label>
1192 </div>
1193 <div class="form-row">
1194 <label>
1195 <span>'.__("Name on Account&nbsp;<font color='red'>*</font>", "wpjobboard").'</span>
1196 <input type="text" data-clickandpledge="number" name="clickandpledge_echeck_NameOnAccount" id="clickandpledge_echeck_NameOnAccount" class="required AccountNumber" placeholder="Name on Account"/>
1197 </label>
1198 </div>
1199 <div class="form-row">
1200 <label>
1201 <span>'.__("Type of ID&nbsp;<font color='red'>*</font>", "wpjobboard").'</span>
1202 <select name="clickandpledge_echeck_IdType" id="clickandpledge_echeck_IdType" title="Type of ID">
1203 <option value="Driver">Driver</option>
1204 <option value="Military">Military</option>
1205 <option value="State">State</option>
1206 </select>
1207 </label>
1208 </div>';
1209 $html .= $recurringhtml_eCheck;
1210 $html .= '</div>'; //eCheck Div End
1211
1212 $Invoicedivdisplay = ($defaultpayment == 'Invoice') ? 'block' : 'none';
1213 $html .= '<div style="display:'.$Invoicedivdisplay.'" id="cnp_Invoice_div">';
1214 $html .= $clickandpledgename_Invoice;
1215 $html .= '
1216 <div class="form-row">
1217 <label>
1218 <span>'.__("Invoice Number", "wpjobboard").'</span>
1219 <input type="text" data-clickandpledge="number" name="clickandpledge_Invoice_InvoiceNumber" id="clickandpledge_Invoice_InvoiceNumber" class="InvoiceCheckNumber" placeholder="Invoice Number"/>
1220 </label>
1221 </div>';
1222 $html .= '</div>'; //Invoice Div End
1223
1224 $PurchaseOrderdivdisplay = ($defaultpayment == 'PurchaseOrder') ? 'block' : 'none';
1225 $html .= '<div style="display:'.$PurchaseOrderdivdisplay.'" id="cnp_PurchaseOrder_div">';
1226 $html .= $clickandpledgename_PO;
1227 $html .= '
1228 <div class="form-row">
1229 <label>
1230 <span>'.__("Purchase Order Number", "wpjobboard").'</span>
1231 <input type="text" data-clickandpledge="number" name="clickandpledge_PurchaseOrder_OrderNumber" id="clickandpledge_PurchaseOrder_OrderNumber" class="PurchaseOrderNumber" placeholder="Purchase Order Number"/>
1232 </label>
1233 </div>';
1234 $html .= '</div>'; //PurchaseOrder Div End
1235 $listing_id = '';
1236 if(isset($_POST['listing']) && $_POST['listing'] != '')
1237 $listing_id = $_POST['listing'];
1238 elseif(isset($_POST['listing_type']) && $_POST['listing_type'] != '')
1239 $listing_id = $_POST['listing_type'];
1240 $varArray = array(
1241 'clickandpledge_AccountID'=>$merchant['wpjobboard_clickandpledge_'.$selectedCurrency.'_AccountID'],
1242 'clickandpledge_AccountGuid'=>$merchant['wpjobboard_clickandpledge_'.$selectedCurrency.'_AccountGuid'],
1243 'clickandpledge_OrderMode' => $merchant['wpjobboard_clickandpledge_'.$selectedCurrency.'_OrderMode'],
1244 'clickandpledge_Amount' => $this->_data->payment_sum+$this->_data->payment_discount,
1245 'clickandpledge_Discount' => $this->_data->payment_discount,
1246 'clickandpledge_OrganizationInformation' => htmlspecialchars($merchant['wpjobboard_clickandpledge_OrganizationInformation']),
1247 'clickandpledge_TermsCondition' => htmlspecialchars($merchant['wpjobboard_clickandpledge_TermsCondition']),
1248 'clickandpledge_email_customer' => (is_array($merchant['wpjobboard_clickandpledge_emailcustomer']) && count($merchant['wpjobboard_clickandpledge_emailcustomer']) > 0) ? $merchant['wpjobboard_clickandpledge_emailcustomer'][0] : '',
1249 'clickandpledge_maxrecurrings_Subscription' => $merchant['wpjobboard_clickandpledge_maxrecurrings_Subscription'],
1250 'clickandpledge_maxrecurrings_Installment' => $merchant['wpjobboard_clickandpledge_maxrecurrings_Installment'],
1251 'clickandpledge_listing_id' => $listing_id,
1252 'clickandpledge_coupon_code' => (isset($_POST['coupon'])) ? $_POST['coupon'] : '',
1253 );
1254 foreach($varArray as $k=>$v)
1255 {
1256 $html.= '<input type="hidden" name="'.$k.'" id="'.$k.'" value="'.$v.'" />';
1257 }
1258 $html .= '<button type="submit">'.__("Submit Payment", "wpjobboard").'</button>
1259 </div>
1260 </form>';
1261 } else {
1262 if(count($availableCurrencies) > 0) {
1263 $html = 'Selected currency <b>'.$selectedCurrency.'</b> not supported by Click & Pledge. We are supporting <b>'.implode(',', $availableCurrencies).'</b> only. Please contact administrator.';
1264 } else {
1265 $html = 'Selected currency <b>'.$selectedCurrency.'</b> not supported by Click & Pledge. Please contact administrator.';
1266 }
1267 }
1268 return $html;
1269 }
1270 public function getMonths() {
1271 $str = '';
1272 for ($i = 1; $i <= 12; $i++) {
1273 if(date('m') == sprintf('%02d', $i)) {
1274 $str .= '<option value="'.sprintf('%02d', $i).'" selected>'.sprintf('%02d', $i).' ('.strftime('%B', mktime(0, 0, 0, $i, 1, 2000)).')</option>';
1275 } else {
1276 $str .= '<option value="'.sprintf('%02d', $i).'">'.sprintf('%02d', $i).' ('.strftime('%B', mktime(0, 0, 0, $i, 1, 2000)).')</option>';
1277 }
1278 }
1279 return $str;
1280 }
1281 public function getYears() {
1282 $str = '';
1283 for ($i = date('Y'); $i < date('Y') + 11; $i++) {
1284 $str .= '<option value="'.strftime('%Y', mktime(0, 0, 0, 1, 1, $i)).'">'.strftime('%Y', mktime(0, 0, 0, 1, 1, $i)).'</option>';
1285 }
1286 return $str;
1287 }
1288 public function number_format($number, $decimals = 2,$decsep = '', $ths_sep = '') {
1289 $parts = explode('.', $number);
1290 if(count($parts) > 1) {
1291 return $parts[0].'.'.substr($parts[1],0,$decimals);
1292 } else {
1293 return $number;
1294 }
1295 }
1296}
1297?>