siv1987 2628 10/13/12 19:31 Пересчет и обновления -> Перестройка контента:[сообщений] запускали? Поделиться сообщением Ссылка на сообщение
Dmitriy427 198 10/13/12 19:49 (изменено) Пересчет тут не поможет, на двойке же не было своего спойлера, мод какой то ставили. Все правильно, нужно делать замену в базе. Найти html-код старого спойлера, он в зависимости от модификации разный может быть, заменить на то, что в поле "шаблон замены" бб-кода. В 2-3 запроса уложитесь вполне, зависит опять же от мода. SQL-запрос примерно такой:UPDATE `[перфикс_]posts` SET `post` = REPLACE( post, 'часть_старого_кода_спойлера', 'соответствующая_ей_часть_кода_из_шаблона_замены_бб-кода' );Тоесть подход правильный. Свой спойлер так же правил. ID помоему проще оставить, включите его в любой подходящий элемент и "onClick="OpenSpoiler('" замените на "id=", ничем он не помешает, ну добавится лишний реплейс. P.S. Одинарные кавычки для записи в базу нужно просто дублировать. Читются и меняются же они без проблем. P.P.S. Можно предварительно стандартный спойлер модифицировать, кстати, и менять сразу на такой например - http://test.emule-rus.net/index.php?showtopic=42747 Изменено 13 октября 2012 пользователем Dmitriy427 2 Поделиться сообщением Ссылка на сообщение
siv1987 2628 10/13/12 20:20 Если обновления нестандартных ббкодов, то да, запросами. помогите, пожалуйста, откорректировать запросы и внедрить в них REGEXP на 32В mysql-е нет поддержки регулярных выражений (без сторонних библиотек) для реплейса. Но если строка фиксированной длины как md5, то можно извратится на стандартных функциях. 1 Поделиться сообщением Ссылка на сообщение
Boris 2 10/13/12 20:39 id он то везде разный. я пробовал варианты делать спойлер где есть лишний параметр. выглядит коряво. я подумал о другом.постов со спойлерами у меня более 3000. в базе более 1,200,000 постов.таких три реплейса - тяжеловато мне кажется я стянул экспорт в Excel и выцедил этот Id у каждого поста. то есть теперь я могу в экселе построить эти реплейсы с id и номером поста.и подготовить список 9500 реплейсовпоскольку в каждом из них будет pid то нагрузка должна быть небольшая. надо как то запустить это чтоб выполнить это мелкими порциями с таймаутами как нибудь (ещё не гуглил как это осуществить) а можно запустить три реплейса в одном запросе?типа меняем 123 на 456, 111 на 222, 888 на 999?update ibf_posts set post=REPLACE(post, '123','456', '111','222','888','999') where pid=1234567 какие мысли будут? Поделиться сообщением Ссылка на сообщение
Dmitriy427 198 10/13/12 20:45 (изменено) Проще php-скрипт для замены с регулярными выражениями написать. Но он хоть и не сложный будет, тут это лишняя работа получится, имхо. Про 9500 * 3 запросов промолчу пожалуй. :) Изменено 13 октября 2012 пользователем Dmitriy427 Поделиться сообщением Ссылка на сообщение
siv1987 2628 10/13/12 21:08 Вот вам пример подобного безобразия о котором говорилось выше UPDATE `ibf_posts` SET `post`=REPLACE( post, CONCAT( '<!--SPOILER BEGIN--><div class="quotetop" onClick="OpenSpoiler(\'', SUBSTRING(post, LOCATE('OpenSpoiler(\'', post)+LENGTH('OpenSpoiler(\''), 32), '\')" style="cursor: hand;"><b><u>» <!--SPOILER TITLE-->' ), '[spoiler]' ) WHERE post LIKE '%onClick="OpenSpoiler%'; » - точно не уверен в каком формате он хранится в таблице - или в сущности или так. я стянул экспорт в Excel и выцедил этот Id у каждого поста.А не проще "стянуть" экспорт в текстовом виде и сделать реплейс нормальным регулярным выражением?О написании скрипта вообще молчу. Поделиться сообщением Ссылка на сообщение
Boris 2 10/13/12 21:22 Проще php-скрипт для замены с регулярными выражениями написать. Но он хоть и не сложный будет, тут это лишняя работа получится, имхо. Про 9500 * 3 запросов промолчу пожалуй. :)9500 - это уже умножено на 3.3166 постов А не проще "стянуть" экспорт в текстовом виде и сделать реплейс нормальным регулярным выражением?О написании скрипта вообще молчу.тоже вариант. подумаю. я с регулярными выражениями никогда дела не имел (не считая тех, без которых русская речь превращается в доклад :P ) Поделиться сообщением Ссылка на сообщение
siv1987 2628 10/13/12 21:25 и подготовить список 9500 реплейсовЛол. а можно запустить три реплейса в одном запросе?типо так можно REPLACE(REPLACE(REPLACE(post , 'search1', 'replace1'), 'search2', 'replace2'), 'search3', 'replace3') Поделиться сообщением Ссылка на сообщение
Dmitriy427 198 10/13/12 21:52 Ну, ежели душа красоты просит, то рублей 200 за скрипт с регулярками отыщите? И еще столько же за расширенный функционал , и индивидуальный дизайн спойлера, если нужен. За 2 часа сделаю, аська в профиле есть. :) Поделиться сообщением Ссылка на сообщение
webog 0 11/27/12 14:48 (изменено) Ребят, подскажите пожалуйста! После обновления отключены все ХУКи. При включении так же работают. Модули также не работают... _http://deesing.org/gallery/ Fatal error: Call to undefined method skin_global_15::user_popup() in /home/***/domains/deesing.org/public_html/admin/applications_addon/ips/gallery/sources/libs/lib_gallery.php on line 1667 Вот эта строка return "<a href='{$url}' title='{$this->lang->words['view_profile']}'>{$name}</a>" . $this->registry->output->getTemplate( 'global' )->user_popup( $id, $seoname ); _http://deesing.org/blogs/ Fatal error: Call to undefined method IPSLib::makeNameFormatted() in /home/***/domains/deesing.org/public_html/admin/applications_addon/ips/blog/modules_public/display/list.php on line 990 Спасибо! Изменено 27 ноября 2012 пользователем webog Поделиться сообщением Ссылка на сообщение
newbie 1723 11/28/12 05:21 Стили, хуки и компоненты тоже нужно обновлять. Поделиться сообщением Ссылка на сообщение
siv1987 2628 02/02/13 13:11 это всё не то. смайлики на месте. давно были перенесены.я же писал выше, что как только тупо редактируешь пост - смайлик на месте (уже в окне редактирования виден)Аналогичная проблема. После апгрейда с 2.3 не заменяются смайлы. В новых и постах некоторой давности работают, а в сообщениях старше года не заменяются и все. Выяснилось что виной всему поле use_emo в ibf_posts которое имело значение 0. 1 Поделиться сообщением Ссылка на сообщение