1 (14.02.2009 07:39 отредактировано De-Luxis)

Тема: [Релиз] Browser and OS icons

Приветс всем.

Скачал расширение Browser and OS icons для 1.3
оказалось что эта для версии бета.
В manifest заменил 

    <install><![CDATA[
              $db->add_field($db->prefix.'posts', 'user_agent', 'VARCHAR( 255 )', true);

        ]]></install>
    <uninstall><![CDATA[
                $db->drop_field($db->prefix.'posts', 'user_agent');
            ]]></uninstall>

на

<install><![CDATA[
              $forum_db->add_field('posts', 'user_agent', 'VARCHAR( 255 )', true);

        ]]></install>
    <uninstall><![CDATA[
                $forum_db->drop_field('posts', 'user_agent');
            ]]></uninstall>

наже $fdb на $forum_db

Все установилось, дополнительнуя строка в БД создалась. Но все равно не работает. Помгите плиз, где еще нада поправить?

Полный текст измененного manifest:

<?xml version="1.0" encoding="utf-8"?>

<extension engine="1.0">
    <id>browser_and_os_icons</id>
    <title>Browser and OS icons</title>
    <version>1.0</version>
    <description>This extension will add browser and OS icons to each post</description>
    <author>Daris</author>
    <minversion>1.3 Beta</minversion>
    <maxtestedon>1.3 Beta</maxtestedon>
    <install><![CDATA[
              $forum_db->add_field('posts', 'user_agent', 'VARCHAR( 255 )', true);

        ]]></install>
    <uninstall><![CDATA[
                $forum_db->drop_field('posts', 'user_agent');
            ]]></uninstall>
    <hooks>
        <hook id="vt_row_pre_display"><![CDATA[
                               if ($cur_post['user_agent'])
                               $pun_page['user_info'][] = '<li><span>'.userAgentIcons($cur_post['user_agent']).'</span></li>';

        ]]></hook>
        <hook id='vt_qr_get_posts'><![CDATA[
                            $query['SELECT'] .= ', p.user_agent';

                            include("extensions/browser_and_os_icons/user_agent.php");
]]></hook>
        <hook id='fn_qr_add_topic_post'><![CDATA[ $query['INSERT'] .= ', user_agent';
                              $query['VALUES'] .= ', \''.$forum_db->escape($_SERVER['HTTP_USER_AGENT']).'\'';
]]></hook>
        <hook id='fn_qr_add_post'><![CDATA[ $query['INSERT'] .= ', user_agent';
                            $query['VALUES'] .= ', \''.$forum_db->escape($_SERVER["HTTP_USER_AGENT"]).'\'';
]]></hook>
    </hooks>
</extension>

Сайт De-Luxis

Поделиться

2

Re: [Релиз] Browser and OS icons

Кроме манифеста расширение использует extensions/browser_and_os_icons/user_agent.php

Сайт hcs

Поделиться

3

Re: [Релиз] Browser and OS icons

Да.
Сейчас его привиду.
Но там вроди ни чего такого.

