-0.74
Рейтинг
0.25
Сила

Сохранение масштаба при просмотре фотосета

Добрый день.
Возникла необходимость в фотосете запоминать настройку пользователя относительно масштабов изображения. Имеется ввиду, если в фотосет загружены большие по высоте картинки, они ужимаются, что текст на них становится нечитабельным. Для этого есть кнопка Expand the image, которая растягивает картинку до полного размера, но после перехода к следующей картинке все приходится повторять заново, т.к. положение этой опции не сохраняется. Можно ли как-то заставить ее сохраняться?

Sphinx и PHP 5.3.21

Пытаюсь завести сфинкс на PHP 5.3.21, где API сфинкса уже впилено в сам PHP:
sphinx support	enabled
Version	1.1.0

Конечно, стало ругаться на то, что классы уже определены. Закомментил следующую строку в /classes/modules/sphinx/Sphinx.class.php:
require_once(Config::Get('path.root.engine').'/lib/external/Sphinx/sphinxapi.php');

Ошибки ушли, но поиск не дает результатов.

Самое странное, что подобной ситуации со встроенным в PHP сфинксапи вообще не гуглится.

Индексы создаются, но на сайте поиск выдает пустой результат. В какую сторону копать?

config.php поиска:
source site1
{
    type				= mysql
	sql_host			= localhost
	sql_user			= site1_user
	sql_pass			= 123123123
	sql_db				= site1
	sql_port			= 3306	# optional, default is 3306
	sql_query_pre		= SET CHARACTER_SET_RESULTS=cp1251
}

source elements: site1
{
    sql_query_range		= SELECT MIN(topic_id), MAX(topic_id) FROM phpbb_topics
    sql_range_step		= 1000

	sql_query = SELECT \
                    topic_id, \
                    forum_id, \
                    topic_title, \
                    topic_poster, \
                    topic_replies, \
                    topic_views, \
                    topic_last_post_id  \
                FROM \
                    phpbb_topics \
                WHERE topic_id >= $start AND topic_id <= $end

	sql_attr_uint	= topic_poster
    sql_attr_uint   = topic_replies
    sql_attr_uint   = topic_views
	sql_attr_uint	= forum_id
    sql_attr_uint	= topic_last_post_id
}

source posts: site1
{
    sql_query_pre		= SET CHARACTER_SET_RESULTS=cp1251
    sql_query_pre       = REPLACE INTO sph_counter SELECT 1, MAX(post_id) FROM phpbb_posts_text
    
    sql_query_range		= SELECT MIN(post_id), (select max_doc_id from sph_counter) FROM phpbb_posts_text
    sql_range_step		= 1000

	sql_query = SELECT \
                    pt.post_id, \
                    p.poster_id, \
                    p.post_time, \
                    t.topic_id, \
                    t.forum_id, \
                    f.cat_id, \
                    p2.post_time as last_post_in_topic_time, \
                    pt.post_text as text, \
                    t.topic_title as title \
                FROM \
                    phpbb_posts_text pt \
                INNER JOIN \
                    phpbb_posts p on p.post_id = pt.post_id \
                INNER JOIN \
                    phpbb_topics t on p.topic_id = t.topic_id \
                INNER JOIN \
                    phpbb_posts p2 on t.topic_last_post_id = p2.post_id \
                INNER JOIN \
                    phpbb_forums f on t.forum_id = f.forum_id \
                WHERE pt.post_id >= $start AND pt.post_id <= $end

    sql_attr_uint       = last_post_in_topic_time
	sql_attr_uint       = poster_id
    sql_attr_uint       = topic_id
    sql_attr_uint       = forum_id
    sql_attr_uint       = cat_id
	sql_attr_timestamp	= post_time
}

source delta: posts
{
    sql_query_pre		= SET CHARACTER_SET_RESULTS=cp1251
    sql_query_range		= SELECT (select max_doc_id from sph_counter), MAX(post_id) FROM phpbb_posts_text
}

index topics
{
    docinfo			= extern
	morphology		= stem_enru
	stopwords			=
	min_word_len		= 1
	charset_type		= sbcs
	charset_table		= 0..9, A..Z->a..z, _, a..z, U+A8->U+E5, U+B8->U+E5, U+C0..U+DF->U+E0..U+FF, U+E0..U+FF
	min_prefix_len		= 0
	min_infix_len		= 0
    
    path			= /var/lib/sphinx/site1/topics
    source			= elements
    
    html_strip      = 1
}

index doubles: topics
{
    source          = elements
    path			= /var/lib/sphinx/site1/doubles
}

index posts: topics
{
	path			= /var/lib/sphinx/site1/posts
    source			= posts
}

index delta: posts
{
    path			= /var/lib/sphinx/site1/delta
    source			= delta
}

