public function _timezone($from, $to, $action) { switch ($action) { case static::ACT_CONVERT_TO_OBJECT: /* @var $from Farm */ $to->timezone = $from->settings[FarmSetting::TIMEZONE]; break; case static::ACT_CONVERT_TO_ENTITY: /* @var $to Farm */ if (!in_array($from->timezone, DateTimeZone::listIdentifiers())) { throw new ApiErrorException(400, ErrorMessage::ERR_INVALID_VALUE, "Unknown timezone"); } $to->settings[FarmSetting::TIMEZONE] = $from->timezone; break; case static::ACT_GET_FILTER_CRITERIA: $farm = new Farm(); $farmSetting = new FarmSetting(); return [AbstractEntity::STMT_FROM => "\n JOIN {$farmSetting->table('fstz')} ON {$farmSetting->columnFarmId('fstz')} = {$farm->columnId()}\n AND {$farmSetting->columnName('fstz')} = " . $farmSetting->qstr('name', FarmSetting::TIMEZONE) . "\n ", AbstractEntity::STMT_WHERE => "{$farmSetting->columnValue('fstz')} = " . $farmSetting->qstr('value', $from->timezone)]; } }