'Title:', 'type'=>'text', 'default'=>'');
$addTwitterOptions['widget_fields']['username'] = array('label'=>'User Name:', 'type'=>'text', 'default'=>'');
$addTwitterOptions['widget_fields']['num'] = array('label'=>'Count:', 'type'=>'text', 'default'=>'5');
$addTwitterOptions['widget_fields']['update'] = array('label'=>'Show date/time:', 'type'=>'checkbox', 'default'=>true);
$addTwitterOptions['widget_fields']['linked'] = array('label'=>'Link to Twitter:', 'type'=>'checkbox', 'default'=>false);
$addTwitterOptions['widget_fields']['hyperlinks'] = array('label'=>'Show Links:', 'type'=>'checkbox', 'default'=>true);
$addTwitterOptions['widget_fields']['twitter_users'] = array('label'=>'Discover @replies:', 'type'=>'checkbox', 'default'=>true);
$addTwitterOptions['prefix'] = 'add-twitter';
$add_twitter_count = 5;
$add_twitter_show_updates = 1;
$add_twitter_show_links = 0;
$add_twitter_link_to_twitter = 0;
$add_twitter_show_users = 0;
function addTwitterMessages($username = '')
{
global $addTwitterOptions;
global $add_twitter_count;
global $add_twitter_show_updates;
global $add_twitter_link_to_twitter;
global $add_twitter_show_users;
global $add_twitter_show_links;
include_once(ABSPATH . WPINC . '/rss.php');
$messages = fetch_rss("http://www.twitter.com/statuses/user_timeline/$username.rss");
echo '
';
}
function addTwitterHyperlinks($text)
{
$text = preg_replace("/\b([a-zA-Z]+:\/\/[a-z][a-z0-9\_\.\-]*[a-z]{2,6}[a-zA-Z0-9\/\*\-\?\&\%]*)\b/i","", $text);
$text = preg_replace("/\b(www\.[a-z][a-z0-9\_\.\-]*[a-z]{2,6}[a-zA-Z0-9\/\*\-\?\&\%]*)\b/i","", $text);
$text = preg_replace("/\b([a-zA-Z][a-zA-Z0-9\_\.\-]*[a-zA-Z]*\@[a-zA-Z][a-zA-Z0-9\_\.\-]*[a-zA-Z]{2,6})\b/i","", $text);
$text = preg_replace('/([\.|\,|\:|\>|\{|\(]?)#{1}(\w*)([\.|\,|\:|\!|\?|\>|\}|\)]?)\s/i', "$1$3 ", $text);
return $text;
}
function addTwitterUsers($text)
{
$text = preg_replace('/([\.|\,|\:|\>|\{|\(]?)@{1}(\w*)([\.|\,|\:|\!|\?|\>|\}|\)]?)\s/i', "$1$3 ", $text);
return $text;
}
function widgetAddTwitterInit()
{
if(! function_exists('register_sidebar_widget')) {
return;
}
$check_options = get_option('widgetAddTwitter');
if($check_options['number'] == '') {
$check_options['number'] = 1;
update_option('widgetAddTwitter', $check_options);
}
function widgetAddTwitter($args, $number = 1)
{
global $addTwitterOptions;
global $add_twitter_count;
global $add_twitter_show_updates;
global $add_twitter_link_to_twitter;
global $add_twitter_show_users;
global $add_twitter_show_links;
// $args is an array of strings that help widgets to conform to
// the active theme: before_widget, before_title, after_widget,
// and after_title are the array keys. Default tags: li and h2.
extract($args);
// Each widget can store its own options. We keep strings here.
include_once(ABSPATH . WPINC . '/rss.php');
$options = get_option('widgetAddTwitter');
// fill options with default values if value is not set
$item = $options[$number];
foreach($addTwitterOptions['widget_fields'] as $key => $field) {
if (! isset($item[$key])) {
$item[$key] = $field['default'];
}
}
$messages = fetch_rss('http://twitter.com/statuses/user_timeline/' . $item['username'] . '.rss');
echo $before_widget . $before_title . '' . $after_title;
$add_twitter_count = $item['num'];
$add_twitter_show_updates = $item['update'];
$add_twitter_link_to_twitter = $item['linked'];
$add_twitter_show_links = $item['hyperlinks'];
$add_twitter_show_users = $item['twitter_users'];
addTwitterMessages($item['username']);
echo $after_widget;
}
function widgetAddTwitterControl($number)
{
global $addTwitterOptions;
$options = get_option('widgetAddTwitter');
if(isset($_POST['twitter-submit'])) {
foreach($addTwitterOptions['widget_fields'] as $key => $field) {
$options[$number][$key] = $field['default'];
$fieldName = sprintf(
'%s_%s_%s',
$addTwitterOptions['prefix'],
$key,
$number
);
if($field['type'] == 'text') {
$options[$number][$key] = strip_tags(
stripslashes($_POST[$fieldName])
);
} elseif($field['type'] == 'checkbox') {
$options[$number][$key] = isset($_POST[$fieldName]);
}
}
update_option('widgetAddTwitter', $options);
}
foreach($addTwitterOptions['widget_fields'] as $key => $field) {
$fieldName = sprintf(
'%s_%s_%s',
$addTwitterOptions['prefix'],
$key,
$number
);
$fieldChecked = '';
if($field['type'] == 'text') {
$fieldValue = htmlspecialchars(
$options[$number][$key],
ENT_QUOTES
);
} elseif($field['type'] == 'checkbox') {
$fieldValue = 1;
if(! empty($options[$number][$key])) {
$fieldChecked = 'checked="checked"';
}
}
printf('',
$fieldName,
__($field['label']),
$fieldName,
$fieldName,
$field['type'],
$fieldValue,
$field['type'],
$fieldChecked
);
}
echo '';
}
function widgetAddTwitterSetup()
{
$options = $newoptions = get_option('widgetAddTwitter');
if(isset($_POST['twitter-number-submit'])) {
$number = (int)$_POST['twitter-number'];
$newoptions['number'] = $number;
}
if($options != $newoptions) {
update_option('widgetAddTwitter', $newoptions);
widgetTwitterRegister();
}
}
function widgetTwitterPage()
{
$options = $newoptions = get_option('widgetAddTwitter');
echo '';
}
function widgetTwitterRegister()
{
$options = get_option('widgetAddTwitter');
$dims = array('width' => 225, 'height' => 300);
$class = array('classname' => 'widgetAddTwitter');
for($i = 1; $i <= 7; $i++) {
$name = sprintf(__('Twitter #%d'), $i);
$id = "twitter-$i";
wp_register_sidebar_widget(
$id,
$name,
$i <= $options['number']
? 'widgetAddTwitter'
: '',
$class,
$i
);
wp_register_widget_control(
$id,
$name,
$i <= $options['number']
? 'widgetAddTwitterControl'
: '',
$dims,
$i
);
}
add_action('sidebar_admin_setup', 'widgetAddTwitterSetup');
add_action('sidebar_admin_page', 'widgetAddTwitterPage');
}
widgetTwitterRegister();
}
// Run our code later in case this loads prior to any required plugins.
add_action('widgets_init', 'widgetAddTwitterInit');
?>