Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

Rekomendowane odpowiedzi

Opublikowano (edytowane)

Witam, potrzebuję modyfikacji, która pokazuje skład forum. Oto jej przykład na bazie MyBB 1.6 www.armia-css.pl/showteam.php

Oto kod do tego: [long]<?php

/**

* MyBB 1.6

* Copyright 2010 MyBB Group, All Rights Reserved

*

* Website: http://mybb.com

* License: http://mybb.com/about/license

*

* $Id: showteam.php 5110 2010-07-25 08:39:23Z RyanGordon $

*/

define("IN_MYBB", 1);

define('THIS_SCRIPT', 'showteam.php');

$templatelist = 'showteam,showteam_row,showteam_row_mod,postbit_email,postbit_pm';

$templatelist .= ',showteam_usergroup_user,showteam_usergroup,showteam_moderators_mod';

$templatelist .= ',showteam_moderators,showteam_moderators_forum';

require_once "./global.php";

// Load global language phrases

$lang->load('showteam');

add_breadcrumb($lang->nav_showteam);

$plugins->run_hooks('showteam_start');

$usergroups = array();

$moderators = array();

$users = array();

// Fetch the list of groups which are to be shown on the page

$query = $db->simple_select("usergroups", "gid, title, usertitle", "showforumteam=1", array('order_by' => 'disporder'));

while($usergroup = $db->fetch_array($query))

{

$usergroups[$usergroup['gid']] = $usergroup;

}

if(empty($usergroups))

{

error($lang->error_noteamstoshow);

}

// Fetch specific forum moderator details

if($usergroups[6]['gid'])

{

$query = $db->query("

SELECT m.*, f.name

FROM ".TABLE_PREFIX."moderators m

LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid=m.id)

LEFT JOIN ".TABLE_PREFIX."forums f ON (f.fid=m.fid)

WHERE f.active = 1 AND m.isgroup = 0

ORDER BY u.username

");

while($moderator = $db->fetch_array($query))

{

$moderators[$moderator['id']][] = $moderator;

}

}

// Now query the users of those specific groups

$groups_in = implode(",", array_keys($usergroups));

$users_in = implode(",", array_keys($moderators));

if(!$groups_in)

{

$groups_in = 0;

}

if(!$users_in)

{

$users_in = 0;

}

$forum_permissions = forum_permissions();

$query = $db->simple_select("users", "uid, username, displaygroup, usergroup, ignorelist, hideemail, receivepms", "displaygroup IN ($groups_in) OR (displaygroup='0' AND usergroup IN ($groups_in)) OR uid IN ($users_in)", array('order_by' => 'username'));

while($user = $db->fetch_array($query))

{

// If this user is a moderator

if(isset($moderators[$user['uid']]))

{

foreach($moderators[$user['uid']] as $forum)

{

if($forum_permissions[$forum['fid']]['canview'] == 1)

{

$forum_url = get_forum_link($forum['fid']);

eval("\$forumlist .= \"".$templates->get("showteam_moderators_forum")."\";");

}

}

$user['forumlist'] = $forumlist;

$forumlist = '';

$usergroups[6]['user_list'][$user['uid']] = $user;

}

if($user['displaygroup'] == '6' || $user['usergroup'] == '6')

{

$usergroups[6]['user_list'][$user['uid']] = $user;

}

// Are they also in another group which is being shown on the list?

if($user['displaygroup'] != 0)

{

$group = $user['displaygroup'];

}

else

{

$group = $user['usergroup'];

}

if($usergroups[$group] && $group != 6)

{

$usergroups[$group]['user_list'][$user['uid']] = $user;

}

}

// Now we have all of our user details we can display them.

$grouplist = '';

foreach($usergroups as $usergroup)

{

// If we have no users - don't show this group

if(!isset($usergroup['user_list']))

{

continue;

}

$bgcolor = '';

foreach($usergroup['user_list'] as $user)

{

$user['username'] = format_name($user['username'], $user['usergroup'], $user['displaygroup']);

$user['profilelink'] = get_profile_link($user['uid']);

// For the postbit templates

$post['uid'] = $user['uid'];

$emailcode = $pmcode = '';

if($user['hideemail'] != 1)

{

eval("\$emailcode = \"".$templates->get("postbit_email")."\";");

}

if($user['receivepms'] != 0 && $mybb->settings['enablepms'] != 0 && my_strpos(",".$user['ignorelist'].",", ",".$mybb->user['uid'].",") === false)

{

eval("\$pmcode = \"".$templates->get("postbit_pm")."\";");

}

$bgcolor = alt_trow();

// If the current group is a moderator group

if($usergroup['gid'] == 6 && !empty($user['forumlist']))

{

$forumslist = $user['forumlist'];

eval("\$modrows .= \"".$templates->get("showteam_moderators_mod")."\";");

}

else

{

eval("\$usergrouprows .= \"".$templates->get("showteam_usergroup_user")."\";");

}

}

if($usergroup['gid'] == 6 && !empty($user['forumlist']))

{

eval("\$grouplist .= \"".$templates->get("showteam_moderators")."\";");

}

else

{

eval("\$grouplist .= \"".$templates->get("showteam_usergroup")."\";");

}

$usergrouprows = '';

}

