• Главная
  • » PHP
  • » Браузерное расширение для форума

#21 2011.06.27 17:33

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: Браузерное расширение для форума

Корочь все работает куку отдает.
Делай вместе с постом.
private_status = 0/1;
Да и хватит

Неактивен

#22 2011.06.27 19:31

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: Браузерное расширение для форума

Бета версия что на данный момент.


Вложения

Отредактировано TLENS (2011.06.28 16:49)

Неактивен

#23 2011.07.12 18:30

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: Браузерное расширение для форума

Надо исправить dblclick не удобно так как сразу попа начинает сворачивается и иногда второй раз не успеваю сделать клик.
Какие идеи?
Использовать ролик?

Неактивен

#24 2011.07.16 04:18

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: Браузерное расширение для форума

Паша ну как там ты делаешь апи привата?

Неактивен

#25 2011.07.18 15:09

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6538
Карма: 108
Профиль Веб-сайт

Re: Браузерное расширение для форума

да, сейчас займусь... сорь за мудозвонство, совсем что-то плохой стал)

Неактивен

#26 2011.07.18 15:29

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6538
Карма: 108
Профиль Веб-сайт

Re: Браузерное расширение для форума

Есть проблемка с приватными сообщениями. у нас сверяется последнее сообщение по его ID. Но у приватных сообщений и постов на форуме свои идентификаторы, которые в теории могут пересекаться.
Нужно для приватных сообщений делать отдельно запросы на сервер, либо в ответе на наши стандартные запросы посылать отдельно информацию по приватным и отдельно по постам на форуме.
Предлагаю остановиться на 2 варианте.
Добавлено спустя   2 минуты  1 секунду:
Вобщем, нужно изменить API. От расширение должно передаваться 2 идентификатора - ID приватного сообщения и ID поста на форуме.
Ответ будет содержать 2 массива с данными по последнему приватному сообщению и данными по последнему посту на форуме.
Добавлено спустя   2 минуты  50 секунд:
Пока подожду что ты скажешь.)

Неактивен

#27 2011.07.19 06:57

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: Браузерное расширение для форума

Слушай я понял но не могу сосредоточится чтобы обмозговать как все будет реализовано в расширении, и как я хотел тогда.
Я вчера ножки обмывал сейчас не соберу себя до кучи.
Кстати пока не забыл надо нотификатион открывать вместе с search в адресе и уже внутри регулировать location.search и взать какой id светить. А то когда например видео смотришь через флеш, то окна блокируются, и как только закрыл видео появляется куча уведомлений с последним сообщением.

Неактивен

#28 2011.07.20 10:28

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6538
Карма: 108
Профиль Веб-сайт

Re: Браузерное расширение для форума

TLENS, так какой вариант делаем?

Неактивен

#29 2011.07.20 12:27

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: Браузерное расширение для форума

В общем да делай еще наверное два правильных апи скриптами подстроимся под них.

Отредактировано TLENS (2011.07.20 12:28)

Неактивен

#30 2011.07.22 16:35

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6538
Карма: 108
Профиль Веб-сайт

Re: Браузерное расширение для форума

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
} else if (isset($_GET['informer'])) {
    include PUN_ROOT 'include/informer/Informer.inc.php';
    header('Content-Type: application/json; charset=UTF-8');
 
    try {
        $obj = new Informer($db$pun_user$lang_common$pun_config);
 
        if (isset($_GET['getMessage']) && isset($_GET['getPrivatMessage'])) {
            echo json_encode(array('status' => true'forum' => $obj->getMessage($_GET['getMessage']), 'privat' => $obj->getPrivateMessage($_GET['getPrivatMessage'])));
        } else if (isset($_GET['getPrivatMessage'])) {
            echo json_encode(array('status' => true'privat' => $obj->getPrivateMessage($_GET['getPrivatMessage'])));
        } else if (isset($_GET['getMessage'])) {
            echo json_encode(array('status' => true'forum' => $obj->getMessage($_GET['getMessage'])));
        } else if (isset($_GET['getPrivatMessages'])) {
            echo json_encode(array('status' => true'privat' => $obj->getPrivateMessages($_GET['getPrivatMessages'])));
        } else if (isset($_GET['getConfig'])) {
            echo json_encode(array('status' => true'config' => $obj->getConfig()));
        } else {
            echo json_encode(array('status' => true'forum' => $obj->getForums()));
        }
    } catch (Exception $e) {
        echo json_encode(array('status' => false'forum' => $e->getMessage()));
    }
}

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
<?php
 
