setOption() public method

You can use this method if you do not want to set all options in the constructor
public setOption ( string $name, mixed $value ) : void
$name string name of option
$value mixed value of option
return void
 /**
  * Test unserializing from UTF-8 to ISO-8859-1
  */
 public function testUtf8ToIso()
 {
     $u = new XML_Unserializer();
     $u->setOption(XML_UNSERIALIZER_OPTION_ENCODING_SOURCE, 'UTF-8');
     $u->setOption(XML_UNSERIALIZER_OPTION_ENCODING_TARGET, 'ISO-8859-1');
     $xml = '<xml>' . utf8_encode('A string containing ü ä Ãê') . '</xml>';
     $u->unserialize($xml);
     $this->assertEquals('A string containing ü ä Ãê', $u->getUnserializedData());
 }
 /**
  * Test unserializing with a setter method
  */
 public function testSetterMethod()
 {
     $u = new XML_Unserializer();
     $u->setOption(XML_UNSERIALIZER_OPTION_COMPLEXTYPE, 'object');
     $u->setOption(XML_UNSERIALIZER_OPTION_DEFAULT_CLASS, 'Foo');
     $xml = '<SetterExample><foo>tomato</foo></SetterExample>';
     $u->unserialize($xml);
     $result = new SetterExample();
     $result->setFoo('tomato');
     $this->assertEquals($result, $u->getUnserializedData());
 }
 /**
  * Test unserializing an indexed array
  */
 public function testIndexed()
 {
     $u = new XML_Unserializer();
     $u->setOption(XML_UNSERIALIZER_OPTION_COMPLEXTYPE, 'array');
     $xml = '<xml><foo>bar</foo><foo>tomato</foo></xml>';
     $u->unserialize($xml);
     $this->assertEquals(array('foo' => array('bar', 'tomato')), $u->getUnserializedData());
 }
 /**
  * Test unserializing a float
  */
 public function testFloat()
 {
     $u = new XML_Unserializer();
     $u->setOption(XML_UNSERIALIZER_OPTION_GUESS_TYPES, true);
     $xml = '<xml>453.54553</xml>';
     $u->unserialize($xml);
     $this->assertEquals(453.54553, $u->getUnserializedData());
     $xml = '<xml>-1.47</xml>';
     $u->unserialize($xml);
     $this->assertEquals(-1.47, $u->getUnserializedData());
 }
