Cyr-To-Lat - Version 5.2.0

Version Description

(27.07.2021) = * Add support for categories and tags in other languages with wpml.

Download this release

Release Info

Developer mihdan
Plugin Icon 128x128 Cyr-To-Lat
Version 5.2.0
Comparing to
See all releases

Code changes from version 5.1.0 to 5.2.0

auth.json CHANGED
@@ -1,5 +1,5 @@
1
  {
2
  "github-oauth": {
3
- "github.com": "ghs_fjJ8J8shkWRKMd6pm8bUJi2ZxwauIV0GIY98"
4
  }
5
  }
1
  {
2
  "github-oauth": {
3
+ "github.com": "ghs_Wz2uCvngOk1ZpX3dHUHfjLmTxdkhal1IDpnF"
4
  }
5
  }
cyr-to-lat.php CHANGED
@@ -10,7 +10,7 @@
10
  * Plugin Name: Cyr-To-Lat
11
  * Plugin URI: https://wordpress.org/plugins/cyr2lat/
12
  * Description: Convert Non-Latin characters in post and term slugs to Latin characters. Useful for creating human-readable URLs. Based on the original plugin by Anton Skorobogatov.
13
- * Version: 5.1.0
14
  * Requires at least: 5.1
15
  * Requires PHP: 5.6.20
16
  * Author: Sergey Biryukov, Mikhail Kobzarev, Igor Gergel
