Unyson - Version 2.1.8

Version Description

  • Minor fixes #117
Download this release

Release Info

Developer Unyson
Plugin Icon 128x128 Unyson
Version 2.1.8
Comparing to
See all releases

Code changes from version 2.1.7 to 2.1.8

framework/core/components/extensions.php CHANGED
@@ -122,10 +122,15 @@ final class _FW_Component_Extensions
122
  foreach ($dirs as $extension_dir) {
123
  $extension_name = basename($extension_dir);
124
 
125
- if (isset($all_extensions_tree[$extension_name])) {
126
  if ($all_extensions[$extension_name]->get_parent() !== $parent) {
127
  // extension with the same name exists in another tree
128
- trigger_error('Extension "'. $extension_name .'" already loaded', E_USER_ERROR);
 
 
 
 
 
129
  }
130
 
131
  // this is a directory with customizations for an extension
122
  foreach ($dirs as $extension_dir) {
123
  $extension_name = basename($extension_dir);
124
 
125
+ if (isset($all_extensions[$extension_name])) {
126
  if ($all_extensions[$extension_name]->get_parent() !== $parent) {
127
  // extension with the same name exists in another tree
128
+ trigger_error(
129
+ 'Extension "'. $extension_name .'" is already defined '.
130
+ 'in "'. $all_extensions[$extension_name]->get_declared_path() .'" '.
131
+ 'found again in "'. $extension_dir .'"',
132
+ E_USER_ERROR
133
+ );
134
  }
135
 
136
  // this is a directory with customizations for an extension
framework/core/components/extensions/manager/views/extension.php CHANGED
@@ -67,7 +67,11 @@ if (isset($lists['available'][$name])) {
67
  }
68
 
69
  if ( $is_active && file_exists( $installed_data['path'] . '/readme.md.php' ) ) {
70
- $_links[] = '<a href="' . esc_attr( $link ) . '&sub-page=extension&extension=' . esc_attr( $name ) . '&tab=docs">' . __( 'Install Instructions', 'fw' ) . '</a>';
 
 
 
 
71
  }
72
 
73
  if ( ! empty( $_links ) ):
@@ -80,13 +84,9 @@ if (isset($lists['available'][$name])) {
80
  ?>
81
  <?php
82
  if (
83
- !$is_active // do not show the "Compatible" text is extension is already active
84
- &&
85
- (
86
- isset($lists['supported'][$name]) // is listed in the supported extensions list in theme manifest
87
- ||
88
- ($installed_data && $installed_data['source'] !== 'framework') // is located in the theme
89
- )
90
  ): ?>
91
  <p><em><strong><span class="dashicons dashicons-yes"></span> <?php _e('Compatible', 'fw') ?></strong> <?php _e('with your current theme', 'fw') ?></em></p>
92
  <?php endif; ?>
67
  }
68
 
69
  if ( $is_active && file_exists( $installed_data['path'] . '/readme.md.php' ) ) {
70
+ if ( isset($lists['supported'][$name]) ) {
71
+ // no sense to teach how to install the extension if theme is already configured and the is extension marked as compatible
72
+ } else {
73
+ $_links[] = '<a href="' . esc_attr( $link ) . '&sub-page=extension&extension=' . esc_attr( $name ) . '&tab=docs">' . __( 'Install Instructions', 'fw' ) . '</a>';
74
+ }
75
  }
76
 
77
  if ( ! empty( $_links ) ):
84
  ?>
85
  <?php
86
  if (
87
+ isset($lists['supported'][$name]) // is listed in the supported extensions list in theme manifest
88
+ ||
89
+ ($installed_data && $installed_data['source'] !== 'framework') // is located in the theme
 
 
 
 
90
  ): ?>
91
  <p><em><strong><span class="dashicons dashicons-yes"></span> <?php _e('Compatible', 'fw') ?></strong> <?php _e('with your current theme', 'fw') ?></em></p>
92
  <?php endif; ?>
framework/helpers/database.php CHANGED
@@ -15,7 +15,7 @@
15
  */
16
  function fw_get_db_settings_option( $option_id = null, $default_value = null, $get_original_value = null ) {
17
  $value = FW_WP_Option::get(
18
- 'fw_theme_settings_options:'. fw()->theme->manifest->get_id(),
19
  $option_id, $default_value, $get_original_value
20
  );
21
 
@@ -58,7 +58,7 @@
58
  */
59
  function fw_set_db_settings_option( $option_id = null, $value ) {
60
  FW_WP_Option::set(
61
- 'fw_theme_settings_options:'. fw()->theme->manifest->get_id(),
62
  $option_id, $value
63
  );
64
  }
@@ -69,14 +69,25 @@
69
  /**
70
  * Get post option value from the database
71
  *
72
- * @param int $post_id
73
  * @param string|null $option_id Specific option id (accepts multikey). null - all options
74
  * @param null|mixed $default_value If no option found in the database, this value will be returned
75
  * @param null|bool $get_original_value Original value is that with no translations and other changes
76
  *
77
  * @return mixed|null
78
  */
79
- function fw_get_db_post_option( $post_id, $option_id = null, $default_value = null, $get_original_value = null ) {
 
 
 
 
 
 
 
 
 
 
 
80
  $option_id = 'fw_options' . ( $option_id !== null ? '/' . $option_id : '' );
81
 
82
  return FW_WP_Meta::get( 'post', $post_id, $option_id, $default_value, $get_original_value );
@@ -85,11 +96,22 @@
85
  /**
86
  * Set post option value in database
87
  *
88
- * @param int $post_id
89
  * @param string|null $option_id Specific option id (accepts multikey). null - all options
90
  * @param $value
91
  */
92
- function fw_set_db_post_option( $post_id, $option_id = null, $value ) {
 
 
 
 
 
 
 
 
 
 
 
93
  $option_id = 'fw_options' . ( $option_id !== null ? '/' . $option_id : '' );
94
 
95
  FW_WP_Meta::set( 'post', $post_id, $option_id, $value );
@@ -218,7 +240,7 @@
218
  return null;
219
  }
220
 
221
- $value = FW_WP_Option::get( 'fw_ext_settings_options:'. $extension_name, $option_id, $default_value, $get_original_value );
222
 
223
  if ( is_null( $value ) ) {
224
  /**
@@ -226,7 +248,7 @@
226
  * Extract the default values from the options array and try to find there the option id
227
  */
228
 
229
- $cache_key = 'fw_default_options_values/ext_settings:'. $extension_name;
230
 
231
  try {
232
  $all_options_values = FW_Cache::get( $cache_key );
@@ -265,18 +287,20 @@
265
  return;
266
  }
267
 
268
- FW_WP_Option::set( 'fw_ext_settings_options:'. $extension_name, $option_id, $value );
269
  }
270
  }
271
 
272
  {
273
  /**
274
  * Get user meta set by specific extension
 
275
  * @param int $user_id
276
  * @param string $extension_name
277
  *
278
  * If the extension doesn't exist or is disabled, or meta key doesn't exist, returns null,
279
  * else returns the meta key value
 
280
  * @return mixed|null
281
  */
282
  function fw_get_db_extension_user_data( $user_id, $extension_name ) {
@@ -299,6 +323,7 @@
299
  * @param mixed $value
300
  *
301
  * In case the extension doesn't exist or is disabled, or the value is equal to previous, returns false
 
302
  * @return bool|int
303
  */
304
  function fw_set_db_extension_user_data( $user_id, $extension_name, $value ) {
@@ -309,6 +334,7 @@
309
  }
310
  $data = get_user_meta( $user_id, 'fw_data', true );
311
  $data[ $extension_name ] = $value;
 
312
  return fw_update_user_meta( $user_id, 'fw_data', $data );
313
  }
314
  }
15
  */
16
  function fw_get_db_settings_option( $option_id = null, $default_value = null, $get_original_value = null ) {
17
  $value = FW_WP_Option::get(
18
+ 'fw_theme_settings_options:' . fw()->theme->manifest->get_id(),
19
  $option_id, $default_value, $get_original_value
20
  );
21
 
58
  */
59
  function fw_set_db_settings_option( $option_id = null, $value ) {
60
  FW_WP_Option::set(
61
+ 'fw_theme_settings_options:' . fw()->theme->manifest->get_id(),
62
  $option_id, $value
63
  );
64
  }
69
  /**
70
  * Get post option value from the database
71
  *
72
+ * @param null|int $post_id
73
  * @param string|null $option_id Specific option id (accepts multikey). null - all options
74
  * @param null|mixed $default_value If no option found in the database, this value will be returned
75
  * @param null|bool $get_original_value Original value is that with no translations and other changes
76
  *
77
  * @return mixed|null
78
  */
79
+ function fw_get_db_post_option( $post_id = null, $option_id = null, $default_value = null, $get_original_value = null ) {
80
+ if ( ! $post_id ) {
81
+ /** @var WP_Post $post */
82
+ global $post;
83
+
84
+ if ( ! $post ) {
85
+ return $default_value;
86
+ } else {
87
+ $post_id = $post->ID;
88
+ }
89
+ }
90
+
91
  $option_id = 'fw_options' . ( $option_id !== null ? '/' . $option_id : '' );
92
 
93
  return FW_WP_Meta::get( 'post', $post_id, $option_id, $default_value, $get_original_value );
96
  /**
97
  * Set post option value in database
98
  *
99
+ * @param null|int $post_id
100
  * @param string|null $option_id Specific option id (accepts multikey). null - all options
101
  * @param $value
102
  */
103
+ function fw_set_db_post_option( $post_id = null, $option_id = null, $value ) {
104
+ if ( ! $post_id ) {
105
+ /** @var WP_Post $post */
106
+ global $post;
107
+
108
+ if ( ! $post ) {
109
+ return;
110
+ } else {
111
+ $post_id = $post->ID;
112
+ }
113
+ }
114
+
115
  $option_id = 'fw_options' . ( $option_id !== null ? '/' . $option_id : '' );
116
 
117
  FW_WP_Meta::set( 'post', $post_id, $option_id, $value );
240
  return null;
241
  }
242
 
243
+ $value = FW_WP_Option::get( 'fw_ext_settings_options:' . $extension_name, $option_id, $default_value, $get_original_value );
244
 
245
  if ( is_null( $value ) ) {
246
  /**
248
  * Extract the default values from the options array and try to find there the option id
249
  */
250
 
251
+ $cache_key = 'fw_default_options_values/ext_settings:' . $extension_name;
252
 
253
  try {
254
  $all_options_values = FW_Cache::get( $cache_key );
287
  return;
288
  }
289
 
290
+ FW_WP_Option::set( 'fw_ext_settings_options:' . $extension_name, $option_id, $value );
291
  }
292
  }
293
 
294
  {
295
  /**
296
  * Get user meta set by specific extension
297
+ *
298
  * @param int $user_id
299
  * @param string $extension_name
300
  *
301
  * If the extension doesn't exist or is disabled, or meta key doesn't exist, returns null,
302
  * else returns the meta key value
303
+ *
304
  * @return mixed|null
305
  */
306
  function fw_get_db_extension_user_data( $user_id, $extension_name ) {
323
  * @param mixed $value
324
  *
325
  * In case the extension doesn't exist or is disabled, or the value is equal to previous, returns false
326
+ *
327
  * @return bool|int
328
  */
329
  function fw_set_db_extension_user_data( $user_id, $extension_name, $value ) {
334
  }
335
  $data = get_user_meta( $user_id, 'fw_data', true );
336
  $data[ $extension_name ] = $value;
337
+
338
  return fw_update_user_meta( $user_id, 'fw_data', $data );
339
  }
340
  }
framework/manifest.php CHANGED
@@ -4,4 +4,4 @@ $manifest = array();
4
 
5
  $manifest['name'] = __('Unyson', 'fw');
6
 
7
- $manifest['version'] = '2.1.7';
4
 
5
  $manifest['name'] = __('Unyson', 'fw');
6
 
7
+ $manifest['version'] = '2.1.8';
framework/static/js/fw.js CHANGED
@@ -38,207 +38,191 @@ fw.intval = function(val)
38
 
39
  /**
40
  * Calculate md5 hash of the string
 
41
  */
42
- fw.md5 = function(string)
43
- {
44
- function RotateLeft(lValue, iShiftBits) {
45
- return (lValue<<iShiftBits) | (lValue>>>(32-iShiftBits));
46
- }
47
-
48
- function AddUnsigned(lX,lY) {
49
- var lX4,lY4,lX8,lY8,lResult;
50
- lX8 = (lX & 0x80000000);
51
- lY8 = (lY & 0x80000000);
52
- lX4 = (lX & 0x40000000);
53
- lY4 = (lY & 0x40000000);
54
- lResult = (lX & 0x3FFFFFFF)+(lY & 0x3FFFFFFF);
55
- if (lX4 & lY4) {
56
- return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
57
- }
58
- if (lX4 | lY4) {
59
- if (lResult & 0x40000000) {
60
- return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
61
- } else {
62
- return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
63
- }
64
- } else {
65
- return (lResult ^ lX8 ^ lY8);
66
- }
67
- }
68
 
69
- function F(x,y,z) { return (x & y) | ((~x) & z); }
70
- function G(x,y,z) { return (x & z) | (y & (~z)); }
71
- function H(x,y,z) { return (x ^ y ^ z); }
72
- function I(x,y,z) { return (y ^ (x | (~z))); }
73
-
74
- function FF(a,b,c,d,x,s,ac) {
75
- a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));
76
- return AddUnsigned(RotateLeft(a, s), b);
77
- };
78
-
79
- function GG(a,b,c,d,x,s,ac) {
80
- a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));
81
- return AddUnsigned(RotateLeft(a, s), b);
82
- };
83
-
84
- function HH(a,b,c,d,x,s,ac) {
85
- a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));
86
- return AddUnsigned(RotateLeft(a, s), b);
87
- };
88
 
89
- function II(a,b,c,d,x,s,ac) {
90
- a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));
91
- return AddUnsigned(RotateLeft(a, s), b);
92
- };
 
 
 
 
 
 
 
 
93
 