class Informer
{
    private $_db;
    private $_pun_user;
    private $_lang;
    private $_pun_config;
 
 
    /**
     * Constructor
     * 
     * @param resource $db
     * @param array $pun_user
     * @param array $lang
     * @param array $pun_config
     */
    public function __construct ($db$pun_user$lang$pun_config)
    {
        $this->_db $db;
        $this->_pun_user $pun_user;
        $this->_lang $lang;
        $this->_pun_config $pun_config;
    }
 
 
    /**
     * getConfig
     * 
     * @return array
     * @throws Exception
     */
    public function getConfig ()
    {
        return array(
            'timezone' => $this->_pun_user['timezone'],
            'username' => $this->_pun_user['username'],
            'is_guest' => $this->_pun_user['is_guest']
        );
    }
 
 
    /**
     * getForums
     * 
     * @return array
     * @throws Exception
     */
    public function getForums ()
    {
        if (!$this->_pun_user['g_read_board']) {
            throw new Exception ($this->_lang['No view']);
        }
 
        $r $this->_db->query('
            SELECT f.id AS fid, f.last_post, f.last_post_id, f.last_poster, t.subject
 
            FROM ' $this->_db->prefix 'categories AS c
            INNER JOIN ' $this->_db->prefix 'forums AS f ON c.id=f.cat_id
            LEFT JOIN ' $this->_db->prefix 'topics AS t ON f.last_post_id=t.last_post_id
            LEFT JOIN ' $this->_db->prefix 'forum_perms AS fp ON (
                fp.forum_id=f.id
                AND fp.group_id=' $this->_pun_user['g_id'] . '
                AND (fp.read_forum IS NULL OR fp.read_forum=1)
            )
 
            WHERE fp.read_forum IS NULL OR fp.read_forum=1
 
            ORDER BY NULL
        'false);
        if (!$r) {
            throw new Exception ($this->_db->error());
        }
        if (!$this->_db->num_rows($r)) {
            throw new Exception ($this->_lang['Bad request']);
        }
 
        $data = array();
        while ($forum $this->_db->fetch_assoc($r)) {
            $data[$forum['fid']] = array(
                'last_post_id' => $forum['last_post_id'],
                'subject' => $forum['subject'],
                'last_post_time' => $forum['last_post'],
                'last_poster' => $forum['last_poster']
            );
        }
        return $data;
    }
 
 
    /**
     * getMessage
     * 
     * @param int $id
     * @return array
     * @throws Exception
     */
    public function getMessage ($id)
    {
        if (!$this->_pun_user['g_read_board']) {
            throw new Exception ($this->_lang['No view']);
        }
        if (!$id || $id || !is_numeric($id)) {
            throw new Exception ($this->_lang['Bad request']);
        }
 
        $r $this->_db->query('
            SELECT p.poster, p.message, p.hide_smilies, p.posted
            FROM ' $this->_db->prefix 'posts AS p
            INNER JOIN ' $this->_db->prefix 'topics AS t ON t.id = p.topic_id
            LEFT JOIN ' $this->_db->prefix 'forum_perms AS fp ON (
                fp.forum_id = t.forum_id
                AND fp.group_id = ' $this->_pun_user['g_id'] . '
                AND (fp.read_forum IS NULL OR fp.read_forum = 1)
            )
            WHERE p.id = ' $id
        false);
 
        if (!$r) {
            throw new Exception ($this->_db->error());
        }
        if (!$this->_db->num_rows($r)) {
            throw new Exception ($this->_lang['Bad request']);
        }
 
        $data $this->_db->fetch_assoc($r);
 
        return array (
            'message' => $this->_parseMessage($data['message'], $data['hide_smilies']),
            'poster' => $data['poster'],
            'posted' => $data['posted']
        );
    }
 
 
    /**
     * getPrivateMessage
     * 
     * @param int $id
     * @return array
     * @throws Exception
     */
    public function getPrivateMessage ($id)
    {
        if ($this->_pun_user['is_guest'] || !$this->_pun_user['g_pm'] || !$this->_pun_user['messages_enable'] || !$this->_pun_config['o_pms_enabled']) {
            throw new Exception ($this->_lang['No view']);
        }
        if (!$id || $id || !is_numeric($id)) {
            throw new Exception ($this->_lang['Bad request']);
        }
 
        $r $this->_db->query('
            SELECT m.subject, m.message, m.smileys, m.posted, m.sender
            FROM ' $this->_db->prefix 'messages AS m
            WHERE m.owner = ' $this->_pun_user['id'] . '
            AND m.id = ' $id
        false);
 
        if (!$r) {
            throw new Exception ($this->_db->error());
        }
        if (!$this->_db->num_rows($r)) {
            throw new Exception ($this->_lang['Bad request']);
        }
 
        $data $this->_db->fetch_assoc($r);
 
        return array (
            'subject' => $data['subject'],
            'message' => $this->_parseMessage($data['message'], $data['smileys']),
            'poster' => $data['sender'],
            'posted' => $data['posted']
        );
    }
 
 
 
    /**
     * getPrivateMessages
     * 
     * @param int $limit
     * @return array
     * @throws Exception
     */
    public function getPrivateMessages ($limit)
    {
        if ($this->_pun_user['is_guest'] || !$this->_pun_user['g_pm'] || !$this->_pun_user['messages_enable'] || !$this->_pun_config['o_pms_enabled']) {
            throw new Exception ($this->_lang['No view']);
        }
        if (!$limit || $limit || !is_numeric($limit)) {
            throw new Exception ($this->_lang['Bad request']);
        }
 
        $r $this->_db->query('
            SELECT m.id, m.subject, m.message, m.smileys, m.posted, m.sender
            FROM ' $this->_db->prefix 'messages AS m
            WHERE m.owner = ' $this->_pun_user['id'] . '
            ORDER BY m.id DESC
            LIMIT ' $limit
        false);
 
        if (!$r) {
            throw new Exception ($this->_db->error());
        }
        if (!$this->_db->num_rows($r)) {
            return array();
        }
 
 
        $out = array();
        while ($data $this->_db->fetch_assoc($r)) {
            $out[$data['id']] = array (
                'subject' => $data['subject'],
                'message' => $this->_parseMessage($data['message'], $data['smileys']),
                'poster' => $data['sender'],
                'posted' => $data['posted']
            );
        }
        return $out;
    }
 
 
    /**
     * _parseMessage
     * 
     * @param string $message
     * @param bool $hide_smilies
     * @return string
     */
    private function _parseMessage ($message$hide_smilies false)
    {
        require_once __DIR__ '/../parser.php';
        return parse_message($message$hide_smilies);
    }
}
?>

из кода понятно что требуется?)

Отредактировано Gemorroj (2011.09.01 13:06)

Неактивен

  • Главная
  • » PHP
  • » Браузерное расширение для форума

Дополнительно

forum.wapinet.ru

PunBB Mod v0.6.1
0.021 s