<?
function userAgentIcons($useragent) {
    $ua = strtolower($useragent);
    $ua_browser = 'unknown';
    $ua_os = 'unknown';

    // Browser detection:
    if (strpos($ua, 'aweb') !== false) $ua_browser = 'AWeb';
    else if (strpos($ua, 'camino') !== false) $ua_browser = 'Camino';
    else if (strpos($ua, 'epiphany') !== false) $ua_browser = 'Epiphany';
    else if (strpos($ua, 'galeon') !== false) $ua_browser = 'Galeon';
    else if (strpos($ua, 'hotjava') !== false) $ua_browser = 'HotJava';
    else if (strpos($ua, 'icab') !== false) $ua_browser = 'iCab';
    else if (strpos($ua, 'safari') !== false) $ua_browser = 'Safari';
    else if (strpos($ua, 'konqueror') !== false) $ua_browser = 'Konqueror';
    else if (strpos($ua, 'flock') !== false) $ua_browser = 'Flock';
    else if (strpos($ua, 'iceweasel') !== false) $ua_browser = 'Iceweasel';
    else if (strpos($ua, 'seamonkey') !== false) $ua_browser = 'SeaMonkey';
    else if (strpos($ua, 'firefox') !== false) $ua_browser = 'Firefox';
    else if (strpos($ua, 'firebird') !== false) $ua_browser = 'Firebird';
    else if (strpos($ua, 'netscape') !== false) $ua_browser = 'Netscape';
    else if (strpos($ua, 'mozilla') !== false && strpos($ua, 'rv:') !== false) $ua_browser = 'Mozilla';
    else if (strpos($ua, 'opera') !== false) $ua_browser = 'Opera';
    else if (strpos($ua, 'avant browser') !== false) $ua_browser = 'AvantBrowser';
    else if (strpos($ua, 'maxthon') !== false || strpos($ua, 'myie') !== false) $ua_browser = 'Maxthon';
    else if (strpos($ua, 'phaseout') !== false) $ua_browser = 'PhaseOut';
    else if (strpos($ua, 'slimbrowser') !== false) $ua_browser = 'SlimBrowser';
    else if (strpos($ua, 'msie') !== false)
    {
        if (intval(substr($ua, strpos($ua, 'msie')+5)) > 6) $ua_browser = 'MSIE7';
        else $ua_browser = 'MSIE';
    }

    // OS detection:
    if (strpos($ua, 'amiga') !== false) $ua_os = 'Amiga';
    else if (strpos($ua, 'beos; ') !== false) $ua_os = 'BeOS';
    else if (strpos($ua, 'freebsd') !== false) $ua_os = 'FreeBSD';
    else if (strpos($ua, 'hp-ux') !== false) $ua_os = 'HP-UX';
    else if (strpos($ua, 'linux') !== false)
    {
    if (strpos($ua, 'centos') !== false || strpos($ua, 'cent os') !== false) $ua_os = 'CentOS';
    else if (strpos($ua, 'debian') !== false) $ua_os = 'Debian';
    else if (strpos($ua, 'fedora') !== false) $ua_os = 'Fedora';
    else if (strpos($ua, 'freespire') !== false) $ua_os = 'Freespire';
    else if (strpos($ua, 'gentoo') !== false) $ua_os = 'Gentoo';
    else if (strpos($ua, 'kanotix') !== false) $ua_os = 'Kanotix';
    else if (strpos($ua, 'kateos') !== false || strpos($ua, 'kate os') !== false) $ua_os = 'KateOS';
    else if (strpos($ua, 'knoppix') !== false) $ua_os = 'Knoppix';
    else if (strpos($ua, 'kubuntu') !== false) $ua_os = 'Kubuntu';
    else if (strpos($ua, 'linspire') !== false) $ua_os = 'Linspire';
    else if (strpos($ua, 'mandriva') !== false || strpos($ua, 'mandrake') !== false) $ua_os = 'Mandriva';
    else if (strpos($ua, 'redhat') !== false || strpos($ua, 'red hat') !== false) $ua_os = 'RedHat';
    else if (strpos($ua, 'slackware') !== false) $ua_os = 'Slackware';
    else if (strpos($ua, 'slax') !== false) $ua_os = 'Slax';
    else if (strpos($ua, 'suse') !== false) $ua_os = 'Suse';
    else if (strpos($ua, 'xubuntu') !== false) $ua_os = 'Xubuntu';
    else if (strpos($ua, 'ubuntu') !== false) $ua_os = 'Ubuntu';
    else if (strpos($ua, 'xandros') !== false) $ua_os = 'Xandros';
    else if (strpos($ua, 'arch') !== false) $ua_os = 'Arch';
    else if (strpos($ua, 'ark') !== false) $ua_os = 'Ark';
    else $ua_os = 'Linux';
    }
    else if (strpos($ua, 'macosx') !== false || strpos($ua, 'macos') !== false || strpos($ua, 'mac os x') !== false || strpos($ua, 'macintosh') !== false || strpos($ua, 'os=mac') !== false || strpos($ua, 'mac_osx') !== false) $ua_os = 'MacOSX';
    else if (strpos($ua, 'macppc') !== false || strpos($ua, 'mac_ppc') !== false || strpos($ua, 'cpu=ppc;') !== false && strpos($ua, 'os=mac') !== false || strpos($ua, 'macintosh; ppc') !== false || strpos($ua, 'macintosh;') !== false && strpos($ua, 'ppc') !== false || strpos($ua, 'mac_powerpc') !== false) $ua_os = 'MacPPC';
    else if (strpos($ua, 'netbsd') !== false) $ua_os = 'NetBSD';
    else if (strpos($ua, 'os/2') !== false) $ua_os = 'OS/2';
    else if (strpos($ua, 'avantgo') !== false) $ua_os = 'Palm';
    else if (strpos($ua, 'sunos') !== false || strpos($ua, 'solaris') !== false) $ua_os = 'SunOS';
    else if (strpos($ua, 'symbian') !== false) $ua_os = 'SymbianOS';
    else if (strpos($ua, 'unix') !== false) $ua_os = 'Unix';
    else if (strpos($ua, 'windows nt 6.0') !== false || strpos($ua, 'winnt6.0') !== false) $ua_os = 'WindowsVista';
    else if (strpos($ua, 'windows nt 5.1') !== false || strpos($ua, 'windows xp 5.1') !== false || strpos($ua, 'windows xp') !== false || strpos($ua, 'winxp') !== false || strpos($ua, 'winnt5.1') !== false || strpos($ua, 'cygwin_nt-5.1') !== false || strpos($ua, 'windows nt 5.0') !== false || strpos($ua, 'windows 2000') !== false || strpos($ua, 'win2000') !== false ||  strpos($ua, 'winnt5.0') !== false || strpos($ua, 'windows nt 5.2') !== false || strpos($ua, 'winnt5.2') !== false) $ua_os = 'WindowsXP';
    else if (strpos($ua, 'windows') !== false || strpos($ua, 'win') !== false) $ua_os = 'Windows';
    else if (strpos($ua, 'macintosh') !== false || strpos($ua, 'mac') !== false) $ua_os = 'Macintosh';
    else if (strpos($ua, 'sun') !== false) $ua_os = 'Sun';

    $ua = '<img src="extensions/browser_and_os_icons/user_agent/os/' . htmlspecialchars(ereg_replace('[^a-z0-9_]', '', strtolower($ua_os))) . '.png" title="' . htmlspecialchars($useragent) . '" alt="' . htmlspecialchars($ua_os) . '" style="margin-right: 1px"/>' . '<img src="extensions/browser_and_os_icons/user_agent/browser/' . htmlspecialchars(ereg_replace('[^a-z0-9_]', '', strtolower($ua_browser))) . '.png" title="' . htmlspecialchars($useragent) . '" alt="' . htmlspecialchars($ua_browser) . '" style="margin-left: 1px"/>';

    return $ua;
}
?>