if(empty($grouplist))

{

error($lang->error_noteamstoshow);

}

$plugins->run_hooks("showteam_end");

eval("\$showteam = \"".$templates->get("showteam")."\";");

output_page($showteam);

?>[/long]

Znacie taką modyfikację?

Z góry dzięki za pomoc eXo

Edytowane przez eXorcist
Opublikowano (edytowane)

Kliknij tutaj

czyli:

http://adres-forum.costam/index.php?app=forums&module=extras&section=stats&do=leaders

Co prawda, pokazuje tylko adminów i modów.

Edytowane przez Gexem
Opublikowano

No niby znalazłem kod odpowiadający za to, ale teraz patrze że pokazuje on osoby mające np. dostęp do ACP:

//-----------------------------------------

// PRINT: Admins

//-----------------------------------------

$admins = array();

$supmods = array();

foreach( $members as $member )

{

if ( $this->caches['group_cache'][ $member['member_group_id'] ]['g_access_cp'] )

{

$member['forums'] = $this->lang->words['leader_all_forums'];

//-----------------------------------------

// Used...

//-----------------------------------------

$used_ids[] = $member['member_id'];

$admins[] = $member;

}

}

$this->output .= $this->registry->getClass('output')->getTemplate('stats')->group_strip( $this->lang->words['leader_admins'], $admins );

To teraz przerobić tak ten kod żeby pokazywało osoby z grupy o id X .

Pomoże ktoś?

Opublikowano (edytowane)

A możecie mi powiedzieć co źle robię?

[long] //-----------------------------------------

// PRINT: Admins

//-----------------------------------------

$admins = array();

$supmods = array();

$grupa = array();

foreach( $members as $member )

{

if ( $this->caches['group_cache'][ $member['member_group_id'] ]['g_access_cp'] )

{

$member['forums'] = $this->lang->words['leader_all_forums'];

//-----------------------------------------

// Used...

//-----------------------------------------

$used_ids[] = $member['member_id'];

$admins[] = $member;

}

}

$this->output .= $this->registry->getClass('output')->getTemplate('stats')->group_strip( $this->lang->words['leader_admins'], $admins );

//-----------------------------------------

// PRINT: Grupa

//-----------------------------------------

foreach( $members as $member )

{

if ( $this->caches['group_cache'][ $member['member_group_id'] ]['15'] )

{

$member['forums'] = $this->lang->words['leader_all_forums'];

//-----------------------------------------

// Used...

//-----------------------------------------

$used_ids[] = $member['member_id'];

$grupa[] = $member;

}

}

$this->output .= $this->registry->getClass('output')->getTemplate('stats')->group_strip( $this->lang->words['leader_admins'], $grupa );

[/long]

Edytowane przez eXorcist
  • Manager
Opublikowano

Napisano Ci wyżej - nie ma gotowego rozwiązania i trzeba to zakodować. Jeśli podany kod Ci nie działa, to może jest jakiś objaw tego? Opisz jak najwięcej potrafisz. Co zmieniasz, w jakim pliku, co na co itd.

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Opublikowano

No to zaczynamy:

W pliku stats.php (public_html/forum/admin/applications/forums/modules_public/extras/stats.php) DODAJĘ kod [long] // PRINT: Grupa

//-----------------------------------------

foreach( $members as $member )

{

if ( $this->caches['group_cache'][ $member['member_group_id'] ]['15'] )

{

$member['forums'] = $this->lang->words['leader_all_forums'];

//-----------------------------------------

// Used...

//-----------------------------------------

$used_ids[] = $member['member_id'];

$grupa[] = $member;

}

}

$this->output .= $this->registry->getClass('output')->getTemplate('stats')->group_strip( $this->lang->words['leader_admins'], $grupa );

[/long]

po linijce 452. Oczywiście dodaję też po linijce 433 [long]$grupa = array();[/long]

Całość po zmianie wygląda tak: [long] //-----------------------------------------

// PRINT: Admins

//-----------------------------------------

$admins = array();

$supmods = array();

$grupa = array();

foreach( $members as $member )

