Skocz do zawartości

Rekomendowane odpowiedzi

Opublikowano

W kodzie zewnętrznym to bym pewnie dał zapytanie do bazy i nie przejmował się.

 

Konkretnie muszę zrobić zmiany w plikach forum, np  w tym: \applications\core\extensions\core\MemberFilter\Lastpost.php

 

 

  • Manager
Opublikowano

No, ale nadal nie rozumiem, bo masz to zapisane w bazie. Fragment kodu:

return array( "core_members.member_last_post BETWEEN {$start->getTimestamp()} AND {$end->getTimestamp()}" );

Czyli tabela core_members i pole "member_last_post".

intermedia - profesjonalne rozwiązania Invision Power Board

---

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

Opublikowano (edytowane)

Nie do końca mam to zapisane w bazie.

 

Zdaniem wesołych chłopców z IPSu, pole member_last_post, jak sama nazwa wskazuje,  powinno zawierać datę ostatniego posta, albo ostatniej prywatnej wiadomości, w zależności co było ostatnie. Kto im zabroni?

 

Potrzebuję datę ostatniego posta na forum, a nie tego co oni wymyślili.

Edytowane przez kodif
  • Manager
Opublikowano
18 godzin temu, kodif napisał:

Zdaniem wesołych chłopców z IPSu, pole member_last_post, jak sama nazwa wskazuje,  powinno zawierać datę ostatniego posta, albo ostatniej prywatnej wiadomości, w zależności co było ostatnie. Kto im zabroni?

 

Potrzebuję datę ostatniego posta na forum, a nie tego co oni wymyślili.

I gdzie o tym wspominałeś w jakimkolwiek poście wyżej? Dla większości osób by to wystarczyło.

No to jak ostatni post to najprościej zapytaniem:

$lastPost = \IPS\Db::i()->select( 'post_date', 'forums_posts', array( 'author_id=?', \IPS\Member::loggedIn()->member_id ), 'post_date DESC' )->first();

 

intermedia - profesjonalne rozwiązania Invision Power Board

---

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

Opublikowano
4 godziny temu, DawPi napisał:

I gdzie o tym wspominałeś w jakimkolwiek poście wyżej?

 

Hm, wydawało mi się że to jest jasne.

 

W dniu 24.02.2020 o 16:23, kodif napisał:

Witam,

 

w jaki sposób najłatwiej uzyskać datę ostatniego posta użytkownika na forum?

 

 

Czyli jednak kolejnym zapytaniem sql.

Wiesz może które będzie wydajniejsze na silniku IPS?

 

To

$lastPost = \IPS\Db::i()->select( 'post_date', 'forums_posts', array( 'author_id=?', $member->member_id ), 'post_date DESC' )->first();

czy to

$lastPostdav = \IPS\Db::i()->select( 'MAX(post_date)', 'forums_posts', array( 'author_id=?', $member->member_id ))->first();

a może podejść od strony \IPS\Db::i()->query(....)  i  z tego wyciągnąć wynik?

Te filtry latają w pętli, więc szukam oszczędności :)

  • Manager
Opublikowano

Nie latają w pętli gdyż:

->first();
	/**
	 * Get first record
	 *
	 * @return	array
	 * @throws	\UnderflowException
	 */
	public function first()
	{		
		/* Move to the first result */
		$this->rewind();
		
		/* Return it */
		if ( !$this->valid() )
		{
			throw new \UnderflowException;
		}
		return $this->current();
	}

 

intermedia - profesjonalne rozwiązania Invision Power Board

---

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

Opublikowano
2 godziny temu, DawPi napisał:

Nie latają w pętli gdyż:

 

Ok, prawdopodobnie niezbyt precyzyjnie napisałem. Pisząc filtry, miałem na myśli wszystkie filtrowania w \applications\core\extensions\core\MemberFilter, a gdy zadanie skryptu sprawdza kogo do jakiej grupy przenieść, to te filtry są uruchamiane w pętli,  po 20-50 użytkowników.

  • Manager
Opublikowano
W dniu 25.02.2020 o 14:26, kodif napisał:

Zdaniem wesołych chłopców z IPSu, pole member_last_post, jak sama nazwa wskazuje,  powinno zawierać datę ostatniego posta, albo ostatniej prywatnej wiadomości, w zależności co było ostatnie. Kto im zabroni?

Dla nas post znaczy post (na forum). Dla nich zapewne data ostatniego dodania (post) treści w systemie.

Świadczy o tym, że to pole jest aktualizowane w tej metodzie:

	/**
	 * Create generic object
	 *
	 * @param	\IPS\Member				$author		The author
	 * @param	string|NULL				$ipAddress	The IP address
	 * @param	\IPS\DateTime			$time		The time
	 * @param	\IPS\Node\Model|NULL	$container	Container (e.g. forum), if appropriate
	 * @param	bool|NULL				$hidden		Hidden? (NULL to work our automatically)
	 * @return	static
	 */
	public static function createItem( \IPS\Member $author, $ipAddress, \IPS\DateTime $time, \IPS\Node\Model $container = NULL, $hidden=NULL )
	{
		/* Update member's last post */
		if( $obj->author()->member_id )
		{
			$obj->author()->member_last_post = time();
			$obj->author()->save();
		}

		/* Return */
		return $obj;

 

Nic nie stoi na przeszkodzie byś sobie napisał moda który by dodawał nowe pole do tabeli z użytkownikami i się aktualizowało tylko po dodaniu konkretnego typu zawartości.

intermedia - profesjonalne rozwiązania Invision Power Board

---

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

  • 8 miesięcy temu...
Opublikowano

Przeszukałem wyszukiwarkę forumową, ale lepszego wątku niż ten niestety nie znalazłem. Nie widzę przy średnio 70% wartości postów użytkowników kiedy pojawił się wpis. Widzę tylko w nagłówku zdanie "napisano", ale nie ma daty czy godziny. Najczęściej te, które mają mniej niż 48h to nie są oznaczone datą.

 

Jak to naprawić?

data2324.png.6df83b13f09e3fe968074cb9949

Opublikowano
1 minutę temu, suchywolk napisał:

Przeszukałem wyszukiwarkę forumową, ale lepszego wątku niż ten niestety nie znalazłem. Nie widzę przy średnio 70% wartości postów użytkowników kiedy pojawił się wpis. Widzę tylko w nagłówku zdanie "napisano", ale nie ma daty czy godziny. Najczęściej te, które mają mniej niż 48h to nie są oznaczone datą.

 

Jak to naprawić?

data2324.png.6df83b13f09e3fe968074cb9949

Słabo szukasz. Zaktualizuj spolszczenie.

  • Dziękuję 1

See me on GitHub or aXenDev.net!

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ę.