From: <ny...@us...> - 2008-10-16 12:46:30
|
Revision: 15171 http://tikiwiki.svn.sourceforge.net/tikiwiki/?rev=15171&view=rev Author: nyloth Date: 2008-10-16 12:46:25 +0000 (Thu, 16 Oct 2008) Log Message: ----------- [MOD] snarf wikiplugin: * Directly use 'wikiplugin_code' function instead of parsing {CODE} in wiki syntax. This avoid to have two edit icons for the plugin (one for snarf, the other, useless, for code), solves problems with some contents and should improve perfs, * Use CURLOPT_RETURNTRANSFER instead of ob_* functions, since they seem to work properly now in PHP5+, * Add timeouts of 2sec for both connection and retrieval, * Handle SSL without verifiying the certificate, * Handle redirects, * Define user agent as 'TikiWiki Snarf' Modified Paths: -------------- trunk/lib/wiki-plugins/wikiplugin_snarf.php Modified: trunk/lib/wiki-plugins/wikiplugin_snarf.php =================================================================== --- trunk/lib/wiki-plugins/wikiplugin_snarf.php 2008-10-16 11:59:11 UTC (rev 15170) +++ trunk/lib/wiki-plugins/wikiplugin_snarf.php 2008-10-16 12:46:25 UTC (rev 15171) @@ -77,15 +77,18 @@ if( function_exists("curl_init") ) { - $ch = curl_init( $params['url'] ); + $curl = curl_init(); + curl_setopt($curl, CURLOPT_URL, $params['url']); + curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); + curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 2); + curl_setopt($curl, CURLOPT_TIMEOUT, 2); + curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($curl, CURLOPT_HEADER, false); + curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true ); + curl_setopt($curl, CURLOPT_USERAGENT, "TikiWiki Snarf" ); + $html = curl_exec($curl); + curl_close($curl); - // use output buffering instead of returntransfer -itmaybebuggy - ob_start(); - curl_exec($ch); - curl_close($ch); - $html = ob_get_contents(); - ob_end_clean(); - // Not using preg_replace due to its limitations to 100.000 characters $snarf = eregi_replace('^.*<\s*body[^>]*>', '', $html); $snarf = eregi_replace('<\s*\/body[^>]*>.*$', '', $snarf); @@ -97,20 +100,18 @@ if ( $data == '' ) $data = NULL; $code_defaults = array('caption' => $data, 'wrap' => '1', 'colors' => NULL, 'wiki' => '0', 'ln' => NULL, 'rtl' => NULL, 'ishtml' => NULL); - $ret = '{CODE('; + foreach ( $code_defaults as $k => $v ) { - $tmp = isset($params[$k]) ? $params[$k] : ( $v !== NULL ? $v : '' ); - if ( $tmp != '' ) { - if ( $ret != '' ) $ret .= ','; - $ret .= $k . '=' . $tmp; - } + if ( isset($params[$k]) ) $code_defaults[$k] = $params[$k]; + if ( $code_defaults[$k] === NULL ) unset($code_defaults[$k]); } - $ret .= ')}' . $snarf .'{CODE}'; + include_once('lib/wiki-plugins/wikiplugin_code.php'); + $ret = wikiplugin_code($snarf, $code_defaults); + } else { $ret = "<p>You need php-curl for the SNARF plugin!</p>\n"; } - return $ret; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |