Your IP : 172.28.240.42


Current Path : /var/www/html/clients/kampol.e-nk.ru/plugins/system/nnframework/helpers/assignments/
Upload File :
Current File : /var/www/html/clients/kampol.e-nk.ru/plugins/system/nnframework/helpers/assignments/datetime.php

<?php
/**
 * NoNumber Framework Helper File: Assignments: DateTime
 *
 * @package         NoNumber Framework
 * @version         12.11.6
 *
 * @author          Peter van Westen <peter@nonumber.nl>
 * @link            http://www.nonumber.nl
 * @copyright       Copyright © 2012 NoNumber All Rights Reserved
 * @license         http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 */

defined('_JEXEC') or die;

/**
 * Assignments: DateTime
 */
class NNFrameworkAssignmentsDateTime
{
	var $_version = '12.11.6';

	/**
	 * passDate
	 *
	 * @param  <object> $params
	 * publish_up
	 * publish_down
	 * @param  <array> $selection
	 * @param  <string> $assignment
	 *
	 * @return <bool>
	 */
	function passDate(&$main, &$params, $selection = array(), $assignment = 'all')
	{
		if ($params->publish_up || $params->publish_down) {
			$now = $main->_date->toUnix(1);
			if ((int) $params->publish_up) {
				$publish_up = JFactory::getDate($params->publish_up);
				$publish_up = $publish_up->toUnix();

				if ($publish_up > $now) {
					// outside date range
					return ($assignment == 'exclude');
				}
			}
			if ((int) $params->publish_down) {
				$publish_down = JFactory::getDate($params->publish_down);
				$publish_down = $publish_down->toUnix();
				if ($publish_down < $now) {
					// outside date range
					return ($assignment == 'exclude');
				}
			}
		}
		// no date range set
		return ($assignment == 'include');
	}

	/**
	 * passSeasons
	 *
	 * @param  <object> $params
	 * @param  <array> $selection
	 * @param  <string> $assignment
	 *
	 * @return <bool>
	 */
	function passSeasons(&$main, &$params, $selection = array(), $assignment = 'all')
	{
		$season = NNFrameworkAssignmentsDateTime::getSeason($main->_date, $params->hemisphere);
		return $main->passSimple($season, $selection, $assignment);
	}

	/**
	 * passSeason
	 *
	 * @param  <object> $params
	 * @param  <array> $selection
	 * @param  <string> $assignment
	 *
	 * @return <bool>
	 */
	function passMonths(&$main, &$params, $selection = array(), $assignment = 'all')
	{
		$month = $main->_date->toFormat('%m'); // 01 (for January) through 12 (for December)
		return $main->passSimple((int) $month, $selection, $assignment);
	}

	/**
	 * passDays
	 *
	 * @param  <object> $params
	 * @param  <array> $selection
	 * @param  <string> $assignment
	 *
	 * @return <bool>
	 */
	function passDays(&$main, &$params, $selection = array(), $assignment = 'all')
	{
		$day = $main->_date->toFormat('%w'); // 0 (for Sunday) though 6 (for Saturday )
		if (!$day) {
			$day = 7; // Change 0 to 7 for matching Sunday
		}

		return $main->passSimple($day, $selection, $assignment);
	}

	/**
	 * passDays
	 *
	 * @param  <object> $params
	 * @param  <array> $selection
	 * @param  <string> $assignment
	 *
	 * @return <bool>
	 */
	function passTime(&$main, &$params, $selection = array(), $assignment = 'all')
	{
		$date = $main->_date->toUnix(1);

		$publish_up = strtotime($params->publish_up);
		$publish_down = strtotime($params->publish_down);

		$pass = 0;
		if ($publish_up > $publish_down) {
			// publish up is after publish down (spans midnight)
			// current time should be:
			// - after publish up
			// - OR before publish down
			if ($date >= $publish_up || $date < $publish_down) {
				$pass = 1;
			}
		} else {
			// publish down is after publish up (simple time span)
			// current time should be:
			// - after publish up
			// - AND before publish down
			if ($date >= $publish_up && $date < $publish_down) {
				$pass = 1;
			}
		}

		if ($pass) {
			return ($assignment == 'include');
		} else {
			return ($assignment == 'exclude');
		}
	}

	/**
	 * getSeason
	 *
	 * @param <string> $hemisphere (northern, southern, australia)
	 */
	function getSeason(&$d, $hemisphere = 'northern')
	{
		// Set $date to today
		$date = $d->toUnix(1);

		// Get year of date specified
		$date_year = $d->toFormat('%Y'); // Four digit representation for the year

		$date = JFactory::getDate();

		// Specify the season names
		$season_names = array('winter', 'spring', 'summer', 'fall');

		// Declare season date ranges
		switch (strtolower($hemisphere)) {
			case 'southern':
				if (
					$date < strtotime($date_year . '-03-21')
					|| $date >= strtotime($date_year . '-12-21')
				) {
					return $season_names['2']; // Must be in Summer
				} else if ($date >= strtotime($date_year . '-09-23')) {
					return $season_names['1']; // Must be in Spring
				} else if ($date >= strtotime($date_year . '-06-21')) {
					return $season_names['0']; // Must be in Winter
				} else if ($date >= strtotime($date_year . '-03-21')) {
					return $season_names['3']; // Must be in Fall
				}
				break;
			case 'australia':
				if (
					$date < strtotime($date_year . '-03-01')
					|| $date >= strtotime($date_year . '-12-01')
				) {
					return $season_names['2']; // Must be in Summer
				} else if ($date >= strtotime($date_year . '-09-01')) {
					return $season_names['1']; // Must be in Spring
				} else if ($date >= strtotime($date_year . '-06-01')) {
					return $season_names['0']; // Must be in Winter
				} else if ($date >= strtotime($date_year . '-03-01')) {
					return $season_names['3']; // Must be in Fall
				}
				break;
			default: // northern
				if (
					$date < strtotime($date_year . '-03-21')
					|| $date >= strtotime($date_year . '-12-21')
				) {
					return $season_names['0']; // Must be in Winter
				} else if ($date >= strtotime($date_year . '-09-23')) {
					return $season_names['3']; // Must be in Fall
				} else if ($date >= strtotime($date_year . '-06-21')) {
					return $season_names['2']; // Must be in Summer
				} else if ($date >= strtotime($date_year . '-03-21')) {
					return $season_names['1']; // Must be in Spring
				}
				break;
		}
		return 0;
	}
}