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

Witam,

Mam pewien problem, możliwe, że zaćmienie, w końcu tydzień domek wolny :-) Ale do sedna:

	/***********************************************/
// Send PM Notification of Request
/***********************************************/	

function send_pm_notification( $member = array(), $toOnline = FALSE )
{
	//-----------------------------------------
	// Is there any info about sender?
	//-----------------------------------------
	if ( !isset( $member ) AND !is_array( $member ) )
	{
		return;
	}

	//-----------------------------------------
	// Load library
	//-----------------------------------------
	require_once( ROOT_PATH.'sources/lib/func_msg.php' );
	$msg			 = new func_msg();
	$msg->ipsclass  =& $this->ipsclass;
	$msg->init();

	//-----------------------------------------
	// Get the info for our recipients
	//-----------------------------------------
	$this->ipsclass->DB->build_query( array( 'select'	=> 'm.id, m.members_display_name, m.trader',
											 'from'		 => array( 'members' => 'm' ),
											 'where'	 => 'm.trader IN( '.$this->ipsclass->vars['ram_active_medi'].' )',
											 'add_join'  => array( 0 => array(
												'select' => 'me.vdirs',
												'from'   => array( 'member_extra' => 'me' ),
												'where'  => 'm.id=me.id',
												'type'   => 'left' ) ) ) );

	$this->ipsclass->DB->exec_query();

	while ( ( $members = $this->ipsclass->DB->fetch_row() ) )
	{
		/* Only to Online? */
		if ( $toOnline != FALSE )
		{
			$data = $this->ipsclass->member_set_information( $members );

			if ( $data['_online'] == 1 )
			{
				$members[] = $data;
			}
			else
			{
				continue;
			}
		}

		//-----------------------------------------
		// Construct the PM
		//-----------------------------------------
		$msg->force_pm		  = 1;
		$this->post_key	  = md5( microtime() );

		$msg->to			 = $members['members_display_name'];
		$msg->from_member	  = $member;

		$msg->msg_title		 = "Witaj {$members['members_display_name']}";
		$msg->msg_post		 = "Zostałeś wezwany na mediatora!";

		//-----------------------------------------
		// Send the PM
		//-----------------------------------------
		$msg->send_pm( array(   'save_only'   => '',
								'orig_id'	 => '',
								'preview'	 => 0,
								'track'		  => 0,
								'add_sent'	=> 0,
								'hide_cc'	 => 0,
						)	   );

	}

	//-----------------------------------------
	// Error? Show them!
	//-----------------------------------------
	if( $msg->error )
	{
			var_dump ( $msg->error );
			return FALSE;
	}
	else
	{
			return TRUE;
	}
}

Parametr $member to tablica o userze, który wysłał wezwanie podczas weryfikacji czy na 100% to użytkownik :-) Drugi to kwestia ustawień ACP czy ma wysyłać tylko do Online. Wydaje się, że działa, ale jednak nie. Nie robiłem testów na większej ilości userów.

Pozdrawiam,

Largo

Jeżeli Ci pomogłem, nie zapomnij proszę o kliknięciu - add.png

Możesz liczyć na moją pomoc z zakresu: PHP5, MySQL, JavaScript i Ajax | W trakcie nauki CSS i xHTML!

W sprawie pomocy z zakresu IP.Board służę pomocą w dziale Zaawansowane programowanie IP.Board

Proszę o nie wysyłanie próśb PW o prywatną pomoc - pomagam JEDYNIE na forum lub na zlecenie!

Opublikowano (edytowane)

Witaj,

Wysyłanie do większej ilości niż 1 osoba :-) Na dodatek, jeżeli send_pm jest w pętli zwraca błąd, że dostaje bool, a nie mysql_result :-) Pobiera wszystkich mediatorów i nie rozróżnia tych Online również.

PS. Sorry Dawid, ale wiesz jak to jest po paru imprezach :-) Wezwę się za to, ale mam lekkie przytrzymanie umysłowe ;]

Pozdrawiam,

Largo

Edytowane przez Largo

Jeżeli Ci pomogłem, nie zapomnij proszę o kliknięciu - add.png

Możesz liczyć na moją pomoc z zakresu: PHP5, MySQL, JavaScript i Ajax | W trakcie nauki CSS i xHTML!

W sprawie pomocy z zakresu IP.Board służę pomocą w dziale Zaawansowane programowanie IP.Board

Proszę o nie wysyłanie próśb PW o prywatną pomoc - pomagam JEDYNIE na forum lub na zlecenie!

  • Manager
Opublikowano

Przyznam, że nigdy w ten sposób PMek nie wysyłałem, korzystałem z tego kodu:

#Replace the name in PM Subject
				$pm_subject = str_replace("{name}", $to['members_display_name'], $data['pm_subject']);

				$this->ipsclass->DB->do_insert('message_topics', array(
									'mt_msg_id'	 => $msg_id,
									'mt_date'	   => time(),
									'mt_title'	  => $pm_subject,
									'mt_from_id'	=> $this->ipsclass->member['id'],
									'mt_to_id'	  => $to['id'],
									'mt_vid_folder' => 'in',
									'mt_tracking'   => 0,
									'mt_hasattach'  => 0,
									'mt_owner_id'   => $to['id'],
									'mt_hide_cc'	=> 1,
											   )					   );

				$to['vdirs'] = $to['vdirs'] ? $to['vdirs'] : 'in:Inbox;0|sent:Sent Items;0';

				$inbox_count = $this->get_dir_count($to['vdirs']);
				$this->rebuild_dir_count($to['id'], $to['vdirs'], $inbox_count, $show_popup);

Oczywiście to tylko fragment, ale ideę widać myślę.

Natomiast odnośnie Twojego kodu to tak, jak pisałem, to jest funkcja do wysyłania niejako 'oryginalnych' pmek, a dopiero z niej trzeba wyłuskać ten kod odpowiedzialny stricte za wysłanie PM, czyli ten podany wyżej. Spójrz sobie w tę funkcję i zobaczysz.

Gdyby możliwe było skorzystanie z tej funkcji to myślisz, że Terabyte by pisał swoją do wysyłania mass pmek? B-)

I jeszcze wg mnie powinieneś najpierw w pętli while wyłuskać wszystkie ID/nazwy do kogo chcesz wysłać, a dopiero potem to wysyłać, a nie robić tego w pętli od razu. Dlaczego? Wg mnie tak będzie przejrzyściej i lepiej. ;)

intermedia - profesjonalne rozwiązania Invision Power Board

---

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

Opublikowano

Witaj,

Zainteresowała mnie ta wypowiedź @Micheal'a:

It depends. If you want to send one PM to each member, then loop through your list of members and set $msglib->to to the member for that iteration of the loop. Or, if you want to send one PM and have it go to all the members (thus cc'ing each member past the first one) then you want to do my code above.

Nie wiem jak to ma się do rzeczywistości. Ale spróbuję to ogarnąć.

Pozdrawiam,

Largo

Jeżeli Ci pomogłem, nie zapomnij proszę o kliknięciu - add.png

Możesz liczyć na moją pomoc z zakresu: PHP5, MySQL, JavaScript i Ajax | W trakcie nauki CSS i xHTML!

W sprawie pomocy z zakresu IP.Board służę pomocą w dziale Zaawansowane programowanie IP.Board

Proszę o nie wysyłanie próśb PW o prywatną pomoc - pomagam JEDYNIE na forum lub na zlecenie!

  • 1 miesiąc temu...

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