protected function makeSearchAttributeData($stringTime = null) { assert('is_string($stringTime) || $stringTime == null'); $searchAttributeData = array(); $searchAttributeData['clauses'] = array(1 => array('attributeName' => 'startDateTime', 'operatorType' => 'greaterThan', 'value' => DateTimeUtil::convertDateIntoTimeZoneAdjustedDateTimeBeginningOfDay(DateTimeUtil::getFirstDayOfAMonthDate($stringTime))), 2 => array('attributeName' => 'startDateTime', 'operatorType' => 'lessThan', 'value' => DateTimeUtil::convertDateIntoTimeZoneAdjustedDateTimeEndOfDay(DateTimeUtil::getLastDayOfAMonthDate($stringTime)))); $searchAttributeData['structure'] = '(1 and 2)'; return $searchAttributeData; }
/** * @param null $stringTime * @return array */ protected function makeSearchAttributeData($stringTime = null) { assert('is_string($stringTime) || $stringTime == null'); $searchAttributeData = array(); $searchAttributeData['clauses'] = array(1 => array('attributeName' => 'startDateTime', 'operatorType' => 'greaterThan', 'value' => DateTimeUtil::convertDateIntoTimeZoneAdjustedDateTimeBeginningOfDay(DateTimeUtil::getFirstDayOfAMonthDate($stringTime))), 2 => array('attributeName' => 'startDateTime', 'operatorType' => 'lessThan', 'value' => DateTimeUtil::convertDateIntoTimeZoneAdjustedDateTimeEndOfDay(DateTimeUtil::getLastDayOfAMonthDate($stringTime))), 3 => array('attributeName' => 'logged', 'operatorType' => 'doesNotEqual', 'value' => true), 4 => array('attributeName' => 'logged', 'operatorType' => 'isNull', 'value' => null), 5 => array('attributeName' => 'activityItems', 'relatedAttributeName' => 'id', 'operatorType' => 'equals', 'value' => (int) $this->params['relationModel']->getClassId('Item'))); $searchAttributeData['structure'] = '(1 and 2 and (3 or 4) and 5)'; return $searchAttributeData; }
/** * The value['type'] determines how the attributeAndRelations is structured. * @param string $attributeName * @param array $attributeAndRelations * @param mixed $value */ public static function resolveAttributesAndRelations($attributeName, &$attributeAndRelations, $value) { assert('is_string($attributeName)'); assert('$attributeAndRelations == "resolveEntireMappingByRules"'); assert('empty($value) || $value == null || is_array($value)'); $delimiter = FormModelUtil::DELIMITER; $parts = explode($delimiter, $attributeName); if (count($parts) != 2) { throw new NotSupportedException(); } list($realAttributeName, $type) = $parts; if (isset($value['type']) && $value['type'] != null) { if ($value['type'] == self::TYPE_YESTERDAY || $value['type'] == self::TYPE_TODAY || $value['type'] == self::TYPE_TOMORROW || $value['type'] == self::TYPE_ON) { $dateValue = static::resolveValueDataIntoUsableValue($value); $greaterThanValue = DateTimeUtil::convertDateIntoTimeZoneAdjustedDateTimeBeginningOfDay($dateValue); $lessThanValue = DateTimeUtil::convertDateIntoTimeZoneAdjustedDateTimeEndOfDay($dateValue); $attributeAndRelations = array(array($realAttributeName, null, 'greaterThanOrEqualTo', $greaterThanValue, true), array($realAttributeName, null, 'lessThanOrEqualTo', $lessThanValue, true)); } elseif ($value['type'] == self::TYPE_AFTER) { $dateValue = static::resolveValueDataIntoUsableValue($value); $greaterThanValue = DateTimeUtil::convertDateIntoTimeZoneAdjustedDateTimeBeginningOfDay($dateValue); $attributeAndRelations = array(array($realAttributeName, null, 'greaterThanOrEqualTo', $greaterThanValue)); } elseif ($value['type'] == self::TYPE_BEFORE) { $dateValue = static::resolveValueDataIntoUsableValue($value); $lessThanValue = DateTimeUtil::convertDateIntoTimeZoneAdjustedDateTimeEndOfDay($dateValue); $attributeAndRelations = array(array($realAttributeName, null, 'lessThanOrEqualTo', $lessThanValue)); } elseif ($value['type'] == self::TYPE_BETWEEN) { $firstDateValue = static::resolveValueDataForBetweenIntoUsableFirstDateValue($value); $secondDateValue = static::resolveValueDataForBetweenIntoUsableSecondDateValue($value); if ($firstDateValue == null) { $greaterThanValue = null; } else { $greaterThanValue = DateTimeUtil::convertDateIntoTimeZoneAdjustedDateTimeBeginningOfDay($firstDateValue); } if ($secondDateValue == null) { $lessThanValue = null; } else { $lessThanValue = DateTimeUtil::convertDateIntoTimeZoneAdjustedDateTimeEndOfDay($secondDateValue); } $attributeAndRelations = array(array($realAttributeName, null, 'greaterThanOrEqualTo', $greaterThanValue, true), array($realAttributeName, null, 'lessThanOrEqualTo', $lessThanValue, true)); } elseif ($value['type'] == self::TYPE_NEXT_7_DAYS) { $today = static::calculateNewDateByDaysFromNow(0); $todayPlusSevenDays = static::calculateNewDateByDaysFromNow(7); $greaterThanValue = DateTimeUtil::convertDateIntoTimeZoneAdjustedDateTimeBeginningOfDay($today); $lessThanValue = DateTimeUtil::convertDateIntoTimeZoneAdjustedDateTimeEndOfDay($todayPlusSevenDays); $attributeAndRelations = array(array($realAttributeName, null, 'greaterThanOrEqualTo', $greaterThanValue, true), array($realAttributeName, null, 'lessThanOrEqualTo', $lessThanValue, true)); } elseif ($value['type'] == self::TYPE_LAST_7_DAYS) { $today = static::calculateNewDateByDaysFromNow(0); $todayMinusSevenDays = static::calculateNewDateByDaysFromNow(-7); $greaterThanValue = DateTimeUtil::convertDateIntoTimeZoneAdjustedDateTimeBeginningOfDay($todayMinusSevenDays); $lessThanValue = DateTimeUtil::convertDateIntoTimeZoneAdjustedDateTimeEndOfDay($today); $attributeAndRelations = array(array($realAttributeName, null, 'greaterThanOrEqualTo', $greaterThanValue, true), array($realAttributeName, null, 'lessThanOrEqualTo', $lessThanValue, true)); } elseif ($value['type'] == self::TYPE_LAST_30_DAYS) { $today = static::calculateNewDateByDaysFromNow(0); $todayMinusThirtyDays = static::calculateNewDateByDaysFromNow(-30); $greaterThanValue = DateTimeUtil::convertDateIntoTimeZoneAdjustedDateTimeBeginningOfDay($todayMinusThirtyDays); $lessThanValue = DateTimeUtil::convertDateIntoTimeZoneAdjustedDateTimeEndOfDay($today); $attributeAndRelations = array(array($realAttributeName, null, 'greaterThanOrEqualTo', $greaterThanValue, true), array($realAttributeName, null, 'lessThanOrEqualTo', $lessThanValue, true)); } elseif ($value['type'] == self::TYPE_THIS_MONTH) { $firstDateValue = DateTimeUtil::getFirstDayOfAMonthDate(); $secondDateValue = DateTimeUtil::getLastDayOfAMonthDate(); $greaterThanValue = DateTimeUtil::convertDateIntoTimeZoneAdjustedDateTimeBeginningOfDay($firstDateValue); $lessThanValue = DateTimeUtil::convertDateIntoTimeZoneAdjustedDateTimeEndOfDay($secondDateValue); $attributeAndRelations = array(array($realAttributeName, null, 'greaterThanOrEqualTo', $greaterThanValue, true), array($realAttributeName, null, 'lessThanOrEqualTo', $lessThanValue, true)); } elseif ($value['type'] == self::TYPE_LAST_MONTH) { $firstDateValue = DateTimeUtil::getFirstDayOfLastMonthDate(); $secondDateValue = DateTimeUtil::getLastDayOfLastMonthDate(); $greaterThanValue = DateTimeUtil::convertDateIntoTimeZoneAdjustedDateTimeBeginningOfDay($firstDateValue); $lessThanValue = DateTimeUtil::convertDateIntoTimeZoneAdjustedDateTimeEndOfDay($secondDateValue); $attributeAndRelations = array(array($realAttributeName, null, 'greaterThanOrEqualTo', $greaterThanValue, true), array($realAttributeName, null, 'lessThanOrEqualTo', $lessThanValue, true)); } elseif ($value['type'] == self::TYPE_NEXT_MONTH) { $firstDateValue = DateTimeUtil::getFirstDayOfNextMonthDate(); $secondDateValue = DateTimeUtil::getLastDayOfNextMonthDate(); $greaterThanValue = DateTimeUtil::convertDateIntoTimeZoneAdjustedDateTimeBeginningOfDay($firstDateValue); $lessThanValue = DateTimeUtil::convertDateIntoTimeZoneAdjustedDateTimeEndOfDay($secondDateValue); $attributeAndRelations = array(array($realAttributeName, null, 'greaterThanOrEqualTo', $greaterThanValue, true), array($realAttributeName, null, 'lessThanOrEqualTo', $lessThanValue, true)); } elseif ($value['type'] == self::TYPE_BEFORE_TODAY) { $today = static::calculateNewDateByDaysFromNow(0); $lessThanValue = DateTimeUtil::convertDateIntoTimeZoneAdjustedDateTimeEndOfDay($today); $attributeAndRelations = array(array($realAttributeName, null, 'lessThanOrEqualTo', $lessThanValue)); } else { throw new NotSupportedException(); } } else { $attributeAndRelations = array(array($realAttributeName, null, null, 'resolveValueByRules')); } }