Exemplo n.º 1
0
 protected function createFeed($type, $data)
 {
     $feed = new ezcFeed($type);
     $supportedModules = ezcFeed::getSupportedModules();
     if (is_array($data)) {
         foreach ($data as $property => $value) {
             if (is_array($value)) {
                 foreach ($value as $val) {
                     if (isset($supportedModules[$property])) {
                         $element = $feed->addModule($property);
                     } else {
                         $element = $feed->add($property);
                     }
                     if (is_array($val)) {
                         foreach ($val as $subKey => $subValue) {
                             if ($subKey === '#') {
                                 $element->set($subValue);
                             } else {
                                 if ($subKey === 'MULTI') {
                                     $values = array();
                                     foreach ($subValue as $multi) {
                                         foreach ($multi as $subSubKey => $subSubValue) {
                                             if (isset($supportedModules[$subSubKey])) {
                                                 $subElement = $element->addModule($subSubKey);
                                             } else {
                                                 if ($property === 'skipDays') {
                                                     $values[] = $subSubValue;
                                                     $element->days = $values;
                                                 } else {
                                                     if ($property === 'skipHours') {
                                                         $values[] = $subSubValue;
                                                         $element->hours = $values;
                                                     } else {
                                                         $subElement = $element->add($subSubKey);
                                                     }
                                                 }
                                             }
                                             if ($property !== 'skipDays' && $property !== 'skipHours') {
                                                 $subElement->set($subSubValue);
                                             }
                                         }
                                     }
                                 } else {
                                     if (is_array($subValue)) {
                                         if (count($subValue) === 0 || !isset($subValue[0])) {
                                             if (isset($supportedModules[$subKey])) {
                                                 $subElement = $element->addModule($subKey);
                                             } else {
                                                 $subElement = $element->add($subKey);
                                             }
                                         }
                                         foreach ($subValue as $subSubKey => $subSubValue) {
                                             if ($subSubKey === '#') {
                                                 $subElement->set($subSubValue);
                                             } else {
                                                 if (is_array($subSubValue)) {
                                                     if (isset($supportedModules[$subKey])) {
                                                         $subElement = $element->addModule($subKey);
                                                     } else {
                                                         $subElement = $element->add($subKey);
                                                     }
                                                     foreach ($subSubValue as $subSubSubKey => $subSubSubValue) {
                                                         if ($subSubSubKey === '#') {
                                                             $subElement->set($subSubSubValue);
                                                         } else {
                                                             if (is_array($subSubSubValue)) {
                                                                 foreach ($subSubSubValue as $subSubSubSubKey => $subSubSubSubValue) {
                                                                     $subSubElement = $subElement->add($subSubSubKey);
                                                                     foreach ($subSubSubSubValue as $subSubSubSubSubKey => $subSubSubSubSubValue) {
                                                                         if ($subSubSubSubSubKey === '#') {
                                                                             $subSubElement->set($subSubSubSubSubValue);
                                                                         } else {
                                                                             $subSubElement->{$subSubSubSubSubKey} = $subSubSubSubSubValue;
                                                                         }
                                                                     }
                                                                 }
                                                             } else {
                                                                 $subElement->{$subSubSubKey} = $subSubSubValue;
                                                             }
                                                         }
                                                     }
                                                 } else {
                                                     $subElement->{$subSubKey} = $subSubValue;
                                                 }
                                             }
                                         }
                                     } else {
                                         $element->{$subKey} = $subValue;
                                     }
                                 }
                             }
                         }
                     } else {
                         $element->set($val);
                     }
                 }
             } else {
                 $feed->{$property} = $value;
             }
         }
     }
     return $feed;
 }
Exemplo n.º 2
0
 /**
  * Parses the XML element $node and creates modules in the feed or
  * feed item $item.
  *
  * @param ezcFeedEntryElement|ezcFeed $item The feed or feed item which will contain the modules
  * @param DOMElement $node The XML element from which to get the module elements
  * @param string $tagName The XML tag name (if it contains ':' it will be considered part of a module)
  * @ignore
  */
 protected function parseModules($item, DOMElement $node, $tagName)
 {
     $supportedModules = ezcFeed::getSupportedModules();
     if (strpos($tagName, ':') !== false) {
         list($prefix, $key) = explode(':', $tagName);
         $moduleName = isset($this->usedPrefixes[$prefix]) ? $this->usedPrefixes[$prefix] : null;
         if (isset($supportedModules[$moduleName])) {
             $module = $item->hasModule($moduleName) ? $item->{$moduleName} : $item->addModule($moduleName);
             $module->parse($key, $node);
         }
     }
 }