source site2
{
        type            = mysql
        sql_host        = localhost
        sql_user        = site2ls_user
        sql_pass        = 123123123
        sql_db          = site2ls
        sql_port        = 3306
#        sql_sock        = /var/run/mysqld/mysqld.sock
   
       
        mysql_connect_flags     = 32 
   
        sql_query_pre                   = SET NAMES utf8
        sql_query_pre                   = SET SESSION query_cache_type=OFF    
}
 
source topicsSource : site2
{
        sql_query               = \
                SELECT t_fast.topic_id, t_fast.topic_title, UNIX_TIMESTAMP(t_fast.topic_date_add) as topic_date_add, \
                tc.topic_text, t_fast.topic_publish \
                FROM prefix_topic as t_fast, prefix_topic_content AS tc \
                WHERE t_fast.topic_id=tc.topic_id AND t_fast.topic_id>=$start AND t_fast.topic_id<=$end
 
        sql_query_range         = SELECT MIN(topic_id),MAX(topic_id) FROM prefix_topic
        sql_range_step          = 1000
        sql_attr_uint = topic_publish
        sql_attr_timestamp      = topic_date_add
        sql_attr_multi  = uint tag from query; SELECT topic_id, topic_tag_id FROM prefix_topic_tag
        sql_ranged_throttle     = 0
}
 
source commentsSource : site2
{
        sql_query               = \
                        SELECT comment_id, comment_text, UNIX_TIMESTAMP(comment_date) as comment_date, comment_delete \
                        FROM prefix_comment \
                        WHERE target_type='topic' AND comment_id>=$start AND comment_id<=$end AND comment_publish=1
 
        sql_query_range         = SELECT MIN(comment_id),MAX(comment_id) FROM prefix_comment
        sql_range_step          = 5000
 
        sql_attr_uint = comment_delete
        sql_attr_timestamp      = comment_date
}
 
index topicsIndex
{
        source                  = topicsSource
        path                    = /var/lib/sphinx/site2/topicIndex
        docinfo                 = extern
        mlock                   = 0
        morphology = stem_enru
        charset_type            = utf-8
        html_strip                              = 1
        html_remove_elements = style, script, code
}
 
index commentsIndex
{
        source                  = commentsSource
        path                    = /var/lib/sphinx/site2/commentsIndex
        docinfo                 = extern
        mlock                   = 0
        morphology = stem_enru
        charset_type            = utf-8
        html_strip                              = 1
        html_remove_elements = style, script, code
}

indexer
{
    mem_limit           = 100M
}

searchd
{
    listen                  = localhost:3312
    log                     = /var/log/sphinx/searchd.log
    query_log               = /var/log/sphinx/query.log
    read_timeout            = 5
    max_children            = 30
    pid_file                = /var/run/sphinx/searchd.pid
    max_matches             = 10000
    seamless_rotate         = 1
    preopen_indexes         = 0
    unlink_old              = 1
}
 

Регистрация/авторизация через виджет "Войти через ВКонтакте" в один клик

Странно, что такого плагина еще нет (может плохо искал). Предлагаю создать самый простой плагин авторизации/регистрации через готовый виджет «Войти через ВКонтакте» в один клик. Основное отличие от существующих плагинов — отсутствие необходимости создавать приложение ВКонтакте, а также отсутствие необходимость пользователю давать какие-либо разрешения, которые обычно отпугивают их.



Суть плагина предельно проста: отображает такую кнопку (предварительно созданную ВКонтакте владельцем сайта, т.к. кнопки для каждого уникальны) в окне авторизации/регистрации Livestreet, а также в месте для комментов для неавторизованных.

При клике по кнопке отправляется запрос в ВК, и обратно в GET'е возвращаются фото и имя юзера (на них не нужно вообще никаких разрешений), а также проверочный хэш:
?uid=1234567&first_name=Иван&last_name=Иванов&photo=/images/camera_a.gif&photo_rec=/images/camera_c.gif&hash=29b5d17e497976d1e74250246b2b9bcb

Задача плагина эти данные забрать из GET'а и создать юзера, сразу же его авторизовав. Логин делать либо равный id/логину ВКонтакте, либо транслитерированное имя и фамилия (желательна регулировка этой опции). Ну и после всего этого редирект обратно на страницу, с которой была нажата кнопка в виджете.

Кстати, нужно еще спросить у него e-mail. Жаль, что без него никак, а то было бы самое прозрачное решение: клик и ты мгновенно авторизован.

Дополнительная документация по механизму работы виджета есть по ссылке выше не дает постить ссылки — заходим ВКонтакте -> Разработчикам -> Виджеты и сторонние сайты -> Авторизация. Правда, там все настолько элементарно, что читать особо нечего. Подобную штуку я уже писал для другого самписаного сайта. За этот плагин взялся бы и сам, да только в коде LiveStreet не разбираюсь — боюсь, больше времени убъю на это. Кроме того, плагин крайне юзабельный должен получиться, что на нем можно было бы неплохо заработать. Дерзайте. Я ваш первый покупатель.

UPD: Посмотреть, как работа этого плагина может выглядеть, можно здесь.