Kami Опубликовано 24 мая, 2017 Жалоба Поделиться Опубликовано 24 мая, 2017 Добрый день, спрашивал на днях про транслитерацию изображений, и что то даже никто не ответил. И так что я сделал. Создал файлик img_rename.php c таким содержанием <?php function correct_filename($filename){ $ru = explode('-', "А-а-Б-б-В-в-Ґ-ґ-Г-г-Д-д-Е-е-Ё-ё-Є-є-Ж-ж-З-з-И-и-І-і-Ї-ї-Й-й-К-к-Л-л-М-м-Н-н-О-о-П-п-Р-р-С-с-Т-т-У-у-Ф-ф-Х-х-Ц-ц-Ч-ч-Ш-ш-Щ-щ-Ъ-ъ-Ы-ы-Ь-ь-Э-э-Ю-ю-Я-я"); $en = explode('-', "A-a-B-b-V-v-G-g-G-g-D-d-E-e-E-e-E-e-ZH-zh-Z-z-I-i-I-i-I-i-J-j-K-k-L-l-M-m-N-n-O-o-P-p-R-r-S-s-T-t-U-u-F-f-H-h-TS-ts-CH-ch-SH-sh-SCH-sch---Y-y---E-e-YU-yu-YA-ya"); $res = str_replace($ru, $en, $filename); $res = preg_replace("/[\s]+/ui", '-', $res); $res = preg_replace("/[^a-zA-Z0-9\.\-\_]+/ui", '', $res); $res = strtolower($res); return $res; } require_once('api/Simpla.php'); $simpla = new Simpla(); $query = $simpla->db->query('SELECT * FROM __images'); $images = $simpla->db->results($query); $DIR = dirname(__FILE__).'/files/originals'; $done = 0; foreach($images as $img){ $new_name = correct_filename($img->filename); if($new_name !== $img->filename){ if(file_exists($DIR.'/'.$img->filename)){ if(rename($DIR.'/'.$img->filename, $DIR.'/'.$new_name)){ $simpla->db->query('UPDATE __images SET filename=? WHERE id=?', $new_name, $img->id); $done++; } }else{ echo 'Not find (prid:'.$img->product_id.'): /files/originals/'.$img->filename."\n"; } } } echo "DONE: {$done}\n"; echo "ALL: ".count($images)."\n"; //Чистим кеш $rem = glob(dirname(__FILE__).'/files/products/*.jpg'); foreach($rem as $d){ unlink($d); } echo "END"; Но почему то не работает. Подскажите куда копать? Я с симплой, пока немного знаком. Цитата Ссылка на сообщение Поделиться на другие сайты
Kami Опубликовано 24 мая, 2017 Автор Жалоба Поделиться Опубликовано 24 мая, 2017 Есть кто живой на палубе? Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 24 мая, 2017 Жалоба Поделиться Опубликовано 24 мая, 2017 Есть кто живой на палубе?Да есть, но таким скорострелам никто быстро отвечать не будет потому как ничем не обязан Цитата Ссылка на сообщение Поделиться на другие сайты
Kami Опубликовано 24 мая, 2017 Автор Жалоба Поделиться Опубликовано 24 мая, 2017 Да есть, но таким скорострелам никто быстро отвечать не будет потому как ничем не обязан Вижу вы специалист по симпле, подскажите что не так? Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 24 мая, 2017 Жалоба Поделиться Опубликовано 24 мая, 2017 Вижу вы специалист по симпле, подскажите что не так?Для начала посмотрите как вы переименовываете файл, вы забыли о разрешении файла в коде это почему-то не учтено. Цитата Ссылка на сообщение Поделиться на другие сайты
Kami Опубликовано 24 мая, 2017 Автор Жалоба Поделиться Опубликовано 24 мая, 2017 Для начала посмотрите как вы переименовываете файл, вы забыли о разрешении файла в коде это почему-то не учтено.Но переименовывать то он должен, из 300 файлов, ни одного не изменено. Сам механизм подключения к симпле верен? Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 24 мая, 2017 Жалоба Поделиться Опубликовано 24 мая, 2017 Но переименовывать то он должен, из 300 файлов, ни одного не изменено. Сам механизм подключения к симпле верен?Тебе что в лоб что по лбу, ты вообще внимательно читаешь что я тебе пишу? Перечитай пост несколько раз. Цитата Ссылка на сообщение Поделиться на другие сайты
Kami Опубликовано 24 мая, 2017 Автор Жалоба Поделиться Опубликовано 24 мая, 2017 Тебе что в лоб что по лбу, ты вообще внимательно читаешь что я тебе пишу?Перечитай пост несколько раз. Вы не адекватны. Не пишите больше в тему. Спасибо. Цитата Ссылка на сообщение Поделиться на другие сайты
Решение ahmed Опубликовано 24 мая, 2017 Решение Жалоба Поделиться Опубликовано 24 мая, 2017 Начать с того, что это полностью не работает из-за $images = $simpla->db->results($query); Надо $images = $simpla->db->results(); И возможны другие ошибки, уже в логике Вашего скрипта... Цитата Ссылка на сообщение Поделиться на другие сайты
Kami Опубликовано 24 мая, 2017 Автор Жалоба Поделиться Опубликовано 24 мая, 2017 Начать с того, что это полностью не работает из-за$images = $simpla->db->results($query);Надо$images = $simpla->db->results(); И возможны другие ошибки, уже в логике Вашего скрипта... Спасибо! Все заработало! Админы перенесите в готовые решения. Вдруг кому пригодится. Цитата Ссылка на сообщение Поделиться на другие сайты
yr4ik Опубликовано 24 мая, 2017 Жалоба Поделиться Опубликовано 24 мая, 2017 (изменено) Интересно...где вы его взяли? Я этот скрипт делал еще в 2014 году. Когда только первый раз установил симплу... и в паблик я его не выкидывал... Даже вроде не давал никому... PS: раз уже просочилось откуда то. То выложу исправленную версиюimage_rename.php Изменено 24 мая, 2017 пользователем yr4ik Цитата Ссылка на сообщение Поделиться на другие сайты
ahmed Опубликовано 25 мая, 2017 Жалоба Поделиться Опубликовано 25 мая, 2017 Если уж выкладываете "исправленную версию", то надо бы в ней устранить хоть явные ошибки. В частности, в строке $rem = glob($simpla->config->root_dir . $simpla->config->resized_images_dir . '*.jpg'); с ходу можно обнаружить целых 3 (!) ошибки. Цитата Ссылка на сообщение Поделиться на другие сайты
yr4ik Опубликовано 25 мая, 2017 Жалоба Поделиться Опубликовано 25 мая, 2017 (изменено) Kors - знаешь куда тебе идти нужно?Как ты в жизни своей еще "явных ошибок" не нашел? ............................. steam - покажете где вы этот код взяли? Изменено 25 мая, 2017 пользователем yr4ik Цитата Ссылка на сообщение Поделиться на другие сайты
pepelxD Опубликовано 25 мая, 2017 Жалоба Поделиться Опубликовано 25 мая, 2017 Эта функция у меня в чистой симпле есть (2.3.8) в Image.php private function correct_filename($filename) { $ru = explode('-', "А-а-Б-б-В-в-Ґ-ґ-Г-г-Д-д-Е-е-Ё-ё-Є-є-Ж-ж-З-з-И-и-І-і-Ї-ї-Й-й-К-к-Л-л-М-м-Н-н-О-о-П-п-Р-р-С-с-Т-т-У-у-Ф-ф-Х-х-Ц-ц-Ч-ч-Ш-ш-Щ-щ-Ъ-ъ-Ы-ы-Ь-ь-Э-э-Ю-ю-Я-я"); $en = explode('-', "A-a-B-b-V-v-G-g-G-g-D-d-E-e-E-e-E-e-ZH-zh-Z-z-I-i-I-i-I-i-J-j-K-k-L-l-M-m-N-n-O-o-P-p-R-r-S-s-T-t-U-u-F-f-H-h-TS-ts-CH-ch-SH-sh-SCH-sch---Y-y---E-e-YU-yu-YA-ya"); $res = str_replace($ru, $en, $filename); $res = preg_replace("/[\s]+/ui", '-', $res); $res = preg_replace("/[^a-zA-Z0-9\.\-\_]+/ui", '', $res); $res = strtolower($res); return $res; } и используется в upload_image. Не пойму, зачем что-то придумывать, когда все уже придумано....... Цитата Ссылка на сообщение Поделиться на другие сайты
yr4ik Опубликовано 25 мая, 2017 Жалоба Поделиться Опубликовано 25 мая, 2017 ну не придумывайте это для версий примерно < 2.3 где этой функции нет... Цитата Ссылка на сообщение Поделиться на другие сайты
ahmed Опубликовано 25 мая, 2017 Жалоба Поделиться Опубликовано 25 мая, 2017 ну не придумывайте это для версий примерно < 2.3 где этой функции нет... В версии Simpla 2.2.4 от 12.07.2013 в import.php есть функцияprivate function translit($text)которая, кроме названия функции и имени передаваемой переменной, отличается от приведеннойfunction correct_filename($filename)самую малость в одной строке. Эта функция есть (опять же с малюсеньким отличием) в версии 2.1.5 от 2012 года. А может, и в более ранних... Вопрос о том, есть ли где в классах Симплы готовая функция для транслитерации, обсуждался на форуме еще в 2013 году:http://forum.simplacms.ru/topic/5830-%D0%B5%D1%81%D1%82%D1%8C-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F-%D1%82%D1%80%D0%B0%D0%BD%D1%81%D0%BB%D0%B8%D1%82%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8/ Вряд ли есть смысл отстаивать авторские права по такому пустяковому поводу... Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 25 мая, 2017 Жалоба Поделиться Опубликовано 25 мая, 2017 Корс да тебе головку нужно лечить, ты больной человек. Цитата Ссылка на сообщение Поделиться на другие сайты
Kami Опубликовано 25 мая, 2017 Автор Жалоба Поделиться Опубликовано 25 мая, 2017 Интересно...где вы его взяли? Я этот скрипт делал еще в 2014 году. Когда только первый раз установил симплу... и в паблик я его не выкидывал... Даже вроде не давал никому... PS: раз уже просочилось откуда то. То выложу исправленную версию Взял давно с какого сайта который дорабатывал по верстке. Ваш или не ваш, не могу знать, но с Вами вроде не работал. Vqmod очень удобная штука. Спасибо за нее. Цитата Ссылка на сообщение Поделиться на другие сайты
yr4ik Опубликовано 25 мая, 2017 Жалоба Поделиться Опубликовано 25 мая, 2017 (изменено) В версии Simpla 2.2.4 от 12.07.2013 в import.php есть функцияprivate function translit($text)которая, кроме названия функции и имени передаваемой переменной, отличается от приведеннойfunction correct_filename($filename)самую малость в одной строке. Эта функция есть (опять же с малюсеньким отличием) в версии 2.1.5 от 2012 года. А может, и в более ранних... Вопрос о том, есть ли где в классах Симплы готовая функция для транслитерации, обсуждался на форуме еще в 2013 году:http://forum.simplacms.ru/topic/5830-%D0%B5%D1%81%D1%82%D1%8C-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F-%D1%82%D1%80%D0%B0%D0%BD%D1%81%D0%BB%D0%B8%D1%82%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8/ Вряд ли есть смысл отстаивать авторские права по такому пустяковому поводу... Ты что бредишь? А ничего что она private что там что там. Как ее вызывать в скрипте без правок? а по поводу авторства - я что отстаиваю что то? Я лишь пытаюсь найти утечку кода... по универсальному транслиту: уже давно предлагал https://github.com/yr4ik/Simpla-vqmod/tree/master/_examples/translit Изменено 25 мая, 2017 пользователем yr4ik Цитата Ссылка на сообщение Поделиться на другие сайты
ahmed Опубликовано 25 мая, 2017 Жалоба Поделиться Опубликовано 25 мая, 2017 Ты что бредишь? А ничего что она private что там что там. Как ее вызывать в скрипте без правок? Вы совершенно правы, без правок никак.Правки довольно значительны - сначала скопировать, потом вставить, и еще надо удалить слово 'private'. А может, и еще что удалить, или заменить...Автором Simpla так сделано еще в версии 2.1.5 в 2012 году, Вы можете это можете легко увидеть в файле 1c_exchange.php. Цитата Ссылка на сообщение Поделиться на другие сайты
Алексус414 Опубликовано 19 февраля, 2019 Жалоба Поделиться Опубликовано 19 февраля, 2019 Интересно...где вы его взяли? Я этот скрипт делал еще в 2014 году. Когда только первый раз установил симплу... и в паблик я его не выкидывал... Даже вроде не давал никому... PS: раз уже просочилось откуда то. То выложу исправленную версиюА куда этот скрипт помещать? Подскажите, пожалуйста, и нужны ли дополнительные действия? Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.