94
- function ConvertToWordArray(string) {
95
- var lWordCount;
96
- var lMessageLength = string.length;
97
- var lNumberOfWords_temp1=lMessageLength + 8;
98
- var lNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1 % 64))/64;
99
- var lNumberOfWords = (lNumberOfWords_temp2+1)*16;
100
- var lWordArray=Array(lNumberOfWords-1);
101
- var lBytePosition = 0;
102
- var lByteCount = 0;
103
- while ( lByteCount < lMessageLength ) {
104
- lWordCount = (lByteCount-(lByteCount % 4))/4;
105
- lBytePosition = (lByteCount % 4)*8;
106
- lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount)<<lBytePosition));
107
- lByteCount++;
108
- }
109
- lWordCount = (lByteCount-(lByteCount % 4))/4;
110
- lBytePosition = (lByteCount % 4)*8;
111
- lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80<<lBytePosition);
112
- lWordArray[lNumberOfWords-2] = lMessageLength<<3;
113
- lWordArray[lNumberOfWords-1] = lMessageLength>>>29;
114
- return lWordArray;
115
- };
116
 
117
- function WordToHex(lValue) {
118
- var WordToHexValue="",WordToHexValue_temp="",lByte,lCount;
119
- for (lCount = 0;lCount<=3;lCount++) {
120
- lByte = (lValue>>>(lCount*8)) & 255;
121
- WordToHexValue_temp = "0" + lByte.toString(16);
122
- WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length-2,2);
123
- }
124
- return WordToHexValue;
125
- };
 
