Contact Form 7 Redirection - Version 2.6.0

Version Description

  • Added new free action - erase data request
  • Fixed PHP8 notice messages
  • Completely removed accessiBe addon
  • Added compatability for slack message extension
Download this release

Release Info

Developer querysolutions
Plugin Icon 128x128 Contact Form 7 Redirection
Version 2.6.0
Comparing to
See all releases

Code changes from version 2.4.0 to 2.6.0

build/css/wpcf7-redirect-backend.css CHANGED
@@ -1718,15 +1718,6 @@ div#wpcf7r_leads .field-wrap label {
1718
  color: #fff !important;
1719
  }
1720
 
1721
- .accessibe-logo {
1722
- padding: 10px 0;
1723
- background: #fff;
1724
- }
1725
-
1726
- .accessibe-logo img {
1727
- width: 200px;
1728
- }
1729
-
1730
  .page-settings .image-uploader-btn {
1731
  display: block;
1732
  margin-top: 10px;
@@ -2411,804 +2402,4 @@ section.padbox .padbox {
2411
  -webkit-transform: rotate(360deg);
2412
  transform: rotate(360deg);
2413
  }
2414
- }
2415
-
2416
- .wrap-accesibe {
2417
- direction: ltr;
2418
- }
2419
-
2420
- .wrap-accesibe iframe {
2421
- height: calc(100vh - 280px) !important;
2422
- }
2423
-
2424
- .wrap-accesibe .wp-picker-container .button,
2425
- .wrap-accesibe .wp-picker-container .button-secondary {
2426
- width: 38px;
2427
- height: 38px;
2428
- overflow: hidden;
2429
- text-indent: -999px;
2430
- vertical-align: top;
2431
- border: 1px solid #000;
2432
- border-radius: 50%;
2433
- }
2434
-
2435
- .wrap-accesibe .success-message {
2436
- padding: 24px 40px;
2437
- margin-bottom: 30px;
2438
- font-size: 18px;
2439
- font-weight: normal;
2440
- line-height: 21px;
2441
- color: #fff;
2442
- background: #1871f8;
2443
- }
2444
-
2445
- .wrap-accesibe .success-message h3 {
2446
- margin: 0;
2447
- font-size: 24px;
2448
- font-style: normal;
2449
- font-weight: 600;
2450
- line-height: 32px;
2451
- color: #80d9ff;
2452
- /* identical to box height */
2453
- text-align: left;
2454
- }
2455
-
2456
- .wrap-accesibe .success-content a {
2457
- font-weight: 600;
2458
- color: #80d8ff;
2459
- }
2460
-
2461
- .wrap-accesibe .success-message-subtitle {
2462
- margin-bottom: 20px;
2463
- }
2464
-
2465
- .wrap-accesibe .accesibe-settings-form-footer {
2466
- padding: 0 40px;
2467
- margin-top: 40px;
2468
- }
2469
-
2470
- .wrap-accesibe .logo-row {
2471
- display: -webkit-box;
2472
- display: -ms-flexbox;
2473
- display: flex;
2474
- -webkit-box-pack: justify;
2475
- -ms-flex-pack: justify;
2476
- justify-content: space-between;
2477
- padding: 10px 0;
2478
- }
2479
-
2480
- .wrap-accesibe .logo-row .accesibe-settings-form {
2481
- height: auto;
2482
- padding: 0;
2483
- overflow: auto;
2484
- }
2485
-
2486
- .wrap-accesibe .top-logo {
2487
- padding: 10px 30px;
2488
- }
2489
-
2490
- .wrap-accesibe .top-logo .site-button {
2491
- padding: 0 20px !important;
2492
- margin-top: 0 !important;
2493
- }
2494
-
2495
- .wrap-accesibe .home-hero {
2496
- position: relative;
2497
- display: block !important;
2498
- min-height: 700px;
2499
- max-height: none !important;
2500
- padding: 0 !important;
2501
- background-attachment: fixed;
2502
- }
2503
-
2504
- .wrap-accesibe .scanning {
2505
- padding: 10px 40px;
2506
- font-size: 18px;
2507
- font-weight: bold;
2508
- background: #e7faf0;
2509
- }
2510
-
2511
- .wrap-accesibe .scanning-tip {
2512
- padding: 11px 40px;
2513
- font-size: 16px;
2514
- background: blanchedalmond;
2515
- }
2516
-
2517
- .wrap-accesibe .reg-form.wrapper {
2518
- position: relative;
2519
- z-index: 9;
2520
- }
2521
-
2522
- .wrap-accesibe .home-hero-cta {
2523
- display: -webkit-box;
2524
- display: -moz-flex;
2525
- display: -ms-flexbox;
2526
- display: flex;
2527
- justify-content: space-between;
2528
- -webkit-justify-content: space-between;
2529
- -moz-justify-content: space-between;
2530
- -webkit-box-pack: justify;
2531
- -ms-flex-pack: justify;
2532
- align-items: center;
2533
- -webkit-align-items: center;
2534
- -moz-align-items: center;
2535
- -webkit-box-align: center;
2536
- -ms-flex-align: center;
2537
- flex-wrap: wrap;
2538
- -webkit-flex-wrap: wrap;
2539
- -moz-flex-wrap: wrap;
2540
- -ms-flex-wrap: wrap;
2541
- flex-direction: column;
2542
- -moz-flex-direction: column;
2543
- -ms-flex-direction: column;
2544
- -webkit-box-direction: normal;
2545
- -webkit-box-orient: vertical;
2546
- }
2547
-
2548
- .wrap-accesibe .home-hero .home-hero-image {
2549
- position: absolute;
2550
- top: 0;
2551
- right: 0;
2552
- z-index: 1;
2553
- z-index: 999;
2554
- width: 47%;
2555
- height: auto;
2556
- -webkit-transition: all 0.15s ease;
2557
- -o-transition: all 0.15s ease;
2558
- transition: all 0.15s ease;
2559
- }
2560
-
2561
- .wrap-accesibe .home-hero .home-hero-image:hover .play-button {
2562
- -webkit-transform: scale(1.1);
2563
- -ms-transform: scale(1.1);
2564
- transform: scale(1.1);
2565
- }
2566
-
2567
- .wrap-accesibe .home-hero .home-hero-image:active .play-button {
2568
- -webkit-transform: scale(1);
2569
- -ms-transform: scale(1);
2570
- transform: scale(1);
2571
- }
2572
-
2573
- .wrap-accesibe .home-hero .home-hero-image .hero-tooltip {
2574
- position: absolute;
2575
- top: 0;
2576
- right: 0;
2577
- }
2578
-
2579
- .wrap-accesibe .home-hero .home-hero-image .hero-cover-image {
2580
- display: block;
2581
- display: none;
2582
- width: 95%;
2583
- max-width: 100% !important;
2584
- max-height: 400px;
2585
- margin-left: auto;
2586
- -o-object-fit: contain;
2587
- object-fit: contain;
2588
- -o-object-position: top right;
2589
- object-position: top right;
2590
- }
2591
-
2592
- .wrap-accesibe .home-hero .home-hero-image .play-button-wrap {
2593
- position: absolute;
2594
- top: 50%;
2595
- left: 50%;
2596
- width: 100%;
2597
- height: 100%;
2598
- cursor: pointer;
2599
- -webkit-transform: translateX(-50%) translateY(-50%);
2600
- -ms-transform: translateX(-50%) translateY(-50%);
2601
- transform: translateX(-50%) translateY(-50%);
2602
- }
2603
-
2604
- .wrap-accesibe .home-hero .home-hero-image .play-button-wrap .play-button {
2605
- position: relative;
2606
- top: -70px;
2607
- right: -50px;
2608
- z-index: 2;
2609
- margin: auto;
2610
- }
2611
-
2612
- .wrap-accesibe .site-button {
2613
- width: 100%;
2614
- max-width: 300px;
2615
- height: 57px;
2616
- font-size: 16px;
2617
- font-weight: 600;
2618
- line-height: 21px;
2619
- color: #fff;
2620
- text-align: center;
2621
- background: #136ef8;
2622
- border: 0;
2623
- border-radius: 10px;
2624
- -webkit-box-shadow: none;
2625
- box-shadow: none;
2626
- }
2627
-
2628
- .wrap-accesibe input[type="checkbox"] {
2629
- width: auto;
2630
- }
2631
-
2632
- .wrap-accesibe .accesibe-settings-form {
2633
- height: 100%;
2634
- padding: 20px 30px 30px 30px;
2635
- overflow: auto;
2636
- }
2637
-
2638
- .wrap-accesibe .accesibe-settings-form .site-button {
2639
- width: auto;
2640
- min-width: 200px;
2641
- margin-top: 20px;
2642
- }
2643
-
2644
- .wrap-accesibe .accesibe-settings-form .field-wrap {
2645
- margin-bottom: 10px;
2646
- }
2647
-
2648
- .wrap-accesibe .accesibe-settings-form .field-wrap select,
2649
- .wrap-accesibe .accesibe-settings-form .field-wrap [type="number"],
2650
- .wrap-accesibe .accesibe-settings-form .field-wrap [type="email"],
2651
- .wrap-accesibe .accesibe-settings-form .field-wrap [type="url"],
2652
- .wrap-accesibe .accesibe-settings-form .field-wrap [type="text"] {
2653
- width: 100%;
2654
- height: 38px;
2655
- margin: 0;
2656
- border-radius: 0;
2657
- }
2658
-
2659
- .wrap-accesibe .home-hero .home-hero-content .home-hero-minititle {
2660
- display: block;
2661
- font-size: 17px;
2662
- font-weight: 600;
2663
- line-height: 1;
2664
- color: #136ef8;
2665
- letter-spacing: -0.5px;
2666
- }
2667
-
2668
- .wrap-accesibe .home-hero .home-hero-content .home-hero-title {
2669
- font-size: 28px;
2670
- }
2671
-
2672
- .wrap-accesibe .home-hero .home-hero-content .home-hero-title {
2673
- margin: 0;
2674
- margin-bottom: 100px;
2675
- font-size: 42px;
2676
- font-style: normal;
2677
- font-weight: 600;
2678
- line-height: 48px;
2679
- color: #fff;
2680
- }
2681
-
2682
- .wrap-accesibe .hero-right-inner {
2683
- max-width: 462px;
2684
- padding: 40px 0;
2685
- margin: auto;
2686
- margin-left: 10%;
2687
- }
2688
-
2689
- .wrap-accesibe .hero-right-inner h4 {
2690
- font-size: 24px;
2691
- font-weight: 600;
2692
- line-height: 32px;
2693
- color: #136ef8;
2694
- }
2695
-
2696
- .wrap-accesibe .hero-right-inner .accessibe-logo {
2697
- padding: 0;
2698
- margin-bottom: 40px;
2699
- }
2700
-
2701
- .wrap-accesibe .hero-left-inner {
2702
- max-width: 600px;
2703
- }
2704
-
2705
- .wrap-accesibe .home-hero .home-hero-content .home-hero-title em:before {
2706
- bottom: 10px;
2707
- }
2708
-
2709
- .wrap-accesibe .home-hero-checkmarks {
2710
- margin-top: 20px;
2711
- }
2712
-
2713
- .wrap-accesibe .main-form-wrap {
2714
- display: -webkit-box;
2715
- display: -ms-flexbox;
2716
- display: flex;
2717
- -webkit-box-pack: center;
2718
- -ms-flex-pack: center;
2719
- justify-content: center;
2720
- }
2721
-
2722
- .wrap-accesibe .main-form-wrap .field-wrap textarea,
2723
- .wrap-accesibe .main-form-wrap .field-wrap select,
2724
- .wrap-accesibe .main-form-wrap .field-wrap [type="number"],
2725
- .wrap-accesibe .main-form-wrap .field-wrap [type="email"],
2726
- .wrap-accesibe .main-form-wrap .field-wrap [type="url"],
2727
- .wrap-accesibe .main-form-wrap .field-wrap [type="password"],
2728
- .wrap-accesibe .main-form-wrap .field-wrap [type="text"] {
2729
- height: 57px;
2730
- -webkit-box-sizing: border-box;
2731
- box-sizing: border-box;
2732
- padding: 0 10px;
2733
- font-size: 16px;
2734
- font-style: normal;
2735
- font-weight: 600;
2736
- line-height: 21px;
2737
- color: #bfbfbf;
2738
- border: 2px solid #eaeaea;
2739
- border-radius: 10px;
2740
- }
2741
-
2742
- .wrap-accesibe .main-form-wrap label {
2743
- margin-bottom: 16px;
2744
- font-size: 16px;
2745
- font-style: normal;
2746
- font-weight: 600;
2747
- line-height: 21px;
2748
- color: #bfbfbf;
2749
- }
2750
-
2751
- .wrap-accesibe .home-hero-checkmarks .home-hero-checkmark {
2752
- position: relative;
2753
- display: block;
2754
- padding-left: 45px;
2755
- margin: 30px 0;
2756
- font-size: 18px;
2757
- line-height: 1.3;
2758
- color: #fff;
2759
- text-align: left;
2760
- }
2761
-
2762
- .wrap-accesibe section.home-hero.hero-standard.hero-standard-full {
2763
- position: relative;
2764
- }
2765
-
2766
- .wrap-accesibe h3.home-hero-title {
2767
- color: #fff;
2768
- }
2769
-
2770
- .wrap-accesibe .home-hero-content {
2771
- display: block;
2772
- width: 100%;
2773
- -webkit-box-sizing: border-box;
2774
- box-sizing: border-box;
2775
- background: #136ef8;
2776
- }
2777
-
2778
- .wrap-accesibe .hero-right,
2779
- .wrap-accesibe .hero-left {
2780
- width: 50%;
2781
- }
2782
-
2783
- .wrap-accesibe .hero-left {
2784
- display: -webkit-box;
2785
- display: -moz-flex;
2786
- display: -ms-flexbox;
2787
- display: flex;
2788
- justify-content: center;
2789
- -webkit-justify-content: center;
2790
- -moz-justify-content: center;
2791
- -webkit-box-pack: center;
2792
- -ms-flex-pack: center;
2793
- align-items: space-between;
2794
- -webkit-align-items: space-between;
2795
- -moz-align-items: space-between;
2796
- -webkit-box-align: space-between;
2797
- -ms-flex-align: space-between;
2798
- flex-direction: column;
2799
- -moz-flex-direction: column;
2800
- -ms-flex-direction: column;
2801
- -webkit-box-direction: normal;
2802
- -webkit-box-orient: vertical;
2803
- padding: 120px 40px;
2804
- }
2805
-
2806
- .wrap-accesibe .home-hero .home-hero-content .home-hero-checkmarks .home-hero-checkmark .icon {
2807
- display: -webkit-box;
2808
- display: -moz-flex;
2809
- display: -ms-flexbox;
2810
- display: flex;
2811
- justify-content: center;
2812
- -webkit-justify-content: center;
2813
- -moz-justify-content: center;
2814
- -webkit-box-pack: center;
2815
- -ms-flex-pack: center;
2816
- align-items: center;
2817
- -webkit-align-items: center;
2818
- -moz-align-items: center;
2819
- -webkit-box-align: center;
2820
- -ms-flex-align: center;
2821
- position: absolute;
2822
- top: -5px;
2823
- left: 0;
2824
- width: 23px;
2825
- height: 23px;
2826
- padding: 6px;
2827
- background-color: #81d9ff;
2828
- border-radius: 50%;
2829
- }
2830
-
2831
- .wrap-accesibe .agreement {
2832
- margin-top: 10px;
2833
- margin-bottom: 20px;
2834
- }
2835
-
2836
- .wrap-accesibe .popup.popup-account .content .account-stages-wrapper .account-stage-wrapper .account-body .highlight a {
2837
- color: #136ef8;
2838
- }
2839
-
2840
- .wrap-accesibe .highlight {
2841
- background: transparent;
2842
- }
2843
-
2844
- .wrap-accesibe .field-wrap {
2845
- padding: 0 0;
2846
- margin-bottom: 20px;
2847
- }
2848
-
2849
- .wrap-accesibe .agreement {
2850
- display: -webkit-box;
2851
- display: -ms-flexbox;
2852
- display: flex;
2853
- -webkit-box-pack: justify;
2854
- -ms-flex-pack: justify;
2855
- justify-content: space-between;
2856
- -webkit-box-align: center;
2857
- -ms-flex-align: center;
2858
- align-items: center;
2859
- }
2860
-
2861
- .wrap-accesibe .agreement label a,
2862
- .wrap-accesibe .agreement label {
2863
- font-size: 16px;
2864
- font-style: normal;
2865
- font-weight: normal;
2866
- line-height: 10px;
2867
- color: #bfbfbf;
2868
- }
2869
-
2870
- .wrap-accesibe .agreement input[type="checkbox"] {
2871
- position: relative;
2872
- top: 3px;
2873
- }
2874
-
2875
- .wrap-accesibe .home-hero-cta .field-wrap {
2876
- display: -webkit-box;
2877
- display: -ms-flexbox;
2878
- display: flex;
2879
- width: calc(100%);
2880
- padding: 0 0;
2881
- margin-bottom: 30px;
2882
- -webkit-box-orient: vertical;
2883
- -webkit-box-direction: normal;
2884
- -ms-flex-direction: column;
2885
- flex-direction: column;
2886
- }
2887
-
2888
- .wrap-accesibe .footer-wrap {
2889
- display: -webkit-box;
2890
- display: -ms-flexbox;
2891
- display: flex;
2892
- -webkit-box-pack: justify;
2893
- -ms-flex-pack: justify;
2894
- justify-content: space-between;
2895
- padding: 0 40px;
2896
- margin: 40px 0;
2897
- text-align: right;
2898
- }
2899
-
2900
- .wrap-accesibe .home-hero .home-hero-logos {
2901
- position: absolute;
2902
- bottom: -75px;
2903
- left: 50%;
2904
- z-index: 2;
2905
- width: 90%;
2906
- max-width: 1024px;
2907
- padding: 30px 50px;
2908
- text-align: center;
2909
- background-color: #fff;
2910
- border-radius: 10px;
2911
- -webkit-box-shadow: 0 0 50px 0 rgba(50, 50, 50, 0.1);
2912
- box-shadow: 0 0 50px 0 rgba(50, 50, 50, 0.1);
2913
- -webkit-transform: translateX(-50%);
2914
- -ms-transform: translateX(-50%);
2915
- transform: translateX(-50%);
2916
- }
2917
-
2918
- .wrap-accesibe .home-hero .home-hero-logos .home-hero-logos-title {
2919
- display: block;
2920
- margin-bottom: 20px;
2921
- font-size: 18px;
2922
- line-height: 1;
2923
- }
2924
-
2925
- .wrap-accesibe .home-hero .home-hero-logos .home-hero-logos-title br {
2926
- display: none !important;
2927
- }
2928
-
2929
- .wrap-accesibe .home-hero .home-hero-logos .home-hero-logos-title em {
2930
- display: inline-block;
2931
- padding: 5px 12px;
2932
- margin: 0 3px;
2933
- font-style: normal;
2934
- font-weight: 600;
2935
- color: #136ef8;
2936
- background-color: #e3e8fb;
2937
- border-radius: 50px;
2938
- }
2939
-
2940
- .wrap-accesibe .home-hero .home-hero-logos .clients-carousel .owl-stage .owl-item {
2941
- display: -webkit-box;
2942
- display: -ms-flexbox;
2943
- display: flex;
2944
- -webkit-box-pack: center;
2945
- -ms-flex-pack: center;
2946
- justify-content: center;
2947
- -webkit-box-align: center;
2948
- -ms-flex-align: center;
2949
- align-items: center;
2950
- height: 50px;
2951
- }
2952
-
2953
- .wrap-accesibe .home-hero .home-hero-logos .clients-carousel .owl-stage .owl-item img {
2954
- display: block;
2955
- max-width: 110px !important;
2956
- max-height: 35px !important;
2957
- margin: auto;
2958
- -webkit-transition: all 0.15s ease;
2959
- -o-transition: all 0.15s ease;
2960
- transition: all 0.15s ease;
2961
- }
2962
-
2963
- .wrap-accesibe .home-hero .home-hero-logos .clients-carousel .owl-stage .owl-item img:hover {
2964
- -webkit-transform: scale(1.15);
2965
- -ms-transform: scale(1.15);
2966
- transform: scale(1.15);
2967
- }
2968
-
2969
- .wrap-accesibe .home-hero .home-hero-logos .clients-carousel .owl-stage .owl-item img:active {
2970
- -webkit-transform: scale(1);
2971
- -ms-transform: scale(1);
2972
- transform: scale(1);
2973
- }
2974
-
2975
- .wrap-accesibe .home-hero .home-hero-logos .clients-carousel .owl-stage .owl-item .logo-higher img {
2976
- max-height: 45px !important;
2977
- }
2978
-
2979
- .wrap-accesibe .home-hero .home-hero-logos .clients-carousel .owl-stage .owl-item .logo-shorter img {
2980
- max-height: 25px !important;
2981
- }
2982
-
2983
- .wrap-accesibe .home-hero .home-hero-logos .clients-carousel .owl-stage .owl-item .logo-wider img {
2984
- max-width: 125px !important;
2985
- }
2986
-
2987
- .wrap-accesibe .home-hero .home-hero-logos .clients-carousel .owl-nav .owl-prev {
2988
- left: -25px;
2989
- }
2990
-
2991
- .wrap-accesibe .home-hero .home-hero-logos .clients-carousel .owl-nav .owl-next {
2992
- right: -25px;
2993
- }
2994
-
2995
- .wrap-accesibe .home-hero .home-hero-logos .clients-carousel .owl-nav .owl-prev,
2996
- .wrap-accesibe .home-hero .home-hero-logos .clients-carousel .owl-nav .owl-next {
2997
- top: -10px;
2998
- width: 20px;
2999
- height: 20px;
3000
- background: transparent;
3001
- -webkit-box-shadow: 0 0 0 transparent;
3002
- box-shadow: 0 0 0 transparent;
3003
- }
3004
-
3005
- .wrap-accesibe .home-hero .home-hero-logos .clients-carousel .owl-nav .owl-prev .icon,
3006
- .wrap-accesibe .home-hero .home-hero-logos .clients-carousel .owl-nav .owl-next .icon {
3007
- width: 17px;
3008
- }
3009
-
3010
- @media screen and (max-width: 1700px) {
3011
- .wrap-accesibe .home-hero .home-hero-image .hero-cover-image {
3012
- width: auto !important;
3013
- }
3014
-
3015
- .wrap-accesibe .home-hero .home-hero-content .home-hero-minititle {
3016
- font-size: 16px;
3017
- }
3018
-
3019
- .wrap-accesibe .home-hero .home-hero-content .home-hero-checkmarks .home-hero-checkmark {
3020
- font-size: 16px;
3021
- }
3022
-
3023
- .wrap-accesibe .home-hero .home-hero-logos .home-hero-logos-title {
3024
- font-size: 16px;
3025
- }
3026
-
3027
- .wrap-accesibe .home-hero .home-hero-logos .clients-carousel .owl-stage .owl-item img {
3028
- max-width: 100px !important;
3029
- max-height: 30px !important;
3030
- }
3031
-
3032
- .wrap-accesibe .home-hero .home-hero-logos {
3033
- max-width: 960px;
3034
- padding-top: 20px;
3035
- padding-bottom: 20px;
3036
- }
3037
- }
3038
-
3039
- @media screen and (max-width: 1300px) {
3040
- .wrap-accesibe .home-hero .home-hero-content .home-hero-title {
3041
- font-size: 28px;
3042
- }
3043
-
3044
- .wrap-accesibe .main-form-wrap {
3045
- flex-direction: column;
3046
- -moz-flex-direction: column;
3047
- -ms-flex-direction: column;
3048
- -webkit-box-direction: normal;
3049
- -webkit-box-orient: vertical;
3050
- }
3051
-
3052
- .wrap-accesibe .hero-right,
3053
- .wrap-accesibe .hero-left {
3054
- width: 100%;
3055
- }
3056
-
3057
- .wrap-accesibe .hero-right-inner,
3058
- .wrap-accesibe .hero-left {
3059
- padding: 40px 40px;
3060
- }
3061
-
3062
- .wrap-accesibe .home-hero .home-hero-content .home-hero-title {
3063
- margin-bottom: 20px;
3064
- }
3065
-
3066
- .wrap-accesibe .home-hero .home-hero-content .home-hero-checkmarks .home-hero-checkmark {
3067
- margin: 28px 0;
3068
- }
3069
-
3070
- .wrap-accesibe .hero-right-inner {
3071
- margin-left: 0;
3072
- }
3073
- }
3074
-
3075
- @media screen and (max-width: 1024px) {
3076
- .wrap-accesibe .home-hero .home-hero-image .hero-tooltip {
3077
- display: none !important;
3078
- }
3079
-
3080
- .wrap-accesibe .home-hero .home-hero-image .hero-cover-image {
3081
- max-width: 100% !important;
3082
- height: auto;
3083
- max-height: 100%;
3084
- }
3085
-
3086
- .wrap-accesibe .home-hero .home-hero-image {
3087
- position: relative;
3088
- top: auto;
3089
- right: auto;
3090
- bottom: auto;
3091
- left: auto;
3092
- display: none;
3093
- float: right;
3094
- width: 100%;
3095
- height: auto;
3096
- padding-left: 50px;
3097
- margin: 0;
3098
- }
3099
-
3100
- .wrap-accesibe .home-hero .home-hero-logos .home-hero-logos-title {
3101
- max-width: 450px;
3102
- margin-right: auto;
3103
- margin-left: auto;
3104
- }
3105
-
3106
- .wrap-accesibe .home-hero .home-hero-logos {
3107
- position: relative;
3108
- top: auto;
3109
- right: auto;
3110
- bottom: -50px;
3111
- left: auto;
3112
- z-index: 3;
3113
- max-width: 750px;
3114
- margin: auto;
3115
- -webkit-transform: translateY(0);
3116
- -ms-transform: translateY(0);
3117
- transform: translateY(0);
3118
- }
3119
-
3120
- .wrap-accesibe .home-hero {
3121
- height: auto;
3122
- background-attachment: scroll;
3123
- }
3124
- }
3125
-
3126
- @media screen and (max-width: 700px) {
3127
- .wrap-accesibe .home-hero .home-hero-image {
3128
- display: block;
3129
- height: 350px;
3130
- }
3131
-
3132
- .wrap-accesibe .home-hero .home-hero-content .home-hero-checkmarks .home-hero-checkmark {
3133
- text-align: left;
3134
- }
3135
-
3136
- .wrap-accesibe .home-hero .home-hero-logos .clients-carousel .owl-nav .owl-prev {
3137
- left: 10px;
3138
- }
3139
-
3140
- .wrap-accesibe .home-hero .home-hero-logos .clients-carousel .owl-nav .owl-next {
3141
- right: 10px;
3142
- }
3143
-
3144
- .wrap-accesibe .home-hero .home-hero-logos .clients-carousel .owl-nav {
3145
- display: none;
3146
- }
3147
-
3148
- .wrap-accesibe .home-hero .home-hero-logos {
3149
- padding: 20px;
3150
- }
3151
- }
3152
-
3153
- @media screen and (max-width: 500px) {
3154
- .wrap-accesibe .home-hero .home-hero-image .play-button-wrap .play-button {
3155
- top: -25px;
3156
- right: -25px;
3157
- }
3158
-
3159
- .wrap-accesibe .home-hero .home-hero-image {
3160
- height: auto;
3161
- }
3162
-
3163
- .wrap-accesibe .home-hero .home-hero-content .home-hero-title br {
3164
- display: none;
3165
- }
3166
-
3167
- .wrap-accesibe .home-hero .home-hero-content .home-hero-title {
3168
- font-size: 27px;
3169
- }
3170
-
3171
- .wrap-accesibe .home-hero .home-hero-content .home-hero-checkmarks .home-hero-checkmark {
3172
- font-size: 16px;
3173
- }
3174
-
3175
- .wrap-accesibe .home-hero .home-hero-logos .home-hero-logos-title {
3176
- margin-bottom: 30px;
3177
- font-size: 16px;
3178
- }
3179
-
3180
- .wrap-accesibe .home-hero .home-hero-logos .clients-carousel .owl-stage .owl-item:nth-child(-n + 10) {
3181
- display: block;
3182
- }
3183
-
3184
- .wrap-accesibe .home-hero .home-hero-logos .clients-carousel .owl-stage .owl-item {
3185
- display: none;
3186
- width: 50% !important;
3187
- }
3188
-
3189
- .wrap-accesibe .home-hero .home-hero-logos .clients-carousel .owl-stage {
3190
- display: -webkit-box;
3191
- display: -ms-flexbox;
3192
- display: flex;
3193
- -webkit-box-pack: justify;
3194
- -ms-flex-pack: justify;
3195
- justify-content: space-between;
3196
- -webkit-box-align: start;
3197
- -ms-flex-align: start;
3198
- align-items: flex-start;
3199
- width: 100% !important;
3200
- -webkit-transform: none !important;
3201
- -ms-transform: none !important;
3202
- transform: none !important;
3203
- -ms-flex-wrap: wrap;
3204
- flex-wrap: wrap;
3205
- }
3206
-
3207
- .wrap-accesibe .home-hero .home-hero-logos .clients-carousel .owl-nav {
3208
- display: none !important;
3209
- }
3210
-
3211
- .wrap-accesibe .home-hero .home-hero-logos {
3212
- bottom: -35px;
3213
- }
3214
  }
