Перейти к содержимому


Фотография

Закрепленные сообщения


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 25

#21 evcrest

evcrest

    Пользователь

  • Пользователи
  • PipPip
  • 59 сообщений
  • ГородАлматы
  • Авто:Pajero III 2006
  • Двигатель:6G72

Отправлено 11 Июнь 2014 - 15:55

Все. С логикой полностью разобрался.

 

Версия 1.0.0 создает в существующей таблице posts дополнительное поле pinposts_pined со значениями 1 или 0. Если в одной теме поднято несколько сообщений, то они показываются в порядке согласно дате публикации.

 

Версия 1.3.0 создает новую собственную таблицу pinposts с двумя полями - topic_id и pids. C topic_id понятно, это ID темы.

 

А вот с полем pids они намудрили. Оно такого примерно вида - a:2:{i:0;i:9;i:1;i:3;}. Где a:2 означает, что в теме подняты два сообщения. Дальше, то, что в скобках, делим на две пары. Каждая пара это одно поднятое сообщение, где первое значение означает порядковый номер (0 - это сообщение будет показываться первым), а второе значение это ID сообщения в БД.

 

Короче, пара i:0;I:9 будет означать, что сообщение с ID 9 будет показываться первым. Соответственно вторая пара i:1;i:3 означает, что сообщение с ID 3 будет показываться вторым.

 

Ну и остается самая фигня. Поставить на форум версию хука 1.3.0, она, кстати, совершенно бесплатная, распространяется по лицензии GNU. Потом запросом выбрать из базы ID'шники всех поднятых старым хуком сообщений и воткнуть их в табличку нового хука по нужному алгоритму. Раз плюнуть! :))))))))

 

На счет 'раз плюнуть' это я, конечно, прикололся. Щас буду с прогерами своими запрос ваять и тестить. Как закончу, сюда запрос выложу.

 

Сергей, ты пока можешь новый хук поставить. Это безопасно, но лучше, конечно, забэкапица от греха...


  • 0

#adv Пользователь офлайн   Яндекс 

  • Новичок
  • Pip
    • Группа: Рекламодатели
    • Сообщений: -
    • Регистрация: -

    Отправлено Сегодня

    0

    #22 evcrest

    evcrest

      Пользователь

    • Пользователи
    • PipPip
    • 59 сообщений
    • ГородАлматы
    • Авто:Pajero III 2006
    • Двигатель:6G72

    Отправлено 11 Июнь 2014 - 17:12

    Сергей, вот запрос. Проверен, работает на 100%.

     

    Единственное, если ты что-то поднимал версией 1.3.0, то он удалит эти привязки, чтоб конфликтов не было. Короче, ставь 1.3.0 версию и выполняй запрос. У меня префикс таблиц буква 'f', поставь свой префикс в запросе.

     

    SELECT NULL INTO @Last_ID;
     
    SET @Reset_Num := 0;
     
    SET @rn := 0;
     
     
    DELETE FROM fpinposts;     # удаляет всю новую СДЕЛАННУЮ ПО 1.3 привязку!
     
     
    INSERT INTO fpinposts (`topic_id`,`pids`)
     
    SELECT topic_id, CONCAT("a:",count(topic_id),":{i:",
    GROUP_CONCAT(CONCAT(rn,";i:",pid) SEPARATOR ";i:"),";}")
     FROM (
    SELECT
    topic_id,
    pid,
    @Reset_Num := CASE 
          WHEN @Last_ID = topic_id 
          THEN 1 
          ELSE 0 
        END AS Reset_Num,
    @Last_ID := topic_id,
    @rn := CASE 
          WHEN @Reset_Num = 0
          THEN 0
          ELSE @rn + 1
        END AS rn
    FROM  `fposts` 
    WHERE  `pinposts_pinned` >0) AS t1
    group by topic_id

    • 0

    #23 Сергей Бондаренко

    Сергей Бондаренко

      Администратор

    • Администраторы
    • 10 236 сообщений
    • ГородАлматы
    • Авто:Pajero II 3dr'95 / AT4, Toyota TownAce'97 / AT4
    • Двигатель:4M40, 2C

    Отправлено 11 Июнь 2014 - 19:43

    я может подтупливаю,но не вижу - где 1.3 бесплатный?


    • 0

    #24 evcrest

    evcrest

      Пользователь

    • Пользователи
    • PipPip
    • 59 сообщений
    • ГородАлматы
    • Авто:Pajero III 2006
    • Двигатель:6G72

    Отправлено 11 Июнь 2014 - 21:20

    Не. Походу это я подтупливаю. Сейчас посмотрел, в версии 1.0.0 в самом xml написано, что он GNU public. А в 1.3.0 нифига не написано. Может и правда новая версия платная. Но в нете повсеместно в свободном доступе.

     

    Здесь забери, это я скачивал сегодня откуда-то. Его, кстати, я и проверял.


    • 0

    #25 evcrest

    evcrest

      Пользователь

    • Пользователи
    • PipPip
    • 59 сообщений
    • ГородАлматы
    • Авто:Pajero III 2006
    • Двигатель:6G72

    Отправлено 13 Июнь 2014 - 11:38

    Сергей, ну как дела? Получилось? Аль нет?


    • 0

    #26 Сергей Бондаренко

    Сергей Бондаренко

      Администратор

    • Администраторы
    • 10 236 сообщений
    • ГородАлматы
    • Авто:Pajero II 3dr'95 / AT4, Toyota TownAce'97 / AT4
    • Двигатель:4M40, 2C

    Отправлено 15 Июнь 2014 - 14:55

    На предстоящей неделе проверю
    • 0




    Количество пользователей, читающих эту тему: 0

    0 пользователей, 0 гостей, 0 скрытых пользователей