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

Tag bbcode [member] - nowe opcje


Pavulon

Rekomendowane odpowiedzi

Co jeśli ktoś ma w nicku tylko cyfrę? np 100

Skrypt wrzuci link do osoby o tym nicku czy o takim id? :>

Najpierw sprawdzany jest nick. Jeżeli znajdzie się user o nick'u "100" to on zostanie wyświetlony, jeżeli nie to user o id "100"

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

Co jeśli będzie i user o ID 100 i użytkownik o takiej nazwie? :)

Zmień to lepiej:

if( $member['members_display_name'] )

Stosując funkcję is_string(). ;)

intermedia - profesjonalne rozwiązania Invision Power Board

---

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

Odnośnik do komentarza
Udostępnij na innych stronach

z tym is_string() może nie przejść bo $_option (nick lub id) zawsze przekazywane jest jako string.

więc tak is_string("100") jak i is_string("DawPi") da TRUE.

można by spróbować regexp'em albo np:

intval($_option) != $_option

Odnośnik do komentarza
Udostępnij na innych stronach

Dziwne, teoretycznie powinno działać to co pisałem wcześnie ale praktycznie nie chciało.

Na szczęście była jeszcze opcja is_numeric()

Czyli kod będzie taki:

					if( $member['members_display_name'] && !is_numeric($_option) )
				{
					$name = IPSLib::makeNameFormatted($member['members_display_name'], $member['member_group_id']);

					$existing[ $_option ]	= array( 'member_id' => $member['member_id'], 'members_display_name' => $name );
					$this->cache->updateCacheWithoutSaving( '_tmp_bbcode_members', $existing );

					$_content = $this->_buildOutput( $existing[ $_option ] );
				} else if ( is_numeric($_option) ) {
					$member = IPSMember::load( $_option );

					if( $member['members_display_name'] )
					{
						$name = IPSLib::makeNameFormatted($member['members_display_name'], $member['member_group_id']);

						$existing[ $_option ]	= array( 'member_id' => $member['member_id'], 'members_display_name' => $name );
						$this->cache->updateCacheWithoutSaving( '_tmp_bbcode_members', $existing );

						$_content = $this->_buildOutput( $existing[ $_option ] );
					}
				}

Byłbym wdzięczny jak byś mógł poprawić pierwszy post :)

Odnośnik do komentarza
Udostępnij na innych stronach

Najs.

Swoją drogą to nie rozwiązuje problemu:

Jest user o nicku 100

Jest inny user który mi id==100,

chcemy wyświetlić tego drugiego, niestety zawsze wyświetlać nam będzie tego pierwszego :a: Tak, wiem, wtedy można zastosować jego nick :)

Weźmy skrajny przypadek...

user o nicku 100 ma id 200

user o nicku 200 ma id 100

Sprawa będzie trochę pomieszana ;p

add.png dla twórcy ;) Fajna sprawa

userbar1.jpg

Twiztid Tribe ®

Odnośnik do komentarza
Udostępnij na innych stronach

no niestety, ale nie ma co też tworzyć całkiem nowych tagów [ memberid=dddd] lub modyfikować aktualne dla takich skrajnych przypadków.

zawsze można by próbować modyfikacji gdzie do numeru id trzeba by dodawać id [ member='id100'] ( ale wtedy co będzie jak ktoś będzie miał nick "id100")

Odnośnik do komentarza
Udostępnij na innych stronach

  • 1 rok później...
[/url] Edytujemy plik:
admin/sources/classes/bbcode/custom/defaults.php

Znajdujemy:

 if( $member['members_display_name'] ) { $existing[ $_option ] = array( 'member_id' => $member['member_id'], 'members_display_name' => $member['members_display_name'] ); $this->cache->updateCacheWithoutSaving( '_tmp_bbcode_members', $existing ); $_content = $this->_buildOutput( $existing[ $_option ] ); }

Dziwnie u mnie jest w innej kolejności:

$existing[ $_option ] = array( 'member_id' => $member['member_id'], 'members_display_name' => $member['members_display_name'], 'members_seo_name' => $member['members_seo_name'] );<br>$this->cache->updateCacheWithoutSaving( '_tmp_bbcode_members', $existing );<br><br>if( $member['members_display_name'] )<br>{<br>$_content = $this->_buildOutput( $existing[ $_option ] );

Coś takiego :P

Odnośnik do komentarza
Udostępnij na innych stronach

  • 1 rok później...

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • 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ę.