1718
  color: #fff !important;
1719
  }
1720
 
 
 
 
 
 
 
 
 
 
1721
  .page-settings .image-uploader-btn {
1722
  display: block;
1723
  margin-top: 10px;
2402
  -webkit-transform: rotate(360deg);
2403
  transform: rotate(360deg);
2404
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2405
  }
class-wpcf7-redirect.php CHANGED
@@ -48,7 +48,6 @@ class Wpcf7_Redirect {
48
  define( 'WPCF7_PRO_REDIRECT_EXTENSION_UPDATES', $base_url . 'wp-json/api-v1/get-extension-update/' );
49
  define( 'WPCF7_PRO_REDIRECT_PLUGIN_EXTENSIONS_LIST_URL', $base_url . 'wp-json/api-v1/extensions_list/' );
50
  define( 'WPCF7_PRO_REDIRECT_PLUGIN_PROMOTIONS_URL', $base_url . 'wp-json/api-v1/promotions/' );
51
- define( 'ACCESSIBE_API_URI', $base_url . 'wp-json/accesibe-api/activate' );
52
 
53
  define( 'WPCF7_PRO_REDIRECT_WP_REQUIRES', '5.3' );
54
  define( 'WPCF7_PRO_REDIRECT_WP_TESTED', '5.6' );
48
  define( 'WPCF7_PRO_REDIRECT_EXTENSION_UPDATES', $base_url . 'wp-json/api-v1/get-extension-update/' );
49
  define( 'WPCF7_PRO_REDIRECT_PLUGIN_EXTENSIONS_LIST_URL', $base_url . 'wp-json/api-v1/extensions_list/' );
50
  define( 'WPCF7_PRO_REDIRECT_PLUGIN_PROMOTIONS_URL', $base_url . 'wp-json/api-v1/promotions/' );
 
51
 
52
  define( 'WPCF7_PRO_REDIRECT_WP_REQUIRES', '5.3' );
53
  define( 'WPCF7_PRO_REDIRECT_WP_TESTED', '5.6' );
classes/actions/class-wpcf7r-action-erase-data-request.php ADDED
@@ -0,0 +1,204 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Class WPCF7R_Action_erasedatarequest file.
5
+ */
6
+ if (!defined('ABSPATH')) {
7
+ exit;
8
+ }
9
+
10
+ register_wpcf7r_actions(
11
+ 'erasedatarequest',
12
+ __('Erase/Export Data Request', 'wpcf7-redirect'),
13
+ 'WPCF7R_Action_erasedata',
14
+ 6
15
+ );
16
+
17
+ /**
18
+ * Class WPCF7R_Action_erasedatarequest
19
+ * A Class that handles redirect actions
20
+ */
21
+ class WPCF7R_Action_erasedatarequest extends WPCF7R_Action
22
+ {
23
+
24
+ /**
25
+ * Init the parent action class
26
+ *
27
+ * @param $post
28
+ */
29
+ public function __construct($post)
30
+ {
31
+ parent::__construct($post);
32
+ }
33
+
34
+ /**
35
+ * Get the action admin fields
36
+ */
37
+ public function get_action_fields()
38
+ {
39
+
40
+ $parent_fields = parent::get_default_fields();
41
+
42
+ $tags = $this->get_mail_tags_array();
43
+
44
+ return array_merge(
45
+ array(
46
+ array(
47
+ 'name' => 'request_type',
48
+ 'type' => 'select',
49
+ 'label' => __('Request type', 'wpcf7-redirect'),
50
+ 'placeholder' => __('Request type', 'wpcf7-redirect'),
51
+ 'value' => $this->get('request_type'),
52
+ 'class' => '',
53
+ 'required' => true,
54
+ 'options' => array(
55
+ 'remove_personal_data' => __('Remove personal data'),
56
+ 'export_personal_data' => __('Export personal data'),
57
+ ),
58
+ ),
59
+ array(
60
+ 'name' => 'email_field',
61
+ 'type' => 'select',
62
+ 'label' => __('The field that is used for username ([username])', 'wpcf7-redirect'),
63
+ 'placeholder' => __('Username field', 'wpcf7-redirect'),
64
+ 'tooltip' => __('Add a text field to your form and save it', 'wpcf-redirect'),
65
+ 'footer' => '<div>' . $this->get_formatted_mail_tags() . '</div>',
66
+ 'value' => $this->get('email_field'),
67
+ 'class' => '',
68
+ 'options' => $tags,
69
+ ),
70
+ array(
71
+ 'name' => 'email_does_not_exist_message',
72
+ 'type' => 'text',
73
+ 'label' => __('Email/Username does not exist error message', 'wpcf7-redirect'),
74
+ 'placeholder' => __('Email/Username does not exist error message', 'wpcf7-redirect'),
75
+ 'footer' => '<div>' . $this->get_formatted_mail_tags() . '</div>',
76
+ 'value' => $this->get('email_does_not_exist_message'),
77
+ 'class' => '',
78
+ 'options' => $tags,
79
+ ),
80
+
81
+ array(
82
+ 'name' => 'send_confirmation_email',
83
+ 'type' => 'checkbox',
84
+ 'label' => __('Send confirmation email', 'wpcf7-redirect'),
85
+ 'sub_title' => '',
86
+ 'placeholder' => '',
87
+ 'value' => $this->get('send_confirmation_email'),
88
+ ),
89
+ ),
90
+ $parent_fields
91
+ );
92
+ }
93
+
94
+ /**
95
+ * Get an HTML of the
96
+ */
97
+ public function get_action_settings()
98
+ {
99
+ $this->get_settings_template('html-action-redirect.php');
100
+ }
101
+
102
+ /**
103
+ * Handle a simple redirect rule
104
+ *
105
+ * @param $submission
106
+ */
107
+ public function process($submission)
108
+ {
109
+ $response = array();
110
+
111
+ $this->posted_data = $submission->get_posted_data();
112
+
113
+ $action_type = $this->get('request_type');
114
+ $status = 'pending';
115
+
116
+ if (!$this->get('send_confirmation_email')) {
117
+ $status = 'confirmed';
118
+ }
119
+
120
+ $email_address = $this->get_user_email_address();
121
+
122
+ $request_id = wp_create_user_request( $email_address , $action_type, array(), $status);
123
+ $message = '';
124
+
125
+ if (is_wp_error($request_id)) {
126
+ $message = $request_id->get_error_message();
127
+ } elseif (!$request_id) {
128
+ $message = __('Unable to initiate confirmation request.');
129
+ }
130
+
131
+ if ($message) {
132
+ $response = new WP_Error('erase_data_request', $message);
133
+ }
134
+
135
+ if(!$response){
136
+ if ('pending' === $status) {
137
+ wp_send_user_request($request_id);
138
+
139
+ $response = __('Confirmation request initiated successfully.');
140
+ } elseif ('confirmed' === $status) {
141
+ $response = __('Request added successfully.');
142
+ }
143
+ }
144
+
145
+ return $response;
146
+ }
147
+
148
+ /**
149
+ * Get the user email if the user exists
150
+ *
151
+ * @return void
152
+ */
153
+ private function get_user_email_address(){
154
+ $username_or_email_field = $this->get('email_field');
155
+
156
+ $username_or_email_address = $this->get_submitted_value($username_or_email_field);
157
+
158
+ if (!is_email($username_or_email_address)) {
159
+ $user = get_user_by('login', $username_or_email_address);
160
+ if ($user instanceof WP_User) {
161
+ $email_address = $user->user_email;
162
+ }
163
+ } else {
164
+ $email_address = $username_or_email_address;
165
+ }
166
+
167
+ return $email_address;
168
+ }
169
+
170
+ public function process_validation($submission)
171
+ {
172
+
173
+ $this->posted_data = $submission->get_posted_data();
174
+
175
+ $username_or_email_field = $this->get('email_field');
176
+
177
+ $message = null;
178
+
179
+ $email_address = $this->get_user_email_address();
180
+
181
+ if (empty($email_address)) {
182
+ $email_does_not_exists_message = $this->get('email_does_not_exist_message', __('Unable to add this request. A valid email address or username must be supplied'));
183
+
184
+ $email_does_not_exists_message = $this->replace_tags( $email_does_not_exists_message );
185
+
186
+ $message = new WP_Error('erase_data_request', $email_does_not_exists_message);
187
+
188
+ /**
189
+ * Get the tags that are used to send the username/email
190
+ * @var [type]
191
+ */
192
+ $login_field_tag = $this->get_validation_mail_tags($username_or_email_field);
193
+
194
+ $error = array(
195
+ 'tag' => $login_field_tag,
196
+ 'error_message' => $message->get_error_message(),
197
+ );
198
+
199
+ $results['invalid_tags'][] = new WP_error('tag_invalid', $error);
200
+ }
201
+
202
+ return $results;
203
+ }
204
+ }
classes/aff/class-ext-accessibe.php DELETED
@@ -1,631 +0,0 @@
1
- <?php
2
- /**
3
- * Accesibe Extension Class
4
- *
5
- * @category Ext_Accessibe
6
- * @package Ext_Accessibe
7
- * @author Author <info@querysol.com>
8
- * @license https://opensource.org/licenses/MIT MIT License
9
- * @link http://querysol.com/
10
- */
11
- class Ext_Accessibe extends WPCF7R_Action {
12
- public $ver = '1.0';
13
- private $api_url = ACCESSIBE_API_URI;
14
- private $ext_name = 'accessibe';
15
-
16
- /**
17
- * Class constructor
18
- */
19
- public function __construct() {
20
- if ( isset( $_GET['scan'] ) ) {
21
- $this->reset_scan_results();
22
- }
23
- if ( is_admin() ) {
24
- $this->admin_init();
25
- }
26
- }
27
-
28
- /**
29
- * Get the extension name
30
- */
31
- public function get_name() {
32
- $name = $this->ext_name;
33
- return $name;
34
- }
35
-
36
- /**
37
- * Get the option key that will store the widget settings
38
- */
39
- public function get_widget_option_key() {
40
- $key = 'accesibe_widget_options';
41
- if ( defined( 'ICL_LANGUAGE_CODE' ) ) {
42
- $key .= '_' . ICL_LANGUAGE_CODE;
43
- }
44
- return $key;
45
- }
46
-
47
- /**
48
- * Initiate admin scripts
49
- */
50
- public function admin_init() {
51
-
52
- if( current_user_can( 'wpcf7_edit_contact_form' ) ){
53
- if ( isset( $_GET['page'] ) && qs_get_plugin_display_name() === $_GET['page'] ) {
54
- $response = $this->acctivate_acccesbe_menu();
55
- }
56
- if ( isset( $_REQUEST['start-free-trial'] ) && qs_get_plugin_display_name() === $_REQUEST['start-free-trial'] ) {
57
- $response = $this->mark_scan_completed();
58
- }
59
- if ( isset( $_POST['activate-accesibe'] ) && $_POST['activate-accesibe'] ) {
60
- $response = $this->activate();
61
- if ( is_wp_error( $response ) ) {
62
- WPCF7r_Utils::add_admin_notice( 'alert', $response->get_error_message() );
63
- } else {
64
- WPCF7r_Utils::add_admin_notice( 'notice', __( 'Successfully activated' ) );
65
- }
66
- }
67
- if ( isset( $_GET['deactivate'] ) && qs_get_plugin_display_name() === $_GET['deactivate'] ) {
68
- $this->deactivate();
69
- }
70
- if ( isset( $_REQUEST['save_ext_settings'] ) && qs_get_plugin_display_name() === $_REQUEST['save_ext_settings'] ) {
71
- $this->save();
72
- }
73
- }
74
-
75
- $this->init();
76
- }
77
-
78
- /**
79
- * Save widget settings
80
- */
81
- private function save() {
82
- $name = $this->get_name();
83
- $key = $this->get_widget_option_key();
84
- if ( isset( $_REQUEST['wpcf7-redirect'][ $key ][ $name ] ) && $_REQUEST['wpcf7-redirect'][ $key ][ $name ] ) {
85
- $data = $_REQUEST['wpcf7-redirect'][ $key ][ $name ];
86
- update_option( $key, $data );
87
- } elseif ( isset( $_REQUEST['save_ext_settings'] ) ) {
88
- update_option( $key, array() );
89
- }
90
- $this->init();
91
- }
92
-
93
- /**
94
- * Get this extension settings page url
95
- */
96
- public function get_settings_url() {
97
- return admin_url( '/admin.php?page=' . qs_get_plugin_display_name() );
98
- }
99
-
100
- /**
101
- * The link will reset the scan data to allow a new scan to process
102
- */
103
- public function get_scan_link() {
104
- $url = $this->get_settings_url();
105
- $url = add_query_arg(
106
- array(
107
- 'scan' => true,
108
- )
109
- );
110
- return $url;
111
- }
112
-
113
- /**
114
- * Check if scan was commited and saved
115
- */
116
- public function get_scan_results() {
117
- return get_option( 'accesibe_scan_results' );
118
- }
119
-
120
- /**
121
- * Get the widget settings
122
- */
123
- public function get_widget_settings() {
124
- $key = $this->get_widget_option_key();
125
- return get_option( $key );
126
- }
127
-
128
- /**
129
- * Check if the plugin is active
130
- */
131
- public function is_active() {
132
- $settings = $this->get_settings();
133
- return $settings ? true : false;
134
- }
135
-
136
- /**
137
- * Check if the current screen is a registration form
138
- * @return boolean
139
- */
140
- public function is_registration_form() {
141
- return ! $this->is_scan() && ! $this->is_active();
142
- }
143
-
144
- /**
145
- * Check if the plugin is active
146
- *
147
- * @return boolean
148
- */
149
- public function is_scan() {
150
- $results = $this->get_scan_results();
151
- return $results ? false : true;
152
- }
153
-
154
- /**
155
- * Set a flag that a scan was completed
156
- */
157
- public function mark_scan_completed() {
158
- update_option( 'accesibe_scan_results', true );
159
- }
160
-
161
- /**
162
- * Allow the user to rescan the website
163
- */
164
- public function reset_scan_results() {
165
- delete_option( 'accesibe_scan_results' );
166
- }
167
-
168
- /**
169
- * Init extension
170
- */
171
- public function init() {
172
- if ( ! get_option( 'hide_accessibie_menu' ) && get_option( 'show_accessibie_menu' ) ) {
173
- add_action( 'admin_menu', array( $this, 'accessibie_menu' ) );
174
- }
175
- $this->accesibe_widget_options = $this->get_widget_settings();
176
- }
177
-
178
- /**
179
- * Deactivate the extension
180
- */
181
- public function deactivate() {
182
- delete_option( 'show_accessibie_menu' );
183
- delete_option( 'accesibe_options' );
184
- delete_option( 'accesibe_scan_results' );
185
- update_option( 'hide_accessibie_menu', true );
186
- }
187
-
188
- /**
189
- * Get the value of a specific field
190
- */
191
- public function get_field_value( $field ) {
192
- if ( $this->accesibe_widget_options ) {
193
- return isset( $this->accesibe_widget_options[ $field ] ) ? $this->accesibe_widget_options[ $field ] : '';
194
- }
195
- }
196
-
197
- /**
198
- * Get the template to display on the admin field
199
- *
200
- * @param $template
201
- */
202
- public function get_settings_template( $template ) {
203
- $name = $this->get_name();
204
- $prefix = "[accesibe_widget_options][{$name}]";
205
- include WPCF7_PRO_REDIRECT_ACTIONS_TEMPLATE_PATH . $template;
206
- }
207
-
208
- /**
209
- * General function to retrieve meta
210
- *
211
- * @param $key
212
- */
213
- public function get( $key ) {
214
- return isset( $this->accesibe_widget_options[ $key ] ) ? $this->accesibe_widget_options[ $key ] : '';
215
- }
216
-
217
- /**
218
- * Get the accessibe settings form
219
- */
220
- public function get_settings_form() {
221
- $this->get_settings_template( 'html-page-settings.php' );
222
- }
223
-
224
- /**
225
- * Display settings fields for active users
226
- */
227
- public function get_accesibe_settings() {
228
- $this->html = new WPCF7R_html( '' );
229
- include( WPCF7_PRO_REDIRECT_TEMPLATE_PATH . 'settings.php' );
230
- }
231
-
232
- /**
233
- * Get the fields relevant for this action
234
- */
235
- public function get_action_fields() {
236
- return
237
- array(
238
- array(
239
- 'name' => 'hideMobile',
240
- 'type' => 'checkbox',
241
- 'label' => __( 'Hide On Mobile', 'wpcf7-redirect' ),
242
- 'sub_title' => '',
243
- 'placeholder' => '',
244
- 'value' => $this->get( 'hideMobile' ),
245
- ),
246
- array(
247
- 'name' => 'hideTrigger',
248
- 'type' => 'checkbox',
249
- 'label' => __( 'Hide Trigger', 'wpcf7-redirect' ),
250
- 'sub_title' => '',
251
- 'placeholder' => '',
252
- 'value' => $this->get( 'hideTrigger' ),
253
- ),
254
- array(
255
- 'name' => 'leadColor',
256
- 'type' => 'text',
257
- 'input_class' => 'colorpicker',
258
- 'label' => __( 'Main Color', 'wpcf7-redirect' ),
259
- 'class' => 'qs-col qs-col-6',
260
- 'sub_title' => '',
261
- 'placeholder' => '',
262
- 'value' => $this->get( 'leadColor' ) ? $this->get( 'leadColor' ) : '#146FF8',
263
- ),
264
- array(
265
- 'name' => 'triggerColor',
266
- 'type' => 'text',
267
- 'input_class' => 'colorpicker',
268
- 'label' => __( 'Trigger Color', 'wpcf7-redirect' ),
269
- 'class' => 'qs-col qs-col-6',
270
- 'sub_title' => '',
271
- 'placeholder' => '',
272
- 'value' => $this->get( 'triggerColor' ) ? $this->get( 'triggerColor' ) : '#146FF8',
273
- ),
274
- array(
275
- 'name' => 'triggerIcon',
276
- 'type' => 'media',
277
- 'label' => __( 'Trigger Icon', 'wpcf7-redirect' ),
278
- 'class' => '',
279
- 'sub_title' => '',
280
- 'placeholder' => '',
281
- 'value' => $this->get( 'triggerIcon' ) ? $this->get( 'triggerIcon' ) : 'default',
282
- ),
283
- array(
284
- 'name' => 'triggerSize',
285
- 'type' => 'select',
286
- 'label' => __( 'Trigger Size', 'wpcf7-redirect' ),
287
- 'class' => '',
288
- 'sub_title' => '',
289
- 'placeholder' => '',
290
- 'options' => array(
291
- 'small' => __( 'Small' ),
292
- 'medium' => __( 'Medium' ),
293
- 'large' => __( 'Large' ),
294
- ),
295
- 'value' => $this->get( 'triggerSize' ) ? $this->get( 'triggerSize' ) : 'medium',
296
- ),
297
- array(
298
- 'name' => 'statementLink',
299
- 'type' => 'url',
300
- 'label' => __( 'Link To Statment', 'wpcf7-redirect' ),
301
- 'sub_title' => '',
302
- 'placeholder' => '',
303
- 'value' => $this->get( 'statementLink' ),
304
- ),
305
- array(
306
- 'name' => 'feedbackLink',
307
- 'type' => 'url',
308
- 'label' => __( 'Link To Feedback', 'wpcf7-redirect' ),
309
- 'sub_title' => '',
310
- 'placeholder' => '',
311
- 'value' => $this->get( 'feedbackLink' ),
312
- ),
313
- array(
314
- 'name' => 'language',
315
- 'type' => 'select',
316
- 'label' => __( 'Widget Language', 'wpcf7-redirect' ),
317
- 'class' => 'select2-field',
318
- 'sub_title' => '',
319
- 'placeholder' => '',
320
- 'options' => $this->get_available_languages(),
321
- 'value' => $this->get( 'language' ),
322
- ),
323
- array(
324
- 'name' => 'position',
325
- 'type' => 'select',
326
- 'label' => __( 'Widget Position', 'wpcf7-redirect' ),
327
- 'class' => '',
328
- 'options' => array(
329
- 'right' => __( 'Right' ),
330
- 'left' => __( 'Left' ),
331
- ),
332
- 'sub_title' => '',
333
- 'placeholder' => '',
334
- 'value' => $this->get( 'position' ),
335
- ),
336
- array(
337
- 'name' => 'triggerRadius',
338
- 'type' => 'number',
339
- 'label' => __( 'Trigger Border Radius (%)', 'wpcf7-redirect' ),
340
- 'class' => '',
341
- 'sub_title' => '',
342
- 'placeholder' => '',
343
- 'value' => $this->get( 'triggerRadius' ) ? $this->get( 'triggerRadius' ) : '50%',
344
- ),
345
- array(
346
- 'name' => 'triggerPositionX',
347
- 'type' => 'select',
348
- 'label' => __( 'Trigger Position (X)', 'wpcf7-redirect' ),
349
- 'class' => '',
350
- 'sub_title' => '',
351
- 'placeholder' => '',
352
- 'options' => array(
353
- 'right' => __( 'Right' ),
354
- 'left' => __( 'Left' ),
355
- ),
356
- 'value' => $this->get( 'triggerPositionX' ) ? $this->get( 'triggerPositionX' ) : 'left',
357
- ),
358
- array(
359
- 'name' => 'triggerOffsetX',
360
- 'type' => 'number',
361
- 'label' => __( 'Trigger Offset X (Pixels)', 'wpcf7-redirect' ),
362
- 'class' => '',
363
- 'sub_title' => '',
364
- 'placeholder' => '',
365
- 'value' => $this->get( 'triggerOffsetX' ) ? $this->get( 'triggerOffsetX' ) : 0,
366
- ),
367
- array(
368
- 'name' => 'triggerPositionY',
369
- 'type' => 'select',
370
- 'label' => __( 'Trigger Position (X)', 'wpcf7-redirect' ),
371
- 'class' => '',
372
- 'sub_title' => '',
373
- 'placeholder' => '',
374
- 'options' => array(
375
- 'top' => __( 'Top' ),
376
- 'bottom' => __( 'Bottom' ),
377
- ),
378
- 'value' => $this->get( 'triggerPositionY' ) ? $this->get( 'triggerPositionY' ) : 'bottom',
379
- ),
380
- array(
381
- 'name' => 'triggerOffsetY',
382
- 'type' => 'number',
383
- 'label' => __( 'Trigger Offset Y (Pixels)', 'wpcf7-redirect' ),
384
- 'class' => '',
385
- 'sub_title' => '',
386
- 'placeholder' => '',
387
- 'value' => $this->get( 'triggerOffsetY' ) ? $this->get( 'triggerOffsetY' ) : 0,
388
- ),
389
- array(
390
- 'name' => 'triggerSizeMobile',
391
- 'type' => 'select',
392
- 'label' => __( 'Trigger Size Mobile', 'wpcf7-redirect' ),
393
- 'class' => '',
394
- 'sub_title' => '',
395
- 'placeholder' => '',
396
- 'options' => array(
397
- 'small' => __( 'Small' ),
398
- 'medium' => __( 'Medium' ),
399
- 'large' => __( 'Large' ),
400
- ),
401
- 'value' => $this->get( 'triggerSizeMobile' ) ? $this->get( 'triggerSizeMobile' ) : 'medium',
402
- ),
403
- array(
404
- 'name' => 'triggerPositionXMobile',
405
- 'type' => 'select',
406
- 'label' => __( 'Trigger Position (X) Mobile', 'wpcf7-redirect' ),
407
- 'class' => '',
408
- 'sub_title' => '',
409
- 'placeholder' => '',
410
- 'options' => array(
411
- 'right' => __( 'Right' ),
412
- 'left' => __( 'Left' ),
413
- ),
414
- 'value' => $this->get( 'triggerPositionXMobile' ) ? $this->get( 'triggerPositionXMobile' ) : 'left',
415
- ),
416
- array(
417
- 'name' => 'triggerOffsetXMobile',
418
- 'type' => 'number',
419
- 'label' => __( 'Trigger Offset X (Pixels) Mobile', 'wpcf7-redirect' ),
420
- 'class' => '',
421
- 'sub_title' => '',
422
- 'placeholder' => '',
423
- 'value' => $this->get( 'triggerOffsetXMobile' ) ? $this->get( 'triggerOffsetXMobile' ) : 0,
424
- ),
425
- array(
426
- 'name' => 'triggerPositionYMobile',
427
- 'type' => 'select',
428
- 'label' => __( 'Trigger Position (X) Mobile', 'wpcf7-redirect' ),
429
- 'class' => '',
430
- 'sub_title' => '',
431
- 'placeholder' => '',
432
- 'options' => array(
433
- 'top' => __( 'Top' ),
434
- 'bottom' => __( 'Bottom' ),
435
- ),
436
- 'value' => $this->get( 'triggerPositionYMobile' ) ? $this->get( 'triggerPositionYMobile' ) : 'bottom',
437
- ),
438
- array(
439
- 'name' => 'triggerOffsetYMobile',
440
- 'type' => 'number',
441
- 'label' => __( 'Trigger Offset Y (Pixels)', 'wpcf7-redirect' ),
442
- 'class' => '',
443
- 'sub_title' => '',
444
- 'placeholder' => '',
445
- 'value' => $this->get( 'triggerOffsetYMobile' ) ? $this->get( 'triggerOffsetYMobile' ) : 0,
446
- ),
447
- array(
448
- 'name' => 'triggerRadiusMobile',
449
- 'type' => 'number',
450
- 'label' => __( 'Trigger Border Radius (%) Mobile', 'wpcf7-redirect' ),
451
- 'class' => '',
452
- 'sub_title' => '',
453
- 'placeholder' => '',
454
- 'value' => $this->get( 'triggerRadiusMobile' ) ? $this->get( 'triggerRadiusMobile' ) : '50%',
455
- ),
456
- array(
457
- 'name' => 'footerHtml',
458
- 'type' => 'editor',
459
- 'label' => __( 'Footer Html', 'wpcf7-redirect' ),
460
- 'sub_title' => '',
461
- 'placeholder' => '',
462
- 'value' => $this->get( 'footerHtml' ),
463
- ),
464
- );
465
- }
466
-
467
- /**
468
- * Get a list of available widget languages
469
- */
470
- public function get_available_languages() {
471
- return wpcf7_get_languages_list();
472
- }
473
-
474
- /**
475
- * Display accesibe menu
476
- */
477
- public function acctivate_acccesbe_menu() {
478
- update_option( 'show_accessibie_menu', true );
479
- delete_option( 'hide_accessibie_menu' );
480
- }
481
-
482
- /**
483
- * Activate the extension
484
- */
485
- public function activate() {
486
- $args = array(
487
- 'email' => sanitize_email( $_POST['email'] ),
488
- 'name' => sanitize_text_field( $_POST['fullname'] ),
489
- 'password' => sanitize_text_field( $_POST['password'] ),
490
- 'domain' => str_replace( array( 'http://', 'https://' ), '', home_url() ),
491
- 'ip_address' => $_SERVER['SERVER_ADDR'],
492
- 'contactCountry' => isset( $_POST['user-country'] ) ? sanitize_text_field( $_POST['user-country'] ) : '',
493
- 'contactPhone' => isset( $_POST['phone-number'] ) ? sanitize_text_field( $_POST['phone-number'] ) : '',
494
- );
495
- $post_args = array(
496
- 'method' => 'POST',
497
- 'timeout' => 45,
498
- 'redirection' => 5,
499
- 'httpversion' => '1.0',
500
- 'sslverify' => false,
501
- 'headers' => array(
502
- 'Content-Type' => 'application/json',
503
- ),
504
- 'body' => wp_json_encode( $args ),
505
- 'cookies' => array(),
506
- );
507
- $response = wp_remote_post( $this->api_url, $post_args );
508
-
509
- if ( ! is_wp_error( $response ) ) {
510
- $response = wp_remote_retrieve_body( $response );
511
- $response = (object) json_decode( $response, true );
512
- if ( 1 === $response->status ) {
513
- $options_args = array(
514
- 'accessibe_plugin_active' => $this->ver,
515
- 'accessibe_plugin_domain' => $args['domain'],
516
- 'accessibe_plugin_dativation_date' => current_time( 'Ymd' ),
517
- );
518
- update_option( 'accesibe_options', $options_args );
519
- } else {
520
- $options_args = array(
521
- 'accessibe_plugin_active' => $this->ver,
522
- 'accessibe_plugin_domain' => $args['domain'],
523
- 'accessibe_plugin_dativation_date' => current_time( 'Ymd' ),
524
- );
525
- update_option( 'accesibe_options', $options_args );
526
- $response = new WP_Error( 'activate', __( 'This Domain Is Already Registered' ) );
527
- }
528
- }
529
- return $response;
530
- }
531
-
532
- /**
533
- * Get accesibe options
534
- */
535
- public function get_settings() {
536
- return get_option( 'accesibe_options' );
537
- }
538
-
539
- /**
540
- * Create Accesibie Menu
541
- */
542
- public function accessibie_menu() {
543
- // Add the menu item and page!
544
- $page_title = qs_get_plugin_display_name();
545
- $capability = 'manage_options';
546
- $callback = array( $this, 'accesibie_settings_page_content' );
547
- $icon = WPCF7_PRO_REDIRECT_BUILD_PATH . '/images/accesibie-logo.png';
548
- add_menu_page(
549
- $page_title,
550
- $page_title,
551
- $capability,
552
- $page_title,
553
- $callback,
554
- $icon
555
- );
556
- }
557
-
558
- /**
559
- * Extension page Content
560
- */
561
- public function accesibie_settings_page_content() {
562
- do_action( 'before_settings_fields' );
563
- ?>
564
-
565
- <div class="wrap wrap-accesibe">
566
- <div class="postbox">
567
- <div class="padbox">
568
- <div class="content">
569
- <?php include 'templates/accesibie-content.php'; ?>
570
- </div>
571
- </div>
572
- </div>
573
- </div>
574
- <?php
575
- }
576
-
577
- /**
578
- * Echo the script in the footer
579
- */
580
- public function footer_script() {
581
- $params = array(
582
- 'statementLink' => $this->get( 'statementLink' ),
583
- 'feedbackLink' => $this->get( 'feedbackLink' ),
584
- 'footerHtml' => $this->get( 'footerHtml' ),
585
- 'hideMobile' => $this->get( 'hideMobile' ),
586
- 'hideTrigger' => $this->get( 'hideTrigger' ),
587
- 'language' => $this->get( 'language' ) ? $this->get( 'language' ) : 'en',
588
- 'position' => $this->get( 'position' ) ? $this->get( 'position' ) : 'right',
589
- 'leadColor' => $this->get( 'leadColor' ) ? $this->get( 'leadColor' ) : '#146FF8',
590
- 'triggerColor' => $this->get( 'triggerColor' ) ? $this->get( 'triggerColor' ) : '#146FF8',
591
- 'triggerRadius' => $this->get( 'triggerRadius' ) ? $this->get( 'triggerRadius' ) : '50%',
592
- 'triggerPositionX' => $this->get( 'triggerPositionX' ) ? $this->get( 'triggerPositionX' ) : 'right',
593
- 'triggerPositionY' => $this->get( 'triggerPositionY' ) ? $this->get( 'triggerPositionY' ) : 'bottom',
594
- 'triggerIcon' => $this->get( 'triggerIcon' ) ? $this->get( 'triggerIcon' ) : 'default',
595
- 'triggerSize' => $this->get( 'triggerSize' ) ? $this->get( 'triggerSize' ) : 'medium',
596
- 'triggerOffsetX' => $this->get( 'triggerOffsetX' ) ? $this->get( 'triggerOffsetX' ) : 20,
597
- 'triggerOffsetY' => $this->get( 'triggerOffsetY' ) ? $this->get( 'triggerOffsetY' ) : 20,
598
- 'mobile' => (object) array(
599
- 'triggerSize' => $this->get( 'triggerSizeMobile' ) ? $this->get( 'triggerSizeMobile' ) : 'small',
600
- 'triggerPositionX' => $this->get( 'triggerPositionXMobile' ) ? $this->get( 'triggerPositionXMobile' ) : 'right',
601
- 'triggerPositionY' => $this->get( 'triggerPositionYMobile' ) ? $this->get( 'triggerPositionYMobile' ) : 'center',
602
- 'triggerOffsetX' => $this->get( 'triggerOffsetXMobile' ) ? $this->get( 'triggerOffsetXMobile' ) : 0,
603
- 'triggerOffsetY' => $this->get( 'triggerOffsetYMobile' ) ? $this->get( 'triggerOffsetYMobile' ) : 0,
604
- 'triggerRadius' => $this->get( 'triggerRadiusMobile' ) ? $this->get( 'triggerRadiusMobile' ) : '50%',
605
- ),
606
- );
607
- $options = json_encode( $params, JSON_UNESCAPED_UNICODE );
608
- ?>
609
- <script>(function(){var s = document.createElement('script'),e = ! document.body ? document.querySelector('head') : document.body;s.src = 'https://acsbapp.com/apps/app/assets/js/acsb.js';s.async = s.defer = true;s.onload = function(){acsbJS.init(<?php echo $options; ?>);};e.appendChild(s);}());</script>
610
- <?php
611
- }
612
-
613
- /**
614
- * Enqueue script if the plugin is active
615
- */
616
- public static function enqueue_script() {
617
- if ( ! is_admin() ) {
618
- $instance = new self();
619
- $instance->init();
620
- if ( $instance->is_active() ) {
621
- add_action( 'wp_footer', array( $instance, 'footer_script' ) );
622
- }
623
- }
624
- }
625
- }
626
-
627
- function qs_get_plugin_display_name() {
628
- return apply_filters( 'qs_get_plugin_display_name', 'Accessibility' );
629
- }
630
-
631
- Ext_Accessibe::enqueue_script();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
classes/aff/templates/accesibie-content.php DELETED
@@ -1,165 +0,0 @@
1
- <?php defined( 'ABSPATH' ) || exit; ?>
2
-
3
- <?php $user = wp_get_current_user(); ?>
4
-
5
- <section class="home-hero hero-standard hero-standard-full">
6
- <div class="wrapper flex <?php echo ! $this->is_scan() && ! $this->is_active() ? 'reg-form' : ''; ?> ">
7
- <?php if ( ! $this->is_registration_form() ) : ?>
8
- <div class="logo-row flex top-logo">
9
- <div class="accessibe-logo">
10
- <img class="hero-cover-image" data-lazyload-ignore="true" src="<?php echo WPCF7_PRO_REDIRECT_BUILD_PATH . 'images/accessibe-full-logo.svg'; ?>" alt="Blind person hero image">
11
- </div>
12
- <?php if ( $this->is_scan() ) : ?>
13
- <form action="<?php echo $this->get_settings_url(); ?>" method="post" class="accesibe-settings-form">
14
- <button type="submit" class="site-button js-active site-button-animate site-button-right-icon site-button-full" data-element="signup-button">
15
- <span class="align-middle">
16
- <?php _e( 'Create a Free Account!', 'wpcf7-redirect' ); ?> <span class="dashicons dashicons-arrow-right-alt2"></span>
17
- </span>
18
- </button>
19
- <input type="hidden" name="start-free-trial" value="<?php echo qs_get_plugin_display_name(); ?>" />
20
- </form>
21
- <?php endif; ?>
22
- </div>
23
- <?php endif; ?>
24
- <?php
25
- if ( $this->is_registration_form() ) :
26
- ?>
27
- <div class="main-form-wrap">
28
- <div class="home-hero-content hero-left">
29
- <div class="hero-left-inner">
30
- <h3 class="home-hero-title">The #1 <em>Fully</em> <em>Automated</em> <br> Web Accessibility Solution <br> for ADA &amp; WCAG Compliance</h3>
31
- <ul class="home-hero-checkmarks">
32
- <li class="home-hero-checkmark">
33
- <i class="icon icon-checkmark icon-pack-icomoon ">
34
- <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
35
- <title>checkmark</title>
36
- <path d="M13.5 2l-7.5 7.5-3.5-3.5-2.5 2.5 6 6 10-10z"></path>
37
- </svg>
38
- </i>
39
- <strong>Affordable.</strong> $49/month, free trial, no credit card required
40
- </li>
41
- <li class="home-hero-checkmark">
42
- <i class="icon icon-checkmark icon-pack-icomoon ">
43
- <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
44
- <title>checkmark</title>
45
- <path d="M13.5 2l-7.5 7.5-3.5-3.5-2.5 2.5 6 6 10-10z"></path>
46
- </svg>
47
- </i>
48
- <strong>Effortless.</strong> Add a single line of code for 24/7 automated compliance
49
- </li>
50
- <li class="home-hero-checkmark">
51
- <i class="icon icon-checkmark icon-pack-icomoon ">
52
- <svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
53
- <title>checkmark</title>
54
- <path d="M13.5 2l-7.5 7.5-3.5-3.5-2.5 2.5 6 6 10-10z"></path>
55
- </svg>
56
- </i>
57
- <strong>Compliant.</strong> Accessibility statement and certificate of performance
58
- </li>
59
- </ul>
60
- </div>
61
- </div>
62
- <div class="hero-right">
63
- <div class="hero-right-inner">
64
- <div class="accessibe-logo">
65
- <img class="hero-cover-image" data-lazyload-ignore="true" src="<?php echo WPCF7_PRO_REDIRECT_BUILD_PATH . 'images/accessibe-full-logo.svg'; ?>" alt="Blind person hero image">
66
- </div>
67
- <h4>Create A 30-Day Trial Account</h4>
68
- <form name="accesibe-registration" action="" method="post" class="accesibe-registration-form-fields">
69
- <div class="home-hero-cta">
70
- <div class="field-wrap">
71
- <label for="email"><?php _e( 'Your Email Address', 'wpcf7-redirect' ); ?></label>
72
- <input type="email" name="email" value="<?php echo get_option( 'admin_email' ); ?>" required placeholder="example@example.com"/>
73
- </div>
74
- <div class="field-wrap">
75
- <label for="fullname"><?php _e( 'Your Full Name', 'wpcf7-redirect' ); ?></label>
76
- <input type="text" name="fullname" minlength="3" value="<?php echo $user->first_name . ' ' . $user->last_name; ?>" required placeholder="John Smith"/>
77
- </div>
78
- <div class="field-wrap">
79
- <label for="password"><?php _e( 'Your Password', 'wpcf7-redirect' ); ?></label>
80
- <input type="password" name="password" minlength="8" value="" required placeholder="<?php _e( '8+ Charachters', 'wpcf7-redirect' ); ?>"/>
81
- </div>
82
-
83
- <span class="loader-spinner-container spinner-light" data-loader="spinner">
84
- <span class="loader-spinner"></span></span>
85
- </button>
86
- </div>
87
- <div class="agreement">
88
- <div class="highlight">
89
- <input type="checkbox" name="tos" id="tos" checked="" data-activate-on-check="signup-button" required>
90
- <label for="tos"><?php _e( 'By signing up you agree to our', 'wpcf7-redirect' ); ?> <a href="https://accessibe.com/terms-of-service" target="_blank"><?php _e( 'Terms of Service', 'wpcf7-redirect' ); ?></a></label>
91
- </div>
92
- </div>
93
- <div class="field-wrap">
94
- <button type="submit" class="site-button js-active site-button-animate site-button-right-icon site-button-full" data-element="signup-button">
95
- <span class="align-middle">
96
- <?php _e( 'Create a Free Account!', 'wpcf7-redirect' ); ?> <span class="dashicons dashicons-arrow-right-alt2"></span>
97
- </span>
98
- </button>
99
- </div>
100
- <input type="hidden" name="activate-accesibe" value="1" />
101
- <div class="footer-wrap">
102
- <a class=" align-middle" href="<?php echo admin_url( '?deactivate=' . qs_get_plugin_display_name() ); ?>">
103
- <?php _e( 'Hide this special offer', 'wpcf7-redirect' ); ?>
104
- </a>
105
- <a href="<?php echo $this->get_scan_link(); ?>" class="scan-again"><?php _e( 'Scan my website again.', 'wpcf7-redirect' ); ?></a>
106
- </div>
107
- </form>
108
- </div>
109
- </div>
110
-
111
- </div>
112
- </form>
113
- <?php elseif ( $this->is_scan() ) : ?>
114
- <div class="qs-row">
115
- <div class="qs-col">
116
- <div class="scanning">
117
- Please wait a few seconds while we process your website accessibility report.
118
- </div>
119
- <div class="scanning-tip">
120
- <strong>Results guide:</strong> <strong>Compliant</strong> - You're all good. <strong>Semi/Not Compliant</strong> - We recommend you to install accessiBe
121
- </div>
122
- </div>
123
- </div>
124
- <?php $url = add_query_arg( 'accesibedomainscan', str_replace( 'http:', 'https:', home_url() ), 'https://querysol.com/scan' ); ?>
125
- <iframe src="<?php echo $url; ?>" scrolling="no" style=" width: 100%; height: 100vh; overflow: hidden;" ></iframe>
126
- <form action="<?php echo $this->get_settings_url(); ?>" method="post" class="accesibe-settings-form-footer">
127
- <button type="submit" class="site-button js-active site-button-animate site-button-right-icon site-button-full" data-element="signup-button">
128
- <span class="align-middle">
129
- <?php _e( 'Create a Free Account!', 'wpcf7-redirect' ); ?> <span class="dashicons dashicons-arrow-right-alt2"></span>
130
- </span>
131
- </button>
132
- <input type="hidden" name="start-free-trial" value="<?php echo qs_get_plugin_display_name(); ?>" />
133
- </form>
134
- <div class="footer-wrap">
135
- <a class=" align-middle" href="<?php echo admin_url( '?deactivate=' . qs_get_plugin_display_name() ); ?>">
136
- <?php _e( 'Hide This Special Offer', 'wpcf7-redirect' ); ?>
137
- </a>
138
- </div>
139
- <?php else : ?>
140
- <form name="accesibe-registration" action="<?php echo $this->get_settings_url(); ?>" method="post" class="accesibe-settings-form">
141
- <div class="success-message">
142
- <h3>
143
- Thank you for installing accessibe!
144
- </h3>
145
- <div class="success-message-subtitle">
146
- The plugin is now active on your website.
147
- </div>
148
- <div class="success-content">
149
- If you want to customize the widget settings you can do it here: <br/>
150
- To deactivate the plugin you can <a class=" align-middle" href="<?php echo admin_url( '?deactivate=' . qs_get_plugin_display_name() ); ?>">Click Here.</a>
151
- </div>
152
- </div>
153
- <?php $this->get_settings_form(); ?>
154
-
155
- <div class="qs-row">
156
- <div class="qs-col">
157
- <button type="submit" class="site-button js-active site-button-animate site-button-right-icon site-button-full" data-element="signup-button">
158
- <span class="align-middle"><?php _e( 'Save', 'wpcf7-redirect' ); ?></span>
159
- </button>
160
- </div>
161
- </div>
162
- <input type="hidden" name="save_ext_settings" value="<?php echo qs_get_plugin_display_name(); ?>" />
163
- </form>
164
- <?php endif; ?>
165
- </section>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
classes/aff/templates/index.php DELETED
File without changes
classes/class-wpcf7r-action.php CHANGED
@@ -1,11 +1,13 @@
1
  <?php
 
2
  /**
3
  * Class WPCF7R_Action - פarent class that handles all redirect actions.
4
  */
5
 
6
- defined( 'ABSPATH' ) || exit;
7
 
8
- class WPCF7R_Action {
 
9
  // Save a reference to the lead id in case the save lead action is on.
10
  public static $lead_id;
11
 
@@ -20,24 +22,27 @@ class WPCF7R_Action {
20
  *
21
  * @param string $post [description]
22
  */
23
- public function __construct( $post = null ) {
 
24
  $this->priority = 2;
25
 
26
- if ( $post ) {
27
  // save a refference to the action post.
28
  $this->action_post = $post;
29
  // set the action post ID.
30
  $this->action_post_id = $post->ID;
31
  // get the custom action fields.
32
- $this->fields_values = get_post_custom( $this->action_post_id );
33
  // get the contact form 7 post id.
34
- $this->wpcf7_id = $this->get_action_wpcf7_id( $this->action_post_id );
35
  // get the type of action.
36
- $this->action = self::get_action_type( $this->action_post_id );
37
  // get tje status of the action (is it active or not).
38
- $this->action_status = $this->get_action_status( $this->action_post_id );
39
  // get conditional logic blocks.
40
- $this->logic_blocks = $this->get( 'blocks' );
 
 
41
  }
42
  }
43
 
@@ -46,8 +51,9 @@ class WPCF7R_Action {
46
  *
47
  * @return [string] - a link to the form edit screen.
48
  */
49
- public function get_cf7_link_html() {
50
- return WPCF7r_Form_Helper::get_cf7_link_html( $this->wpcf7_id );
 
51
  }
52
 
53
  /**
@@ -57,8 +63,8 @@ class WPCF7R_Action {
57
  * @param [int] $post_id - the id of the relevant post.
58
  * @return void
59
  */
60
- public function display_action_column_content( $column, $post_id ) {
61
-
62
  }
63
 
64
  /**
@@ -67,21 +73,25 @@ class WPCF7R_Action {
67
  *
68
  * @param $submission
69
  */
70
- public function process_validation( $submission ) { }
 
 
71
 
72
  /**
73
  * Get action name
74
  */
75
- public function get_name() {
76
- return WPCF7r_Utils::get_action_name( $this->action );
 
77
  }
78
 
79
  /**
80
  * Adds a blank select option for select fields
81
  */
82
- public function get_tags_optional() {
 
83
  $tags = $this->get_mail_tags_array();
84
- $tags_optional = array_merge( array( __( 'Select', 'wpcf7-redirect' ) ), $tags );
85
  return $tags_optional;
86
  }
87
 
@@ -90,7 +100,8 @@ class WPCF7R_Action {
90
  *
91
  * @param $lead_id
92
  */
93
- public function set_lead_id( $lead_id ) {
 
94
  self::$lead_id = $lead_id;
95
  }
96
 
@@ -99,26 +110,30 @@ class WPCF7R_Action {
99
  *
100
  * @param $lead_id
101
  */
102
- public function set_global_option( $key, $value ) {
103
- self::$global_options[ $key ] = $value;
 
104
  }
105
 
106
- public function get_global_option( $key ) {
107
- return isset( self::$global_options[ $key ] ) ? self::$global_options[ $key ] : '';
 
108
  }
109
 
110
  /**
111
  * Get all system user roles
112
  */
113
- public function get_available_user_roles() {
 
114
  return wp_roles()->get_names();
115
  }
116
 
117
  /**
118
  * Return the current lead id if it is availavle
119
  */
120
- public static function get_lead_id() {
121
- return isset( self::$lead_id ) ? self::$lead_id : '';
 
122
  }
123
 
124
  /**
@@ -126,15 +141,17 @@ class WPCF7R_Action {
126
  *
127
  * @param $key
128
  */
129
- public function get( $key ) {
130
- return isset( $this->fields_values[ $key ][0] ) ? $this->fields_values[ $key ][0] : '';
 
131
  }
132
 
133
  /**
134
  * Get the contact form 7 related post id
135
  */
136
- public function get_cf7_post_id() {
137
- return isset( $this->wpcf7_id ) ? $this->wpcf7_id : '';
 
138
  }
139
 
140
  /**
@@ -143,9 +160,10 @@ class WPCF7R_Action {
143
  * @param $key
144
  * @param $value
145
  */
146
- public function set( $key, $value ) {
147
- update_post_meta( $this->action_post_id, $key, $value );
148
- $this->fields_values[ $key ][0] = $value;
 
149
  }
150
 
151
  /**
@@ -153,8 +171,8 @@ class WPCF7R_Action {
153
  *
154
  * @return void
155
  */
156
- public static function enqueue_backend_scripts() {
157
-
158
  }
159
 
160
  /**
@@ -162,13 +180,14 @@ class WPCF7R_Action {
162
  *
163
  * @return void
164
  */
165
- public static function enqueue_frontend_scripts() {
166
-
167
  }
168
  /**
169
  * Parent get action fields function
170
  */
171
- public function get_action_fields() {
 
172
  return array();
173
  }
174
 
@@ -177,26 +196,29 @@ class WPCF7R_Action {
177
  *
178
  * @param $fields_key
179
  */
180
- public function get_fields_settings( $fields_key ) {
 
181
  $fields = $this->get_action_fields();
182
 
183
- return $fields[ $fields_key ];
184
  }
185
 
186
  /**
187
  * Get the id of the rule
188
  */
189
- public function get_rule_id() {
190
- return $this->get( 'wpcf7_rule_id' );
 
191
  }
192
 
193
  /**
194
  * Get all fields values
195
  */
196
- public function get_fields_values() {
 
197
  $fields = $this->get_action_fields();
198
- foreach ( $fields as $field ) {
199
- $values[ $field['name'] ] = $this->get_field_value( $field );
200
  }
201
  return $values;
202
  }
@@ -204,7 +226,8 @@ class WPCF7R_Action {
204
  /**
205
  * Get mail tags objects
206
  */
207
- public function get_mail_tags() {
 
208
  $mail_tags = WPCF7R_Form::get_mail_tags();
209
  return $mail_tags;
210
  }
@@ -212,12 +235,13 @@ class WPCF7R_Action {
212
  /**
213
  * Get mail tags objects
214
  */
215
- public function get_mail_tags_array() {
 
216
  $mail_tags = WPCF7R_Form::get_mail_tags();
217
  $mail_tags_array = array();
218
- if ( $mail_tags ) {
219
- foreach ( $mail_tags as $mail_tag ) {
220
- $mail_tags_array[ $mail_tag->name ] = $mail_tag->name;
221
  }
222
  }
223
  return $mail_tags_array;
@@ -228,14 +252,15 @@ class WPCF7R_Action {
228
  *
229
  * @param boolean $clean
230
  */
231
- public function get_formatted_mail_tags( $clean = false ) {
 
232
  $formatted_tags = array();
233
 
234
- if ( ! is_array( WPCF7R_Form::get_mail_tags() ) ) {
235
  return;
236
  }
237
 
238
- foreach ( WPCF7R_Form::get_mail_tags() as $mail_tag ) {
239
  $formatted_tags[] = "<span class='mailtag code'>[{$mail_tag->name}]</span>";
240
  }
241
 
@@ -243,29 +268,29 @@ class WPCF7R_Action {
243
  // $formatted_tags[] = "<br/><span class='mailtag code'>[".$mail_tag->field_name()."]</span>";
244
  // }
245
 
246
- $formatted_tags = implode( '', $formatted_tags );
247
- if ( $clean ) {
248
- $formatted_tags = str_replace( array( ']' ), ', ', $formatted_tags );
249
- $formatted_tags = str_replace( array( '[' ), '', $formatted_tags );
250
  }
251
 
252
  ob_start();
253
- ?>
254
 
255
  <div class="mail-tags-wrapper">
256
  <div class="mail-tags-title" data-toggle=".mail-tags-wrapper-inner">
257
- <strong><?php _e( 'Available mail tags', 'wpcf7-redirect' ); ?></strong> <span class="dashicons dashicons-arrow-down"></span>
258
  </div>
259
  <div class="mail-tags-wrapper-inner field-hidden">
260
  <?php echo $formatted_tags; ?>
261
  <div class="special-mail-tags">
262
- <br/>
263
- <a href="https://contactform7.com/special-mail-tags/"><?php _e( 'Special mail tags' ); ?></a>
264
- <div><small><?php _e( 'These tags are available only inside the loop as described by the plugin author', 'wpcf7-redirect' ); ?></small></div>
265
  </div>
266
  </div>
267
  </div>
268
- <?php
269
  return ob_get_clean();
270
  }
271
 
@@ -274,19 +299,43 @@ class WPCF7R_Action {
274
  *
275
  * @param $template
276
  */
277
- public function replace_lead_id_tag( $template ) {
278
- return str_replace( '[lead_id]', self::get_lead_id(), $template );
 
279
  }
280
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
281
  /**
282
  * Replace all mail tags in a string
283
  *
284
  * @param $content
285
  * @param $args
286
  */
287
- public function replace_tags( $content, $args = '' ) {
288
- if ( true === $args ) {
289
- $args = array( 'html' => true );
 
290
  }
291
 
292
  $args = wp_parse_args(
@@ -297,16 +346,16 @@ class WPCF7R_Action {
297
  )
298
  );
299
 
300
- $replaced_tags = wpcf7_mail_replace_tags( $content, $args );
301
- $replaced_tags = do_shortcode( $replaced_tags );
302
- $replaced_tags = $this->replace_lead_id_tag( $replaced_tags );
303
 
304
  $files = $this->get_files_shortcodes_from_submitted_data();
305
 
306
- if ( $files ) {
307
- foreach ( $files as $file_shortcodes ) {
308
- foreach ( $file_shortcodes as $file_shortcode => $data ) {
309
- $replaced_tags = str_replace( $file_shortcode, $data, $replaced_tags );
310
  }
311
  }
312
  }
@@ -314,20 +363,20 @@ class WPCF7R_Action {
314
  return $replaced_tags;
315
  }
316
 
317
- public function get_files_shortcodes_from_submitted_data() {
318
- $submission = WPCF7_Submission::get_instance();
319
  $file_tags = array();
320
 
321
- if ( $submission ) {
322
- $files = $submission->uploaded_files();
323
 
324
- foreach ( $files as $file_key => $file_paths ) {
325
- $file_paths = is_array( $file_paths ) ? $file_paths : array( $file_paths );
326
 
327
- foreach ( $file_paths as $file_path ) {
328
- $file_tags[ $file_key ] = array(
329
- '[' . $file_key . '-filename]' => basename( $file_path ),
330
- '[' . $file_key . '-base_64_file]' => $this->base_64_file( $file_path ),
331
  '[' . $file_key . '-path]' => $file_path,
332
  );
333
  }
@@ -342,10 +391,11 @@ class WPCF7R_Action {
342
  * @param [type] $path
343
  * @return void
344
  */
345
- private function base_64_file( $path ) {
 
346
 
347
- $data = file_get_contents( $path );
348
- $base64 = base64_encode( $data );
349
 
350
  return $base64;
351
  }
@@ -355,11 +405,12 @@ class WPCF7R_Action {
355
  *
356
  * @param $field
357
  */
358
- public function get_field_value( $field ) {
359
- if ( is_array( $field ) ) {
360
- return get_post_meta( $this->action_post_id, '_wpcf7_redirect_' . $field['name'], true );
 
361
  } else {
362
- return get_post_meta( $this->action_post_id, '_wpcf7_redirect_' . $field, true );
363
  }
364
  }
365
 
@@ -368,29 +419,30 @@ class WPCF7R_Action {
368
  *
369
  * @param $post
370
  */
371
- public static function get_action( $post ) {
372
- if ( is_int( $post ) ) {
373
- $post = get_post( $post );
 
374
  }
375
 
376
- if ( ! isset( $post->ID ) ) {
377
  return false;
378
  }
379
 
380
- $action_type = self::get_action_type( $post->ID );
381
  $class = "WPCF7R_Action_{$action_type}";
382
  $action = '';
383
 
384
- if ( class_exists( $class ) ) {
385
- $action = new $class( $post );
386
  } else {
387
- $action_type = str_replace( ' ', '_', ucwords( str_replace( '_', ' ', $action_type ) ) );
388
  $class = "WPCF7R_Action_{$action_type}";
389
 
390
- if ( class_exists( $class ) ) {
391
- $action = new $class( $post );
392
  } else {
393
- $action = new WP_Error( 'get_action', "Class {$class} Does not exist" );
394
  }
395
  }
396
 
@@ -400,7 +452,8 @@ class WPCF7R_Action {
400
  /**
401
  * Get the action post_id
402
  */
403
- public function get_id() {
 
404
  return $this->action_post_id;
405
  }
406
 
@@ -409,18 +462,19 @@ class WPCF7R_Action {
409
  *
410
  * @param $post_id
411
  */
412
- public static function get_action_type( $post_id ) {
413
- $action_type = get_post_meta( $post_id, 'action_type', true );
 
414
 
415
  $migration_list = array(
416
  'send_mail' => 'SendMail',
417
  'fire_script' => 'FireScript',
418
  );
419
 
420
- if ( isset( $migration_list[ $action_type ] ) ) {
421
- update_post_meta( $post_id, 'action_type', $migration_list[ $action_type ] );
422
 
423
- $action_type = $migration_list[ $action_type ];
424
  }
425
 
426
  return $action_type;
@@ -429,17 +483,19 @@ class WPCF7R_Action {
429
  /**
430
  * Get action status
431
  */
432
- public function get_action_status() {
433
- return $this->get( 'action_status' );
 
434
  }
435
 
436
  /**
437
  * Get action status
438
  */
439
- public function get_action_status_label() {
 
440
 
441
  /* translators:%s the action status name */
442
- return $this->get_action_status() === 'on' ? sprintf( __( 'Enable %s', 'wpcf7-redirect' ), $this->get_name() ) : __( 'Disabled', 'wpcf7-redirect' );
443
  }
444
 
445
 
@@ -448,8 +504,9 @@ class WPCF7R_Action {
448
  *
449
  * @return int form id
450
  */
451
- public function get_action_wpcf7_id() {
452
- return $this->get( 'wpcf7_id' );
 
453
  }
454
 
455
  /**
@@ -457,7 +514,8 @@ class WPCF7R_Action {
457
  *
458
  * @return string action title
459
  */
460
- public function get_title() {
 
461
  return $this->action_post->post_title;
462
  }
463
 
@@ -466,7 +524,8 @@ class WPCF7R_Action {
466
  *
467
  * @return string action type
468
  */
469
- public function get_type() {
 
470
  return $this->action;
471
  }
472
 
@@ -475,9 +534,10 @@ class WPCF7R_Action {
475
  *
476
  * @return string action pretty name
477
  */
478
- public function get_type_label() {
 
479
  $actions = wpcf7r_get_available_actions();
480
- $type = $actions[ $this->get_type() ]['label'];
481
  return $type;
482
  }
483
 
@@ -486,14 +546,16 @@ class WPCF7R_Action {
486
  *
487
  * @return string action status
488
  */
489
- public function get_status() {
 
490
  return $this->action_status;
491
  }
492
 
493
  /**
494
  * Get the action menu order
495
  */
496
- public function get_menu_order() {
 
497
  return $this->action_post->menu_order;
498
  }
499
 
@@ -502,11 +564,12 @@ class WPCF7R_Action {
502
  *
503
  * @param string $tag_name
504
  */
505
- public function get_validation_mail_tags( $tag_name = '' ) {
 
506
  $tags = WPCF7R_Form::get_validation_obj_tags();
507
- if ( $tag_name ) {
508
- foreach ( $tags as $tag ) {
509
- if ( $tag->name === $tag_name ) {
510
  return $tag;
511
  }
512
  }
@@ -519,7 +582,8 @@ class WPCF7R_Action {
519
  * Get default actions field
520
  * This actions will apply for all child action classes
521
  */
522
- function get_default_fields() {
 
523
  $args = array(
524
  'action_status' => array(
525
  'name' => 'action_status',
@@ -531,31 +595,31 @@ class WPCF7R_Action {
531
  'toggle-label' => json_encode(
532
  array(
533
  '.field-wrap-action_status .checkbox-label,.column-status a' => array(
534
- __( 'Enabled', 'wpcf7-redirect' ),
535
- __( 'Disabled', 'wpcf7-redirect' ),
536
  ),
537
  )
538
  ),
539
- 'value' => $this->get( 'action_status' ),
540
  ),
541
  );
542
 
543
- if ( conditional_logic_enabled() ) {
544
  $args['conditional_logic'] = array(
545
  'name' => 'conditional_logic',
546
  'type' => 'checkbox',
547
- 'label' => __( 'Conditional Logic', 'wpcf7-redirect' ),
548
  'sub_title' => '',
549
  'placeholder' => '',
550
  'show_selector' => '.conditional-logic-blocks',
551
- 'value' => $this->get( 'conditional_logic' ),
552
  );
553
  } else {
554
  $args['conditional_logic'] = array(
555
  'name' => 'conditional_logic',
556
  'type' => 'notice',
557
- 'label' => __( '<strong>CONDITIONAL LOGIC!</strong><br/>', 'wpcf7-redirect' ),
558
- 'sub_title' => __( 'You can purchase and activate conditional logic addon on the extensions tab.', 'wpcf7-redirect' ),
559
  'placeholder' => '',
560
  'class' => 'field-notice-alert',
561
  'show_selector' => '',
@@ -565,7 +629,7 @@ class WPCF7R_Action {
565
  $args['blocks'] = array(
566
  'name' => 'blocks',
567
  'type' => 'blocks',
568
- 'has_conditional_logic' => $this->get( 'conditional_logic' ),
569
  'blocks' => $this->get_conditional_blocks(),
570
  );
571
  return $args;
@@ -574,15 +638,16 @@ class WPCF7R_Action {
574
  /**
575
  * Reset all action fields
576
  */
577
- public function delete_all_fields() {
 
578
  $fields = $this->get_action_fields();
579
 
580
- foreach ( $fields as $field ) {
581
- delete_post_meta( $this->action_post_id, $field['name'] );
582
 
583
- if ( isset( $field['fields'] ) && $field['fields'] ) {
584
- foreach ( $field['fields'] as $sub_field_key => $sub_field ) {
585
- delete_post_meta( $this->action_post_id, $sub_field_key );
586
  }
587
  }
588
  }
@@ -593,7 +658,8 @@ class WPCF7R_Action {
593
  *
594
  * @param $template
595
  */
596
- public function get_settings_template( $template ) {
 
597
  $prefix = "[actions][$this->action_post_id]";
598
  include WPCF7_PRO_REDIRECT_ACTIONS_TEMPLATE_PATH . 'rule-title.php';
599
  include WPCF7_PRO_REDIRECT_ACTIONS_TEMPLATE_PATH . $template;
@@ -602,42 +668,43 @@ class WPCF7R_Action {
602
  /**
603
  * Get a single action row
604
  */
605
- public function get_action_row() {
 
606
  ob_start();
607
- do_action( 'before_wpcf7r_action_row', $this );
608
- ?>
609
  <tr class="drag primary <?php echo $this->get_action_status() ? 'active' : 'non-active'; ?>" data-actionid="<?php echo $this->get_id(); ?>" id="post-<?php echo $this->get_id(); ?>">
610
  <td class="manage-column cf7r-check-column ">
611
  <span class="num"><?php echo $this->get_menu_order(); ?></span>
612
  </td>
613
  <td class="manage-column column-title column-primary sortable desc">
614
  <span class="edit">
615
- <a href="#" class="column-post-title" aria-label="<?php _e( 'Edit', 'wpcf7-redirect' ); ?>"><?php echo $this->get_title(); ?></a>
616
  </span>
617
  <div class="row-actions">
618
  <span class="edit">
619
- <a href="#" aria-label="<?php _e( 'Edit', 'wpcf7-redirect' ); ?>"><?php _e( 'Edit', 'wpcf7-redirect' ); ?></a> |
620
  </span>
621
  <span class="trash">
622
- <a href="#" class="submitdelete" data-id="<?php echo $this->get_id(); ?>" aria-label="<?php _e( 'Move to trash', 'wpcf7-redirect' ); ?>"><?php _e( 'Move to trash', 'wpcf7-redirect' ); ?></a> |
623
  </span>
624
  <span class="duplicate">
625
- <a href="#" class="submitduplicate" data-ruleid="default" data-id="<?php echo $this->get_id(); ?>" aria-label="<?php _e( 'Duplicate', 'wpcf7-redirect' ); ?>"><?php _e( 'Duplicate', 'wpcf7-redirect' ); ?></a>
626
  </span>
627
- <?php if ( $this->get_type() === 'save_lead' ) : ?>
628
  <span class="view-leads">
629
- | <a href="<?php echo WPCF7R_Leads_Manager::get_admin_url( $this->wpcf7_id ); ?>" class="show-leads" data-id="<?php echo $this->get_id(); ?>" aria-label="<?php _e( 'View Leads', 'wpcf7-redirect' ); ?>" target="_blank"><?php _e( 'View Leads', 'wpcf7-redirect' ); ?></a> |
630
  </span>
631
  <?php endif; ?>
632
 
633
- <?php do_action( 'wpcf7r_after_actions_links', $this ); ?>
634
  </div>
635
  </td>
636
  <td class="manage-column column-primary sortable desc edit">
637
- <a href="#" aria-label="<?php _e( 'Edit', 'wpcf7-redirect' ); ?>"><?php echo $this->get_type_label(); ?></a>
638
  </td>
639
  <td class="manage-column column-primary sortable desc edit column-status">
640
- <a href="#" aria-label="<?php _e( 'Edit', 'wpcf7-redirect' ); ?>"><?php echo $this->get_action_status_label(); ?></a>
641
  </td>
642
  <td class="manage-column cf7r-check-column">
643
  <input type="hidden" name="post[]" value="<?php echo $this->get_id(); ?>">
@@ -645,24 +712,25 @@ class WPCF7R_Action {
645
  </td>
646
  </tr>
647
  <tr data-actionid="<?php echo $this->get_id(); ?>" class="action-container">
648
- <td colspan="5" >
649
  <div class="hidden-action">
650
  <?php $this->get_action_settings(); ?>
651
  </div>
652
  </td>
653
  </tr>
654
- <?php
655
 
656
- do_action( 'after_wpcf7r_action_row', $this );
657
 
658
- return apply_filters( 'wpcf7r_get_action_rows', ob_get_clean(), $this );
659
  }
660
 
661
  /**
662
  * Get settings page
663
  */
664
- public function get_action_settings() {
665
- $this->get_settings_template( 'html-action-send-to-email.php' );
 
666
  }
667
 
668
  /**
@@ -671,8 +739,9 @@ class WPCF7R_Action {
671
  * @param $field
672
  * @param $prefix
673
  */
674
- public function render_field( $field, $prefix ) {
675
- WPCF7R_Html::render_field( $field, $prefix );
 
676
  }
677
 
678
  /**
@@ -680,20 +749,23 @@ class WPCF7R_Action {
680
  *
681
  * @return boolean
682
  */
683
- public function has_conditional_logic() {
684
- return $this->get( 'conditional_logic' ) && conditional_logic_enabled() ? true : false;
 
685
  }
686
 
687
  /**
688
  * Maybe perform actions before sending results to the user
689
  */
690
- public function maybe_perform_pre_result_action() {
 
691
  }
692
 
693
  /**
694
  * Get the submitted form data
695
  */
696
- public function get_posted_data() {
 
697
  return $this->submission_data;
698
  }
699
 
@@ -702,7 +774,8 @@ class WPCF7R_Action {
702
  *
703
  * @param $cf7r_form
704
  */
705
- public function process_action( $cf7r_form ) {
 
706
  $results = array();
707
 
708
  $this->cf7r_form = $cf7r_form;
@@ -711,13 +784,13 @@ class WPCF7R_Action {
711
  $this->form_tags = $this->cf7r_form->get_cf7_form_instance()->scan_form_tags();
712
 
713
  // get conditional logic object
714
- $clogic = class_exists( 'WPCF7_Redirect_Conditional_Logic' ) ? new WPCF7_Redirect_Conditional_Logic( $this->logic_blocks, $this->cf7r_form ) : '';
715
 
716
- if ( ! conditional_logic_enabled() || ! $this->has_conditional_logic() ) {
717
  // if no conditions are defined
718
- $results = $this->process( $this->submission_data );
719
- } elseif ( conditional_logic_enabled() && $clogic->conditions_met() ) {
720
- $results = $this->process( $this->submission_data );
721
  }
722
 
723
  return $results;
@@ -729,16 +802,17 @@ class WPCF7R_Action {
729
  * @param $rules
730
  * @param $response
731
  */
732
- public function process( $submission ) {
733
-
734
  }
735
 
736
  /**
737
  * Get all saved blocks
738
  */
739
- public function get_conditional_blocks() {
740
- $blocks = $this->get( 'blocks' );
741
- if ( ! $blocks ) {
 
742
  $blocks = array(
743
  array(
744
  'block_title' => 'Block title',
@@ -747,7 +821,7 @@ class WPCF7R_Action {
747
  ),
748
  );
749
  } else {
750
- $blocks = maybe_unserialize( $blocks );
751
  $blocks['block_1']['block_key'] = 'block_1';
752
  $blocks['block_1']['block_title'] = 'Block title';
753
  }
@@ -757,27 +831,28 @@ class WPCF7R_Action {
757
  /**
758
  * Find the relevant rule to use
759
  */
760
- public function get_valid_rule_block() {
761
- $blocks = $this->get( 'blocks' );
762
- $blocks = maybe_unserialize( $blocks );
763
- if ( isset( $blocks ) && $blocks ) {
764
- foreach ( $blocks as $block ) {
765
- if ( isset( $block['groups'] ) && $block['groups'] ) {
766
- foreach ( $block['groups'] as $and_rows ) {
 
767
  $valid = true;
768
- if ( $and_rows ) {
769
- foreach ( $and_rows as $and_row ) {
770
- if ( ! $this->is_valid( $and_row ) ) {
771
  $valid = false;
772
  break;
773
  }
774
  }
775
- if ( $valid ) {
776
  break;
777
  }
778
  }
779
  }
780
- if ( $valid ) {
781
  return $block;
782
  }
783
  }
@@ -790,10 +865,11 @@ class WPCF7R_Action {
790
  *
791
  * @param $form_tag_name
792
  */
793
- private function get_form_tag( $form_tag_name ) {
794
- if ( $this->form_tags ) {
795
- foreach ( $this->form_tags as $form_tag ) {
796
- if ( $form_tag->name === $form_tag_name ) {
 
797
  return $form_tag;
798
  }
799
  }
@@ -806,29 +882,30 @@ class WPCF7R_Action {
806
  *
807
  * @param $form_tag_name
808
  */
809
- private function get_form_tag_posted_data( $form_tag_name ) {
810
- $form_tag = $this->get_form_tag( $form_tag_name );
 
811
  $value = '';
812
 
813
- if ( $form_tag ) {
814
- $posted_value = $this->submission_data->get_posted_data( $form_tag_name );
815
  $type = $form_tag->type;
816
  $name = $form_tag->name;
817
  $pipes = $form_tag->pipes;
818
  $value_orig = $value;
819
  $value_orig = $posted_value;
820
  if (
821
- ( defined( 'WPCF7_USE_PIPE' ) && WPCF7_USE_PIPE )
822
  && $pipes instanceof WPCF7_Pipes
823
- && ! $pipes->zero()
824
  ) {
825
- if ( is_array( $value_orig ) ) {
826
  $value = array();
827
- foreach ( $value_orig as $v ) {
828
- $value[] = $pipes->do_pipe( wp_unslash( $v ) );
829
  }
830
  } else {
831
- $value = $pipes->do_pipe( wp_unslash( $value_orig ) );
832
  }
833
  } else {
834
  $value = $posted_value;
@@ -842,32 +919,33 @@ class WPCF7R_Action {
842
  *
843
  * @param $and_row
844
  */
845
- public function is_valid( $and_row ) {
 
846
  $valid = false;
847
- if ( isset( $and_row['condition'] ) && $and_row['condition'] ) {
848
- $tag_name = isset( $and_row['if'] ) ? $and_row['if'] : '';
849
- $posted_value = $this->get_form_tag_posted_data( $tag_name );
850
  $compare_value = $and_row['value'];
851
- switch ( $and_row['condition'] ) {
852
  case 'equal':
853
- if ( isset( $posted_value ) && is_array( $posted_value ) ) {
854
- $valid = in_array( $compare_value, $posted_value, true ) || $compare_value === $posted_value ? true : false;
855
  } else {
856
  $valid = $compare_value === $posted_value;
857
  }
858
  break;
859
  case 'not-equal':
860
- if ( is_array( $posted_value ) ) {
861
- $valid = ! in_array( $compare_value, $posted_value, true );
862
  } else {
863
  $valid = $compare_value !== $posted_value;
864
  }
865
  break;
866
  case 'contain':
867
- $valid = strpos( $posted_value, $compare_value ) !== false;
868
  break;
869
  case 'not-contain':
870
- $valid = strpos( $posted_value, $compare_value ) === false;
871
  break;
872
  case 'greater_than':
873
  $valid = $posted_value > $compare_value;
@@ -883,13 +961,14 @@ class WPCF7R_Action {
883
  break;
884
  }
885
  }
886
- return apply_filters( 'wpcf7r_is_valid', $valid, $and_row );
887
  }
888
 
889
  /**
890
  * Get the fields relevant for conditional group
891
  */
892
- public function get_group_fields() {
 
893
  return array_merge(
894
  array(
895
  array(
@@ -904,7 +983,8 @@ class WPCF7R_Action {
904
  /**
905
  * Get the saved groups or display the default first one
906
  */
907
- public function get_groups() {
 
908
  $groups = array(
909
  'group-0' => $this->get_group_fields(),
910
  );
@@ -914,6 +994,7 @@ class WPCF7R_Action {
914
  /**
915
  * Process all pre cf7 submit actions
916
  */
917
- public function process_pre_submit_actions() {
 
918
  }
919
  }
1
  <?php
2
+
3
  /**
4
  * Class WPCF7R_Action - פarent class that handles all redirect actions.
5
  */
6
 
7
+ defined('ABSPATH') || exit;
8
 
9
+ class WPCF7R_Action
10
+ {
11
  // Save a reference to the lead id in case the save lead action is on.
12
  public static $lead_id;
13
 
22
  *
23
  * @param string $post [description]
24
  */
25
+ public function __construct($post = null)
26
+ {
27
  $this->priority = 2;
28
 
29
+ if ($post) {
30
  // save a refference to the action post.
31
  $this->action_post = $post;
32
  // set the action post ID.
33
  $this->action_post_id = $post->ID;
34
  // get the custom action fields.
35
+ $this->fields_values = get_post_custom($this->action_post_id);
36
  // get the contact form 7 post id.
37
+ $this->wpcf7_id = $this->get_action_wpcf7_id($this->action_post_id);
38
  // get the type of action.
39
+ $this->action = self::get_action_type($this->action_post_id);
40
  // get tje status of the action (is it active or not).
41
+ $this->action_status = $this->get_action_status($this->action_post_id);
42
  // get conditional logic blocks.
43
+ $this->logic_blocks = $this->get('blocks');
44
+ // save submission data reference
45
+ $this->wpcf7_submission = WPCF7_Submission::get_instance();
46
  }
47
  }
48
 
51
  *
52
  * @return [string] - a link to the form edit screen.
53
  */
54
+ public function get_cf7_link_html()
55
+ {
56
+ return WPCF7r_Form_Helper::get_cf7_link_html($this->wpcf7_id);
57
  }
58
 
59
  /**
63
  * @param [int] $post_id - the id of the relevant post.
64
  * @return void
65
  */
66
+ public function display_action_column_content($column, $post_id)
67
+ {
68
  }
69
 
70
  /**
73
  *
74
  * @param $submission
75
  */
76
+ public function process_validation($submission)
77
+ {
78
+ }
79
 
80
  /**
81
  * Get action name
82
  */
83
+ public function get_name()
84
+ {
85
+ return WPCF7r_Utils::get_action_name($this->action);
86
  }
87
 
88
  /**
89
  * Adds a blank select option for select fields
90
  */
91
+ public function get_tags_optional()
92
+ {
93
  $tags = $this->get_mail_tags_array();
94
+ $tags_optional = array_merge(array(__('Select', 'wpcf7-redirect')), $tags);
95
  return $tags_optional;
96
  }
97
 
100
  *
101
  * @param $lead_id
102
  */
103
+ public function set_lead_id($lead_id)
104
+ {
105
  self::$lead_id = $lead_id;
106
  }
107
 
110
  *
111
  * @param $lead_id
112
  */
113
+ public function set_global_option($key, $value)
114
+ {
115
+ self::$global_options[$key] = $value;
116
  }
117
 
118
+ public function get_global_option($key)
119
+ {
120
+ return isset(self::$global_options[$key]) ? self::$global_options[$key] : '';
121
  }
122
 
123
  /**
124
  * Get all system user roles
125
  */
126
+ public function get_available_user_roles()
127
+ {
128
  return wp_roles()->get_names();
129
  }
130
 
131
  /**
132
  * Return the current lead id if it is availavle
133
  */
134
+ public static function get_lead_id()
135
+ {
136
+ return isset(self::$lead_id) ? self::$lead_id : '';
137
  }
138
 
139
  /**
141
  *
142
  * @param $key
143
  */
144
+ public function get($key,$default='')
145
+ {
146
+ return isset($this->fields_values[$key][0]) ? $this->fields_values[$key][0] : $default;
147
  }
148
 
149
  /**
150
  * Get the contact form 7 related post id
151
  */
152
+ public function get_cf7_post_id()
153
+ {
154
+ return isset($this->wpcf7_id) ? $this->wpcf7_id : '';
155
  }
156
 
157
  /**
160
  * @param $key
161
  * @param $value
162
  */
163
+ public function set($key, $value)
164
+ {
165
+ update_post_meta($this->action_post_id, $key, $value);
166
+ $this->fields_values[$key][0] = $value;
167
  }
168
 
169
  /**
171
  *
172
  * @return void
173
  */
174
+ public static function enqueue_backend_scripts()
175
+ {
176
  }
177
 
178
  /**
180
  *
181
  * @return void
182
  */
183
+ public static function enqueue_frontend_scripts()
184
+ {
185
  }
186
  /**
187
  * Parent get action fields function
188
  */
189
+ public function get_action_fields()
190
+ {
191
  return array();
192
  }
193
 
196
  *
197
  * @param $fields_key
198
  */
199
+ public function get_fields_settings($fields_key)
200
+ {
201
  $fields = $this->get_action_fields();
202
 
203
+ return $fields[$fields_key];
204
  }
205
 
206
  /**
207
  * Get the id of the rule
208
  */
209
+ public function get_rule_id()
210
+ {
211
+ return $this->get('wpcf7_rule_id');
212
  }
213
 
214
  /**
215
  * Get all fields values
216
  */
217
+ public function get_fields_values()
218
+ {
219
  $fields = $this->get_action_fields();
220
+ foreach ($fields as $field) {
221
+ $values[$field['name']] = $this->get_field_value($field);
222
  }
223
  return $values;
224
  }
226
  /**
227
  * Get mail tags objects
228
  */
229
+ public function get_mail_tags()
230
+ {
231
  $mail_tags = WPCF7R_Form::get_mail_tags();
232
  return $mail_tags;
233
  }
235
  /**
236
  * Get mail tags objects
237
  */
238
+ public function get_mail_tags_array()
239
+ {
240
  $mail_tags = WPCF7R_Form::get_mail_tags();
241
  $mail_tags_array = array();
242
+ if ($mail_tags) {
243
+ foreach ($mail_tags as $mail_tag) {
244
+ $mail_tags_array[$mail_tag->name] = $mail_tag->name;
245
  }
246
  }
247
  return $mail_tags_array;
252
  *
253
  * @param boolean $clean
254
  */
255
+ public function get_formatted_mail_tags($clean = false)
256
+ {
257
  $formatted_tags = array();
258
 
259
+ if (!is_array(WPCF7R_Form::get_mail_tags())) {
260
  return;
261
  }
262
 
263
+ foreach (WPCF7R_Form::get_mail_tags() as $mail_tag) {
264
  $formatted_tags[] = "<span class='mailtag code'>[{$mail_tag->name}]</span>";
265
  }
266
 
268
  // $formatted_tags[] = "<br/><span class='mailtag code'>[".$mail_tag->field_name()."]</span>";
269
  // }
270
 
271
+ $formatted_tags = implode('', $formatted_tags);
272
+ if ($clean) {
273
+ $formatted_tags = str_replace(array(']'), ', ', $formatted_tags);
274
+ $formatted_tags = str_replace(array('['), '', $formatted_tags);
275
  }
276
 
277
  ob_start();
278
+ ?>
279
 
280
  <div class="mail-tags-wrapper">
281
  <div class="mail-tags-title" data-toggle=".mail-tags-wrapper-inner">
282
+ <strong><?php _e('Available mail tags', 'wpcf7-redirect'); ?></strong> <span class="dashicons dashicons-arrow-down"></span>
283
  </div>
284
  <div class="mail-tags-wrapper-inner field-hidden">
285
  <?php echo $formatted_tags; ?>
286
  <div class="special-mail-tags">
287
+ <br />
288
+ <a href="https://contactform7.com/special-mail-tags/"><?php _e('Special mail tags'); ?></a>
289
+ <div><small><?php _e('These tags are available only inside the loop as described by the plugin author', 'wpcf7-redirect'); ?></small></div>
290
  </div>
291
  </div>
292
  </div>
293
+ <?php
294
  return ob_get_clean();
295
  }
296
 
299
  *
300
  * @param $template
301
  */
302
+ public function replace_lead_id_tag($template)
303
+ {
304
+ return str_replace('[lead_id]', self::get_lead_id(), $template);
305
  }
306
 
307
+ /**
308
+ * Get a reference to wpcf7 submission object
309
+ *
310
+ * @return void
311
+ */
312
+ private function get_submission_instance()
313
+ {
314
+ return isset($this->wpcf7_submission) ? $this->wpcf7_submission : null;
315
+ }
316
+
317
+ public function get_submitted_value($key, $default = null)
318
+ {
319
+ $submission = $this->get_submission_instance();
320
+
321
+ if(!$submission){
322
+ return $default;
323
+ }
324
+
325
+ $submitted_data = $submission->get_posted_data();
326
+
327
+ return isset($submitted_data[$key]) ? $submitted_data[$key] : $default;
328
+ }
329
  /**
330
  * Replace all mail tags in a string
331
  *
332
  * @param $content
333
  * @param $args
334
  */
335
+ public function replace_tags($content, $args = '')
336
+ {
337
+ if (true === $args) {
338
+ $args = array('html' => true);
339
  }
340
 
341
  $args = wp_parse_args(
346
  )
347
  );
348
 
349
+ $replaced_tags = wpcf7_mail_replace_tags($content, $args);
350
+ $replaced_tags = do_shortcode($replaced_tags);
351
+ $replaced_tags = $this->replace_lead_id_tag($replaced_tags);
352
 
353
  $files = $this->get_files_shortcodes_from_submitted_data();
354
 
355
+ if ($files) {
356
+ foreach ($files as $file_shortcodes) {
357
+ foreach ($file_shortcodes as $file_shortcode => $data) {
358
+ $replaced_tags = str_replace($file_shortcode, $data, $replaced_tags);
359
  }
360
  }
361
  }
363
  return $replaced_tags;
364
  }
365
 
366
+ public function get_files_shortcodes_from_submitted_data()
367
+ {
368
  $file_tags = array();
369
 
370
+ if ($this->get_submission_instance()) {
371
+ $files = $this->get_submission_instance()->uploaded_files();
372
 
373
+ foreach ($files as $file_key => $file_paths) {
374
+ $file_paths = is_array($file_paths) ? $file_paths : array($file_paths);
375
 
376
+ foreach ($file_paths as $file_path) {
377
+ $file_tags[$file_key] = array(
378
+ '[' . $file_key . '-filename]' => basename($file_path),
379
+ '[' . $file_key . '-base_64_file]' => $this->base_64_file($file_path),
380
  '[' . $file_key . '-path]' => $file_path,
381
  );
382
  }
391
  * @param [type] $path
392
  * @return void
393
  */
394
+ private function base_64_file($path)
395
+ {
396
 
397
+ $data = file_get_contents($path);
398
+ $base64 = base64_encode($data);
399
 
400
  return $base64;
401
  }
405
  *
406
  * @param $field
407
  */
408
+ public function get_field_value($field)
409
+ {
410
+ if (is_array($field)) {
411
+ return get_post_meta($this->action_post_id, '_wpcf7_redirect_' . $field['name'], true);
412
  } else {
413
+ return get_post_meta($this->action_post_id, '_wpcf7_redirect_' . $field, true);
414
  }
415
  }
416
 
419
  *
420
  * @param $post
421
  */
422
+ public static function get_action($post)
423
+ {
424
+ if (is_int($post)) {
425
+ $post = get_post($post);
426
  }
427
 
428
+ if (!isset($post->ID)) {
429
  return false;
430
  }
431
 
432
+ $action_type = self::get_action_type($post->ID);
433
  $class = "WPCF7R_Action_{$action_type}";
434
  $action = '';
435
 
436
+ if (class_exists($class)) {
437
+ $action = new $class($post);
438
  } else {
439
+ $action_type = str_replace(' ', '_', ucwords(str_replace('_', ' ', $action_type)));
440
  $class = "WPCF7R_Action_{$action_type}";
441
 
442
+ if (class_exists($class)) {
443
+ $action = new $class($post);
444
  } else {
445
+ $action = new WP_Error('get_action', "Class {$class} Does not exist");
446
  }
447
  }
448
 
452
  /**
453
  * Get the action post_id
454
  */
455
+ public function get_id()
456
+ {
457
  return $this->action_post_id;
458
  }
459
 
462
  *
463
  * @param $post_id
464
  */
465
+ public static function get_action_type($post_id)
466
+ {
467
+ $action_type = get_post_meta($post_id, 'action_type', true);
468
 
469
  $migration_list = array(
470
  'send_mail' => 'SendMail',
471
  'fire_script' => 'FireScript',
472
  );
473
 
474
+ if (isset($migration_list[$action_type])) {
475
+ update_post_meta($post_id, 'action_type', $migration_list[$action_type]);
476
 
477
+ $action_type = $migration_list[$action_type];
478
  }
479
 
480
  return $action_type;
483
  /**
484
  * Get action status
485
  */
486
+ public function get_action_status()
487
+ {
488
+ return $this->get('action_status');
489
  }
490
 
491
  /**
492
  * Get action status
493
  */
494
+ public function get_action_status_label()
495
+ {
496
 
497
  /* translators:%s the action status name */
498
+ return $this->get_action_status() === 'on' ? sprintf(__('Enable %s', 'wpcf7-redirect'), $this->get_name()) : __('Disabled', 'wpcf7-redirect');
499
  }
500
 
501
 
504
  *
505
  * @return int form id
506
  */
507
+ public function get_action_wpcf7_id()
508
+ {
509
+ return $this->get('wpcf7_id');
510
  }
511
 
512
  /**
514
  *
515
  * @return string action title
516
  */
517
+ public function get_title()
518
+ {
519
  return $this->action_post->post_title;
520
  }
521
 
524
  *
525
  * @return string action type
526
  */
527
+ public function get_type()
528
+ {
529
  return $this->action;
530
  }
531
 
534
  *
535
  * @return string action pretty name
536
  */
537
+ public function get_type_label()
538
+ {
539
  $actions = wpcf7r_get_available_actions();
540
+ $type = $actions[$this->get_type()]['label'];
541
  return $type;
542
  }
543
 
546
  *
547
  * @return string action status
548
  */
549
+ public function get_status()
550
+ {
551
  return $this->action_status;
552
  }
553
 
554
  /**
555
  * Get the action menu order
556
  */
557
+ public function get_menu_order()
558
+ {
559
  return $this->action_post->menu_order;
560
  }
561
 
564
  *
565
  * @param string $tag_name
566
  */
567
+ public function get_validation_mail_tags($tag_name = '')
568
+ {
569
  $tags = WPCF7R_Form::get_validation_obj_tags();
570
+ if ($tag_name) {
571
+ foreach ($tags as $tag) {
572
+ if ($tag->name === $tag_name) {
573
  return $tag;
574
  }
575
  }
582
  * Get default actions field
583
  * This actions will apply for all child action classes
584
  */
585
+ function get_default_fields()
586
+ {
587
  $args = array(
588
  'action_status' => array(
589
  'name' => 'action_status',
595
  'toggle-label' => json_encode(
596
  array(
597
  '.field-wrap-action_status .checkbox-label,.column-status a' => array(
598
+ __('Enabled', 'wpcf7-redirect'),
599
+ __('Disabled', 'wpcf7-redirect'),
600
  ),
601
  )
602
  ),
603
+ 'value' => $this->get('action_status'),
604
  ),
605
  );
606
 
607
+ if (conditional_logic_enabled()) {
608
  $args['conditional_logic'] = array(
609
  'name' => 'conditional_logic',
610
  'type' => 'checkbox',
611
+ 'label' => __('Conditional Logic', 'wpcf7-redirect'),
612
  'sub_title' => '',
613
  'placeholder' => '',
614
  'show_selector' => '.conditional-logic-blocks',
615
+ 'value' => $this->get('conditional_logic'),
616
  );
617
  } else {
618
  $args['conditional_logic'] = array(
619
  'name' => 'conditional_logic',
620
  'type' => 'notice',
621
+ 'label' => __('<strong>CONDITIONAL LOGIC!</strong><br/>', 'wpcf7-redirect'),
622
+ 'sub_title' => __('You can purchase and activate conditional logic addon on the extensions tab.', 'wpcf7-redirect'),
623
  'placeholder' => '',
624
  'class' => 'field-notice-alert',
625
  'show_selector' => '',
629
  $args['blocks'] = array(
630
  'name' => 'blocks',
631
  'type' => 'blocks',
632
+ 'has_conditional_logic' => $this->get('conditional_logic'),
633
  'blocks' => $this->get_conditional_blocks(),
634
  );
635
  return $args;
638
  /**
639
  * Reset all action fields
640
  */
641
+ public function delete_all_fields()
642
+ {
643
  $fields = $this->get_action_fields();
644
 
645
+ foreach ($fields as $field) {
646
+ delete_post_meta($this->action_post_id, $field['name']);
647
 
648
+ if (isset($field['fields']) && $field['fields']) {
649
+ foreach ($field['fields'] as $sub_field_key => $sub_field) {
650
+ delete_post_meta($this->action_post_id, $sub_field_key);
651
  }
652
  }
653
  }
658
  *
659
  * @param $template
660
  */
661
+ public function get_settings_template($template)
662
+ {
663
  $prefix = "[actions][$this->action_post_id]";
664
  include WPCF7_PRO_REDIRECT_ACTIONS_TEMPLATE_PATH . 'rule-title.php';
665
  include WPCF7_PRO_REDIRECT_ACTIONS_TEMPLATE_PATH . $template;
668
  /**
669
  * Get a single action row
670
  */
671
+ public function get_action_row()
672
+ {
673
  ob_start();
674
+ do_action('before_wpcf7r_action_row', $this);
675
+ ?>
676
  <tr class="drag primary <?php echo $this->get_action_status() ? 'active' : 'non-active'; ?>" data-actionid="<?php echo $this->get_id(); ?>" id="post-<?php echo $this->get_id(); ?>">
677
  <td class="manage-column cf7r-check-column ">
678
  <span class="num"><?php echo $this->get_menu_order(); ?></span>
679
  </td>
680
  <td class="manage-column column-title column-primary sortable desc">
681
  <span class="edit">
682
+ <a href="#" class="column-post-title" aria-label="<?php _e('Edit', 'wpcf7-redirect'); ?>"><?php echo $this->get_title(); ?></a>
683
  </span>
684
  <div class="row-actions">
685
  <span class="edit">
686
+ <a href="#" aria-label="<?php _e('Edit', 'wpcf7-redirect'); ?>"><?php _e('Edit', 'wpcf7-redirect'); ?></a> |
687
  </span>
688
  <span class="trash">
689
+ <a href="#" class="submitdelete" data-id="<?php echo $this->get_id(); ?>" aria-label="<?php _e('Move to trash', 'wpcf7-redirect'); ?>"><?php _e('Move to trash', 'wpcf7-redirect'); ?></a> |
690
  </span>
691
  <span class="duplicate">
692
+ <a href="#" class="submitduplicate" data-ruleid="default" data-id="<?php echo $this->get_id(); ?>" aria-label="<?php _e('Duplicate', 'wpcf7-redirect'); ?>"><?php _e('Duplicate', 'wpcf7-redirect'); ?></a>
693
  </span>
694
+ <?php if ($this->get_type() === 'save_lead') : ?>
695
  <span class="view-leads">
696
+ | <a href="<?php echo WPCF7R_Leads_Manager::get_admin_url($this->wpcf7_id); ?>" class="show-leads" data-id="<?php echo $this->get_id(); ?>" aria-label="<?php _e('View Leads', 'wpcf7-redirect'); ?>" target="_blank"><?php _e('View Leads', 'wpcf7-redirect'); ?></a> |
697
  </span>
698
  <?php endif; ?>
699
 
700
+ <?php do_action('wpcf7r_after_actions_links', $this); ?>
701
  </div>
702
  </td>
703
  <td class="manage-column column-primary sortable desc edit">
704
+ <a href="#" aria-label="<?php _e('Edit', 'wpcf7-redirect'); ?>"><?php echo $this->get_type_label(); ?></a>
705
  </td>
706
  <td class="manage-column column-primary sortable desc edit column-status">
707
+ <a href="#" aria-label="<?php _e('Edit', 'wpcf7-redirect'); ?>"><?php echo $this->get_action_status_label(); ?></a>
708
  </td>
709
  <td class="manage-column cf7r-check-column">
710
  <input type="hidden" name="post[]" value="<?php echo $this->get_id(); ?>">
712
  </td>
713
  </tr>
714
  <tr data-actionid="<?php echo $this->get_id(); ?>" class="action-container">
715
+ <td colspan="5">
716
  <div class="hidden-action">
717
  <?php $this->get_action_settings(); ?>
718
  </div>
719
  </td>
720
  </tr>
721
+ <?php
722
 
723
+ do_action('after_wpcf7r_action_row', $this);
724
 
725
+ return apply_filters('wpcf7r_get_action_rows', ob_get_clean(), $this);
726
  }
727
 
728
  /**
729
  * Get settings page
730
  */
731
+ public function get_action_settings()
732
+ {
733
+ $this->get_settings_template('html-action-send-to-email.php');
734
  }
735
 
736
  /**
739
  * @param $field
740
  * @param $prefix
741
  */
742
+ public function render_field($field, $prefix)
743
+ {
744
+ WPCF7R_Html::render_field($field, $prefix);
745
  }
746
 
747
  /**
749
  *
750
  * @return boolean
751
  */
752
+ public function has_conditional_logic()
753
+ {
754
+ return $this->get('conditional_logic') && conditional_logic_enabled() ? true : false;
755
  }
756
 
757
  /**
758
  * Maybe perform actions before sending results to the user
759
  */
760
+ public function maybe_perform_pre_result_action()
761
+ {
762
  }
763
 
764
  /**
765
  * Get the submitted form data
766
  */
767
+ public function get_posted_data()
768
+ {
769
  return $this->submission_data;
770
  }
771
 
774
  *
775
  * @param $cf7r_form
776
  */
777
+ public function process_action($cf7r_form)
778
+ {
779
  $results = array();
780
 
781
  $this->cf7r_form = $cf7r_form;
784
  $this->form_tags = $this->cf7r_form->get_cf7_form_instance()->scan_form_tags();
785
 
786
  // get conditional logic object
787
+ $clogic = class_exists('WPCF7_Redirect_Conditional_Logic') ? new WPCF7_Redirect_Conditional_Logic($this->logic_blocks, $this->cf7r_form) : '';
788
 
789
+ if (!conditional_logic_enabled() || !$this->has_conditional_logic()) {
790
  // if no conditions are defined
791
+ $results = $this->process($this->submission_data);
792
+ } elseif (conditional_logic_enabled() && $clogic->conditions_met()) {
793
+ $results = $this->process($this->submission_data);
794
  }
795
 
796
  return $results;
802
  * @param $rules
803
  * @param $response
804
  */
805
+ public function process($submission)
806
+ {
807
  }
808
 
809
  /**
810
  * Get all saved blocks
811
  */
812
+ public function get_conditional_blocks()
813
+ {
814
+ $blocks = $this->get('blocks');
815
+ if (!$blocks) {
816
  $blocks = array(
817
  array(
818
  'block_title' => 'Block title',
821
  ),
822
  );
823
  } else {
824
+ $blocks = maybe_unserialize($blocks);
825
  $blocks['block_1']['block_key'] = 'block_1';
826
  $blocks['block_1']['block_title'] = 'Block title';
827
  }
831
  /**
832
  * Find the relevant rule to use
833
  */
834
+ public function get_valid_rule_block()
835
+ {
836
+ $blocks = $this->get('blocks');
837
+ $blocks = maybe_unserialize($blocks);
838
+ if (isset($blocks) && $blocks) {
839
+ foreach ($blocks as $block) {
840
+ if (isset($block['groups']) && $block['groups']) {
841
+ foreach ($block['groups'] as $and_rows) {
842
  $valid = true;
843
+ if ($and_rows) {
844
+ foreach ($and_rows as $and_row) {
845
+ if (!$this->is_valid($and_row)) {
846
  $valid = false;
847
  break;
848
  }
849
  }
850
+ if ($valid) {
851
  break;
852
  }
853
  }
854
  }
855
+ if ($valid) {
856
  return $block;
857
  }
858
  }
865
  *
866
  * @param $form_tag_name
867
  */
868
+ private function get_form_tag($form_tag_name)
869
+ {
870
+ if ($this->form_tags) {
871
+ foreach ($this->form_tags as $form_tag) {
872
+ if ($form_tag->name === $form_tag_name) {
873
  return $form_tag;
874
  }
875
  }
882
  *
883
  * @param $form_tag_name
884
  */
885
+ private function get_form_tag_posted_data($form_tag_name)
886
+ {
887
+ $form_tag = $this->get_form_tag($form_tag_name);
888
  $value = '';
889
 
890
+ if ($form_tag) {
891
+ $posted_value = $this->submission_data->get_posted_data($form_tag_name);
892
  $type = $form_tag->type;
893
  $name = $form_tag->name;
894
  $pipes = $form_tag->pipes;
895
  $value_orig = $value;
896
  $value_orig = $posted_value;
897
  if (
898
+ (defined('WPCF7_USE_PIPE') && WPCF7_USE_PIPE)
899
  && $pipes instanceof WPCF7_Pipes
900
+ && !$pipes->zero()
901
  ) {
902
+ if (is_array($value_orig)) {
903
  $value = array();
904
+ foreach ($value_orig as $v) {
905
+ $value[] = $pipes->do_pipe(wp_unslash($v));
906
  }
907
  } else {
908
+ $value = $pipes->do_pipe(wp_unslash($value_orig));
909
  }
910
  } else {
911
  $value = $posted_value;
919
  *
920
  * @param $and_row
921
  */
922
+ public function is_valid($and_row)
923
+ {
924
  $valid = false;
925
+ if (isset($and_row['condition']) && $and_row['condition']) {
926
+ $tag_name = isset($and_row['if']) ? $and_row['if'] : '';
927
+ $posted_value = $this->get_form_tag_posted_data($tag_name);
928
  $compare_value = $and_row['value'];
929
+ switch ($and_row['condition']) {
930
  case 'equal':
931
+ if (isset($posted_value) && is_array($posted_value)) {
932
+ $valid = in_array($compare_value, $posted_value, true) || $compare_value === $posted_value ? true : false;
933
  } else {
934
  $valid = $compare_value === $posted_value;
935
  }
936
  break;
937
  case 'not-equal':
938
+ if (is_array($posted_value)) {
939
+ $valid = !in_array($compare_value, $posted_value, true);
940
  } else {
941
  $valid = $compare_value !== $posted_value;
942
  }
943
  break;
944
  case 'contain':
945
+ $valid = strpos($posted_value, $compare_value) !== false;
946
  break;
947
  case 'not-contain':
948
+ $valid = strpos($posted_value, $compare_value) === false;
949
  break;
950
  case 'greater_than':
951
  $valid = $posted_value > $compare_value;
961
  break;
962
  }
963
  }
964
+ return apply_filters('wpcf7r_is_valid', $valid, $and_row);
965
  }
966
 
967
  /**
968
  * Get the fields relevant for conditional group
969
  */
970
+ public function get_group_fields()
971
+ {
972
  return array_merge(
973
  array(
974
  array(
983
  /**
984
  * Get the saved groups or display the default first one
985
  */
986
+ public function get_groups()
987
+ {
988
  $groups = array(
989
  'group-0' => $this->get_group_fields(),
990
  );
994
  /**
995
  * Process all pre cf7 submit actions
996
  */
997
+ public function process_pre_submit_actions()
998
+ {
999
  }
1000
  }
classes/class-wpcf7r-actions-list.php DELETED
@@ -1,102 +0,0 @@
1
- <?php
2
- defined( 'ABSPATH' ) || exit;
3
-
4
- class Wpcf7r_Actions_List {
5
- public static $action_posts;
6
-
7
- public function __construct( $actions_posts = '' ) {
8
-
9
- self::$action_posts = $actions_posts;
10
-
11
- parent::__construct(
12
- array(
13
- 'singular' => __( 'Action', 'wpcf7-redirect' ), // singular name of the listed records
14
- 'plural' => __( 'Actions', 'wpcf7-redirect' ), // plural name of the listed records
15
- 'ajax' => false, // should this table support ajax?
16
- )
17
- );
18
- }
19
-
20
- public function record_count() {
21
- return count( self::$action_posts );
22
- }
23
-
24
- /**
25
- * Text diwpcf7-redirect layed when no customer data is available
26
- */
27
- public function no_items() {
28
- _e( 'No Actions Avaliable.', 'wpcf7-redirect' );
29
- }
30
-
31
- /**
32
- * Return an associative array containing the bulk action
33
- *
34
- * @return array
35
- */
36
- public function get_bulk_actions() {
37
- $actions = array(
38
- 'bulk-delete' => 'Delete',
39
- );
40
-
41
- return $actions;
42
- }
43
-
44
- /**
45
- * Handles data query and filter, sorting, and pagination.
46
- */
47
- public function prepare_items() {
48
- $this->_column_headers = $this->get_column_info();
49
-
50
- /** Process bulk action */
51
- $this->process_bulk_action();
52
-
53
- $per_page = 10;
54
- $current_page = $this->get_pagenum();
55
- $total_items = $this->record_count();
56
-
57
- $this->set_pagination_args(
58
- array(
59
- 'total_items' => $total_items, //WE have to calculate the total number of items
60
- 'per_page' => $per_page, //WE have to determine how many items to show on a page
61
- )
62
- );
63
-
64
- $this->items = self::$action_posts;
65
- }
66
-
67
- public function process_bulk_action() {
68
-
69
- //Detect when a bulk action is being triggered...
70
- if ( 'delete' === $this->current_action() ) {
71
-
72
- // In our file that handles the request, verify the nonce.
73
- $nonce = esc_attr( $_REQUEST['_wpnonce'] );
74
-
75
- if ( ! wp_verify_nonce( $nonce, 'sp_delete_customer' ) ) {
76
- die( 'Go get a life script kiddies' );
77
- } else {
78
- self::delete_customer( absint( $_GET['customer'] ) );
79
-
80
- wp_redirect( esc_url( add_query_arg() ) );
81
- exit;
82
- }
83
- }
84
-
85
- // If the delete bulk action is triggered
86
- if ( ( isset( $_POST['action'] ) && 'bulk-delete' === $_POST['action'] )
87
- || ( isset( $_POST['action2'] ) && 'bulk-delete' === $_POST['action2'] )
88
- ) {
89
-
90
- $delete_ids = esc_sql( $_POST['bulk-delete'] );
91
-
92
- // loop over the array of record IDs and delete them
93
- foreach ( $delete_ids as $id ) {
94
- self::delete_customer( $id );
95
-
96
- }
97
-
98
- wp_redirect( esc_url( add_query_arg() ) );
99
- exit;
100
- }
101
- }
102
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
classes/class-wpcf7r-base.php CHANGED
@@ -48,9 +48,7 @@ class WPCF7R_Base {
48
 
49
  $this->wpcf7_submission = new WPCF7r_Submission();
50
 
51
- $this->wpcf7_updates_class = new Wpcf7r_Updates( $this->version, WPCF7_PRO_REDIRECT_BASE_NAME );
52
-
53
- $this->wpcf7_updates_class = new WPCF7R_User();
54
  }
55
 
56
  /**
@@ -123,7 +121,7 @@ class WPCF7R_Base {
123
  * Initialize affiliate extensions
124
  */
125
  public function start_affiliate_extensions() {
126
- $this->aff['accesibie'] = new Ext_Accessibe();
127
  }
128
 
129
  /**
@@ -270,7 +268,6 @@ class WPCF7R_Base {
270
  require_once WPCF7_PRO_REDIRECT_CLASSES_PATH . 'class-wpcf7r-form.php';
271
  require_once WPCF7_PRO_REDIRECT_CLASSES_PATH . 'class-wpcf7r-html.php';
272
  require_once WPCF7_PRO_REDIRECT_CLASSES_PATH . 'class-qs-api.php';
273
- require_once WPCF7_PRO_REDIRECT_CLASSES_PATH . 'class-wpcf7r-updates.php';
274
  require_once WPCF7_PRO_REDIRECT_CLASSES_PATH . 'class-wpcf7r-action.php';
275
  require_once WPCF7_PRO_REDIRECT_CLASSES_PATH . 'class-wpcf7r-user.php';
276
  require_once WPCF7_PRO_REDIRECT_CLASSES_PATH . 'class-wpcf7r-extensions.php';
@@ -288,11 +285,6 @@ class WPCF7R_Base {
288
  require_once $filename;
289
  }
290
  }
291
-
292
- // Load affiliate extensions.
293
- foreach ( glob( WPCF7_PRO_REDIRECT_CLASSES_PATH . 'aff/*.php' ) as $filename ) {
294
- require_once $filename;
295
- }
296
  }
297
 
298
  /**
48
 
49
  $this->wpcf7_submission = new WPCF7r_Submission();
50
 
51
+ $this->wpcf7_user_panel = new WPCF7R_User();
 
 
52
  }
53
 
54
  /**
121
  * Initialize affiliate extensions
122
  */
123
  public function start_affiliate_extensions() {
124
+
125
  }
126
 
127
  /**
268
  require_once WPCF7_PRO_REDIRECT_CLASSES_PATH . 'class-wpcf7r-form.php';
269
  require_once WPCF7_PRO_REDIRECT_CLASSES_PATH . 'class-wpcf7r-html.php';
270
  require_once WPCF7_PRO_REDIRECT_CLASSES_PATH . 'class-qs-api.php';
 
271
  require_once WPCF7_PRO_REDIRECT_CLASSES_PATH . 'class-wpcf7r-action.php';
272
  require_once WPCF7_PRO_REDIRECT_CLASSES_PATH . 'class-wpcf7r-user.php';
273
  require_once WPCF7_PRO_REDIRECT_CLASSES_PATH . 'class-wpcf7r-extensions.php';
285
  require_once $filename;
286
  }
287
  }
 
 
 
 
 
288
  }
289
 
290
  /**
classes/class-wpcf7r-form-helper.php CHANGED
@@ -354,17 +354,6 @@ class WPCF7r_Form_Helper {
354
  return 'wpcf7r_leads' === get_post_type();
355
  }
356
 
357
- /**
358
- * Check if the current admin page is accesibe plugin page.
359
- *
360
- * @return boolean
361
- */
362
- public function is_accesibe_page() {
363
- $screen = get_current_screen();
364
-
365
- return 'toplevel_page_' . qs_get_plugin_display_name() === $screen->base;
366
- }
367
-
368
  /**
369
  * Check if the current page is the contact form edit screen
370
  */
@@ -384,15 +373,10 @@ class WPCF7r_Form_Helper {
384
  */
385
  public function enqueue_backend() {
386
 
387
- if ( $this->is_wpcf7_edit() || $this->is_wpcf7_settings_page() || $this->is_wpcf7_lead_page() || $this->is_accesibe_page() ) {
388
 
389
  wp_enqueue_style( 'admin-build', $this->build_css_url . 'wpcf7-redirect-backend.css', array(), WPCF7_PRO_REDIRECT_PLUGIN_VERSION );
390
 
391
- // wp_enqueue_script( 'jquery-validation', 'https://cdn.jsdelivr.net/npm/jquery-validation@1.19.3/dist/jquery.validate.js', array(), WPCF7_PRO_REDIRECT_PLUGIN_VERSION, true );
392
- // wp_enqueue_script( 'admin-dev-select2', $this->assets_js_url . 'select2.js', array(), WPCF7_PRO_REDIRECT_PLUGIN_VERSION, true );
393
- // wp_enqueue_script( 'admin-dev-validation-js', $this->assets_js_url . 'wpcf7-redirect-validation.js', array(), WPCF7_PRO_REDIRECT_PLUGIN_VERSION, true );
394
- // wp_enqueue_script( 'admin-dev-js', $this->assets_js_url . 'wpcf7-redirect-backend-script.js', array(), WPCF7_PRO_REDIRECT_PLUGIN_VERSION, true );
395
-
396
  wp_enqueue_script( 'admin-build-js', $this->build_js_url . 'wpcf7-redirect-backend-script.js', array(), WPCF7_PRO_REDIRECT_PLUGIN_VERSION, true );
397
  wp_enqueue_script(
398
  array(
354
  return 'wpcf7r_leads' === get_post_type();
355
  }
356
 
 
 
 
 
 
 
 
 
 
 
 
357
  /**
358
  * Check if the current page is the contact form edit screen
359
  */
373
  */
374
  public function enqueue_backend() {
375
 
376
+ if ( $this->is_wpcf7_edit() || $this->is_wpcf7_settings_page() || $this->is_wpcf7_lead_page() ) {
377
 
378
  wp_enqueue_style( 'admin-build', $this->build_css_url . 'wpcf7-redirect-backend.css', array(), WPCF7_PRO_REDIRECT_PLUGIN_VERSION );
379
 
 
 
 
 
 
380
  wp_enqueue_script( 'admin-build-js', $this->build_js_url . 'wpcf7-redirect-backend-script.js', array(), WPCF7_PRO_REDIRECT_PLUGIN_VERSION, true );
381
  wp_enqueue_script(
382
  array(
freemius/includes/class-freemius.php CHANGED
@@ -3550,6 +3550,8 @@
3550
  * @since 1.1.7.3
3551
  */
3552
  static function _toggle_debug_mode() {
 
 
3553
  if ( ! is_super_admin() ) {
3554
  return;
3555
  }
@@ -3571,10 +3573,19 @@
3571
  * @since 1.2.1.6
3572
  */
3573
  static function _get_debug_log() {
 
 
 
 
 
 
 
 
 
3574
  $logs = FS_Logger::load_db_logs(
3575
  fs_request_get( 'filters', false, 'post' ),
3576
- ! empty( $_POST['limit'] ) && is_numeric( $_POST['limit'] ) ? $_POST['limit'] : 200,
3577
- ! empty( $_POST['offset'] ) && is_numeric( $_POST['offset'] ) ? $_POST['offset'] : 0
3578
  );
3579
 
3580
  self::shoot_ajax_success( $logs );
@@ -4447,6 +4458,12 @@
4447
  * @since 1.0.9
4448
  */
4449
  function _email_about_firewall_issue() {
 
 
 
 
 
 
4450
  $this->_admin_notices->remove_sticky( 'failed_connect_api' );
4451
 
4452
  $pong = $this->ping();
@@ -4521,6 +4538,12 @@
4521
  * @since 1.1.7.4
4522
  */
4523
  function _retry_connectivity_test() {
 
 
 
 
 
 
4524
  $this->_admin_notices->remove_sticky( 'failed_connect_api_first' );
4525
 
4526
  $pong = $this->ping();
@@ -13863,7 +13886,7 @@
13863
 
13864
  $addon_info = $fs->_get_addon_info( $addon_id, $is_installed );
13865
 
13866
- if ( !isset( $addon_info['is_connected'] ) || ! $addon_info['is_connected'] ) {
13867
  // Add-on is not associated with an install entity.
13868
  continue;
13869
  }
3550
  * @since 1.1.7.3
3551
  */
3552
  static function _toggle_debug_mode() {
3553
+ check_admin_referer( 'fs_toggle_debug_mode' );
3554
+
3555
  if ( ! is_super_admin() ) {
3556
  return;
3557
  }
3573
  * @since 1.2.1.6
3574
  */
3575
  static function _get_debug_log() {
3576
+ check_admin_referer( 'fs_get_debug_log' );
3577
+
3578
+ if ( ! is_super_admin() ) {
3579
+ return;
3580
+ }
3581
+
3582
+ $limit = min( ! empty( $_POST['limit'] ) ? absint( $_POST['limit'] ) : 200, 200 );
3583
+ $offset = min( ! empty( $_POST['offset'] ) ? absint( $_POST['offset'] ) : 200, 200 );
3584
+
3585
  $logs = FS_Logger::load_db_logs(
3586
  fs_request_get( 'filters', false, 'post' ),
3587
+ $limit,
3588
+ $offset
3589
  );
3590
 
3591
  self::shoot_ajax_success( $logs );
4458
  * @since 1.0.9
4459
  */
4460
  function _email_about_firewall_issue() {
4461
+ check_admin_referer( 'fs_resolve_firewall_issues' );
4462
+
4463
+ if ( ! current_user_can( is_multisite() ? 'manage_options' : 'activate_plugins' ) ) {
4464
+ return;
4465
+ }
4466
+
4467
  $this->_admin_notices->remove_sticky( 'failed_connect_api' );
4468
 
4469
  $pong = $this->ping();
4538
  * @since 1.1.7.4
4539
  */
4540
  function _retry_connectivity_test() {
4541
+ check_admin_referer( 'fs_retry_connectivity_test' );
4542
+
4543
+ if ( ! current_user_can( is_multisite() ? 'manage_options' : 'activate_plugins' ) ) {
4544
+ return;
4545
+ }
4546
+
4547
  $this->_admin_notices->remove_sticky( 'failed_connect_api_first' );
4548
 
4549
  $pong = $this->ping();
13886
 
13887
  $addon_info = $fs->_get_addon_info( $addon_id, $is_installed );
13888
 
13889
+ if ( !isset($addon_info['is_connected']) || ! $addon_info['is_connected'] ) {
13890
  // Add-on is not associated with an install entity.
13891
  continue;
13892
  }
freemius/includes/managers/class-fs-admin-notice-manager.php CHANGED
@@ -175,7 +175,12 @@
175
  *
176
  */
177
  function dismiss_notice_ajax_callback() {
178
- $this->_sticky_storage->remove( $_POST['message_id'] );
 
 
 
 
 
179
  wp_die();
180
  }
181
 
@@ -469,4 +474,4 @@
469
  }
470
 
471
  #endregion
472
- }
175
  *
176
  */
177
  function dismiss_notice_ajax_callback() {
178
+ check_admin_referer( 'fs_dismiss_notice_action' );
179
+
180
+ if ( ! is_numeric( $_POST['message_id'] ) ) {
181
+ $this->_sticky_storage->remove( $_POST['message_id'] );
182
+ }
183
+
184
  wp_die();
185
  }
186
 
474
  }
475
 
476
  #endregion
477
+ }
freemius/includes/sdk/Exceptions/ArgumentNotExistException.php CHANGED
@@ -1,4 +1,8 @@
1
  <?php
 
 
 
 
2
  if ( ! class_exists( 'Freemius_InvalidArgumentException' ) ) {
3
  exit;
4
  }
@@ -6,4 +10,4 @@
6
  if ( ! class_exists( 'Freemius_ArgumentNotExistException' ) ) {
7
  class Freemius_ArgumentNotExistException extends Freemius_InvalidArgumentException {
8
  }
9
- }
1
  <?php
2
+ if ( ! defined( 'ABSPATH' ) ) {
3
+ exit;
4
+ }
5
+
6
  if ( ! class_exists( 'Freemius_InvalidArgumentException' ) ) {
7
  exit;
8
  }
10
  if ( ! class_exists( 'Freemius_ArgumentNotExistException' ) ) {
11
  class Freemius_ArgumentNotExistException extends Freemius_InvalidArgumentException {
12
  }
13
+ }
freemius/includes/sdk/Exceptions/EmptyArgumentException.php CHANGED
@@ -1,4 +1,8 @@
1
  <?php
 
 
 
 
2
  if ( ! class_exists( 'Freemius_InvalidArgumentException' ) ) {
3
  exit;
4
  }
@@ -6,4 +10,4 @@
6
  if ( ! class_exists( 'Freemius_EmptyArgumentException' ) ) {
7
  class Freemius_EmptyArgumentException extends Freemius_InvalidArgumentException {
8
  }
9
- }
1
  <?php
2
+ if ( ! defined( 'ABSPATH' ) ) {
3
+ exit;
4
+ }
5
+
6
  if ( ! class_exists( 'Freemius_InvalidArgumentException' ) ) {
7
  exit;
8
  }
10
  if ( ! class_exists( 'Freemius_EmptyArgumentException' ) ) {
11
  class Freemius_EmptyArgumentException extends Freemius_InvalidArgumentException {
12
  }
13
+ }
freemius/includes/sdk/Exceptions/Exception.php CHANGED
@@ -1,4 +1,8 @@
1
  <?php
 
 
 
 
2
  if ( ! class_exists( 'Freemius_Exception' ) ) {
3
  /**
4
  * Thrown when an API call returns an exception.
@@ -71,4 +75,4 @@
71
  return $str . $this->getMessage();
72
  }
73
  }
74
- }
1
  <?php
2
+ if ( ! defined( 'ABSPATH' ) ) {
3
+ exit;
4
+ }
5
+
6
  if ( ! class_exists( 'Freemius_Exception' ) ) {
7
  /**
8
  * Thrown when an API call returns an exception.
75
  return $str . $this->getMessage();
76
  }
77
  }
78
+ }
freemius/includes/sdk/Exceptions/InvalidArgumentException.php CHANGED
@@ -1,8 +1,12 @@
1
  <?php
 
 
 
 
2
  if ( ! class_exists( 'Freemius_Exception' ) ) {
3
  exit;
4
  }
5
 
6
  if ( ! class_exists( 'Freemius_InvalidArgumentException' ) ) {
7
  class Freemius_InvalidArgumentException extends Freemius_Exception { }
8
- }
1
  <?php
2
+ if ( ! defined( 'ABSPATH' ) ) {
3
+ exit;
4
+ }
5
+
6
  if ( ! class_exists( 'Freemius_Exception' ) ) {
7
  exit;
8
  }
9
 
10
  if ( ! class_exists( 'Freemius_InvalidArgumentException' ) ) {
11
  class Freemius_InvalidArgumentException extends Freemius_Exception { }
12
+ }
freemius/includes/sdk/Exceptions/OAuthException.php CHANGED
@@ -1,4 +1,8 @@
1
  <?php
 
 
 
 
2
  if ( ! class_exists( 'Freemius_Exception' ) ) {
3
  exit;
4
  }
@@ -9,4 +13,4 @@
9
  parent::__construct( $pResult );
10
  }
11
  }
12
- }
1
  <?php
2
+ if ( ! defined( 'ABSPATH' ) ) {
3
+ exit;
4
+ }
5
+
6
  if ( ! class_exists( 'Freemius_Exception' ) ) {
7
  exit;
8
  }
13
  parent::__construct( $pResult );
14
  }
15
  }
16
+ }
freemius/includes/sdk/FreemiusBase.php CHANGED
@@ -15,6 +15,10 @@
15
  * under the License.
16
  */
17
 
 
 
 
 
18
  if ( ! defined( 'FS_API__VERSION' ) ) {
19
  define( 'FS_API__VERSION', '1' );
20
  }
15
  * under the License.
16
  */
17
 
18
+ if ( ! defined( 'ABSPATH' ) ) {
19
+ exit;
20
+ }
21
+
22
  if ( ! defined( 'FS_API__VERSION' ) ) {
23
  define( 'FS_API__VERSION', '1' );
24
  }
freemius/includes/sdk/FreemiusWordPress.php CHANGED
@@ -14,6 +14,9 @@
14
  * License for the specific language governing permissions and limitations
15
  * under the License.
16
  */
 
 
 
17
 
18
  require_once dirname( __FILE__ ) . '/FreemiusBase.php';
19
 
@@ -709,4 +712,4 @@
709
  }
710
 
711
  #endregion
712
- }
14
  * License for the specific language governing permissions and limitations
15
  * under the License.
16
  */
17
+ if ( ! defined( 'ABSPATH' ) ) {
18
+ exit;
19
+ }
20
 
21
  require_once dirname( __FILE__ ) . '/FreemiusBase.php';
22
 
712
  }
713
 
714
  #endregion
715
+ }
freemius/require.php CHANGED
@@ -6,6 +6,10 @@
6
  * @since 1.1.9
7
  */
8
 
 
 
 
 
9
  // Configuration should be loaded first.
10
  require_once dirname( __FILE__ ) . '/config.php';
11
  require_once WP_FS__DIR_INCLUDES . '/fs-core-functions.php';
@@ -46,4 +50,4 @@
46
  require_once WP_FS__DIR_INCLUDES . '/class-fs-admin-notices.php';
47
  require_once WP_FS__DIR_INCLUDES . '/class-freemius-abstract.php';
48
  require_once WP_FS__DIR_INCLUDES . '/sdk/Exceptions/Exception.php';
49
- require_once WP_FS__DIR_INCLUDES . '/class-freemius.php';
6
  * @since 1.1.9
7
  */
8
 
9
+ if ( ! defined( 'ABSPATH' ) ) {
10
+ exit;
11
+ }
12
+
13
  // Configuration should be loaded first.
14
  require_once dirname( __FILE__ ) . '/config.php';
15
  require_once WP_FS__DIR_INCLUDES . '/fs-core-functions.php';
50
  require_once WP_FS__DIR_INCLUDES . '/class-fs-admin-notices.php';
51
  require_once WP_FS__DIR_INCLUDES . '/class-freemius-abstract.php';
52
  require_once WP_FS__DIR_INCLUDES . '/sdk/Exceptions/Exception.php';
53
+ require_once WP_FS__DIR_INCLUDES . '/class-freemius.php';
freemius/start.php CHANGED
@@ -15,7 +15,7 @@
15
  *
16
  * @var string
17
  */
18
- $this_sdk_version = '2.4.2';
19
 
20
  #region SDK Selection Logic --------------------------------------------------------------------
21
 
15
  *
16
  * @var string
17
  */
18
+ $this_sdk_version = '2.4.3';
19
 
20
  #region SDK Selection Logic --------------------------------------------------------------------
21
 
freemius/templates/account/partials/addon.php CHANGED
@@ -1,4 +1,9 @@
1
  <?php
 
 
 
 
 
2
  /**
3
  * @var array $VARS
4
  * @var Freemius $fs
@@ -14,7 +19,7 @@
14
 
15
  $addon_info = $VARS['addon_info'];
16
  $is_addon_activated = $fs->is_addon_activated( $addon_id );
17
- $is_addon_connected = isset( $addon_info['is_connected'] ) ? $addon_info['is_connected'] : '';
18
  $is_addon_installed = $VARS['is_addon_installed'];
19
 
20
  $fs_addon = ( $is_addon_connected && $is_addon_installed ) ?
@@ -145,7 +150,7 @@
145
  } ?>>
146
  <td>
147
  <!-- Title -->
148
- <?php echo isset($addon_info['title']) ? $addon_info['title'] : '' ?>
149
  </td>
150
  <?php if ( $is_addon_connected ) : ?>
151
  <!-- ID -->
@@ -443,4 +448,4 @@
443
  </td>
444
  <!--/ Optional Delete Action -->
445
  <?php endif ?>
446
- </tr>
1
  <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) {
4
+ exit;
5
+ }
6
+
7
  /**
8
  * @var array $VARS
9
  * @var Freemius $fs
19
 
20
  $addon_info = $VARS['addon_info'];
21
  $is_addon_activated = $fs->is_addon_activated( $addon_id );
22
+ $is_addon_connected = $addon_info['is_connected'];
23
  $is_addon_installed = $VARS['is_addon_installed'];
24
 
25
  $fs_addon = ( $is_addon_connected && $is_addon_installed ) ?
150
  } ?>>
151
  <td>
152
  <!-- Title -->
153
+ <?php echo $addon_info['title'] ?>
154
  </td>
155
  <?php if ( $is_addon_connected ) : ?>
156
  <!-- ID -->
448
  </td>
449
  <!--/ Optional Delete Action -->
450
  <?php endif ?>
451
+ </tr>
freemius/templates/add-ons.php CHANGED
@@ -211,7 +211,10 @@
211
  if ( is_null( $addon->info ) ) {
212
  $addon->info = new stdClass();
213
  }
214
- if ( ! isset( $addon->info->banner_url ) ) {
 
 
 
215
  $addon->info->banner_url = '//dashboard.freemius.com/assets/img/marketing/blueprint-300x100.jpg';
216
  }
217
  if ( ! isset( $addon->info->short_description ) ) {
@@ -220,7 +223,9 @@
220
  ?>
221
  <div class="fs-inner">
222
  <ul>
223
- <li class="fs-card-banner"><?php
 
 
224
  if ( $is_plugin_active || $is_addon_installed ) {
225
  echo sprintf(
226
  '<span class="fs-badge fs-installed-addon-badge">%s</span>',
@@ -230,9 +235,7 @@
230
  )
231
  );
232
  }
233
- ?>
234
- <img src="<?php echo $addon->info->banner_url ?>" alt="" />
235
- </li>
236
  <!-- <li class="fs-tag"></li> -->
237
  <li class="fs-title"><?php echo $addon->title ?></li>
238
  <li class="fs-offer">
211
  if ( is_null( $addon->info ) ) {
212
  $addon->info = new stdClass();
213
  }
214
+ if ( ! isset( $addon->info->card_banner_url ) ) {
215
+ $addon->info->card_banner_url = '//dashboard.freemius.com/assets/img/marketing/blueprint-300x100.jpg';
216
+ }
217
+ if ( ! isset( $addon->info->banner_url ) ) {
218
  $addon->info->banner_url = '//dashboard.freemius.com/assets/img/marketing/blueprint-300x100.jpg';
219
  }
220
  if ( ! isset( $addon->info->short_description ) ) {
223
  ?>
224
  <div class="fs-inner">
225
  <ul>
226
+ <li class="fs-card-banner">
227
+ <img src="<?php echo $addon->info->banner_url ?>" />
228
+ <?php
229
  if ( $is_plugin_active || $is_addon_installed ) {
230
  echo sprintf(
231
  '<span class="fs-badge fs-installed-addon-badge">%s</span>',
235
  )
236
  );
237
  }
238
+ ?></li>
 
 
239
  <!-- <li class="fs-tag"></li> -->
240
  <li class="fs-title"><?php echo $addon->title ?></li>
241
  <li class="fs-offer">
freemius/templates/ajax-loader.php CHANGED
@@ -1 +1,6 @@
1
- <div class="fs-ajax-loader" style="display: none"><?php for ( $i = 1; $i <= 8; $i ++ ) : ?><div class="fs-ajax-loader-bar fs-ajax-loader-bar-<?php echo $i ?>"></div><?php endfor ?></div>
 
 
 
 
 
1
+ <?php
2
+ if ( ! defined( 'ABSPATH' ) ) {
3
+ exit;
4
+ }
5
+ ?>
6
+ <div class="fs-ajax-loader" style="display: none"><?php for ( $i = 1; $i <= 8; $i ++ ) : ?><div class="fs-ajax-loader-bar fs-ajax-loader-bar-<?php echo $i ?>"></div><?php endfor ?></div>
freemius/templates/debug.php CHANGED
@@ -37,6 +37,8 @@
37
 
38
  $.post( ajaxurl, {
39
  action: 'fs_toggle_debug_mode',
 
 
40
  is_on : ($(this).hasClass( 'fs-on' ) ? 1 : 0)
41
  }, function ( response ) {
42
  if ( 1 == response ) {
@@ -111,7 +113,8 @@
111
  if (optionName) {
112
  $.post(ajaxurl, {
113
  action : 'fs_get_db_option',
114
- _wpnonce : '<?php echo wp_create_nonce( 'fs_get_db_option' ) ?>',
 
115
  option_name: optionName
116
  }, function (response) {
117
  if (response.data.value)
@@ -131,7 +134,8 @@
131
  if (optionValue) {
132
  $.post(ajaxurl, {
133
  action : 'fs_set_db_option',
134
- _wpnonce : '<?php echo wp_create_nonce( 'fs_set_db_option' ) ?>',
 
135
  option_name : optionName,
136
  option_value: optionValue
137
  }, function () {
@@ -724,6 +728,8 @@
724
 
725
  $.post(ajaxurl, {
726
  action : 'fs_get_debug_log',
 
 
727
  filters: filters,
728
  offset : offset,
729
  limit : limit
37
 
38
  $.post( ajaxurl, {
39
  action: 'fs_toggle_debug_mode',
40
+ // As such we don't need to use `wp_json_encode` method but using it to follow wp.org guideline.
41
+ _wpnonce : <?php echo wp_json_encode( wp_create_nonce( 'fs_toggle_debug_mode' ) ); ?>,
42
  is_on : ($(this).hasClass( 'fs-on' ) ? 1 : 0)
43
  }, function ( response ) {
44
  if ( 1 == response ) {
113
  if (optionName) {
114
  $.post(ajaxurl, {
115
  action : 'fs_get_db_option',
116
+ // As such we don't need to use `wp_json_encode` method but using it to follow wp.org guideline.
117
+ _wpnonce : <?php echo wp_json_encode( wp_create_nonce( 'fs_get_db_option' ) ); ?>,
118
  option_name: optionName
119
  }, function (response) {
120
  if (response.data.value)
134
  if (optionValue) {
135
  $.post(ajaxurl, {
136
  action : 'fs_set_db_option',
137
+ // As such we don't need to use `wp_json_encode` method but using it to follow wp.org guideline.
138
+ _wpnonce : <?php echo wp_json_encode( wp_create_nonce( 'fs_set_db_option' ) ); ?>,
139
  option_name : optionName,
140
  option_value: optionValue
141
  }, function () {
728
 
729
  $.post(ajaxurl, {
730
  action : 'fs_get_debug_log',
731
+ // As such we don't need to use `wp_json_encode` method but using it to follow wp.org guideline.
732
+ _wpnonce : <?php echo wp_json_encode( wp_create_nonce( 'fs_get_debug_log' ) ); ?>,
733
  filters: filters,
734
  offset : offset,
735
  limit : limit
freemius/templates/firewall-issues-js.php CHANGED
@@ -22,10 +22,12 @@
22
  notice = $( this ).parents( '.fs-notice' ),
23
  ajaxActionSuffix = notice.attr( 'data-manager-id' ).replace( ':', '-' );
24
 
25
- var data = {
26
- action : 'fs_resolve_firewall_issues_' + ajaxActionSuffix,
27
- error_type: error_type
28
- };
 
 
29
 
30
  if ( 'squid' === error_type ) {
31
  data.hosting_company = prompt( 'What is the name or URL of your hosting company?' );
@@ -39,7 +41,9 @@
39
  }
40
 
41
  if ( 'retry_ping' === error_type ) {
42
- data.action = 'fs_retry_connectivity_test_' + ajaxActionSuffix;
 
 
43
  }
44
 
45
  $( this ).css({'cursor': 'wait'});
@@ -56,4 +60,4 @@
56
  });
57
  });
58
  });
59
- </script>
22
  notice = $( this ).parents( '.fs-notice' ),
23
  ajaxActionSuffix = notice.attr( 'data-manager-id' ).replace( ':', '-' );
24
 
25
+ var data = {
26
+ action : 'fs_resolve_firewall_issues_' + ajaxActionSuffix,
27
+ // As such we don't need to use `wp_json_encode` method but using it to follow wp.org guideline.
28
+ _wpnonce : <?php echo wp_json_encode( wp_create_nonce( 'fs_resolve_firewall_issues' ) ); ?>,
29
+ error_type: error_type
30
+ };
31
 
32
  if ( 'squid' === error_type ) {
33
  data.hosting_company = prompt( 'What is the name or URL of your hosting company?' );
41
  }
42
 
43
  if ( 'retry_ping' === error_type ) {
44
+ data.action = 'fs_retry_connectivity_test_' + ajaxActionSuffix;
45
+ // As such we don't need to use `wp_json_encode` method but using it to follow wp.org guideline.
46
+ data._wpnonce = <?php echo wp_json_encode( wp_create_nonce( 'fs_retry_connectivity_test' ) ); ?>;
47
  }
48
 
49
  $( this ).css({'cursor': 'wait'});
60
  });
61
  });
62
  });
63
+ </script>
freemius/templates/partials/network-activation.php CHANGED
@@ -1,4 +1,9 @@
1
  <?php
 
 
 
 
 
2
  /**
3
  * @var array $VARS
4
  * @var Freemius $fs
@@ -86,4 +91,4 @@
86
  </tbody>
87
  </table>
88
  </div>
89
- </div>
1
  <?php
2
+
3
+ if ( ! defined( 'ABSPATH' ) ) {
4
+ exit;
5
+ }
6
+
7
  /**
8
  * @var array $VARS
9
  * @var Freemius $fs
91
  </tbody>
92
  </table>
93
  </div>
94
+ </div>
freemius/templates/sticky-admin-notice-js.php CHANGED
@@ -23,7 +23,9 @@
23
 
24
  notice.fadeOut( 'fast', function() {
25
  var data = {
26
- action : 'fs_dismiss_notice_action_' + ajaxActionSuffix,
 
 
27
  message_id: id
28
  };
29
 
@@ -36,4 +38,4 @@
36
  });
37
  });
38
  });
39
- </script>
23
 
24
  notice.fadeOut( 'fast', function() {
25
  var data = {
26
+ action : 'fs_dismiss_notice_action_' + ajaxActionSuffix,
27
+ // As such we don't need to use `wp_json_encode` method but using it to follow wp.org guideline.
28
+ _wpnonce : <?php echo wp_json_encode( wp_create_nonce( 'fs_dismiss_notice_action' ) ); ?>,
29
  message_id: id
30
  };
31
 
38
  });
39
  });
40
  });
41
+ </script>
readme.txt CHANGED
@@ -2,8 +2,8 @@
2
  Tags: contact form 7 redirect, contact form 7 thank you page, redirect cf7, redirect contact form 7, contact form 7 success page, cf7 redirect, registration form, mailchimp, login form, conditional redirect, cms integration, conversions, save leads, paypal
3
  Contributors: yuvalsabar, regevlio
4
  Requires at least: 5.2.0
5
- Tested up to: 5.8
6
- Stable tag: 2.4.0
7
  License: GPLv3 or later
8
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
9
 
@@ -26,6 +26,8 @@ Simply go to your form settings, choose the "Redirect Settings" tab and set the
26
  * Pass fields from the form as URL query parameters
27
  * Add Honeypot to minimize spam
28
  * Save form submissions to your database
 
 
29
 
30
  == Our Extensions ==
31
  * **[Extension]** Conditional logic for each action
@@ -45,6 +47,7 @@ Simply go to your form settings, choose the "Redirect Settings" tab and set the
45
  * **[Extension]** PayPal Integration
46
  * **[Extension]** Stripe Integration
47
  * **[Extension]** Create and send PDF
 
48
 
49
  > Note: some features are availible only as an extension. Which means you need Redirection for Contact Form 7 Pro to unlock those features. You can [get Redirection for Contact Form 7 Pro here](https://redirection-for-contact-form7.com/product/wpcf7r-actions-bundle/)!
50
 
@@ -77,6 +80,21 @@ No. One of the reasons we developed this plugin, is because on_send_ok is now de
77
 
78
  == Changelog ==
79
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
80
  = 2.4.0 =
81
  * Fixed PHP8 notice messages
82
  * Added Support for base64 files on api calls
2
  Tags: contact form 7 redirect, contact form 7 thank you page, redirect cf7, redirect contact form 7, contact form 7 success page, cf7 redirect, registration form, mailchimp, login form, conditional redirect, cms integration, conversions, save leads, paypal
3
  Contributors: yuvalsabar, regevlio
4
  Requires at least: 5.2.0
5
+ Tested up to: 6.0
6
+ Stable tag: 2.6.0
7
  License: GPLv3 or later
8
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
9
 
26
  * Pass fields from the form as URL query parameters
27
  * Add Honeypot to minimize spam
28
  * Save form submissions to your database
29
+ * NEW: GDPR create erase personal data request
30
+ * NEW: GDPR create export personal data request
31
 
32
  == Our Extensions ==
33
  * **[Extension]** Conditional logic for each action
47
  * **[Extension]** PayPal Integration
48
  * **[Extension]** Stripe Integration
49
  * **[Extension]** Create and send PDF
50
+ * **[Extension]** Send Slack Message
51
 
52
  > Note: some features are availible only as an extension. Which means you need Redirection for Contact Form 7 Pro to unlock those features. You can [get Redirection for Contact Form 7 Pro here](https://redirection-for-contact-form7.com/product/wpcf7r-actions-bundle/)!
53
 
80
 
81
  == Changelog ==
82
 
83
+ = 2.7.0 =
84
+ * Fixed incorrect checkbox/selectbox values when exporting leads to csv
85
+ * Removed old plugin updates check
86
+ * Fixed several minor php notice error messages on PHP8
87
+
88
+ = 2.6.0 =
89
+ * Added new free action - erase data request
90
+ * Fixed PHP8 notice messages
91
+ * Completely removed accessiBe addon
92
+ * Added compatability for slack message extension
93
+
94
+ = 2.5.0 =
95
+ * Fixed PHP8 notice messages
96
+ * Update freemius SDK (security patch)
97
+
98
  = 2.4.0 =
99
  * Fixed PHP8 notice messages
100
  * Added Support for base64 files on api calls
wpcf7-redirect.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Redirection for Contact Form 7
4
  * Plugin URI: https://redirection-for-contact-form7.com/
5
  * Description: The ultimate add-on for Contact Form 7 - redirect to any page after submission, fire scripts, save submissions in database, and much more options to make Contact Form 7 poweful than ever.
6
- * Version: 2.4.0
7
  * Author: Qube One
8
  * Author URI: https://redirection-for-contact-form7.com/
9
  * Contributors: querysolutions, yuvalsabar, regevlio
@@ -23,7 +23,7 @@ if (!defined('CF7_REDIRECT_DEBUG')) {
23
  define('CF7_REDIRECT_DEBUG', get_option('wpcf_debug') ? true : false);
24
  }
25
 
26
- define('WPCF7_PRO_REDIRECT_PLUGIN_VERSION', '2.4.0');
27
  define('WPCF7_PRO_MIGRATION_VERSION', '1');
28
  define('WPCF7_PRO_REDIRECT_CLASSES_PATH', plugin_dir_path(__FILE__) . 'classes/');
29
 
3
  * Plugin Name: Redirection for Contact Form 7
4
  * Plugin URI: https://redirection-for-contact-form7.com/
5
  * Description: The ultimate add-on for Contact Form 7 - redirect to any page after submission, fire scripts, save submissions in database, and much more options to make Contact Form 7 poweful than ever.
6
+ * Version: 2.6.0
7
  * Author: Qube One
8
  * Author URI: https://redirection-for-contact-form7.com/
9
  * Contributors: querysolutions, yuvalsabar, regevlio
23
  define('CF7_REDIRECT_DEBUG', get_option('wpcf_debug') ? true : false);
24
  }
25
 
26
+ define('WPCF7_PRO_REDIRECT_PLUGIN_VERSION', '2.6.0');
27
  define('WPCF7_PRO_MIGRATION_VERSION', '1');
28
  define('WPCF7_PRO_REDIRECT_CLASSES_PATH', plugin_dir_path(__FILE__) . 'classes/');
29
 
wpcf7r-functions.php CHANGED
@@ -161,22 +161,22 @@ function wpcf7_redirect_get_all_extensions_list() {
161
  'icon' => WPCF7_PRO_REDIRECT_BUILD_PATH . 'images/hubspot.png',
162
  'classname' => 'WPCF7R_Action_Hubspot',
163
  ),
164
- 'wpcf7r-hubspot' => array(
165
- 'name' => 'wpcf7r-twlio',
166
  'filename' => 'class-wpcf7r-action-twilio.php',
167
  'title' => __( 'Send sms with twlio', 'wpcf7-redirect' ),
168
  'description' => __( 'Send sms to yourself or your users with twlio.', 'wpcf7-redirect' ),
169
  'icon' => WPCF7_PRO_REDIRECT_BUILD_PATH . 'images/twilio-icon.png',
170
  'classname' => 'WPCF7R_Action_TwilioSms',
171
  ),
172
- 'wpcf7r-actions-bundle' => array(
173
- 'name' => 'wpcf7r-actions-bundle',
174
- 'filename' => 'wpcf7r-action-bundle.php',
175
- 'title' => __( 'Actions Bundle', 'wpcf7-redirect' ),
176
- 'description' => __( 'Get it all.', 'wpcf7-redirect' ),
177
- 'icon' => WPCF7_PRO_REDIRECT_BUILD_PATH . 'images/bundle.png',
178
- 'classname' => 'WPCF7R_Action_Bundle',
179
- ),
180
  );
181
 
182
  $api = new Qs_Api();
161
  'icon' => WPCF7_PRO_REDIRECT_BUILD_PATH . 'images/hubspot.png',
162
  'classname' => 'WPCF7R_Action_Hubspot',
163
  ),
164
+ 'wpcf7r-twilio' => array(
165
+ 'name' => 'wpcf7r-twillio',
166
  'filename' => 'class-wpcf7r-action-twilio.php',
167
  'title' => __( 'Send sms with twlio', 'wpcf7-redirect' ),
168
  'description' => __( 'Send sms to yourself or your users with twlio.', 'wpcf7-redirect' ),
169
  'icon' => WPCF7_PRO_REDIRECT_BUILD_PATH . 'images/twilio-icon.png',
170
  'classname' => 'WPCF7R_Action_TwilioSms',
171
  ),
172
+ 'wpcf7r-slack' => array(
173
+ 'name' => 'wpcf7r-slack',
174
+ 'filename' => 'class-wpcf7r-action-slack.php',
175
+ 'title' => __( 'Send slack message', 'wpcf7-redirect' ),
176
+ 'description' => __( 'Send slack message.', 'wpcf7-redirect' ),
177
+ 'icon' => WPCF7_PRO_REDIRECT_BUILD_PATH . 'images/slack-icon.png',
178
+ 'classname' => 'WPCF7R_Action_SlackMessage',
179
+ )
180
  );
181
 
182
  $api = new Qs_Api();