WP Product Review Lite - Version 3.4.0

Version Description

  • 2018-02-20
Download this release

Release Info

Developer codeinwp
Plugin Icon WP Product Review Lite
Version 3.4.0
Comparing to
See all releases

Code changes from version 3.3.2 to 3.4.0

CHANGELOG.md CHANGED
@@ -1,4 +1,10 @@
1
 
 
 
 
 
 
 
2
  ### v3.3.2 - 2018-01-05
3
  **Changes:**
4
  * Adds filtering option for posts/page admin listing page.
1
 
2
+ ### v3.4.0 - 2018-02-20
3
+ **Changes:**
4
+ * Adds AMP support for the review box.
5
+ * Adds compatibility with 2 more review templates.
6
+ * Improves extensibility by adding more hooks.
7
+
8
  ### v3.3.2 - 2018-01-05
9
  **Changes:**
10
  * Adds filtering option for posts/page admin listing page.
assets/css/frontpage.css CHANGED
@@ -1,5 +1,5 @@
1
  /*
2
- Version: 3.3.2
3
  */
4
  #review-statistics {
5
  width: 100%;
@@ -677,3 +677,465 @@
677
  float: none;
678
  position: relative;
679
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  /*
2
+ Version: 3.4.0
3
  */
4
  #review-statistics {
5
  width: 100%;
677
  float: none;
678
  position: relative;
679
  }
680
+
681
+ /*
682
+ Template 1
683
+ */
684
+
685
+ .wppr-template-1 .wppr-review-stars-author,
686
+ .wppr-template-1 .wppr-review-grade-number,
687
+ .wppr-template-1 .wppr-review-grade-option-header span,
688
+ .wppr-template-1 .wppr-review-pros-cons h3 {
689
+ color: inherit;
690
+ }
691
+
692
+ .wppr-template-1 .wppr-review-grade,
693
+ .wppr-template-1 .wppr-review-pros-cons {
694
+ margin-top: 30px;
695
+ }
696
+
697
+ .wppr-template-1 .wppr-review-stars,
698
+ .wppr-template-1 .wppr-review-grade {
699
+ display: table;
700
+ width: 100%;
701
+ }
702
+
703
+ .wppr-template-1 .wppr-review-stars-grade {
704
+ display: table-cell;
705
+ float: left;
706
+ position: relative;
707
+ font-family: FontAwesome;
708
+ }
709
+
710
+ .wppr-template-1 .wppr-review-stars-grade,
711
+ .wppr-template-1 .wppr-review-stars-grade .wppr-review-full-stars {
712
+ font-family: FontAwesome;
713
+ font-size: 38px;
714
+ -webkit-font-smoothing: antialiased;
715
+ line-height: 1;
716
+ }
717
+
718
+ .wppr-template-1 .wppr-review-stars-grade .wppr-review-full-stars {
719
+ display: inline-block;
720
+ overflow: hidden;
721
+ position: absolute;
722
+ z-index: 1;
723
+ top: 0;
724
+ left: 0;
725
+ white-space: nowrap;
726
+ }
727
+
728
+ .wppr-template-1 .wppr-review-stars-grade:before {
729
+ content: "\f006\f006\f006\f006\f006";
730
+ }
731
+
732
+ .wppr-template-1 .wppr-review-stars-grade .wppr-review-full-stars:before {
733
+ content: "\f005\f005\f005\f005\f005";
734
+ }
735
+
736
+ .wppr-template-1 .wppr-review-stars-author {
737
+ display: table-cell;
738
+ width: 100%;
739
+ padding-left: 15px;
740
+ font-weight: 700;
741
+ vertical-align: middle;
742
+ }
743
+
744
+ .wppr-template-1 .wppr-review-grade-number,
745
+ .wppr-template-1 .wppr-review-grade-options {
746
+ display: table-cell;
747
+ width: 100%;
748
+ vertical-align: top;
749
+ }
750
+
751
+ .wppr-template-1 .wppr-review-grade-number {
752
+ float: left;
753
+ font-size: 60px;
754
+ font-weight: 700;
755
+ line-height: 1;
756
+ letter-spacing: -0.085em;
757
+ }
758
+
759
+ .wppr-template-1 .wppr-review-grade-option-header span {
760
+ float: left;
761
+ width: 50%;
762
+ }
763
+
764
+ .wppr-template-1 .wppr-review-grade-options {
765
+ padding-left: 45px;
766
+ }
767
+
768
+ .wppr-template-1 .wppr-review-grade-option-header span:last-of-type {
769
+ font-weight: 700;
770
+ text-align: right;
771
+ }
772
+
773
+ .wppr-template-1 .wppr-review-grade-option-rating {
774
+ display: block;
775
+ float: left;
776
+ overflow: hidden;
777
+ position: relative;
778
+ width: 100%;
779
+ height: 8px;
780
+ margin-bottom: 15px;
781
+ border-radius: 10px;
782
+ }
783
+
784
+ .wppr-template-1 .wppr-review-grade-option-rating span {
785
+ position: absolute;
786
+ top: 0;
787
+ left: 0;
788
+ width: 0;
789
+ height: 100%;
790
+ -webkit-animation: animFiller 2s ease-in-out;
791
+ animation: animFiller 2s ease-in-out;
792
+ }
793
+
794
+ .wppr-template-1 .wppr-review-pros-cons {
795
+ display: table;
796
+ width: 100%;
797
+ }
798
+
799
+ .wppr-template-1 .wppr-review-pros-cons > div {
800
+ display: table-cell;
801
+ width: 50%;
802
+ vertical-align: top;
803
+ }
804
+
805
+ .wppr-template-1 .wppr-review-one-column > div {
806
+ width: 100%;
807
+ }
808
+
809
+ .wppr-template-1 .wppr-review-pros-cons h3 {
810
+ margin: 0 !important;
811
+ font-size: 18px;
812
+ font-weight: 700;
813
+ text-transform: uppercase;
814
+ }
815
+
816
+ .wppr-template-1 .wppr-review-pros-cons ul {
817
+ margin: 0;
818
+ padding-left: 20px;
819
+ color: inherit;
820
+ font-size: 16px;
821
+ list-style-type: square;
822
+ }
823
+
824
+ @media (max-width: 768px) {
825
+ .wppr-template-1 .wppr-review-stars {
826
+ width: 100%;
827
+ text-align: center;
828
+ }
829
+
830
+ .wppr-template-1 .wppr-review-stars .wppr-review-stars-grade {
831
+ display: inline-block;
832
+ float: none;
833
+ }
834
+
835
+ .wppr-template-1 .wppr-review-stars-author {
836
+ display: block;
837
+ }
838
+
839
+ .wppr-template-1 .wppr-review-stars .wppr-review-stars-grade li {
840
+ float: none;
841
+ }
842
+
843
+ .wppr-template-1 .wppr-review-pros-cons > div {
844
+ display: block;
845
+ width: 100%;
846
+ }
847
+ }
848
+
849
+ @media (max-width: 480px) {
850
+ .wppr-template-1 .wppr-review-grade-options,
851
+ .wppr-template-1 .wppr-review-grade-number {
852
+ display: block;
853
+ width: 100%;
854
+ text-align: center;
855
+ }
856
+
857
+ .wppr-template-1 .wppr-review-stars .wppr-review-stars-grade,
858
+ .wppr-template-1 .wppr-review-stars .wppr-review-full-stars {
859
+ font-size: 28px;
860
+ }
861
+
862
+ .wppr-template-1 .wppr-review-grade-number {
863
+ font-size: 48px;
864
+ }
865
+
866
+ .wppr-template-1 .wppr-review-grade-option-header span {
867
+ text-align: left;
868
+ }
869
+ }
870
+
871
+ @-webkit-keyframes animFiller {
872
+ 0% {
873
+ width: 0;
874
+ }
875
+ }
876
+
877
+ @keyframes animFiller {
878
+ 0% {
879
+ width: 0;
880
+ }
881
+ }
882
+
883
+ /*
884
+ Template 2
885
+ */
886
+ .wppr-template-2 .wppr-review-head {
887
+ display: table;
888
+ width: 100%;
889
+ }
890
+
891
+ .wppr-template-2 .wppr-review-rating,
892
+ .wppr-template-2 .wppr-review-pros,
893
+ .wppr-template-2 .wppr-review-cons {
894
+ display: table-cell;
895
+ vertical-align: top;
896
+ }
897
+
898
+ .wppr-template-2 .wppr-review-head:not(.wppr-review-with-pros-cons) .wppr-review-rating {
899
+ float: left;
900
+ }
901
+
902
+ .wppr-template-2 .wppr-review-head.wppr-review-with-pros-cons:not(.wppr-review-with-image) .wppr-review-rating-grade,
903
+ .wppr-template-2 .wppr-review-head.wppr-review-with-pros-cons:not(.wppr-review-with-image) .wppr-review-rating-users {
904
+ float: none;
905
+ width: 100%;
906
+ }
907
+
908
+ .wppr-template-2 .wppr-review-head.wppr-review-with-image .wppr-review-rating {
909
+ float: left;
910
+ box-sizing: content-box;
911
+ width: 240px;
912
+ }
913
+
914
+ .wppr-template-2 .wppr-review-head:not(.wppr-review-with-image) .wppr-review-rating {
915
+ float: left;
916
+ }
917
+
918
+ .wppr-template-2 .wppr-review-head:not(.wppr-review-with-image):not(.wppr-review-with-pros-cons) .wppr-review-rating {
919
+ float: left;
920
+ }
921
+
922
+ .wppr-template-2 .wppr-review-head.wppr-review-with-pros-cons .wppr-review-rating {
923
+ padding-right: 30px;
924
+ }
925
+
926
+ .wppr-template-2 .wppr-review-head.wppr-review-with-pros-cons .wppr-review-rating-grade,
927
+ .wppr-template-2 .wppr-review-head.wppr-review-with-pros-cons .wppr-review-rating-image {
928
+ float: left;
929
+ }
930
+
931
+ .wppr-template-2 .wppr-review-pros,
932
+ .wppr-template-2 .wppr-review-cons {
933
+ width: 50%;
934
+ padding-left: 30px;
935
+ }
936
+
937
+ .wppr-template-2 .wppr-review-rating-grade {
938
+ display: inline-block;
939
+ float: left;
940
+ min-width: 120px;
941
+ height: 120px;
942
+ padding: 0 15px;
943
+ color: #fff;
944
+ font-size: 60px;
945
+ font-weight: 700;
946
+ line-height: 120px;
947
+ text-align: center;
948
+ letter-spacing: -0.05em;
949
+ }
950
+
951
+ .wppr-template-2 .wppr-review-head:not(.wppr-review-with-image) .wppr-review-rating-grade {
952
+ width: 100%;
953
+ }
954
+
955
+ .wppr-template-1 .wppr-review-product-image,
956
+ .wppr-template-2 .wppr-review-product-image {
957
+ display: inline-block;
958
+ float: left;
959
+ overflow: hidden;
960
+ position: relative;
961
+ width: 120px;
962
+ height: 120px;
963
+ }
964
+
965
+ .wppr-template-1 .wppr-review-product-image {
966
+ width: 70px;
967
+ height: 70px;
968
+ margin-top: 5px;
969
+ }
970
+
971
+ .wppr-template-1 .wppr-review-product-image img,
972
+ .wppr-template-2 .wppr-review-product-image img {
973
+ position: absolute;
974
+ top: 50%;
975
+ left: 50%;
976
+ width: 100%;
977
+ -webkit-transform: translate(-50%,-50%);
978
+ -ms-transform: translate(-50%,-50%);
979
+ transform: translate(-50%,-50%);
980
+ }
981
+
982
+ .wppr-template-1 .wppr-review-product-image.wppr-review-product-image-full img,
983
+ .wppr-template-2 .wppr-review-product-image.wppr-review-product-image-full img {
984
+ width: auto;
985
+ max-width: none;
986
+ height: 100%;
987
+ }
988
+
989
+ .wppr-template-2 .wppr-review-rating-users {
990
+ display: block;
991
+ float: left;
992
+ width: 100%;
993
+ padding: 8px;
994
+ color: #fff;
995
+ font-size: 14px;
996
+ line-height: 1;
997
+ text-align: center;
998
+ white-space: nowrap;
999
+ }
1000
+
1001
+ .wppr-template-2 .wppr-review-rating-users strong {
1002
+ font-size: 16px;
1003
+ font-weight: 700;
1004
+ }
1005
+
1006
+ .wppr-template-2 .wppr-review-pros h3,
1007
+ .wppr-template-2 .wppr-review-cons h3 {
1008
+ margin: 0 !important;
1009
+ font-size: 18px;
1010
+ font-weight: 700;
1011
+ text-transform: uppercase;
1012
+ }
1013
+
1014
+ .wppr-template-2 .wppr-review-pros ul,
1015
+ .wppr-template-2 .wppr-review-cons ul {
1016
+ margin: 0;
1017
+ padding-left: 20px;
1018
+ color: inherit;
1019
+ font-size: 16px;
1020
+ list-style-type: square;
1021
+ }
1022
+
1023
+ .wppr-template-2 .wppr-review-options {
1024
+ float: left;
1025
+ width: 100%;
1026
+ margin-top: 45px;
1027
+ }
1028
+
1029
+ .wppr-template-2 .wppr-review-option {
1030
+ display: table;
1031
+ width: 100%;
1032
+ margin-bottom: 10px;
1033
+ }
1034
+
1035
+ .wppr-template-2 .wppr-review-option-header {
1036
+ display: table-cell;
1037
+ width: 150px;
1038
+ vertical-align: middle;
1039
+ }
1040
+
1041
+ .wppr-template-2 .wppr-review-option-rating {
1042
+ display: table-cell;
1043
+ margin: 0;
1044
+ padding: 0;
1045
+ vertical-align: middle;
1046
+ list-style: none;
1047
+ }
1048
+
1049
+ .wppr-template-2 .wppr-review-option-rating li {
1050
+ display: inline-block;
1051
+ float: left;
1052
+ margin-right: 10px;
1053
+ font-family: FontAwesome;
1054
+ font-size: 25px;
1055
+ -webkit-font-smoothing: antialiased;
1056
+ line-height: 1;
1057
+ }
1058
+
1059
+ .wppr-template-2 .wppr-review-option-rating li:first-child {
1060
+ text-align: left;
1061
+ }
1062
+
1063
+ .wppr-template-2 .wppr-review-option-rating li:last-child {
1064
+ text-align: right;
1065
+ }
1066
+
1067
+ .wppr-template-2 .wppr-review-option-rating li:before {
1068
+ content: "\f005";
1069
+ }
1070
+
1071
+ @media (max-width: 768px) {
1072
+ .wppr-template-2 .wppr-review-pros,
1073
+ .wppr-template-2 .wppr-review-cons {
1074
+ display: block;
1075
+ float: left;
1076
+ width: 100%;
1077
+ }
1078
+
1079
+ .wppr-template-2 .wppr-review-head {
1080
+ display: block;
1081
+ float: left;
1082
+ }
1083
+
1084
+ .wppr-template-2 .wppr-review-pros,
1085
+ .wppr-template-2 .wppr-review-cons {
1086
+ margin-top: 15px;
1087
+ padding-left: 0;
1088
+ }
1089
+
1090
+ .wppr-template-2 .wppr-review-rating {
1091
+ text-align: center;
1092
+ }
1093
+
1094
+ .wppr-template-2 .wppr-review-head.wppr-review-with-pros-cons .wppr-review-rating {
1095
+ padding: 0;
1096
+ }
1097
+ }
1098
+
1099
+ @media (max-width: 480px) {
1100
+ .wppr-template-2 .wppr-review-option-header,
1101
+ .wppr-template-2 .wppr-review-option-rating {
1102
+ display: block;
1103
+ float: left;
1104
+ width: 100%;
1105
+ }
1106
+
1107
+ .wppr-template-2 .wppr-review-option-rating li {
1108
+ margin-right: 0;
1109
+ }
1110
+
1111
+ .wppr-template-2 .wppr-review-rating-users {
1112
+ white-space: normal;
1113
+ }
1114
+
1115
+ .wppr-template-2 .wppr-review-head .wppr-review-rating-grade,
1116
+ .wppr-template-2 .wppr-review-product-image,
1117
+ .wppr-template-2 .wppr-review-head.wppr-review-with-image .wppr-review-rating {
1118
+ width: 100%;
1119
+ }
1120
+ }
1121
+
1122
+ .clearfix:after {
1123
+ display: block;
1124
+ visibility: hidden;
1125
+ clear: both;
1126
+ height: 0;
1127
+ font-size: 0;
1128
+ content: " ";
1129
+ }
1130
+
1131
+ .clearfix {
1132
+ display: inline-block;
1133
+ }
1134
+
1135
+ * html .clearfix {
1136
+ height: 1%;
1137
+ }
1138
+
1139
+ .clearfix {
1140
+ display: block;
1141
+ }
assets/img/templates/default.png ADDED
Binary file
assets/img/templates/style1.png ADDED
Binary file
assets/img/templates/style2.png ADDED
Binary file
assets/js/main.js CHANGED
@@ -16,4 +16,13 @@ jQuery(document).ready(function ($) {
16
  });
17
  });
18
 
 
 
 
 
 
 
 
 
 
19
  });
16
  });
17
  });
18
 
19
+ // Check if review image width is bigger than height.
20
+ if ( $( '.wppr-template-2' ).length > 0 ) {
21
+ var reviewImage = $( '.wppr-review-product-image' );
22
+ if ( reviewImage.length > 0 ) {
23
+ if ( reviewImage.find('img').width() > reviewImage.find('img').height() ) {
24
+ reviewImage.addClass('wppr-review-product-image-full');
25
+ }
26
+ }
27
+ }
28
  });
includes/admin/layouts/editor-default-tpl.php CHANGED
@@ -53,6 +53,44 @@ $check = $review->is_active() ? 'yes' : 'no';
53
  <?php do_action( 'wppr_editor_details_before', $model->post ); ?>
54
  <div class="wppr-review-details-fields wppr-review-fieldset">
55
  <ul>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
56
  <li>
57
  <label for="wppr-editor-product-name"><?php _e( 'Product Name', 'wp-product-review' ); ?></label>
58
  <?php
53
  <?php do_action( 'wppr_editor_details_before', $model->post ); ?>
54
  <div class="wppr-review-details-fields wppr-review-fieldset">
55
  <ul>
56
+ <?php
57
+ $templates = apply_filters( 'wppr_review_templates', array( 'default', 'style1', 'style2' ) );
58
+ if ( $templates ) {
59
+ ?>
60
+ <li>
61
+ <label for="wppr-editor-template"><?php _e( 'Template', 'wp-product-review' ); ?></label>
62
+ <?php
63
+ foreach ( $templates as $template ) {
64
+ $template_id = 'wppr-review-template-' . esc_attr( $template );
65
+ echo $html_helper->radio(
66
+ array(
67
+ 'name' => 'wppr-review-template',
68
+ 'id' => $template_id,
69
+ 'class' => 'wppr-review-template',
70
+ 'value' => $template,
71
+ 'current' => $review->get_template(),
72
+ 'options' => array(
73
+ 'disabled' => ! defined( 'WPPR_PRO_SLUG' ) && 'default' !== $template,
74
+ ),
75
+ )
76
+ );
77
+ ?>
78
+ <label for="<?php echo $template_id; ?>"><img
79
+ src='<?php echo WPPR_URL . "/assets/img/templates/$template.png"; ?>'
80
+ class="wppr-review-template"/></label>
81
+ <?php
82
+ }
83
+ ?>
84
+ </li>
85
+ <?php
86
+ }
87
+ if ( ! defined( 'WPPR_PRO_SLUG' ) ) {
88
+ ?>
89
+ <label class="wppr-upsell-label"><?php echo sprintf( esc_html__( 'You will need the %1$spremium%2$s version to use the extra review templates. You can checkout this %3$sdemo%4$s to see how they are looking.', 'wp-product-review' ), '<a href="' . WPPR_UPSELL_LINK . '">', '</a>', '<a href="https://demo.themeisle.com/wp-product-review/multiple-review-templates/">', '</a>' ); ?></label>
90
+ <br/>
91
+ <?php
92
+ }
93
+ ?>
94
  <li>
