PluginProbe
Quick Interest Slider / 3.1.2
Quick Interest Slider v3.1.2
trunk 1.0 1.1 1.2 1.3 1.4 1.5 1.6 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.8.2 2.8.3 2.9 2.9.1 2.9.3 2.9.4 2.9.5 2.9.6 All 35 releases
quick-interest-slider / quick-interest-slider.php

quick-interest-slider.php in Quick Interest Slider 3.1.2, at quick-interest-slider.php

1,459 lines 61.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /*
3 Plugin Name: Quick Interest Slider
4 Plugin URI: http://loanpaymentplugin.com/
5 Description: Interest calculator with slider and multiple display options.
6 Version: 3.1.2
7 Author: aerin
8 Author URI: http://quick-plugins.com/
9 Text Domain: quick-interest-slider
10 Domain Path: /languages
11 License: GPLv2 or later
12 */
13
14 require_once( plugin_dir_path( __FILE__ ) . '/options.php' );
15 require_once( plugin_dir_path( __FILE__ ) . '/register.php' );
16
17 $qis_forms = 0;
18
19 add_shortcode('qis', 'qis_loop');
20 add_shortcode('qis-subscribe', 'qis_subscribe');
21 add_shortcode('qisprogress', 'qis_show_progress');
22
23 add_action('wp_enqueue_scripts', 'qis_scripts');
24 add_action('init', 'qis_lang_init');
25 add_action('wp_head', 'qis_head_css');
26 add_action('template_redirect', 'qis_upgrade_ipn');
27
28 add_action('wp_ajax_qis_get_calculator', 'qis_get_calculator');
29 add_action('wp_ajax_nopriv_qis_get_calculator', 'qis_get_calculator');
30
31 add_action('wp_ajax_qis_get_stylesheet', 'qis_get_stylesheet');
32 add_action('wp_ajax_nopriv_qis_get_stylesheet', 'qis_get_stylesheet');
33
34 add_action('wp_ajax_qis_capture_application', 'qis_capture_application');
35 add_action('wp_ajax_nopriv_qis_capture_application', 'qis_capture_application');
36
37 add_action( 'wp_dashboard_setup', 'qis_add_dashboard_widgets' );
38
39 add_filter('plugin_action_links', 'qis_plugin_action_links', 10, 2 );
40
41 if (is_admin()) require_once( plugin_dir_path( __FILE__ ) . '/settings.php' );
42
43
44 function qis_add_dashboard_widgets() {
45
46 $track = qis_get_track();
47
48 if (isset($track) && $track['enabletracking']) {
49 wp_add_dashboard_widget(
50 'qis_dashboard_widget', // Widget slug.
51 esc_html__( 'Loan Application Tracking', 'quick-interest-slider' ), // Title.
52 'qis_dashboard_widget_render' // Display function.
53 );
54 }
55 }
56
57 function qis_dashboard_widget_render() {
58
59 $track = qis_get_track();
60
61 if ($track) {
62 if (!isset($track['completed'])) $track['completed'] = 0;
63 if (!isset($track['visitors'])) $track['visitors'] = 0;
64 if (!isset($track['opened'])) $track['opened'] = 0;
65
66 echo '<div style="text-align:center;width:33.3%;float:left"><div>Visitors</div>
67 <div style="font-size:30px;text-align:center;">'.esc_html($track['visitors']).'</div></div>';
68
69 echo '<div style="text-align:center;width:33.3%;float:left"><div>Form Opened</div>
70 <div style="font-size:30px;text-align:center;">'.esc_html($track['opened']).'</div></div>';
71
72 echo '<div style="text-align:center;width:33.3%;float:left"><div>Completed</div>
73 <div style="font-size:30px;text-align:center;">'.esc_html($track['completed']).'</div></div>';
74
75
76 echo '<div style="clear:both"></div>';
77
78 if ($track['completed'] > 0) {
79 $percent = ($track['completed'] / $track['visitors']) * 100;
80 $percent = round($percent, 2);
81 echo '<div style="text-align:center;">Percentage completed: '.esc_html($percent).'%</div>';
82 }
83 } else {
84 echo '<p>No tracking data available</p>';
85 }
86
87 }
88
89 function qis_get_calculator() {
90
91 $return = ['success' => false];
92
93 if (isset($_POST['attributes'])) {
94
95 // Pass the shortcode attributes to the qis_loop handler
96 $data = qis_loop($_POST['attributes']);
97
98 $return['data'] = $data;
99 $return['success'] = true;
100
101 }
102
103 echo wp_json_encode($return);
104
105 die();
106 }
107
108 function qis_get_stylesheet() {
109 $allowed_html = callback_allowed_html();
110 if (isset($_POST['form'])) {
111 header('content-type: text/css');
112 echo wp_kses(qis_generate_css(),$allowed_html);
113 }
114 die();
115 }
116
117 function qis_block_init() {
118
119 if ( !function_exists( 'register_block_type' ) ) {
120 return;
121 }
122
123 $settings = qis_get_stored_settings(null);
124
125 // Register our block editor script.
126 wp_register_script(
127 'block',
128 plugins_url( 'block.js', __FILE__ ),
129 array( 'wp-blocks', 'wp-element', 'wp-components', 'wp-editor' )
130 );
131
132 // Register our block, and explicitly define the attributes we accept.
133 register_block_type(
134 'quick-interest-slider/block', array(
135 'attributes' => array(
136 'calculator' => array(
137 'type'=> 'string',
138 'default' => 1
139 ),
140 ),
141 'editor_script' => 'block', // The script name we gave in the wp_register_script() call.
142 'render_callback' => 'qis_loop'
143 )
144 );
145 }
146
147 add_action( 'init', 'qis_block_init' );
148
149 function qis_loop($atts) {
150 $allowed_html = callback_allowed_html();
151 qis_get_stored_upgrade();
152
153 // Shortcode Attributes
154 $atts = shortcode_atts(array(
155 'calculator' => '',
156 'currency' => '',
157 'ba' => '',
158 'primary' => '',
159 'secondary' => '',
160 'loanmin' => '',
161 'loanmax' => '',
162 'loaninitial' => '',
163 'loanstep' => '',
164 'periodslider' => '',
165 'periodmin' => '',
166 'periodmax' => '',
167 'periodinitial' => '',
168 'periodstep' => '',
169 'period' => '',
170 'interestslider' => '',
171 'interestselector' => '',
172 'interestmin' => '',
173 'interestmax' => '',
174 'interestinitial' => '',
175 'intereststep' => '',
176 'multiplier' => '',
177 'triggertype' => '',
178 'trigger' => '',
179 'outputtotallabel' => '',
180 'interesttype' => '',
181 'totallabel' => '',
182 'primarylabel' => '',
183 'secondarylabel' => '',
184 'usebubble' => '',
185 'repaymentlabel' => '',
186 'outputtotal' => '',
187 'outputrepayments' => '',
188 'outputhelp' => '',
189 'application' => '',
190 'repaymentlabel' => '',
191 'buttons' => '',
192 'markers' => '',
193 'processing' => '',
194 'adminfee' => '',
195 'adminfeevalue' => '',
196 'textinputs' => '',
197 'interesttype' => '',
198 'decimals' => '',
199 'discount' => '',
200 'applynow' => '',
201 'fixedaddition' => '',
202 'application' => '',
203 'fields' => '',
204 'loanlabel' => '',
205 'termlabel' => '',
206 'interestlabel' => '',
207 'parttwo' => '',
208 'usedownpayment' => '',
209 'float' => '',
210 'percentages' => '',
211 'usegraph' => '',
212 'interestdropdown' => '',
213 'terminterface' => '',
214 'use' => ''
215 ),$atts,'quick-interest-slider');
216
217 if (isset($_GET['amount']) && $_GET['amount']) $atts['loaninitial'] = $_GET['amount'];
218 if (isset($_GET['term']) && $_GET['term']) $atts['periodinitial'] = $_GET['term'];
219
220 $dropdown = qis_get_stored_dropdown();
221
222 $atts['calculatorname'] = $atts['calculator'] ? $dropdown['forms'][$atts['calculator']] : $dropdown['forms']['one'];
223
224 if ($atts['use'] == 'dropdown') $dropdown['use'] = true;
225 if ($atts['calculator'] == 'one') $atts['calculator'] = 1;
226 if ($atts['calculator'] == 'two') $atts['calculator'] = 2;
227 if ($atts['calculator'] == 'three') $atts['calculator'] = 3;
228 if ($atts['calculator'] == 'four') $atts['calculator'] = 4;
229 if ($atts['calculator'] == 'five') $atts['calculator'] = 5;
230 if ($atts['calculator'] == 'six') $atts['calculator'] = 6;
231 if ($atts['calculator'] == 'seven') $atts['calculator'] = 7;
232 if ($atts['calculator'] == 'eight') $atts['calculator'] = 8;
233
234 // Pro Version filters
235 $qppkey = qis_key();
236 if (!isset($qppkey['authorised'])) {
237 $atts['loanlabel'] = $atts['termlabel'] = $atts['application'] = $atts['applynow'] = $atts['interestslider'] = $atts['intereselector']= $atts['usedownpayment'] = $atts['terminterface'] = false;
238 if ($atts['interesttype'] == 'amortization' || $atts['interesttype'] == 'amortisation') $atts['interesttype'] = 'compound';
239 }
240
241 global $post;
242
243 // Apply Now Button
244
245 if (!empty($_POST['qisapply'])) {
246 $formvalues = qis_check_key($_POST);
247 if (isset($_GET['param'])) {
248 $formvalues['param'] = $_GET['param'];
249 } else {
250 $formvalues['param'] = false;
251 }
252 $settings = qis_get_stored_settings($formvalues['formname']);
253 $dropdown = qis_get_stored_dropdown();
254 $url = $settings['applynowaction'];
255 if ($settings['applynowquery']) {
256 $settings['querystructure'] = str_replace('[total]', $_POST['totalamount'], $settings['querystructure']);
257 $settings['querystructure'] = str_replace('[amount]', $_POST['loan-amount'], $settings['querystructure']);
258 $settings['querystructure'] = str_replace('[term]', $_POST['loan-period'], $settings['querystructure']);
259 $settings['querystructure'] = str_replace('[rate]', $_POST['rate'], $settings['querystructure']);
260 $settings['querystructure'] = str_replace('[form]', $formvalues['formname'], $settings['querystructure']);
261 $settings['querystructure'] = str_replace('[calculator]', $dropdown['forms'][$formvalues['formname']], $settings['querystructure']);
262 if ($formvalues['param']) $settings['querystructure'] = str_replace('[param]', $formvalues['param'], $settings['querystructure']);
263 $url = $url.$settings['querystructure'];
264 }
265
266 echo "<p>".__('Redirecting....','quick-interest-slider')."</p>";
267 echo '<meta http-equiv="refresh" content="0;url='.$url.'" />';
268 die();
269 //wp_redirect( $url );
270 //exit();
271
272 // Application Form
273
274 } elseif (!empty($_POST['qissubmit'])) {
275 $formvalues = $_POST;
276 $formerrors = array();
277
278 if (!qis_verify_form($formvalues, $formerrors)) {
279 return qis_display($atts,$formvalues, $formerrors,null);
280 } else {
281 $formvalues = qis_process_form($formvalues);
282 $apply = qis_get_stored_application_messages($formvalues['formname']);
283 if ($apply['enable'] || $atts['parttwo']) return qis_display_application($formvalues,array(),'checked');
284 else return qis_display($atts,$formvalues, $formerrors,'registered');
285 }
286
287 // Part 2 Application
288
289 } elseif (!empty($_POST['part2submit'])) {
290 $formvalues = $_POST;
291 $formerrors = array();
292 if (!qis_verify_application($formvalues, $formerrors)) {
293 return qis_display_application($formvalues, $formerrors,null);
294 } else {
295 qis_process_application($formvalues);
296 return qis_display_result($formvalues);
297 }
298
299
300 } elseif (!isset($_POST['attributes']) && ($dropdown['use'])) {
301
302 // Show Dropdown
303 $dd = '<select id="calculators">';
304 $one = 1;
305 $i = 1;
306 $addition = 'selected="selected"';
307
308 foreach ($dropdown['forms'] as $key => $name) {
309 if ($name) {
310 $dd .= '<option value="'.$i.'" '.$addition.'>'.$name.'</option>';
311 if ($one++ == 1) $addition = '';
312 }
313 $i++;
314 }
315
316 $dd .= "</select>";
317
318 $_POST['attributes'] = [];
319
320 // Append The Default Calculator
321 $dd .= '<div id="calculator-container">';
322 $dd .= qis_loop($atts);
323 $dd .= "</div>";
324
325 return $dd;
326
327 } else { // Default Display
328 $formnumber = $atts['calculator'];
329 $theform = (!$formnumber || $formnumber == 1) ? 1 : $formnumber;
330 $settings = qis_get_stored_settings($theform);
331 $track = qis_get_track();
332 if (isset($track['enabletracking']) && $track['enabletracking']) {
333 @$track['visitors']++;
334 update_option('qis_track',$track);
335 }
336 $arr = explode(",",$settings['interestdropdownvalues']);
337 //$values = qis_get_stored_register($theform);
338 $values['formname'] = $theform;
339 $values['interestdropdown'] = $arr[0];
340 $digit1 = wp_rand(1,10);
341 $digit2 = wp_rand(1,10);
342 if( $digit2 >= $digit1 ) {
343 $values['thesum'] = "$digit1 + $digit2";
344 $values['answer'] = $digit1 + $digit2;
345 } else {
346 $values['thesum'] = "$digit1 - $digit2";
347 $values['answer'] = $digit1 - $digit2;
348 }
349 return qis_display($atts,$values ,array(),null);
350 }
351 }
352
353 function qis_capture_application() {
354
355 $track = qis_get_track();
356
357 if ($track['enabletracking']) {
358 $track['opened']++;
359 update_option('qis_track', $track);
360 }
361 echo wp_json_encode(['success' => true]);
362 die();
363 }
364 // Display the form on the page
365
366 function qis_display($atts,$formvalues,$formerrors,$registered) {
367
368 global $qis_forms;
369
370 $formnumber = $atts['calculator'];
371 $theform = (!$formnumber || $formnumber == 1) ? 1 : $formnumber;
372 $settings = qis_get_stored_settings($theform);
373 $style = qis_get_stored_style();
374 $register = qis_get_stored_register($theform);
375 $table = qis_get_stored_ouputtable();
376 $qppkey = qis_key();
377 $floats = false;
378
379 $qis_forms++;
380
381 foreach ($atts as $item => $key) {
382 if ($key) {
383 $settings[$item] = esc_attr($key);
384 }
385 }
386
387 if ($atts['terminterface']) {
388
389 $settings['terminterface'] = $atts['terminterface'];
390
391 if (!in_array(strtolower($atts['terminterface']),['slider','button'])) {
392 $settings['periodslider'] = false;
393 } else {
394 $settings['periodslider'] = 'checked';
395 }
396 }
397
398 if ($atts['periodslider']) $settings['terminterface'] = 'slider';
399
400 // Field override
401
402 if ($atts['fields']) $formvalues['fields'] = $atts['fields'];
403 if ($atts['application']) $register['application'] = 'checked';
404 if ($atts['primary']) $settings['triggers'][0]['rate'] = $atts['primary'];
405 if ($atts['secondary']) $settings['triggers'][1]['rate'] = $atts['secondary'];
406 if ($atts['trigger']) $settings['triggers'][1]['trigger'] = $atts['trigger'];
407 if ($atts['repaymentlabel']) $settings['outputrepayments'] = 'true';
408
409 if ($atts['processing']) {
410 if (stristr($atts['processing'],'%')) {
411 $settings['adminfee'] = true;
412 if (preg_match('/^(\d+?\.?\d*)%$/',$atts['processing'],$matches)) {
413 $settings['adminfeevalue'] = trim($matches[1],'.');
414 $settings['adminfeetype'] = 'percent';
415 }
416 } else {
417 $settings['adminfee'] = true;
418 if (is_numeric($atts['processing'])) {
419 $settings['adminfeevalue'] = (float) $atts['processing'];
420 $settings['adminfeetype'] = 'fixed';
421 }
422 }
423 }
424
425 if ($settings['percentages']) {
426 $settings['percentarr'] = array();
427 $ratesarray = explode(',',$settings['percentages']);
428 for ($i=0;$i<count($ratesarray);$i++)
429 $settings['percentarr'][$i] = $ratesarray[$i];
430 }
431
432 $settings['repaymentlabel'] = preg_replace('/{(\w+)}/','[\1]',$settings['repaymentlabel']);
433
434 if ($settings['ba'] == 'before') {
435 $settings['cb'] = $settings['currency'];
436 $settings['ca'] = ' ';
437 } else {
438 $settings['ca'] = $settings['currency'];
439 $settings['cb'] = ' ';
440 }
441
442 if ($register['application']) $settings['application'] = true;
443 if (!isset($formvalues['loan-amount'])) $formvalues['loan-amount'] = $settings['loaninitial'];
444 if (!isset($formvalues['loan-period'])) $formvalues['loan-period'] = $settings['periodinitial'];
445 if (!isset($formvalues['loan-interest'])) $formvalues['loan-interest'] = $settings['interestinitial'];
446 if (!isset($formvalues['loan-downpayment'])) $formvalues['loan-downpayment'] = $settings['downpaymentinitial'];
447 if ($settings['multiplier'] < 1 || $settings['multiplier'] == false) {$settings['multiplier'] = $formvalues['multiplier'] = 1;}
448
449 $settings['singleperiod'] = $settings['singleperiodlabel'] ? $settings['singleperiodlabel'] : $settings['period'];
450 $settings['periodlabel'] = $settings['periodlabel'] ? $settings['periodlabel'] : $settings['period'];
451 $settings['offset'] = $register['offset'] ? $register['offset'] : 0;
452
453 if ($style['floatoutput']) $atts['float'] = true;
454
455 // Normalize values
456
457 $outputA = array();
458
459 foreach ($settings as $k => $v) {
460 $outputA[$k] = $v;
461
462 if (!is_array($v)) {
463
464 if (@strtolower($v) == 'checked') $outputA[$k] = true;
465
466 if ($v == '') $outputA[$k] = false;
467
468 if (@preg_match('/[0-9.]+/',$v)) $outputA[$k] = (float) $v;
469 }
470 }
471
472 if ($settings['nosliderlabel']) {
473 $amountmin = qis_separator($settings['loanmin'],$outputA['separator']);
474 $amountmax = qis_separator($settings['loanmax'],$outputA['separator']);
475 $periodmin = $settings['periodmin'];
476 $periodmax = $settings['periodmax'];
477 $interestmin = $settings['interestmin'];
478 $interestmax = $settings['interestmax'];
479 $downpaymentmin = qis_separator($settings['downpaymentmin'],$outputA['separator']);
480 $downpaymentmax = qis_separator($settings['downpaymentmax'],$outputA['separator']);
481 } else {
482 $amountmin = $settings['cb'].qis_separator($settings['loanmin'],$outputA['separator']).$settings['ca'];
483 $amountmax = $settings['cb'].qis_separator($settings['loanmax'],$outputA['separator']).$settings['ca'];
484 $periodmin = $settings['periodmin'].' '.$settings['singleperiod'];
485 $periodmax = $settings['periodmax'].' '.$settings['periodlabel'];
486 $interestmin = $settings['interestmin'].'%';
487 $interestmax = $settings['interestmax'].'%';
488 $downpaymentmin = $settings['cb'].qis_separator($settings['downpaymentmin'],$outputA['separator']).$settings['ca'];
489 $downpaymentmax = $settings['cb'].qis_separator($settings['downpaymentmax'],$outputA['separator']).$settings['ca'];
490 }
491
492 if ($settings['onlyslidervalue']) {
493 $amountmin = $amountmax = $periodmin = $periodmax = '&nbsp;';
494 }
495
496 // Shortcode Replacements
497
498 $dpf = false;
499
500 if ($settings['downpaymentfixed']) $dpf = $settings['cb'].$settings['downpaymentfixed'].$settings['ca'];
501 if ($settings['downpaymentpercent'] && $dpf) $dpf = $dpf.' and '.$settings['downpaymentpercent'].'%';
502 if ($settings['downpaymentpercent'] && !$dpf) $dpf = $settings['downpaymentpercent'].'%';
503
504 if (strpos($settings['repaymentlabel'],'[table]') !== false) {
505
506 $outputtable = '<table class="outputtable">';
507
508 $sort = explode(",", $table['sort']);
509 foreach ($sort as $name) {
510 if ($table['use'.$name]) $outputtable .= '<tr><td class="output-caption">'.$table[$name.'caption'].'</td><td class="values-colour output-values">'.$strongon.'['.$name.']'.$strongoff.'</td></tr>';
511 }
512
513 $outputtable .= '</table>';
514
515 $settings['repaymentlabel'] = str_replace('[table]', $outputtable, $settings['repaymentlabel']);
516 }
517
518 $arr = array('repaymentlabel','outputtotallabel');
519
520 foreach ($arr as $item) {
521 $settings[$item] = str_replace('[step]', $settings['periodstep'], $settings[$item]);
522 $settings[$item] = str_replace('[amount]', '<span class="repayment"></span>', $settings[$item]);
523 $settings[$item] = str_replace('[repayment]', '<span class="repayment"></span>', $settings[$item]);
524 $settings[$item] = str_replace('[period]', $settings['singleperiod'], $settings[$item]);
525 $settings[$item] = str_replace('[rate]', '<span class="interestrate"></span>', $settings[$item]);
526 $settings[$item] = str_replace('[dae]', '<span class="dae"></span>', $settings[$item]);
527 $settings[$item] = str_replace('[interest]', '<span class="current_interest"></span>', $settings[$item]);
528 $settings[$item] = str_replace('[monthlyrate]', '<span class="monthlyrate"></span>', $settings[$item]);
529 $settings[$item] = str_replace('[total]', '<span class="final_total"></span>', $settings[$item]);
530 $settings[$item] = str_replace('[discount]', '<span class="discount"></span>', $settings[$item]);
531 $settings[$item] = str_replace('[principle]', '<span class="principle"></span>', $settings[$item]);
532 $settings[$item] = str_replace('[term]', '<span class="term"></span>', $settings[$item]);
533 $settings[$item] = str_replace('[processing]', '<span class="processing"></span>', $settings[$item]);
534 $settings[$item] = str_replace('[date]', '<span class="repaymentdate"></span>', $settings[$item]);
535 $settings[$item] = str_replace('[percentages1]', '<span class="percentages1"></span>', $settings[$item]);
536 $settings[$item] = str_replace('[percentages2]', '<span class="percentages2"></span>', $settings[$item]);
537 $settings[$item] = str_replace('[percentages3]', '<span class="percentages3"></span>', $settings[$item]);
538 $settings[$item] = str_replace('[percentages4]', '<span class="percentages4"></span>', $settings[$item]);
539
540 $settings[$item] = str_replace('[primary]', '<span class="generic_primary"></span>', $settings[$item]);
541 $settings[$item] = str_replace('[secondary]', '<span class="generic_secondary"></span>', $settings[$item]);
542
543 $settings[$item] = str_replace('[weeks]', '<span class="weeks"></span>', $settings[$item]);
544 $settings[$item] = str_replace('[years]', '<span class="years"></span>', $settings[$item]);
545 $settings[$item] = str_replace('[weekly]', '<span class="weekly"></span>', $settings[$item]);
546 $settings[$item] = str_replace('[monthly]', '<span class="monthly"></span>', $settings[$item]);
547 $settings[$item] = str_replace('[annual]', '<span class="annual"></span>', $settings[$item]);
548
549 if (isset($qppkey['authorised'])) {
550 $settings[$item] = str_replace('[downpayment]', '<span class="downpayment"></span>', $settings[$item]);
551 $settings[$item] = str_replace('[fixeddownpayment]', $settings['cb'].$settings['downpaymentfixed'].$settings['ca'], $settings[$item]);
552 $settings[$item] = str_replace('[downpaymentpercent]', $settings['downpaymentpercent'].'%', $settings[$item]);
553 $settings[$item] = str_replace('[mitigated]', '<span class="mitigated"></span>', $settings[$item]);
554 }
555 }
556
557 $addFloat = '';
558 if ($atts['float']) {
559 $addFloat = 'qis-add-float';
560 }
561
562 // Append the currencies to the rates object
563
564 $outputA['currencies'] = array();
565 $s_form = ((isset($_POST['submitted_form']))? $_POST['submitted_form']:'N/A');
566
567 $i = 1;
568 for ($A_i = 0; isset($settings['currency_array'][$A_i]); $A_i++) {
569 $outputA['currencies']['c'.$A_i] = $settings['currency_array'][$A_i];
570 }
571
572 $newTriggers = [];
573 foreach ($outputA['triggers'] as $k => $v) {
574 if ($v['rate'] != '') $newTriggers[] = $v;
575 }
576
577 $outputA['triggers'] = $newTriggers;
578 $outputA['graph'] = ['use' => false];
579 $outputA['applynowaction'] = $settings['applynowaction'];
580
581 $output = '<script type="text/javascript">';
582 $output .= 'qis__rates["qis_'.$qis_forms.'"] = '.wp_json_encode($outputA).';';
583 $output .= 'qis_form = '.wp_json_encode($s_form).';';
584 $output .= '</script>';
585 $output .= $floats;
586 $output .= '<form action="" class="qis_form '.$style['border'].'" method="POST" id="qis_'.$qis_forms.'" enctype="multipart/form-data">';
587 $output .= '<input type="hidden" name="submitted_form" value="qis_'.$qis_forms.'" />';
588
589 if ($settings['formheader']) $output .= '<h2>'.$settings['formheader'].'</h2>';
590
591 $output .= '<div class="qis-sections qis-float '.$addFloat.'"><div class="qis-inputs qis-float-columns">';
592
593 $output .= '<input type="hidden" name="interesttype" value="'.$settings['interesttype'].'" />';
594
595 $sort = explode(",", $settings['sort']);
596
597 if ($settings['usedownpaymentslider'] != 'checked') {
598 $sort = qis_unset($sort,'downpayment');
599 }
600
601 foreach($sort as $item) {
602
603 if ($item == 'amount') {
604 $output .= '<div class="range qis-slider-principal">';
605
606 $label = false;
607
608 // Principal Slider
609
610 if ($settings['loanlabel'] && $settings['sliderlabelposition'] == 'aboveslider') {
611 $output .= '<div class="slider-label">'.$settings['loanlabel'];
612 if ($settings['loanhelp']) $output .= qis_tooltip($settings['loaninfo']);
613 $output .= '</div>';
614 }
615
616 if ($settings['loanlabel'] && $settings['sliderlabelposition'] == 'beforeoutput') {
617 $label = '<span class="sliderlabel">'.$settings['loanlabel'].' </span>';
618 }
619
620 if ($settings['textinputs'] != 'slider') $oX = '<input type="text" class="output" value="'.$formvalues['loan-amount'].'" />';
621 elseif ($settings['outputlimits']) $oX = '<output></output>';
622 else $oX = null;
623
624 if ($settings['textinputs'] != 'text') {
625
626 if ($settings['buttons'] && $settings['sliderbuttonposition'] == 'slidertop') {
627 $output .= qis_outputs (true,$amountmin,$amountmax,$oX,$label);
628 } elseif ($settings['maxminlimits']) {
629 $output .= qis_outputs (false,$amountmin,$amountmax,$oX,$label);
630 } else {
631 $output .= qis_outputs (false,'&nbsp;','&nbsp;',$oX,$label);
632 }
633
634 if ($settings['buttons'] && $settings['sliderbuttonposition'] == 'sliderside') {
635 $output .= '<div class="qis_buttons">
636 <div class="circle-control minus"><svg xmlns="http://www.w3.org/2000/svg" height="25px" viewBox="0 0 512 512"><path d="M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM184 232c-13.3 0-24 10.7-24 24s10.7 24 24 24H328c13.3 0 24-10.7 24-24s-10.7-24-24-24H184z"/></svg></div>
637 <div><input type="range" name="loan-amount" min="'.$settings['loanmin'].'" max="'.$settings['loanmax'].'" value="'.$formvalues['loan-amount'].'" step="'.$settings['loanstep'].'" data-qis></div>
638 <div class="circle-control plus"><svg xmlns="http://www.w3.org/2000/svg" height="25px" viewBox="0 0 512 512"><path d="M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM232 344c0 13.3 10.7 24 24 24s24-10.7 24-24V280h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H280V168c0-13.3-10.7-24-24-24s-24 10.7-24 24v64H168c-13.3 0-24 10.7-24 24s10.7 24 24 24h64v64z"/></svg></div></div>';
639 } else {
640 $output .= '<input type="range" name="loan-amount" min="'.$settings['loanmin'].'" max="'.$settings['loanmax'].'" value="'.$formvalues['loan-amount'].'" step="'.$settings['loanstep'].'" data-qis>';
641 }
642
643 if ($settings['markers']) {
644 $output .= qis_markers($settings,$style['handle-size'],$settings['loanmax'],$settings['loanmin'],$settings['loanstep']);
645 }
646
647 } else {
648 $output .= '<div>'.$oX.'</div>';
649 $label = str_replace('[min]',$amountmin,$settings['amounttext']);
650 $label = str_replace('[max]',$amountmax,$label);
651 $output .= '<div class="textlabel".>'.$label.'</div>';
652 $output .= '<div class="hidethis"><input type="range" name="loan-amount" min="'.$settings['loanmin'].'" max="'.$settings['loanmax'].'" value="'.$formvalues['loan-amount'].'" step="'.$settings['loanstep'].'" data-qis></div>';
653 }
654
655 $output .= '</div>';
656 }
657
658 if ($item == 'term') {
659
660 $label = false;
661
662 // Term Slider
663
664 if ($settings['textinputs'] != 'slider') $oX = '<input type="text" class="output" value="'.$formvalues['loan-period'].'" />';
665 elseif ($settings['outputlimits']) $oX = '<output></output>';
666 else $oX = null;
667
668 if ($settings['periodslider']) {
669
670 if ($settings['termlabel'] && $settings['sliderlabelposition'] == 'aboveslider') {
671 $output .= '<div class="slider-label">'.$settings['termlabel'];
672 if ($settings['periodhelp']) $output .= qis_tooltip($settings['periodinfo']);
673 $output .= '</div>';
674 }
675
676 if ($settings['termlabel'] && $settings['sliderlabelposition'] == 'beforeoutput') {
677 $label = '<span class="sliderlabel">'.$settings['termlabel'].' </span>';
678 }
679
680 $output .= '<div class="range qis-slider-term">';
681
682 if ($settings['textinputs'] != 'text') {
683
684 if ($settings['buttons'] && $settings['sliderbuttonposition'] == 'slidertop') {
685 $output .= qis_outputs (true,$periodmin,$periodmax,$oX,$label);
686 } elseif ($settings['maxminlimits']) {
687 $output .= qis_outputs (false,$periodmin,$periodmax,$oX,$label);
688 } else {
689 $output .= qis_outputs (false,'&nbsp;','&nbsp;',$oX,$label);
690 }
691
692 if ($settings['buttons'] && $settings['sliderbuttonposition'] == 'sliderside') {
693 $output .= '<div class="qis_buttons">
694 <div class="circle-control minus"><svg xmlns="http://www.w3.org/2000/svg" height="25px" viewBox="0 0 512 512"><path d="M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM184 232c-13.3 0-24 10.7-24 24s10.7 24 24 24H328c13.3 0 24-10.7 24-24s-10.7-24-24-24H184z"/></svg></div>
695 <div><input type="range" name="loan-period" min="'.$settings['periodmin'].'" max="'.$settings['periodmax'].'" value="'.$formvalues['loan-period'].'" step="'.$settings['periodstep'].'" data-qis></div>
696 <div class="circle-control plus"><svg xmlns="http://www.w3.org/2000/svg" height="25px" viewBox="0 0 512 512"><path d="M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM232 344c0 13.3 10.7 24 24 24s24-10.7 24-24V280h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H280V168c0-13.3-10.7-24-24-24s-24 10.7-24 24v64H168c-13.3 0-24 10.7-24 24s10.7 24 24 24h64v64z"/></svg></div></div>';
697 } else {
698 $output .= '<input type="range" name="loan-period" min="'.$settings['periodmin'].'" max="'.$settings['periodmax'].'" value="'.$formvalues['loan-period'].'" step="'.$settings['periodstep'].'" data-qis>';
699 }
700
701 if ($settings['markers']) {
702 $output .= qis_markers($settings,$style['handle-size'],$settings['periodmax'],$settings['periodmin'],$settings['periodstep']);
703 }
704
705 } else {
706 $output .= '<div>'.$oX.'</div>';
707 $label = str_replace('[min]',$periodmin,$settings['termtext']);
708 $label = str_replace('[max]',$periodmax,$label);
709 $output .= '<div class="textlabel".>'.$label.'</div>';
710 $output .= '<div class="hidethis"><input type="range" name="loan-period" min="'.$settings['periodmin'].'" max="'.$settings['periodmax'].'" value="'.$formvalues['loan-period'].'" step="'.$settings['periodstep'].'" data-qis></div>';
711 }
712 $output .= '</div>';
713 } else {
714 $output .= '<input type="hidden" name="loan-period" value="'.$formvalues['loan-period'].'">';
715 }
716
717 }
718
719 if ($item == 'downpayment' && $settings['usedownpaymentslider']) {
720
721 $output .= '<div class="range qis-slider-downpayment">';
722
723 $label = false;
724
725 // Downpayment Slider
726 if ($settings['downpaymentlabel'] && $settings['sliderlabelposition'] == 'aboveslider') {
727 $output .= '<div class="slider-label">'.$settings['downpaymentlabel'];
728 if ($settings['downpaymenthelp']) $output .= qis_tooltip($settings['downpaymentinfo']);
729 $output .= '</div>';
730 }
731
732 if ($settings['downpaymentlabel'] && $settings['sliderlabelposition'] == 'beforeoutput') {
733 $label = '<span class="sliderlabel">'.$settings['downpaymentlabel'].' </span>';
734 }
735
736 if ($settings['textinputs'] != 'slider') $oX = '<input type="text" class="output" value="'.$formvalues['loan-downpayment'].'" />';
737 elseif ($settings['outputlimits']) $oX = '<output></output>';
738 else $oX = null;
739
740 if ($settings['textinputs'] != 'text') {
741
742 if ($settings['buttons'] && $settings['sliderbuttonposition'] == 'slidertop') {
743 $output .= qis_outputs (true,$downpaymentmin,$downpaymentmax,$oX,$label);
744 } elseif ($settings['maxminlimits']) {
745 $output .= qis_outputs (false,$downpaymentmin,$downpaymentmax,$oX,$label);
746 } else {
747 $output .= qis_outputs (false,'&nbsp;','&nbsp;',$oX,$label);
748 }
749
750 if ($settings['buttons'] && $settings['sliderbuttonposition'] == 'sliderside') {
751 $output .= '<div class="qis_buttons">
752 <div class="circle-control minus"><svg xmlns="http://www.w3.org/2000/svg" height="25px" viewBox="0 0 512 512"><path d="M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM184 232c-13.3 0-24 10.7-24 24s10.7 24 24 24H328c13.3 0 24-10.7 24-24s-10.7-24-24-24H184z"/></svg></div>
753 <div><input type="range" name="loan-downpayment" min="'.$settings['downpaymentmin'].'" max="'.$settings['downpaymentmax'].'" value="'.$formvalues['loan-downpayment'].'" step="'.$settings['downpaymentstep'].'" data-qis></div>
754 <div class="circle-control plus"><svg xmlns="http://www.w3.org/2000/svg" height="25px" viewBox="0 0 512 512"><path d="M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM232 344c0 13.3 10.7 24 24 24s24-10.7 24-24V280h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H280V168c0-13.3-10.7-24-24-24s-24 10.7-24 24v64H168c-13.3 0-24 10.7-24 24s10.7 24 24 24h64v64z"/></svg></div></div>';
755 } else {
756 $output .= '<input type="range" name="loan-downpayment" min="'.$settings['downpaymentmin'].'" max="'.$settings['downpaymentmax'].'" value="'.$formvalues['loan-downpayment'].'" step="'.$settings['downpaymentstep'].'" data-qis>';
757 }
758
759 if ($settings['markers']) {
760 $output .= qis_markers($settings,$style['handle-size'],$settings['downpaymentmax'],$settings['downpaymentmin'],$settings['downpaymentstep']);
761 }
762
763 } else {
764 $output .= '<div>'.$oX.'</div>';
765 $label = str_replace('[min]',$downpaymentmin,$settings['downpaymenttext']);
766 $label = str_replace('[max]',$downpaymentmax,$label);
767 $output .= '<div class="textlabel".>'.$label.'</div>';
768 $output .= '<div class="hidethis"><input type="range" name="loan-downpayment" min="'.$settings['downpaymentmin'].'" max="'.$settings['downpaymentmax'].'" value="'.$formvalues['loan-downpayment'].'" step="'.$settings['downpaymentstep'].'" data-qis></div>';
769 }
770 $output .= '</div>';
771 }
772
773 if ($item == 'interest') {
774
775 $label = false;
776
777 // Interest Slider
778
779 if ($settings['textinputs'] != 'slider') $oX = '<input type="text" class="output" value="'.$formvalues['loan-interest'].'" />';
780 elseif ($settings['outputlimits']) $oX = '<output></output>';
781 else $oX = null;
782
783 if ($settings['interestslider'] && !$settings['interestselector'] && !$settings['interestdropdown']) {
784
785 if ($settings['interestlabel'] && $settings['sliderlabelposition'] == 'aboveslider') {
786 $output .= '<div class="slider-label">'.$settings['interestlabel'];
787 if ($settings['interesthelp']) $output .= qis_tooltip($settings['interestinfo']);
788 $output .= '</div>';
789 }
790
791 if ($settings['interestlabel'] && $settings['sliderlabelposition'] == 'beforeoutput') {
792 $label = '<span class="sliderlabel">'.$settings['interestlabel'].' </span>';
793 }
794
795 $output .= '<div class="range qis-slider-interest">';
796
797 if ($settings['textinputs'] != 'text') {
798
799 if ($settings['buttons'] && $settings['sliderbuttonposition'] == 'slidertop') {
800 $output .= qis_outputs (true,$interestmin,$interestmax,$oX,$label);
801 } elseif ($settings['maxminlimits']) {
802 $output .= qis_outputs (false,$interestmin,$interestmax,$oX,$label);
803 } else {
804 $output .= qis_outputs (false,'&nbsp;','&nbsp;',$oX,$label);
805 }
806
807 if ($settings['buttons'] && $settings['sliderbuttonposition'] == 'sliderside') {
808 $output .= '<div class="qis_buttons">
809 <div class="circle-control minus"><svg xmlns="http://www.w3.org/2000/svg" height="25px" viewBox="0 0 512 512"><path d="M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM184 232c-13.3 0-24 10.7-24 24s10.7 24 24 24H328c13.3 0 24-10.7 24-24s-10.7-24-24-24H184z"/></svg></div>
810 <div><input type="range" name="loan-interest" min="'.$settings['interestmin'].'" max="'.$settings['interestmax'].'" value="'.$formvalues['loan-interest'].'" step="'.$settings['intereststep'].'" data-qis></div>
811 <div class="circle-control plus"><svg xmlns="http://www.w3.org/2000/svg" height="25px" viewBox="0 0 512 512"><path d="M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM232 344c0 13.3 10.7 24 24 24s24-10.7 24-24V280h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H280V168c0-13.3-10.7-24-24-24s-24 10.7-24 24v64H168c-13.3 0-24 10.7-24 24s10.7 24 24 24h64v64z"/></svg></div></div>';
812 } else {
813 $output .= '<input type="range" name="loan-interest" min="'.$settings['interestmin'].'" max="'.$settings['interestmax'].'" value="'.$formvalues['loan-interest'].'" step="'.$settings['intereststep'].'" data-qis>';
814 }
815
816 if ($settings['markers']) {
817 $output .= qis_markers($settings,$style['handle-size'],$settings['interestmax'],$settings['interestmin'],$settings['intereststep']);
818 }
819
820 } else {
821 $output .= '<div>'.$oX.'</div>';
822 $label = str_replace('[min]',$interestmin,$settings['interesttext']);
823 $label = str_replace('[max]',$interestmax,$label);
824 $output .= '<div class="textlabel".>'.$label.'</div>';
825 $output .= '<div class="hidethis"><input type="range" name="loan-interest" min="'.$settings['interestmin'].'" max="'.$settings['interestmax'].'" value="'.$formvalues['loan-interest'].'" step="'.$settings['intereststep'].'" data-qis></div>';
826 }
827
828 $output .= '</div>';
829 }
830
831 // Interest Selectors
832 if ($settings['interestselector'] && $qppkey['authorised'] && !$settings['interestslider'] && !$settings['interestdropdown']) {
833 $output .= '<div class="checkradio"><ul>';
834 if ($settings['interestselectorlabel']) $output .= '<li class="label">'.$settings['interestselectorlabel'].':</li>';
835 for ($i = 1; $i <= 4; $i++) {
836 if ($settings['interestname'.$i]) {
837 $checked = $i == 1 ? 'checked' : '';
838 $output .= '<li><input type="radio" name="interestselector" value="'.$i.'" '.$checked.' id="interestname'.$i.'"><label for="interestname'.$i.'"><span></span>'.$settings['interestname'.$i].'</label></li>';
839 }
840 }
841 $output .= '</ul></div>';
842 $output .= '<div style="clear:both"></div>';
843 }
844
845 // Interest Dropdown
846 if ($settings['interestdropdown'] && $qppkey['authorised'] && !$settings['interestslider'] && !$settings['interestselector']) {
847
848 $arr = explode(",",$settings['interestdropdownvalues']);
849 $output .= '<div class="qis-register">';
850 if ($settings['interestdropdownlabelposition'] == 'paragraph')
851 $output .= '<p>'.$settings['interestdropdownlabel'].'</p>';
852 $output .= '<select name="interestdropdown">';
853 if ($settings['interestdropdownlabelposition'] == 'include')
854 $output .= '<option value="'.preg_replace("/[^0-9.]/", "", $arr[0]).'">' . $settings['interestdropdownlabel'] . '</option>'."\r\t";
855 foreach ($arr as $item) {
856 $value = preg_replace("/[^0-9.]/", "", $item);
857 $selected = $formvalues['interestdropdown'] == $value ? ' selected="selected"' : '';
858 $output .= '<option value="' . $value . '" ' . $selected .'>' . $item . '</option>'."\r\t";
859 }
860 $output .= '</select></div>';
861 }
862 }
863
864 // Loan Breakdown Graph
865
866 if ($item == 'graph' && !$atts['float']) {
867
868 if ($settings['usegraph']) {
869
870 if ($settings['graphlabel']) $output .= '<div class="slider-label">'.$settings['graphlabel'].'</div>';
871 $output .= '<div class="qisBar">
872 <div class="qisBarProgress1" style="background-color:'.$style['graphdownpayment'].'"></div>
873 <div class="qisBarProgress2" style="background-color:'.$style['graphprinciple'].'"></div>';
874 if ($settings['adminfeewhen'] == 'beforeinterest' && $settings['adminfee']) $output .= '<div class="qisBarProgress4" style="background-color:'.$style['graphprocessing'].'"></div>';
875 $output .= '<div class="qisBarProgress3" style="background-color:'.$style['graphinterest'].'"></div>';
876 if ($settings['adminfeewhen'] == 'afterinterest' && $settings['adminfee']) $output .= '<div class="qisBarProgress4" style="background-color:'.$style['graphprocessing'].'"></div>';
877 $output .= '</div>';
878
879 $output .= '<div id="qis-totalbar"></div>';
880 $output .= '<p class="legend">';
881 if ($settings['usedownpayment'] || $settings['usedownpaymentslider']) $output .= '<span style="background-color:'.$style['graphdownpayment'].'"></span> '.$settings['graphdownpayment'].' ';
882 if ($settings['discount']) $output .= '<span style="background-color:'.$style['graphdiscount'].'"></span> '.$settings['graphdiscount'].' ';
883 $output .= '<span style="background-color:'.$style['graphprinciple'].'"></span> '.$settings['graphprinciple'].' ';
884 if ($settings['adminfeewhen'] == 'beforeinterest' && $settings['adminfee']) $output .= '<span style="background-color:'.$style['graphprocessing'].'"></span> '.$settings['graphprocessing'].' ';
885 $output .= '<span style="background-color:'.$style['graphinterest'].'"></span> '.$settings['graphinterest'].' ';
886 if ($settings['adminfeewhen'] == 'afterinterest' && $settings['adminfee']) $output .= '<span style="background-color:'.$style['graphprocessing'].'"></span> '.$settings['graphprocessing'].' ';
887 $output .= '</p>';
888 }
889 }
890
891 if ($item == 'repayments' && !$atts['float']) {
892
893 // Display output messages
894 if ($settings['outputrepayments']) {
895 $output .= '<div class="qis-repayments">'.$settings['repaymentlabel'];
896 if ($settings['outputhelp']) $output .= qis_tooltip($settings['outputinfo']);
897 $output .= '</div>';
898 }
899 }
900
901 if ($item == 'total' && !$atts['float']) {
902
903 if ($settings['outputtotal']) {
904 $output .= '<div class="qis-total">'.$settings['outputtotallabel'].'</div>';
905 }
906 }
907
908 if ($item == 'apply' && !$atts['float']) {
909
910 // Apply Now and Application Form
911 if ($register['application'] && $qppkey['authorised']) $output .= qis_display_form($formvalues,$formerrors,$registered).'</div>';
912 elseif ($settings['applynow'] && $qppkey['authorised']) $output .= '<div class="qis-apply"><a id="applybutton" href="'.$settings['applynowaction'].'" >'.$settings['applynowlabel'].'</a></div>';
913 }
914
915 $output .= $settings['outputtable'];
916 }
917
918 // $output .= '</div>';
919
920 if ($atts['float']) {
921
922 $output .= '</div><div class="qis-outputs qis-float-columns">';
923
924 // Display output messages
925
926 if ($settings['outputrepayments']) {
927 $output .= '<div class="qis-repayments">'.$settings['repaymentlabel'];
928 if ($settings['outputhelp']) $output .= qis_tooltip($settings['outputinfo']);
929 $output .= '</div>';
930 }
931
932 if ($settings['outputtotal']) {
933 $output .= '<div class="qis-total">'.$settings['outputtotallabel'].'</div>';
934 }
935
936 $output .= $settings['outputtable'];
937
938 // Apply Now and Application Form
939
940 if ($register['application'] && $qppkey['authorised']) $output .= qis_display_form($formvalues,$formerrors,$registered).'</div>';
941 elseif ($settings['applynow'] && $qppkey['authorised']) $output .= '<div class="qis-apply"><a id="applybutton" href="'.$settings['applynowaction'].'" >'.$settings['applynowlabel'].'</a></div>';
942
943 // Close .qis-float
944 $output .= '</div>';
945 }
946
947 $output .= '</div>';
948
949 $output .= '<input type="hidden" name="repayment" value="'.@$formvalues['repayment'].'" />';
950 $output .= '<input type="hidden" name="totalamount" value="'.@$formvalues['totalamount'].'" />';
951 $output .= '<input type="hidden" id="formname" name="formname" value="'.$formvalues['formname'].'" />';
952 $output .= '<input type="hidden" id="calculatorname" name="calculatorname" value="'.$atts['calculatorname'].'" />';
953 $output .= '<input type="hidden" name="rate" value="" />';
954 $output .= '<div id="filechecking"><div class="filecheckingcontent"><img src="'.plugin_dir_url( __FILE__ ).'/img/waiting.gif'.'" alt="Loading"></div></div>';
955
956 $output .= '</div></form>';
957 return $output;
958 }
959
960 function qis_markers($settings,$handle,$min,$max,$step) {
961
962 //Put together a step total and output a set of step markers
963 $inner_value = (float) $min - $max;
964 $pps = $inner_value / $step;
965 $ppw = 100 / $pps;
966
967 if ($settings['buttons'] && $settings['sliderbuttonposition'] == 'sliderside') {
968 $output = '<div class="qis_buttons">
969 <div></div>
970 <div class="qis_slider_markers" style="position: relative; margin-left: '.($handle/2).'px; margin-right: '.($handle/2).'px; border-left: 1px solid black; border-right: 1px solid black; height: 10px">';
971 for ($i = 1; $i < $pps; $i++) {
972 $output .= '<div class="qis_slider_marker" style="position: absolute; height: 10px; left: '.$ppw * $i.'%; margin-left: -1px; width: 1px; background-color: black;"></div>';
973 }
974
975 $output .= '</div>
976 <div></div>
977 </div>';
978 } else {
979 $output .= '<div class="qis_slider_markers" style="position: relative; margin-left: '.($handle/2).'px; margin-right: '.($handle/2).'px; border-left: 1px solid black; border-right: 1px solid black; height: 10px">';
980 for ($i = 1; $i < $pps; $i++) {
981 $output .= '<div class="qis_slider_marker" style="position: absolute; height: 10px; left: '.$ppw * $i.'%; margin-left: -1px; width: 1px; background-color: black;"></div>';
982 }
983 $output .= '</div>';
984 }
985
986 return $output;
987
988 }
989
990 // Display Values
991 function qis_outputs($buttons,$min,$max,$oX,$label) {
992
993 if ($buttons) {
994 $output = '<div class="qis_slideroutputs">
995 <div class="column left circle-control minus"><svg xmlns="http://www.w3.org/2000/svg" height="25px" viewBox="0 0 512 512"><path d="M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM184 232c-13.3 0-24 10.7-24 24s10.7 24 24 24H328c13.3 0 24-10.7 24-24s-10.7-24-24-24H184z"/></svg></div>
996 <span class="column center qis-slidercenter">'.$label.$oX.'</span>
997 <div class="column right circle-control plus"><svg xmlns="http://www.w3.org/2000/svg" height="25px" viewBox="0 0 512 512"><path d="M256 48a208 208 0 1 1 0 416 208 208 0 1 1 0-416zm0 464A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM232 344c0 13.3 10.7 24 24 24s24-10.7 24-24V280h64c13.3 0 24-10.7 24-24s-10.7-24-24-24H280V168c0-13.3-10.7-24-24-24s-24 10.7-24 24v64H168c-13.3 0-24 10.7-24 24s10.7 24 24 24h64v64z"/></svg></div></div>';
998 } else {
999 $output = '<div class="qis_slideroutputs">';
1000 $output .= '<span class="column left qis-sliderleft">'.$min.'</span>';
1001 $output .= '<span class="column center qis-slidercenter">'.$label.$oX.'</span>';
1002 $output .= '<span class="column right qis-sliderright">'.$max.'</span>';
1003 $output .= '</div>';
1004 }
1005 return $output;
1006 }
1007
1008 function qis_unset($array,$value) {
1009
1010 $newarray = [];
1011 foreach ($array as $k => $v) {
1012 if ($v == $value) unset($array[$v]);
1013 else $newarray[] = $v;
1014 }
1015 return $newarray;
1016 }
1017
1018 // Display Tooltip
1019
1020 function qis_tooltip($text) {
1021 return '<span class="qis_tooltip_toggle"><a href="javascript:void(0);"></a><div class="qis_tooltip_body"><div class="qis_tooltip_content">'.$text.'</div><div class="close"></div></div></span>';
1022 }
1023
1024 // Enqueue Scripts and Styles
1025
1026 function qis_scripts() {
1027 $style = qis_get_stored_style();
1028 if (!$style['nostyles']) wp_enqueue_style( 'qis_style',plugins_url('slider.css', __FILE__));
1029 wp_enqueue_script('jquery-ui-datepicker');
1030 wp_enqueue_script("jquery-effects-core");
1031 wp_enqueue_script('qis_script',plugins_url('slider.js?v=1.16', __FILE__ ), array( 'jquery' ), false, true );
1032 wp_enqueue_style ('jquery-style', 'https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/themes/smoothness/jquery-ui.css');
1033 wp_localize_script('qis_script', 'qis_application', [
1034 'ajax_url' => admin_url( 'admin-ajax.php' )
1035 ]);
1036 }
1037
1038 // Dashboard Link
1039
1040 function qis_plugin_action_links($links, $file ) {
1041 if ( $file == plugin_basename( __FILE__ ) ) {
1042 $qis_links = '<a href="'.get_admin_url().'options-general.php?page=quick-interest-slider-settings">'.__('Settings','quick-interest-slider').'</a>';
1043 array_unshift( $links, $qis_links );
1044 }
1045 return $links;
1046 }
1047
1048 // Build Custom CSS
1049
1050 function qis_generate_css() {
1051 $style = qis_get_stored_style();
1052
1053 if ($style['nostyles'] || $style['nocustomstyles']) return;
1054
1055 $border = $radius = $background = false;
1056
1057 //Slider output on small screens
1058 $smaller = preg_split('#(?<=\d)(?=[a-z%])#i', $style['output-size']);
1059 $smaller = (floatval($smaller[0])*0.6).$smaller[1];
1060
1061 // Handle
1062 $svgsize = $handlesize = preg_split('#(?<=\d)(?=[a-z%])#i', $style['handle-size']);
1063 $handlesize[0] = $handlesize[0] - $style['handle-thickness']*2;
1064 if (!isset($handlesize[1])) $handlesize[1] = 'px';
1065
1066 // Slider bar
1067 $sliderthickness = preg_split('#(?<=\d)(?=[a-z%])#i', $style['slider-thickness']);
1068 if (!isset($sliderthickness[1])) $sliderthickness[1] = 'px';
1069 $slideradius = ($sliderthickness[0] / 2).$sliderthickness[1];
1070 $slidermargin = (1 + ($handlesize[0] - $sliderthickness[0])/2).'px';
1071
1072 // Handle position
1073 $handletop = $handlesize[0]/2 - $sliderthickness[0]/2 + $style['handle-thickness'];
1074
1075 // Form Border
1076 if ($style['border']<>'none') {
1077 $border = ".qis_form.".$style['border']." {border:".$style['form-border-thickness']."px solid ".$style['form-border-color']."; padding: ".$style['form-padding']."px;border-radius:".$style['form-border-radius']."px;}";
1078 }
1079 if ($style['background'] == 'white') {
1080 $background = "form.qis_form {background:#FFF;}";
1081 }
1082 if ($style['background'] == 'color') {
1083 $background = "form.qis_form {background:".$style['backgroundhex'].";}";
1084 }
1085 if ($style['backgroundimage']) {
1086 $background = "form.qis_form {background: url('".$style['backgroundimage']."');}";
1087 }
1088
1089 // form width
1090 $formwidth = preg_split('#(?<=\d)(?=[a-z%])#i', $style['width']);
1091 if (!isset($formwidth[1])) $formwidth[1] = 'px';
1092 if ($style['widthtype'] == 'pixel') $width = $formwidth[0].$formwidth[1];
1093 else $width = '100%';
1094
1095 $data = $border.$radius.$background.'
1096 .qis_form {width:'.$width.';max-width:100%;}
1097 .qis, .qis__fill {width: 100%;height: '.$sliderthickness[0].$sliderthickness[1].';background: '.$style['slider-background'].';border-radius: '.$slideradius.';}
1098 .qis__fill {background: '.$style['slider-revealed'].';border-radius: '.$slideradius.' 0 0 '.$slideradius.';}
1099 .qis__handle {width: '.$handlesize[0].$handlesize[1].';height: '.$handlesize[0].$handlesize[1].';top: -'.$handletop.'px;background: '.$style['handle-background'].';border: '.$style['handle-thickness'].'px solid '.$style['handle-border'].';position: absolute;border-radius:'.$style['handle-corners'].'%;}
1100 .total {font-weight:bold;border-top:1px solid #FFF;margin-top:6px;text-align:left;}
1101 .qis--horizontal {margin: '.$slidermargin.' 0;}
1102 .qis-slidercenter {color:'.$style['slideroutputcolour'].';font-size:'.$style['output-size'].'px;}
1103 .qis-sliderleft, .qis-sliderright {color:'.$style['toplinecolour'].';font-size:'.$style['toplinefont'].'px;}
1104 .slider-label {color:'.$style['slider-label-colour'].';font-size:'.$style['slider-label-size'].'px;margin:'.$style['slider-label-margin'].';}
1105 .qis-interest, .qis-repayments {color:'.$style['interestcolour'].';font-size:'.$style['interestfont'].'px;margin:'.$style['interestmargin'].';}
1106 .qis-total {color:'.$style['totalcolour'].';font-size:'.$style['totalfont'].'px;margin:'.$style['totalmargin'].';}
1107 .qis_tooltip_body {border: '.$style['tooltipborderthickness'].'px solid '.$style['tooltipbordercolour'].'; background-color: '.$style['tooltipbackground'].'; border-radius: '.$style['tooltipcorner'].'px; color: '.$style['tooltipcolour'].';}
1108 .qis_tooltip_content {overflow: hidden; width: 100%; height: 100%;}
1109 .checkradio input[type=radio]:not(old) + label > span{border:3px solid '.$style['handle-border'].'}
1110 .checkradio input[type=radio]:not(old):checked + label > span{background: '.$style['slider-revealed'].';border: 3px solid '.$style['handle-border'].';}
1111 .circle-control svg {fill: '.$style['buttoncolour'].';height:'.$svgsize[0].'px'.';vertical-align:text-bottom;}
1112 .circle-control svg:hover {fill: '.$style['buttonhover'].';}
1113 .qis-outputs {'.$style['floatcustom'].'}
1114 .qis_buttons, .qis_slideroutputs {line-height:'.$style['output-size'].'px;margin-bottom:'.$style['slideroutputmargin'].'px;}
1115 ';
1116
1117 $table = qis_get_stored_ouputtable();
1118 $right = $table['values-padding'] * 2;
1119 $strongon = $table['values-strong'] ? '<strong>' : '';
1120 $strongoff = $table['values-strong'] ? '</strong>' : '';
1121 $data .= $table['values-colour'] ? '.outputtable td{padding: 0 '.$right.'px '.$table['values-padding'].'px 0;}.values-colour{color:'.$table['values-colour'].'}' : '';
1122 $right = $style['floatpercentage'] ? 98 - $style['floatpercentage'] : 98;
1123
1124 $data .= '.qis-add-float {display:grid;grid-template-columns:'.$style['floatpercentage'].'% '.$right.'%;grid-gap:2%;}
1125 @media only screen and (max-width:'.$style['floatbreakpoint'].'px) {.qis-add-float{display:block;}
1126 .qis-slidercenter {font-size:'.$smaller.'px;}.qis_buttons, .qis_slideroutputs {margin-bottom:'.($style['slideroutputmargin']/2).'px;}
1127 }';
1128
1129 return $data;
1130 }
1131
1132 // Builds Application Form CSS
1133
1134 function qis_register_css () {
1135 $allowed_html = callback_allowed_html();
1136 $code=$header=$input=$submitwidth=$paragraph=$submitbutton=$submit='';
1137 $style = qis_get_register_style();
1138 $corners = '-webkit-border-radius:'.$style['corners'].'px;border-radius:'.$style['corners'].'px;';
1139 $input = '.qis-register input[type=text], .qis-register input[type=tel], .qis-register textarea, .qis-register select, .qis_checkbox label, #calculators {color:'.$style['font-colour'].';border:'.$style['input-border'].';background-color:'.$style['inputbackground'].';}.registerradio input[type=radio]:not(old) + label > span{border:'.$style['input-border'].';}';
1140 $required = '.qis-register input[type=text].required, .qis-register input[type=tel].required, .qis-register textarea.required, .qis-register select.required {border:'.$style['input-required'].'}';
1141 $focus = ".qis-register input:focus, .qis-register textarea:focus {background:".$style['inputfocus'].";}";
1142 $text = ".qis-register p {color:".$style['font-colour'].";margin: 6px 0 !important;padding: 0 !important;}";
1143 $error = ".qis-register .error {color:".$style['error-font-colour']." !important;border-color:".$style['error-font-colour']." !important;}";
1144 $button = ".toggle-qis a {color: ".$style['header-colour'].";height:auto;font-size:1em;margin:0;text-decoration:none;}";
1145 $submit = "color:".$style['submit-colour'].";background:".$style['submit-background'].";border:".$style['submit-border'].";font-size: inherit;".$corners;
1146 $submithover = "background:".$style['submit-hover-background'].";";
1147 $submitbutton = ".qis-register .submit, .toggle-qis a {".$submit."}.qis-register .submit:hover {".$submithover."}";
1148 $applybutton = ".qis-apply a {color:".$style['submit-colour'].";background:".$style['submit-background'].";border:".$style['submit-border'].";font-size: inherit;".$corners.";}";
1149 $applybutton .= ".qis-apply a:hover {background:".$style['submit-hover-background'].";}";
1150
1151 $code = ".qis-register {max-width:100%;overflow:hidden;}".$submitbutton.$header.$paragraph.$input.$focus.$required.$text.$error.$applybutton;
1152
1153 $data = '<style type="text/css" media="screen">'.$code.'</style>';
1154 echo wp_kses($data,$allowed_html);
1155 }
1156
1157 // Add to Head
1158 function qis_head_css ($atts) {
1159 $allowed_html = callback_allowed_html();
1160 $atts = shortcode_atts(array('calculator' => ''),$atts,'quick-interest-slider');
1161 $data = '<style type="text/css" media="screen">'.qis_generate_css($atts['calculator']).'</style><script type="text/javascript">qis__rates = [];</script>';
1162 echo wp_kses($data,$allowed_html);
1163 qis_register_css();
1164 }
1165
1166 // GDPR Subscribe/Unsubsribe
1167
1168 function qis_subscribe() {
1169 $message = get_option('qis_messages');
1170
1171 $auto = qis_get_stored_autoresponder(null);
1172 if ( isset ($_GET['sub']) ) {
1173 $ref = $_GET['sub'];
1174 foreach ($message as $key => $value ) {
1175 if ($ref == $value['timestamp'] && $value['confirmed'] != true) {
1176 if ($auto['notification']) qis_send_notification ($value);
1177 $message[$key]['confirmed'] = true;
1178 update_option('qis_messages',$message);
1179 return '<div class="emailresponse">'.$auto['subscribemessage'].'</div>';
1180 }
1181 }
1182 return '<div class="emailresponse">'.$auto['subscribealready'].'</div>';
1183 }
1184 if ( isset ($_GET['unsub']) ) {
1185 $ref = $_GET['unsub'];
1186 foreach ($message as $key => $value ) {
1187 if ($ref == $value['timestamp']) {
1188 unset($value);
1189 $message = array_values($message);
1190 update_option('qis_messages',$message);
1191 return '<div class="emailresponse">'.$auto['unsubscribemessage'].'</div>';
1192 }
1193 }
1194 return '<div class="emailresponse">You have already unsubscribed</div>';
1195 }
1196 }
1197
1198 // Report of all Applications
1199
1200 function qis_show_progress() {
1201
1202 $content = false;
1203
1204 $progress = qis_get_stored_progress();
1205
1206 if (!empty($_POST['showprogress']) && check_admin_referer("save_qis")) {
1207 $formvalues = $_POST;
1208 $formvalues['youremail'] = filter_var($formvalues['youremail'],FILTER_SANITIZE_EMAIL);
1209 $formvalues['reference'] = htmlentities($formvalues['reference']);
1210
1211 $message = get_option('qis_messages');
1212
1213 foreach ($message as $key) {
1214 if ($formvalues['youremail'] == $key['youremail'] && $formvalues['reference'] == $key['reference']) {
1215 $register = qis_get_stored_register(1);
1216 $content = '<div class="qis-register">';
1217 if ($progress['showdetails']) {
1218 $content .= '<h2>'.$progress['loanlabel'].'</h2>';
1219 $content .= qis_build_message($key,$register);
1220 }
1221 $content .= '<h2>'.$progress['progresslabel'].'</h2>';
1222 $content .= '<p>';
1223 $steps = explode(",",$progress['progresssteps']);
1224 $stop = false;
1225 if ($progress['rejected'] && end($steps) == $key['progress']) {
1226 $stop = $progress['currentstep'] = true;
1227 $progress['highlight'] = $progress['rejectedcolour'];
1228 }
1229 foreach ($steps as $item) {
1230 if ($progress['currentstep']) {
1231 $background = $item == $key['progress'] ? ' style="background-color:'.$progress['highlight'].';"' : ' style="background-color:'.$progress['background'].';"';
1232 } else {
1233 $background = $stop ? ' style="background-color:'.$progress['background'].';"' : ' style="background-color:'.$progress['highlight'].';"';
1234 if ($item == $key['progress']) $stop = true;
1235 }
1236 $content .= '<span class="step"'.$background.'>'.$item.'</span>';
1237 }
1238 $content .= '</p>';
1239 $content .= '</div>';
1240 }
1241 }
1242 if ($content) return $content;
1243 else return '<h2>'.$progress['nothingfound'].'</h2>';
1244 }
1245
1246 $content .= '<form action="" method="POST" class="qis-register">
1247 <p>'.$progress['emaillabel'].'<br>
1248 <input type="email" name="youremail" value=""></p>
1249 <p>'.$progress['referencelabel'].'<br>
1250 <input type="text" name="reference" value=""></p>
1251 <p><input onClick="check();" type="submit" value="'.$progress['submitlabel'].'" class="submit" name="showprogress" /><p>
1252 <input type="hidden" name="anything" value="'. gmdate('Y-m-d H:i:s').'">
1253 <div class="validator">Enter the word YES in the box: <input type="text" style="width:3em" name="validator" value=""></div>';
1254 $content .= wp_nonce_field("save_qis");
1255 $content .= '</form>';
1256
1257 return $content;
1258 }
1259
1260 // Report of all Applications
1261
1262 function qis_registration_report() {
1263 $allowed_html = callback_allowed_html();
1264 $message = get_option('qis_messages');
1265 ob_start();
1266 $content ='<div id="qis-widget">
1267 <h2>'.__('Loan Applications','quick-interest-slider').'</h2>';
1268 $content .= qis_build_registration_table ($message,'report',null,null);
1269 $content .='</div>';
1270 echo wp_kses($content,$allowed_html);
1271 $output_string=ob_get_contents();
1272 ob_end_clean();
1273 return $output_string;
1274 }
1275
1276 // Build the table of registrations
1277
1278 function qis_build_registration_table ($message,$report,$qis_edit,$selected) {
1279 $register = qis_get_stored_register(1);
1280 $progress = qis_get_stored_progress();
1281 $span=$charles=$content='';
1282 $delete=array();$i=0;
1283
1284 $arr = array('name','email','telephone','message','company','address','number','checks','dropdown','dropdown2','radio','consent');
1285
1286 foreach ($arr as $item) {
1287 foreach($message as $row) {
1288 if (isset($row['your'.$item]) && $row['your'.$item]) {
1289 $register['use'.$item] = true;
1290 }
1291 }
1292 }
1293
1294 $register['yourdropdown'] = $register['dropdownlabel'];
1295 $register['yourdropdown2'] = $register['dropdown2label'];
1296
1297 $dashboard = '<table cellspacing="0">
1298 <tr>
1299 <th>'.__('Reference', 'quick-interest-slider').'</th>';
1300 foreach ($arr as $item) {
1301 if ($register['use'.$item]) $dashboard .= '<th>'.$register['your'.$item].'</th>';
1302 }
1303 $dashboard .= '<th>'.__('Amount', 'quick-interest-slider').'</th><th>Period</th>';
1304 if ($register['useattachment']) $dashboard .= '<th>Attachments</th>';
1305 $dashboard .= '<th>'.__('Date Sent', 'quick-interest-slider').'</th>';
1306 if ($progress['enabled']) $dashboard .= '<th>Progress</th>';
1307 if (!$report) $dashboard .= '<th></th>';
1308
1309 $dashboard .= '</tr>';
1310
1311 foreach($message as $value) {
1312 $span = ($value['reference'] && !$value['confirmed']) ? ' style="font-style:italic;color:#ccc;"' : '';
1313 $content .= '<tr'.$span.'>
1314 <td>'.$value['reference'].'</td>';
1315 foreach ($arr as $item) {
1316 if ($register['use'.$item]) {
1317 if (isset($value['yourconsent']) && $value['yourconsent']) $value['yourconsent'] = 'checked';
1318 $content .= '<td>';
1319 if ( ($qis_edit == 'selected' && $selected[$i]) || $qis_edit == 'all') $content .= '<input style="width:100%" type="text" value="'.$message[$i]['your'.$item].'" name="message['.$i.'][your'.$item.']">';
1320 elseif (isset($value['your'.$item])) $content .= $value['your'.$item];
1321 else $content .= '';
1322 $content .= '</td>';
1323 }
1324 }
1325 if ( ($qis_edit == 'selected' && $selected[$i]) || $qis_edit == 'all') {
1326 $content .= '<td><input style="width:100%" type="text" value="'.$message[$i]['loan-amount'].'" name="message['.$i.'][loan-amount]"></td>
1327 <td><input style="width:100%" type="text" value="'.$message[$i]['loan-period'].'" name="message['.$i.'][loan-period]"></td>';
1328 } else {
1329 $content .= '<td>'.$value['loan-amount'].'</td><td>'.$value['loan-period'].'</td>';
1330 }
1331 if ($value['yourname']) $charles = 'messages';
1332
1333 /*
1334 if ($register['useattachment']) {
1335 $content .= $value['attachment'] ? '<td><a href="'.$value['attachment'].'" target="_blank">View</a></td>' : '<td></td>';
1336 }
1337 */
1338
1339 if ($register['useattachment']) $content .= qis_message_thumbs($value);
1340 $content .= '<td>'.$value['sentdate'].'</td>';
1341
1342 if ($progress['enabled']) {
1343 if ( ($qis_edit == 'selected' && $selected[$i]) || $qis_edit == 'all') {
1344 $content .= '<td>';
1345 $steps = explode(",",$progress['progresssteps']);
1346 $content .= '<select name="message['.$i.'][progress]">';
1347 if ($message[$i]['progress']) $content .= '<option value="'.$message[$i]['progress'].'">'.$message[$i]['progress'].'</option>';
1348 foreach ($steps as $item) {
1349 $content .= '<option value="' . $item . '">' . $item . '</option>'."\r\t";
1350 }
1351 $content .= '</select></div>';
1352 $content .= '</td>';
1353 } else {
1354 $content .= '<td>'.$message[$i]['progress'].'</td>';
1355 }
1356 }
1357
1358 if (!$report) $content .= '<td><input type="checkbox" name="'.$i.'" value="checked" /></td>';
1359 $content .= '</tr>';
1360 $i++;
1361 }
1362
1363 $dashboard .= $content.'</table>';
1364 if ($charles) return $dashboard;
1365 }
1366
1367 // Languages
1368
1369 function qis_lang_init() {
1370 load_plugin_textdomain( 'quick-interest-slider', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' );
1371 }
1372
1373 // Upgrade IPN function
1374
1375 function qis_upgrade_ipn() {
1376 $qppkey = qis_key();
1377 if (!isset($_POST['custom']) || $qppkey['authorised'])
1378 return;
1379 $raw_post_data = file_get_contents('php://input');
1380 $raw_post_array = explode('&', $raw_post_data);
1381 $myPost = array();
1382 foreach ($raw_post_array as $keyval) {
1383 $keyval = explode ('=', $keyval);
1384 if (count($keyval) == 2)
1385 $myPost[$keyval[0]] = urldecode($keyval[1]);
1386 }
1387 $req = 'cmd=_notify-validate';
1388 if(function_exists('get_magic_quotes_gpc')) {
1389 $get_magic_quotes_exists = true;
1390 }
1391 foreach ($myPost as $key => $value) {
1392 if($get_magic_quotes_exists == true && get_magic_quotes_gpc() == 1) {
1393 $value = urlencode(stripslashes($value));
1394 } else {
1395 $value = urlencode($value);
1396 }
1397 $req .= "&$key=$value";
1398 }
1399
1400 $ch = curl_init("https://www.paypal.com/cgi-bin/webscr");
1401 if ($ch == FALSE) {
1402 return FALSE;
1403 }
1404
1405 curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
1406 curl_setopt($ch, CURLOPT_POST, 1);
1407 curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
1408 curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
1409 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
1410 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
1411 curl_setopt($ch, CURLOPT_FORBID_REUSE, 1);
1412 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
1413 curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: Close'));
1414
1415 $res = curl_exec($ch);
1416
1417 $tokens = explode("\r\n\r\n", trim($res));
1418 $res = trim(end($tokens));
1419
1420 if (strcmp ($res, "VERIFIED") == 0 && $qppkey['key'] == $_POST['custom']) {
1421 $qppkey['authorised'] = 'true';
1422 update_option('qpp_key',$qppkey);
1423 $qpp_setup = qp_get_stored_setup();
1424 $email = bloginfo('admin_email');
1425 $headers = "From: Quick Plugins <mail@quick-plugins.com>\r\n"
1426 . "Content-Type: text/html; charset=\"utf-8\"\r\n";
1427 $message = '<html><p>'.__('Thank you for upgrading. Your authorisation key is','quick-interest-slider').':</p><p>'.$qppkey['key'].'</p></html>';
1428 wp_mail($email,__('Quick Plugins Authorisation Key','quick-interest-slider'),$message,$headers);
1429 }
1430 exit();
1431 }
1432
1433 // Get URL of the current page
1434
1435 function qis_current_page_url() {
1436 $pageURL = 'http';
1437 if (!isset($_SERVER['HTTPS'])) $_SERVER['HTTPS'] = '';
1438 if (!empty($_SERVER["HTTPS"])) {
1439 $pageURL .= "s";
1440 }
1441 $pageURL .= "://";
1442 if (($_SERVER["SERVER_PORT"] != "80") && ($_SERVER['SERVER_PORT'] != '443'))
1443 $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
1444 else
1445 $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
1446 return $pageURL;
1447 }
1448
1449 // Changes thousands seperator
1450
1451 function qis_separator($s,$separator) {
1452 if ($separator == 'none') return $s;
1453 else if ($separator == 'apostrophe') $se = "'";
1454 else if ($separator == 'dot') $se = ".";
1455 else if ($separator == 'comma') $se = ",";
1456 else $se = ' ';
1457 return trim(preg_replace("/(\d)(?=(\d{3})+$)/",'$1'.$se,$s));
1458 }
1459