1. <?php
  2. /**
  3.  * Copyright (c) 2007, Laurent Laville <pear@laurent-laville.org>
  4.  *
  5.  * All rights reserved.
  6.  *
  7.  * Redistribution and use in source and binary forms, with or without
  8.  * modification, are permitted provided that the following conditions
  9.  * are met:
  10.  *
  11.  *     * Redistributions of source code must retain the above copyright
  12.  *       notice, this list of conditions and the following disclaimer.
  13.  *     * Redistributions in binary form must reproduce the above copyright
  14.  *       notice, this list of conditions and the following disclaimer in the
  15.  *       documentation and/or other materials provided with the distribution.
  16.  *     * Neither the name of the authors nor the names of its contributors
  17.  *       may be used to endorse or promote products derived from this software
  18.  *       without specific prior written permission.
  19.  *
  20.  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  21.  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  22.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  23.  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
  24.  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  25.  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  26.  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  27.  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  28.  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  29.  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  30.  * POSSIBILITY OF SUCH DAMAGE.
  31.  *
  32.  * @category Web_Services
  33.  * @package  Services_W3C_CSSValidator
  34.  * @author   Laurent Laville <pear@laurent-laville.org>
  35.  * @license  http://www.opensource.org/licenses/bsd-license.php BSD
  36.  * @version  CVS: $id$
  37.  * @link     http://pear.php.net/package/Services_W3C_CSSValidator
  38.  * @since    File available since Release 0.1.0
  39.  */
  40.  
  41. /**
  42.  * The message class holds a response from the W3C validator.
  43.  *
  44.  * @category Web_Services
  45.  * @package  Services_W3C_CSSValidator
  46.  * @author   Laurent Laville <pear@laurent-laville.org>
  47.  * @license  http://www.opensource.org/licenses/bsd-license.php BSD
  48.  * @link     http://pear.php.net/package/Services_W3C_CSSValidator
  49.  * @since    Class available since Release 0.1.0
  50.  */
  51. class Services_W3C_CSSValidator_Message
  52. {
  53.     /**
  54.      * The address of the document trying to validate
  55.      *
  56.      * @var    string
  57.      * @since  0.1.0
  58.      * @access public
  59.      */
  60.     public $uri;
  61.  
  62.     /**
  63.      * Line corresponding to the message
  64.      *
  65.      * Within the source code of the validated document, refers to the line
  66.      * where the error was detected.
  67.      *
  68.      * @var    int
  69.      * @since  0.1.0
  70.      * @access public
  71.      */
  72.     public $line;
  73.  
  74.     /**
  75.      * The actual message
  76.      *
  77.      * @var    string
  78.      * @since  0.1.0
  79.      * @access public
  80.      */
  81.     public $message;
  82.  
  83.  
  84.     /**
  85.      * Constructor for a response message
  86.      *
  87.      * @param  object $node  A DOM document node.
  88.      * @since  0.1.0
  89.      * @access public
  90.      */
  91.     public function __construct($node = null)
  92.     {
  93.         if (isset($node)) {
  94. //            $properties = get_class_vars('Services_W3C_CSSValidator_Message');
  95.             $properties = get_object_vars($this);
  96.             foreach ($properties as $var => $val) {
  97.                 $element = $node->getElementsByTagName($var);
  98.                 if ($element->length) {
  99.                     $this->$var = $element->item(0)->nodeValue;
  100.                 }
  101.             }
  102.         }
  103.     }
  104. }
  105. ?>