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); }
function get_link(&$context) { $link = parent::get_link($context); return str_replace('https://', 'http://', $link); }