WP Translitera - Version p1.0

Version Description

  • ()
  • ()
  • ()
  • ()
  • ()
  • ()
  • ---
  • Updated translation domain (translations)
  • New numbering of plug-in versions (other)
  • A new module update of plug-in (core)
  • Added full comments to the code (development)
  • New module of forced transliteration (core)
  • Added processing plugin installation (kernel)
Download this release

Release Info

Developer YurchenkoEV
Plugin Icon wp plugin WP Translitera
Version p1.0
Comparing to
See all releases

Code changes from version 170510 to p1.0

languages/{wp_translitera-ru_RU.mo → wp-translitera-ru_RU.mo} RENAMED
File without changes
languages/{wp_translitera-ru_RU.po → wp-translitera-ru_RU.po} RENAMED
File without changes
languages/{wp_translitera-uk.mo → wp-translitera-uk.mo} RENAMED
File without changes
languages/{wp_translitera-uk.po → wp-translitera-uk.po} RENAMED
File without changes
languages/{wp_translitera.pot → wp-translitera.pot} RENAMED
File without changes
readme.txt CHANGED
@@ -3,8 +3,8 @@ Contributors: YurchenkoEV
3
  Donate link: http://yur4enko.com/
4
  Tags: translate, rus-to-lat, cyr-to-lat, Seo, tag, record, page, transliterate, transliteration, bg, bulgarian
5
  Requires at least: 3.2
6
- Tested up to: 4.8
7
- Stable tag: 170510
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -28,6 +28,21 @@ Automatical from repository or unzip in plugins and activate in ACP.
28
 
29
  == Changelog ==
30
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  = 170510 =
32
  * исправлена инициализация локализации для болгарского (транслитерации) https://wordpress.org/support/topic/wrong-locale-string/
33
  * добавлены пользовательские правила транслитерации (функционал)
3
  Donate link: http://yur4enko.com/
4
  Tags: translate, rus-to-lat, cyr-to-lat, Seo, tag, record, page, transliterate, transliteration, bg, bulgarian
5
  Requires at least: 3.2
6
+ Tested up to: 4.9
7
+ Stable tag: p.1.0
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
28
 
29
  == Changelog ==
30
 
31
+ = p1.0 =
32
+ * обновлен домен переводов (переводы)
33
+ * новая нумерация версий плагина (прочее)
34
+ * новый модуль обновления плагина (ядро)
35
+ * добавлены полные комментарии к коду (разработка)
36
+ * новый модуль форсированной транслитерации (ядро)
37
+ * добавлена обработка установки плагина (ядро)
38
+ * ---
39
+ * Updated translation domain (translations)
40
+ * New numbering of plug-in versions (other)
41
+ * A new module update of plug-in (core)
42
+ * Added full comments to the code (development)
43
+ * New module of forced transliteration (core)
44
+ * Added processing plugin installation (kernel)
45
+
46
  = 170510 =
47
  * исправлена инициализация локализации для болгарского (транслитерации) https://wordpress.org/support/topic/wrong-locale-string/
48
  * добавлены пользовательские правила транслитерации (функционал)
uninstall.php CHANGED
@@ -1,5 +1,6 @@
1
  <?php //wp=>3.2 php=>5.2.4
2
 
 
3
  // Если к файлу обращаются напрямую, закроем доступ
4
  if ( !defined( 'WP_UNINSTALL_PLUGIN' ) )
5
  exit();
1
  <?php //wp=>3.2 php=>5.2.4
2
 
3
+ //Добавлен 170510
4
  // Если к файлу обращаются напрямую, закроем доступ
5
  if ( !defined( 'WP_UNINSTALL_PLUGIN' ) )
6
  exit();
wp-translitera.php CHANGED
@@ -3,9 +3,9 @@
3
  Plugin Name: WP Translitera
4
  Plugin URI: http://yur4enko.com/category/moi-proekty/wp-translitera
5
  Description: Plug-in for transliteration permanent permalink records , pages, and tag
6
- Version: 170510
7
  Author: Evgen Yurchenko
8
- Text Domain: wp_translitera
9
  Domain Path: /languages/
10
  Author URI: http://yur4enko.com/
11
  */
