Jump to content

Data ostatniego posta użytkownika


Recommended Posts

  • Manager

W sensie w kodzie zewnętrznym? W jakimś dziale, temacie? Więcej parametrów podaj proszę.

intermedia - profesjonalne rozwiązania Invision Power Board

---

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

Link to post
Share on other sites

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

 

 

Link to post
Share on other sites
  • 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.

Link to post
Share on other sites

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.

Edited by kodif
Link to post
Share on other sites
  • 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.

Link to post
Share on other sites
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 :)

Link to post
Share on other sites
  • 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.

Link to post
Share on other sites
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.

Link to post
Share on other sites
  • 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.

Link to post
Share on other sites
  • 8 months later...

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

Link to post
Share on other sites
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.

  • Thanks 1
Link to post
Share on other sites
  • 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.

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.