xref: /plugin/davcal/vendor/sabre/vobject/lib/Property/Float.php (revision a1a3b6794e0e143a4a8b51d3185ce2d339be61ab)
1*a1a3b679SAndreas Boehler<?php
2*a1a3b679SAndreas Boehler
3*a1a3b679SAndreas Boehlernamespace Sabre\VObject\Property;
4*a1a3b679SAndreas Boehler
5*a1a3b679SAndreas Boehleruse
6*a1a3b679SAndreas Boehler    Sabre\VObject\Property;
7*a1a3b679SAndreas Boehler
8*a1a3b679SAndreas Boehler/**
9*a1a3b679SAndreas Boehler * Float property
10*a1a3b679SAndreas Boehler *
11*a1a3b679SAndreas Boehler * This object represents FLOAT values. These can be 1 or more floating-point
12*a1a3b679SAndreas Boehler * numbers.
13*a1a3b679SAndreas Boehler *
14*a1a3b679SAndreas Boehler * @copyright Copyright (C) 2011-2015 fruux GmbH (https://fruux.com/).
15*a1a3b679SAndreas Boehler * @author Evert Pot (http://evertpot.com/)
16*a1a3b679SAndreas Boehler * @license http://sabre.io/license/ Modified BSD License
17*a1a3b679SAndreas Boehler */
18*a1a3b679SAndreas Boehlerclass Float extends Property {
19*a1a3b679SAndreas Boehler
20*a1a3b679SAndreas Boehler    /**
21*a1a3b679SAndreas Boehler     * In case this is a multi-value property. This string will be used as a
22*a1a3b679SAndreas Boehler     * delimiter.
23*a1a3b679SAndreas Boehler     *
24*a1a3b679SAndreas Boehler     * @var string|null
25*a1a3b679SAndreas Boehler     */
26*a1a3b679SAndreas Boehler    public $delimiter = ';';
27*a1a3b679SAndreas Boehler
28*a1a3b679SAndreas Boehler    /**
29*a1a3b679SAndreas Boehler     * Sets a raw value coming from a mimedir (iCalendar/vCard) file.
30*a1a3b679SAndreas Boehler     *
31*a1a3b679SAndreas Boehler     * This has been 'unfolded', so only 1 line will be passed. Unescaping is
32*a1a3b679SAndreas Boehler     * not yet done, but parameters are not included.
33*a1a3b679SAndreas Boehler     *
34*a1a3b679SAndreas Boehler     * @param string $val
35*a1a3b679SAndreas Boehler     * @return void
36*a1a3b679SAndreas Boehler     */
37*a1a3b679SAndreas Boehler    public function setRawMimeDirValue($val) {
38*a1a3b679SAndreas Boehler
39*a1a3b679SAndreas Boehler        $val = explode($this->delimiter, $val);
40*a1a3b679SAndreas Boehler        foreach($val as &$item) {
41*a1a3b679SAndreas Boehler            $item = (float)$item;
42*a1a3b679SAndreas Boehler        }
43*a1a3b679SAndreas Boehler        $this->setParts($val);
44*a1a3b679SAndreas Boehler
45*a1a3b679SAndreas Boehler    }
46*a1a3b679SAndreas Boehler
47*a1a3b679SAndreas Boehler    /**
48*a1a3b679SAndreas Boehler     * Returns a raw mime-dir representation of the value.
49*a1a3b679SAndreas Boehler     *
50*a1a3b679SAndreas Boehler     * @return string
51*a1a3b679SAndreas Boehler     */
52*a1a3b679SAndreas Boehler    public function getRawMimeDirValue() {
53*a1a3b679SAndreas Boehler
54*a1a3b679SAndreas Boehler        return implode(
55*a1a3b679SAndreas Boehler            $this->delimiter,
56*a1a3b679SAndreas Boehler            $this->getParts()
57*a1a3b679SAndreas Boehler        );
58*a1a3b679SAndreas Boehler
59*a1a3b679SAndreas Boehler    }
60*a1a3b679SAndreas Boehler
61*a1a3b679SAndreas Boehler    /**
62*a1a3b679SAndreas Boehler     * Returns the type of value.
63*a1a3b679SAndreas Boehler     *
64*a1a3b679SAndreas Boehler     * This corresponds to the VALUE= parameter. Every property also has a
65*a1a3b679SAndreas Boehler     * 'default' valueType.
66*a1a3b679SAndreas Boehler     *
67*a1a3b679SAndreas Boehler     * @return string
68*a1a3b679SAndreas Boehler     */
69*a1a3b679SAndreas Boehler    public function getValueType() {
70*a1a3b679SAndreas Boehler
71*a1a3b679SAndreas Boehler        return "FLOAT";
72*a1a3b679SAndreas Boehler
73*a1a3b679SAndreas Boehler    }
74*a1a3b679SAndreas Boehler
75*a1a3b679SAndreas Boehler    /**
76*a1a3b679SAndreas Boehler     * Returns the value, in the format it should be encoded for json.
77*a1a3b679SAndreas Boehler     *
78*a1a3b679SAndreas Boehler     * This method must always return an array.
79*a1a3b679SAndreas Boehler     *
80*a1a3b679SAndreas Boehler     * @return array
81*a1a3b679SAndreas Boehler     */
82*a1a3b679SAndreas Boehler    public function getJsonValue() {
83*a1a3b679SAndreas Boehler
84*a1a3b679SAndreas Boehler        $val = array_map(
85*a1a3b679SAndreas Boehler            function($item) {
86*a1a3b679SAndreas Boehler
87*a1a3b679SAndreas Boehler                return (float)$item;
88*a1a3b679SAndreas Boehler
89*a1a3b679SAndreas Boehler            },
90*a1a3b679SAndreas Boehler            $this->getParts()
91*a1a3b679SAndreas Boehler        );
92*a1a3b679SAndreas Boehler
93*a1a3b679SAndreas Boehler        // Special-casing the GEO property.
94*a1a3b679SAndreas Boehler        //
95*a1a3b679SAndreas Boehler        // See:
96*a1a3b679SAndreas Boehler        // http://tools.ietf.org/html/draft-ietf-jcardcal-jcal-04#section-3.4.1.2
97*a1a3b679SAndreas Boehler        if ($this->name==='GEO') {
98*a1a3b679SAndreas Boehler            return array($val);
99*a1a3b679SAndreas Boehler        } else {
100*a1a3b679SAndreas Boehler            return $val;
101*a1a3b679SAndreas Boehler        }
102*a1a3b679SAndreas Boehler
103*a1a3b679SAndreas Boehler    }
104*a1a3b679SAndreas Boehler}
105