rendered paste body public function act_rsd() { /** * List of APIs supported by the RSD * Refer to namespace for required elements/attributes. * TODO: Put this in options to allow add/edit/remove/enable/disable apis. */ $apis_list= array( 'Blogger' => array( 'preferred' => 'true', 'apiLink' => URL::get( 'collection', 'index=1' ), // This should be the XML-RPC url 'blogID' => '', ), ); $dom= new SimpleXMLElement('<rsd version="1.0" xmlns="http://archipelago.phrasewise.com/rsd"></rsd>'); $rsd_service= $dom->rsd->addChild( 'service' ); $service_engineName= $dom->addChild( 'engineName', 'Habari' ); $service_engineLink= $dom->addChild( 'engineLink', 'http://www.habariproject.org/' ); $service_homePageLink= $dom->addChild( 'homePageLink', Site::get_url('habari') ); $service_apis= $dom->addChild( 'apis' ); if ( !isset( $apis_list ) || ( count( $apis_list ) < 1 ) ) { return false; } foreach ( $apis_list as $apiName => $atts ) { if ( !isset( $atts['preferred'], $atts['apiLink'], $atts['blogID'] ) ) { continue; } $apis_api= $dom->addChild( 'api' ); $apis_api->addAttribute( 'name', $apiName ); $apis_api->addAttribute( 'preferred', $atts['preferred'] ); $apis_api->addAttribute( 'apiLink', $atts['apiLink'] ); $apis_api->addAttribute( 'blogID', $atts['blogID'] ); if ( !isset( $atts['settings'] ) || ( count( $atts['settings'] ) < 1 ) ) { continue; } $api_settings= $dom->addChild( 'settings' ); foreach ( $atts['settings'] as $settingName => $settingValue ) { switch ( $settingName ) { case 'docs': case 'notes': $settings_setting= $dom->addChild( $settingName, $settingValue ); break; case 'setting': foreach ( $settingValue as $settingArray ) { $settings_setting= $dom->addChild( 'setting', $settingArray['value'] ); $settings_setting->addAttribute( 'name', $settingArray['name'] ); } break; } } } $dom= $dom->asXML(); ob_clean(); header('Content-Type: application/rsd+xml'); print $dom; }