$number){
$string = substr($string,0,$number).'...';
}
return $string;
}
/**
* Same as array_walk, but also useable for multidimensional arrays
* Return: true
*/
function aXMLreader_multiarray_walk($array, $callback){
array_walk($array, $callback);
foreach($array as $key => $value){
if(!is_string($value[0])){
aXMLreader_multiarray_walk($value, $callback);
}
}
return true;
}
/**
* Puts the data from (multi)array_walk into a global variable
* Return: true/false & filled global variable
*/
function aXMLreader_show_data($value, $key){
global $plugindata, $taglist;
if(is_string($value) && $key != '0'){
$taglist .= '
| '.$key.' | '.aXMLreader_cutstr($value,50).' | ['.$plugindata['shortnicename'].':'.$key.']';
return true;
}
return false;
}
/**
* Puts the data from (multi)array_walk into two global arrays
* Return: true/false & filled global arrays
*/
function aXMLreader_fill_replace_arrays($value, $key){
global $patterns, $replacements, $plugindata;
if(is_string($value) && $key != '0'){
$patterns[] = '['.$plugindata['shortnicename'].':'.$key.']';
$replacements[] = $value;
return true;
}
return false;
}
// Back end plugin code
/**
* Write the admin link in the Settings menu
* Return: -
*/
function aXMLreader_AdminMenu(){
global $plugindata;
add_options_page($plugindata['fullname'], $plugindata['shortname'], 9, $plugindata['nicename'], 'aXMLreader_AdminPage');
add_action('admin_init', 'register_aXMLreader_settings');
}
/**
* Register allowed settings fields
*/
function register_aXMLreader_settings() {
global $plugindata;
register_setting($plugindata['nicename'], $plugindata['nicename'].'_feed');
}
/**
* Show the admin page to manage feeds
* Return: - (echo is used)
*/
function aXMLreader_AdminPage(){
global $plugindata, $taglist;
echo '
'.$plugindata['fullname'].' '.__('Options', 'advanced-xml-reader').'
';
if($feed = get_option($plugindata['nicename'].'_feed')){
$curl = new CURL();
$curl->enableCache();
$data = $curl->get($feed);
$xml = new SimpleXmlElement($data, LIBXML_NOCDATA);
aXMLreader_multiarray_walk($xml, 'aXMLreader_show_data');
echo '
| '.__('XML tag', 'advanced-xml-reader').' | '.__('Value', 'advanced-xml-reader').' | '.__('How to use in a post', 'advanced-xml-reader').' |
'.$taglist.'
';
}
}
//Front end plugin code
/**
* Replaces the tags used in posts in real values
* Return: $text (string)
*/
function aXMLreader_ParseTags($text){
global $plugindata, $patterns, $replacements;
if($feed = get_option($plugindata['nicename'].'_feed')){
$curl = new CURL();
$curl->enableCache();
$data = $curl->get($feed);
$xml = new SimpleXmlElement($data, LIBXML_NOCDATA);
aXMLreader_multiarray_walk($xml,'aXMLreader_fill_replace_arrays');
$text = str_replace($patterns, $replacements, $text);
}
return $text;
}
?> |