126
 
127
- function Utf8Encode(string) {
128
- string = string.replace(/\r\n/g,"\n");
129
- var utftext = "";
 
 
 
 
130
 
131
- for (var n = 0; n < string.length; n++) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
132
 
133
- var c = string.charCodeAt(n);
 
 
 
 
 
 
 
 
 
134
 
135
- if (c < 128) {
136
- utftext += String.fromCharCode(c);
137
- }
138
- else if((c > 127) && (c < 2048)) {
139
- utftext += String.fromCharCode((c >> 6) | 192);
140
- utftext += String.fromCharCode((c & 63) | 128);
141
- }
142
- else {
143
- utftext += String.fromCharCode((c >> 12) | 224);
144
- utftext += String.fromCharCode(((c >> 6) & 63) | 128);
145
- utftext += String.fromCharCode((c & 63) | 128);
146
- }
147
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
148
  }
149
-
150
- return utftext;
151
- };
152
-
153
- var x=Array();
154
- var k,AA,BB,CC,DD,a,b,c,d;
155
- var S11=7, S12=12, S13=17, S14=22;
156
- var S21=5, S22=9 , S23=14, S24=20;
157
- var S31=4, S32=11, S33=16, S34=23;
158
- var S41=6, S42=10, S43=15, S44=21;
159
-
160
- string = Utf8Encode(string);
161
-
162
- x = ConvertToWordArray(string);
163
-
164
- a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476;
165
-
166
- for (k=0;k<x.length;k+=16) {
167
- AA=a; BB=b; CC=c; DD=d;
168
- a=FF(a,b,c,d,x[k+0], S11,0xD76AA478);
169
- d=FF(d,a,b,c,x[k+1], S12,0xE8C7B756);
170
- c=FF(c,d,a,b,x[k+2], S13,0x242070DB);
171
- b=FF(b,c,d,a,x[k+3], S14,0xC1BDCEEE);
172
- a=FF(a,b,c,d,x[k+4], S11,0xF57C0FAF);
173
- d=FF(d,a,b,c,x[k+5], S12,0x4787C62A);
174
- c=FF(c,d,a,b,x[k+6], S13,0xA8304613);
175
- b=FF(b,c,d,a,x[k+7], S14,0xFD469501);
176
- a=FF(a,b,c,d,x[k+8], S11,0x698098D8);
177
- d=FF(d,a,b,c,x[k+9], S12,0x8B44F7AF);
178
- c=FF(c,d,a,b,x[k+10],S13,0xFFFF5BB1);
179
- b=FF(b,c,d,a,x[k+11],S14,0x895CD7BE);
180
- a=FF(a,b,c,d,x[k+12],S11,0x6B901122);
181
- d=FF(d,a,b,c,x[k+13],S12,0xFD987193);
182
- c=FF(c,d,a,b,x[k+14],S13,0xA679438E);
183
- b=FF(b,c,d,a,x[k+15],S14,0x49B40821);
184
- a=GG(a,b,c,d,x[k+1], S21,0xF61E2562);
185
- d=GG(d,a,b,c,x[k+6], S22,0xC040B340);
186
- c=GG(c,d,a,b,x[k+11],S23,0x265E5A51);
187
- b=GG(b,c,d,a,x[k+0], S24,0xE9B6C7AA);
188
- a=GG(a,b,c,d,x[k+5], S21,0xD62F105D);
189
- d=GG(d,a,b,c,x[k+10],S22,0x2441453);
190
- c=GG(c,d,a,b,x[k+15],S23,0xD8A1E681);
191
- b=GG(b,c,d,a,x[k+4], S24,0xE7D3FBC8);
192
- a=GG(a,b,c,d,x[k+9], S21,0x21E1CDE6);
193
- d=GG(d,a,b,c,x[k+14],S22,0xC33707D6);
194
- c=GG(c,d,a,b,x[k+3], S23,0xF4D50D87);
195
- b=GG(b,c,d,a,x[k+8], S24,0x455A14ED);
196
- a=GG(a,b,c,d,x[k+13],S21,0xA9E3E905);
197
- d=GG(d,a,b,c,x[k+2], S22,0xFCEFA3F8);
198
- c=GG(c,d,a,b,x[k+7], S23,0x676F02D9);
199
- b=GG(b,c,d,a,x[k+12],S24,0x8D2A4C8A);
200
- a=HH(a,b,c,d,x[k+5], S31,0xFFFA3942);
201
- d=HH(d,a,b,c,x[k+8], S32,0x8771F681);
202
- c=HH(c,d,a,b,x[k+11],S33,0x6D9D6122);
203
- b=HH(b,c,d,a,x[k+14],S34,0xFDE5380C);
204
- a=HH(a,b,c,d,x[k+1], S31,0xA4BEEA44);
205
- d=HH(d,a,b,c,x[k+4], S32,0x4BDECFA9);
206
- c=HH(c,d,a,b,x[k+7], S33,0xF6BB4B60);
207
- b=HH(b,c,d,a,x[k+10],S34,0xBEBFBC70);
208
- a=HH(a,b,c,d,x[k+13],S31,0x289B7EC6);
209
- d=HH(d,a,b,c,x[k+0], S32,0xEAA127FA);
210
- c=HH(c,d,a,b,x[k+3], S33,0xD4EF3085);
211
- b=HH(b,c,d,a,x[k+6], S34,0x4881D05);
212
- a=HH(a,b,c,d,x[k+9], S31,0xD9D4D039);
213
- d=HH(d,a,b,c,x[k+12],S32,0xE6DB99E5);
214
- c=HH(c,d,a,b,x[k+15],S33,0x1FA27CF8);
215
- b=HH(b,c,d,a,x[k+2], S34,0xC4AC5665);
216
- a=II(a,b,c,d,x[k+0], S41,0xF4292244);
217
- d=II(d,a,b,c,x[k+7], S42,0x432AFF97);
218
- c=II(c,d,a,b,x[k+14],S43,0xAB9423A7);
219
- b=II(b,c,d,a,x[k+5], S44,0xFC93A039);
220
- a=II(a,b,c,d,x[k+12],S41,0x655B59C3);
221
- d=II(d,a,b,c,x[k+3], S42,0x8F0CCC92);
222
- c=II(c,d,a,b,x[k+10],S43,0xFFEFF47D);
223
- b=II(b,c,d,a,x[k+1], S44,0x85845DD1);
224
- a=II(a,b,c,d,x[k+8], S41,0x6FA87E4F);
225
- d=II(d,a,b,c,x[k+15],S42,0xFE2CE6E0);
226
- c=II(c,d,a,b,x[k+6], S43,0xA3014314);
227
- b=II(b,c,d,a,x[k+13],S44,0x4E0811A1);
228
- a=II(a,b,c,d,x[k+4], S41,0xF7537E82);
229
- d=II(d,a,b,c,x[k+11],S42,0xBD3AF235);
230
- c=II(c,d,a,b,x[k+2], S43,0x2AD7D2BB);
231
- b=II(b,c,d,a,x[k+9], S44,0xEB86D391);
232
- a=AddUnsigned(a,AA);
233
- b=AddUnsigned(b,BB);
234
- c=AddUnsigned(c,CC);
235
- d=AddUnsigned(d,DD);
236
  }