95
  <label for="wppr-editor-product-name"><?php _e( 'Product Name', 'wp-product-review' ); ?></label>
96
  <?php
includes/admin/models/class-wppr-editor-model.php CHANGED
@@ -183,6 +183,7 @@ class WPPR_Editor_Model extends WPPR_Model_Abstract {
183
  $name = isset( $data['wppr-editor-product-name'] ) ? sanitize_text_field( $data['wppr-editor-product-name'] ) : '';
184
  $image = isset( $data['wppr-editor-image'] ) ? esc_url( $data['wppr-editor-image'] ) : '';
185
  $click = isset( $data['wppr-editor-link'] ) ? strval( sanitize_text_field( $data['wppr-editor-link'] ) ) : 'image';
 
186
 
187
  // TODO Setup links as array.
188
  $link = isset( $data['wppr-editor-button-text'] ) ? strval( sanitize_text_field( $data['wppr-editor-button-text'] ) ) : '';
@@ -215,6 +216,7 @@ class WPPR_Editor_Model extends WPPR_Model_Abstract {
215
  $cons = array();
216
  }
217
  $review->set_name( $name );
 
218
  $review->set_image( $image );
219
  if ( $click === 'image' || $click === 'link' ) {
220
  $review->set_click( $click );
183
  $name = isset( $data['wppr-editor-product-name'] ) ? sanitize_text_field( $data['wppr-editor-product-name'] ) : '';
184
  $image = isset( $data['wppr-editor-image'] ) ? esc_url( $data['wppr-editor-image'] ) : '';
185
  $click = isset( $data['wppr-editor-link'] ) ? strval( sanitize_text_field( $data['wppr-editor-link'] ) ) : 'image';
186
+ $template = isset( $data['wppr-review-template'] ) ? strval( sanitize_text_field( $data['wppr-review-template'] ) ) : 'default';
187
 
188
  // TODO Setup links as array.
189
  $link = isset( $data['wppr-editor-button-text'] ) ? strval( sanitize_text_field( $data['wppr-editor-button-text'] ) ) : '';
216
  $cons = array();
217
  }
218
  $review->set_name( $name );
219
+ $review->set_template( $template );
220
  $review->set_image( $image );
221
  if ( $click === 'image' || $click === 'link' ) {
222
  $review->set_click( $click );
includes/admin/models/class-wppr-query-model.php CHANGED
@@ -217,6 +217,8 @@ class WPPR_Query_Model extends WPPR_Model_Abstract {
217
  $order_by .= "`post_date` {$order['date']}, ";
218
  }
219
 
 
 
220
  return $order_by;
221
  }
222
 
@@ -247,6 +249,8 @@ class WPPR_Query_Model extends WPPR_Model_Abstract {
247
  $conditions['having'] .= $this->db->prepare( ' AND `rating` > %f ', $filter['rating'] );
248
  }
249
 
 
 
250
  return $conditions;
251
  }
252
 
@@ -283,6 +287,8 @@ class WPPR_Query_Model extends WPPR_Model_Abstract {
283
  $sub_query_conditions .= $this->db->prepare( ' AND p.post_date >= DATE_ADD(now(), INTERVAL %d WEEK) AND p.post_date <= DATE_ADD(now(), INTERVAL %d WEEK) ', $min, $max );
284
  }
285
 
 
 
286
  return $sub_query_conditions;
287
  }
288
 
217
  $order_by .= "`post_date` {$order['date']}, ";
218
  }
219
 
220
+ $order_by .= apply_filters( 'wppr_order_by_clause', '', $order );
221
+
222
  return $order_by;
223
  }
224
 
249
  $conditions['having'] .= $this->db->prepare( ' AND `rating` > %f ', $filter['rating'] );
250
  }
251
 
252
+ $conditions .= apply_filters( 'wppr_where_clause', '', $post, $filter );
253
+
254
  return $conditions;
255
  }
256
 
287
  $sub_query_conditions .= $this->db->prepare( ' AND p.post_date >= DATE_ADD(now(), INTERVAL %d WEEK) AND p.post_date <= DATE_ADD(now(), INTERVAL %d WEEK) ', $min, $max );
288
  }
289
 
290
+ $sub_query_conditions .= apply_filters( 'wppr_where_sub_clause', '', $post );
291
+
292
  return $sub_query_conditions;
293
  }
294
 