@@ -36,7 +36,7 @@ if ( defined( 'CYR_TO_LAT_VERSION' ) ) {
36
  /**
37
  * Plugin version.
38
  */
39
- define( 'CYR_TO_LAT_VERSION', '5.1.0' );
40
 
41
  /**
42
  * Path to the plugin dir.
10
  * Plugin Name: Cyr-To-Lat
11
  * Plugin URI: https://wordpress.org/plugins/cyr2lat/
12
  * Description: Convert Non-Latin characters in post and term slugs to Latin characters. Useful for creating human-readable URLs. Based on the original plugin by Anton Skorobogatov.
13
+ * Version: 5.2.0
14
  * Requires at least: 5.1
15
  * Requires PHP: 5.6.20
16
  * Author: Sergey Biryukov, Mikhail Kobzarev, Igor Gergel
36
  /**
37
  * Plugin version.
38
  */
39
+ define( 'CYR_TO_LAT_VERSION', '5.2.0' );
40
 
41
  /**
42
  * Path to the plugin dir.
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: SergeyBiryukov, mihdan, karevn, webvitaly, kaggdesign
3
  Tags: cyrillic, belorussian, ukrainian, bulgarian, macedonian, georgian, kazakh, latin, l10n, russian, cyr-to-lat, cyr2lat, rustolat, slugs, translations, transliteration
4
  Requires at least: 5.1
5
  Tested up to: 5.8
6
- Stable tag: 5.1.0
7
  Requires PHP: 5.6.20
8
 
9
  Convert Non-Latin characters in post, page and term slugs to Latin characters.
@@ -188,6 +188,9 @@ Yes you can!
188
 
189
  == Changelog ==
190
 
 
 
 
191
  = 5.1.0 (19.07.2021) =
192
  * Fix issue-95 - 404 on localized terms created before plugin install.
193
  * Add cache flushing after batch conversion.
3
  Tags: cyrillic, belorussian, ukrainian, bulgarian, macedonian, georgian, kazakh, latin, l10n, russian, cyr-to-lat, cyr2lat, rustolat, slugs, translations, transliteration
4
  Requires at least: 5.1
5
  Tested up to: 5.8
6
+ Stable tag: 5.2.0
7
  Requires PHP: 5.6.20
8
 
9
  Convert Non-Latin characters in post, page and term slugs to Latin characters.
188
 
189
  == Changelog ==
190
 
191
+ = 5.2.0 (27.07.2021) =
192
+ * Add support for categories and tags in other languages with wpml.
193
+
194
  = 5.1.0 (19.07.2021) =
195
  * Fix issue-95 - 404 on localized terms created before plugin install.
196
  * Add cache flushing after batch conversion.
src/php/Settings/Abstracts/SettingsBase.php CHANGED
@@ -217,7 +217,6 @@ abstract class SettingsBase {
217
  * Is this the main menu page.
218
  *
219
  * @return bool
220
- * @noinspection PhpPureAttributeCanBeAddedInspection
221
  */
222
  protected function is_main_menu_page() {
223
  // Main menu page should have empty string as parent slug.
@@ -262,7 +261,7 @@ abstract class SettingsBase {
262
  * With Multisite active this can also include
263
  * 'network_active' and 'network_only' items.
264
  *
265
- * @return array|mixed Plugin links
266
  */
267
  public function add_settings_link( array $actions ) {
268
  $new_actions = [
217
  * Is this the main menu page.
218
  *
219
  * @return bool
 
220
  */
221
  protected function is_main_menu_page() {
222
  // Main menu page should have empty string as parent slug.
261
  * With Multisite active this can also include
262
  * 'network_active' and 'network_only' items.
263
  *
264
+ * @return array|string[] Plugin links
265
  */
266
  public function add_settings_link( array $actions ) {
267
  $new_actions = [
src/php/Settings/Converter.php CHANGED
@@ -87,15 +87,6 @@ class Converter extends PluginSettingsBase {
87
  return '';
88
  }
89
 
90
- /**
91
- * Get parent slug.
92
- *
93
- * @return string
94
- */
95
- protected function parent_slug() {
96
- return 'options-general.php';
97
- }
98
-
99
  /**
100
  * Init class hooks.
101
  */
@@ -201,7 +192,7 @@ class Converter extends PluginSettingsBase {
201
  public function delayed_init_settings() {
202
  $this->delayed_init_form_fields();
203
 
204
- parent::init_settings();
205
  }
206
 
207
  /**
87
  return '';
88
  }
89
 
 
 
 
 
 
 
 
 
 
90
  /**
91
  * Init class hooks.
92
  */
192
  public function delayed_init_settings() {
193
  $this->delayed_init_form_fields();
194
 
195
+ $this->init_settings();
196
  }
197
 
198
  /**
src/php/Settings/PluginSettingsBase.php CHANGED
@@ -29,8 +29,6 @@ abstract class PluginSettingsBase extends SettingsBase {
29
  * Get plugin url.
30
  *
31
  * @return string
32
- *
33
- * @noinspection PhpPureAttributeCanBeAddedInspection
34
  */
35
  protected function plugin_url() {
36
  return constant( 'CYR_TO_LAT_URL' );
@@ -40,8 +38,6 @@ abstract class PluginSettingsBase extends SettingsBase {
40
  * Get plugin version.
41
  *
42
  * @return string
43
- *
44
- * @noinspection PhpPureAttributeCanBeAddedInspection
45
  */
46
  protected function plugin_version() {
47
  return constant( 'CYR_TO_LAT_VERSION' );
29
  * Get plugin url.
30
  *
31
  * @return string
 
 
32
  */
33
  protected function plugin_url() {
34
  return constant( 'CYR_TO_LAT_URL' );
38
  * Get plugin version.
39
  *
40
  * @return string
 
 
41
  */
42
  protected function plugin_version() {
43
  return constant( 'CYR_TO_LAT_VERSION' );
src/php/Settings/Settings.php CHANGED
@@ -48,6 +48,8 @@ class Settings implements SettingsInterface {
48
 
49
  /**
50
  * Init class.
 
 
51
  */
52
  protected function init() {
53
  // Allow to specify MENU_PAGES item as one class, not an array.
48
 
49
  /**
50
  * Init class.
51
+ *
52
+ * @noinspection UnnecessaryCastingInspection
53
  */
54
  protected function init() {
55
  // Allow to specify MENU_PAGES item as one class, not an array.
src/php/Settings/Tables.php CHANGED
@@ -96,16 +96,6 @@ class Tables extends PluginSettingsBase {
96
  return '';
97
  }
98
 
99
- /**
100
- * Get parent slug.
101
- *
102
- * @return string
103
- */
104
- protected function parent_slug() {
105
- // Indicate that it is the main menu page.
106
- return 'options-general.php';
107
- }
108
-
109
  /**
110
  * Init locales.
111
  */
96
  return '';
97
  }
98
 
 
 
 
 
 
 
 
 
 
 
99
  /**
100
  * Init locales.
101
  */
src/php/background-processes/class-conversion-process.php CHANGED
@@ -45,7 +45,7 @@ class Conversion_Process extends WP_Background_Process {
45
  *
46
  * @param mixed $item Queue item to iterate over.
47
  *
48
- * @return mixed
49
  */
50
  protected function task( $item ) {
51
  return false;
45
  *
46
  * @param mixed $item Queue item to iterate over.
47
  *
48
+ * @return boolean
49
  */
50
  protected function task( $item ) {
51
  return false;
src/php/background-processes/class-post-conversion-process.php CHANGED
@@ -52,7 +52,7 @@ class Post_Conversion_Process extends Conversion_Process {
52
  *
53
  * @param stdClass $post Queue item to iterate over.
54
  *
55
- * @return mixed
56
  * @noinspection PhpParameterNameChangedDuringInheritanceInspection
57
  */
58
  protected function task( $post ) {
52
  *
53
  * @param stdClass $post Queue item to iterate over.
54
  *
55
+ * @return boolean
56
  * @noinspection PhpParameterNameChangedDuringInheritanceInspection
57
  */
58
  protected function task( $post ) {
src/php/background-processes/class-term-conversion-process.php CHANGED
@@ -52,7 +52,7 @@ class Term_Conversion_Process extends Conversion_Process {
52
  *
53
  * @param stdClass $term Queue item to iterate over.
54
  *
55
- * @return mixed
56
  * @noinspection PhpParameterNameChangedDuringInheritanceInspection
57
  */
58
  protected function task( $term ) {
52
  *
53
  * @param stdClass $term Queue item to iterate over.
54
  *
55
+ * @return boolean
56
  * @noinspection PhpParameterNameChangedDuringInheritanceInspection
57
  */
58
  protected function task( $term ) {
src/php/class-conversion-tables.php CHANGED
@@ -1203,7 +1203,6 @@ class Conversion_Tables {
1203
  * On MacOS, files containing characters in the table, are sometimes encoded improperly.
1204
  *
1205
  * @return array
1206
- * @noinspection PhpArrayShapeAttributeCanBeAddedInspection
1207
  */
1208
  public static function get_fix_table_for_mac() {
1209
  /**
1203
  * On MacOS, files containing characters in the table, are sometimes encoded improperly.
1204
  *
1205
  * @return array
 
1206
  */
1207
  public static function get_fix_table_for_mac() {
1208
  /**
src/php/class-main.php CHANGED
@@ -11,6 +11,8 @@
11
 
12
  namespace Cyr_To_Lat;
13
 
 
 
14
  use WP_Error;
15
  use wpdb;
16
  use Exception;
@@ -153,9 +155,15 @@ class Main {
153
  add_filter( 'pre_insert_term', [ $this, 'pre_insert_term_filter' ], PHP_INT_MAX, 2 );
154
  add_filter( 'get_terms_args', [ $this, 'get_terms_args_filter' ], PHP_INT_MAX, 2 );
155
 
156
- if ( class_exists( 'Polylang' ) ) {
157
  add_filter( 'locale', [ $this, 'pll_locale_filter' ] );
158
  }
 
 
 
 
 
 
159
  }
160
 
161
  /**
@@ -390,7 +398,7 @@ class Main {
390
  * @param array $data An array of slashed post data.
391
  * @param array $postarr An array of sanitized, but otherwise unmodified post data.
392
  *
393
- * @return mixed
394
  * @noinspection PhpUnusedParameterInspection
395
  */
396
  public function sanitize_post_name( $data, $postarr = [] ) {
@@ -579,6 +587,24 @@ class Main {
579
  return $pll_get_term_language;
580
  }
581
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
582
  /**
583
  * Changes array of items into string of items, separated by comma and sql-escaped
584
  *
@@ -593,14 +619,15 @@ class Main {
593
  public function prepare_in( $items, $format = '%s' ) {
594
  global $wpdb;
595
 
596
- $items = (array) $items;
597
- $how_many = count( $items );
 
 
598
  if ( $how_many > 0 ) {
599
  $placeholders = array_fill( 0, $how_many, $format );
600
  $prepared_format = implode( ',', $placeholders );
601
- $prepared_in = $wpdb->prepare( $prepared_format, $items ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared
602
- } else {
603
- $prepared_in = '';
604
  }
605
 
606
  return $prepared_in;
11
 
12
  namespace Cyr_To_Lat;
13
 
14
+ use Polylang;
15
+ use SitePress;
16
  use WP_Error;
17
  use wpdb;
18
  use Exception;
155
  add_filter( 'pre_insert_term', [ $this, 'pre_insert_term_filter' ], PHP_INT_MAX, 2 );
156
  add_filter( 'get_terms_args', [ $this, 'get_terms_args_filter' ], PHP_INT_MAX, 2 );
157
 
158
+ if ( class_exists( Polylang::class ) ) {
159
  add_filter( 'locale', [ $this, 'pll_locale_filter' ] );
160
  }
161
+
162
+ if ( class_exists( SitePress::class ) ) {
163
+ // We cannot use locale filter here
164
+ // as WPML reverts locale at PHP_INT_MAX in \WPML\ST\MO\Hooks\LanguageSwitch::filterLocale.
165
+ add_filter( 'ctl_locale', [ $this, 'wpml_locale_filter' ], - PHP_INT_MAX );
166
+ }
167
  }
168
 
169
  /**
398
  * @param array $data An array of slashed post data.
399
  * @param array $postarr An array of sanitized, but otherwise unmodified post data.
400
  *
401
+ * @return array
402
  * @noinspection PhpUnusedParameterInspection
403
  */
404
  public function sanitize_post_name( $data, $postarr = [] ) {
587
  return $pll_get_term_language;
588
  }
589
 
590
+ /**
591
+ * Locale filter for WPML.
592
+ *
593
+ * @param string $locale Locale.
594
+ *
595
+ * @return string
596
+ */
597
+ public function wpml_locale_filter( $locale ) {
598
+ $language_code = wpml_get_current_language();
599
+ $languages = apply_filters( 'wpml_active_languages', null );
600
+
601
+ if ( isset( $languages[ $language_code ] ) ) {
602
+ return $languages[ $language_code ]['default_locale'];
603
+ }
604
+
605
+ return $locale;
606
+ }
607
+
608
  /**
609
  * Changes array of items into string of items, separated by comma and sql-escaped
610
  *
619
  public function prepare_in( $items, $format = '%s' ) {
620
  global $wpdb;
621
 
622
+ $prepared_in = '';
623
+ $items = (array) $items;
624
+ $how_many = count( $items );
625
+
626
  if ( $how_many > 0 ) {
627
  $placeholders = array_fill( 0, $how_many, $format );
628
  $prepared_format = implode( ',', $placeholders );
629
+ // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared
630
+ $prepared_in = $wpdb->prepare( $prepared_format, $items );
 
631
  }
632
 
633
  return $prepared_in;
src/php/class-requirements.php CHANGED
@@ -182,8 +182,6 @@ if ( ! class_exists( __NAMESPACE__ . '\Requirements' ) ) {
182
 
183
  /**
184
  * Try to fix max_input_vars.
185
- *
186
- * @noinspection PhpStrFunctionsInspection
187
  */
188
  protected function try_to_fix_max_input_vars() {
189
  $user_ini_filename = $this->get_user_ini_filename();
@@ -225,7 +223,6 @@ if ( ! class_exists( __NAMESPACE__ . '\Requirements' ) ) {
225
  * Get .user.ini filename.
226
  *
227
  * @return string
228
- * @noinspection PhpPureAttributeCanBeAddedInspection
229
  */
230
  private function get_user_ini_filename() {
231
  return ABSPATH . 'wp-admin/' . ini_get( 'user_ini.filename' );
@@ -238,7 +235,7 @@ if ( ! class_exists( __NAMESPACE__ . '\Requirements' ) ) {
238
  $message = __( 'Please increase max input vars limit up to 1500.', 'cyr2lat' );
239
 
240
  $message .= '<br>';
241
- $message .= __( 'See: <a href="http://sevenspark.com/docs/ubermenu-3/faqs/menu-item-limit" target="_blank">Increasing max input vars limit.</a>', 'cyr2lat' );
242
 
243
  $this->admin_notices->add_notice(
244
  $message,
182
 
183
  /**
184
  * Try to fix max_input_vars.
 
 
185
  */
186
  protected function try_to_fix_max_input_vars() {
187
  $user_ini_filename = $this->get_user_ini_filename();
223
  * Get .user.ini filename.
224
  *
225
  * @return string
 
226
  */
227
  private function get_user_ini_filename() {
228
  return ABSPATH . 'wp-admin/' . ini_get( 'user_ini.filename' );
235
  $message = __( 'Please increase max input vars limit up to 1500.', 'cyr2lat' );
236
 
237
  $message .= '<br>';
238
+ $message .= __( 'See: <a href="https://sevenspark.com/docs/ubermenu-3/faqs/menu-item-limit" target="_blank">Increasing max input vars limit.</a>', 'cyr2lat' );
239
 
240
  $this->admin_notices->add_notice(
241
  $message,
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInitbbd01d49cde47496e63566fafeb98b8f::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInitb6b80d8d25d79e642dcd5e27493a9b6e::getLoader();
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInitbbd01d49cde47496e63566fafeb98b8f
6
  {
7
  private static $loader;
8
 
@@ -22,15 +22,15 @@ class ComposerAutoloaderInitbbd01d49cde47496e63566fafeb98b8f
22
  return self::$loader;
23
  }
24
 
25
- spl_autoload_register(array('ComposerAutoloaderInitbbd01d49cde47496e63566fafeb98b8f', 'loadClassLoader'), true, true);
26
  self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
27
- spl_autoload_unregister(array('ComposerAutoloaderInitbbd01d49cde47496e63566fafeb98b8f', 'loadClassLoader'));
28
 
29
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
30
  if ($useStaticLoader) {
31
  require __DIR__ . '/autoload_static.php';
32
 
33
- call_user_func(\Composer\Autoload\ComposerStaticInitbbd01d49cde47496e63566fafeb98b8f::getInitializer($loader));
34
  } else {
35
  $map = require __DIR__ . '/autoload_namespaces.php';
36
  foreach ($map as $namespace => $path) {
@@ -51,19 +51,19 @@ class ComposerAutoloaderInitbbd01d49cde47496e63566fafeb98b8f
51
  $loader->register(true);
52
 
53
  if ($useStaticLoader) {
54
- $includeFiles = Composer\Autoload\ComposerStaticInitbbd01d49cde47496e63566fafeb98b8f::$files;
55
  } else {
56
  $includeFiles = require __DIR__ . '/autoload_files.php';
57
  }
58
  foreach ($includeFiles as $fileIdentifier => $file) {
59
- composerRequirebbd01d49cde47496e63566fafeb98b8f($fileIdentifier, $file);
60
  }
61
 
62
  return $loader;
63
  }
64
  }
65
 
66
- function composerRequirebbd01d49cde47496e63566fafeb98b8f($fileIdentifier, $file)
67
  {
68
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
69
  require $file;
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInitb6b80d8d25d79e642dcd5e27493a9b6e
6
  {
7
  private static $loader;
8
 
22
  return self::$loader;
23
  }
24
 
25
+ spl_autoload_register(array('ComposerAutoloaderInitb6b80d8d25d79e642dcd5e27493a9b6e', 'loadClassLoader'), true, true);
26
  self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__)));
27
+ spl_autoload_unregister(array('ComposerAutoloaderInitb6b80d8d25d79e642dcd5e27493a9b6e', 'loadClassLoader'));
28
 
29
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
30
  if ($useStaticLoader) {
31
  require __DIR__ . '/autoload_static.php';
32
 
33
+ call_user_func(\Composer\Autoload\ComposerStaticInitb6b80d8d25d79e642dcd5e27493a9b6e::getInitializer($loader));
34
  } else {
35
  $map = require __DIR__ . '/autoload_namespaces.php';
36
  foreach ($map as $namespace => $path) {
51
  $loader->register(true);
52
 
53
  if ($useStaticLoader) {
54
+ $includeFiles = Composer\Autoload\ComposerStaticInitb6b80d8d25d79e642dcd5e27493a9b6e::$files;
55
  } else {
56
  $includeFiles = require __DIR__ . '/autoload_files.php';
57
  }
58
  foreach ($includeFiles as $fileIdentifier => $file) {
59
+ composerRequireb6b80d8d25d79e642dcd5e27493a9b6e($fileIdentifier, $file);
60
  }
61
 
62
  return $loader;
63
  }
64
  }
65
 
66
+ function composerRequireb6b80d8d25d79e642dcd5e27493a9b6e($fileIdentifier, $file)
67
  {
68
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
69
  require $file;
vendor/composer/autoload_static.php CHANGED
@@ -4,7 +4,7 @@
4
 
5
  namespace Composer\Autoload;
6
 
7
- class ComposerStaticInitbbd01d49cde47496e63566fafeb98b8f
8
  {
9
  public static $files = array (
10
  '344a0f93a05b8ca362c22e39586db500' => __DIR__ . '/../..' . '/lib/polyfill-mbstring/bootstrap.php',
@@ -36,7 +36,7 @@ class ComposerStaticInitbbd01d49cde47496e63566fafeb98b8f
36
  public static function getInitializer(ClassLoader $loader)
37
  {
38
  return \Closure::bind(function () use ($loader) {
39
- $loader->classMap = ComposerStaticInitbbd01d49cde47496e63566fafeb98b8f::$classMap;
40
 
41
  }, null, ClassLoader::class);
42
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInitb6b80d8d25d79e642dcd5e27493a9b6e
8
  {
9
  public static $files = array (
10
  '344a0f93a05b8ca362c22e39586db500' => __DIR__ . '/../..' . '/lib/polyfill-mbstring/bootstrap.php',
36
  public static function getInitializer(ClassLoader $loader)
37
  {
38
  return \Closure::bind(function () use ($loader) {
39
+ $loader->classMap = ComposerStaticInitb6b80d8d25d79e642dcd5e27493a9b6e::$classMap;
40
 
41
  }, null, ClassLoader::class);
42
  }
vendor/composer/installed.php CHANGED
@@ -1,22 +1,22 @@
1
  <?php return array(
2
  'root' => array(
3
- 'pretty_version' => '5.1.0',
4
- 'version' => '5.1.0.0',
5
  'type' => 'wordpress-plugin',
6
  'install_path' => __DIR__ . '/../../',
7
  'aliases' => array(),
8
- 'reference' => '5fc35e835642fb7fe80853de528ddc23f6964a0f',
9
  'name' => 'mihdan/cyr2lat',
10
  'dev' => false,
11
  ),
12
  'versions' => array(
13
  'mihdan/cyr2lat' => array(
14
- 'pretty_version' => '5.1.0',
15
- 'version' => '5.1.0.0',
16
  'type' => 'wordpress-plugin',
17
  'install_path' => __DIR__ . '/../../',
18
  'aliases' => array(),
19
- 'reference' => '5fc35e835642fb7fe80853de528ddc23f6964a0f',
20
  'dev_requirement' => false,
21
  ),
22
  ),
1
  <?php return array(
2
  'root' => array(
3
+ 'pretty_version' => '5.2.0',
4
+ 'version' => '5.2.0.0',
5
  'type' => 'wordpress-plugin',
6
  'install_path' => __DIR__ . '/../../',
7
  'aliases' => array(),
8
+ 'reference' => '9c6c7dd69a1f5aebba4ea83166e00056c79c93d5',
9
  'name' => 'mihdan/cyr2lat',
10
  'dev' => false,
11
  ),
12
  'versions' => array(
13
  'mihdan/cyr2lat' => array(
14
+ 'pretty_version' => '5.2.0',
15
+ 'version' => '5.2.0.0',
16
  'type' => 'wordpress-plugin',
17
  'install_path' => __DIR__ . '/../../',
18
  'aliases' => array(),
19
+ 'reference' => '9c6c7dd69a1f5aebba4ea83166e00056c79c93d5',
20
  'dev_requirement' => false,
21
  ),
22
  ),