237
 
238
- var temp = WordToHex(a)+WordToHex(b)+WordToHex(c)+WordToHex(d);
239
-
240
- return temp.toLowerCase();
241
- };
242
 
243
  /**
244
  * Show/Hide loading on page
38
 
39
  /**
40
  * Calculate md5 hash of the string
41
+ * @param {String} string
42
  */
43
+ fw.md5 = (function(){
44
+ "use strict";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45
 
46
+ /*
47
+ * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
48
+ * Digest Algorithm, as defined in RFC 1321.
49
+ * Copyright (C) Paul Johnston 1999 - 2000.
50
+ * Updated by Greg Holt 2000 - 2001.
51
+ * See http://pajhome.org.uk/site/legal.html for details.
52
+ */
 
 
 
 
 
 
 
 
 
 
 
 
53
 
54
+ /*
55
+ * Convert a 32-bit number to a hex string with ls-byte first
56
+ */
57
+ var hex_chr = "0123456789abcdef";
58
+ function rhex(num)
59
+ {
60
+ var str = "", j;
61
+ for(j = 0; j <= 3; j++)
62
+ str += hex_chr.charAt((num >> (j * 8 + 4)) & 0x0F) +
63
+ hex_chr.charAt((num >> (j * 8)) & 0x0F);
64
+ return str;
65
+ }
66
 
67
+ /*
68
+ * Convert a string to a sequence of 16-word blocks, stored as an array.
69
+ * Append padding bits and the length, as described in the MD5 standard.
70
+ */
71
+ function str2blks_MD5(str)
72
+ {
73
+ var nblk = ((str.length + 8) >> 6) + 1,
74
+ blks = new Array(nblk * 16),
75
+ i;
76
+ for(i = 0; i < nblk * 16; i++) blks[i] = 0;
77
+ for(i = 0; i < str.length; i++)
78
+ blks[i >> 2] |= str.charCodeAt(i) << ((i % 4) * 8);
79
+ blks[i >> 2] |= 0x80 << ((i % 4) * 8);
80
+ blks[nblk * 16 - 2] = str.length * 8;
81
+ return blks;
82
+ }
 
 
 
 
 
 
83
 
84
+ /*
85
+ * Add integers, wrapping at 2^32. This uses 16-bit operations internally
86
+ * to work around bugs in some JS interpreters.
87
+ */
88
+ function add(x, y)
89
+ {
90
+ var lsw = (x & 0xFFFF) + (y & 0xFFFF);
91
+ var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
92
+ return (msw << 16) | (lsw & 0xFFFF);
93
+ }
94
 
95
+ /*
96
+ * Bitwise rotate a 32-bit number to the left
97
+ */
98
+ function rol(num, cnt)
99
+ {
100
+ return (num << cnt) | (num >>> (32 - cnt));
101
+ }
102
 
103
+ /*
104
+ * These functions implement the basic operation for each round of the
105
+ * algorithm.
106
+ */
107
+ function cmn(q, a, b, x, s, t)
108
+ {
109
+ return add(rol(add(add(a, q), add(x, t)), s), b);
110
+ }
111
+ function ff(a, b, c, d, x, s, t)
112
+ {
113
+ return cmn((b & c) | ((~b) & d), a, b, x, s, t);
114
+ }
115
+ function gg(a, b, c, d, x, s, t)
116
+ {
117
+ return cmn((b & d) | (c & (~d)), a, b, x, s, t);
118
+ }
119
+ function hh(a, b, c, d, x, s, t)
120
+ {
121
+ return cmn(b ^ c ^ d, a, b, x, s, t);
122
+ }
123
+ function ii(a, b, c, d, x, s, t)
124
+ {
125
+ return cmn(c ^ (b | (~d)), a, b, x, s, t);
126
+ }
127
 
128
+ /*
129
+ * Take a string and return the hex representation of its MD5.
130
+ */
131
+ function calcMD5(str)
132
+ {
133
+ var x = str2blks_MD5(str);
134
+ var a = 1732584193;
135
+ var b = -271733879;
136
+ var c = -1732584194;
137
+ var d = 271733878;
138
 
139
+ var i, olda, oldb, oldc, oldd;
 
 
 
 
 
 
 
 
 
 
 
140
 
141
+ for(i = 0; i < x.length; i += 16)
142
+ {
143
+ olda = a;
144
+ oldb = b;
145
+ oldc = c;
146
+ oldd = d;
147
+
148
+ a = ff(a, b, c, d, x[i+ 0], 7 , -680876936);
149
+ d = ff(d, a, b, c, x[i+ 1], 12, -389564586);
150
+ c = ff(c, d, a, b, x[i+ 2], 17, 606105819);
151
+ b = ff(b, c, d, a, x[i+ 3], 22, -1044525330);
152
+ a = ff(a, b, c, d, x[i+ 4], 7 , -176418897);
153
+ d = ff(d, a, b, c, x[i+ 5], 12, 1200080426);
154
+ c = ff(c, d, a, b, x[i+ 6], 17, -1473231341);
155
+ b = ff(b, c, d, a, x[i+ 7], 22, -45705983);
156
+ a = ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
157
+ d = ff(d, a, b, c, x[i+ 9], 12, -1958414417);
158
+ c = ff(c, d, a, b, x[i+10], 17, -42063);
159
+ b = ff(b, c, d, a, x[i+11], 22, -1990404162);
160
+ a = ff(a, b, c, d, x[i+12], 7 , 1804603682);
161
+ d = ff(d, a, b, c, x[i+13], 12, -40341101);
162
+ c = ff(c, d, a, b, x[i+14], 17, -1502002290);
163
+ b = ff(b, c, d, a, x[i+15], 22, 1236535329);
164
+
165
+ a = gg(a, b, c, d, x[i+ 1], 5 , -165796510);
166
+ d = gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
167
+ c = gg(c, d, a, b, x[i+11], 14, 643717713);
168
+ b = gg(b, c, d, a, x[i+ 0], 20, -373897302);
169
+ a = gg(a, b, c, d, x[i+ 5], 5 , -701558691);
170
+ d = gg(d, a, b, c, x[i+10], 9 , 38016083);
171
+ c = gg(c, d, a, b, x[i+15], 14, -660478335);
172
+ b = gg(b, c, d, a, x[i+ 4], 20, -405537848);
173
+ a = gg(a, b, c, d, x[i+ 9], 5 , 568446438);
174
+ d = gg(d, a, b, c, x[i+14], 9 , -1019803690);
175
+ c = gg(c, d, a, b, x[i+ 3], 14, -187363961);
176
+ b = gg(b, c, d, a, x[i+ 8], 20, 1163531501);
177
+ a = gg(a, b, c, d, x[i+13], 5 , -1444681467);
178
+ d = gg(d, a, b, c, x[i+ 2], 9 , -51403784);
179
+ c = gg(c, d, a, b, x[i+ 7], 14, 1735328473);
180
+ b = gg(b, c, d, a, x[i+12], 20, -1926607734);
181
+
182
+ a = hh(a, b, c, d, x[i+ 5], 4 , -378558);
183
+ d = hh(d, a, b, c, x[i+ 8], 11, -2022574463);
184
+ c = hh(c, d, a, b, x[i+11], 16, 1839030562);
185
+ b = hh(b, c, d, a, x[i+14], 23, -35309556);
186
+ a = hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
187
+ d = hh(d, a, b, c, x[i+ 4], 11, 1272893353);
188
+ c = hh(c, d, a, b, x[i+ 7], 16, -155497632);
189
+ b = hh(b, c, d, a, x[i+10], 23, -1094730640);
190
+ a = hh(a, b, c, d, x[i+13], 4 , 681279174);
191
+ d = hh(d, a, b, c, x[i+ 0], 11, -358537222);
192
+ c = hh(c, d, a, b, x[i+ 3], 16, -722521979);
193
+ b = hh(b, c, d, a, x[i+ 6], 23, 76029189);
194
+ a = hh(a, b, c, d, x[i+ 9], 4 , -640364487);
195
+ d = hh(d, a, b, c, x[i+12], 11, -421815835);
196
+ c = hh(c, d, a, b, x[i+15], 16, 530742520);
197
+ b = hh(b, c, d, a, x[i+ 2], 23, -995338651);
198
+
199
+ a = ii(a, b, c, d, x[i+ 0], 6 , -198630844);
200
+ d = ii(d, a, b, c, x[i+ 7], 10, 1126891415);
201
+ c = ii(c, d, a, b, x[i+14], 15, -1416354905);
202
+ b = ii(b, c, d, a, x[i+ 5], 21, -57434055);
203
+ a = ii(a, b, c, d, x[i+12], 6 , 1700485571);
204
+ d = ii(d, a, b, c, x[i+ 3], 10, -1894986606);
205
+ c = ii(c, d, a, b, x[i+10], 15, -1051523);
206
+ b = ii(b, c, d, a, x[i+ 1], 21, -2054922799);
207
+ a = ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
208
+ d = ii(d, a, b, c, x[i+15], 10, -30611744);
209
+ c = ii(c, d, a, b, x[i+ 6], 15, -1560198380);
210
+ b = ii(b, c, d, a, x[i+13], 21, 1309151649);
211
+ a = ii(a, b, c, d, x[i+ 4], 6 , -145523070);
212
+ d = ii(d, a, b, c, x[i+11], 10, -1120210379);
213
+ c = ii(c, d, a, b, x[i+ 2], 15, 718787259);
214
+ b = ii(b, c, d, a, x[i+ 9], 21, -343485551);
215
+
216
+ a = add(a, olda);
217
+ b = add(b, oldb);
218
+ c = add(c, oldc);
219
+ d = add(d, oldd);
220
  }
221
+ return rhex(a) + rhex(b) + rhex(c) + rhex(d);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
222
  }
223
 
224
+ return calcMD5;
225
+ })();
 
 
226
 