includes/admin/models/class-wppr-review-model.php CHANGED
@@ -137,6 +137,14 @@ class WPPR_Review_Model extends WPPR_Model_Abstract {
137
  */
138
  private $options = array();
139
 
 
 
 
 
 
 
 
 
140
  /**
141
  * WPPR_Review constructor.
142
  *
@@ -161,6 +169,7 @@ class WPPR_Review_Model extends WPPR_Model_Abstract {
161
  $this->logger->notice( 'Setting up review for ID: ' . $review_id );
162
  $this->setup_price();
163
  $this->setup_name();
 
164
  $this->setup_click();
165
  $this->setup_image();
166
  $this->setup_links();
@@ -284,6 +293,19 @@ class WPPR_Review_Model extends WPPR_Model_Abstract {
284
  $this->name = $name;
285
  }
286
 
 
 
 
 
 
 
 
 
 
 
 
 
 
287
  /**
288
  * Setup the link behaviour
289
  *
@@ -636,6 +658,7 @@ class WPPR_Review_Model extends WPPR_Model_Abstract {
636
  $data = array(
637
  'id' => $this->get_ID(),
638
  'name' => $this->get_name(),
 
639
  'price' => $this->get_price(),
640
  'price_raw' => $this->get_price_raw(),
641
  'currency' => $this->get_currency(),
@@ -666,6 +689,16 @@ class WPPR_Review_Model extends WPPR_Model_Abstract {
666
  return apply_filters( 'wppr_name', $this->name, $this->ID, $this );
667
  }
668
 
 
 
 
 
 
 
 
 
 
 
669
  /**
670
  * Setter method for saving the review name.
671
  *
@@ -687,6 +720,22 @@ class WPPR_Review_Model extends WPPR_Model_Abstract {
687
  return false;
688
  }
689
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
690
  /**
691
  * Returns the review price.
692
  *
137
  */
138
  private $options = array();
139
 
140
+ /**
141
+ * The review template.
142
+ *
143
+ * @access private
144
+ * @var string $name The review template.
145
+ */
146
+ private $template = 'default';
147
+
148
  /**
149
  * WPPR_Review constructor.
150
  *
169
  $this->logger->notice( 'Setting up review for ID: ' . $review_id );
170
  $this->setup_price();
171
  $this->setup_name();
172
+ $this->setup_template();
173
  $this->setup_click();
174
  $this->setup_image();
175
  $this->setup_links();
293
  $this->name = $name;
294
  }
295
 
296
+ /**
297
+ * Setup the template of the review.
298
+ *
299
+ * @access private
300
+ */
301
+ private function setup_template() {
302
+ $template = get_post_meta( $this->ID, '_wppr_review_template', true );
303
+ if ( empty( $template ) ) {
304
+ $template = 'default';
305
+ }
306
+ $this->template = $template;
307
+ }
308
+
309
  /**
310
  * Setup the link behaviour
311
  *
658
  $data = array(
659
  'id' => $this->get_ID(),
660
  'name' => $this->get_name(),
661
+ 'template' => $this->get_template(),
662
  'price' => $this->get_price(),
663
  'price_raw' => $this->get_price_raw(),
664
  'currency' => $this->get_currency(),
689
  return apply_filters( 'wppr_name', $this->name, $this->ID, $this );
690
  }
691
 
692
+ /**
693
+ * Return the review template.
694
+ *
695
+ * @access public
696
+ * @return string
697
+ */
698
+ public function get_template() {
699
+ return apply_filters( 'wppr_template', $this->template, $this->ID, $this );
700
+ }
701
+
702
  /**
703
  * Setter method for saving the review name.
704
  *
720
  return false;
721
  }
722
 
723
+ /**
724
+ * Setter method for saving the review template.
725
+ *
726
+ * @access public
727
+ *
728
+ * @param string $template The new review template.
729
+ *
730
+ * @return bool
731
+ */
732
+ public function set_template( $template ) {
733
+ $this->template = $template;
734
+
735
+ return update_post_meta( $this->ID, '_wppr_review_template', $template );
736
+
737
+ }
738
+
739
  /**
740
  * Returns the review price.
741
  *
includes/class-wppr.php CHANGED
@@ -67,7 +67,7 @@ class WPPR {
67
  */
68
  public function __construct() {
69
  $this->plugin_name = 'wppr';
70
- $this->version = '3.3.2';
71
 
72
  $this->load_dependencies();
73
  $this->set_locale();
@@ -180,6 +180,10 @@ class WPPR {
180
  $this->loader->add_action( 'comment_form_after_fields', $plugin_public, 'add_comment_fields' );
181
  $this->loader->add_filter( 'comment_text', $plugin_public, 'show_comment_ratings' );
182
 
 
 
 
 
183
  $currentTheme = wp_get_theme();
184
  if ( $currentTheme->get( 'Name' ) !== 'Bookrev' && $currentTheme->get( 'Name' ) !== 'Book Rev Lite' ) {
185
  $this->loader->add_filter( 'the_content', $plugin_public, 'display_on_front' );
67
  */
68
  public function __construct() {
69
  $this->plugin_name = 'wppr';
70
+ $this->version = '3.4.0';
71
 
72
  $this->load_dependencies();
73
  $this->set_locale();
180
  $this->loader->add_action( 'comment_form_after_fields', $plugin_public, 'add_comment_fields' );
181
  $this->loader->add_filter( 'comment_text', $plugin_public, 'show_comment_ratings' );
182
 
183
+ if ( function_exists( 'ampforwp_is_amp_endpoint' ) || function_exists( 'is_amp_endpoint' ) ) {
184
+ $this->loader->add_action( 'amp_post_template_css', $plugin_public, 'wppr_amp_support' );
185
+ }
186
+
187
  $currentTheme = wp_get_theme();
188
  if ( $currentTheme->get( 'Name' ) !== 'Bookrev' && $currentTheme->get( 'Name' ) !== 'Book Rev Lite' ) {
189
  $this->loader->add_filter( 'the_content', $plugin_public, 'display_on_front' );
includes/public/class-wppr-public.php CHANGED
@@ -72,57 +72,11 @@ class Wppr_Public {
72
  }
73
 
74
  /**
75
- *
76
- * Load the review assets based on the context.
77
- *
78
- * @param WPPR_Review_Model $review Review model.
79
  */
80
- public function load_review_assets( $review = null ) {
81
- $load = false;
82
- if ( ! empty( $review ) ) {
83
- if ( $review->is_active() ) {
84
- $load = true;
85
- }
86
- } else {
87
- $review = $this->review;
88
- if ( empty( $review ) ) {
89
- $load = false;
90
- } elseif ( $review->is_active() ) {
91
- $load = true;
92
- }
93
- }
94
-
95
- if ( ! $load ) {
96
- return;
97
- }
98
-
99
- if ( $review->wppr_get_option( 'cwppos_lighbox' ) == 'no' ) {
100
- wp_enqueue_script( $this->plugin_name . '-lightbox-js', WPPR_URL . '/assets/js/lightbox.min.js', array( 'jquery' ), $this->version, true );
101
- wp_enqueue_style( $this->plugin_name . '-lightbox-css', WPPR_URL . '/assets/css/lightbox.css', array(), $this->version );
102
- }
103
-
104
- if ( $review->wppr_get_option( 'cwppos_show_userreview' ) == 'yes' ) {
105
- wp_enqueue_script( 'jquery-ui-slider' );
106
- wp_enqueue_script(
107
- $this->plugin_name . '-frontpage-js', WPPR_URL . '/assets/js/main.js', array(
108
- 'jquery',
109
- ), $this->version, true
110
- );
111
- if ( $review->wppr_get_option( 'cwppos_show_userreview' ) == 'yes' ) {
112
- wp_enqueue_style( $this->plugin_name . 'jqueryui', WPPR_URL . '/assets/css/jquery-ui.css', array(), $this->version );
113
- }
114
- }
115
- $icon = $review->wppr_get_option( 'cwppos_change_bar_icon' );
116
-
117
- if ( ! empty( $icon ) && $review->wppr_get_option( 'cwppos_fontawesome' ) == 'no' ) {
118
- wp_enqueue_style( $this->plugin_name . 'font-awesome', WPPR_URL . '/assets/css/font-awesome.min.css', array(), $this->version );
119
- }
120
- wp_enqueue_style( $this->plugin_name . '-frontpage-stylesheet', WPPR_URL . '/assets/css/frontpage.css', array(), $this->version );
121
- wp_enqueue_style(
122
- $this->plugin_name . '-percentage-circle', WPPR_URL . '/assets/css/circle.css', array(),
123
- $this->version
124
- );
125
 
 
126
  $conditional_styles = '';
127
  if ( $review->wppr_get_option( 'cwppos_show_icon' ) == 'yes' ) {
128
  $conditional_styles .= '
@@ -288,9 +242,133 @@ class Wppr_Public {
288
  }
289
 
290
  ' . $conditional_styles . '
291
-
292
  ';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
293
  $style = apply_filters( 'wppr_global_style', $style );
 
294
  wp_add_inline_style( $this->plugin_name . '-frontpage-stylesheet', $style );
295
  }
296
 
@@ -312,9 +390,8 @@ class Wppr_Public {
312
  $output = '';
313
  $review_object = $this->review;
314
  $template = new WPPR_Template();
315
-
316
- $output .= $template->render(
317
- 'default', array(
318
  'review_object' => $review_object,
319
  ), false
320
  );
@@ -435,11 +512,11 @@ class Wppr_Public {
435
  if ( empty( $options ) ) {
436
  return $text;
437
  }
438
- $return = '';
439
  $return .= '<div class="user-comments-grades">';
440
  foreach ( $options as $k => $option ) {
441
  $intGrade = intval( $option['value'] * 10 );
442
- $return .= '<div class="comment-meta-option">
443
  <p class="comment-meta-option-name">' . $option['name'] . '</p>
444
  <p class="comment-meta-option-grade">' . $option['value'] . '</p>
445
  <div class="cwpr_clearfix"></div>
@@ -450,8 +527,18 @@ class Wppr_Public {
450
  ';
451
  }
452
  $return .= '</div>';
453
-
454
  return $return . $text . '<div class="cwpr_clearfix"></div>';
455
  }
456
 
 
 
 
 
 
 
 
 
 
 
 
457
  }
72
  }
73
 
74
  /**
75
+ * Function to generate styles on the basis of Ratings.
 
 
 
76
  */
77
+ public function generate_styles() {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
78
 
79
+ $review = new WPPR_Review_Model();
80
  $conditional_styles = '';
81
  if ( $review->wppr_get_option( 'cwppos_show_icon' ) == 'yes' ) {
82
  $conditional_styles .= '
242
  }
243
 
244
  ' . $conditional_styles . '
245
+
246
  ';
247
+
248
+ /**
249
+ * Template specific styles.
250
+ */
251
+ $style .= '
252
+ .wppr-template-1 .wppr-review-grade-option .wppr-very-good,
253
+ .wppr-template-2 .wppr-review-rating .wppr-very-good{
254
+ background: ' . $review->wppr_get_option( 'cwppos_rating_very_good' ) . ';
255
+ }
256
+ .wppr-template-1 .wppr-review-grade-option .wppr-good,
257
+ .wppr-template-2 .wppr-review-rating .wppr-good{
258
+ background: ' . $review->wppr_get_option( 'cwppos_rating_good' ) . ';
259
+ }
260
+ .wppr-template-1 .wppr-review-grade-option .wppr-not-bad,
261
+ .wppr-template-2 .wppr-review-rating .wppr-not-bad{
262
+ background: ' . $review->wppr_get_option( 'cwppos_rating_notbad' ) . ';
263
+ }
264
+
265
+ .wppr-template-1 .wppr-review-grade-option .wppr-weak,
266
+ .wppr-template-2 .wppr-review-rating .wppr-weak{
267
+ background: ' . $review->wppr_get_option( 'cwppos_rating_weak' ) . ';
268
+ }
269
+ .wppr-template-1 .wppr-review-grade-option .wppr-default,
270
+ .wppr-template-2 .wppr-review-rating .wppr-default{
271
+ background: ' . $review->wppr_get_option( 'cwppos_rating_default' ) . ';
272
+ }
273
+
274
+
275
+
276
+ .wppr-template-1 .wppr-review-grade-number .wppr-very-good,
277
+ .wppr-template-1 .wppr-review-stars .wppr-very-good,
278
+ .wppr-template-2 .wppr-review-option-rating .wppr-very-good{
279
+ color: ' . $review->wppr_get_option( 'cwppos_rating_very_good' ) . ';
280
+ }
281
+ .wppr-template-1 .wppr-review-grade-number .wppr-good,
282
+ .wppr-template-1 .wppr-review-stars .wppr-good,
283
+ .wppr-template-2 .wppr-review-option-rating .wppr-good{
284
+ color: ' . $review->wppr_get_option( 'cwppos_rating_good' ) . ';
285
+ }
286
+
287
+ .wppr-template-1 .wppr-review-grade-number .wppr-not-bad,
288
+ .wppr-template-1 .wppr-review-stars .wppr-not-bad,
289
+ .wppr-template-2 .wppr-review-option-rating .wppr-not-bad{
290
+ color: ' . $review->wppr_get_option( 'cwppos_rating_notbad' ) . ';
291
+ color: ' . $review->wppr_get_option( 'cwppos_rating_notbad' ) . ';
292
+ }
293
+ .wppr-template-1 .wppr-review-grade-number .wppr-weak,
294
+ .wppr-template-1 .wppr-review-stars .wppr-weak,
295
+ .wppr-template-2 .wppr-review-option-rating .wppr-weak{
296
+ color: ' . $review->wppr_get_option( 'cwppos_rating_weak' ) . ';
297
+ }
298
+ .wppr-template-1 .wppr-review-grade-number .wppr-default,
299
+ .wppr-template-1 .wppr-review-stars .wppr-default,
300
+ .wppr-review-option-rating .wppr-default{
301
+ color: ' . $review->wppr_get_option( 'cwppos_rating_default' ) . ';
302
+ }
303
+
304
+
305
+ .wppr-template .wppr-review-name{
306
+ color: ' . $review->wppr_get_option( 'cwppos_font_color' ) . ';
307
+ }
308
+ .wppr-template h3.wppr-review-cons-name{
309
+ color: ' . $review->wppr_get_option( 'cwppos_cons_color' ) . ';
310
+ }
311
+ .wppr-template h3.wppr-review-pros-name{
312
+ color: ' . $review->wppr_get_option( 'cwppos_pros_color' ) . ';
313
+ }
314
+ ';
315
+ return $style;
316
+ }
317
+
318
+ /**
319
+ *
320
+ * Load the review assets based on the context.
321
+ *
322
+ * @param WPPR_Review_Model $review Review model.
323
+ */
324
+ public function load_review_assets( $review = null ) {
325
+ $load = false;
326
+ if ( ! empty( $review ) ) {
327
+ if ( $review->is_active() ) {
328
+ $load = true;
329
+ }
330
+ } else {
331
+ $review = $this->review;
332
+ if ( empty( $review ) ) {
333
+ $load = false;
334
+ } elseif ( $review->is_active() ) {
335
+ $load = true;
336
+ }
337
+ }
338
+
339
+ if ( ! $load ) {
340
+ return;
341
+ }
342
+
343
+ if ( $review->wppr_get_option( 'cwppos_lighbox' ) == 'no' ) {
344
+ wp_enqueue_script( $this->plugin_name . '-lightbox-js', WPPR_URL . '/assets/js/lightbox.min.js', array( 'jquery' ), $this->version, true );
345
+ wp_enqueue_style( $this->plugin_name . '-lightbox-css', WPPR_URL . '/assets/css/lightbox.css', array(), $this->version );
346
+ }
347
+
348
+ if ( $review->wppr_get_option( 'cwppos_show_userreview' ) == 'yes' ) {
349
+ wp_enqueue_script( 'jquery-ui-slider' );
350
+ wp_enqueue_script(
351
+ $this->plugin_name . '-frontpage-js', WPPR_URL . '/assets/js/main.js', array(
352
+ 'jquery',
353
+ ), $this->version, true
354
+ );
355
+ if ( $review->wppr_get_option( 'cwppos_show_userreview' ) == 'yes' ) {
356
+ wp_enqueue_style( $this->plugin_name . 'jqueryui', WPPR_URL . '/assets/css/jquery-ui.css', array(), $this->version );
357
+ }
358
+ }
359
+ $icon = $review->wppr_get_option( 'cwppos_change_bar_icon' );
360
+
361
+ if ( ! empty( $icon ) && $review->wppr_get_option( 'cwppos_fontawesome' ) == 'no' ) {
362
+ wp_enqueue_style( $this->plugin_name . 'font-awesome', WPPR_URL . '/assets/css/font-awesome.min.css', array(), $this->version );
363
+ }
364
+ wp_enqueue_style( $this->plugin_name . '-frontpage-stylesheet', WPPR_URL . '/assets/css/frontpage.css', array(), $this->version );
365
+ wp_enqueue_style(
366
+ $this->plugin_name . '-percentage-circle', WPPR_URL . '/assets/css/circle.css', array(),
367
+ $this->version
368
+ );
369
+ $style = $this->generate_styles();
370
  $style = apply_filters( 'wppr_global_style', $style );
371
+
372
  wp_add_inline_style( $this->plugin_name . '-frontpage-stylesheet', $style );
373
  }
374
 
390
  $output = '';
391
  $review_object = $this->review;
392
  $template = new WPPR_Template();
393
+ $output .= $template->render(
394
+ $review_object->get_template(), array(
 
395
  'review_object' => $review_object,
396
  ), false
397
  );
512
  if ( empty( $options ) ) {
513
  return $text;
514
  }
515
+ $return = '';
516
  $return .= '<div class="user-comments-grades">';
517
  foreach ( $options as $k => $option ) {
518
  $intGrade = intval( $option['value'] * 10 );
519
+ $return .= '<div class="comment-meta-option">
520
  <p class="comment-meta-option-name">' . $option['name'] . '</p>
521
  <p class="comment-meta-option-grade">' . $option['value'] . '</p>
522
  <div class="cwpr_clearfix"></div>
527
  ';
528
  }
529
  $return .= '</div>';
 
530
  return $return . $text . '<div class="cwpr_clearfix"></div>';
531
  }
532
 
533
+ /**
534
+ * AMP support for WPPR
535
+ */
536
+ public function wppr_amp_support() {
537
+ $output = '';
538
+ $output .= wp_remote_retrieve_body( wp_remote_get( WPPR_URL . '/assets/css/frontpage.css' ) );
539
+ $output .= wp_remote_retrieve_body( wp_remote_get( WPPR_URL . '/assets/css/circle.css' ) );
540
+ $style = $this->generate_styles();
541
+ $output .= $style;
542
+ echo apply_filters( 'wppr_add_amp_css', $output );
543
+ }
544
  }
includes/public/layouts/default-tpl.php CHANGED
@@ -5,8 +5,9 @@
5
  * @deprecated
6
  * @package WPPR
7
  */
 
8
  ob_start();
9
- include_once WPPR_PATH . '/includes/public/layouts/default.php';
10
  if ( ! isset( $output ) ) {
11
  $output = '';
12
  }
5
  * @deprecated
6
  * @package WPPR
7
  */
8
+
9
  ob_start();
10
+ include_once WPPR_PATH . '/includes/public/layouts/' . $review_object->get_template() . '.php';
11
  if ( ! isset( $output ) ) {
12
  $output = '';
13
  }
includes/public/layouts/default.php CHANGED
@@ -29,7 +29,6 @@ if ( $review_object->get_click() == 'image' ) {
29
  $pros = $review_object->get_pros();
30
  $cons = $review_object->get_cons();
31
 
32
-
33
  ?>
34
  <div id="wppr-review-<?php echo $review_object->get_ID(); ?>"
35
  class="wppr-review-container <?php echo( empty( $pros ) ? 'wppr-review-no-pros' : '' ); ?> <?php echo( empty( $cons ) ? 'wppr-review-no-cons' : '' ); ?>">
@@ -45,7 +44,10 @@ $cons = $review_object->get_cons();
45
  <div class="review-wu-left-top">
46
  <div class="rev-wu-image">
47
  <a href="<?php echo esc_url( $image_link ); ?>" <?php echo $lightbox; ?> rel="nofollow"
48
- target="_blank"><img src="<?php echo esc_attr( $review_object->get_small_thumbnail() ); ?>" alt="<?php echo esc_attr( $review_object->get_name() ); ?>" class="photo photo-wrapup wppr-product-image"/></a>
 
 
 
49
  </div><!-- end .rev-wu-image -->
50
 
51
  <div class="review-wu-grade">
@@ -71,19 +73,20 @@ $cons = $review_object->get_cons();
71
  <?php echo $option['value']; ?>">
72
  <div class="cwpr_clearfix">
73
  <h3><?php echo esc_html( apply_filters( 'wppr_option_name_html', $option['name'] ) ); ?></h3>
74
- <span><?php echo esc_html( number_format( ( $option['value'] / 10 ), 1 ) ); ?>/10 </span>
 
75
  </div>
76
  <ul class="cwpr_clearfix <?php echo $review_object->get_rating_class( $option['value'] ) . apply_filters( 'wppr_option_custom_icon', '' ); ?>">
77
- <?php for ( $i = 1; $i <= 10; $i++ ) { ?>
78
  <li
79
- <?php
80
- echo $i <= round( $option['value'] / 10 ) ? ' class="colored"' : '';
81
- ?>
82
  ></li>
83
  <?php } ?>
84
  </ul>
85
  </div>
86
- <?php } ?>
87
  </div><!-- end .review-wu-bars -->
88
  </div><!-- end .review-wu-left -->
89
 
@@ -115,31 +118,31 @@ $cons = $review_object->get_cons();
115
  <?php
116
  endif;
117
  if ( ! empty( $cons ) ) :
118
- ?>
119
- <div class="cons">
120
- <h2>
121
- <?php
122
- echo esc_html(
123
- apply_filters(
124
- 'wppr_review_cons_text', $review_object->wppr_get_option(
125
- 'cwppos_cons_text'
126
- )
127
- )
128
- );
129
- ?>
130
- </h2>
131
- <ul>
132
- <?php
133
- foreach ( $cons as $con ) {
134
- ?>
135
 
136
- <li><?php echo esc_html( $con ); ?></li>
137
 
138
- <?php } ?>
139
- </ul>
140
- </div>
141
 
142
- <?php endif; ?>
143
  </div><!-- end .review-wu-right -->
144
  <?php endif; ?>
145
  </div><!-- end .review-wu-content -->
29
  $pros = $review_object->get_pros();
30
  $cons = $review_object->get_cons();
31
 
 
32
  ?>
33
  <div id="wppr-review-<?php echo $review_object->get_ID(); ?>"
34
  class="wppr-review-container <?php echo( empty( $pros ) ? 'wppr-review-no-pros' : '' ); ?> <?php echo( empty( $cons ) ? 'wppr-review-no-cons' : '' ); ?>">
44
  <div class="review-wu-left-top">
45
  <div class="rev-wu-image">
46
  <a href="<?php echo esc_url( $image_link ); ?>" <?php echo $lightbox; ?> rel="nofollow"
47
+ target="_blank"><img
48
+ src="<?php echo esc_attr( $review_object->get_small_thumbnail() ); ?>"
49
+ alt="<?php echo esc_attr( $review_object->get_name() ); ?>"
50
+ class="photo photo-wrapup wppr-product-image"/></a>
51
  </div><!-- end .rev-wu-image -->
52
 
53
  <div class="review-wu-grade">
73
  <?php echo $option['value']; ?>">
74
  <div class="cwpr_clearfix">
75
  <h3><?php echo esc_html( apply_filters( 'wppr_option_name_html', $option['name'] ) ); ?></h3>
76
+ <span><?php echo esc_html( number_format( ( $option['value'] / 10 ), 1 ) ); ?>
77
+ /10 </span>
78
  </div>
79
  <ul class="cwpr_clearfix <?php echo $review_object->get_rating_class( $option['value'] ) . apply_filters( 'wppr_option_custom_icon', '' ); ?>">
80
+ <?php for ( $i = 1; $i <= 10; $i ++ ) { ?>
81
  <li
82
+ <?php
83
+ echo $i <= round( $option['value'] / 10 ) ? ' class="colored"' : '';
84
+ ?>
85
  ></li>
86
  <?php } ?>
87
  </ul>
88
  </div>
89
+ <?php } ?>
90
  </div><!-- end .review-wu-bars -->
91
  </div><!-- end .review-wu-left -->
92
 
118
  <?php
119
  endif;
120
  if ( ! empty( $cons ) ) :
121
+ ?>
122
+ <div class="cons">
123
+ <h2>
124
+ <?php
125
+ echo esc_html(
126
+ apply_filters(
127
+ 'wppr_review_cons_text', $review_object->wppr_get_option(
128
+ 'cwppos_cons_text'
129
+ )
130
+ )
131
+ );
132
+ ?>
133
+ </h2>
134
+ <ul>
135
+ <?php
136
+ foreach ( $cons as $con ) {
137
+ ?>
138
 
139
+ <li><?php echo esc_html( $con ); ?></li>
140
 
141
+ <?php } ?>
142
+ </ul>
143
+ </div>
144
 
145
+ <?php endif; ?>
146
  </div><!-- end .review-wu-right -->
147
  <?php endif; ?>
148
  </div><!-- end .review-wu-content -->
includes/public/layouts/style1.php ADDED
@@ -0,0 +1,134 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WPPR Template 1.
4
+ *
5
+ * @package WPPR
6
+ * @subpackage Layouts
7
+ * @copyright Copyright (c) 2017, Bogdan Popa
8
+ * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
9
+ * @since 3.0.0
10
+ */
11
+ ?>
12
+ <div class="wppr-template wppr-template-1">
13
+
14
+ <?php
15
+ // Review info.
16
+ $review_id = $review_object->get_ID();
17
+ $review_pros = $review_object->get_pros();
18
+ $review_cons = $review_object->get_cons();
19
+ $review_rating = $review_object->get_rating();
20
+
21
+ $links = $review_object->get_links();
22
+ $multiple_affiliates_class = 'affiliate-button';
23
+
24
+ if ( count( $links ) > 1 ) {
25
+ $multiple_affiliates_class = 'affiliate-button2 affiliate-button';
26
+ }
27
+ $review_image = $review_object->get_small_thumbnail();
28
+ $review_image_link = reset( $links );
29
+
30
+ if ( $review_object->get_click() == 'image' ) {
31
+ $lightbox = 'data-lightbox="' . esc_url( $review_object->get_small_thumbnail() ) . '"';
32
+ $review_image_link = $review_object->get_image();
33
+ }
34
+ ?>
35
+
36
+ <div id="wppr-review-<?php echo $review_id; ?>" class="wppr-review-container">
37
+
38
+ <h2 class="wppr-review-name"><?php echo esc_html( $review_object->get_name() ); ?></h2>
39
+ <div class="wppr-review-stars">
40
+ <div class="wppr-review-stars-grade <?php echo $review_object->get_rating_class(); ?>">
41
+ <span class="wppr-review-full-stars <?php echo $review_object->get_rating_class(); ?>"
42
+ style=" width:<?php echo esc_html( intval( $review_rating ) ); ?>%;"></span>
43
+ </div>
44
+ <span class="wppr-review-stars-author"><?php echo get_the_author() . __( '\'s rating', 'wp-product-review' ); ?></span>
45
+ </div><!-- end .wppr-review-stars -->
46
+ <div class="wppr-review-grade">
47
+ <div class="wppr-review-grade-number">
48
+ <span class=" <?php echo $review_object->get_rating_class(); ?> ">
49
+ <?php
50
+ // Display rating number.
51
+ echo esc_html( round( $review_object->get_rating(), 0 ) / 10 );
52
+ ?>
53
+ </span>
54
+ </div>
55
+ <?php
56
+ // Review image.
57
+ if ( ! empty( $review_image ) ) {
58
+ ?>
59
+ <div class="wppr-review-product-image">
60
+ <a href="<?php echo esc_url( $review_image_link ); ?>" <?php echo $lightbox; ?>
61
+ rel="nofollow" target="_blank"><img
62
+ src="<?php echo esc_attr( $review_image ); ?>"
63
+ alt="<?php echo esc_attr( $review_object->get_name() ); ?>" class="photo photo-wrapup"/></a>
64
+ </div>
65
+ <?php } ?>
66
+ <div class="wppr-review-grade-options">
67
+ <?php
68
+ foreach ( $review_object->get_options() as $option ) {
69
+ $review_option_rating = $option['value'];
70
+ ?>
71
+ <div class="wppr-review-grade-option">
72
+ <div class="wppr-review-grade-option-header">
73
+ <span><?php echo esc_html( apply_filters( 'wppr_option_name_html', $option['name'] ) ); ?></span>
74
+ <span><?php echo esc_html( number_format( ( $review_option_rating / 10 ), 1 ) ); ?></span>
75
+ </div>
76
+ <div class="wppr-review-grade-option-rating wppr-default">
77
+ <span class="<?php echo $review_object->get_rating_class( $review_option_rating ); ?>"
78
+ style="width:<?php echo esc_attr( $review_option_rating ); ?>%;"></span>
79
+ </div>
80
+ </div><!-- end .wppr-review-grade-option -->
81
+ <?php } ?>
82
+ </div><!-- end .wppr-review-grade-options -->
83
+ </div><!-- end .wppr-review-grade -->
84
+ <?php
85
+ // Pros & Cons section.
86
+ if ( ! empty( $review_pros ) || ! empty( $review_cons ) ) {
87
+ ?>
88
+ <div class="wppr-review-pros-cons<?php echo ( $review_pros && $review_cons ) ? '' : ' wppr-review-one-column'; ?>">
89
+ <?php
90
+ // Pros.
91
+ if ( ! empty( $review_pros ) ) {
92
+ ?>
93
+ <div class="pros">
94
+ <h3 class="wppr-review-pros-name">
95
+ <?php echo esc_html( apply_filters( 'wppr_review_pros_text', $review_object->wppr_get_option( 'cwppos_pros_text' ) ) ); ?>
96
+ </h3>
97
+ <ul>
98
+ <?php foreach ( $review_pros as $pro ) { ?>
99
+ <li><?php echo esc_html( $pro ); ?></li>
100
+ <?php } ?>
101
+ </ul>
102
+ </div>
103
+ <?php
104
+ }
105
+ // Cons.
106
+ if ( ! empty( $review_cons ) ) {
107
+ ?>
108
+ <div class="cons">
109
+ <h3 class="wppr-review-cons-name">
110
+ <?php echo esc_html( apply_filters( 'wppr_review_pros_text', $review_object->wppr_get_option( 'cwppos_cons_text' ) ) ); ?>
111
+ </h3>
112
+ <ul>
113
+ <?php foreach ( $review_cons as $con ) { ?>
114
+ <li><?php echo esc_html( $con ); ?></li>
115
+ <?php } ?>
116
+ </ul>
117
+ </div>
118
+ <?php } ?>
119
+ </div><!-- end .wppr-review-pros-cons -->
120
+ <?php } ?>
121
+ </div><!-- end .wppr-review-container -->
122
+ <?php
123
+ foreach ( $links as $title => $link ) {
124
+ if ( ! empty( $title ) && ! empty( $link ) ) {
125
+ ?>
126
+ <div class="<?php echo esc_attr( $multiple_affiliates_class ); ?>">
127
+ <a href="<?php echo esc_url( $link ); ?>" rel="nofollow"
128
+ target="_blank"><span><?php echo esc_html( $title ); ?></span> </a>
129
+ </div><!-- end .affiliate-button -->
130
+ <?php
131
+ }
132
+ }
133
+ ?>
134
+ </div>
includes/public/layouts/style2.php ADDED
@@ -0,0 +1,140 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * WPPR Template 2.
4
+ *
5
+ * @package WPPR
6
+ * @subpackage Layouts
7
+ * @copyright Copyright (c) 2017, Bogdan Popa
8
+ * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
9
+ * @since 3.0.0
10
+ * @global WPPR_Review_Model $review_object
11
+ */
12
+ ?>
13
+ <div class="wppr-template wppr-template-2">
14
+ <?php
15
+ // Review info.
16
+ $links = $review_object->get_links();
17
+ $review_id = $review_object->get_ID();
18
+ $review_pros = $review_object->get_pros();
19
+ $review_cons = $review_object->get_cons();
20
+ $review_rating = $review_object->get_rating();
21
+ $review_image = $review_object->get_small_thumbnail();
22
+ $review_image_link = reset( $links );
23
+
24
+ $multiple_affiliates_class = 'affiliate-button';
25
+
26
+ if ( count( $links ) > 1 ) {
27
+ $multiple_affiliates_class = 'affiliate-button2 affiliate-button';
28
+ }
29
+ if ( $review_object->get_click() == 'image' ) {
30
+ $lightbox = 'data-lightbox="' . esc_url( $review_object->get_small_thumbnail() ) . '"';
31
+ $review_image_link = $review_object->get_image();
32
+ }
33
+ ?>
34
+
35
+ <div id="wppr-review-<?php echo $review_id; ?>" class="wppr-review-container">
36
+ <h2 class="wppr-review-name"><?php echo esc_html( $review_object->get_name() ); ?></h2>
37
+ <div class="wppr-review-head<?php echo ( $review_pros && $review_cons ) ? ' wppr-review-with-pros-cons' : ''; ?><?php echo ( $review_image ) ? ' wppr-review-with-image' : ''; ?>">
38
+ <div class="wppr-review-rating">
39
+ <span class="wppr-review-rating-grade wppr-p<?php echo esc_attr( round( $review_object->get_rating() ) ) . ' ' . $review_object->get_rating_class(); ?>">
40
+ <?php
41
+ // Display rating number.
42
+ echo esc_html( round( $review_object->get_rating(), 0 ) / 10 );
43
+ ?>
44
+ </span>
45
+ <?php
46
+ // Review image.
47
+ if ( ! empty( $review_image ) ) {
48
+ ?>
49
+ <a href="<?php echo esc_url( $review_image_link ); ?>" <?php echo $lightbox; ?>
50
+ class="wppr-review-product-image" rel="nofollow" target="_blank"><img
51
+ src="<?php echo esc_attr( $review_image ); ?>"
52
+ alt="<?php echo esc_attr( $review_object->get_name() ); ?>" class="photo photo-wrapup"/></a>
53
+ <?php } ?>
54
+ <div class="clearfix"></div>
55
+ <?php
56
+ if ( $review_object->wppr_get_option( 'cwppos_show_userreview' ) === 'yes' ) {
57
+ $comments_rating = $review_object->get_comments_rating();
58
+ $number_comments = count( $review_object->get_comments_options() );
59
+ ?>
60
+ <span class="wppr-review-rating-users wppr-p<?php echo esc_attr( round( $comments_rating ) ) . ' ' . $review_object->get_rating_class( $comments_rating ); ?>">
61
+ <?php echo __( 'Users score:', 'wp-product-review' ); ?>
62
+ <strong><?php echo $comments_rating; ?></strong>
63
+ (<?php echo $number_comments; ?> <?php echo __( 'votes', 'wp-product-review' ); ?>)
64
+ </span>
65
+ <?php } ?>
66
+ </div>
67
+ <?php
68
+ // Pros & Cons section.
69
+ if ( ! empty( $review_pros ) || ! empty( $review_cons ) ) {
70
+ // Pros.
71
+ if ( ! empty( $review_pros ) ) {
72
+ ?>
73
+ <div class="wppr-review-pros">
74
+ <h3 class="wppr-review-pros-name">
75
+ <?php echo esc_html( apply_filters( 'wppr_review_pros_text', $review_object->wppr_get_option( 'cwppos_pros_text' ) ) ); ?>
76
+ </h3>
77
+ <ul>
78
+ <?php foreach ( $review_pros as $pro ) { ?>
79
+ <li><?php echo esc_html( $pro ); ?></li>
80
+ <?php } ?>
81
+ </ul>
82
+ </div>
83
+ <?php
84
+ }
85
+ // Cons.
86
+ if ( ! empty( $review_cons ) ) {
87
+ ?>
88
+ <div class="wppr-review-cons">
89
+ <h3 class="wppr-review-cons-name">
90
+ <?php echo esc_html( apply_filters( 'wppr_review_cons_text', $review_object->wppr_get_option( 'cwppos_cons_text' ) ) ); ?>
91
+ </h3>
92
+ <ul>
93
+ <?php foreach ( $review_cons as $con ) { ?>
94
+ <li><?php echo esc_html( $con ); ?></li>
95
+ <?php } ?>
96
+ </ul>
97
+ </div>
98
+ <?php
99
+ }
100
+ }
101
+ ?>
102
+ </div><!-- end .wppr-review-head -->
103
+ <div class="wppr-review-options">
104
+ <?php
105
+ foreach ( $review_object->get_options() as $option ) {
106
+ $review_option_rating = $option['value'];
107
+ ?>
108
+ <div class="wppr-review-option">
109
+ <div class="wppr-review-option-header">
110
+ <span><?php echo esc_html( apply_filters( 'wppr_option_name_html', $option['name'] ) ); ?></span>
111
+ </div>
112
+ <ul class="wppr-review-option-rating <?php echo apply_filters( 'wppr_option_custom_icon', '' ); ?>">
113
+ <?php for ( $i = 1; $i <= 10; $i ++ ) { ?>
114
+ <li class="
115
+ <?php
116
+ echo $i <= round( $option['value'] / 10 ) ? $review_object->get_rating_class( $option['value'] ) : ' wppr-default';
117
+ ?>
118
+ ">
119
+
120
+ </li>
121
+ <?php } ?>
122
+ </ul>
123
+ </div><!-- end .wppr-review-option -->
124
+ <?php } ?>
125
+ </div><!-- end .wppr-review-options -->
126
+ <div class="clearfix"></div>
127
+ </div><!-- end .wppr-review-container -->
128
+ <?php
129
+ foreach ( $links as $title => $link ) {
130
+ if ( ! empty( $title ) && ! empty( $link ) ) {
131
+ ?>
132
+ <div class="<?php echo esc_attr( $multiple_affiliates_class ); ?>">
133
+ <a href="<?php echo esc_url( $link ); ?>" rel="nofollow"
134
+ target="_blank"><span><?php echo esc_html( $title ); ?></span> </a>
135
+ </div><!-- end .affiliate-button -->
136
+ <?php
137
+ }
138
+ }
139
+ ?>
140
+ </div>
languages/wp-product-review.pot CHANGED
@@ -2,9 +2,9 @@
2
  # This file is distributed under the no.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: WP Product Review Lite 3.3.0\n"
6
  "Report-Msgid-Bugs-To: https://github.com/Codeinwp/wp-product-review/issues\n"
7
- "POT-Creation-Date: 2018-01-05 10:31:15+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -44,6 +44,18 @@ msgstr ""
44
  msgid "More Features "
45
  msgstr ""
46
 
 
 
 
 
 
 
 
 
 
 
 
 
47
  #: includes/admin/class-wppr-editor.php:58
48
  msgid "Product Review Extra Settings"
49
  msgstr ""
@@ -360,114 +372,124 @@ msgstr ""
360
  msgid "Specify the general details for the reviewed product."
361
  msgstr ""
362
 
363
- #: includes/admin/layouts/editor-default-tpl.php:57
 
 
 
 
 
 
 
 
 
 
364
  msgid "Product Name"
365
  msgstr ""
366
 
367
- #: includes/admin/layouts/editor-default-tpl.php:63
368
  msgid "Product name"
369
  msgstr ""
370
 
371
- #: includes/admin/layouts/editor-default-tpl.php:69
372
  msgid "Product Image"
373
  msgstr ""
374
 
375
- #: includes/admin/layouts/editor-default-tpl.php:75
376
  msgid "Choose or Upload an Image"
377
  msgstr ""
378
 
379
- #: includes/admin/layouts/editor-default-tpl.php:80
380
  msgid "The optimum size of the product image must be 600 x 600 px"
381
  msgstr ""
382
 
383
- #: includes/admin/layouts/editor-default-tpl.php:83
384
  msgid "If no image is provided, featured image is used"
385
  msgstr ""
386
 
387
- #: includes/admin/layouts/editor-default-tpl.php:87
388
  msgid "Product Image Click"
389
  msgstr ""
390
 
391
- #: includes/admin/layouts/editor-default-tpl.php:100
392
  msgid "Show Whole Image"
393
  msgstr ""
394
 
395
- #: includes/admin/layouts/editor-default-tpl.php:112
396
  msgid "Open Affiliate link"
397
  msgstr ""
398
 
399
- #: includes/admin/layouts/editor-default-tpl.php:119
400
- #: includes/admin/layouts/editor-default-tpl.php:125
401
- #: includes/admin/layouts/editor-default-tpl.php:149
402
- #: includes/admin/layouts/editor-default-tpl.php:155
403
- #: includes/admin/layouts/editor-default-tpl.php:183
404
- #: includes/admin/layouts/editor-default-tpl.php:189
405
  msgid "Affiliate Button Text"
406
  msgstr ""
407
 
408
- #: includes/admin/layouts/editor-default-tpl.php:131
409
- #: includes/admin/layouts/editor-default-tpl.php:137
410
- #: includes/admin/layouts/editor-default-tpl.php:161
411
- #: includes/admin/layouts/editor-default-tpl.php:167
412
- #: includes/admin/layouts/editor-default-tpl.php:195
413
- #: includes/admin/layouts/editor-default-tpl.php:201
414
  msgid "Affiliate Link"
415
  msgstr ""
416
 
417
- #: includes/admin/layouts/editor-default-tpl.php:143
418
  msgid "Add new link"
419
  msgstr ""
420
 
421
- #: includes/admin/layouts/editor-default-tpl.php:215
422
- #: includes/admin/layouts/editor-default-tpl.php:221
423
  msgid "Product Price"
424
  msgstr ""
425
 
426
- #: includes/admin/layouts/editor-default-tpl.php:232
427
  msgid "Product Options"
428
  msgstr ""
429
 
430
- #: includes/admin/layouts/editor-default-tpl.php:233
431
  msgid "Insert your options and their grades. Grading must be done from 0 to 100."
432
  msgstr ""
433
 
434
- #: includes/admin/layouts/editor-default-tpl.php:238
435
  msgid "Preload Info"
436
  msgstr ""
437
 
438
- #: includes/admin/layouts/editor-default-tpl.php:241
439
  msgid ""
440
  " In order to be able to automatically load your options from another posts, "
441
  "you need the "
442
  msgstr ""
443
 
444
- #: includes/admin/layouts/editor-default-tpl.php:241
445
  msgid "PRO add-on"
446
  msgstr ""
447
 
448
- #: includes/admin/layouts/editor-default-tpl.php:261
449
- #: includes/admin/layouts/editor-default-tpl.php:303
450
- #: includes/admin/layouts/editor-default-tpl.php:334
451
  msgid "Option"
452
  msgstr ""
453
 
454
- #: includes/admin/layouts/editor-default-tpl.php:270
455
  msgid "Grade"
456
  msgstr ""
457
 
458
- #: includes/admin/layouts/editor-default-tpl.php:284
459
  msgid "Pro Features"
460
  msgstr ""
461
 
462
- #: includes/admin/layouts/editor-default-tpl.php:285
463
  msgid "Insert product's pro features below."
464
  msgstr ""
465
 
466
- #: includes/admin/layouts/editor-default-tpl.php:316
467
  msgid "Cons Features"
468
  msgstr ""
469
 
470
- #: includes/admin/layouts/editor-default-tpl.php:317
471
  msgid "Insert product's cons features below."
472
  msgstr ""
473
 
@@ -519,11 +541,11 @@ msgstr ""
519
  msgid "Display Product Image :"
520
  msgstr ""
521
 
522
- #: includes/admin/models/class-wppr-editor-model.php:266
523
  msgid "Add a product image to the review"
524
  msgstr ""
525
 
526
- #: includes/admin/models/class-wppr-editor-model.php:267
527
  msgid "Attach the image"
528
  msgstr ""
529
 
@@ -565,6 +587,18 @@ msgstr ""
565
  msgid "Top Products"
566
  msgstr ""
567
 
 
 
 
 
 
 
 
 
 
 
 
 
568
  #. Plugin Name of the plugin/theme
569
  msgid "WP Product Review Lite"
570
  msgstr ""
2
  # This file is distributed under the no.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: WP Product Review Lite 3.4.0\n"
6
  "Report-Msgid-Bugs-To: https://github.com/Codeinwp/wp-product-review/issues\n"
7
+ "POT-Creation-Date: 2018-02-15 17:46:19+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
44
  msgid "More Features "
45
  msgstr ""
46
 
47
+ #: includes/admin/class-wppr-admin.php:283
48
+ msgid "Show All"
49
+ msgstr ""
50
+
51
+ #: includes/admin/class-wppr-admin.php:285
52
+ msgid "Show only Reviews"
53
+ msgstr ""
54
+
55
+ #: includes/admin/class-wppr-admin.php:326
56
+ msgid "Review"
57
+ msgstr ""
58
+
59
  #: includes/admin/class-wppr-editor.php:58
60
  msgid "Product Review Extra Settings"
61
  msgstr ""
372
  msgid "Specify the general details for the reviewed product."
373
  msgstr ""
374
 
375
+ #: includes/admin/layouts/editor-default-tpl.php:61
376
+ msgid "Template"
377
+ msgstr ""
378
+
379
+ #: includes/admin/layouts/editor-default-tpl.php:89
380
+ msgid ""
381
+ "You will need the %1$spremium%2$s version to use the extra review "
382
+ "templates. You can checkout this %3$sdemo%4$s to see how they are looking."
383
+ msgstr ""
384
+
385
+ #: includes/admin/layouts/editor-default-tpl.php:95
386
  msgid "Product Name"
387
  msgstr ""
388
 
389
+ #: includes/admin/layouts/editor-default-tpl.php:101
390
  msgid "Product name"
391
  msgstr ""
392
 
393
+ #: includes/admin/layouts/editor-default-tpl.php:107
394
  msgid "Product Image"
395
  msgstr ""
396
 
397
+ #: includes/admin/layouts/editor-default-tpl.php:113
398
  msgid "Choose or Upload an Image"
399
  msgstr ""
400
 
401
+ #: includes/admin/layouts/editor-default-tpl.php:118
402
  msgid "The optimum size of the product image must be 600 x 600 px"
403
  msgstr ""
404
 
405
+ #: includes/admin/layouts/editor-default-tpl.php:121
406
  msgid "If no image is provided, featured image is used"
407
  msgstr ""
408
 
409
+ #: includes/admin/layouts/editor-default-tpl.php:125
410
  msgid "Product Image Click"
411
  msgstr ""
412
 
413
+ #: includes/admin/layouts/editor-default-tpl.php:138
414
  msgid "Show Whole Image"
415
  msgstr ""
416
 
417
+ #: includes/admin/layouts/editor-default-tpl.php:150
418
  msgid "Open Affiliate link"
419
  msgstr ""
420
 
421
+ #: includes/admin/layouts/editor-default-tpl.php:157
422
+ #: includes/admin/layouts/editor-default-tpl.php:163
423
+ #: includes/admin/layouts/editor-default-tpl.php:187
424
+ #: includes/admin/layouts/editor-default-tpl.php:193
425
+ #: includes/admin/layouts/editor-default-tpl.php:221
426
+ #: includes/admin/layouts/editor-default-tpl.php:227
427
  msgid "Affiliate Button Text"
428
  msgstr ""
429
 
430
+ #: includes/admin/layouts/editor-default-tpl.php:169
431
+ #: includes/admin/layouts/editor-default-tpl.php:175
432
+ #: includes/admin/layouts/editor-default-tpl.php:199
433
+ #: includes/admin/layouts/editor-default-tpl.php:205
434
+ #: includes/admin/layouts/editor-default-tpl.php:233
435
+ #: includes/admin/layouts/editor-default-tpl.php:239
436
  msgid "Affiliate Link"
437
  msgstr ""
438
 
439
+ #: includes/admin/layouts/editor-default-tpl.php:181
440
  msgid "Add new link"
441
  msgstr ""
442
 
443
+ #: includes/admin/layouts/editor-default-tpl.php:253
444
+ #: includes/admin/layouts/editor-default-tpl.php:259
445
  msgid "Product Price"
446
  msgstr ""
447
 
448
+ #: includes/admin/layouts/editor-default-tpl.php:270
449
  msgid "Product Options"
450
  msgstr ""
451
 
452
+ #: includes/admin/layouts/editor-default-tpl.php:271
453
  msgid "Insert your options and their grades. Grading must be done from 0 to 100."
454
  msgstr ""
455
 
456
+ #: includes/admin/layouts/editor-default-tpl.php:276
457
  msgid "Preload Info"
458
  msgstr ""
459
 
460
+ #: includes/admin/layouts/editor-default-tpl.php:279
461
  msgid ""
462
  " In order to be able to automatically load your options from another posts, "
463
  "you need the "
464
  msgstr ""
465
 
466
+ #: includes/admin/layouts/editor-default-tpl.php:279
467
  msgid "PRO add-on"
468
  msgstr ""
469
 
470
+ #: includes/admin/layouts/editor-default-tpl.php:299
471
+ #: includes/admin/layouts/editor-default-tpl.php:341
472
+ #: includes/admin/layouts/editor-default-tpl.php:372
473
  msgid "Option"
474
  msgstr ""
475
 
476
+ #: includes/admin/layouts/editor-default-tpl.php:308
477
  msgid "Grade"
478
  msgstr ""
479
 
480
+ #: includes/admin/layouts/editor-default-tpl.php:322
481
  msgid "Pro Features"
482
  msgstr ""
483
 
484
+ #: includes/admin/layouts/editor-default-tpl.php:323
485
  msgid "Insert product's pro features below."
486
  msgstr ""
487
 
488
+ #: includes/admin/layouts/editor-default-tpl.php:354
489
  msgid "Cons Features"
490
  msgstr ""
491
 
492
+ #: includes/admin/layouts/editor-default-tpl.php:355
493
  msgid "Insert product's cons features below."
494
  msgstr ""
495
 
541
  msgid "Display Product Image :"
542
  msgstr ""
543
 
544
+ #: includes/admin/models/class-wppr-editor-model.php:268
545
  msgid "Add a product image to the review"
546
  msgstr ""
547
 
548
+ #: includes/admin/models/class-wppr-editor-model.php:269
549
  msgid "Attach the image"
550
  msgstr ""
551
 
587
  msgid "Top Products"
588
  msgstr ""
589
 
590
+ #: includes/public/layouts/style1.php:44
591
+ msgid "'s rating"
592
+ msgstr ""
593
+
594
+ #: includes/public/layouts/style2.php:61
595
+ msgid "Users score:"
596
+ msgstr ""
597
+
598
+ #: includes/public/layouts/style2.php:63
599
+ msgid "votes"
600
+ msgstr ""
601
+
602
  #. Plugin Name of the plugin/theme
603
  msgid "WP Product Review Lite"
604
  msgstr ""
package-lock.json CHANGED
@@ -1,6 +1,6 @@
1
  {
2
  "name": "wp-product-review",
3
- "version": "3.3.2",
4
  "lockfileVersion": 1,
5
  "requires": true,
6
  "dependencies": {
@@ -74,8 +74,8 @@
74
  "async": "2.6.0",
75
  "buffer-crc32": "0.2.13",
76
  "glob": "7.0.6",
77
- "lodash": "4.17.4",
78
- "readable-stream": "2.3.3",
79
  "tar-stream": "1.5.5",
80
  "walkdir": "0.0.11",
81
  "zip-stream": "1.2.0"
@@ -87,13 +87,13 @@
87
  "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==",
88
  "dev": true,
89
  "requires": {
90
- "lodash": "4.17.4"
91
  }
92
  },
93
  "lodash": {
94
- "version": "4.17.4",
95
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
96
- "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
97
  "dev": true
98
  }
99
  }
@@ -107,15 +107,15 @@
107
  "glob": "7.0.6",
108
  "graceful-fs": "4.1.11",
109
  "lazystream": "1.0.0",
110
- "lodash": "4.17.4",
111
  "normalize-path": "2.1.1",
112
- "readable-stream": "2.3.3"
113
  },
114
  "dependencies": {
115
  "lodash": {
116
- "version": "4.17.4",
117
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
118
- "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
119
  "dev": true
120
  }
121
  }
@@ -127,13 +127,13 @@
127
  "dev": true,
128
  "requires": {
129
  "delegates": "1.0.0",
130
- "readable-stream": "2.3.3"
131
  }
132
  },
133
  "argparse": {
134
- "version": "1.0.9",
135
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz",
136
- "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=",
137
  "dev": true,
138
  "requires": {
139
  "sprintf-js": "1.0.3"
@@ -231,7 +231,7 @@
231
  "dev": true,
232
  "requires": {
233
  "browserslist": "1.7.7",
234
- "caniuse-db": "1.0.30000787",
235
  "normalize-range": "0.1.2",
236
  "num2fraction": "1.2.2",
237
  "postcss": "5.2.18",
@@ -351,7 +351,7 @@
351
  "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=",
352
  "dev": true,
353
  "requires": {
354
- "readable-stream": "2.3.3"
355
  }
356
  },
357
  "block-stream": {
@@ -373,13 +373,13 @@
373
  "bytes": "2.2.0",
374
  "content-type": "1.0.4",
375
  "debug": "2.2.0",
376
- "depd": "1.1.1",
377
  "http-errors": "1.3.1",
378
  "iconv-lite": "0.4.13",
379
  "on-finished": "2.3.0",
380
  "qs": "5.2.0",
381
  "raw-body": "2.1.7",
382
- "type-is": "1.6.15"
383
  },
384
  "dependencies": {
385
  "iconv-lite": {
@@ -402,13 +402,13 @@
402
  "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=",
403
  "dev": true,
404
  "requires": {
405
- "hoek": "4.2.0"
406
  }
407
  },
408
  "brace-expansion": {
409
- "version": "1.1.8",
410
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
411
- "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
412
  "dev": true,
413
  "requires": {
414
  "balanced-match": "1.0.0",
@@ -432,8 +432,8 @@
432
  "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
433
  "dev": true,
434
  "requires": {
435
- "caniuse-db": "1.0.30000787",
436
- "electron-to-chromium": "1.3.30"
437
  }
438
  },
439
  "buffer-crc32": {
@@ -449,7 +449,7 @@
449
  "dev": true,
450
  "requires": {
451
  "file-type": "3.9.0",
452
- "readable-stream": "2.3.3",
453
  "uuid": "2.0.3",
454
  "vinyl": "1.2.0"
455
  },
@@ -532,9 +532,9 @@
532
  }
533
  },
534
  "caniuse-db": {
535
- "version": "1.0.30000787",
536
- "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000787.tgz",
537
- "integrity": "sha1-ygeigb5Taoi9f6yWuolfPPU/gRs=",
538
  "dev": true
539
  },
540
  "capture-stack-trace": {
@@ -665,10 +665,10 @@
665
  "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
666
  "dev": true
667
  },
668
- "coffee-script": {
669
  "version": "1.10.0",
670
- "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.10.0.tgz",
671
- "integrity": "sha1-EpOLz5vhlI+gBvkuDEyegXBRCMA=",
672
  "dev": true
673
  },
674
  "color-support": {
@@ -684,9 +684,9 @@
684
  "dev": true
685
  },
686
  "combined-stream": {
687
- "version": "1.0.5",
688
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz",
689
- "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=",
690
  "dev": true,
691
  "requires": {
692
  "delayed-stream": "1.0.0"
@@ -710,7 +710,7 @@
710
  "buffer-crc32": "0.2.13",
711
  "crc32-stream": "2.0.0",
712
  "normalize-path": "2.1.1",
713
- "readable-stream": "2.3.3"
714
  }
715
  },
716
  "concat-map": {
@@ -726,7 +726,7 @@
726
  "dev": true,
727
  "requires": {
728
  "inherits": "2.0.3",
729
- "readable-stream": "2.3.3",
730
  "typedarray": "0.0.6"
731
  }
732
  },
@@ -783,7 +783,7 @@
783
  "dev": true,
784
  "requires": {
785
  "crc": "3.5.0",
786
- "readable-stream": "2.3.3"
787
  }
788
  },
789
  "create-error-class": {
@@ -810,7 +810,7 @@
810
  "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==",
811
  "dev": true,
812
  "requires": {
813
- "hoek": "4.2.0"
814
  }
815
  }
816
  }
@@ -821,11 +821,19 @@
821
  "integrity": "sha1-g+6Qids8JUvsHpjkmNmqzxGtzFQ=",
822
  "dev": true,
823
  "requires": {
824
- "coffee-script": "1.10.0",
825
  "cson-parser": "1.3.5",
826
  "extract-opts": "3.3.1",
827
  "requirefresh": "2.1.0",
828
  "safefs": "4.1.0"
 
 
 
 
 
 
 
 
829
  }
830
  },
831
  "cson-parser": {
@@ -834,7 +842,15 @@
834
  "integrity": "sha1-fsZ14DkUVTO/KmqFYHPxWZ2cLSQ=",
835
  "dev": true,
836
  "requires": {
837
- "coffee-script": "1.10.0"
 
 
 
 
 
 
 
 
838
  }
839
  },
840
  "cssbeautify": {
@@ -973,6 +989,16 @@
973
  "vinyl-fs": "2.4.4"
974
  }
975
  },
 
 
 
 
 
 
 
 
 
 
976
  "decompress-tar": {
977
  "version": "3.1.0",
978
  "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-3.1.0.tgz",
@@ -1109,7 +1135,7 @@
1109
  "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
1110
  "dev": true,
1111
  "requires": {
1112
- "readable-stream": "2.3.3",
1113
  "xtend": "4.0.1"
1114
  }
1115
  }
@@ -1134,9 +1160,9 @@
1134
  "dev": true
1135
  },
