~ubuntu-branches/ubuntu/saucy/php-horde-kolab-format/saucy

« back to all changes in this revision

Viewing changes to Horde_Kolab_Format-2.0.2/lib/Horde/Kolab/Format/Xml/Type/Color.php

  • Committer: Package Import Robot
  • Author(s): Mathieu Parent
  • Date: 2013-04-07 15:55:32 UTC
  • mfrom: (1.1.2)
  • Revision ID: package-import@ubuntu.com-20130407155532-cserelt1ix1m9cs3
Tags: 2.0.3-1
New upstream version 2.0.3

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
<?php
2
 
/**
3
 
 * Handles a color attribute.
4
 
 *
5
 
 * PHP version 5
6
 
 *
7
 
 * @category Kolab
8
 
 * @package  Kolab_Format
9
 
 * @author   Gunnar Wrobel <wrobel@pardus.de>
10
 
 * @license  http://www.horde.org/licenses/lgpl21 LGPL
11
 
 * @link     http://www.horde.org/libraries/Horde_Kolab_Format
12
 
 */
13
 
 
14
 
/**
15
 
 * Handles a color attribute.
16
 
 *
17
 
 * Copyright 2011-2013 Horde LLC (http://www.horde.org/)
18
 
 *
19
 
 * See the enclosed file COPYING for license information (LGPL). If you did not
20
 
 * receive this file, see
21
 
 * http://www.horde.org/licenses/lgpl21.
22
 
 *
23
 
 * @category Kolab
24
 
 * @package  Kolab_Format
25
 
 * @author   Gunnar Wrobel <wrobel@pardus.de>
26
 
 * @license  http://www.horde.org/licenses/lgpl21 LGPL
27
 
 * @link     http://www.horde.org/libraries/Horde_Kolab_Format
28
 
 */
29
 
class Horde_Kolab_Format_Xml_Type_Color
30
 
extends Horde_Kolab_Format_Xml_Type_String
31
 
{
32
 
    /**
33
 
     * Load the value of a node.
34
 
     *
35
 
     * @param DOMNode                       $node   Retrieve value for this node.
36
 
     * @param Horde_Kolab_Format_Xml_Helper $helper A XML helper instance.
37
 
     * @param array                         $params Additiona parameters for
38
 
     *                                              this parse operation.
39
 
     *
40
 
     * @return mixed|null The value or null if no value was found.
41
 
     */
42
 
    public function loadNodeValue(
43
 
        $node,
44
 
        Horde_Kolab_Format_Xml_Helper $helper,
45
 
        $params = array()
46
 
    )
47
 
    {
48
 
        $result = $helper->fetchNodeValue($node);;
49
 
        if ($result !== null) {
50
 
            $this->_checkColor($result, $params);
51
 
        }
52
 
        return $result;
53
 
    }
54
 
 
55
 
    /**
56
 
     * Update the specified attribute.
57
 
     *
58
 
     * @param string                        $name        The name of the attribute
59
 
     *                                                   to be updated.
60
 
     * @param mixed                         $value       The value to store.
61
 
     * @param DOMNode                       $parent_node The parent node of the
62
 
     *                                                   node that should be
63
 
     *                                                   updated.
64
 
     * @param Horde_Kolab_Format_Xml_Helper $helper      A XML helper instance.
65
 
     * @param array                         $params      The parameters for this
66
 
     *                                                   write operation.
67
 
     * @param DOMNode|NULL                  $old_node    The previous value (or
68
 
     *                                                   null if there is none).
69
 
     *
70
 
     * @return DOMNode|boolean The new/updated child node or false if this
71
 
     *                         failed.
72
 
     *
73
 
     * @throws Horde_Kolab_Format_Exception If converting the data to XML failed.
74
 
     */
75
 
    public function saveNodeValue(
76
 
        $name,
77
 
        $value,
78
 
        $parent_node,
79
 
        Horde_Kolab_Format_Xml_Helper $helper,
80
 
        $params = array(),
81
 
        $old_node = false
82
 
    )
83
 
    {
84
 
        if (isset($value)) {
85
 
            $this->_checkColor($value, $params);
86
 
        }
87
 
        return parent::saveNodeValue(
88
 
            $name, $value, $parent_node, $helper, $params, $old_node
89
 
        );
90
 
    }
91
 
 
92
 
    /**
93
 
     * Test if the input seems to be a real color.
94
 
     *
95
 
     * @param string $color  The string to check.
96
 
     * @param array  $params The parameters for this operation.
97
 
     *
98
 
     * @return NULL
99
 
     *
100
 
     * @throws Horde_Kolab_Format_Exception If the input is no color.
101
 
     */
102
 
    private function _checkColor($color, $params)
103
 
    {
104
 
        if (!preg_match('/^#[0-9a-fA-F]{6}$/', $color)
105
 
            && !$this->isRelaxed($params)) {
106
 
            throw new Horde_Kolab_Format_Exception(
107
 
                sprintf('Invalid color input "%s"!', $color)
108
 
            );
109
 
        }
110
 
    }
111
 
 
112
 
}