{

if ( $this->caches['group_cache'][ $member['member_group_id'] ]['g_access_cp'] )

{

$member['forums'] = $this->lang->words['leader_all_forums'];

//-----------------------------------------

// Used...

//-----------------------------------------

$used_ids[] = $member['member_id'];

$admins[] = $member;

}

}

$this->output .= $this->registry->getClass('output')->getTemplate('stats')->group_strip( $this->lang->words['leader_admins'], $admins );

//-----------------------------------------

// PRINT: Grupa

//-----------------------------------------

foreach( $members as $member )

{

if ( $this->caches['group_cache'][ $member['member_group_id'] ]['15'] )

{

$member['forums'] = $this->lang->words['leader_all_forums'];

//-----------------------------------------

// Used...

//-----------------------------------------

$used_ids[] = $member['member_id'];

$grupa[] = $member;

}

}

$this->output .= $this->registry->getClass('output')->getTemplate('stats')->group_strip( $this->lang->words['leader_admins'], $grupa );[/long]

Końcowy efekt: http://forum.armia-css.pl/index.php?app=forums&module=extras&section=stats&do=leaders (czyli po poprawnym wyświetleniu adminów jest kolejna tabelka o nazwie Administratorzy. Tyle że w niej nie ma osób z grupy o ID 15)

Opublikowano

DawPi, zbytnio nie wiem co robić, bo ja w PHP to kompletnie zielony. To co tam mam to kolega napisał. Z tym że on znowu na klasach się nie zna. Więc jeśli możesz to nakieruj gdzie mam to wstawić.

Opublikowano (edytowane)

Ok, ja jestem tym kolegą ;-)

$this->cache->getCache('moderators')

jak sie domyslam to pobiera z pamieci skryptu forum(cashu) moderatorów.

Jestem zainteresowany żeby odnaleźć plik źródłowy aby dowiedzieć sie jak to działa.

z uwagi na to ze nie ma tego w stats.php

to domyslam się ze dziedziczy po klasie ipsCommand

class public_forums_extras_stats extends ipsCommand

i teraz pytanie gdize jest ta klasa?

Edytowane przez Horex
Opublikowano

Ok, ja jestem tym kolegą ;-)

$this->cache->getCache('moderators')

jak sie domyslam to pobiera z pamieci skryptu forum(cashu) moderatorów.

Jestem zainteresowany żeby odnaleźć plik źródłowy aby dowiedzieć sie jak to działa.

z uwagi na to ze nie ma tego w stats.php

to domyslam się ze dziedziczy po klasie ipsCommand

class public_forums_extras_stats extends ipsCommand

i teraz pytanie gdize jest ta klasa?

ok znalazlem ipsController_setup.php

btw czemu nie da sie edytowac juz po 20 minutach?

  • Manager
Opublikowano

Hym, powiem Ci tak - nie interesuj się dalej tymi klasami w głąb, bo wszystko co potrzeba jest w tej klasie i metodzie, co podawaliśmy - tam gdzie jest kod wyświetlający statystyki.

Otwórz plik: admin/applications/forums/modules_public/extras/stats.php

Znajdź:

$this->registry->output->setTitle( $this->lang->words['forum_leaders']  . ' - ' . ipsRegistry::$settings['board_name'] );

Dodaj powyżej:


	/* (DP31) Statistics Custom Group */

	$this->DB->build( array( 
							'select'	=> 'm.*, m.member_id as user_member_id',
							'from'		=> array( 'members' => 'm' ),
							'where'		=> "m.member_group_id = 7",
							'add_join'	=> array(
													array( 
															'select' => 'pp.*',
															'from'	 => array( 'profile_portal' => 'pp' ),
															'where'	 => 'pp.pp_member_id=m.member_id',
															'type'	 => 'left',
														),
													array( 
															'select' => 's.*',
															'from'	 => array( 'sessions' => 's' ),
															'where'	 => 's.member_id=m.member_id',
															'type'	 => 'left',
														),
													array( 
															'select' => 'pf.*',
															'from'	 => array( 'pfields_content' => 'pf' ),
															'where'	 => 'pf.member_id=m.member_id',
															'type'	 => 'left',
														),
												)

	) );

	$this->DB->execute();

		if ( $this->DB->getTotalRows() )
		{
			while( $r = $this->DB->fetch() )
			{
				$customGroup[] = IPSMember::buildDisplayData( $r );
			}
		}

	if( count( $customGroup ) )
	{
		$this->output .= $this->registry->getClass('output')->getTemplate('stats')->group_strip( $this->caches['group_cache'][7 ]['g_title'], $customGroup );
	}

Zapisz i wyślij.

7 to ID nowej grupy.

Efekt:

pre_1299409978__2011-03-06_12-12-33.png

[ + ]

Spóźniłem się. :P

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.