1136
  "depd": {
1137
- "version": "1.1.1",
1138
- "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz",
1139
- "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=",
1140
  "dev": true
1141
  },
1142
  "detect-libc": {
@@ -1217,7 +1243,7 @@
1217
  "is-url": "1.2.2",
1218
  "object-assign": "4.1.1",
1219
  "read-all-stream": "3.1.0",
1220
- "readable-stream": "2.3.3",
1221
  "stream-combiner2": "1.1.1",
1222
  "vinyl": "1.2.0",
1223
  "vinyl-fs": "2.4.4",
@@ -1230,18 +1256,18 @@
1230
  "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=",
1231
  "dev": true,
1232
  "requires": {
1233
- "readable-stream": "2.3.3"
1234
  }
1235
  },
1236
  "duplexify": {
1237
- "version": "3.5.1",
1238
- "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.1.tgz",
1239
- "integrity": "sha512-j5goxHTwVED1Fpe5hh3q9R93Kip0Bg2KVAt4f8CEYM3UEwYcPSvWbXaUQOzdX/HtiNomipv+gU7ASQPDbV7pGQ==",
1240
  "dev": true,
1241
  "requires": {
1242
- "end-of-stream": "1.4.0",
1243
  "inherits": "2.0.3",
1244
- "readable-stream": "2.3.3",
1245
  "stream-shift": "1.0.0"
1246
  }
1247
  },
