Esempio n. 1
0
 function get_schema()
 {
     $schema = parent::get_schema();
     $override = array('/rss/@xmlns:hu' => array(XML_DATA_STATIC, XML_TYPE_STRING, 'http://www2.hu-berlin.de/podcast/Schema'), '/rss/channel/language' => array(XML_DATA_CALLBK, XML_TYPE_STRING, 'get_language'), '/rss/channel/ttl' => array(XML_DATA_IGNORE), '/rss/channel/item/category' => array(XML_DATA_IGNORE), '/rss/channel/item/comments' => array(XML_DATA_IGNORE), '/rss/channel/item/category/@domain' => array(XML_DATA_IGNORE), '/rss/channel/item/source' => array(XML_DATA_IGNORE), '/rss/channel/item/source/@url' => array(XML_DATA_IGNORE));
     if (is_a($this->channel, 'podcaster_metachannelimpl')) {
         $override['/rss/channel/item/hu:copyright'] = array(XML_DATA_CONTEXT, XML_TYPE_STRING, 'copyright');
         $override['/rss/channel/item/hu:categories'] = array(XML_DATA_ONCE, XML_TYPE_OBJECT, NULL);
         $override['/rss/channel/item/hu:categories/hu:category'] = array(XML_DATA_LOOP, XML_TYPE_OBJECT, 'get_hucategories');
         $override['/rss/channel/item/hu:categories/hu:category/@id'] = array(XML_DATA_CONTEXT, XML_TYPE_INTEGER, 'id');
         $override['/rss/channel/item/hu:lastBuildDate'] = array(XML_DATA_CONTEXT, XML_TYPE_DATETIME, 'timemodified');
     } else {
         $override['/rss/channel/hu:categories'] = array(XML_DATA_ONCE, XML_TYPE_OBJECT, NULL);
         $override['/rss/channel/hu:categories/hu:category'] = array(XML_DATA_LOOP, XML_TYPE_OBJECT, 'get_hucategories');
         $override['/rss/channel/hu:categories/hu:category/@id'] = array(XML_DATA_CONTEXT, XML_TYPE_INTEGER, 'id');
     }
     return array_merge($schema, $override);
 }
Esempio n. 2
0
 function get_schema()
 {
     // Format der Angaben:
     //    'XMLPath' => array (Quelltyp, Zielformat, Datenquelle)
     //        Quelltyp:
     //            - XML_DATA_CONTEXT: Inhalt wird als Eigenschaft des Context erwartet
     //              Beispiel:
     //                '/rss/channel/title'
     //                    => array(XML_DATA_CONTEXT,  XML_TYPE_STRING,    'name')
     //
     //            - XML_DATA_STATIC:  Inhalt ist ein statischer Wert
     //              Beispiel:
     //                '/rss/@version'
     //                    => array(XML_DATA_STATIC,  XML_TYPE_STRING,     '2.0'),
     //
     //            - XML_DATA_CALLBK:  Inhalt wird durch Aufruf einer Callback-Methode
     //                                ermittelt, diese muss einen String zurueckliefern
     //              Beispiel:
     //                '/rss/channel/link'
     //                    => array(XML_DATA_CALLBK,   XML_TYPE_STRING,    'get_link'),
     //
     //            - XML_DATA_ONCE:    Inhalt wird einmal ausgegeben. Ist eine Datenquelle
     //                                (= Callbackmethode) angegeben, wird diese aufgerufen
     //                                und fuer untergeordnete Elemente der von dieser
     //                                Methode zurueckgegebene Context gesetzt. Ansonsten
     //                                bleibt es beim aktuellen Context
     //              Beispiele:
     //                '/rss'
     //                    => array(XML_DATA_ONCE,    XML_TYPE_OBJECT,     NULL),
     //                '/rss/channel'
     //                    => array(XML_DATA_ONCE,     XML_TYPE_OBJECT,    'get_channel'),
     //
     //            - XML_DATA_LOOP:    wie XML_DATA_ONCE, es muss eine Callback-Methode
     //                                angegeben werden, die einen array von Context's
     //                                fuer untergeordnete Elemente zurueckgibt
     //              Beispiele:
     //                '/rss/channel/category'
     //                    => array(XML_DATA_LOOP,   XML_TYPE_OBJECT,    'get_categories'),
     //
     //            - XML_DATA_IGNORE:  Knoten wird ignoriert
     //              Beispiele:
     //                '/rss/channel/image/width'
     //                    => array(XML_DATA_IGNORE),
     //
     $schema = parent::get_schema();
     $override = array('/rss/@xmlns:itunes' => array(XML_DATA_STATIC, XML_TYPE_STRING, 'http://www.apple.com/itunes/store/podcaststechspecs.html'), '/rss/channel/itunes:author' => array(XML_DATA_CALLBK, XML_TYPE_STRING, 'get_itunesauthor'));
     return array_merge($schema, $override);
 }