PluginProbe
Code Engine – PHP Snippets, AI Functions & Automation for WordPress / 0.4.9
Code Engine – PHP Snippets, AI Functions & Automation for WordPress v0.4.9
0.5.6 0.5.5 0.5.4 0.5.3 0.5.2 0.5.1 0.5.0 0.4.9 0.4.8 0.4.7 0.4.6 trunk 0.0.1 0.0.2 0.2.8 0.2.9 0.3.0 0.3.1 0.3.2 0.3.3 0.3.4 0.3.5 0.3.6 0.3.7 0.3.8 All 32 releases
code-engine / common / ratings.php

ratings.php in Code Engine – PHP Snippets, AI Functions & Automation for WordPress 0.4.9, at common/ratings.php

183 lines 8.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 if ( !class_exists( 'MeowKit_MWCODE_Ratings' ) ) {
4
5 class MeowKit_MWCODE_Ratings {
6 public $mainfile; // plugin main file (media-file-renamer.php)
7 public $domain; // domain used for translation (media-file-renamer)
8 public $prefix; // used for many things (filters, options, etc)
9 public $ignored_domains = [ 'mwai-*' ];
10
11 public function __construct( $prefix, $mainfile, $domain ) {
12 $this->mainfile = $mainfile;
13 $this->domain = $domain;
14 $this->prefix = $prefix;
15
16 if ( array_search( $this->domain, $this->ignored_domains ) !== false ) {
17 return;
18 }
19 foreach ( $this->ignored_domains as $ignored_domain ) {
20 if ( strpos( $ignored_domain, '*' ) !== false ) {
21 $ignored_domain = str_replace( '*', '', $ignored_domain );
22 if ( strpos( $this->domain, $ignored_domain ) !== false ) {
23 return;
24 }
25 }
26 }
27
28 // Add the hooks
29 register_activation_hook( $mainfile, [ $this, 'show_meowapps_create_rating_date' ] );
30 if ( is_admin() ) {
31 $rating_date = $this->create_rating_date();
32 if ( time() > $rating_date ) {
33 add_action( 'admin_notices', [ $this, 'admin_notices_rating' ] );
34 add_filter( 'safe_style_css', function ( $styles ) {
35 $styles[] = 'display';
36 return $styles;
37 } );
38 }
39 }
40 }
41
42 public function show_meowapps_create_rating_date() {
43 delete_option( 'meowapps_hide_meowapps' );
44 $this->create_rating_date();
45 }
46
47 public function create_rating_date() {
48 $rating_date = get_option( $this->prefix . '_rating_date' );
49 if ( empty( $rating_date ) ) {
50 $two_weeks = strtotime( '+2 weeks' );
51 $three_weeks = strtotime( '+3 weeks' );
52 $rating_date = mt_rand( $two_weeks, $three_weeks );
53 update_option( $this->prefix . '_rating_date', $rating_date, false );
54 }
55 return $rating_date;
56 }
57
58 public function admin_notices_rating() {
59 if ( isset( $_POST[$this->prefix . '_remind_me'] ) ) {
60 $two_weeks = strtotime( '+2 weeks' );
61 $six_weeks = strtotime( '+6 weeks' );
62 $future_date = mt_rand( $two_weeks, $six_weeks );
63 update_option( $this->prefix . '_rating_date', $future_date, false );
64 return;
65 }
66 else if ( isset( $_POST[$this->prefix . '_never_remind_me'] ) ) {
67 $twenty_years = strtotime( '+5 years' );
68 update_option( $this->prefix . '_rating_date', $twenty_years, false );
69 return;
70 }
71 else if ( isset( $_POST[$this->prefix . '_did_it'] ) ) {
72 $twenty_years = strtotime( '+100 years' );
73 update_option( $this->prefix . '_rating_date', $twenty_years, false );
74 return;
75 }
76 $rating_date = get_option( $this->prefix . '_rating_date' );
77 $html = wp_kses_post( '<div class="notice notice-success" data-rating-date="' .
78 date( 'Y-m-d', $rating_date ) . '">' );
79 $esc_nice_name = esc_attr( $this->nice_name_from_file( $this->mainfile ) );
80 if ( $esc_nice_name === 'Wp Retina 2x Pro' ) {
81 $esc_nice_name = 'Perfect Images';
82 }
83 else if ( $esc_nice_name === 'Wp Retina 2x' ) {
84 $esc_nice_name = 'Perfect Images';
85 }
86 else if ( $esc_nice_name === 'Ai Engine Pro' ) {
87 $esc_nice_name = 'AI Engine';
88 }
89 $esc_short_url = esc_attr( $this->nice_short_url_from_file( $this->mainfile ) );
90 $escaped_prefix = $this->prefix;
91 $html .= '<p style="font-size: 100%;">';
92 // Translators: %1$s is a plugin nicename, %2$s is a short url (slug)
93 $url = 'https://wordpress.org/support/plugin/' . $esc_short_url . '/reviews/?rate=5#new-post';
94 $html .= sprintf(
95 __( '<h2 style="margin: 0" class="title">You have been using <b>%1$s</b> for some time now. Thank you! 💕</h2><p>If you have a minute, can you write a <b><a target="_blank" href="' . $url . '">little review</a></b> for me? That would <b>really</b> bring me joy and motivation! 💫 <br />Don\'t hesitate to <b>share your feature requests</b> with the review, I always check them and try my best.</p>
96 ', $this->domain ),
97 $esc_nice_name
98 );
99 $html .= '<div style="padding: 5px 0 12px 0; display: flex; align-items: center;">';
100 $html .= '<a target="_blank" class="button button-primary" style="margin-right: 10px;" href="' . $url . '">
101 ✏️ Write Review
102 </a>
103 <form method="post" action="" style="margin-right: 10px;">
104 <input type="hidden" name="' . $escaped_prefix . '_did_it" value="true">
105 <input type="submit" name="submit" id="submit" class="button button-secondary" value="'
106 . __( '✌️ Done!', $this->domain ) . '">
107 </form>
108
109 <div style="flex: auto;"></div>
110
111 <form method="post" action="" style="margin-right: 10px;">
112 <input type="hidden" name="' . $escaped_prefix . '_remind_me" value="true">
113 <input type="submit" name="submit" id="submit" class="button button-secondary" value="'
114 . __( '⏰ Remind me later', $this->domain ) . '">
115 </form>
116
117 <form method="post" action="">
118 <input type="hidden" name="' . $escaped_prefix . '_never_remind_me" value="true">
119 <input type="submit" name="submit" id="submit" class="button-link" style="font-size: small;" value="'
120 . __( 'Hide', $this->domain ) . '">
121 </form>
122 </div>';
123 $html .= '</div>';
124 echo wp_kses( $html, [
125 'div' => [
126 'class' => [],
127 'data-rating-date' => [],
128 'style' => [],
129 ],
130 'p' => [
131 'style' => [],
132 ],
133 'h2' => [
134 'class' => [],
135 'style' => []
136 ],
137 'b' => [],
138 'br' => [],
139 'a' => [
140 'href' => [],
141 'target' => [],
142 'class' => [],
143 'style' => [],
144 ],
145 'form' => [
146 'method' => [],
147 'action' => [],
148 'class' => [],
149 'style' => [],
150 ],
151 'input' => [
152 'type' => [],
153 'name' => [],
154 'value' => [],
155 'id' => [],
156 'class' => [],
157 ],
158 ] );
159 }
160
161 public function nice_short_url_from_file( $file ) {
162 $info = pathinfo( $file );
163 if ( !empty( $info ) ) {
164 $info['filename'] = str_replace( '-pro', '', $info['filename'] );
165 return $info['filename'];
166 }
167 return '';
168 }
169
170 public function nice_name_from_file( $file ) {
171 $info = pathinfo( $file );
172 if ( !empty( $info ) ) {
173 if ( $info['filename'] == 'wplr-sync' ) {
174 return 'Photo Engine';
175 }
176 $info['filename'] = str_replace( '-', ' ', $info['filename'] );
177 $file = ucwords( $info['filename'] );
178 }
179 return $file;
180 }
181 }
182 }
183