Кросспостинг в livejournal — различия между версиями
Davidov (обсуждение | вклад) (Новая страница: «Поставим задачу автоматически размещать анонсы новостей в livejournal.com и решим её следующим о…») |
Mad grant (обсуждение | вклад) |
||
(не показаны 2 промежуточные версии 1 участника) | |||
Строка 82: | Строка 82: | ||
В типе данных "Новость" добавляем поле типа "Кнопка-флажок" с идентификатором lj. Осталось только добавить запись о функции в ~/classes/modules/news/permissions.custom.php и можно использовать описанное решение. | В типе данных "Новость" добавляем поле типа "Кнопка-флажок" с идентификатором lj. Осталось только добавить запись о функции в ~/classes/modules/news/permissions.custom.php и можно использовать описанное решение. | ||
− | [[Категория:Модуль Новости]] | + | <p> |
+ | Данный функционал был проверен на работоспособность в версии системы 2.8.5.2. | ||
+ | </p> | ||
+ | [[Категория:Модуль Новости]][[Категория:Написание кастомных макросов]][[Категория:Сторонние сервисы и программы]] |
Текущая версия на 09:31, 5 июня 2013
Поставим задачу автоматически размещать анонсы новостей в livejournal.com и решим её следующим образом: Напишем кастомную функцию, которая будет производить автоматическое размещение сообщения в twitter при добавлении новости. Для этого в файле ~/classes/modules/news/custom_events.php разместим вызов нашей будущей функции по событию systemCreateElement:
<?php
new umiEventListener('systemCreateElement', 'news', 'lj_post');
?>
После этого, нужно скачать архив. Распаковываем Помещаем файлы class-IXR.php и lj_class.php в директорию ~/classes/modules/news/lj/ В файле ~/classes/modules/news/__custom_adm.php после строки //TODO: Write here your own macroses (admin mode) пишем следующий код:
<?php
public function lj_post(iUmiEventPoint $oEventPoint){
if ($oEventPoint->getMode() === "after"){
$object = $oEventPoint->getRef("element");
if($object->getValue('lj')==1){
$id=$object->id;
$title=$object->getValue('h1');
$anons=$object->getValue('anons');
$hierarchy = umiHierarchy::getInstance();
$page=$hierarchy->getElement($id);
$url=$hierarchy->getPathById($id);
$domainId=$page->getDomainId();
$collection = domainsCollection::getInstance();
$domain= $collection->getDomain($domainId);
$host=$domain->getHost();
$url='http://'.$host.$url;
require_once 'lj/class-IXR.php';
include_once 'lj/lj_class.php';
mt_srand ((float) microtime()*1000000);
$journalUser = 'пользователь';
$journalPass = 'пароль';
$journalServer = 'www.livejournal.com';
$journalComm = '';
$cat_string = '';
$pic_keys = '';
$location = '';
$mood = '';
$music = '';
$the_title = $title;
$the_event = $anons.'<br /><a href="'.$url.'">Читать полностью</a>';
$date = date ('U');
$jdata = array();
$jdata['subject'] = $the_title;
$jdata['event'] = $the_event;
$jdata['year'] = date ('Y',$date);
$jdata['mon'] = date ('n',$date);
$jdata['day'] = date ('j',$date);
$jdata['hour'] = date ('G',$date);
$jdata['min'] = date ('i',$date);
$jdata['security'] = 'public';
$jdata['allowmask'] = 0;
$jdata['itemid'] = '';
$jmeta = array ();
$jmeta['opt_nocomments'] = 0;
$jmeta['opt_backdated'] = 0;
$jmeta['opt_preformatted'] = true;
$jmeta['picture_keyword'] = stripslashes ($pic_keys);
$jmeta['taglist'] = stripslashes ($cat_string);
$jmeta['current_location'] = stripslashes ($location);
$jmeta['current_mood'] = stripslashes ($mood);
$jmeta['current_music'] = stripslashes ($music);
$ljc = new LJClient ($journalUser, md5($journalPass), $journalServer, $journalComm);
$r = $ljc->login();
if ($r[0] !== TRUE)
{
unset ($ljc);
}
$r = $ljc->postevent ($jdata, $jmeta);
unset ($ljc);
}
return true;
}
}
?>
В типе данных "Новость" добавляем поле типа "Кнопка-флажок" с идентификатором lj. Осталось только добавить запись о функции в ~/classes/modules/news/permissions.custom.php и можно использовать описанное решение.
Данный функционал был проверен на работоспособность в версии системы 2.8.5.2.