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 | 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} +0 -0
- languages/{wp_translitera-ru_RU.po → wp-translitera-ru_RU.po} +0 -0
- languages/{wp_translitera-uk.mo → wp-translitera-uk.mo} +0 -0
- languages/{wp_translitera-uk.po → wp-translitera-uk.po} +0 -0
- languages/{wp_translitera.pot → wp-translitera.pot} +0 -0
- readme.txt +17 -2
- uninstall.php +1 -0
- wp-translitera.php +97 -38
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.
|
7 |
-
Stable tag:
|
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:
|
7 |
Author: Evgen Yurchenko
|
8 |
-
Text Domain:
|
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','
|
137 |
. '<form method=POST> '
|
138 |
-
. '<input type="checkbox" name="r1" value="1">'.__('Pages and posts','
|
139 |
-
. '<input type="checkbox" name="r2" value="1">'.__('Headings, tags etc...','
|
140 |
-
. '<input type="submit" value="'.__('Transliterate','
|
141 |
. '</form>'
|
142 |
-
. '<p><h2>'.__('Settings','
|
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','
|
145 |
-
. '<input type="checkbox" name="tranliterate_uploads_file" value="1"'.wp_translitera::getchebox("tranliterate_uploads_file").'>'.__('Transliterate names of uploads files','
|
146 |
-
. '<input type="checkbox" name="tranliterate_404" value="1"'.wp_translitera::getchebox("tranliterate_404").'>'.__('Transliterate 404 url','
|
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)','
|
148 |
-
. __('File extensions, separated by commas , titles that do not need to transliterate','
|
149 |
-
. '<label style="color:red;font-weight:800">'.__('Custom transliteration rules, in format я=ja (Everyone ruled from a new line!)','
|
150 |
-
. '<input type="submit" value="'.__('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 |
-
|
225 |
-
|
|
|
|
|
|
|
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 |
-
|
|
|
|
|
|
|
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,','
|
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('
|
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 |
-
|
|
|
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 |
-
|
369 |
-
|
|
|
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','
|
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'));
|