@@ -1261,8 +1287,8 @@
1261
  "integrity": "sha1-LDXkPqCGUW95l8+At6pk1VpKRIQ=",
1262
  "dev": true,
1263
  "requires": {
1264
- "editions": "1.3.3",
1265
- "typechecker": "4.4.1"
1266
  }
1267
  },
1268
  "ecc-jsbn": {
@@ -1276,9 +1302,9 @@
1276
  }
1277
  },
1278
  "editions": {
1279
- "version": "1.3.3",
1280
- "resolved": "https://registry.npmjs.org/editions/-/editions-1.3.3.tgz",
1281
- "integrity": "sha1-CQcQG92iD6w8vjNMJ8vQaI3Jmls=",
1282
  "dev": true
1283
  },
1284
  "ee-first": {
@@ -1287,20 +1313,11 @@
1287
  "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
1288
  "dev": true
1289
  },
1290
- "electron-releases": {
1291
- "version": "2.1.0",
1292
- "resolved": "https://registry.npmjs.org/electron-releases/-/electron-releases-2.1.0.tgz",
1293
- "integrity": "sha512-cyKFD1bTE/UgULXfaueIN1k5EPFzs+FRc/rvCY5tIynefAPqopQEgjr0EzY+U3Dqrk/G4m9tXSPuZ77v6dL/Rw==",
1294
- "dev": true
1295
- },
1296
  "electron-to-chromium": {
1297
- "version": "1.3.30",
1298
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.30.tgz",
1299
- "integrity": "sha512-zx1Prv7kYLfc4OA60FhxGbSo4qrEjgSzpo1/37i7l9ltXPYOoQBtjQxY9KmsgfHnBxHlBGXwLlsbt/gub1w5lw==",
1300
- "dev": true,
1301
- "requires": {
1302
- "electron-releases": "2.1.0"
1303
- }
1304
  },
1305
  "encoding": {
1306
  "version": "0.1.12",
@@ -1312,9 +1329,9 @@
1312
  }
1313
  },
1314
  "end-of-stream": {
1315
- "version": "1.4.0",
1316
- "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz",
1317
- "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=",
1318
  "dev": true,
1319
  "requires": {
1320
  "once": "1.4.0"
@@ -1455,8 +1472,8 @@
1455
  "dev": true,
1456
  "requires": {
1457
  "eachr": "3.2.0",
1458
- "editions": "1.3.3",
1459
- "typechecker": "4.4.1"
1460
  }
1461
  },
1462
  "extsprintf": {
@@ -1639,14 +1656,14 @@
1639
  "dev": true
1640
  },
1641
  "form-data": {
1642
- "version": "2.3.1",
1643
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz",
1644
- "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=",
1645
  "dev": true,
1646
  "requires": {
1647
  "asynckit": "0.4.0",
1648
- "combined-stream": "1.0.5",
1649
- "mime-types": "2.1.17"
1650
  }
1651
  },
1652
  "fs.realpath": {
@@ -1698,7 +1715,7 @@
1698
  "integrity": "sha1-iUhUSRvFkbDxR9euVw9cZ4tyVus=",
1699
  "dev": true,
1700
  "requires": {
1701
- "rc": "1.2.2"
1702
  }
1703
  },
1704
  "get-stdin": {
@@ -1848,7 +1865,7 @@
1848
  "dev": true,
1849
  "requires": {
1850
  "glob": "7.1.2",
1851
- "lodash": "4.17.4",
1852
  "minimatch": "3.0.4"
1853
  },
1854
  "dependencies": {
@@ -1867,17 +1884,17 @@
1867
  }
1868
  },
1869
  "lodash": {
1870
- "version": "4.17.4",
1871
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
1872
- "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
1873
  "dev": true
1874
  }
1875
  }
1876
  },
1877
  "glogg": {
1878
- "version": "1.0.0",
1879
- "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.0.tgz",
1880
- "integrity": "sha1-f+DxmfV6yQbPUS/urY+Q7kooT8U=",
1881
  "dev": true,
1882
  "requires": {
1883
  "sparkles": "1.0.0"
@@ -1906,7 +1923,7 @@
1906
  "parse-json": "2.2.0",
1907
  "pinkie-promise": "2.0.1",
1908
  "read-all-stream": "3.1.0",
1909
- "readable-stream": "2.3.3",
1910
  "timed-out": "3.1.3",
1911
  "unzip-response": "1.0.2",
1912
  "url-parse-lax": "1.0.0"
@@ -1925,12 +1942,12 @@
1925
  "dev": true
1926
  },
1927
  "grunt": {
1928
- "version": "1.0.1",
1929
- "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.0.1.tgz",
1930
- "integrity": "sha1-6HeHZOlEsY8yuw8QuQeEdcnftWs=",
1931
  "dev": true,
1932
  "requires": {
1933
- "coffee-script": "1.10.0",
1934
  "dateformat": "1.0.12",
1935
  "eventemitter2": "0.4.14",
1936
  "exit": "0.1.2",
@@ -2005,15 +2022,15 @@
2005
  "archiver": "1.3.0",
2006
  "chalk": "1.1.3",
2007
  "iltorb": "1.3.10",
2008
- "lodash": "4.17.4",
2009
  "pretty-bytes": "4.0.2",
2010
  "stream-buffers": "2.2.0"
2011
  },
2012
  "dependencies": {
2013
  "lodash": {
2014
- "version": "4.17.4",
2015
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
2016
- "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
2017
  "dev": true
2018
  }
2019
  }
@@ -2775,15 +2792,15 @@
2775
  "dev": true,
2776
  "requires": {
2777
  "glob": "7.0.6",
2778
- "lodash": "4.17.4",
2779
  "md5-file": "2.0.7",
2780
  "promised-io": "0.3.5"
2781
  },
2782
  "dependencies": {
2783
  "lodash": {
2784
- "version": "4.17.4",
2785
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
2786
- "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
2787
  "dev": true
2788
  }
2789
  }
@@ -2800,7 +2817,7 @@
2800
  "integrity": "sha512-FMRde7kCY1T2zCBAg4ZbLR9GbKDX60xCIZS89kCyk29LLQ/nbRSgXY+782HjT+HfC21kszcpWttfCGq1eERHPA==",
2801
  "dev": true,
2802
  "requires": {
2803
- "grunt": "1.0.1",
2804
  "semver": "4.3.6"
2805
  },
2806
  "dependencies": {
@@ -2820,13 +2837,13 @@
2820
  "requires": {
2821
  "cssbeautify": "0.3.1",
2822
  "csscomb": "3.1.8",
2823
- "lodash": "4.17.4"
2824
  },
2825
  "dependencies": {
2826
  "lodash": {
2827
- "version": "4.17.4",
2828
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
2829
- "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
2830
  "dev": true
2831
  }
2832
  }
@@ -3160,7 +3177,7 @@
3160
  "archive-type": "3.2.0",
3161
  "decompress": "3.0.0",
3162
  "gulp-util": "3.0.8",
3163
- "readable-stream": "2.3.3"
3164
  }
3165
  },
3166
  "gulp-rename": {
@@ -3188,7 +3205,7 @@
3188
  "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
3189
  "dev": true,
3190
  "requires": {
3191
- "readable-stream": "2.3.3",
3192
  "xtend": "4.0.1"
3193
  }
3194
  }
@@ -3238,7 +3255,7 @@
3238
  "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
3239
  "dev": true,
3240
  "requires": {
3241
- "readable-stream": "2.3.3",
3242
  "xtend": "4.0.1"
3243
  }
3244
  },
@@ -3261,7 +3278,7 @@
3261
  "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=",
3262
  "dev": true,
3263
  "requires": {
3264
- "glogg": "1.0.0"
3265
  }
3266
  },
3267
  "har-schema": {
@@ -3324,14 +3341,14 @@
3324
  "requires": {
3325
  "boom": "4.3.1",
3326
  "cryptiles": "3.1.2",
3327
- "hoek": "4.2.0",
3328
  "sntp": "2.1.0"
3329
  }
3330
  },
3331
  "hoek": {
3332
- "version": "4.2.0",
3333
- "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz",
3334
- "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==",
3335
  "dev": true
3336
  },
3337
  "hooker": {
@@ -3396,9 +3413,9 @@
3396
  }
3397
  },
3398
  "http-parser-js": {
3399
- "version": "0.4.9",
3400
- "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.9.tgz",
3401
- "integrity": "sha1-6hoE+2St/wJC6ZdPKX3Uw8rSceE=",
3402
  "dev": true
3403
  },
3404
  "http-signature": {
@@ -3428,7 +3445,7 @@
3428
  "detect-libc": "0.2.0",
3429
  "nan": "2.8.0",
3430
  "node-gyp": "3.6.2",
3431
- "prebuild-install": "2.4.1"
3432
  }
3433
  },
3434
  "imagemin": {
@@ -3444,7 +3461,7 @@
3444
  "imagemin-optipng": "4.3.0",
3445
  "imagemin-svgo": "4.2.1",
3446
  "optional": "0.1.4",
3447
- "readable-stream": "2.3.3",
3448
  "stream-combiner2": "1.1.1",
3449
  "vinyl-fs": "2.4.4"
3450
  }
@@ -3480,7 +3497,7 @@
3480
  "dev": true,
3481
  "optional": true,
3482
  "requires": {
3483
- "readable-stream": "2.3.3",
3484
  "xtend": "4.0.1"
3485
  }
3486
  }
@@ -3518,7 +3535,7 @@
3518
  "dev": true,
3519
  "optional": true,
3520
  "requires": {
3521
- "readable-stream": "2.3.3",
3522
  "xtend": "4.0.1"
3523
  }
3524
  }
@@ -3831,9 +3848,9 @@
3831
  }
3832
  },
3833
  "js-base64": {
3834
- "version": "2.4.0",
3835
- "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.0.tgz",
3836
- "integrity": "sha512-Wehd+7Pf9tFvGb+ydPm9TjYjV8X1YHOVyG8QyELZxEMqOhemVwGRmoG8iQ/soqI3n8v4xn59zaLxiCJiaaRzKA==",
3837
  "dev": true
3838
  },
3839
  "js-yaml": {
@@ -3842,7 +3859,7 @@
3842
  "integrity": "sha1-A3fDgBfKvHMisNH7zSWkkWQfL74=",
3843
  "dev": true,
3844
  "requires": {
3845
- "argparse": "1.0.9",
3846
  "esprima": "2.7.3"
3847
  }
3848
  },
@@ -3950,13 +3967,13 @@
3950
  "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=",
3951
  "dev": true,
3952
  "requires": {
3953
- "readable-stream": "2.3.3"
3954
  }
3955
  },
3956
  "livereload-js": {
3957
- "version": "2.2.2",
3958
- "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.2.2.tgz",
3959
- "integrity": "sha1-bIclfmSKtHW8JOoldFftzB+NC8I=",
3960
  "dev": true
3961
  },
3962
  "load-grunt-config": {
@@ -3992,7 +4009,7 @@
3992
  "integrity": "sha1-a+GyP2JJ9T0pM3D9TRqqY84bTrA=",
3993
  "dev": true,
3994
  "requires": {
3995
- "argparse": "1.0.9",
3996
  "esprima": "2.7.3",
3997
  "inherit": "2.2.6"
3998
  }
@@ -4260,7 +4277,7 @@
4260
  "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=",
4261
  "dev": true,
4262
  "requires": {
4263
- "readable-stream": "2.3.3"
4264
  }
4265
  },
4266
  "micromatch": {
@@ -4302,27 +4319,34 @@
4302
  }
4303
  },
4304
  "mime-db": {
4305
- "version": "1.30.0",
4306
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz",
4307
- "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=",
4308
  "dev": true
4309
  },
4310
  "mime-types": {
4311
- "version": "2.1.17",
4312
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz",
4313
- "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=",
4314
  "dev": true,
4315
  "requires": {
4316
- "mime-db": "1.30.0"
4317
  }
4318
  },
 
 
 
 
 
 
 
4319
  "minimatch": {
4320
  "version": "3.0.4",
4321
  "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
4322
  "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
4323
  "dev": true,
4324
  "requires": {
4325
- "brace-expansion": "1.1.8"
4326
  }
4327
  },
4328
  "minimist": {
@@ -4418,13 +4442,13 @@
4418
  "optional": true
4419
  },
4420
  "node-abi": {
4421
- "version": "2.1.2",
4422
- "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.1.2.tgz",
4423
- "integrity": "sha512-hmUtb8m75RSi7N+zZLYqe75XDvZB+6LyTBPkj2DConvNgQet2e3BIqEwe1LLvqMrfyjabuT5ZOrTioLCH1HTdA==",
4424
  "dev": true,
4425
  "optional": true,
4426
  "requires": {
4427
- "semver": "5.4.1"
4428
  }
4429
  },
4430
  "node-gyp": {
@@ -4441,7 +4465,7 @@
4441
  "mkdirp": "0.5.1",
4442
  "nopt": "3.0.6",
4443
  "npmlog": "4.1.2",
4444
- "osenv": "0.1.4",
4445
  "request": "2.83.0",
4446
  "rimraf": "2.2.8",
4447
  "semver": "5.3.0",
@@ -4494,7 +4518,7 @@
4494
  "requires": {
4495
  "hosted-git-info": "2.5.0",
4496
  "is-builtin-module": "1.0.0",
4497
- "semver": "5.4.1",
4498
  "validate-npm-package-license": "3.0.1"
4499
  }
4500
  },
@@ -4608,7 +4632,7 @@
4608
  "dev": true,
4609
  "requires": {
4610
  "is-stream": "1.1.0",
4611
- "readable-stream": "2.3.3"
4612
  }
4613
  },
4614
  "os-filter-obj": {
@@ -4631,9 +4655,9 @@
4631
  "dev": true
4632
  },
4633
  "osenv": {
4634
- "version": "0.1.4",
4635
- "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz",
4636
- "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=",
4637
  "dev": true,
4638
  "optional": true,
4639
  "requires": {
@@ -4778,7 +4802,7 @@
4778
  "dev": true,
4779
  "requires": {
4780
  "chalk": "1.1.3",
4781
- "js-base64": "2.4.0",
4782
  "source-map": "0.5.7",
4783
  "supports-color": "3.2.3"
4784
  },
@@ -4801,26 +4825,36 @@
4801
  "dev": true
4802
  },
4803
  "prebuild-install": {
4804
- "version": "2.4.1",
4805
- "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-2.4.1.tgz",
4806
- "integrity": "sha512-99TyEFYTTkBWANT+mwSptmLb9ZCLQ6qKIUE36fXSIOtShB0JNprL2hzBD8F1yIuT9btjFrFEwbRHXhqDi1HmRA==",
4807
  "dev": true,
4808
  "optional": true,
4809
  "requires": {
 
4810
  "expand-template": "1.1.0",
4811
  "github-from-package": "0.0.0",
4812
  "minimist": "1.2.0",
4813
  "mkdirp": "0.5.1",
4814
- "node-abi": "2.1.2",
4815
  "noop-logger": "0.1.1",
4816
  "npmlog": "4.1.2",
4817
  "os-homedir": "1.0.2",
4818
- "pump": "1.0.3",
4819
- "rc": "1.2.2",
4820
- "simple-get": "1.4.3",
4821
  "tar-fs": "1.16.0",
4822
  "tunnel-agent": "0.6.0",
4823
- "xtend": "4.0.1"
 
 
 
 
 
 
 
 
 
4824
  }
4825
  },
4826
  "prepend-http": {
@@ -4853,9 +4887,9 @@
4853
  }
4854
  },
4855
  "process-nextick-args": {
4856
- "version": "1.0.7",
4857
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
4858
- "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
4859
  "dev": true
4860
  },
4861
  "promised-io": {
@@ -4865,12 +4899,13 @@
4865
  "dev": true
4866
  },
4867
  "pump": {
4868
- "version": "1.0.3",
4869
- "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz",
4870
- "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==",
4871
  "dev": true,
 
4872
  "requires": {
4873
- "end-of-stream": "1.4.0",
4874
  "once": "1.4.0"
4875
  }
4876
  },
@@ -4960,9 +4995,9 @@
4960
  }
4961
  },
4962
  "rc": {
4963
- "version": "1.2.2",
4964
- "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.2.tgz",
4965
- "integrity": "sha1-2M6ctX6NZNnHut2YdsfDTL48cHc=",
4966
  "dev": true,
4967
  "requires": {
4968
  "deep-extend": "0.4.2",
@@ -4978,7 +5013,7 @@
4978
  "dev": true,
4979
  "requires": {
4980
  "pinkie-promise": "2.0.1",
4981
- "readable-stream": "2.3.3"
4982
  }
4983
  },
4984
  "read-pkg": {
@@ -5003,15 +5038,15 @@
5003
  }
5004
  },
5005
  "readable-stream": {
5006
- "version": "2.3.3",
5007
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
5008
- "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
5009
  "dev": true,
5010
  "requires": {
5011
  "core-util-is": "1.0.2",
5012
  "inherits": "2.0.3",
5013
  "isarray": "1.0.0",
5014
- "process-nextick-args": "1.0.7",
5015
  "safe-buffer": "5.1.1",
5016
  "string_decoder": "1.0.3",
5017
  "util-deprecate": "1.0.2"
@@ -5078,17 +5113,17 @@
5078
  "aws-sign2": "0.7.0",
5079
  "aws4": "1.6.0",
5080
  "caseless": "0.12.0",
5081
- "combined-stream": "1.0.5",
5082
  "extend": "3.0.1",
5083
  "forever-agent": "0.6.1",
5084
- "form-data": "2.3.1",
5085
  "har-validator": "5.0.3",
5086
  "hawk": "6.0.2",
5087
  "http-signature": "1.2.0",
5088
  "is-typedarray": "1.0.0",
5089
  "isstream": "0.1.2",
5090
  "json-stringify-safe": "5.0.1",
5091
- "mime-types": "2.1.17",
5092
  "oauth-sign": "0.8.2",
5093
  "performance-now": "2.1.0",
5094
  "qs": "6.5.1",
@@ -5096,7 +5131,7 @@
5096
  "stringstream": "0.0.5",
5097
  "tough-cookie": "2.3.3",
5098
  "tunnel-agent": "0.6.0",
5099
- "uuid": "3.1.0"
5100
  }
5101
  },
5102
  "requirefresh": {
@@ -5105,7 +5140,7 @@
5105
  "integrity": "sha1-dC3Mwg86lpGNZsbxWX3I/+vE9vU=",
5106
  "dev": true,
5107
  "requires": {
5108
- "editions": "1.3.3"
5109
  }
5110
  },
5111
  "resolve": {
@@ -5149,7 +5184,7 @@
5149
  "integrity": "sha1-+CrrS9165R9lPrIPZyizBYyNZEU=",
5150
  "dev": true,
5151
  "requires": {
5152
- "editions": "1.3.3",
5153
  "graceful-fs": "4.1.11"
5154
  }
5155
  },
@@ -5170,9 +5205,9 @@
5170
  }
5171
  },
5172
  "semver": {
5173
- "version": "5.4.1",
5174
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz",
5175
- "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==",
5176
  "dev": true
5177
  },
5178
  "semver-regex": {
@@ -5189,7 +5224,7 @@
5189
  "dev": true,
5190
  "optional": true,
5191
  "requires": {
5192
- "semver": "5.4.1"
5193
  }
5194
  },
5195
  "set-blocking": {
@@ -5222,16 +5257,23 @@
5222
  "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
5223
  "dev": true
5224
  },
 
 
 
 
 
 
 
5225
  "simple-get": {
5226
- "version": "1.4.3",
5227
- "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-1.4.3.tgz",
5228
- "integrity": "sha1-6XVe2kB+ltpAxeUVjJ6jezO+y+s=",
5229
  "dev": true,
5230
  "optional": true,
5231
  "requires": {
 
5232
  "once": "1.4.0",
5233
- "unzip-response": "1.0.2",
5234
- "xtend": "4.0.1"
5235
  }
5236
  },
5237
  "sntp": {
@@ -5240,7 +5282,7 @@
5240
  "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==",
5241
  "dev": true,
5242
  "requires": {
5243
- "hoek": "4.2.0"
5244
  }
5245
  },
5246
  "source-map": {
@@ -5335,7 +5377,7 @@
5335
  "dev": true,
5336
  "requires": {
5337
  "duplexer2": "0.1.4",
5338
- "readable-stream": "2.3.3"
5339
  }
5340
  },
5341
  "stream-shift": {
@@ -5474,7 +5516,7 @@
5474
  "dev": true,
5475
  "optional": true,
5476
  "requires": {
5477
- "argparse": "1.0.9",
5478
  "esprima": "2.7.3"
5479
  }
5480
  }
@@ -5503,6 +5545,19 @@
5503
  "mkdirp": "0.5.1",
5504
  "pump": "1.0.3",
5505
  "tar-stream": "1.5.5"
 
 
 
 
 
 
 
 
 
 
 
 
 
5506
  }
5507
  },
5508
  "tar-stream": {
@@ -5512,8 +5567,8 @@
5512
  "dev": true,
5513
  "requires": {
5514
  "bl": "1.2.1",
5515
- "end-of-stream": "1.4.0",
5516
- "readable-stream": "2.3.3",
5517
  "xtend": "4.0.1"
5518
  }
5519
  },
@@ -5593,7 +5648,7 @@
5593
  "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
5594
  "dev": true,
5595
  "requires": {
5596
- "readable-stream": "2.3.3",
5597
  "xtend": "4.0.1"
5598
  }
5599
  }
@@ -5641,7 +5696,7 @@
5641
  "body-parser": "1.14.2",
5642
  "debug": "2.2.0",
5643
  "faye-websocket": "0.10.0",
5644
- "livereload-js": "2.2.2",
5645
  "parseurl": "1.3.2",
5646
  "qs": "5.1.0"
5647
  },
@@ -5704,22 +5759,22 @@
5704
  "optional": true
5705
  },
5706
  "type-is": {
5707
- "version": "1.6.15",
5708
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz",
5709
- "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=",
5710
  "dev": true,
5711
  "requires": {
5712
  "media-typer": "0.3.0",
5713
- "mime-types": "2.1.17"
5714
  }
5715
  },
5716
  "typechecker": {
5717
- "version": "4.4.1",
5718
- "resolved": "https://registry.npmjs.org/typechecker/-/typechecker-4.4.1.tgz",
5719
- "integrity": "sha1-+XuV9RsDhBchLWd9RaNz7nvO1+Y=",
5720
  "dev": true,
5721
  "requires": {
5722
- "editions": "1.3.3"
5723
  }
5724
  },
5725
  "typedarray": {
@@ -5788,9 +5843,9 @@
5788
  "dev": true
5789
  },
5790
  "uuid": {
5791
- "version": "3.1.0",
5792
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz",
5793
- "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==",
5794
  "dev": true
5795
  },
5796
  "vali-date": {
@@ -5838,7 +5893,7 @@
5838
  "dev": true,
5839
  "requires": {
5840
  "object-assign": "4.1.1",
5841
- "readable-stream": "2.3.3"
5842
  }
5843
  },
5844
  "vinyl-fs": {
@@ -5847,7 +5902,7 @@
5847
  "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=",
5848
  "dev": true,
5849
  "requires": {
5850
- "duplexify": "3.5.1",
5851
  "glob-stream": "5.3.5",
5852
  "graceful-fs": "4.1.11",
5853
  "gulp-sourcemaps": "1.6.0",
@@ -5857,7 +5912,7 @@
5857
  "merge-stream": "1.0.1",
5858
  "mkdirp": "0.5.1",
5859
  "object-assign": "4.1.1",
5860
- "readable-stream": "2.3.3",
5861
  "strip-bom": "2.0.0",
5862
  "strip-bom-stream": "1.0.0",
5863
  "through2": "2.0.3",
@@ -5872,7 +5927,7 @@
5872
  "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
5873
  "dev": true,
5874
  "requires": {
5875
- "readable-stream": "2.3.3",
5876
  "xtend": "4.0.1"
5877
  }
5878
  }
@@ -5948,7 +6003,7 @@
5948
  "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=",
5949
  "dev": true,
5950
  "requires": {
5951
- "http-parser-js": "0.4.9",
5952
  "websocket-extensions": "0.1.3"
5953
  }
5954
  },
@@ -5974,6 +6029,13 @@
5974
  "isexe": "2.0.0"
5975
  }
5976
  },
 
 
 
 
 
 
 
5977
  "wide-align": {
5978
  "version": "1.1.2",
5979
  "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz",
@@ -6030,14 +6092,14 @@
6030
  "requires": {
6031
  "archiver-utils": "1.3.0",
6032
  "compress-commons": "1.2.2",
6033
- "lodash": "4.17.4",
6034
- "readable-stream": "2.3.3"
6035
  },
6036
  "dependencies": {
6037
  "lodash": {
6038
- "version": "4.17.4",
6039
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz",
6040
- "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=",
6041
  "dev": true
6042
  }
6043
  }
1
  {
2
  "name": "wp-product-review",
3
+ "version": "3.4.0",
4
  "lockfileVersion": 1,
5
  "requires": true,
6
  "dependencies": {
74
  "async": "2.6.0",
75
  "buffer-crc32": "0.2.13",
76
  "glob": "7.0.6",
77
+ "lodash": "4.17.5",
78
+ "readable-stream": "2.3.4",
79
  "tar-stream": "1.5.5",
80
  "walkdir": "0.0.11",
81
  "zip-stream": "1.2.0"
87
  "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==",
88
  "dev": true,
89
  "requires": {
90
+ "lodash": "4.17.5"
91
  }
92
  },
93
  "lodash": {
94
+ "version": "4.17.5",
95
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz",
96
+ "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==",
97
  "dev": true
98
  }
99
  }
107
  "glob": "7.0.6",
108
  "graceful-fs": "4.1.11",
109
  "lazystream": "1.0.0",
110
+ "lodash": "4.17.5",
111
  "normalize-path": "2.1.1",
112
+ "readable-stream": "2.3.4"
113
  },
114
  "dependencies": {
115
  "lodash": {
116
+ "version": "4.17.5",
117
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz",
118
+ "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==",
119
  "dev": true
120
  }
121
  }
127
  "dev": true,
128
  "requires": {
129
  "delegates": "1.0.0",
130
+ "readable-stream": "2.3.4"
131
  }
132
  },
133
  "argparse": {
134
+ "version": "1.0.10",
135
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
136
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
137
  "dev": true,
138
  "requires": {
139
  "sprintf-js": "1.0.3"
231
  "dev": true,
232
  "requires": {
233
  "browserslist": "1.7.7",
234
+ "caniuse-db": "1.0.30000810",
235
  "normalize-range": "0.1.2",
236
  "num2fraction": "1.2.2",
237
  "postcss": "5.2.18",
351
  "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=",
352
  "dev": true,
353
  "requires": {
354
+ "readable-stream": "2.3.4"
355
  }
356
  },
357
  "block-stream": {
373
  "bytes": "2.2.0",
374
  "content-type": "1.0.4",
375
  "debug": "2.2.0",
376
+ "depd": "1.1.2",
377
  "http-errors": "1.3.1",
378
  "iconv-lite": "0.4.13",
379
  "on-finished": "2.3.0",
380
  "qs": "5.2.0",
381
  "raw-body": "2.1.7",
382
+ "type-is": "1.6.16"
383
  },
384
  "dependencies": {
385
  "iconv-lite": {
402
  "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=",
403
  "dev": true,
404
  "requires": {
405
+ "hoek": "4.2.1"
406
  }
407
  },
408
  "brace-expansion": {
409
+ "version": "1.1.11",
410
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
411
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
412
  "dev": true,
413
  "requires": {
414
  "balanced-match": "1.0.0",
432
  "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
433
  "dev": true,
434
  "requires": {
435
+ "caniuse-db": "1.0.30000810",
436
+ "electron-to-chromium": "1.3.33"
437
  }
438
  },
439
  "buffer-crc32": {
449
  "dev": true,
450
  "requires": {
451
  "file-type": "3.9.0",
452
+ "readable-stream": "2.3.4",
453
  "uuid": "2.0.3",
454
  "vinyl": "1.2.0"
455
  },
532
  }
533
  },
534
  "caniuse-db": {
535
+ "version": "1.0.30000810",
536
+ "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000810.tgz",
537
+ "integrity": "sha1-vSWDDEHvq2Qzmi44H0lnc0PIRQk=",
538
  "dev": true
539
  },
540
  "capture-stack-trace": {
665
  "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
666
  "dev": true
667
  },
668
+ "coffeescript": {
669
  "version": "1.10.0",
670
+ "resolved": "https://registry.npmjs.org/coffeescript/-/coffeescript-1.10.0.tgz",
671
+ "integrity": "sha1-56qDAZF+9iGzXYo580jc3R234z4=",
672
  "dev": true
673
  },
674
  "color-support": {
684
  "dev": true
685
  },
686
  "combined-stream": {
687
+ "version": "1.0.6",
688
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
689
+ "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
690
  "dev": true,
691
  "requires": {
692
  "delayed-stream": "1.0.0"
710
  "buffer-crc32": "0.2.13",
711
  "crc32-stream": "2.0.0",
712
  "normalize-path": "2.1.1",
713
+ "readable-stream": "2.3.4"
714
  }
715
  },
716
  "concat-map": {
726
  "dev": true,
727
  "requires": {
728
  "inherits": "2.0.3",
729
+ "readable-stream": "2.3.4",
730
  "typedarray": "0.0.6"
731
  }
732
  },
783
  "dev": true,
784
  "requires": {
785
  "crc": "3.5.0",
786
+ "readable-stream": "2.3.4"
787
  }
788
  },
789
  "create-error-class": {
810
  "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==",
811
  "dev": true,
812
  "requires": {
813
+ "hoek": "4.2.1"
814
  }
815
  }
816
  }
821
  "integrity": "sha1-g+6Qids8JUvsHpjkmNmqzxGtzFQ=",
822
  "dev": true,
823
  "requires": {
824
+ "coffee-script": "1.12.7",
825
  "cson-parser": "1.3.5",
826
  "extract-opts": "3.3.1",
827
  "requirefresh": "2.1.0",
828
  "safefs": "4.1.0"
829
+ },
830
+ "dependencies": {
831
+ "coffee-script": {
832
+ "version": "1.12.7",
833
+ "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.12.7.tgz",
834
+ "integrity": "sha512-fLeEhqwymYat/MpTPUjSKHVYYl0ec2mOyALEMLmzr5i1isuG+6jfI2j2d5oBO3VIzgUXgBVIcOT9uH1TFxBckw==",
835
+ "dev": true
836
+ }
837
  }
838
  },
839
  "cson-parser": {
842
  "integrity": "sha1-fsZ14DkUVTO/KmqFYHPxWZ2cLSQ=",
843
  "dev": true,
844
  "requires": {
845
+ "coffee-script": "1.12.7"
846
+ },
847
+ "dependencies": {
848
+ "coffee-script": {
849
+ "version": "1.12.7",
850
+ "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.12.7.tgz",
851
+ "integrity": "sha512-fLeEhqwymYat/MpTPUjSKHVYYl0ec2mOyALEMLmzr5i1isuG+6jfI2j2d5oBO3VIzgUXgBVIcOT9uH1TFxBckw==",
852
+ "dev": true
853
+ }
854
  }
855
  },
856
  "cssbeautify": {
989
  "vinyl-fs": "2.4.4"
990
  }
991
  },
992
+ "decompress-response": {
993
+ "version": "3.3.0",
994
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
995
+ "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=",
996
+ "dev": true,
997
+ "optional": true,
998
+ "requires": {
999
+ "mimic-response": "1.0.0"
1000
+ }
1001
+ },
1002
  "decompress-tar": {
1003
  "version": "3.1.0",
1004
  "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-3.1.0.tgz",
1135
  "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
1136
  "dev": true,
1137
  "requires": {
1138
+ "readable-stream": "2.3.4",
1139
  "xtend": "4.0.1"
1140
  }
1141
  }
1160
  "dev": true
1161
  },
1162
  "depd": {
1163
+ "version": "1.1.2",
1164
+ "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
1165
+ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
1166
  "dev": true
1167
  },
1168
  "detect-libc": {
1243
  "is-url": "1.2.2",
1244
  "object-assign": "4.1.1",
1245
  "read-all-stream": "3.1.0",
1246
+ "readable-stream": "2.3.4",
1247
  "stream-combiner2": "1.1.1",
1248
  "vinyl": "1.2.0",
1249
  "vinyl-fs": "2.4.4",
1256
  "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=",
1257
  "dev": true,
1258
  "requires": {
1259
+ "readable-stream": "2.3.4"
1260
  }
1261
  },
1262
  "duplexify": {
1263
+ "version": "3.5.3",
1264
+ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.3.tgz",
1265
+ "integrity": "sha512-g8ID9OroF9hKt2POf8YLayy+9594PzmM3scI00/uBXocX3TWNgoB67hjzkFe9ITAbQOne/lLdBxHXvYUM4ZgGA==",
1266
  "dev": true,
1267
  "requires": {
1268
+ "end-of-stream": "1.4.1",
1269
  "inherits": "2.0.3",
1270
+ "readable-stream": "2.3.4",
1271
  "stream-shift": "1.0.0"
1272
  }
1273
  },
1287
  "integrity": "sha1-LDXkPqCGUW95l8+At6pk1VpKRIQ=",
1288
  "dev": true,
1289
  "requires": {
1290
+ "editions": "1.3.4",
1291
+ "typechecker": "4.5.0"
1292
  }
1293
  },
1294
  "ecc-jsbn": {
1302
  }
1303
  },
1304
  "editions": {
1305
+ "version": "1.3.4",
1306
+ "resolved": "https://registry.npmjs.org/editions/-/editions-1.3.4.tgz",
1307
+ "integrity": "sha512-gzao+mxnYDzIysXKMQi/+M1mjy/rjestjg6OPoYTtI+3Izp23oiGZitsl9lPDPiTGXbcSIk1iJWhliSaglxnUg==",
1308
  "dev": true
1309
  },
