Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?php
2
/**
3
 * LICENSE
4
 *
5
 * This file is part of CFPropertyList.
6
 *
7
 * The PHP implementation of Apple's PropertyList can handle XML PropertyLists
8
 * as well as binary PropertyLists. It offers functionality to easily convert
9
 * data between worlds, e.g. recalculating timestamps from unix epoch to apple
10
 * epoch and vice versa. A feature to automagically create (guess) the plist
11
 * structure from a normal PHP data structure will help you dump your data to
12
 * plist in no time.
13
 *
14
 * Copyright (c) 2018 Teclib'
15
 *
16
 * Permission is hereby granted, free of charge, to any person obtaining a copy
17
 * of this software and associated documentation files (the "Software"), to deal
18
 * in the Software without restriction, including without limitation the rights
19
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
20
 * copies of the Software, and to permit persons to whom the Software is
21
 * furnished to do so, subject to the following conditions:
22
 *
23
 * The above copyright notice and this permission notice shall be included in all
24
 * copies or substantial portions of the Software.
25
 *
26
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
27
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
28
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
29
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
30
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
31
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
32
 * SOFTWARE.
33
 *
34
 * ------------------------------------------------------------------------------
35
 * @author    Rodney Rehm <rodney.rehm@medialize.de>
36
 * @author    Christian Kruse <cjk@wwwtech.de>
37
 * @copyright Copyright © 2018 Teclib
38
 * @package   plist
39
 * @license   MIT
40
 * @link      https://github.com/TECLIB/CFPropertyList/
41
 * @link      http://developer.apple.com/documentation/Darwin/Reference/ManPages/man5/plist.5.html Property Lists
42
 * ------------------------------------------------------------------------------
43
 */
44
 
45
namespace CFPropertyList;
46
 
47
use \DOMDocument;
48
use \Iterator;
49
use \ArrayAccess;
50
 
51
class CFData extends CFType
52
{
53
   /**
54
    * Create new Data CFType
55
    * @param string $value data to be contained by new object
56
    * @param boolean $already_coded if true $value will not be base64-encoded, defaults to false
57
    */
58
    public function __construct($value = null, $already_coded = false)
59
    {
60
        if ($already_coded) {
61
            $this->value = $value;
62
        } else {
63
            $this->setValue($value);
64
        }
65
    }
66
 
67
   /**
68
    * Set the CFType's value and base64-encode it.
69
    * <b>Note:</b> looks like base64_encode has troubles with UTF-8 encoded strings
70
    * @return void
71
    */
72
    public function setValue($value)
73
    {
74
        // if(function_exists('mb_check_encoding') && mb_check_encoding($value, 'UTF-8')) $value = utf8_decode($value);
75
        $this->value = base64_encode($value);
76
    }
77
 
78
   /**
79
    * Get base64 encoded data
80
    * @return string The base64 encoded data value
81
    */
82
    public function getCodedValue()
83
    {
84
        return $this->value;
85
    }
86
 
87
   /**
88
    * Get the base64-decoded CFType's value.
89
    * @return mixed CFType's value
90
    */
91
    public function getValue()
92
    {
93
        return base64_decode($this->value);
94
    }
95
 
96
   /**
97
    * Get XML-Node.
98
    * @param DOMDocument $doc DOMDocument to create DOMNode in
99
    * @param string $nodeName For compatibility reasons; just ignore it
100
    * @return DOMNode &lt;data&gt;-Element
101
    */
102
    public function toXML(DOMDocument $doc, $nodeName = "")
103
    {
104
        return parent::toXML($doc, 'data');
105
    }
106
 
107
   /**
108
    * convert value to binary representation
109
    * @param CFBinaryPropertyList The binary property list object
110
    * @return The offset in the object table
111
    */
112
    public function toBinary(CFBinaryPropertyList &$bplist)
113
    {
114
        return $bplist->dataToBinary($this->getValue());
115
    }
116
}