<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<oembed><type>rich</type><version>1.0</version><provider_name>phorkie</provider_name><provider_url>https://p.cweiske.de/</provider_url><title>pingback library requirements</title><author_name>Anonymous</author_name><cache_age>86400</cache_age><width>900</width><height>900</height><html>&lt;!-- embedding all files of https://p.cweiske.de/16 --&gt;
&lt;link rel="stylesheet" href="https://p.cweiske.de/css/embed.css"/&gt;
&lt;div class="phork" id="16"&gt;
    &lt;div class="phork-file"&gt;
 &lt;div class="phork-content"&gt;
  
&lt;div class="document"&gt;


&lt;div class="section" id="client"&gt;
&lt;h1&gt;Client&lt;/h1&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;send pingback for given URL to remote URL&lt;/li&gt;
&lt;li&gt;use HTTP_Request2, since it allows to use curl if available and others if not&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class="literal-block"&gt;
$pc = new Pingback_Client();
$pc-&amp;gt;send($myUrl, $targetUrl);
&lt;/pre&gt;
&lt;p&gt;TODO: error handling. exceptions? simply true/false with $pc-&amp;gt;getError()?&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="server"&gt;
&lt;h1&gt;Server&lt;/h1&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;register custom handler&lt;/li&gt;
&lt;li&gt;register custom validator&lt;/li&gt;
&lt;li&gt;provide basic backlinking validator&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class="literal-block"&gt;
$ps = new Pingback_Server();
$ps-&amp;gt;registerHandler(array($datastore, 'storePingback'));
$ps-&amp;gt;registerValidator(array($pingbackValidator, 'checkBlogAge'));
$ps-&amp;gt;registerValidator(array($pingbackValidator, 'checkFriendliness'));
$ps-&amp;gt;run();
&lt;/pre&gt;
&lt;/div&gt;
&lt;div class="section" id="my-solution"&gt;
&lt;h1&gt;My Solution&lt;/h1&gt;
&lt;p&gt;&lt;a class="reference external" href="https://github.com/pear2/Services_Linkback"&gt;https://github.com/pear2/Services_Linkback&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="existing-libraries"&gt;
&lt;h1&gt;Existing libraries&lt;/h1&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference external" href="http://pear.php.net/package/Services_Pingback"&gt;http://pear.php.net/package/Services_Pingback&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;bad: uses outdated libraries (HTTP_Request v1, XML_RPC v1, Net_URL v1), not E_STRICT compliant&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://github.com/tedeh/pingback-php"&gt;https://github.com/tedeh/pingback-php&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;bad: &amp;quot;Client&amp;quot; (Utility) has no state thus has to re-fetch the remote files again and again (isPingbackEnabled, getPingbackServerURL, isBacklinking)&lt;/li&gt;
&lt;li&gt;you have to extend the server to properly use it&lt;/li&gt;
&lt;li&gt;no examples&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://github.com/driedfruit/php-pingback"&gt;https://github.com/driedfruit/php-pingback&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;bad: bunch of functions&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Zend Framework 1 has nothing&lt;ul&gt;
&lt;li&gt;there was a proposal, Zend_Service_Linkback, but it was not finished/included: &lt;a class="reference external" href="http://framework.zend.com/wiki/pages/viewpage.action?pageId=13107298"&gt;http://framework.zend.com/wiki/pages/viewpage.action?pageId=13107298&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="http://www.zendframeworkmagazin.de/zf/blog/pingback-mit-dem-zend-framework-1"&gt;http://www.zendframeworkmagazin.de/zf/blog/pingback-mit-dem-zend-framework-1&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;

 &lt;/div&gt;
 &lt;div class="phork-meta"&gt;
  &lt;a href="https://p.cweiske.de/16/rev-raw/7e8da1605fe5e46e2ba714520c1e68e3c0c08242/phork0.rst" style="float: right"&gt;view raw source&lt;/a&gt;
  &lt;a href="https://p.cweiske.de/16#phork0.rst"&gt;phork0.rst&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</html></oembed>
