using_mod_rewrite_permalinks() ? '' : '/index.php').'/xrds" />'; $xrdsProviders = get_option('xrds_services'); if ($provider = current($xrdsProviders)) { echo ' '; } } /** * Register Admin Menu. */ function menu() { add_options_page('Yadis Options', 'Yadis', 9, 'global-yadis-options', array('Yadis', 'manage')); } function admin_head() { wp_print_scripts(array('jquery', 'interface')); $plugin_base = get_option('siteurl').'/wp-content/plugins/yadis'; ?> $_REQUEST['xrds-server'], 'delegate' => $_REQUEST['xrds-delegate'], 'simplereg' => false, ); } } else if (@$_REQUEST['xrds-username']) { $provider = Yadis::build_provider_definition($_REQUEST['xrds-id'], $_REQUEST['xrds-username']); } } return $provider; } /** * Build the specified predefined provider definition. */ function build_provider_definition($providerID, $username) { $provider = Array(); $xrdsProviders = Yadis::predefined(); if (array_key_exists($providerID, $xrdsProviders)) { $provider['server'] = preg_replace('/%/', $username, $xrdsProviders[$providerID][1]); $provider['delegate'] = preg_replace('/%/', $username, $xrdsProviders[$providerID][2]); $provider['simplereg'] = $xrdsProviders[$providerID][3]; return $provider; } } /** * Get pre-defined identity providers */ function predefined() { $providers = array( 'aol' => array('AOL', 'http://api.screenname.aol.com/auth/openidServer','http://openid.aol.com/%',true), 'claimid' => array('ClaimID', 'http://openid.claimid.com/server','http://openid.claimid.com/%',true), 'livejournal' => array('LiveJournal', 'http://www.livejournal.com/openid/server.bml','http://%.livejournal.com/',true), 'myopenid' => array('MyOpenID', 'http://www.myopenid.com/server','http://%.myopenid.com/',true), 'yahoo' => array('Yahoo! (IDProxy)', 'http://idproxy.net/openid/server/','http://%.idproxy.net/',true), 'wordpress' => array('Wordpress.com', 'http://%.wordpress.com/?openidserver=1','http://%.wordpress.com/',true), ); return $providers; } /** * URL rewriting stuff, to serve xrds.xml */ function rewrite_rules($rules) { $xrds_rules = array( 'xrds$' => 'index.php?xrds=xrds', 'xrds.xml$' => 'index.php?xrds=xrds', 'index.php/xrds$' => 'index.php?xrds=xrds', ); return $rules + $xrds_rules; } /** * Add 'xrds' as a valid query variables. **/ function query_vars($vars) { $vars[] = 'xrds'; return $vars; } /** * Print XRDS document if 'xrds' query variable is present **/ function xrds_xml($query) { if ($query) $xrds = $query->query_vars['xrds']; if (!empty($xrds)) { $debug = ($xrds == 'debug' || array_key_exists('debug', $_REQUEST)) ? true : false; Yadis::print_xrds($debug); } } /** * Print XRDS document. **/ function print_xrds($debug = false) { if ($debug) { header('Content-Type: text/plain'); } else { header('Content-Type: application/xrds+xml'); header('Content-Disposition: attachment;filename=xrds.xml'); } $xrdsProviders = get_option('xrds_services'); echo ' '; foreach((array)$xrdsProviders as $k => $v) { echo' http://openid.net/signon/1.0 '.$v['server'].' '.$v['delegate'].' '; } echo ' '; exit; } /** * Handle "Accept: application/xml+xrds" requests. **/ function handleXrdsRequest() { if (strcasecmp($_SERVER['HTTP_ACCEPT'], 'application/xml+xrds') == 0) { Yadis::print_xrds(); exit; } } /** * Manage admin option page. */ function manage() { $xrdsProviders = get_option('xrds_services'); $updated = false; if (isset($_REQUEST['action'])) { switch($_REQUEST['action']) { case 'submit': $newXrdsProviders = array(); parse_str($_REQUEST['services_order']); // copy user sorting preference foreach((array)$yadis_services as $i) { $i = ereg_replace('service_', '', $i); $newXrdsProviders[] = $xrdsProviders[$i]; } $xrdsProviders = $newXrdsProviders; if ($provider = Yadis::new_provider($xrdsProviders)) { $xrdsProviders[] = $provider; } $updated = true; break; case 'delete': if (isset($_REQUEST['id'])) { unset($xrdsProviders[$_REQUEST['id']]); $updated = true; } break; } } if ($updated) { update_option('xrds_services', $xrdsProviders); # Update Permalinks global $wp_rewrite; $wp_rewrite->flush_rules(); } ?>

'.__('Changes have been saved', '').'

'; } ?>

Yadis Options

You may drag existing services to change their order of priority.

Add New Service

Username:
OpenID Server
OpenID Delegate