Ejemplo n.º 5
0
function randomPerson()
{
    $dir = 'collectedData';
    $files = glob($dir . '/*.*');
    $file = array_rand($files);
    $us = new XML_Unserializer();
    $options = array(XML_UNSERIALIZER_OPTION_TAG_MAP => array('util' => 'XML_Util'), XML_UNSERIALIZER_OPTION_ATTRIBUTE_CLASS => '_classname');
    $us->setOptions($options);
    $us->setOption(XML_UNSERIALIZER_OPTION_COMPLEXTYPE, 'object');
    $result = $us->unserialize($files[$file], true);
    return $us->_unserializedData;
}
    /**
     * Test keep behaviour
     */
    public function testKeep()
    {
        $u = new XML_Unserializer();
        $u->setOption(XML_UNSERIALIZER_OPTION_WHITESPACE, XML_UNSERIALIZER_WHITESPACE_KEEP);
        $u->unserialize($this->xml);
        $expected = array('string' => '

    This XML
    document
    contains
    line breaks.

   ');
        $this->assertEquals($expected, $u->getUnserializedData());
    }
 public static function Decode($XMLResponse, &$isFault)
 {
     $responseXML = null;
     try {
         if (empty($XMLResponse)) {
             throw new Exception("Given Response is not a valid SOAP response.");
         }
         $xmlDoc = new XMLReader();
         $res = $xmlDoc->XML($XMLResponse);
         if ($res) {
             $xmlDoc->read();
             $responseXML = $xmlDoc->readOuterXml();
             $xmlDOM = new DOMDocument();
             $xmlDOM->loadXML($responseXML);
             $isFault = trim(strtoupper($xmlDoc->localName)) == self::$FaultMessage;
             if ($isFault) {
                 $xmlDOM->loadXML($xmlDoc->readOuterXml());
             }
             switch ($xmlDoc->nodeType) {
                 case XMLReader::ELEMENT:
                     $nodeName = $xmlDoc->localName;
                     $prefix = $xmlDoc->prefix;
                     if (class_exists($nodeName)) {
                         $xmlNodes = $xmlDOM->getElementsByTagName($nodeName);
                         foreach ($xmlNodes as $xmlNode) {
                             //$xmlNode->prefix = "";
                             $xmlNode->setAttribute("_class", $nodeName);
                             $xmlNode->setAttribute("_type", "object");
                         }
                     }
                     break;
             }
             $responseXML = $xmlDOM->saveXML();
             $unserializer = new XML_Unserializer();
             $unserializer->setOption(XML_UNSERIALIZER_OPTION_COMPLEXTYPE, 'object');
             $res = $unserializer->unserialize($responseXML, false);
             if ($res) {
                 $responseXML = $unserializer->getUnserializedData();
             }
             $xmlDoc->close();
         } else {
             throw new Exception("Given Response is not a valid XML response.");
         }
     } catch (Exception $ex) {
         throw new Exception("Error occurred while XML decoding");
     }
     return $responseXML;
 }
Ejemplo n.º 8
0
 function showReport($report)
 {
     if (isset($report)) {
         $xml = new \XML_Unserializer();
         $xml->setOption(XML_UNSERIALIZER_OPTION_ATTRIBUTES_PARSE, TRUE);
         $xml->unserialize(__ROOT__ . "/reports/" . $report . ".xml", TRUE);
         if (\PEAR::isError($xml)) {
             die("ERROR: XML : Report Name: " . $report . " : MSG: " . $xml->getMessage());
         }
         $this->XML = $xml->getUnserializedData();
         if (\PEAR::isError($xml)) {
             die("ERROR: XML : Report Name: " . $report . " : MSG: " . $xml->getMessage());
         }
         //Now get the tags we need to show the report info
         foreach ($this->XML as $key => $value) {
             switch ($key) {
                 case 'title':
                     $value = str_replace("\n", "<br>", $value);
                     echo "<br><h1>{$value}</h1>\n";
                     break;
                 case 'description':
                     $value = str_replace("\n", "<br>", $value);
                     echo "<p>{$value}</p>\n";
                     break;
             }
         }
     }
     echo "<br><h1>Previous Report Runs:</h1><br>\n";
     if (isset($report)) {
         $sql = "SELECT * from reporting.report_log\n\t\t\t\tWHERE report_name='" . $report . "'\n\t\t\t\tORDER by report_startts desc";
     } else {
         $sql = "SELECT * from reporting.report_log\n\t\t\t\tORDER by report_startts desc\n\t\t\t\tLIMIT 50";
     }
     $result = run_sql($this->db, $sql);
     echo "\n<table class='log' width='1000px'>\n";
     echo "<tr>\n";
     if ($report == '') {
         echo "<th width='15%'>&nbsp;Report Name</th>\n";
         echo "<th width='20%'>&nbsp;Time Stamp</th>\n";
         echo "<th width='50%'>&nbsp;Parameters</th>\n";
         echo "<th width='15%'>&nbsp;Status</th>\n";
     } else {
         echo "<th width='20%'>&nbsp;Time Stamp</th>\n";
         echo "<th width='65%'>&nbsp;Parameters</th>\n";
         echo "<th width='15%'>&nbsp;Status</th>\n";
         echo "</tr>\n";
     }
     while ($row = db_fetch_assoc($result[0])) {
         echo "<tr>";
         if ($report == '') {
             echo "<td><a href='report_view.php?_report=" . $row['report_name'] . "'>" . $row['report_name'] . "</a></td>\n";
             echo "<td><a href='report_log.php?_report=" . $row['report_name'] . "&_cache=" . $row['report_startts'] . "'>" . $row['report_startts'] . "</a></td>\n";
         } else {
             echo "<td><a href='report_log.php?_report=" . $report . "&_cache=" . $row['report_startts'] . "'>" . $row['report_startts'] . "</a></td>\n";
         }
         echo "<td>" . $row['report_parms'] . "</td>\n";
         if ($row['report_code'] == 0) {
             echo "<td style='{background-color: yellowgreen; vertical-align: top}'>Complete</td></tr>\n";
         } elseif ($row['report_code'] == 4) {
             echo "<td style='background-color: orange; {vertical-align: top}'>Running</td></tr>\n";
         }
     }
     echo "</table>\n";
 }
Ejemplo n.º 9
0
 public static function Decode($SOAPResponse, &$isSOAPFault)
 {
     $responseXML = "";
     try {
         if (empty($SOAPResponse)) {
             throw new Exception("Given Response is not a valid SOAP response.");
         }
         $xmlDoc = new XMLReader();
         $res = $xmlDoc->XML($SOAPResponse);
         if ($res) {
             while (trim(strtoupper($xmlDoc->localName)) != self::$SOAPBody) {
                 $isNotEnd = $xmlDoc->read();
                 if (!$isNotEnd) {
                     break;
                 }
             }
             if (!$isNotEnd) {
                 $isSOAPFault = true;
                 $soapFault = new FaultMessage();
                 $errorData = new ErrorData();
                 $errorData->errorId = 'Given Response is not a valid SOAP response.';
                 $errorData->message = 'Given Response is not a valid SOAP response.';
                 $soapFault->error = $errorData;
                 return $soapFault;
             }
             $responseXML = $xmlDoc->readInnerXml();
             $xmlDOM = new DOMDocument();
             $xmlDOM->loadXML($responseXML);
             $count = 0;
             $xmlDoc->read();
             $isSOAPFault = trim(strtoupper($xmlDoc->localName)) == self::$SOAPFault;
             if ($isSOAPFault) {
                 while (trim(strtoupper($xmlDoc->localName)) != self::$SOAPFaultMessage) {
                     $isNotEnd = $xmlDoc->read();
                     if (!$isNotEnd) {
                         break;
                     }
                 }
                 $xmlDOM->loadXML($xmlDoc->readOuterXml());
             }
             switch ($xmlDoc->nodeType) {
                 case XMLReader::ELEMENT:
                     $nodeName = $xmlDoc->localName;
                     $prefix = $xmlDoc->prefix;
                     if (class_exists($nodeName)) {
                         $xmlNodes = $xmlDOM->getElementsByTagName($nodeName);
                         foreach ($xmlNodes as $xmlNode) {
                             //$xmlNode->prefix = "";
                             $xmlNode->setAttribute("_class", $nodeName);
                             $xmlNode->setAttribute("_type", "object");
                         }
                     }
                     break;
             }
             $responseXML = $xmlDOM->saveXML();
             $unserializer = new XML_Unserializer();
             $unserializer->setOption(XML_UNSERIALIZER_OPTION_COMPLEXTYPE, 'object');
             $res = $unserializer->unserialize($responseXML, false);
             if ($res) {
                 $responseXML = $unserializer->getUnserializedData();
             }
             $xmlDoc->close();
         } else {
             throw new Exception("Given Response is not a valid SOAP response.");
         }
     } catch (Exception $ex) {
         throw $ex;
         throw new Exception("Error occurred while Soap decoding: " . $ex->getMessage());
     }
     return $responseXML;
 }
Ejemplo n.º 10
0
 function __construct($name, $parms)
 {
     $this->reportName = $name;
     $this->setReportTitle();
     $this->csv = $this->reportName . "_" . date('Ymdhis') . ".csv";
     // Parse the report
     $xml = new \XML_Unserializer();
     $xml->setOption(XML_UNSERIALIZER_OPTION_ATTRIBUTES_PARSE, TRUE);
     $xml->unserialize(__ROOT__ . "/reports/" . $this->reportName . ".xml", TRUE);
     if (\PEAR::isError($xml)) {
         die("ERROR: XML : Report Name: " . $this->reportName . " : MSG: " . $xml->getMessage());
     }
     $this->XML = $xml->getUnserializedData();
     if (\PEAR::isError($xml)) {
         die("ERROR: XML : Report Name: " . $this->reportName . " : MSG: " . $xml->getMessage());
     }
     // Check if it has a query
     if (!isset($this->XML['query'])) {
         die("ERROR: XML : Report Name: " . $this->reportName . " : MSG: This report has no query");
     } else {
         $this->batch = FALSE;
         foreach ($this->XML as $key => $value) {
             switch ($key) {
                 case 'query':
                     if (isset($value[0])) {
                         foreach ($value as $index => $query) {
                             $q = new Query($query);
                             $q->setReportName($name);
                             $t = new Table($query);
                             $t->csv = $this->csv;
                             $t->reportName = $this->reportName;
                             $this->queries[$q->name] = $q;
                             $this->tables[$t->name] = $t;
                         }
                     } else {
                         $q = new Query($value);
                         $q->setReportName($name);
                         $t = new Table($value);
                         $t->csv = $this->csv;
                         $t->reportName = $this->reportName;
                         $this->queries[$q->name] = $q;
                         $this->tables[$t->name] = $t;
                     }
                     break;
                 case 'chart':
                     if (isset($value[0])) {
                         foreach ($value as $index => $chart) {
                             $c = new Chart($chart);
                             $this->charts[$c->name] = $c;
                         }
                     } else {
                         $c = new Chart($value);
                         $this->charts[$c->name] = $c;
                     }
                     break;
                 case 'title':
                     $this->title = $value;
                     break;
                 case 'description':
                     $this->description = $value;
                     break;
                 case 'row':
                     if (isset($value[0])) {
                         foreach ($value as $index => $format) {
                             $f = new Format($format);
                             $this->formats[$f->columnName] = $f;
                         }
                     } else {
                         $f = new Format($value);
                         $this->formats[$f->columnName] = $f;
                     }
                     break;
                 case 'column':
                     if (isset($value[0])) {
                         foreach ($value as $index => $format) {
                             $f = new Format($format);
                             $this->formats[$f->columnName] = $f;
                         }
                     } else {
                         $f = new Format($value);
                         $this->formats[$f->columnName] = $f;
                     }
                     break;
                 case 'parm':
                     $this->parms = new ReportParms($this->XML['parm']);
                     $this->parms->setReportName($name);
                     break;
                 case 'batch':
                     $this->batch = TRUE;
                     break;
             }
         }
     }
     foreach ($this->tables as $key => $value) {
         $value->formats = $this->formats;
     }
     if (isset($this->charts)) {
         foreach ($this->charts as $key => $value) {
             $value->formats = $this->formats;
         }
     }
     //Check if the report has any parameters passed
     unset($parms['_report']);
     $this->passedParms = $parms;
     $this->nPassedParms = count($this->passedParms);
     foreach ($this->passedParms as $key => $value) {
         if (strpos(strtolower($value), 'yesterday') === FALSE) {
         } else {
             if (strpos($value, '-') > 0) {
                 $days = substr($value, strpos($value, '-') + 1, strpos($value, 'd', strpos($value, '-')) - strpos($value, '-') - 1);
                 $this->passedParms[$key] = date('Y-m-d', mktime(0, 0, 0, date("m"), date("d") - $days - 1, date("Y")));
             }
         }
         $this->passedParms[$key] = str_ireplace('today', date('Y-m-d'), $this->passedParms[$key]);
         $this->passedParms[$key] = str_ireplace('yesterday-29d', date('Y-m-d', mktime(0, 0, 0, date("m"), date("d") - 30, date("Y"))), $this->passedParms[$key]);
         $this->passedParms[$key] = str_ireplace('yesterday', date('Y-m-d', mktime(0, 0, 0, date("m"), date("d") - 1, date("Y"))), $this->passedParms[$key]);
     }
     foreach ($this->queries as $index => $query) {
         $query->parms = new QueryParms($this->passedParms);
     }
     $fh = fopen("/tmp/" . $this->csv, "w") or die("ERROR: Could not open file...");
     fwrite($fh, $this->title . "\n");
     fwrite($fh, $this->reportName . "\n");
     fwrite($fh, "{$this->description}\n");
     fwrite($fh, "\n");
     fwrite($fh, "Parameters Passed:\n");
     foreach ($this->passedParms as $key => $value) {
         fwrite($fh, "{$key},{$value}\n");
     }
     fwrite($fh, "\n");
     fclose($fh);
 }
Ejemplo n.º 11
0
 /**
  * 一覧表示
  */
 private function viewList(sfWebRequest $request, sfWebBrowser $b, $module_name)
 {
     $options = array('complexType' => 'array', 'parseAttributes' => TRUE);
     $Unserializer = new XML_Unserializer();
     $Unserializer->setOption('parseAttributes', TRUE);
     $status = $Unserializer->unserialize($b->getResponseText());
     $this->list = $Unserializer->getUnserializedData();
     //検索結果が一件の場合
     if (count($this->list['Response']['Placemark']) >= 1 && $this->list['Response']['Placemark']['id']) {
         sfApplicationConfiguration::getActive()->loadHelpers('geocodeParser');
         $result = geocodeParser($this->list['Response']['Placemark']);
         $this->display_address = $result['address'];
         $request->setParameter('address', $result['address']);
         $request->setParameter('lon', $result['lon']);
         $request->setParameter('lat', $result['lat']);
         $this->setTemplate($module_name);
     } else {
         $this->module_name = $module_name;
         $this->setTemplate('searchList');
     }
 }
Ejemplo n.º 12
0
 /**
  * 連想配列の取得
  *
  * <pre>
  * PHPの連想配列を指定すればそのまま、ファイルパスを指定すれば
  * 設定ファイルから読み込み連想配列として渡します。
  * またURLのクエリー形式も使用できます。
  * BEARで広く使われています。BEARの全てのクラスのコンストラクタ
  * (シングルトン含む)、リソースへの引数、
  * オプションにこの連想配列フォーマットが使われます。
  *
  * array -- 連想配列としてオプションが入力されます
  *
  * string -- ファイルから拡張子によりフォーマットが異なります
  *  URLクエリー形式 ?foo1=bar1&hoge=fugaのようなフォーマットを連想配列にします
  *  *.ini iniフォーマット
  *  *.xml XMLフォーマット
  *  *.php phpのdefineが連想配列として読み込まれます
  *  *.yml yamlファイル
  *
  * $options
  * 'extention' string オーバーロード拡張子
  * </pre>
  *
  * @param mixed $target  ターゲット ファイルパス,URLなど
  * @param array $options オプション
  *
  * @return array
  *
  * @see http://pear.php.net/manual/ja/package.configuration.config.php
  * @see BEAR/test/files/example.ini
  * @see BEAR/test/files/example.xml
  * @see BEAR/test/files/example.php
  * @throws BEAR_Exception
  */
 public static function loadValues($target, $options = array())
 {
     if (!is_file((string) $target)) {
         // arrayならそのまま
         if (is_array($target) || is_object($target)) {
             return (array) $target;
         }
         // false | null なら 設定な
         if (!$target) {
             return null;
         }
         // クエリーがあるときはクエリーをパースした連想配列を返す
         $parseUrl = parse_url($target);
         if (isset($parseUrl['query'])) {
             $options = array();
             parse_str($parseUrl['query'], $options);
             return $options;
         } else {
             return null;
         }
     } else {
         $cache = self::factory('BEAR_Cache');
         $cache->setLife(BEAR_Cache::LIFE_UNLIMITED);
         $key = $target . filemtime($target);
         $cacheResult = $cache->get($key);
         if ($cacheResult) {
             return $cacheResult;
         }
         // PEAR::Configを使って設定ファイルをパース
         $pathinfo = pathinfo($target);
         // 相対パスなら絶対パスに (/:linux :win)
         $target = substr($target, 0, 1) == '/' || substr($target, 1, 1) == ':' ? $target : _BEAR_APP_HOME . '/App/Ro/' . $target;
         $extension = isset($options['extention']) ? $options['extention'] : $pathinfo['extension'];
         switch ($extension) {
             case 'yml':
                 if (function_exists('syck_load')) {
                     $content = file_get_contents($target);
                     $yaml = syck_load($content);
                 } else {
                     include_once 'BEAR/vendors/spyc-0.2.5/spyc.php';
                     $yaml = Spyc::YAMLLoad($target);
                 }
                 $cache->set($key, $yaml);
                 return $yaml;
             case 'csv':
                 $conf = File_CSV::discoverFormat($target);
                 $csv = array();
                 while ($fields = File_CSV::read($target, $conf)) {
                     array_push($csv, $fields);
                 }
                 $result = $cache->set($key, $csv);
                 return $csv;
             case 'ini':
                 $parse = 'inicommented';
                 break;
             case 'xml':
                 $unserializer = new XML_Unserializer();
                 $unserializer->setOption('parseAttributes', true);
                 $xml = file_get_contents($target);
                 $unserializer->unserialize($xml);
                 $result = $unserializer->getUnserializedData();
                 return $result;
                 break;
             case 'php':
                 $parse = 'PHPConstants';
                 break;
             default:
                 return file_get_contents($target, FILE_TEXT);
                 break;
         }
         $config = new Config();
         $root =& $config->parseConfig($target, $parse);
         if (PEAR::isError($root)) {
             $msg = '設定を読み込む際のエラー: ';
             $msg .= $root->getMessage();
             $info = array('parse' => $parse, 'input' => $target);
             throw new BEAR_Exception($msg, compact('info'));
             return false;
         } else {
             $result = $root->toArray();
             return $result['root'];
         }
     }
 }