Skocz do zawartości

Rekomendowane odpowiedzi

Opublikowano (edytowane)

Witam,

Mam pewien problem, nie z samą funkcjonalnością, ale z tym jak to wykonać wg. IPS'owych klas. Mam taki kod:

		/* User want to see that? */
	if( true/*$this->memberData['member_fg_show_stats']*/ )
	{
		/* Create list of months! */
		$startDate 	 = $memberData['joined'];
		$actualDate	 = time();
		$currentDate = IPSTime::unixstamp_to_human( $actualDate );
		$monthsData	 = '';

		/* Create language array of months */
		$monthsNames = array( $this->lang->words['M_1'], $this->lang->words['M_2'], $this->lang->words['M_3'], 
							 $this->lang->words['M_4'], $this->lang->words['M_5'], $this->lang->words['M_6'], 
							 $this->lang->words['M_7'], $this->lang->words['M_8'], $this->lang->words['M_9'], 
							 $this->lang->words['M_10'], $this->lang->words['M_11'], $this->lang->words['M_12'] );

		/* Get last 12 months */			
		$tempDate = strtotime( '-11months', $actualDate );

		/* Date is lower than our joined? */
		if( $startDate < $tempDate )
		{
			$startDate = $tempDate;
		}

		/* Set start date... */
		IPSTime::setTimestamp( $startDate );

		/* List months! */
		while( $startDate < $actualDate )
		{				
			/* Get Month */
			$dateArray = IPSTime::unixstamp_to_human( $startDate );

			/* Add to list of months... */
			$monthsData .= "\t<option value='{$dateArray['month']}'";
			$monthsData .= ( $inputMonth && ( $inputMonth == $dateArray['month'] ) ) ? " selected='selected'" : '';
			$monthsData .= ">{$monthsNames[ $dateArray['month'] - 1 ]} {$dateArray['year']}</option>\n";

			/* Add month! */
			IPSTime::add_month();
			$startDate = IPSTime::getTimestamp();
		}

		/* Current month? */
		if( $currentDate['month'] == date( 'm', $startDate ) )
		{
			$monthsData .= "\t<option value='".$currentDate['month']."'";
			$monthsData .= ( $currentDate['month'] == date( 'm', $startDate ) && ( $currentDate['year'] == date( 'Y', $startDate ) ) ) ? " selected='selected'" : '';
			$monthsData .= ">{$monthsNames[ date( 'm', $startDate ) - 1 ]} ".date( 'Y', $startDate)."</option>\n";
		}

		/* Different Month? */
		$selectedMonth = ( $inputMonth ) ? $inputMonth : $actualMonth;
	}

Co on ma za zadanie robić? Ma wylistować 12 miesięcy od dziś, ale uwzględniając pod fakt, że jeżeli data dołączenia jest mniejsza niż 12 miesięcy, to ma się do nich ograniczyć. I to działa, ale wg. kodu PHP, czystego, nie z IP.Board. Użyłem funkcji strtotime(), a czy da się wg. IPS'owych klas? Jakbym mógł prosić o ewentualną korektę kodu, byłbym wdzięczny :-) A czemu taki sposób wybrałem - powody są proste. Nie chcę mieć listy z np. 4 lat ( 4 * 12 = 48 elementów listy... ), inna sprawa to fakt, że jest Archiwum, i nie ma sensu przekazywać tylu danych. A ostatni powód jest taki, że nie muszę szukać wymyślnych sposobów na ukrycie dat w wartości, a jedynie ich numery i sprawdzanie czy dana data już była.

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!

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