. * * This file is a part of iCalcreator. */ namespace Kigkonsult\Icalcreator\Traits; use Kigkonsult\Icalcreator\Util\Util; use Kigkonsult\Icalcreator\Util\UtilGeo; use function floatval; use function is_array; /** * GEO property functions * * @author Kjell-Inge Gustafsson, kigkonsult * @since 2.22.23 - 2017-02-02 */ trait GEOtrait { /** * @var array component property GEO value * @access protected */ protected $geo = null; /** * Return formatted output for calendar component property geo * * @return string */ public function createGeo() { if( empty( $this->geo )) { return null; } if( empty( $this->geo[Util::$LCvalue] )) { return ( $this->getConfig( Util::$ALLOWEMPTY )) ? Util::createElement( Util::$GEO ) : null; } return Util::createElement( Util::$GEO, Util::createParams( $this->geo[Util::$LCparams] ), UtilGeo::geo2str2( $this->geo[Util::$LCvalue][UtilGeo::$LATITUDE], UtilGeo::$geoLatFmt ) . Util::$SEMIC . UtilGeo::geo2str2( $this->geo[Util::$LCvalue][UtilGeo::$LONGITUDE], UtilGeo::$geoLongFmt )); } /** * Set calendar component property geo * * @param mixed $latitude * @param mixed $longitude * @param array $params * @return bool */ public function setGeo( $latitude, $longitude, $params = null ) { if( isset( $latitude ) && isset( $longitude )) { if( ! is_array( $this->geo )) { $this->geo = []; } $this->geo[Util::$LCvalue][UtilGeo::$LATITUDE] = floatval( $latitude ); $this->geo[Util::$LCvalue][UtilGeo::$LONGITUDE] = floatval( $longitude ); $this->geo[Util::$LCparams] = Util::setParams( $params ); } elseif( $this->getConfig( Util::$ALLOWEMPTY )) { $this->geo = [ Util::$LCvalue => Util::$SP0, Util::$LCparams => Util::setParams( $params ), ]; } else { return false; } return true; } }