1310
  "ee-first": {
1313
  "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
1314
  "dev": true
1315
  },
 
 
 
 
 
 
1316
  "electron-to-chromium": {
1317
+ "version": "1.3.33",
1318
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.33.tgz",
1319
+ "integrity": "sha1-vwBwPWKnxlI4E2V4w1LWxcBCpUU=",
1320
+ "dev": true
 
 
 
1321
  },
1322
  "encoding": {
1323
  "version": "0.1.12",
1329
  }
1330
  },
1331
  "end-of-stream": {
1332
+ "version": "1.4.1",
1333
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
1334
+ "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
1335
  "dev": true,
1336
  "requires": {
1337
  "once": "1.4.0"
1472
  "dev": true,
1473
  "requires": {
1474
  "eachr": "3.2.0",
1475
+ "editions": "1.3.4",
1476
+ "typechecker": "4.5.0"
1477
  }
1478
  },
1479
  "extsprintf": {
1656
  "dev": true
1657
  },
1658
  "form-data": {
1659
+ "version": "2.3.2",
1660
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz",
1661
+ "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=",
1662
  "dev": true,
1663
  "requires": {
1664
  "asynckit": "0.4.0",
1665
+ "combined-stream": "1.0.6",
1666
+ "mime-types": "2.1.18"
1667
  }
1668
  },
1669
  "fs.realpath": {
1715
  "integrity": "sha1-iUhUSRvFkbDxR9euVw9cZ4tyVus=",
1716
  "dev": true,
1717
  "requires": {
1718
+ "rc": "1.2.5"
1719
  }
1720
  },
1721
  "get-stdin": {
1865
  "dev": true,
1866
  "requires": {
1867
  "glob": "7.1.2",
1868
+ "lodash": "4.17.5",
1869
  "minimatch": "3.0.4"
1870
  },
1871
  "dependencies": {
1884
  }
1885
  },
1886
  "lodash": {
1887
+ "version": "4.17.5",
1888
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz",
1889
+ "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==",
1890
  "dev": true
1891
  }
1892
  }
1893
  },
1894
  "glogg": {
1895
+ "version": "1.0.1",
1896
+ "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.1.tgz",
1897
+ "integrity": "sha512-ynYqXLoluBKf9XGR1gA59yEJisIL7YHEH4xr3ZziHB5/yl4qWfaK8Js9jGe6gBGCSCKVqiyO30WnRZADvemUNw==",
1898
  "dev": true,
1899
  "requires": {
1900
  "sparkles": "1.0.0"
1923
  "parse-json": "2.2.0",
1924
  "pinkie-promise": "2.0.1",
1925
  "read-all-stream": "3.1.0",
1926
+ "readable-stream": "2.3.4",
1927
  "timed-out": "3.1.3",
1928
  "unzip-response": "1.0.2",
1929
  "url-parse-lax": "1.0.0"
1942
  "dev": true
1943
  },
1944
  "grunt": {
1945
+ "version": "1.0.2",
1946
+ "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.0.2.tgz",
1947
+ "integrity": "sha1-TmpeaVtwRy/VME9fqeNCNoNqc7w=",
1948
  "dev": true,
1949
  "requires": {
1950
+ "coffeescript": "1.10.0",
1951
  "dateformat": "1.0.12",
1952
  "eventemitter2": "0.4.14",
1953
  "exit": "0.1.2",
2022
  "archiver": "1.3.0",
2023
  "chalk": "1.1.3",
2024
  "iltorb": "1.3.10",
2025
+ "lodash": "4.17.5",
2026
  "pretty-bytes": "4.0.2",
2027
  "stream-buffers": "2.2.0"
2028
  },
2029
  "dependencies": {
2030
  "lodash": {
2031
+ "version": "4.17.5",
2032
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz",
2033
+ "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==",
2034
  "dev": true
2035
  }
2036
  }
2792
  "dev": true,
2793
  "requires": {
2794
  "glob": "7.0.6",
2795
+ "lodash": "4.17.5",
2796
  "md5-file": "2.0.7",
2797
  "promised-io": "0.3.5"
2798
  },
2799
  "dependencies": {
2800
  "lodash": {
2801
+ "version": "4.17.5",
2802
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz",
2803
+ "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==",
2804
  "dev": true
2805
  }
2806
  }
2817
  "integrity": "sha512-FMRde7kCY1T2zCBAg4ZbLR9GbKDX60xCIZS89kCyk29LLQ/nbRSgXY+782HjT+HfC21kszcpWttfCGq1eERHPA==",
2818
  "dev": true,
2819
  "requires": {
2820
+ "grunt": "1.0.2",
2821
  "semver": "4.3.6"
2822
  },
2823
  "dependencies": {
2837
  "requires": {
2838
  "cssbeautify": "0.3.1",
2839
  "csscomb": "3.1.8",
2840
+ "lodash": "4.17.5"
2841
  },
2842
  "dependencies": {
2843
  "lodash": {
2844
+ "version": "4.17.5",
2845
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz",
2846
+ "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==",
2847
  "dev": true
2848
  }
2849
  }
3177
  "archive-type": "3.2.0",
3178
  "decompress": "3.0.0",
3179
  "gulp-util": "3.0.8",
3180
+ "readable-stream": "2.3.4"
3181
  }
3182
  },
3183
  "gulp-rename": {
3205
  "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
3206
  "dev": true,
3207
  "requires": {
3208
+ "readable-stream": "2.3.4",
3209
  "xtend": "4.0.1"
3210
  }
3211
  }
3255
  "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
3256
  "dev": true,
3257
  "requires": {
3258
+ "readable-stream": "2.3.4",
3259
  "xtend": "4.0.1"
3260
  }
3261
  },
3278
  "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=",
3279
  "dev": true,
3280
  "requires": {
3281
+ "glogg": "1.0.1"
3282
  }
3283
  },
3284
  "har-schema": {
3341
  "requires": {
3342
  "boom": "4.3.1",
3343
  "cryptiles": "3.1.2",
3344
+ "hoek": "4.2.1",
3345
  "sntp": "2.1.0"
3346
  }
3347
  },
3348
  "hoek": {
3349
+ "version": "4.2.1",
3350
+ "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz",
3351
+ "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==",
3352
  "dev": true
3353
  },
3354
  "hooker": {
3413
  }
3414
  },
3415
  "http-parser-js": {
3416
+ "version": "0.4.10",
3417
+ "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz",
3418
+ "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=",
3419
  "dev": true
3420
  },
3421
  "http-signature": {
3445
  "detect-libc": "0.2.0",
3446
  "nan": "2.8.0",
3447
  "node-gyp": "3.6.2",
3448
+ "prebuild-install": "2.5.1"
3449
  }
3450
  },
3451
  "imagemin": {
3461
  "imagemin-optipng": "4.3.0",
3462
  "imagemin-svgo": "4.2.1",
3463
  "optional": "0.1.4",
3464
+ "readable-stream": "2.3.4",
3465
  "stream-combiner2": "1.1.1",
3466
  "vinyl-fs": "2.4.4"
3467
  }
3497
  "dev": true,
3498
  "optional": true,
3499
  "requires": {
3500
+ "readable-stream": "2.3.4",
3501
  "xtend": "4.0.1"
3502
  }
3503
  }
3535
  "dev": true,
3536
  "optional": true,
3537
  "requires": {
3538
+ "readable-stream": "2.3.4",
3539
  "xtend": "4.0.1"
3540
  }
3541
  }
3848
  }
3849
  },
3850
  "js-base64": {
3851
+ "version": "2.4.3",
3852
+ "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.3.tgz",
3853
+ "integrity": "sha512-H7ErYLM34CvDMto3GbD6xD0JLUGYXR3QTcH6B/tr4Hi/QpSThnCsIp+Sy5FRTw3B0d6py4HcNkW7nO/wdtGWEw==",
3854
  "dev": true
3855
  },
3856
  "js-yaml": {
3859
  "integrity": "sha1-A3fDgBfKvHMisNH7zSWkkWQfL74=",
3860
  "dev": true,
3861
  "requires": {
3862
+ "argparse": "1.0.10",
3863
  "esprima": "2.7.3"
3864
  }
3865
  },
3967
  "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=",
3968
  "dev": true,
3969
  "requires": {
3970
+ "readable-stream": "2.3.4"
3971
  }
3972
  },
3973
  "livereload-js": {
3974
+ "version": "2.3.0",
3975
+ "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.3.0.tgz",
3976
+ "integrity": "sha512-j1R0/FeGa64Y+NmqfZhyoVRzcFlOZ8sNlKzHjh4VvLULFACZhn68XrX5DFg2FhMvSMJmROuFxRSa560ECWKBMg==",
3977
  "dev": true
3978
  },
3979
  "load-grunt-config": {
4009
  "integrity": "sha1-a+GyP2JJ9T0pM3D9TRqqY84bTrA=",
4010
  "dev": true,
4011
  "requires": {
4012
+ "argparse": "1.0.10",
4013
  "esprima": "2.7.3",
4014
  "inherit": "2.2.6"
4015
  }
4277
  "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=",
4278
  "dev": true,
4279
  "requires": {
4280
+ "readable-stream": "2.3.4"
4281
  }
4282
  },
4283
  "micromatch": {
4319
  }
4320
  },
4321
  "mime-db": {
4322
+ "version": "1.33.0",
4323
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
4324
+ "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==",
4325
  "dev": true
4326
  },
4327
  "mime-types": {
4328
+ "version": "2.1.18",
4329
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
4330
+ "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
4331
  "dev": true,
4332
  "requires": {
4333
+ "mime-db": "1.33.0"
4334
  }
4335
  },
4336
+ "mimic-response": {
4337
+ "version": "1.0.0",
4338
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.0.tgz",
4339
+ "integrity": "sha1-3z02Uqc/3ta5sLJBRub9BSNTRY4=",
4340
+ "dev": true,
4341
+ "optional": true
4342
+ },
4343
  "minimatch": {
4344
  "version": "3.0.4",
4345
  "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
4346
  "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
4347
  "dev": true,
4348
  "requires": {
4349
+ "brace-expansion": "1.1.11"
4350
  }
4351
  },
4352
  "minimist": {
4442
  "optional": true
4443
  },
4444
  "node-abi": {
4445
+ "version": "2.2.0",
4446
+ "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.2.0.tgz",
4447
+ "integrity": "sha512-FqVC0WNNL8fQWQK3GYTESfwZXZKDbSIiEEIvufq7HV6Lj0IDDZRVa4CU/KTA0JVlqY9eTDSuPiC8FS9UfGVuzA==",
4448
  "dev": true,
4449
  "optional": true,
4450
  "requires": {
4451
+ "semver": "5.5.0"
4452
  }
4453
  },
4454
  "node-gyp": {
4465
  "mkdirp": "0.5.1",
4466
  "nopt": "3.0.6",
4467
  "npmlog": "4.1.2",
4468
+ "osenv": "0.1.5",
4469
  "request": "2.83.0",
4470
  "rimraf": "2.2.8",
4471
  "semver": "5.3.0",
4518
  "requires": {
4519
  "hosted-git-info": "2.5.0",
4520
  "is-builtin-module": "1.0.0",
4521
+ "semver": "5.5.0",
4522
  "validate-npm-package-license": "3.0.1"
4523
  }
4524
  },
4632
  "dev": true,
4633
  "requires": {
4634
  "is-stream": "1.1.0",
4635
+ "readable-stream": "2.3.4"
4636
  }
4637
  },
4638
  "os-filter-obj": {
4655
  "dev": true
4656
  },
4657
  "osenv": {
4658
+ "version": "0.1.5",
4659
+ "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
4660
+ "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
4661
  "dev": true,
4662
  "optional": true,
4663
  "requires": {
4802
  "dev": true,
4803
  "requires": {
4804
  "chalk": "1.1.3",
4805
+ "js-base64": "2.4.3",
4806
  "source-map": "0.5.7",
4807
  "supports-color": "3.2.3"
4808
  },
4825
  "dev": true
4826
  },
4827
  "prebuild-install": {
4828
+ "version": "2.5.1",
4829
+ "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-2.5.1.tgz",
4830
+ "integrity": "sha512-3DX9L6pzwc1m1ksMkW3Ky2WLgPQUBiySOfXVl3WZyAeJSyJb4wtoH9OmeRGcubAWsMlLiL8BTHbwfm/jPQE9Ag==",
4831
  "dev": true,
4832
  "optional": true,
4833
  "requires": {
4834
+ "detect-libc": "1.0.3",
4835
  "expand-template": "1.1.0",
4836
  "github-from-package": "0.0.0",
4837
  "minimist": "1.2.0",
4838
  "mkdirp": "0.5.1",
4839
+ "node-abi": "2.2.0",
4840
  "noop-logger": "0.1.1",
4841
  "npmlog": "4.1.2",
4842
  "os-homedir": "1.0.2",
4843
+ "pump": "2.0.1",
4844
+ "rc": "1.2.5",
4845
+ "simple-get": "2.7.0",
4846
  "tar-fs": "1.16.0",
4847
  "tunnel-agent": "0.6.0",
4848
+ "which-pm-runs": "1.0.0"
4849
+ },
4850
+ "dependencies": {
4851
+ "detect-libc": {
4852
+ "version": "1.0.3",
4853
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
4854
+ "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=",
4855
+ "dev": true,
4856
+ "optional": true
4857
+ }
4858
  }
4859
  },
4860
  "prepend-http": {
4887
  }
4888
  },
4889
  "process-nextick-args": {
4890
+ "version": "2.0.0",
4891
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
4892
+ "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
4893
  "dev": true
4894
  },
4895
  "promised-io": {
4899
  "dev": true
4900
  },
4901
  "pump": {
4902
+ "version": "2.0.1",
4903
+ "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
4904
+ "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
4905
  "dev": true,
4906
+ "optional": true,
4907
  "requires": {
4908
+ "end-of-stream": "1.4.1",
4909
  "once": "1.4.0"
4910
  }
4911
  },
4995
  }
4996
  },
4997
  "rc": {
4998
+ "version": "1.2.5",
4999
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.5.tgz",
5000
+ "integrity": "sha1-J1zWh/bjs2zHVrqibf7oCnkDAf0=",
5001
  "dev": true,
5002
  "requires": {
5003
  "deep-extend": "0.4.2",
5013
  "dev": true,
5014
  "requires": {
5015
  "pinkie-promise": "2.0.1",
5016
+ "readable-stream": "2.3.4"
5017
  }
5018
  },
5019
  "read-pkg": {
5038
  }
5039
  },
5040
  "readable-stream": {
5041
+ "version": "2.3.4",
5042
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.4.tgz",
5043
+ "integrity": "sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ==",
5044
  "dev": true,
5045
  "requires": {
5046
  "core-util-is": "1.0.2",
5047
  "inherits": "2.0.3",
5048
  "isarray": "1.0.0",
5049
+ "process-nextick-args": "2.0.0",
5050
  "safe-buffer": "5.1.1",
5051
  "string_decoder": "1.0.3",
5052
  "util-deprecate": "1.0.2"
5113
  "aws-sign2": "0.7.0",
5114
  "aws4": "1.6.0",
5115
  "caseless": "0.12.0",
5116
+ "combined-stream": "1.0.6",
5117
  "extend": "3.0.1",
5118
  "forever-agent": "0.6.1",
5119
+ "form-data": "2.3.2",
5120
  "har-validator": "5.0.3",
5121
  "hawk": "6.0.2",
5122
  "http-signature": "1.2.0",
5123
  "is-typedarray": "1.0.0",
5124
  "isstream": "0.1.2",
5125
  "json-stringify-safe": "5.0.1",
5126
+ "mime-types": "2.1.18",
5127
  "oauth-sign": "0.8.2",
5128
  "performance-now": "2.1.0",
5129
  "qs": "6.5.1",
5131
  "stringstream": "0.0.5",
5132
  "tough-cookie": "2.3.3",
5133
  "tunnel-agent": "0.6.0",
5134
+ "uuid": "3.2.1"
5135
  }
5136
  },
5137
  "requirefresh": {
5140
  "integrity": "sha1-dC3Mwg86lpGNZsbxWX3I/+vE9vU=",
5141
  "dev": true,
5142
  "requires": {
5143
+ "editions": "1.3.4"
5144
  }
5145
  },
5146
  "resolve": {
5184
  "integrity": "sha1-+CrrS9165R9lPrIPZyizBYyNZEU=",
5185
  "dev": true,
5186
  "requires": {
5187
+ "editions": "1.3.4",
5188
  "graceful-fs": "4.1.11"
5189
  }
5190
  },
5205
  }
5206
  },
5207
  "semver": {
5208
+ "version": "5.5.0",
5209
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
5210
+ "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==",
5211
  "dev": true
5212
  },
5213
  "semver-regex": {
5224
  "dev": true,
5225
  "optional": true,
5226
  "requires": {
5227
+ "semver": "5.5.0"
5228
  }
5229
  },
5230
  "set-blocking": {
5257
  "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
5258
  "dev": true
5259
  },
5260
+ "simple-concat": {
5261
+ "version": "1.0.0",
5262
+ "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.0.tgz",
5263
+ "integrity": "sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=",
5264
+ "dev": true,
5265
+ "optional": true
5266
+ },
5267
  "simple-get": {
5268
+ "version": "2.7.0",
5269
+ "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.7.0.tgz",
5270
+ "integrity": "sha512-RkE9rGPHcxYZ/baYmgJtOSM63vH0Vyq+ma5TijBcLla41SWlh8t6XYIGMR/oeZcmr+/G8k+zrClkkVrtnQ0esg==",
5271
  "dev": true,
5272
  "optional": true,
5273
  "requires": {
5274
+ "decompress-response": "3.3.0",
5275
  "once": "1.4.0",
5276
+ "simple-concat": "1.0.0"
 
5277
  }
5278
  },
5279
  "sntp": {
5282
  "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==",
5283
  "dev": true,
5284
  "requires": {
5285
+ "hoek": "4.2.1"
5286
  }
5287
  },
5288
  "source-map": {
5377
  "dev": true,
5378
  "requires": {
5379
  "duplexer2": "0.1.4",
5380
+ "readable-stream": "2.3.4"
5381
  }
5382
  },
5383
  "stream-shift": {
5516
  "dev": true,
5517
  "optional": true,
5518
  "requires": {
5519
+ "argparse": "1.0.10",
5520
  "esprima": "2.7.3"
5521
  }
5522
  }
5545
  "mkdirp": "0.5.1",
5546
  "pump": "1.0.3",
5547
  "tar-stream": "1.5.5"
5548
+ },
5549
+ "dependencies": {
5550
+ "pump": {
5551
+ "version": "1.0.3",
5552
+ "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz",
5553
+ "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==",
5554
+ "dev": true,
5555
+ "optional": true,
5556
+ "requires": {
5557
+ "end-of-stream": "1.4.1",
5558
+ "once": "1.4.0"
5559
+ }
5560
+ }
5561
  }
5562
  },
5563
  "tar-stream": {
5567
  "dev": true,
5568
  "requires": {
5569
  "bl": "1.2.1",
5570
+ "end-of-stream": "1.4.1",
5571
+ "readable-stream": "2.3.4",
5572
  "xtend": "4.0.1"
5573
  }
5574
  },
5648
  "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
5649
  "dev": true,
5650
  "requires": {
5651
+ "readable-stream": "2.3.4",
5652
  "xtend": "4.0.1"
5653
  }
5654
  }
5696
  "body-parser": "1.14.2",
5697
  "debug": "2.2.0",
