PluginProbe
Powerkit – Supercharge your WordPress Site / 2.4.4
Powerkit – Supercharge your WordPress Site v2.4.4
3.1.1 3.1.0 3.0.9 3.0.8 trunk 2.2.6 2.2.7 2.2.8 2.2.9 2.3.0 2.3.1 2.3.2 2.3.3 2.3.4 2.3.5 2.3.6 2.3.7 2.3.8 2.3.9 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 All 87 releases
powerkit / modules / typekit-fonts / admin / class-powerkit-typekit-fonts-admin.php

class-powerkit-typekit-fonts-admin.php in Powerkit – Supercharge your WordPress Site 2.4.4, at modules/typekit-fonts/admin/class-powerkit-typekit-fonts-admin.php

263 lines 9.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * The admin-specific functionality of the module.
4 *
5 * @link https://codesupply.co
6 * @since 1.0.0
7 *
8 * @package Powerkit
9 * @subpackage Modules/Admin
10 */
11
12 /**
13 * The admin-specific functionality of the module.
14 */
15 class Powerkit_Typekit_Fonts_Admin extends Powerkit_Module_Admin {
16
17 /**
18 * Initialize
19 */
20 public function initialize() {
21 add_filter( 'powerkit_fonts_register_settings', array( $this, 'register_settings' ), 20 );
22 }
23
24 /**
25 * Register settings
26 *
27 * @since 1.0.0
28 * @param array $settings List settings.
29 * @return array
30 */
31 public function register_settings( $settings ) {
32
33 $settings[] = array(
34 'id' => $this->slug,
35 'name' => esc_html__( 'Adobe Fonts (formerly Typekit)', 'powerkit' ),
36 'function' => array( $this, 'build_setting_page' ),
37 );
38
39 return $settings;
40 }
41
42 /**
43 * Build admin page
44 *
45 * @since 1.0.0
46 */
47 public function build_setting_page() {
48
49 $this->save_options_page();
50 $this->synchronization();
51 ?>
52 <div class="wrap">
53 <div class="col-container">
54 <div id="col-left">
55 <div class="col-wrap">
56 <div class="form-wrap">
57 <form class="wrap" method="post">
58 <!-- Instructions -->
59 <div class="form-field">
60 <h2><?php esc_html_e( 'Instructions', 'powerkit' ); ?></h2>
61 <ol>
62 <li><?php esc_html_e( 'Log in to your', 'powerkit' ); ?> <?php echo sprintf( '<a href="%1$s" target="_blank">%2$s</a>', esc_url( 'https://fonts.adobe.com/' ), esc_html__( 'Adobe Fonts account', 'powerkit' ) ); ?></li>
63 <li><?php esc_html_e( 'To get your API key, go to link', 'powerkit' ); ?> <?php echo sprintf( '<a href="%1$s" target="_blank">%1$s</a>', esc_url( 'https://fonts.adobe.com/account/tokens' ) ); ?></li>
64 <li><?php esc_html_e( 'Copy your "Token" under the "Your API tokens" label.', 'powerkit' ); ?></li>
65 </ol>
66 </div>
67 <!-- Typekit Token -->
68 <div class="form-field">
69 <label for="powerkit_typekit_fonts_token"><?php esc_html_e( 'Token', 'powerkit' ); ?></label>
70 <input name="powerkit_typekit_fonts_token" id="powerkit_typekit_fonts_token" type="text" value="<?php echo esc_attr( get_option( 'powerkit_typekit_fonts_token' ) ); ?>">
71 </div>
72 <!-- Kits -->
73 <?php
74 $token = get_option( 'powerkit_typekit_fonts_token' );
75
76 if ( $token ) {
77
78 $typekit = new Powerkit_Typekit_Api();
79
80 $typekit_data = $typekit->get( null, $token );
81
82 if ( $typekit_data && isset( $typekit_data['kits'] ) && $typekit_data['kits'] ) {
83 ?>
84 <div class="form-field">
85 <label for="powerkit_typekit_fonts_kit"><?php esc_html_e( 'Kits', 'powerkit' ); ?></label>
86 <select name="powerkit_typekit_fonts_kit" id="powerkit_typekit_fonts_kit">
87 <option value=""><?php esc_html_e( '- not selected -', 'powerkit' ); ?></option>
88 <?php
89 foreach ( $typekit_data['kits'] as $item ) :
90
91 $data_kit = $typekit->get( $item['id'], $token );
92 ?>
93 <option <?php selected( $item['id'], get_option( 'powerkit_typekit_fonts_kit' ) ); ?> value="<?php echo esc_attr( $item['id'] ); ?>"><?php echo esc_html( $data_kit['kit']['name'] ); ?></option>
94 <?php endforeach; ?>
95 </select>
96 <?php } else { ?>
97 <code><?php esc_html_e( 'Invalid token or no font kits created.', 'powerkit' ); ?></code>
98 <?php } ?>
99 </div>
100 <?php } ?>
101
102 <?php wp_nonce_field(); ?>
103
104 <p class="submit"><input class="button button-primary" name="save_settings" type="submit" value="<?php esc_html_e( 'Save Changes', 'powerkit' ); ?>" /></p>
105 </form>
106
107 <?php if ( isset( $typekit_data['kits'] ) && $typekit_data['kits'] ) { ?>
108 <form method="post" class="form-reset">
109 <?php wp_nonce_field(); ?>
110
111 <p class="submit"><input class="button" name="powerkit_typekit_reset_cache" type="submit" value="<?php esc_html_e( 'Synchronize', 'powerkit' ); ?>" /></p>
112 </form>
113 <?php } ?>
114 </div>
115 </div>
116 </div>
117 <div id="col-right">
118 <div class="col-wrap">
119 <?php
120 $typekit_kit = get_option( 'powerkit_typekit_fonts_kit' );
121
122 if ( $token && $typekit_kit ) {
123 $typekit = new Powerkit_Typekit_Api();
124
125 $typekit_data = $typekit->get( $typekit_kit, $token );
126
127 // If exist families.
128 if ( isset( $typekit_data['kit']['families'] ) && $typekit_data['kit']['families'] ) {
129
130 // First stack for example.
131 if ( isset( $typekit_data['kit']['families']['0']['css_stack'] ) ) {
132 $first_stack = $typekit_data['kit']['families']['0']['css_stack'];
133 }
134 // First family variant for example.
135 if ( isset( $typekit_data['kit']['families']['0']['variations']['0'] ) ) {
136 $first_variant = $typekit_data['kit']['families']['0']['variations']['0'];
137
138 $first_variant = powerkit_typekit_font_convert_format( $first_variant );
139 }
140
141 // Example code.
142 if ( isset( $first_stack ) && isset( $first_variant ) ) {
143
144 $first_weight = isset( $first_variant['weight'] ) ? $first_variant['weight'] : 'normal';
145 $first_style = isset( $first_variant['style'] ) ? $first_variant['style'] : 'normal';
146
147 $code = sprintf(
148 'h1 {
149 font-family: %s;
150 font-weight: %s;
151 font-style: %s;
152 }',
153 $first_stack,
154 $first_weight,
155 $first_style
156 );
157
158 $code = str_replace( "\t\t", '', $code );
159 ?>
160 <div id="template">
161 <h3><?php esc_html_e( 'Example of using a Typekit font', 'powerkit' ); ?></h3>
162
163 <textarea readonly="readonly" style="height: 120px; min-height: 120px;"><?php echo wp_kses( $code, 'post' ); ?></textarea>
164 </div>
165 <?php } ?>
166
167 <h3><?php esc_html_e( 'Available Fonts', 'powerkit' ); ?></h3>
168
169 <table class="wp-list-table widefat fixed striped">
170 <thead>
171 <tr>
172 <td scope="col" class="manage-column"><?php esc_html_e( 'Name', 'powerkit' ); ?></td>
173 <td scope="col" class="manage-column"><?php esc_html_e( 'Font Family', 'powerkit' ); ?></td>
174 <td scope="col" class="manage-column"><?php esc_html_e( 'Font Weight', 'powerkit' ); ?></td>
175 <td scope="col" class="manage-column"><?php esc_html_e( 'Font Style', 'powerkit' ); ?></td>
176 </tr>
177 </thead>
178 <tbody id="the-list">
179 <?php
180 // Loop families.
181 foreach ( $typekit_data['kit']['families'] as $family ) {
182
183 // Loop variations.
184 if ( $family['variations'] ) {
185 foreach ( $family['variations'] as $variant ) {
186 $var_format = powerkit_typekit_font_convert_format( $variant );
187
188 $family_weight = isset( $var_format['weight'] ) ? $var_format['weight'] : 'normal';
189 $family_style = isset( $var_format['style'] ) ? $var_format['style'] : 'normal';
190 $family_slug = isset( $family['css_names'][0] ) ? $family['css_names'][0] : $family['slug'];
191 ?>
192 <tr>
193 <td scope="col" class="manage-column"><?php echo esc_html( $family['name'] ); ?></td>
194 <td scope="col" class="manage-column"><?php echo esc_html( $family_slug ); ?></td>
195 <td scope="col" class="manage-column"><?php echo esc_html( $family_weight ); ?></td>
196 <td scope="col" class="manage-column"><?php echo esc_html( $family_style ); ?></td>
197 </tr>
198 <?php
199 }
200 }
201 }
202 ?>
203 </tbody>
204 </table>
205 <?php
206 } elseif ( isset( $typekit_data['kit'] ) ) {
207 ?>
208 <code><?php esc_html_e( 'No fonts found. Please add fonts to your Typekit font kit.', 'powerkit' ); ?></code>
209 <?php
210 }
211 }
212 ?>
213 </div>
214 </div>
215 </div>
216 </div>
217 <?php
218 }
219
220 /**
221 * Settings save
222 *
223 * @since 1.0.0
224 */
225 protected function save_options_page() {
226 if ( ! isset( $_POST['_wpnonce'] ) || ! wp_verify_nonce( $_POST['_wpnonce'] ) ) { // Input var ok; sanitization ok.
227 return;
228 }
229
230 if ( isset( $_POST['save_settings'] ) ) { // Input var ok.
231
232 $this->synchronization( true );
233
234 if ( isset( $_POST['powerkit_typekit_fonts_token'] ) ) { // Input var ok.
235 update_option( 'powerkit_typekit_fonts_token', sanitize_text_field( wp_unslash( $_POST['powerkit_typekit_fonts_token'] ) ) ); // Input var ok.
236 }
237 if ( isset( $_POST['powerkit_typekit_fonts_kit'] ) ) { // Input var ok.
238 update_option( 'powerkit_typekit_fonts_kit', sanitize_text_field( wp_unslash( $_POST['powerkit_typekit_fonts_kit'] ) ) ); // Input var ok.
239 }
240 printf( '<div id="message" class="updated fade"><p><strong>%s</strong></p></div>', esc_html__( 'Settings saved.', 'powerkit' ) );
241 }
242 }
243
244 /**
245 * Synchronization TypeKit
246 *
247 * @param boool $forcibly Forcibly Synchronization.
248 */
249 protected function synchronization( $forcibly = false ) {
250 if ( ! isset( $_POST['_wpnonce'] ) || ! wp_verify_nonce( $_POST['_wpnonce'] ) ) { // Input var ok; sanitization ok.
251 return;
252 }
253
254 if ( isset( $_POST['powerkit_typekit_reset_cache'] ) || $forcibly ) { // Input var ok.
255 global $wpdb;
256
257 $wpdb->query( "DELETE FROM $wpdb->options WHERE option_name LIKE 'pk_typekit_%%'" ); // db call ok; no-cache ok.
258
259 printf( '<div id="message" class="updated fade"><p><strong>%s</strong></p></div>', esc_html__( 'Font kits synchronized.', 'powerkit' ) );
260 }
261 }
262 }
263