227
  /**
228
  * Show/Hide loading on page
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: unyson, themefusecom
3
  Tags: page builder, cms, grid, layout, responsive, back up, backup, db backup, dump, migrate, schedule, search engine optimization, seo, media, slideshow, shortcode, slide, slideshare, slideshow, google sitemaps, sitemaps, analytics, google analytics, calendar, event, events, google maps, learning, lessons, sidebars, breadcrumbs, review, portfolio
4
  Requires at least: 4.0.0
5
  Tested up to: 4.0.1
6
- Stable tag: 2.1.7
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
@@ -84,6 +84,9 @@ Yes; Unyson will work with any theme.
84
 
85
  == Changelog ==
86
 
 
 
 
87
  = 2.1.7 =
88
  * Fixed real_path&lt;-&gt;wp_filesystem_path conversion on installations with custom plugins directory (Bedrock WordPress Stack).
89
 
3
  Tags: page builder, cms, grid, layout, responsive, back up, backup, db backup, dump, migrate, schedule, search engine optimization, seo, media, slideshow, shortcode, slide, slideshare, slideshow, google sitemaps, sitemaps, analytics, google analytics, calendar, event, events, google maps, learning, lessons, sidebars, breadcrumbs, review, portfolio
4
  Requires at least: 4.0.0
5
  Tested up to: 4.0.1
6
+ Stable tag: 2.1.8
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
84
 
85
  == Changelog ==
86
 
87
+ = 2.1.8 =
88
+ * Minor fixes [#117](https://github.com/ThemeFuse/Unyson/issues/117)
89
+
90
  = 2.1.7 =
91
  * Fixed real_path&lt;-&gt;wp_filesystem_path conversion on installations with custom plugins directory (Bedrock WordPress Stack).
92
 
unyson.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Unyson
4
  * Plugin URI: http://unyson.themefuse.com/
5
  * Description: A free drag & drop framework that comes with a bunch of built in extensions that will help you develop premium themes fast & easy.
6
- * Version: 2.1.7
7
  * Author: ThemeFuse
8
  * Author URI: http://themefuse.com
9
  * License: GPL2+
3
  * Plugin Name: Unyson
4
  * Plugin URI: http://unyson.themefuse.com/
5
  * Description: A free drag & drop framework that comes with a bunch of built in extensions that will help you develop premium themes fast & easy.
6
+ * Version: 2.1.8
7
  * Author: ThemeFuse
8
  * Author URI: http://themefuse.com
9
  * License: GPL2+