/*
Plugin Name: LIci WP
Plugin URI: http://www.lici.ru/
Description: Плагин кросс-постинга сообщений в сервис блогов LiveInternet
Version: 0.4.1
Author: LIci team [ Alexander Timofeev, Vlad Jdanov ]
Author URI: http://www.reactant.ru/project
*/
/* Copyright 2009 Alexander Timofeev (email : atimofeev@reactant.ru)
Creative Commons Attribution-Noncommercial-No Derivative Works 3.0
http://creativecommons.org/licenses/by-nc-nd/3.0/
You are free:
to Share — to copy, distribute and transmit the work
Under the following conditions:
Attribution. You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work).
Noncommercial. You may not use this work for commercial purposes.
No Derivative Works. You may not alter, transform, or build upon this work.
For any reuse or distribution, you must make clear to others the license terms of this work. The best way to do this is with a link to this web page.
Any of the above conditions can be waived if you get permission from the copyright holder.
Nothing in this license impairs or restricts the author's moral rights.
Лицензия «С указанием авторства — Некоммерческая — Без производных»
Эта лицензия позволяет копировать, распространять и делиться с другими до тех пор, пока упоминается авторство и сохраняется ссылка на www.lici.ru
Эта лицензия не разрешает ни под каким видом вносить изменения в код продукта или использовать его в коммерческих целях.
*/
/* Активация
----------------------------------------------- */
session_start();
add_action('activate_lici-wp/lici-wp.php', 'lici_wp_install');
add_action('admin_menu', 'lici_wp_addmenu');
ob_start();
bloginfo('charset');
$blog_char = ob_get_clean();
$version = '0.4.1';
/* Функции
----------------------------------------------- */
/* -----------[ Вытаскиваем из фоафа разные данные ]----------- */
function lici_wp_getfoaf ($type,$username)
{
// Проверка на наличие XSLT процессора
if (class_exists('XSLTProcessor'))
{
$username = str_replace(" ","_",$username);
$username = iconv($blog_char, 'Windows-1251', $username);
$xmlDoc = new DOMDocument();
$xmlDoc->load("http://www.liveinternet.ru/lici_foaf.php?nick=".$username."");
/* - Тип разбора документа - */
if ($type=="weblog")
{
$xslDoc = new DOMDocument();
$xslDoc->loadXML('
');
}
if ($type=="avatar")
{
$xslDoc = new DOMDocument();
$xslDoc->loadXML('
');
}
$proc = new XSLTProcessor();
$proc->importStylesheet($xslDoc);
return $proc->transformToXML($xmlDoc);
}
else
{
return '';
}
}
function lici_wp_install() {
global $wpdb;
$options_table = $wpdb->prefix . "lici_options";
$posts_table = $wpdb->prefix . "lici_posts";
if($wpdb->get_var("show tables like '$options_table'") != $options_table){
require_once(ABSPATH . 'wp-admin/upgrade-functions.php');
$sql = "CREATE TABLE ".$options_table." (
`id` int(10) NOT NULL AUTO_INCREMENT,
`login` VARCHAR(254) NOT NULL,
`pass` VARCHAR(254) NOT NULL,
`jid` int(10) NOT NULL,
`whereiam` VARCHAR(254) NOT NULL,
`mood` VARCHAR(254) NOT NULL,
`listening` VARCHAR(254) NOT NULL,
`comments` enum('yes','no') NOT NULL default 'yes',
`closerec` enum('yes','no') NOT NULL default 'no',
`includecomm` enum('yes','no') NOT NULL default 'yes',
`fontsize` int(10) NOT NULL,
`fontcolor` VARCHAR(254) NOT NULL,
`font` VARCHAR(254) NOT NULL,
`autocheck` enum('yes','no') NOT NULL default 'no',
`original` enum('yes','no') NOT NULL default 'yes',
`onlymore` enum('yes','no') NOT NULL default 'yes',
PRIMARY KEY (`id`)
);";
dbDelta($sql);
$sql = "CREATE TABLE ".$posts_table." (
`id` int(10) NOT NULL AUTO_INCREMENT,
`pid` int(10) NOT NULL,
PRIMARY KEY (`id`)
);";
dbDelta($sql);
$sql = "INSERT INTO $options_table VALUES('1','login','pass','0','In da city','Good','Radio','yes','no','yes',10,'000000','vera.ttf', 'no','yes');";
$results = $wpdb->query( $sql );
add_option("lici-default","1");
} else {
if($wpdb->get_var("show tables like '$posts_table'") != $posts_table){
$sql = "CREATE TABLE ".$posts_table." (`id` int(10) NOT NULL AUTO_INCREMENT,`pid` int(10) NOT NULL, PRIMARY KEY (`id`));";
$wpdb->query($sql);
}
if (!get_option("lici-default")) {
$lici_def = $wpdb->get_var("SELECT `id` FROM `$options_table` ORDER BY `id` ASC;");
add_option("lici-default",$lici_def);
}
$logins = $wpdb->get_results("SELECT * FROM $options_table ");
$wpdb->query("DROP TABLE $options_table");
$sql = "CREATE TABLE ".$options_table." (
`id` int(10) NOT NULL AUTO_INCREMENT,
`login` VARCHAR(254) NOT NULL,
`pass` VARCHAR(254) NOT NULL,
`jid` int(10) NOT NULL,
`whereiam` VARCHAR(254) NOT NULL,
`mood` VARCHAR(254) NOT NULL,
`listening` VARCHAR(254) NOT NULL,
`comments` enum('yes','no') NOT NULL default 'yes',
`closerec` enum('yes','no') NOT NULL default 'no',
`includecomm` enum('yes','no') NOT NULL default 'yes',
`fontsize` int(10) NOT NULL,
`fontcolor` VARCHAR(254) NOT NULL,
`font` VARCHAR(254) NOT NULL,
`autocheck` enum('yes','no') NOT NULL default 'no',
`original` enum('yes','no') NOT NULL default 'yes',
`onlymore` enum('yes','no') NOT NULL default 'yes',
PRIMARY KEY (`id`)
);";
$wpdb->query($sql);
foreach($logins as $l) {
$sql = "INSERT INTO $options_table VALUES(
'$l->id',
'$l->login',
'$l->pass',
'$l->jid',
'$l->whereiam',
'$l->mood',
'$l->listening',
'$l->comments',
'$l->closerec'";
if (isset($l->includecomm)) { $sql .= ",'$l->includecomm'"; } else { $sql .= ",'yes'";}
if (isset($l->fontsize)) { $sql .= ",'$l->fontsize'"; } else { $sql .= ",'10'";}
if (isset($l->fontcolor)) { $sql .= ",'$l->fontcolor'"; } else { $sql .= ",'000000'";}
if (isset($l->font)) { $sql .= ",'$l->font'"; } else { $sql .= ",'vera.ttf'";}
if (isset($l->autocheck)) { $sql .= ",'$l->autocheck'"; } else { $sql .= ",'no'";}
if (isset($l->original)) { $sql .= ",'$l->original'"; } else { $sql .= ",'yes'";}
if (isset($l->onlymore)) { $sql .= ",'$l->onlymore'"; } else { $sql .= ",'yes'";}
$sql .=");";
$wpdb->query($sql);
}
}
}
function lici_wp_addmenu() { // add menu item to admin panel
add_options_page('LIci WP', 'LIci WP', 3, __FILE__, 'lici_wp_options');
}
function lici_wp_options() {
global $wpdb;
$options_table = $wpdb->prefix."lici_options";
if (isset($_GET['confirm'])) {
if ($_GET['confirm'] === 'del') {
print '
';
// begin
$logins = $wpdb->get_results("SELECT * FROM $options_table ORDER BY `id`;");
foreach($logins as $login) {
$sel = ($login->autocheck === "yes")? " checked='checked'" : "";
print "";
}
// end
print "
Опции журнала
";
// begin
$logins = $wpdb->get_results("SELECT * FROM $options_table ORDER BY `id`;");
print "
";
$show = true;
foreach ($logins as $login) {
if ($show) { print "
"; $show = !$show; } else {
print "
";
}
print "
";
print "
";
print "
";
}
// end
echo '
';
?>
}
function lici_wp_admin_head() {
?>
}
add_action("publish_post","lici_wp_send");
function lici_wp_send($pid) {
global $wpdb;
$options_table = $wpdb->prefix."lici_options";
$posts_table = $wpdb->prefix . "lici_posts";
$logins = $wpdb->get_results("SELECT * FROM $options_table ORDER BY `id`;");
$added = false;
$is_save = $wpdb->get_row("SELECT * FROM $posts_table WHERE `pid`='$pid' LIMIT 1");
if(!$is_save){
foreach($logins as $login) {
$id = $login->id;
if (isset($_POST['lici-'.$id])) {
$added = true;
$post = get_post($pid);
$cr = (isset($_POST['lici-'.$login->id.'-closerec']))?"yes":"no";
$co = (isset($_POST['lici-'.$login->id.'-comments']))?"yes":"no";
$original = (isset($_POST['lici-'.$login->id.'-original']))?"yes":"no";
$onlymore = (isset($_POST['lici-'.$login->id.'-onlymore']))?"yes":"no";
$errors = lici_send_data($post, $login, $_POST['lici-'.$login->id.'-whereiam'], $_POST['lici-'.$login->id.'-mood'], $_POST['lici-'.$login->id.'-listening'], $cr, $co, $original, $onlymore);
}
}
}
return $pid;
}
add_action("admin_notices","lici_wp_notices");
function lici_wp_notices() {
if ((isset($_SESSION['wplicierror'])) && ($_SESSION['wplicierror'] !== "")) {
print '
");
}
//if post has a more cut then display only text before more
if($onlymore === 'yes') {
if(preg_match('//', $messagepost, $matches))
{
$content = explode($matches[0], $messagepost, 2);
if ( !empty($matches[1]) )
$more_link_text = strip_tags(wp_kses_no_null(trim($matches[1])));
if (empty($more_link_text))
{
if($original === "no")
{
$xml.= htmlspecialchars($content[0]);
$xml.= htmlspecialchars('