Toon posts:

[PHP] News op portal plus...

Pagina: 1
Acties:
  • 41 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik heb een phpBB forum in combinatie met Ez Board, alles werkt goed enzo maar ik heb een vraagje over het ophalen van berichten van diverse fora naar de portal. (De nieuwsfunctie op het portal).
Ik heb 2 newsfora met mededelingen, waarvan er 1 openbaar is (#3) en 1 prive moet zijn (#4) (voor members only dus)
Dit ziet er als volgt uit:
PHP:
1
2
3
4
5
6
7
8
9
10
<?
// Hoeveelheid nieuws op portal
$CFG['number_of_news'] = '5';

// Lengte van nieuws
$CFG['news_length'] = '200';

// Nieuws bron forum ID: scheid met comma voor meerdere forums, bijv. '1,2,5'
$CFG['news_forum'] = '3,4';
?>

Het nieuws wordt dus opgehaald vanaf 3 en 4 zodat of je nu ingelogd bent of niet, altijd ook de private (#4) mededelingen zou kunnen lezen.
Ik wil graag dat als je ingelogd bent, nummer 3 en 4 kan lezen. En als je een gast bent dat je dan alleen 3 kan lezen.
Dit klinkt als een aanvraag van uren coden, maar volgens mij valt dit wel mee want een "recent topics" gedeelte werkt namelijk wel zoals ik dat zou willen, namelijk dat je ingelogd moet zijn om de private fora te kunnen lezen.

gedeelte voor mededeling forum:
PHP:
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
<?
//
// Haal berichten van mededeling forum op
//
if(!isset($HTTP_GET_VARS['article']))
{
    $template->assign_block_vars('welcome_text', array());

    $fetchposts = phpbb_fetch_posts($CFG['news_forum'], $CFG['number_of_news'], $CFG['news_length']);

    for ($i = 0; $i < count($fetchposts); $i++)
    {
        if( $fetchposts[$i]['striped'] == 1 )
        {
            $open_bracket = '[ ';
            $close_bracket = ' ]';
            $read_full = $lang['Read_Full'];
        }
        else
        {
            $open_bracket = '';
            $close_bracket = '';
            $read_full = '';
        }

        $template->assign_block_vars('fetchpost_row', array(
            'TITLE' => $fetchposts[$i]['topic_title'],
            'POSTER' => $fetchposts[$i]['username'],
            'TIME' => $fetchposts[$i]['topic_time'],
            'TEXT' => $fetchposts[$i]['post_text'],
            'REPLIES' => $fetchposts[$i]['topic_replies'],
            'U_VIEW_COMMENTS' => append_sid('viewtopic.' . $phpEx . '?t=' . $fetchposts[$i]['topic_id']),
            'U_POST_COMMENT' => append_sid('posting.' . $phpEx . '?mode=reply&amp;amp;t=' . $fetchposts[$i]['topic_id']),
            'U_READ_FULL' => append_sid('portal.' . $phpEx . '?article=' . $i),
            'L_READ_FULL' => $read_full,
            'OPEN' => $open_bracket,
            'CLOSE' => $close_bracket)
        );
    }
}
else
{
    $fetchposts = phpbb_fetch_posts($CFG['news_forum'], $CFG['number_of_news'], 0);

    $i = intval($HTTP_GET_VARS['article']);

    $template->assign_block_vars('fetchpost_row', array(
        'TITLE' => $fetchposts[$i]['topic_title'],
        'POSTER' => $fetchposts[$i]['username'],
        'TIME' => $fetchposts[$i]['topic_time'],
        'TEXT' => $fetchposts[$i]['post_text'],
        'REPLIES' => $fetchposts[$i]['topic_replies'],
        'U_VIEW_COMMENTS' => append_sid('viewtopic.' . $phpEx . '?t=' . $fetchposts[$i]['topic_id']),
        'U_POST_COMMENT' => append_sid('posting.' . $phpEx . '?mode=reply&amp;amp;t=' . $fetchposts[$i]['topic_id'])
        )
    );
}
//
// BEEINDIG: Haal mededelingen op
//
?>

Gedeelte voor recente topics
PHP:
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
<?
//
// Recente onderwerpen
//
$sql = "SELECT * FROM ". FORUMS_TABLE . " ORDER BY forum_id";
if (!$result = $db->sql_query($sql))
{
    message_die(GENERAL_ERROR, 'Could not query forums information', '', __LINE__, __FILE__, $sql);
}
$forum_data = array();
while( $row = $db->sql_fetchrow($result) )
{
    $forum_data[] = $row;
}

$is_auth_ary = array();
$is_auth_ary = auth(AUTH_ALL, AUTH_LIST_ALL, $userdata, $forum_data);

if( $CFG['exceptional_forums'] == '' )
{
    $except_forum_id = '\'start\'';
}
else
{
    $except_forum_id = $CFG['exceptional_forums'];
}

for ($i = 0; $i < count($forum_data); $i++)
{
    if ((!$is_auth_ary[$forum_data[$i]['forum_id']]['auth_read']) or (!$is_auth_ary[$forum_data[$i]['forum_id']]['auth_view']))
    {
        if ($except_forum_id == '\'start\'')
        {
            $except_forum_id = $forum_data[$i]['forum_id'];
        }
        else
        {
            $except_forum_id .= ',' . $forum_data[$i]['forum_id'];
        }
    }
}
$sql = "SELECT t.topic_id, t.topic_title, t.topic_last_post_id, t.forum_id, p.post_id, p.poster_id, p.post_time, u.user_id, u.username
        FROM " . TOPICS_TABLE . " AS t, " . POSTS_TABLE . " AS p, " . USERS_TABLE . " AS u
        WHERE t.forum_id NOT IN (" . $except_forum_id . ")
            AND t.topic_status <> 2
            AND p.post_id = t.topic_last_post_id
            AND p.poster_id = u.user_id
        ORDER BY p.post_id DESC
        LIMIT " . $CFG['number_recent_topics'];
if (!$result = $db->sql_query($sql))
{
    message_die(GENERAL_ERROR, 'Could not query recent topics information', '', __LINE__, __FILE__, $sql);
}
$number_recent_topics = $db->sql_numrows($result);
$recent_topic_row = array();
while ($row = $db->sql_fetchrow($result))
{
    $recent_topic_row[] = $row;
}
for ($i = 0; $i < $number_recent_topics; $i++)
{
    $template->assign_block_vars('recent_topic_row', array(
        'U_TITLE' => append_sid("viewtopic.$phpEx?" . POST_POST_URL . '=' . $recent_topic_row[$i]['post_id']) . '#' .$recent_topic_row[$i]['post_id'],
        'L_TITLE' => $recent_topic_row[$i]['topic_title'],
        'U_POSTER' => append_sid("profile.$phpEx?mode=viewprofile&amp;amp;" . POST_USERS_URL . "=" . $recent_topic_row[$i]['user_id']),
        'S_POSTER' => $recent_topic_row[$i]['username'],
        'S_POSTTIME' => create_date($board_config['default_dateformat'], $recent_topic_row[$i]['post_time'], $board_config['board_timezone'])
        )
    );
}
//
// BEEINDIG - Recente onderwerpen
//
?>

Dus hoe zou ik dat inlog "mechanisme" van recente topics kunnen implanteren in het mededelingenblok op mijn portal?

Duizend maal dank voor het eventuele helpen :7 :+ :*

  • Brakkie
  • Registratie: Maart 2001
  • Niet online

Brakkie

blaat

Mmmm laat ik dan maar komen met de enigzins sneue maar terechte woorden: Wat heb je geprobeerd en wat werkt er niet?

P&W Beleid

[ Voor 24% gewijzigd door Brakkie op 28-06-2003 18:16 ]

Systeem | Strava


Verwijderd

Topicstarter
Ik heb het volgende geprobeerd:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Hoeveelheid nieuws op portal 
$CFG['number_of_news'] = '5'; 

// Lengte van nieuws 
$CFG['news_length'] = '200'; 

// Nieuws bron forum ID: scheid met comma voor meerdere forums, bijv. '1,2,5' 
if( $userdata['session_logged_in'] ) 
{ 
    $CFG['news_forum'] = '3,4'; 
} 
else 
{ 
    $CFG['news_forum'] = '3'; 
}

Dit zorgt er echter voor dat je of altijd 3,4 kan zien of altijd alleen 3, onafhankelijk of je bent ingelogd of niet. En dat is juist wat ik er in wil hebben ;(

[ Voor 34% gewijzigd door Verwijderd op 28-06-2003 18:51 ]


Verwijderd

Topicstarter
Als mijn probleem niet duidelijk genoeg is moet je het zeggen hoor :?

Ik zit dus met iets wat wel gewoon zou moeten werken maar het niet doet ;(

Verwijderd

Topicstarter
Kan niemand mij dan ook maar een klein beetje op weg helpen?

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

modbreak: kicken binnen 24 uur wordt absoluut niet op prijs gesteld hier, zie de FAQ mbt not-done activiteiten. De meeste mensen hier hebben meer te doen dat iedere 5 minuten checken of er een interessante vraag is, zeker in het weekend

Professionele website nodig?


  • pietje63
  • Registratie: Juli 2001
  • Laatst online: 19:06

pietje63

RTFM

Verwijderd schreef op 28 June 2003 @ 21:24:
Kan niemand mij dan ook maar een klein beetje op weg helpen?
(om even te beginnen: hulde voor de modbreak)

Ik denk dat het een vrij lastig probleem is, maar het is wel op te lossen

Je moet daarvoor kijken hoe phpbb is opgebouwd

1; je hebt een tabel met users
2; je hebt een tabel met welke user in welke groep zit
3; je hebt een tabel met welke rechten welke groep heeft

Je moet je script dus eerst laten kijken welke groepen (dit kunnen personal groepen zijn -> groepen die maar 1 user zijn) of echte groepen (groepen waar je mensen aan toe kan voegen en die je eigen rechten kang even) toegang hebben tot het forum.
Dan moet je uit de sessie de user-id (oid) halen; kijken tot welke groepen deze user hoort en dan vergelijken of een van deze groepen toegang heeft tot het forum

De grootste Nederlandstalige database met informatie over computers met zoekfunctie!!


Verwijderd

Topicstarter
pietje63 schreef op 29 June 2003 @ 00:28:
[...]

(om even te beginnen: hulde voor de modbreak)

Ik denk dat het een vrij lastig probleem is, maar het is wel op te lossen

Je moet daarvoor kijken hoe phpbb is opgebouwd

1; je hebt een tabel met users
2; je hebt een tabel met welke user in welke groep zit
3; je hebt een tabel met welke rechten welke groep heeft

Je moet je script dus eerst laten kijken welke groepen (dit kunnen personal groepen zijn -> groepen die maar 1 user zijn) of echte groepen (groepen waar je mensen aan toe kan voegen en die je eigen rechten kang even) toegang hebben tot het forum.
Dan moet je uit de sessie de user-id (oid) halen; kijken tot welke groepen deze user hoort en dan vergelijken of een van deze groepen toegang heeft tot het forum
Ja ok dat is dus precies wat ik doe, kijken of een user is ingelogd en dan de news_forum id aanpassen daaraan. Zie de code hierboven.
Maar dat werkt dus niet zoals ik zou willen, geeft echter ook geen error

  • pietje63
  • Registratie: Juli 2001
  • Laatst online: 19:06

pietje63

RTFM

Verwijderd schreef op 29 juni 2003 @ 01:18:
[...]
Ja ok dat is dus precies wat ik doe, kijken of een user is ingelogd en dan de news_forum id aanpassen daaraan. Zie de code hierboven.
Maar dat werkt dus niet zoals ik zou willen, geeft echter ook geen error
Ja, maar wat ik zeg wat je moet gaan schrijven is meer... Je moet ook de rechten van de ingelogde user bekijken
verder weet ik niet hoe phpbb de cookies/sessies opslaat maar misschien staat er wel iets gecodeerd in
Dit zorgt er echter voor dat je of altijd 3,4 kan zien of altijd alleen 3, onafhankelijk of je bent ingelogd of niet. En dat is juist wat ik er in wil hebben
O, toch even verkeerd gelezen ik dacht altijd 3,4 als ingelogd en altijd 3 als niet ingelogd

je zegt niet OF ALTIJD, kun je misschien eerst uitzoeken wanneer 3 en wanneer 3 en 4?

verder is het misschien makkelijker om met de cooksies van phpbb te werken dan met de sessies omdat die makkelijker te bekijken zijn

[ Voor 33% gewijzigd door pietje63 op 29-06-2003 01:50 ]

De grootste Nederlandstalige database met informatie over computers met zoekfunctie!!


Verwijderd

Topicstarter
hehe je hebt gelijk, misschien heb ik het verkeerd verteld maar
O, toch even verkeerd gelezen ik dacht altijd 3,4 als ingelogd en altijd 3 als niet ingelogd

je zegt niet OF ALTIJD, kun je misschien eerst uitzoeken wanneer 3 en wanneer 3 en 4?
klopt

Van cookies heb ik helemaal geen verstand :|
Ik ben ook maar een phpBB board aan het tweaken

Ik vind het vreemd dat hoewel je verteld welke newsfora die moet nemen terwijl je ingelogd bent en welk newsforum ie moet nemen als je niet ingelogd bent... ie het nog niet doet :(

  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 21:39
Hint: Alles draait om:

$is_auth_ary = auth(AUTH_ALL, AUTH_LIST_ALL, $userdata, $forum_data);
en:

if($is_auth_ary[$forum_data[$i]['forum_id']]['auth_read']) .....

Succes :)

Verwijderd

Topicstarter
bartvb schreef op 29 June 2003 @ 03:28:
Hint: Alles draait om:

$is_auth_ary = auth(AUTH_ALL, AUTH_LIST_ALL, $userdata, $forum_data);
en:

if($is_auth_ary[$forum_data[$i]['forum_id']]['auth_read']) .....

Succes :)
Ok dan je Bart, dan probeer ik het volgende:

$is_auth_ary = auth(AUTH_ALL, AUTH_LIST_ALL, $userdata, $forum_data);

if($is_auth_ary[$forum_data[$i]['forum_id']]['auth_read'])
{
$CFG['news_forum'] = '3,4';
}
else
{
$CFG['news_forum'] = '3';
}

dan krijg ik de volgende error:
Fatal error: Call to undefined function: auth() in /data/members/free/tripod/nl/z/o/v/zovoc/htdocs/portal.php on line 46

Misschien dat je mijn fout er uit kunt halen of misschien de juiste code in 1x hiervoor geven? Bij voorbaat dank!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Sorry maar dit wordt nu wel een enorme supportkwestie over de problemen van phpBB, en daarmee buiten het straatje van P&W. Op www.phpbb.com is een supportforum voor dit soort vragen.

Professionele website nodig?

Pagina: 1

Dit topic is gesloten.