@@ -30,10 +30,12 @@ Author URI: http://yur4enko.com/
30
  class wp_translitera {//wp=>3.2 php=>5.2.4
31
 
32
  //Создаем локализации
 
 
33
  protected static function createlocale() {//wp=>3.2 php=>5.2.4
34
  $loc = get_locale();
35
  $ret = array();
36
- if ($loc == 'ru_RU') {//Русская локализация
37
  $ret = array(
38
  'А'=>'A','а'=>'a','Б'=>'B','б'=>'b','В'=>'V','в'=>'v','Г'=>'G',
39
  'г'=>'g','Д'=>'D','д'=>'d','Е'=>'E','е'=>'e','Ё'=>'Jo','ё'=>'jo',
@@ -46,7 +48,7 @@ class wp_translitera {//wp=>3.2 php=>5.2.4
46
  'ъ'=>'','Ы'=>'Y','ы'=>'y','Ь'=>'','ь'=>'','Э'=>'Je','э'=>'je',
47
  'Ю'=>'Ju','ю'=>'ju','Я'=>'Ja','я'=>'ja'
48
  );
49
- } elseif ($loc == 'uk') {//Украинская локализация
50
  $ret = array(
51
  'А'=>'A','а'=>'a','Б'=>'B','б'=>'b','В'=>'V','в'=>'v','Г'=>'H',
52
  'г'=>'h','Ґ'=>'G','ґ'=>'g','Д'=>'D','д'=>'d','Е'=>'E','е'=>'e',
@@ -59,7 +61,7 @@ class wp_translitera {//wp=>3.2 php=>5.2.4
59
  'Ш'=>'Sh','ш'=>'sh','Щ'=>'Shch','щ'=>'shch','Ь'=>'','ь'=>'','Ю'=>'Iu',
60
  'ю'=>'iu','Я'=>'Ia','я'=>'ia',"'"=>''
61
  );
62
- } elseif($loc == 'bg' || $loc == 'bg_BG') {//bulgarian locale
63
  $ret = array(
64
  'А'=>'A','а'=>'a','Б'=>'B','б'=>'b','В'=>'V','в'=>'v','Г'=>'G',
65
  'г'=>'g','Д'=>'D','д'=>'d','Е'=>'E','е'=>'e','Ё'=>'Jo','ё'=>'jo',
@@ -73,7 +75,8 @@ class wp_translitera {//wp=>3.2 php=>5.2.4
73
  'Ю'=>'Ju','ю'=>'ju','Я'=>'Ja','я'=>'ja'
74
  );
75
  }
76
- //Глобальная локализация
 
77
  $ret = $ret + array(
78
  'А'=>'A','а'=>'a','Б'=>'B','б'=>'b','В'=>'V','в'=>'v','Г'=>'G',
79
  'г'=>'g','Д'=>'D','д'=>'d','Е'=>'E','е'=>'e','Ё'=>'Jo','ё'=>'jo',
@@ -88,6 +91,7 @@ class wp_translitera {//wp=>3.2 php=>5.2.4
88
  'є'=>'ie','І'=>'I','і'=>'i','Ї'=>'I','ї'=>'i',"'"=>''
89
  );
90
  //Кстомные правила транслитерации
 
91
  $ret = wp_translitera::get_custom_rules_for_transliterate() + $ret;
92
  return $ret;
93
  }
@@ -109,12 +113,17 @@ class wp_translitera {//wp=>3.2 php=>5.2.4
109
  }
110
 
111
  //Проставляем галочки в чебоксах
 
 
 
112
  protected static function getchebox($name){//wp=>3.2 php=>5.2.4
113
  $value = wp_translitera::getset($name);
114
  return (empty($value))?'':' checked';
115
  }
116
 
117
  //Форма админки
 
 
118
  protected static function GetForm() {//wp=>3.2 php=>5.2.4
119
  $noparsevar = wp_translitera::getset('fileext');
120
  $extforform = '';
@@ -133,26 +142,30 @@ class wp_translitera {//wp=>3.2 php=>5.2.4
133
  foreach ($customrulesarray as $key => $value) {
134
  $customrulesstring .=$key.'='.$value.PHP_EOL;
135
  }
136
- $ret = '<h2>'.__('Convert existing','wp_translitera').':</h2></br>'
137
  . '<form method=POST> '
138
- . '<input type="checkbox" name="r1" value="1">'.__('Pages and posts','wp_translitera').'</br>'
139
- . '<input type="checkbox" name="r2" value="1">'.__('Headings, tags etc...','wp_translitera').'</br>'
140
- . '<input type="submit" value="'.__('Transliterate','wp_translitera').'" name="transliterate">'
141
  . '</form>'
142
- . '<p><h2>'.__('Settings','wp_translitera').':</h2></br>'
143
  . '<form method=POST> '
144
- . '<input type="checkbox" name="use_force_transliterations" value="1"'.wp_translitera::getchebox("use_force_transliterations").'>'.__('Use forces transliteration for title','wp_translitera').'</br>'
145
- . '<input type="checkbox" name="tranliterate_uploads_file" value="1"'.wp_translitera::getchebox("tranliterate_uploads_file").'>'.__('Transliterate names of uploads files','wp_translitera').'</br>'
146
- . '<input type="checkbox" name="tranliterate_404" value="1"'.wp_translitera::getchebox("tranliterate_404").'>'.__('Transliterate 404 url','wp_translitera').'</br>'
147
- . '<input type="checkbox" name="init_in_front" value="1"'.wp_translitera::getchebox("init_in_front").'>'.__('Use transliteration in frontend for transliteration title out ACP (enable if use bbPress, buddypress, woocommerce etc)','wp_translitera').'</br>'
148
- . __('File extensions, separated by commas , titles that do not need to transliterate','wp_translitera').'<input type="text" size="80" name="typefiles" value="'.$extforform.'"></br>'
149
- . '<label style="color:red;font-weight:800">'.__('Custom transliteration rules, in format я=ja (Everyone ruled from a new line!)','wp_translitera').'</label></br><textarea name="customrules" cols="30" rows="10">'.$customrulesstring.'</textarea></br>'
150
- . '<input type="submit" value="'.__('Apply','wp_translitera').'" name="apply">'
151
  . '</form>';
152
  return $ret;
153
  }
154
 
155
  //Транслитерация в БД
 
 
 
 
156
  protected static function do_transliterate($table,$id,$name) {//wp=>3.2 php=>5.2.4
157
  global $wpdb;
158
  $rez = $wpdb->get_results("SELECT {$id}, {$name} FROM {$table} WHERE 1",ARRAY_A);
@@ -165,6 +178,8 @@ class wp_translitera {//wp=>3.2 php=>5.2.4
165
  }
166
 
167
  //Получаем настройки
 
 
168
  protected static function getoptions() {//wp=>3.2 php=>5.2.4
169
  if (is_multisite()) {
170
  $set = get_site_option('wp_translitera');
@@ -178,12 +193,17 @@ class wp_translitera {//wp=>3.2 php=>5.2.4
178
  }
179
 
180
  //Получаем значение настройки
 
 
 
181
  protected static function getset($name) {//wp=>3.2 php=>5.2.4
182
  $set = wp_translitera::getoptions();
183
  return (array_key_exists($name,$set))?$set[$name]:NULL;
184
  }
185
 
186
  //Записываем опцию
 
 
187
  protected static function updateoption($set) {//wp=>3.2 php=>5.2.4
188
  if (is_multisite()) {
189
  update_site_option('wp_translitera',$set);
@@ -193,13 +213,18 @@ class wp_translitera {//wp=>3.2 php=>5.2.4
193
  }
194
 
195
  //Записываем настройку
 
 
 
196
  protected static function updset($name,$value) {//wp=>3.2 php=>5.2.4
197
  $set = wp_translitera::getoptions();
198
  $set[$name] = $value;
199
  wp_translitera::updateoption($set);
200
  }
201
 
202
- //Записываем настройки
 
 
203
  protected static function updsets($sets) {//wp=>3.2 php=>5.2.4
204
  if (gettype($sets) != 'array') {
205
  $sets = array();
@@ -210,19 +235,21 @@ class wp_translitera {//wp=>3.2 php=>5.2.4
210
 
211
  //Выводим сообщение об обновлении
212
  // добавлено в 170510
213
- // принимает БУЛЕВО необходимость выводить сообщение
214
  // возвращает БУЛЕВО необходимость выводить сообщение
215
- protected static function updnotice($need_notice) {//wp=>3.2 php=>5.2.4
216
  if ($need_notice) {
217
  add_action('admin_notices',array('wp_translitera','notice_admin_plugin_updated'));
218
  }
219
-
220
  return FALSE;
221
  }
222
 
223
  //Обнволение БД
224
- protected static function update_bd($from) {//wp=>3.2 php=>5.2.4
225
- $need_notice = TRUE;
 
 
 
226
  if (empty($from)) {
227
  $from = 160819;
228
  }
@@ -230,7 +257,6 @@ class wp_translitera {//wp=>3.2 php=>5.2.4
230
  if (wp_translitera::getset('fileext') == NULL) {
231
  wp_translitera::updset('fileext', array());
232
  }
233
- wp_translitera::updnotice($need_notice);
234
  $from = 161011;
235
  }
236
  if ($from == 161011) {
@@ -248,33 +274,36 @@ class wp_translitera {//wp=>3.2 php=>5.2.4
248
 
249
  switch_to_blog( $original_blog_id );
250
  }
251
-
252
- wp_translitera::updnotice($need_notice);
253
  $from = 170212;
254
  }
255
  if ($from == 170212) {
256
  if (file_exists(__DIR__.'/unistall.php')) {
257
  unlink(__DIR__.'/unistall.php');
258
  }
259
- wp_translitera::updnotice($need_notice);
260
  $from = 170510;
261
  }
262
-
263
- wp_translitera::updset('version', $from);
 
 
 
264
  }
265
 
266
  //Вызываемые дочерние функции
 
267
  //Уведомление о необходимости проверить настройки
 
268
  static function notice_admin_plugin_updated() {
269
- echo '<div class="updated" style="padding-top: 15px; padding-bottom:15px">'.__('Plugin WP Translitera has been updated,','wp_translitera').' <a href="options-general.php?page=wp-translitera%2Fwp-translitera">'.__('update settings','wp_translitera').'</a></div>';
270
  }
271
 
272
- //Модуль формы админки
 
273
  public static function main_settings() {//wp=>3.2 php=>5.2.4
274
  global $wpdb;
275
 
276
  //инициализация языка
277
- load_plugin_textdomain('wp_translitera', false, dirname(plugin_basename(__FILE__)).'/languages');
278
 
279
  $act = filter_input(INPUT_POST,'transliterate');
280
  if (!empty($act)) {
@@ -314,7 +343,12 @@ class wp_translitera {//wp=>3.2 php=>5.2.4
314
 
315
  //Вызываемые функции
316
  //Процедура преобразования символов
 
 
 
317
  public static function transliterate($title) {//wp=>3.2 php=>5.2.4
 
 
318
  $type = substr(filter_input(INPUT_POST, 'name'),-3);
319
  if (!empty($type)) {
320
  if (in_array($type, wp_translitera::getset('fileext'))) {
@@ -325,22 +359,29 @@ class wp_translitera {//wp=>3.2 php=>5.2.4
325
  }
326
 
327
  //Процедура преобразования символов форсированный режим
 
 
 
 
328
  public static function transliterate_force($title, $raw_title) {//wp=>3.2 php=>5.2.4
329
- $type = substr(filter_input(INPUT_POST, 'name'),-3);
 
330
  if (!empty($type)) {
331
  if (in_array($type, wp_translitera::getset('fileext'))) {
332
  return $title;
333
  }
334
  }
335
- return sanitize_title_with_dashes(strtr($raw_title, wp_translitera::createlocale()));
336
  }
337
 
338
  //Добавляем раздел в админку
 
339
  public static function add_menu(){//wp=>3.2 php=>5.2.4
340
  add_options_page('WP Translitera', 'Translitera', 'activate_plugins', __FILE__, array('wp_translitera','main_settings'));
341
  }
342
 
343
  //Попытка транслитерировать урл
 
344
  public static function init404(){//wp=>3.2 php=>5.2.4
345
  if (is_404()){
346
  if (wp_translitera::getset('tranliterate_404')){
@@ -355,6 +396,10 @@ class wp_translitera {//wp=>3.2 php=>5.2.4
355
  }
356
 
357
  //Обработка файлов загружаемых из форм
 
 
 
 
358
  public static function rename_uploads_additional($value, $filename_raw) {//wp=>3.2 php=>5.2.4
359
  if (wp_translitera::getset('tranliterate_uploads_file')){
360
  $value = wp_translitera::transliterate($value);
@@ -363,14 +408,17 @@ class wp_translitera {//wp=>3.2 php=>5.2.4
363
  }
364
 
365
  //провека необходимости обновить БД
 
366
  static function needupdate() {//wp=>3.2 php=>5.2.4
367
  $from = wp_translitera::getset('version');
368
- if ($from != 170212) {
369
- wp_translitera::update_bd($from);
 
370
  }
371
  }
372
 
373
  //инициализация метода транслитерации
 
374
  static function prepare_transliterate() {//wp=>3.2 php=>5.2.4
375
  if (wp_translitera::getset('use_force_transliterations') === '1') {
376
  add_filter('sanitize_title', array('wp_translitera','transliterate_force'), 25, 2);
@@ -380,13 +428,15 @@ class wp_translitera {//wp=>3.2 php=>5.2.4
380
  }
381
 
382
  //Добавляем ссылку на страницу настроек
 
383
  static function add_plugin_settings_link($links) {//wp=>3.2 php=>5.2.4
384
- $addlink['settings'] = '<a href="options-general.php?page=wp-translitera%2Fwp-translitera">'.__('Settings','wp_translitera').'</a>';
385
  $links = $addlink + $links;
386
  return $links;
387
  }
388
 
389
  //Инициализация ядра
 
390
  static function init() {//wp=>3.2 php=>5.2.4
391
  //Проверка необходимости обновить БД
392
  add_action('admin_init', array('wp_translitera', 'needupdate'));
@@ -403,6 +453,13 @@ class wp_translitera {//wp=>3.2 php=>5.2.4
403
  add_action('admin_init',array('wp_translitera', 'prepare_transliterate'));
404
  }
405
  }
 
 
 
 
 
 
 
406
  }
407
 
408
  //wp=>3.2 php=>5.2.4
@@ -412,3 +469,5 @@ add_action('init', array('wp_translitera', 'init'));
412
  add_action('wp',array('wp_translitera','init404'));
413
  //Переименовываение загружаемых файлов
414
  add_filter('sanitize_file_name',array('wp_translitera', 'rename_uploads_additional'),10,2);
 
 
3
  Plugin Name: WP Translitera
4
  Plugin URI: http://yur4enko.com/category/moi-proekty/wp-translitera
5
  Description: Plug-in for transliteration permanent permalink records , pages, and tag
6
+ Version: p1.0
7
  Author: Evgen Yurchenko
8
+ Text Domain: wp-translitera
9
  Domain Path: /languages/
10
  Author URI: http://yur4enko.com/
11
  */
30
  class wp_translitera {//wp=>3.2 php=>5.2.4
31
 
32
  //Создаем локализации
33
+ // добавлено 160306
34
+ // возвращает МАССИВ правил транслитерации
35
  protected static function createlocale() {//wp=>3.2 php=>5.2.4
36
  $loc = get_locale();
37
  $ret = array();
38
+ if ($loc == 'ru_RU') {//Русская локализация
39
  $ret = array(
40
  'А'=>'A','а'=>'a','Б'=>'B','б'=>'b','В'=>'V','в'=>'v','Г'=>'G',
41
  'г'=>'g','Д'=>'D','д'=>'d','Е'=>'E','е'=>'e','Ё'=>'Jo','ё'=>'jo',
48
  'ъ'=>'','Ы'=>'Y','ы'=>'y','Ь'=>'','ь'=>'','Э'=>'Je','э'=>'je',
49
  'Ю'=>'Ju','ю'=>'ju','Я'=>'Ja','я'=>'ja'
50
  );
51
+ } elseif ($loc == 'uk') {//Украинская локализация Добавлено 160415
52
  $ret = array(
53
  'А'=>'A','а'=>'a','Б'=>'B','б'=>'b','В'=>'V','в'=>'v','Г'=>'H',
54
  'г'=>'h','Ґ'=>'G','ґ'=>'g','Д'=>'D','д'=>'d','Е'=>'E','е'=>'e',
61
  'Ш'=>'Sh','ш'=>'sh','Щ'=>'Shch','щ'=>'shch','Ь'=>'','ь'=>'','Ю'=>'Iu',
62
  'ю'=>'iu','Я'=>'Ia','я'=>'ia',"'"=>''
63
  );
64
+ } elseif($loc == 'bg' || $loc == 'bg_BG') {//bulgarian locale добавлено 170114
65
  $ret = array(
66
  'А'=>'A','а'=>'a','Б'=>'B','б'=>'b','В'=>'V','в'=>'v','Г'=>'G',
67
  'г'=>'g','Д'=>'D','д'=>'d','Е'=>'E','е'=>'e','Ё'=>'Jo','ё'=>'jo',
75
  'Ю'=>'Ju','ю'=>'ju','Я'=>'Ja','я'=>'ja'
76
  );
77
  }
78
+ //Глобальная локализация
79
+ // добалено 160306, Обновлено 160415/
80
  $ret = $ret + array(
81
  'А'=>'A','а'=>'a','Б'=>'B','б'=>'b','В'=>'V','в'=>'v','Г'=>'G',
82
  'г'=>'g','Д'=>'D','д'=>'d','Е'=>'E','е'=>'e','Ё'=>'Jo','ё'=>'jo',
91
  'є'=>'ie','І'=>'I','і'=>'i','Ї'=>'I','ї'=>'i',"'"=>''
92
  );
93
  //Кстомные правила транслитерации
94
+ // добавлено 170510
95
  $ret = wp_translitera::get_custom_rules_for_transliterate() + $ret;
96
  return $ret;
97
  }
113
  }
114
 
115
  //Проставляем галочки в чебоксах
116
+ // добавлено 160128
117
+ // принимает СТРОКА имя настройки
118
+ // возвращает СТРОКА "флаг" для чебокса
119
  protected static function getchebox($name){//wp=>3.2 php=>5.2.4
120
  $value = wp_translitera::getset($name);
121
  return (empty($value))?'':' checked';
122
  }
123
 
124
  //Форма админки
125
+ // добавлено 160119
126
+ // возвращает HTML форму настроек плагина
127
  protected static function GetForm() {//wp=>3.2 php=>5.2.4
128
  $noparsevar = wp_translitera::getset('fileext');
129
  $extforform = '';
142
  foreach ($customrulesarray as $key => $value) {
143
  $customrulesstring .=$key.'='.$value.PHP_EOL;
144
  }
145
+ $ret = '<h2>'.__('Convert existing','wp-translitera').':</h2></br>'
146
  . '<form method=POST> '
147
+ . '<input type="checkbox" name="r1" value="1">'.__('Pages and posts','wp-translitera').'</br>'
148
+ . '<input type="checkbox" name="r2" value="1">'.__('Headings, tags etc...','wp-translitera').'</br>'
149
+ . '<input type="submit" value="'.__('Transliterate','wp-translitera').'" name="transliterate">'
150
  . '</form>'
151
+ . '<p><h2>'.__('Settings','wp-translitera').':</h2></br>'
152
  . '<form method=POST> '
153
+ . '<input type="checkbox" name="use_force_transliterations" value="1"'.wp_translitera::getchebox("use_force_transliterations").'>'.__('Use forces transliteration for title','wp-translitera').'</br>'
154
+ . '<input type="checkbox" name="tranliterate_uploads_file" value="1"'.wp_translitera::getchebox("tranliterate_uploads_file").'>'.__('Transliterate names of uploads files','wp-translitera').'</br>'
155
+ . '<input type="checkbox" name="tranliterate_404" value="1"'.wp_translitera::getchebox("tranliterate_404").'>'.__('Transliterate 404 url','wp-translitera').'</br>'
156
+ . '<input type="checkbox" name="init_in_front" value="1"'.wp_translitera::getchebox("init_in_front").'>'.__('Use transliteration in frontend for transliteration title out ACP (enable if use bbPress, buddypress, woocommerce etc)','wp-translitera').'</br>'
157
+ . __('File extensions, separated by commas , titles that do not need to transliterate','wp-translitera').'<input type="text" size="80" name="typefiles" value="'.$extforform.'"></br>'
158
+ . '<label style="color:red;font-weight:800">'.__('Custom transliteration rules, in format я=ja (Everyone ruled from a new line!)','wp-translitera').'</label></br><textarea name="customrules" cols="30" rows="10">'.$customrulesstring.'</textarea></br>'
159
+ . '<input type="submit" value="'.__('Apply','wp-translitera').'" name="apply">'
160
  . '</form>';
161
  return $ret;
162
  }
163
 
164
  //Транслитерация в БД
165
+ // добавлено 160119
166
+ // принимает: - table СТРОКА с именем таблицы БД с которой проводим операции
167
+ // - id СТРОКА с именем индекса таблицы
168
+ // - name СТРОКА с именем столбца значения которого необходимо транслитерировать
169
  protected static function do_transliterate($table,$id,$name) {//wp=>3.2 php=>5.2.4
170
  global $wpdb;
171
  $rez = $wpdb->get_results("SELECT {$id}, {$name} FROM {$table} WHERE 1",ARRAY_A);
178
  }
179
 
180
  //Получаем настройки
181
+ // добавлено 160128
182
+ // возвращает МАССИВ настроек плагина
183
  protected static function getoptions() {//wp=>3.2 php=>5.2.4
184
  if (is_multisite()) {
185
  $set = get_site_option('wp_translitera');
193
  }
194
 
195
  //Получаем значение настройки
196
+ // добалено 160128
197
+ // принимает: СТРОКА с названием настройки плагина
198
+ // возвращает: MIXED значение настройки плагина или NULL если не установлено
199
  protected static function getset($name) {//wp=>3.2 php=>5.2.4
200
  $set = wp_translitera::getoptions();
201
  return (array_key_exists($name,$set))?$set[$name]:NULL;
202
  }
203
 
204
  //Записываем опцию
205
+ // добавлено 170212
206
+ // принимает: МАССИВ с настройками плагина
207
  protected static function updateoption($set) {//wp=>3.2 php=>5.2.4
208
  if (is_multisite()) {
209
  update_site_option('wp_translitera',$set);
213
  }
214
 
215
  //Записываем настройку
216
+ // добавлено 160128
217
+ // принимает: - name СТРОКА с названием настройки
218
+ // - value MIXED значение настроки
219
  protected static function updset($name,$value) {//wp=>3.2 php=>5.2.4
220
  $set = wp_translitera::getoptions();
221
  $set[$name] = $value;
222
  wp_translitera::updateoption($set);
223
  }
224
 
225
+ //Записываем настройки переданные в массиве не изменяя остальных
226
+ // добавлено 160212
227
+ // принимает: МАССИВ со значениями настроек
228
  protected static function updsets($sets) {//wp=>3.2 php=>5.2.4
229
  if (gettype($sets) != 'array') {
230
  $sets = array();
235
 
236
  //Выводим сообщение об обновлении
237
  // добавлено в 170510
238
+ // принимает БУЛЕВО необходимость выводить сообщение, с версии p1.0 - значение по умолчанию TRUE
239
  // возвращает БУЛЕВО необходимость выводить сообщение
240
+ protected static function updnotice($need_notice=TRUE) {//wp=>3.2 php=>5.2.4
241
  if ($need_notice) {
242
  add_action('admin_notices',array('wp_translitera','notice_admin_plugin_updated'));
243
  }
 
244
  return FALSE;
245
  }
246
 
247
  //Обнволение БД
248
+ //добавлено 170212
249
+ //Принимает:
250
+ // from - текущая версия плагина
251
+ // for - параметр принимающий актуальную версию плагина (добавлен p1.0)
252
+ protected static function update_bd($from,$for) {//wp=>3.2 php=>5.2.4
253
  if (empty($from)) {
254
  $from = 160819;
255
  }
257
  if (wp_translitera::getset('fileext') == NULL) {
258
  wp_translitera::updset('fileext', array());
259
  }
 
260
  $from = 161011;
261
  }
262
  if ($from == 161011) {
274
 
275
  switch_to_blog( $original_blog_id );
276
  }
 
 
277
  $from = 170212;
278
  }
279
  if ($from == 170212) {
280
  if (file_exists(__DIR__.'/unistall.php')) {
281
  unlink(__DIR__.'/unistall.php');
282
  }
 
283
  $from = 170510;
284
  }
285
+ if ($for !=$from) {
286
+ wp_translitera::updnotice();
287
+ $from = $for;
288
+ wp_translitera::updset('version', $from);
289
+ }
290
  }
291
 
292
  //Вызываемые дочерние функции
293
+
294
  //Уведомление о необходимости проверить настройки
295
+ //добавлено 170212
296
  static function notice_admin_plugin_updated() {
297
+ echo '<div class="updated" style="padding-top: 15px; padding-bottom:15px">'.__('Plugin WP Translitera has been updated,','wp-translitera').' <a href="options-general.php?page=wp-translitera%2Fwp-translitera">'.__('update settings','wp-translitera').'</a></div>';
298
  }
299
 
300
+ //Модуль формы админки -выводит форму
301
+ // добавлено 160119
302
  public static function main_settings() {//wp=>3.2 php=>5.2.4
303
  global $wpdb;
304
 
305
  //инициализация языка
306
+ load_plugin_textdomain('wp-translitera', false, dirname(plugin_basename(__FILE__)).'/languages');
307
 
308
  $act = filter_input(INPUT_POST,'transliterate');
309
  if (!empty($act)) {
343
 
344
  //Вызываемые функции
345
  //Процедура преобразования символов
346
+ // добавлено в 150712
347
+ // принимает : title - СТРОКА которую необходимо транслитерировать
348
+ // возвращает : СТРОКА
349
  public static function transliterate($title) {//wp=>3.2 php=>5.2.4
350
+ //Отбрасывает файлы с расширениями для который отключена трнаслитерация
351
+ // добавлено 161011
352
  $type = substr(filter_input(INPUT_POST, 'name'),-3);
353
  if (!empty($type)) {
354
  if (in_array($type, wp_translitera::getset('fileext'))) {
359
  }
360
 
361
  //Процедура преобразования символов форсированный режим
362
+ // добавлен 161114
363
+ // принимает: - title СТРОКА стандартной транслитерации
364
+ // - raw_title СТРОКА для форсированной транслитерации
365
+ // возвращает: СТРОКА транслитерированная строка
366
  public static function transliterate_force($title, $raw_title) {//wp=>3.2 php=>5.2.4
367
+ return wp_translitera::transliterate(sanitize_title_with_dashes($raw_title));
368
+ /*$type = substr(filter_input(INPUT_POST, 'name'),-3);
369
  if (!empty($type)) {
370
  if (in_array($type, wp_translitera::getset('fileext'))) {
371
  return $title;
372
  }
373
  }
374
+ return sanitize_title_with_dashes(strtr($raw_title, wp_translitera::createlocale()));*/
375
  }
376
 
377
  //Добавляем раздел в админку
378
+ // добавлено 150119
379
  public static function add_menu(){//wp=>3.2 php=>5.2.4
380
  add_options_page('WP Translitera', 'Translitera', 'activate_plugins', __FILE__, array('wp_translitera','main_settings'));
381
  }
382
 
383
  //Попытка транслитерировать урл
384
+ // добавлено 160707
385
  public static function init404(){//wp=>3.2 php=>5.2.4
386
  if (is_404()){
387
  if (wp_translitera::getset('tranliterate_404')){
396
  }
397
 
398
  //Обработка файлов загружаемых из форм
399
+ // добавлено 160521
400
+ // принимает - value СТРОКА имя файла для транслитерации
401
+ // - filename_raw СТРОКА имя файла RAW
402
+ // возвращает СТРОКА траслитерированное имя файла
403
  public static function rename_uploads_additional($value, $filename_raw) {//wp=>3.2 php=>5.2.4
404
  if (wp_translitera::getset('tranliterate_uploads_file')){
405
  $value = wp_translitera::transliterate($value);
408
  }
409
 
410
  //провека необходимости обновить БД
411
+ //Добавлено 170212
412
  static function needupdate() {//wp=>3.2 php=>5.2.4
413
  $from = wp_translitera::getset('version');
414
+ $plugindata = get_plugin_data(__FILE__) ;
415
+ if ($from != $plugindata['Version']) {
416
+ wp_translitera::update_bd($from,$plugindata['Version']);
417
  }
418
  }
419
 
420
  //инициализация метода транслитерации
421
+ // Добавлено 170212
422
  static function prepare_transliterate() {//wp=>3.2 php=>5.2.4
423
  if (wp_translitera::getset('use_force_transliterations') === '1') {
424
  add_filter('sanitize_title', array('wp_translitera','transliterate_force'), 25, 2);
428
  }
429
 
430
  //Добавляем ссылку на страницу настроек
431
+ // Добавлено 170212
432
  static function add_plugin_settings_link($links) {//wp=>3.2 php=>5.2.4
433
+ $addlink['settings'] = '<a href="options-general.php?page=wp-translitera%2Fwp-translitera">'.__('Settings','wp-translitera').'</a>';
434
  $links = $addlink + $links;
435
  return $links;
436
  }
437
 
438
  //Инициализация ядра
439
+ // добавлено 161114
440
  static function init() {//wp=>3.2 php=>5.2.4
441
  //Проверка необходимости обновить БД
442
  add_action('admin_init', array('wp_translitera', 'needupdate'));
453
  add_action('admin_init',array('wp_translitera', 'prepare_transliterate'));
454
  }
455
  }
456
+
457
+ //Установка плагина
458
+ // добавлено p1.0
459
+ static function install() {
460
+ $plugindata = get_plugin_data(__FILE__) ;
461
+ wp_translitera::updset('version', $plugindata['Version']);
462
+ }
463
  }
464
 
465
  //wp=>3.2 php=>5.2.4
469
  add_action('wp',array('wp_translitera','init404'));
470
  //Переименовываение загружаемых файлов
471
  add_filter('sanitize_file_name',array('wp_translitera', 'rename_uploads_additional'),10,2);
472
+ //Установка плагина
473
+ register_activation_hook(__FILE__, array('wp_translitera','install'));