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

Data ostatniego posta użytkownika


Rekomendowane odpowiedzi

  • Manager

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.

Odnośnik do komentarza
Udostępnij na innych stronach

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
Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager
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.

Odnośnik do komentarza
Udostępnij na innych stronach

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 :)

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

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.

Odnośnik do komentarza
Udostępnij na innych stronach

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.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager
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.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 8 miesięcy temu...

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

Odnośnik do komentarza
Udostępnij na innych stronach

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!

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

Błąd jakiegoś starego tłumaczenia. Aktualizacja, a najlepiej wrzucenie nowej paczki obowiązkowe. 

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

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