5698
  "faye-websocket": "0.10.0",
5699
+ "livereload-js": "2.3.0",
5700
  "parseurl": "1.3.2",
5701
  "qs": "5.1.0"
5702
  },
5759
  "optional": true
5760
  },
5761
  "type-is": {
5762
+ "version": "1.6.16",
5763
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz",
5764
+ "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==",
5765
  "dev": true,
5766
  "requires": {
5767
  "media-typer": "0.3.0",
5768
+ "mime-types": "2.1.18"
5769
  }
5770
  },
5771
  "typechecker": {
5772
+ "version": "4.5.0",
5773
+ "resolved": "https://registry.npmjs.org/typechecker/-/typechecker-4.5.0.tgz",
5774
+ "integrity": "sha512-bqPE/ck3bVIaXP7gMKTKSHrypT32lpYTpiqzPYeYzdSQnmaGvaGhy7TnN/M/+5R+2rs/kKcp9ZLPRp/Q9Yj+4w==",
5775
  "dev": true,
5776
  "requires": {
5777
+ "editions": "1.3.4"
5778
  }
5779
  },
5780
  "typedarray": {
5843
  "dev": true
5844
  },
5845
  "uuid": {
5846
+ "version": "3.2.1",
5847
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz",
5848
+ "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==",
5849
  "dev": true
5850
  },
5851
  "vali-date": {
5893
  "dev": true,
5894
  "requires": {
5895
  "object-assign": "4.1.1",
5896
+ "readable-stream": "2.3.4"
5897
  }
5898
  },
5899
  "vinyl-fs": {
5902
  "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=",
5903
  "dev": true,
5904
  "requires": {
5905
+ "duplexify": "3.5.3",
5906
  "glob-stream": "5.3.5",
5907
  "graceful-fs": "4.1.11",
5908
  "gulp-sourcemaps": "1.6.0",
5912
  "merge-stream": "1.0.1",
5913
  "mkdirp": "0.5.1",
5914
  "object-assign": "4.1.1",
5915
+ "readable-stream": "2.3.4",
5916
  "strip-bom": "2.0.0",
5917
  "strip-bom-stream": "1.0.0",
5918
  "through2": "2.0.3",
5927
  "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
5928
  "dev": true,
5929
  "requires": {
5930
+ "readable-stream": "2.3.4",
5931
  "xtend": "4.0.1"
5932
  }
5933
  }
6003
  "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=",
6004
  "dev": true,
6005
  "requires": {
6006
+ "http-parser-js": "0.4.10",
6007
  "websocket-extensions": "0.1.3"
6008
  }
6009
  },
6029
  "isexe": "2.0.0"
6030
  }
6031
  },
6032
+ "which-pm-runs": {
6033
+ "version": "1.0.0",
6034
+ "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz",
6035
+ "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=",
6036
+ "dev": true,
6037
+ "optional": true
6038
+ },
6039
  "wide-align": {
6040
  "version": "1.1.2",
6041
  "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz",
6092
  "requires": {
6093
  "archiver-utils": "1.3.0",
6094
  "compress-commons": "1.2.2",
6095
+ "lodash": "4.17.5",
6096
+ "readable-stream": "2.3.4"
6097
  },
6098
  "dependencies": {
6099
  "lodash": {
6100
+ "version": "4.17.5",
6101
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz",
6102
+ "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==",
6103
  "dev": true
6104
  }
6105
  }
readme.md CHANGED
@@ -67,6 +67,13 @@ If you wanna learn more about the <a href="http://www.codeinwp.com/blog/fastest-
67
  * fr_FR translation by Jacques Soule of http://wordpress-pour-vous.com/
68
 
69
  ## Changelog ##
 
 
 
 
 
 
 
70
  ### 3.3.2 - 2018-01-05 ###
71
 
72
  * Adds filtering option for posts/page admin listing page.
67
  * fr_FR translation by Jacques Soule of http://wordpress-pour-vous.com/
68
 
69
  ## Changelog ##
70
+ ### 3.4.0 - 2018-02-20 ###
71
+
72
+ * Adds AMP support for the review box.
73
+ * Adds compatibility with 2 more review templates.
74
+ * Improves extensibility by adding more hooks.
75
+
76
+
77
  ### 3.3.2 - 2018-01-05 ###
78
 
79
  * Adds filtering option for posts/page admin listing page.
readme.txt CHANGED
@@ -67,6 +67,13 @@ If you wanna learn more about the <a href="http://www.codeinwp.com/blog/fastest-
67
  * fr_FR translation by Jacques Soule of http://wordpress-pour-vous.com/
68
 
69
  == Changelog ==
 
 
 
 
 
 
 
70
  = 3.3.2 - 2018-01-05 =
71
 
72
  * Adds filtering option for posts/page admin listing page.
67
  * fr_FR translation by Jacques Soule of http://wordpress-pour-vous.com/
68
 
69
  == Changelog ==
70
+ = 3.4.0 - 2018-02-20 =
71
+
72
+ * Adds AMP support for the review box.
73
+ * Adds compatibility with 2 more review templates.
74
+ * Improves extensibility by adding more hooks.
75
+
76
+
77
  = 3.3.2 - 2018-01-05 =
78
 
79
  * Adds filtering option for posts/page admin listing page.
themeisle-hash.json CHANGED
@@ -1 +1 @@
1
- {"class-wppr-autoloader.php":"96be4219e0b4502f5698c5a8b084d108","index.php":"c76772901fa1b2b14aa3ba32d7773c8a","uninstall.php":"7c6d36652e8dcf013f2c246f4a289acf","wp-product-review.php":"de90912a2c3f82202e18ea75e06ad9c7"}
1
+ {"class-wppr-autoloader.php":"96be4219e0b4502f5698c5a8b084d108","index.php":"c76772901fa1b2b14aa3ba32d7773c8a","uninstall.php":"7c6d36652e8dcf013f2c246f4a289acf","wp-product-review.php":"a0abcc70ecb34f7b6af8e7dcc3505a73"}
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer' . '/autoload_real.php';
6
 
7
- return ComposerAutoloaderInit8ed977da0adcd0f4b661f0cb5c1b0ff1::getLoader();
4
 
5
  require_once __DIR__ . '/composer' . '/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInitbdd4bd7f00254ffad6b05d16536f5a0b::getLoader();
vendor/autoload_52.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
 
7
- return ComposerAutoloaderInitf3f7a9c1df7157d375570d8e179418d0::getLoader();
4
 
5
  require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
 
7
+ return ComposerAutoloaderInitd1002ad61687cc1318b42cae9a6647d8::getLoader();
vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-endpoints.php CHANGED
@@ -235,7 +235,7 @@ if ( ! class_exists( 'ThemeIsle_SDK_Endpoints' ) ) :
235
 
236
  // fetch the calculated hashes.
237
  if ( ! $wp_filesystem->is_readable( $path . '/' . self::HASH_FILE ) ) {
238
- return new WP_Error( 'themeisle_sdk_hash_not_found', sprintf( __( '%s not found', 'themeisle-sdk' ), self::HASH_FILE ) );
239
  }
240
 
241
  $hashes = json_decode( $wp_filesystem->get_contents( $path . '/' . self::HASH_FILE ), true );
@@ -296,7 +296,7 @@ if ( ! class_exists( 'ThemeIsle_SDK_Endpoints' ) ) :
296
  $value = sanitize_text_field( $data[ $param ] );
297
  if ( empty( $value ) ) {
298
  return new WP_Error(
299
- 'themeisle_' . $param . '_invalid', sprintf( __( 'Invalid %', 'themeisle-sdk' ), $param ), array(
300
  'status' => 403,
301
  )
302
  );
235
 
236
  // fetch the calculated hashes.
237
  if ( ! $wp_filesystem->is_readable( $path . '/' . self::HASH_FILE ) ) {
238
+ return new WP_Error( 'themeisle_sdk_hash_not_found', sprintf( '%s not found', self::HASH_FILE ) );
239
  }
240
 
241
  $hashes = json_decode( $wp_filesystem->get_contents( $path . '/' . self::HASH_FILE ), true );
296
  $value = sanitize_text_field( $data[ $param ] );
297
  if ( empty( $value ) ) {
298
  return new WP_Error(
299
+ 'themeisle_' . $param . '_invalid', sprintf( 'Invalid %', $param ), array(
300
  'status' => 403,
301
  )
302
  );
vendor/codeinwp/themeisle-sdk/class-themeisle-sdk-loader.php CHANGED
@@ -48,7 +48,7 @@ if ( ! class_exists( 'ThemeIsle_SDK_Loader' ) ) :
48
 
49
  $notifications = array();
50
  // Based on the WordPress Available file header we enable the logger or not.
51
- if ( ! $product_object->is_wordpress_available() ) {
52
  $licenser = new ThemeIsle_SDK_Licenser( $product_object );
53
  $licenser->enable();
54
  }
48
 
49
  $notifications = array();
50
  // Based on the WordPress Available file header we enable the logger or not.
51
+ if ( ! $product_object->is_wordpress_available() && apply_filters( $product_object->get_key() . '_enable_licenser', true ) === true ) {
52
  $licenser = new ThemeIsle_SDK_Licenser( $product_object );
53
  $licenser->enable();
54
  }
vendor/codeinwp/themeisle-sdk/load.php CHANGED
@@ -11,7 +11,7 @@
11
  */
12
 
13
  // Current SDK version and path.
14
- $themeisle_sdk_version = '2.1.0';
15
  $themeisle_sdk_path = dirname( __FILE__ );
16
 
17
  global $themeisle_sdk_max_version;
11
  */
12
 
13
  // Current SDK version and path.
14
+ $themeisle_sdk_version = '2.1.1';
15
  $themeisle_sdk_path = dirname( __FILE__ );
16
 
17
  global $themeisle_sdk_max_version;
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInit8ed977da0adcd0f4b661f0cb5c1b0ff1
6
  {
7
  private static $loader;
8
 
@@ -19,9 +19,9 @@ class ComposerAutoloaderInit8ed977da0adcd0f4b661f0cb5c1b0ff1
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInit8ed977da0adcd0f4b661f0cb5c1b0ff1', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit8ed977da0adcd0f4b661f0cb5c1b0ff1', 'loadClassLoader'));
25
 
26
  $map = require __DIR__ . '/autoload_namespaces.php';
27
  foreach ($map as $namespace => $path) {
@@ -42,14 +42,14 @@ class ComposerAutoloaderInit8ed977da0adcd0f4b661f0cb5c1b0ff1
42
 
43
  $includeFiles = require __DIR__ . '/autoload_files.php';
44
  foreach ($includeFiles as $fileIdentifier => $file) {
45
- composerRequire8ed977da0adcd0f4b661f0cb5c1b0ff1($fileIdentifier, $file);
46
  }
47
 
48
  return $loader;
49
  }
50
  }
51
 
52
- function composerRequire8ed977da0adcd0f4b661f0cb5c1b0ff1($fileIdentifier, $file)
53
  {
54
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
55
  require $file;
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInitbdd4bd7f00254ffad6b05d16536f5a0b
6
  {
7
  private static $loader;
8
 
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInitbdd4bd7f00254ffad6b05d16536f5a0b', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInitbdd4bd7f00254ffad6b05d16536f5a0b', 'loadClassLoader'));
25
 
26
  $map = require __DIR__ . '/autoload_namespaces.php';
27
  foreach ($map as $namespace => $path) {
42
 
43
  $includeFiles = require __DIR__ . '/autoload_files.php';
44
  foreach ($includeFiles as $fileIdentifier => $file) {
45
+ composerRequirebdd4bd7f00254ffad6b05d16536f5a0b($fileIdentifier, $file);
46
  }
47
 
48
  return $loader;
49
  }
50
  }
51
 
52
+ function composerRequirebdd4bd7f00254ffad6b05d16536f5a0b($fileIdentifier, $file)
53
  {
54
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
55
  require $file;
vendor/composer/autoload_real_52.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real_52.php generated by xrstf/composer-php52
4
 
5
- class ComposerAutoloaderInitf3f7a9c1df7157d375570d8e179418d0 {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
@@ -19,9 +19,9 @@ class ComposerAutoloaderInitf3f7a9c1df7157d375570d8e179418d0 {
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInitf3f7a9c1df7157d375570d8e179418d0', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInitf3f7a9c1df7157d375570d8e179418d0', 'loadClassLoader'));
25
 
26
  $vendorDir = dirname(dirname(__FILE__));
27
  $baseDir = dirname($vendorDir);
2
 
3
  // autoload_real_52.php generated by xrstf/composer-php52
4
 
5
+ class ComposerAutoloaderInitd1002ad61687cc1318b42cae9a6647d8 {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInitd1002ad61687cc1318b42cae9a6647d8', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInitd1002ad61687cc1318b42cae9a6647d8', 'loadClassLoader'));
25
 
26
  $vendorDir = dirname(dirname(__FILE__));
27
  $baseDir = dirname($vendorDir);
vendor/composer/installed.json CHANGED
@@ -1,37 +1,4 @@
1
  [
2
- {
3
- "name": "xrstf/composer-php52",
4
- "version": "v1.0.20",
5
- "version_normalized": "1.0.20.0",
6
- "source": {
7
- "type": "git",
8
- "url": "https://github.com/composer-php52/composer-php52.git",
9
- "reference": "bd41459d5e27df8d33057842b32377c39e97a5a8"
10
- },
11
- "dist": {
12
- "type": "zip",
13
- "url": "https://api.github.com/repos/composer-php52/composer-php52/zipball/bd41459d5e27df8d33057842b32377c39e97a5a8",
14
- "reference": "bd41459d5e27df8d33057842b32377c39e97a5a8",
15
- "shasum": ""
16
- },
17
- "time": "2016-04-16 21:52:24",
18
- "type": "library",
19
- "extra": {
20
- "branch-alias": {
21
- "dev-default": "1.x-dev"
22
- }
23
- },
24
- "installation-source": "dist",
25
- "autoload": {
26
- "psr-0": {
27
- "xrstf\\Composer52": "lib/"
28
- }
29
- },
30
- "notification-url": "https://packagist.org/downloads/",
31
- "license": [
32
- "MIT"
33
- ]
34
- },
35
  {
36
  "name": "codeinwp/themeisle-sdk",
37
  "version": "dev-master",
@@ -39,15 +6,15 @@
39
  "source": {
40
  "type": "git",
41
  "url": "https://github.com/Codeinwp/themeisle-sdk.git",
42
- "reference": "ae69f3966081f0a7c7c468c00275c411cc0be063"
43
  },
44
  "dist": {
45
  "type": "zip",
46
- "url": "https://api.github.com/repos/Codeinwp/themeisle-sdk/zipball/ae69f3966081f0a7c7c468c00275c411cc0be063",
47
- "reference": "ae69f3966081f0a7c7c468c00275c411cc0be063",
48
  "shasum": ""
49
  },
50
- "time": "2018-01-04 13:30:43",
51
  "type": "library",
52
  "installation-source": "dist",
53
  "autoload": {
@@ -55,6 +22,7 @@
55
  "load.php"
56
  ]
57
  },
 
58
  "license": [
59
  "GPL-2.0+"
60
  ],
@@ -69,10 +37,39 @@
69
  "homepage": "https://github.com/Codeinwp/themeisle-sdk",
70
  "keywords": [
71
  "wordpress"
72
- ],
73
- "support": {
74
- "issues": "https://github.com/Codeinwp/themeisle-sdk/issues",
75
- "source": "https://github.com/Codeinwp/themeisle-sdk/tree/master"
76
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
77
  }
78
  ]
1
  [
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  {
3
  "name": "codeinwp/themeisle-sdk",
4
  "version": "dev-master",
6
  "source": {
7
  "type": "git",
8
  "url": "https://github.com/Codeinwp/themeisle-sdk.git",
9
+ "reference": "9d866559c6090f0e7e70fe3e5a4be8672461a11a"
10
  },
11
  "dist": {
12
  "type": "zip",
13
+ "url": "https://api.github.com/repos/Codeinwp/themeisle-sdk/zipball/9d866559c6090f0e7e70fe3e5a4be8672461a11a",
14
+ "reference": "9d866559c6090f0e7e70fe3e5a4be8672461a11a",
15
  "shasum": ""
16
  },
17
+ "time": "2018-02-16 16:31:29",
18
  "type": "library",
19
  "installation-source": "dist",
20
  "autoload": {
22
  "load.php"
23
  ]
24
  },
25
+ "notification-url": "https://packagist.org/downloads/",
26
  "license": [
27
  "GPL-2.0+"
28
  ],
37
  "homepage": "https://github.com/Codeinwp/themeisle-sdk",
38
  "keywords": [
39
  "wordpress"
40
+ ]
41
+ },
42
+ {
43
+ "name": "xrstf/composer-php52",
44
+ "version": "v1.0.20",
45
+ "version_normalized": "1.0.20.0",
46
+ "source": {
47
+ "type": "git",
48
+ "url": "https://github.com/composer-php52/composer-php52.git",
49
+ "reference": "bd41459d5e27df8d33057842b32377c39e97a5a8"
50
+ },
51
+ "dist": {
52
+ "type": "zip",
53
+ "url": "https://api.github.com/repos/composer-php52/composer-php52/zipball/bd41459d5e27df8d33057842b32377c39e97a5a8",
54
+ "reference": "bd41459d5e27df8d33057842b32377c39e97a5a8",
55
+ "shasum": ""
56
+ },
57
+ "time": "2016-04-16 21:52:24",
58
+ "type": "library",
59
+ "extra": {
60
+ "branch-alias": {
61
+ "dev-default": "1.x-dev"
62
+ }
63
+ },
64
+ "installation-source": "dist",
65
+ "autoload": {
66
+ "psr-0": {
67
+ "xrstf\\Composer52": "lib/"
68
+ }
69
+ },
70
+ "notification-url": "https://packagist.org/downloads/",
71
+ "license": [
72
+ "MIT"
73
+ ]
74
  }
75
  ]
wp-product-review.php CHANGED
@@ -15,7 +15,7 @@
15
  * Plugin Name: WP Product Review Lite
16
  * Plugin URI: https://themeisle.com/plugins/wp-product-review/
17
  * Description: The highest rated and most complete review plugin, now with rich snippets support. Easily turn your basic posts into in-depth reviews.
18
- * Version: 3.3.2
19
  * Author: ThemeIsle
20
  * Author URI: https://themeisle.com/
21
  * Requires at least: 3.5
@@ -67,7 +67,7 @@ register_deactivation_hook( __FILE__, 'deactivate_wppr' );
67
  */
68
  function run_wppr() {
69
 
70
- define( 'WPPR_LITE_VERSION', '3.3.2' );
71
  define( 'WPPR_PATH', dirname( __FILE__ ) );
72
  define( 'WPPR_SLUG', 'wppr' );
73
  define( 'WPPR_UPSELL_LINK', 'https://themeisle.com/plugins/wp-product-review/' );
15
  * Plugin Name: WP Product Review Lite
16
  * Plugin URI: https://themeisle.com/plugins/wp-product-review/
17
  * Description: The highest rated and most complete review plugin, now with rich snippets support. Easily turn your basic posts into in-depth reviews.
18
+ * Version: 3.4.0
19
  * Author: ThemeIsle
20
  * Author URI: https://themeisle.com/
21
  * Requires at least: 3.5
67
  */
68
  function run_wppr() {
69
 
70
+ define( 'WPPR_LITE_VERSION', '3.4.0' );
71
  define( 'WPPR_PATH', dirname( __FILE__ ) );
72
  define( 'WPPR_SLUG', 'wppr' );
73
  define( 'WPPR_UPSELL_LINK', 'https://themeisle.com/plugins/wp-product-review/' );