Extension:WordpressTeaser
![]() | This extension stores its source code on a wiki page. Please be aware that this code may be unreviewed or maliciously altered. They may contain security holes, outdated interfaces that are no longer compatible etc. Note: No localisation updates are provided for this extension by translatewiki.net . |
![]() | This extension is currently not actively maintained! Although it may still work, any bug reports or feature requests will more than likely be ignored. |
![]() Release status: unmaintained |
|
---|---|
Implementation | Tag |
Description | This extension allows you to insert teaser (first paragraphs) from your Wordpress blog into a MediaWiki page. |
Author(s) | Claus van Beek (ClausVB~mediawikiwikitalk) |
Latest version | 0.9 (2009-11-20) |
MediaWiki | |
License | GPL (latest version) |
Download | #Code |
Detailed description[edit]
This extension allows you to insert teaser (first paragraphs) from your Wordpress blog into a MediaWiki page. PHP5 and "mysqli" (see MySQL improved extension) are required. Work in progress ...
Installation[edit]
Afterwards continue with your MySQL settings.
MySQL and other settings[edit]
Your Wordpress installation should contain a file like
wp-config.php
with all your MySQL settings. Please copy your values to "wordpress.php".
// MySQL settings
define('WORDPRESS_HOST', 'localhost');
define('WORDPRESS_USER', 'mysql_user');
define('WORDPRESS_PASSWORD', 'mysql_password');
define('WORDPRESS_DATABASE', 'wordpress_mysql_database');
define('WORDPRESS_PREFIX', 'wordpress_');
Get help[edit]
First of all you can use
<wordpress>help</wordpress>
to get help. This will display all albums and all pictures, which are stored in your Wordpress database.
If you have further questions, please post them here (discussion).
Usage[edit]
To get help and general informations about your wordpress, please use
<wordpress>help</wordpress>
Work in progress ...
Code[edit]
I tried to comment my code. If you have any questions or need more comments on a special line, please let me know.
<?php
// MySQL settings
define('WORDPRESS_HOST', 'localhost');
define('WORDPRESS_USER', 'mysql_user');
define('WORDPRESS_PASSWORD', 'mysql_password');
define('WORDPRESS_DATABASE', 'wordpress_mysql_database');
define('WORDPRESS_PREFIX', 'wordpress_');
// Other settings
define('WORDPRESS_URI', 'http://your-domain.tld/wordpress/'); // trailing "/" is IMPORTANT
define('STRFTIME_LC_ALL', 'german');
define('STRFTIME_SETTINGS', '%A, %d. %B %Y (%H:%M:%S)'); // '%A, %B %d, %Y (%H:%M:%S)'
$wgExtensionFunctions[] = 'wordpress';
function wordpress()
{
global $wgParser;
$wgParser->setHook('wordpress', 'process_wordpress');
}
function process_wordpress($input, $args, $parser)
{
$db = new mysqli(WORDPRESS_HOST, WORDPRESS_USER, WORDPRESS_PASSWORD, WORDPRESS_DATABASE);
// If MySQL cannot be connected, do nothing and exit function
if (mysqli_connect_errno())
{
return '<h2>MySQL settings are wrong</h2> <p><strong>Error: "' . mysqli_connect_error() . '"</strong>. Please open</p> <pre>' . __FILE__ . '</pre> <p>and check WORDPRESS_HOST, WORDPRESS_USER, WORDPRESS_PASSWORD, WORDPRESS_DATABASE and WORDPRESS_PREFIX, please.</p>';
}
// SET all encodings from an to RDBMS to UTF-8
$db->query('SET character_set_results = utf8');
$db->query('SET character_set_client = utf8');
setlocale(LC_ALL, STRFTIME_LC_ALL);
/**
* help, e.g. <wordpress>help</wordpress>
**/
if ($input == 'help')
{
// Select basic stats
$select_stats = 'SELECT COUNT(*) AS how_many_posts, SUM(comment_count) AS sum_of_all_comments FROM ' . WORDPRESS_PREFIX . 'posts WHERE post_status = "publish"';
$result_stats = $db->query($select_stats)
or die('ERROR MySQL: ' . $db->error . '<pre>' . $select_stats . '</pre>');
$row_stats = $result_stats->fetch_assoc();
// Select date of last post and last comment
$select_last_date = 'SELECT MAX(post_date) AS last_post_date, MAX(comment_date) AS last_comment_date FROM ' . WORDPRESS_PREFIX . 'posts, ' . WORDPRESS_PREFIX . 'comments WHERE post_status = "publish" AND comment_approved = 1';
$result_last_date = $db->query($select_last_date)
or die('ERROR MySQL: ' . $db->error . '<pre>' . $select_last_date . '</pre>');
$row_last_date = $result_last_date->fetch_assoc();
// Select wordpress settings
$select_settings = 'SELECT option_value FROM ' . WORDPRESS_PREFIX . 'options
WHERE option_name = "home" OR option_name = "permalink_structure"';
$result_settings = $db->query($select_settings)
or die('ERROR MySQL: ' . $db->error . '<pre>' . $select_settings . '</pre>');
$row_settings = $result_settings->fetch_assoc();
$wordpress_home = $row_settings['option_value'] . '/';
$row_settings = $result_settings->fetch_assoc();
$wordpress_permalink_structure = $row_settings['option_value'];
// Introduction and help text
$output = '<h2><wordpress>help</wordpress></h2> <p>This help will try to teach a few basics about this extension. WordPress stores data in a MySQL database. To access this data you will have to provide a few things like user and password. Take a look at</p> <pre>' . __FILE__ . '</pre> <p>and change it to your needs.</p> <h2>Your WordPress statistics and settings</h2>';
$output .= '<ul>' . "\n";
$output .= ' <li><strong>Sum of all posts</strong>: ' . $row_stats['how_many_posts'] . '</li>' . "\n";
$output .= ' <li><strong>Sum of all comments</strong>: ' . $row_stats['sum_of_all_comments'] . '</li>' . "\n";
$output .= ' <li><strong>Last post</strong>: '
. strftime(STRFTIME_SETTINGS, strtotime($row_last_date['last_post_date']))
. '</li>' . "\n";
$output .= ' <li><strong>Last comment</strong>: '
. strftime(STRFTIME_SETTINGS, strtotime($row_last_date['last_comment_date']))
. '</li>' . "\n";
$output .= ' <li><strong>Settings "home"</strong>: ' . $wordpress_home . '</li>' . "\n";
$output .= ' <li><strong>Settings "permalink_structure"</strong>: ' . $wordpress_permalink_structure . '</li>' . "\n";
$output .= '</ul>' . "\n";
if (WORDPRESS_URI == $wordpress_home)
{
$check_uri_text = 'Constat "WORDPRESS_URI" is equal to "$wordpress_home"';
$color = 'green';
}
else
{
$check_uri_text = 'Constat "WORDPRESS_URI" is NOT equal to "$wordpress_home"';
$color = 'red';
}
$output .= '<p style="color: ' . $color . '">' . $check_uri_text . '</p>' . "\n";
return $output;
}
else
{
// Select date of last post and last comment
$select_posts = 'SELECT post_name, post_title, LEFT(post_content, 500) AS content, post_date, comment_count
FROM ' . WORDPRESS_PREFIX . 'posts WHERE post_status = "publish" and ID != 2
ORDER BY post_date DESC';
$result_posts = $db->query($select_posts)
or die('ERROR MySQL: ' . $db->error . '<pre>' . $select_posts . '</pre>');
while ($row_posts = $result_posts->fetch_assoc())
{
$comments = ($row_posts['comment_count'] == 0)
? 'Kommentare: 0'
: '<a href="' . WORDPRESS_URI . $row_posts['post_name'] . '.htm#comments" target="_blank">Kommentare: ' . $row_posts['comment_count'] . '</a>';
$date_and_time = strftime(STRFTIME_SETTINGS, strtotime($row_posts['post_date']));
$output .= '<fieldset>' . "\n";
$output .= '<legend>' . $row_posts['post_title'] . '</legend>' . "\n";
$output .= $row_posts['content'] . "\n";
$output .= '<p style="font-size: 90%;">erstellt am ' . $date_and_time . ' · <a href="' . WORDPRESS_URI . $row_posts['post_name'] . '.htm" target="_blank">Zum Blog</a> · ' . $comments . '</p>' . "\n";
$output .= '</fieldset>' . "\n";
}
return $output;
}
$db->close();
}
?>
Screenshots[edit]
Work in progress ...