Сайт De-Luxis

Поделиться

4

Re: [Релиз] Browser and OS icons

Расширение начинает показывать иконки после того как пользователь отправит сообщение. Отправь и посмотри, появится ли иконка у твоего нового сообщения.

Сайт hcs

Поделиться

5

Re: [Релиз] Browser and OS icons

Нет, не идет. В таблице user_agent ставит NULL

Добавлено спустя 5 минут 46 секунд:

Официальная тема на форуме где обсуждают ее. Но там все старое и для беты

Сайт De-Luxis

Поделиться

6

Re: [Релиз] Browser and OS icons

Значит $_SERVER['HTTP_USER_AGENT'] не возвращает нужное значение

Сайт hcs

Поделиться

7

Re: [Релиз] Browser and OS icons

Как его заставить возвращать? и из-за чего может быть это

Добавлено спустя 12 минут 54 секунды:

Вот еще на информере писали что-то

Сайт De-Luxis

Поделиться

8

Re: [Релиз] Browser and OS icons

Создай скрипт:

<?php
header('Content-type: text');    
print_r($_ENV);
print_r($_SERVER);

назови его например test.php, положи на сервер и обратись к нему. Посмотри, какой он выдает HTTP_USER_AGENT

Сайт hcs

Поделиться

9

Re: [Релиз] Browser and OS icons

Array ( [HTTP_USER_AGENT] => Opera/9.63 (Windows NT 5.1; U; ru) Presto/2.1.1
все нормально. Проблема в самом расширении скорее всего.
Попробовал вручную в таблицу вставить Opera/9.63 (Windows NT 5.1; U; ru) Presto/2.1.1 все равно не отобразил hmm

Сайт De-Luxis

Поделиться

10

Re: [Релиз] Browser and OS icons

Расширение не устанавливается

Fatal error: Call to a member function on a non-object in /.../admin/extensions.php(176) : eval()'d code on line 2

Поделиться

11 (17.12.2009 18:07 отредактировано flashcat)

Re: [Релиз] Browser and OS icons

Neolo, читай первый пост там решение написано... roll
smile только оно  все равно с 1.3.4 не работает. smile

Сайт flashcat

Поделиться

12 (20.04.2010 03:24 отредактировано PunBB Fun)

Re: [Релиз] Browser and OS icons

Я использовал для этих целей расширение user_agent. Правда тоже без небольшой доработки не обошлось. Пришлось добавить проверку на версию NT 5.2 (иначе неверный значок отображался), проверку и значок на мобильные устройства и SymbOS. Единственное чего не хватает в этом расширении, это не показывать в сообщениях до установки расширения. Если нужно выложу свой вариант, или сами доработайте.

Поделиться