本文整理汇总了PHP中bb2diaspora函数的典型用法代码示例。如果您正苦于以下问题:PHP bb2diaspora函数的具体用法?PHP bb2diaspora怎么用?PHP bb2diaspora使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了bb2diaspora函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: p_init
function p_init($a)
{
if ($a->argc != 2) {
header($_SERVER["SERVER_PROTOCOL"] . ' 510 ' . t('Not Extended'));
killme();
}
$guid = $a->argv[1];
if (strtolower(substr($guid, -4)) != ".xml") {
header($_SERVER["SERVER_PROTOCOL"] . ' 404 ' . t('Not Found'));
killme();
}
$guid = strtolower(substr($guid, 0, -4));
$item = q("SELECT `body`, `guid`, `contact-id`, `private`, `created`, `app` FROM `item` WHERE `uid` = 0 AND `guid` = '%s' AND `network` IN ('%s', '%s') LIMIT 1", dbesc($guid), NETWORK_DFRN, NETWORK_DIASPORA);
if (!$item) {
header($_SERVER["SERVER_PROTOCOL"] . ' 404 ' . t('Not Found'));
killme();
}
$post = array();
$reshared = diaspora_is_reshare($item[0]["body"]);
if ($reshared) {
$nodename = "reshare";
$post["root_diaspora_id"] = $reshared["root_handle"];
$post["root_guid"] = $reshared["root_guid"];
$post["guid"] = $item[0]["guid"];
$post["diaspora_handle"] = diaspora_handle_from_contact($item[0]["contact-id"]);
$post["public"] = !$item[0]["private"] ? 'true' : 'false';
$post["created_at"] = datetime_convert('UTC', 'UTC', $item[0]["created"]);
} else {
$nodename = "status_message";
$post["raw_message"] = str_replace("&", "&", bb2diaspora($item[0]["body"]));
$post["guid"] = $item[0]["guid"];
$post["diaspora_handle"] = diaspora_handle_from_contact($item[0]["contact-id"]);
$post["public"] = !$item[0]["private"] ? 'true' : 'false';
$post["created_at"] = datetime_convert('UTC', 'UTC', $item[0]["created"]);
$post["provider_display_name"] = $item[0]["app"];
}
$dom = new DOMDocument("1.0");
$root = $dom->createElement("XML");
$dom->appendChild($root);
$postelement = $dom->createElement("post");
$root->appendChild($postelement);
$statuselement = $dom->createElement($nodename);
$postelement->appendChild($statuselement);
foreach ($post as $index => $value) {
$postnode = $dom->createElement($index, $value);
$statuselement->appendChild($postnode);
}
header("Content-Type: application/xml; charset=utf-8");
$xml = $dom->saveXML();
// Diaspora doesn't send the XML header, so we remove them as well.
// So we avoid possible compatibility problems.
if (substr($xml, 0, 21) == '<?xml version="1.0"?>') {
$xml = trim(substr($xml, 21));
}
echo $xml;
killme();
}
示例2: babel_content
function babel_content(&$a)
{
$o .= '<h1>Babel Diagnostic</h1>';
$o .= '<form action="babel" method="post">';
$o .= t('Source (bbcode) text:') . EOL . '<textarea name="text" >' . htmlspecialchars($_REQUEST['text']) . '</textarea>' . EOL;
$o .= '<input type="submit" name="submit" value="Submit" /></form>';
$o .= '<br /><br />';
$o .= '<form action="babel" method="post">';
$o .= t('Source (Diaspora) text to convert to BBcode:') . EOL . '<textarea name="d2bbtext" >' . htmlspecialchars($_REQUEST['d2bbtext']) . '</textarea>' . EOL;
$o .= '<input type="submit" name="submit" value="Submit" /></form>';
$o .= '<br /><br />';
if (x($_REQUEST, 'text')) {
$text = trim($_REQUEST['text']);
$o .= "<h2>" . t("Source input: ") . "</h2>" . EOL . EOL;
$o .= visible_lf($text) . EOL . EOL;
$html = bbcode($text);
$o .= "<h2>" . t("bb2html (raw HTML): ") . "</h2>" . EOL . EOL;
$o .= htmlspecialchars($html) . EOL . EOL;
//$html = bbcode($text);
$o .= "<h2>" . t("bb2html: ") . "</h2>" . EOL . EOL;
$o .= $html . EOL . EOL;
$bbcode = html2bbcode($html);
$o .= "<h2>" . t("bb2html2bb: ") . "</h2>" . EOL . EOL;
$o .= visible_lf($bbcode) . EOL . EOL;
$diaspora = bb2diaspora($text);
$o .= "<h2>" . t("bb2md: ") . "</h2>" . EOL . EOL;
$o .= visible_lf($diaspora) . EOL . EOL;
$html = Markdown($diaspora);
$o .= "<h2>" . t("bb2md2html: ") . "</h2>" . EOL . EOL;
$o .= $html . EOL . EOL;
$bbcode = diaspora2bb($diaspora);
$o .= "<h2>" . t("bb2dia2bb: ") . "</h2>" . EOL . EOL;
$o .= visible_lf($bbcode) . EOL . EOL;
$bbcode = html2bbcode($html);
$o .= "<h2>" . t("bb2md2html2bb: ") . "</h2>" . EOL . EOL;
$o .= visible_lf($bbcode) . EOL . EOL;
}
if (x($_REQUEST, 'd2bbtext')) {
$d2bbtext = trim($_REQUEST['d2bbtext']);
$o .= "<h2>" . t("Source input (Diaspora format): ") . "</h2>" . EOL . EOL;
$o .= visible_lf($d2bbtext) . EOL . EOL;
$bb = diaspora2bb($d2bbtext);
$o .= "<h2>" . t("diaspora2bb: ") . "</h2>" . EOL . EOL;
$o .= visible_lf($bb) . EOL . EOL;
}
return $o;
}
示例3: diaspora_send_mail
function diaspora_send_mail($item, $owner, $contact)
{
$a = get_app();
$myaddr = $owner['nickname'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(), '://') + 3);
$r = q("select * from conv where id = %d and uid = %d limit 1", intval($item['convid']), intval($item['uid']));
if (!count($r)) {
logger('diaspora_send_mail: conversation not found.');
return;
}
$cnv = $r[0];
$conv = array('guid' => xmlify($cnv['guid']), 'subject' => xmlify($cnv['subject']), 'created_at' => xmlify(datetime_convert('UTC', 'UTC', $cnv['created'], 'Y-m-d H:i:s \\U\\T\\C')), 'diaspora_handle' => xmlify($cnv['creator']), 'participant_handles' => xmlify($cnv['recips']));
$body = bb2diaspora($item['body']);
$created = datetime_convert('UTC', 'UTC', $item['created'], 'Y-m-d H:i:s \\U\\T\\C');
$signed_text = $item['guid'] . ';' . $cnv['guid'] . ';' . $body . ';' . $created . ';' . $myaddr . ';' . $cnv['guid'];
$sig = base64_encode(rsa_sign($signed_text, $owner['uprvkey'], 'sha256'));
$msg = array('guid' => xmlify($item['guid']), 'parent_guid' => xmlify($cnv['guid']), 'parent_author_signature' => xmlify($sig), 'author_signature' => xmlify($sig), 'text' => xmlify($body), 'created_at' => xmlify($created), 'diaspora_handle' => xmlify($myaddr), 'conversation_guid' => xmlify($cnv['guid']));
if ($item['reply']) {
$tpl = get_markup_template('diaspora_message.tpl');
$xmsg = replace_macros($tpl, array('$msg' => $msg));
} else {
$conv['messages'] = array($msg);
$tpl = get_markup_template('diaspora_conversation.tpl');
$xmsg = replace_macros($tpl, array('$conv' => $conv));
}
logger('diaspora_conversation: ' . print_r($xmsg, true), LOGGER_DATA);
$slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($xmsg, $owner, $contact, $owner['uprvkey'], $contact['pubkey'], false)));
//$slap = 'xml=' . urlencode(diaspora_msg_build($xmsg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],false));
return diaspora_transmit($owner, $contact, $slap, false);
}
示例4: format_event_diaspora
function format_event_diaspora($ev)
{
$a = get_app();
if (!(is_array($ev) && count($ev))) {
return '';
}
$bd_format = t('l F d, Y \\@ g:i A');
// Friday January 18, 2011 @ 8 AM
$o = 'Friendica event notification:' . "\n";
$o .= '**' . ($ev['summary'] ? bb2diaspora($ev['summary']) : bb2diaspora($ev['desc'])) . '**' . "\n";
$o .= t('Starts:') . ' ' . '[' . ($ev['adjust'] ? day_translate(datetime_convert('UTC', 'UTC', $ev['start'], $bd_format)) : day_translate(datetime_convert('UTC', 'UTC', $ev['start'], $bd_format))) . '](' . $a->get_baseurl() . '/localtime/?f=&time=' . urlencode(datetime_convert('UTC', 'UTC', $ev['start'])) . ")\n";
if (!$ev['nofinish']) {
$o .= t('Finishes:') . ' ' . '[' . ($ev['adjust'] ? day_translate(datetime_convert('UTC', 'UTC', $ev['finish'], $bd_format)) : day_translate(datetime_convert('UTC', 'UTC', $ev['finish'], $bd_format))) . '](' . $a->get_baseurl() . '/localtime/?f=&time=' . urlencode(datetime_convert('UTC', 'UTC', $ev['finish'])) . ")\n";
}
if (strlen($ev['location'])) {
$o .= t('Location:') . bb2diaspora($ev['location']) . "\n";
}
$o .= "\n";
return $o;
}
示例5: store_diaspora_comment_sig
function store_diaspora_comment_sig($datarray, $channel, $parent_item, $post_id)
{
// We won't be able to sign Diaspora comments for authenticated visitors
// - we don't have their private key
// since Diaspora doesn't handle edits we can only do this for the original text and not update it.
$enabled = intval(get_config('system', 'diaspora_enabled'));
if (!$enabled) {
logger('mod_item: diaspora support disabled, not storing comment signature', LOGGER_DEBUG);
return;
}
$body = $datarray['body'];
if (array_key_exists('item_flags', $datarray) && $datarray['item_flags'] & ITEM_OBSCURED) {
$key = get_config('system', 'prvkey');
if ($datarray['body']) {
$body = crypto_unencapsulate(json_decode($datarray['body'], true), $key);
}
}
logger('mod_item: storing diaspora comment signature', LOGGER_DEBUG);
require_once 'include/bb2diaspora.php';
$signed_body = html_entity_decode(bb2diaspora($body));
$diaspora_handle = $channel['channel_address'] . '@' . get_app()->get_hostname();
$signed_text = $datarray['mid'] . ';' . $parent_item['mid'] . ';' . $signed_body . ';' . $diaspora_handle;
if ($uprvkey !== false) {
$authorsig = base64_encode(rsa_sign($signed_text, $channel['channel_prvkey'], 'sha256'));
} else {
$authorsig = '';
}
$x = array('signer' => $diaspora_handle, 'body' => $signed_body, 'signed_text' => $signed_text, 'signature' => base64_encode($authorsig));
$r = q("update item set diaspora_meta = '%s' where id = %d limit 1", dbesc(json_encode($x)), intval($post_id));
$r = q("insert into sign (`iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ", intval($post_id), dbesc($signed_text), dbesc(base64_encode($authorsig)), dbesc($diaspora_handle));
if (!$r) {
logger('store_diaspora_comment_sig: DB write failed');
}
return;
}
示例6: store_diaspora_comment_sig
function store_diaspora_comment_sig($datarray, $author, $uprvkey, $parent_item, $post_id)
{
// We won't be able to sign Diaspora comments for authenticated visitors - we don't have their private key
$enabled = intval(get_config('system', 'diaspora_enabled'));
if (!$enabled) {
logger('mod_item: diaspora support disabled, not storing comment signature', LOGGER_DEBUG);
return;
}
logger('mod_item: storing diaspora comment signature');
require_once 'include/bb2diaspora.php';
$signed_body = html_entity_decode(bb2diaspora($datarray['body']));
// Only works for NETWORK_DFRN
$contact_baseurl_start = strpos($author['url'], '://') + 3;
$contact_baseurl_length = strpos($author['url'], '/profile') - $contact_baseurl_start;
$contact_baseurl = substr($author['url'], $contact_baseurl_start, $contact_baseurl_length);
$diaspora_handle = $author['nick'] . '@' . $contact_baseurl;
$signed_text = $datarray['guid'] . ';' . $parent_item['guid'] . ';' . $signed_body . ';' . $diaspora_handle;
if ($uprvkey !== false) {
$authorsig = base64_encode(rsa_sign($signed_text, $uprvkey, 'sha256'));
} else {
$authorsig = '';
}
q("insert into sign (`iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ", intval($post_id), dbesc($signed_text), dbesc(base64_encode($authorsig)), dbesc($diaspora_handle));
return;
}
示例7: diaspost_send
function diaspost_send(&$a, &$b)
{
$hostname = 'hubzilla ' . '(' . $a->get_hostname() . ')';
logger('diaspost_send: invoked', LOGGER_DEBUG);
if ($b['mid'] != $b['parent_mid']) {
return;
}
if (!is_item_normal($b) || $b['item_private'] || $b['created'] !== $b['edited']) {
return;
}
if (!perm_is_allowed($b['uid'], '', 'view_stream')) {
return;
}
if (!strstr($b['postopts'], 'diaspost')) {
return;
}
logger('diaspost_send: prepare posting', LOGGER_DEBUG);
$diaspost_username = get_pconfig($b['uid'], 'diaspost', 'diaspost_username');
$diaspost_password = z_unobscure(get_pconfig($b['uid'], 'diaspost', 'diaspost_password'));
$diaspost_url = get_pconfig($b['uid'], 'diaspost', 'diaspost_url');
if ($diaspost_url && $diaspost_username && $diaspost_password) {
logger('diaspost_send: all values seem to be okay', LOGGER_DEBUG);
require_once 'include/bb2diaspora.php';
$tag_arr = array();
$tags = '';
$x = preg_match_all('/\\#\\[(.*?)\\](.*?)\\[/', $b['tag'], $matches, PREG_SET_ORDER);
if ($x) {
foreach ($matches as $mtch) {
$tag_arr[] = $mtch[2];
}
}
if (count($tag_arr)) {
$tags = implode(',', $tag_arr);
}
$title = $b['title'];
$body = $b['body'];
// Insert a newline before and after a quote
$body = str_ireplace("[quote", "\n\n[quote", $body);
$body = str_ireplace("[/quote]", "[/quote]\n\n", $body);
// strip bookmark indicators
$body = preg_replace('/\\#\\^\\[([zu])rl/i', '[$1rl', $body);
$body = preg_replace('/\\#\\^http/i', 'http', $body);
if (intval(get_pconfig($item['uid'], 'system', 'prevent_tag_hijacking'))) {
$new_tag = html_entity_decode('⋕', ENT_COMPAT, 'UTF-8');
$new_mention = html_entity_decode('@', ENT_COMPAT, 'UTF-8');
// #-tags
$body = preg_replace('/\\#\\[url/i', $new_tag . '[url', $body);
$body = preg_replace('/\\#\\[zrl/i', $new_tag . '[zrl', $body);
// @-mentions
$body = preg_replace('/\\@\\!?\\[url/i', $new_mention . '[url', $body);
$body = preg_replace('/\\@\\!?\\[zrl/i', $new_mention . '[zrl', $body);
}
// remove multiple newlines
do {
$oldbody = $body;
$body = str_replace("\n\n\n", "\n\n", $body);
} while ($oldbody != $body);
// convert to markdown
$body = bb2diaspora($body, false, true);
// Adding the title
if (strlen($title)) {
$body = "## " . html_entity_decode($title) . "\n\n" . $body;
}
require_once "addon/diaspost/diasphp.php";
try {
logger('diaspost_send: prepare', LOGGER_DEBUG);
$conn = new Diasphp($diaspost_url);
logger('diaspost_send: try to log in ' . $diaspost_username, LOGGER_DEBUG);
$conn->login($diaspost_username, $diaspost_password);
logger('diaspost_send: try to send ' . $body, LOGGER_DEBUG);
//throw new Exception('Test');
$conn->post($body, $hostname);
logger('diaspost_send: success');
} catch (Exception $e) {
logger("diaspost_send: Error submitting the post: " . $e->getMessage());
// logger('diaspost_send: requeueing '.$b['uid'], LOGGER_DEBUG);
// $r = q("SELECT `id` FROM `contact` WHERE `uid` = %d AND `self`", $b['uid']);
// if (count($r))
// $a->contact = $r[0]["id"];
// $s = serialize(array('url' => $url, 'item' => $b['id'], 'post' => $body));
// require_once('include/queue_fn.php');
// add_to_queue($a->contact,NETWORK_DIASPORA2,$s);
// notice(t('Diaspost post failed. Queued for retry.').EOL);
}
}
}
示例8: diaspora_send_mail
function diaspora_send_mail($item, $owner, $contact)
{
$a = get_app();
$myaddr = $owner['channel_address'] . '@' . get_app()->get_hostname();
$r = q("select * from conv where id = %d and uid = %d limit 1", intval($item['convid']), intval($item['channel_id']));
if (!count($r)) {
logger('diaspora_send_mail: conversation not found.');
return;
}
$cnv = $r[0];
$conv = array('guid' => xmlify($cnv['guid']), 'subject' => xmlify($cnv['subject']), 'created_at' => xmlify(datetime_convert('UTC', 'UTC', $cnv['created'], 'Y-m-d H:i:s \\U\\T\\C')), 'diaspora_handle' => xmlify($cnv['creator']), 'participant_handles' => xmlify($cnv['recips']));
if (array_key_exists('mail_flags', $item) && $item['mail_flags'] & MAIL_OBSCURED) {
$key = get_config('system', 'prvkey');
// if($item['title'])
// $item['title'] = crypto_unencapsulate(json_decode_plus($item['title']),$key);
if ($item['body']) {
$item['body'] = crypto_unencapsulate(json_decode_plus($item['body']), $key);
}
}
$body = bb2diaspora($item['body']);
$created = datetime_convert('UTC', 'UTC', $item['created'], 'Y-m-d H:i:s \\U\\T\\C');
$signed_text = $item['mid'] . ';' . $cnv['guid'] . ';' . $body . ';' . $created . ';' . $myaddr . ';' . $cnv['guid'];
$sig = base64_encode(rsa_sign($signed_text, $owner['channel_prvkey'], 'sha256'));
$msg = array('guid' => xmlify($item['mid']), 'parent_guid' => xmlify($cnv['guid']), 'parent_author_signature' => $item['reply'] ? null : xmlify($sig), 'author_signature' => xmlify($sig), 'text' => xmlify($body), 'created_at' => xmlify($created), 'diaspora_handle' => xmlify($myaddr), 'conversation_guid' => xmlify($cnv['guid']));
if ($item['reply']) {
$tpl = get_markup_template('diaspora_message.tpl');
$xmsg = replace_macros($tpl, array('$msg' => $msg));
} else {
$conv['messages'] = array($msg);
$tpl = get_markup_template('diaspora_conversation.tpl');
$xmsg = replace_macros($tpl, array('$conv' => $conv));
}
logger('diaspora_conversation: ' . print_r($xmsg, true), LOGGER_DATA);
$slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($xmsg, $owner, $contact, $owner['channel_prvkey'], $contact['xchan_pubkey'], false)));
return diaspora_transmit($owner, $contact, $slap, false);
}
示例9: diaspora_send_mail
function diaspora_send_mail($item, $owner, $contact)
{
$a = get_app();
$myaddr = $owner['channel_address'] . '@' . App::get_hostname();
$r = q("select * from conv where guid = '%s' and uid = %d limit 1", dbesc($item['conv_guid']), intval($item['channel_id']));
if (!count($r)) {
logger('diaspora_send_mail: conversation not found.');
return;
}
$z = q("select from_xchan from mail where conv_guid = '%s' and channel_id = %d and mid = parent_mid limit 1", dbesc($item['conv_guid']), intval($item['channel_id']));
$conv_owner = $z && $z[0]['from_xchan'] === $owner['channel_hash'] ? true : false;
$cnv = $r[0];
$cnv['subject'] = base64url_decode(str_rot47($cnv['subject']));
$conv = array('guid' => xmlify($cnv['guid']), 'subject' => xmlify($cnv['subject']), 'created_at' => xmlify(datetime_convert('UTC', 'UTC', $cnv['created'], 'Y-m-d H:i:s \\U\\T\\C')), 'diaspora_handle' => xmlify($cnv['creator']), 'participant_handles' => xmlify($cnv['recips']));
if (array_key_exists('mail_obscured', $item) && intval($item['mail_obscured'])) {
if ($item['title']) {
$item['title'] = base64url_decode(str_rot47($item['title']));
}
if ($item['body']) {
$item['body'] = base64url_decode(str_rot47($item['body']));
}
}
// the parent_guid needs to be the conversation guid
$parent_ptr = $cnv['guid'];
$body = bb2diaspora($item['body']);
$created = datetime_convert('UTC', 'UTC', $item['created'], 'Y-m-d H:i:s \\U\\T\\C');
$signed_text = $item['mid'] . ';' . $parent_ptr . ';' . $body . ';' . $created . ';' . $myaddr . ';' . $cnv['guid'];
$sig = base64_encode(rsa_sign($signed_text, $owner['channel_prvkey'], 'sha256'));
$msg = array('guid' => xmlify($item['mid']), 'parent_guid' => xmlify($parent_ptr), 'parent_author_signature' => $conv_owner ? xmlify($sig) : null, 'author_signature' => xmlify($sig), 'text' => xmlify($body), 'created_at' => xmlify($created), 'diaspora_handle' => xmlify($myaddr), 'conversation_guid' => xmlify($cnv['guid']));
if ($item['mail_isreply']) {
$tpl = get_markup_template('diaspora_message.tpl', 'addon/diaspora');
$xmsg = replace_macros($tpl, array('$msg' => $msg));
} else {
$conv['messages'] = array($msg);
$tpl = get_markup_template('diaspora_conversation.tpl', 'addon/diaspora');
$xmsg = replace_macros($tpl, array('$conv' => $conv));
}
logger('diaspora_conversation: ' . print_r($xmsg, true), LOGGER_DATA);
$slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($xmsg, $owner, $contact, $owner['channel_prvkey'], $contact['xchan_pubkey'], false)));
return diaspora_queue($owner, $contact, $slap, false, $item['mid']);
}
示例10: libertree_send
function libertree_send(&$a, &$b)
{
logger('libertree_send: invoked');
if ($b['deleted'] || $b['private'] || $b['created'] !== $b['edited']) {
return;
}
if (!strstr($b['postopts'], 'libertree')) {
return;
}
if ($b['parent'] != $b['id']) {
return;
}
$ltree_api_token = get_pconfig($b['uid'], 'libertree', 'libertree_api_token');
$ltree_url = get_pconfig($b['uid'], 'libertree', 'libertree_url');
$ltree_blog = "{$ltree_url}/api/v1/posts/create/?token={$ltree_api_token}";
if ($ltree_url && $ltree_api_token && $ltree_blog) {
require_once 'include/bb2diaspora.php';
$tag_arr = array();
$tags = '';
$x = preg_match_all('/\\#\\[(.*?)\\](.*?)\\[/', $b['tag'], $matches, PREG_SET_ORDER);
if ($x) {
foreach ($matches as $mtch) {
$tag_arr[] = $mtch[2];
}
}
if (count($tag_arr)) {
$tags = implode(',', $tag_arr);
}
$params = array('text' => bb2diaspora($b['body']));
$result = post_url($ltree_blog, $params);
logger('libertree: ' . $result);
}
}
示例11: libertree_send
function libertree_send(&$a, &$b)
{
if (!is_item_normal($b) || $b['item_private'] || $b['created'] !== $b['edited']) {
return;
}
if (!perm_is_allowed($b['uid'], '', 'view_stream')) {
return;
}
if (!strstr($b['postopts'], 'libertree')) {
return;
}
if ($b['parent'] != $b['id']) {
return;
}
logger('libertree xpost invoked');
$ltree_api_token = get_pconfig($b['uid'], 'libertree', 'libertree_api_token');
$ltree_url = get_pconfig($b['uid'], 'libertree', 'libertree_url');
$ltree_blog = "{$ltree_url}/api/v1/posts/create/?token={$ltree_api_token}";
$ltree_source = "[" . $a->config['system']['sitename'] . "](" . $a->get_baseurl() . ")";
// $ltree_source = "RedMatrix";
logger('sitename: ' . print_r($ltree_source, true));
if ($ltree_url && $ltree_api_token && $ltree_blog && $ltree_source) {
require_once 'include/bb2diaspora.php';
$tag_arr = array();
$tags = '';
$x = preg_match_all('/\\#\\[(.*?)\\](.*?)\\[/', $b['tag'], $matches, PREG_SET_ORDER);
if ($x) {
foreach ($matches as $mtch) {
$tag_arr[] = $mtch[2];
}
}
if (count($tag_arr)) {
$tags = implode(',', $tag_arr);
}
$title = $b['title'];
$body = $b['body'];
// Insert a newline before and after a quote
$body = str_ireplace("[quote", "\n\n[quote", $body);
$body = str_ireplace("[/quote]", "[/quote]\n\n", $body);
// Removal of tags and mentions
// #-tags
$body = preg_replace('/#\\[url\\=(\\w+.*?)\\](\\w+.*?)\\[\\/url\\]/i', '#$2', $body);
// @-mentions
$body = preg_replace('/@\\[url\\=(\\w+.*?)\\](\\w+.*?)\\[\\/url\\]/i', '@$2', $body);
// remove multiple newlines
do {
$oldbody = $body;
$body = str_replace("\n\n\n", "\n\n", $body);
} while ($oldbody != $body);
// convert to markdown
$body = bb2diaspora($body, false, false);
// Adding the title
if (strlen($title)) {
$body = "## " . html_entity_decode($title) . "\n\n" . $body;
}
$params = array('text' => $body, 'source' => $ltree_source);
$level = 0;
$result = z_post_url($ltree_blog, $params, $level, array('novalidate' => true));
logger('libertree: ' . print_r($result, true));
}
}
示例12: item_post
//.........这里部分代码省略.........
echo json_encode($json);
killme();
}
if ($orig_post) {
$r = q("UPDATE `item` SET `title` = '%s', `body` = '%s', `tag` = '%s', `attach` = '%s', `file` = '%s', `edited` = '%s' WHERE `id` = %d AND `uid` = %d LIMIT 1", dbesc($datarray['title']), dbesc($datarray['body']), dbesc($datarray['tag']), dbesc($datarray['attach']), dbesc($datarray['file']), dbesc(datetime_convert()), intval($post_id), intval($profile_uid));
// update filetags in pconfig
file_tag_update_pconfig($uid, $categories_old, $categories_new, 'category');
proc_run('php', "include/notifier.php", 'edit_post', "{$post_id}");
if (x($_REQUEST, 'return') && strlen($return_path)) {
logger('return: ' . $return_path);
goaway($a->get_baseurl() . "/" . $return_path);
}
killme();
} else {
$post_id = 0;
}
$r = q("INSERT INTO `item` (`guid`, `uid`,`type`,`wall`,`gravity`,`contact-id`,`owner-name`,`owner-link`,`owner-avatar`, \n\t\t`author-name`, `author-link`, `author-avatar`, `created`, `edited`, `commented`, `received`, `changed`, `uri`, `thr-parent`, `title`, `body`, `app`, `location`, `coord`, \n\t\t`tag`, `inform`, `verb`, `postopts`, `allow_cid`, `allow_gid`, `deny_cid`, `deny_gid`, `private`, `pubmail`, `attach`, `bookmark`,`origin`, `moderated`, `file` )\n\t\tVALUES( '%s', %d, '%s', %d, %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, '%s', %d, %d, %d, '%s' )", dbesc($datarray['guid']), intval($datarray['uid']), dbesc($datarray['type']), intval($datarray['wall']), intval($datarray['gravity']), intval($datarray['contact-id']), dbesc($datarray['owner-name']), dbesc($datarray['owner-link']), dbesc($datarray['owner-avatar']), dbesc($datarray['author-name']), dbesc($datarray['author-link']), dbesc($datarray['author-avatar']), dbesc($datarray['created']), dbesc($datarray['edited']), dbesc($datarray['commented']), dbesc($datarray['received']), dbesc($datarray['changed']), dbesc($datarray['uri']), dbesc($datarray['thr-parent']), dbesc($datarray['title']), dbesc($datarray['body']), dbesc($datarray['app']), dbesc($datarray['location']), dbesc($datarray['coord']), dbesc($datarray['tag']), dbesc($datarray['inform']), dbesc($datarray['verb']), dbesc($datarray['postopts']), dbesc($datarray['allow_cid']), dbesc($datarray['allow_gid']), dbesc($datarray['deny_cid']), dbesc($datarray['deny_gid']), intval($datarray['private']), intval($datarray['pubmail']), dbesc($datarray['attach']), intval($datarray['bookmark']), intval($datarray['origin']), intval($datarray['moderated']), dbesc($datarray['file']));
$r = q("SELECT `id` FROM `item` WHERE `uri` = '%s' LIMIT 1", dbesc($datarray['uri']));
if (count($r)) {
$post_id = $r[0]['id'];
logger('mod_item: saved item ' . $post_id);
// update filetags in pconfig
file_tag_update_pconfig($uid, $categories_old, $categories_new, 'category');
if ($parent) {
// This item is the last leaf and gets the comment box, clear any ancestors
$r = q("UPDATE `item` SET `last-child` = 0, `changed` = '%s' WHERE `parent` = %d ", dbesc(datetime_convert()), intval($parent));
// Inherit ACL's from the parent item.
$r = q("UPDATE `item` SET `allow_cid` = '%s', `allow_gid` = '%s', `deny_cid` = '%s', `deny_gid` = '%s', `private` = %d\n\t\t\t\tWHERE `id` = %d LIMIT 1", dbesc($parent_item['allow_cid']), dbesc($parent_item['allow_gid']), dbesc($parent_item['deny_cid']), dbesc($parent_item['deny_gid']), intval($parent_item['private']), intval($post_id));
if ($contact_record != $author) {
notification(array('type' => NOTIFY_COMMENT, 'notify_flags' => $user['notify-flags'], 'language' => $user['language'], 'to_name' => $user['username'], 'to_email' => $user['email'], 'uid' => $user['uid'], 'item' => $datarray, 'link' => $a->get_baseurl() . '/display/' . $user['nickname'] . '/' . $post_id, 'source_name' => $datarray['author-name'], 'source_link' => $datarray['author-link'], 'source_photo' => $datarray['author-avatar'], 'verb' => ACTIVITY_POST, 'otype' => 'item', 'parent' => $parent));
}
// We won't be able to sign Diaspora comments for authenticated visitors - we don't have their private key
if ($self) {
require_once 'include/bb2diaspora.php';
$signed_body = html_entity_decode(bb2diaspora($datarray['body']));
$myaddr = $a->user['nickname'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(), '://') + 3);
if ($datarray['verb'] === ACTIVITY_LIKE) {
$signed_text = $datarray['guid'] . ';' . 'Post' . ';' . $parent_item['guid'] . ';' . 'true' . ';' . $myaddr;
} else {
$signed_text = $datarray['guid'] . ';' . $parent_item['guid'] . ';' . $signed_body . ';' . $myaddr;
}
$authorsig = base64_encode(rsa_sign($signed_text, $a->user['prvkey'], 'sha256'));
q("insert into sign (`iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ", intval($post_id), dbesc($signed_text), dbesc(base64_encode($authorsig)), dbesc($myaddr));
}
} else {
$parent = $post_id;
if ($contact_record != $author) {
notification(array('type' => NOTIFY_WALL, 'notify_flags' => $user['notify-flags'], 'language' => $user['language'], 'to_name' => $user['username'], 'to_email' => $user['email'], 'uid' => $user['uid'], 'item' => $datarray, 'link' => $a->get_baseurl() . '/display/' . $user['nickname'] . '/' . $post_id, 'source_name' => $datarray['author-name'], 'source_link' => $datarray['author-link'], 'source_photo' => $datarray['author-avatar'], 'verb' => ACTIVITY_POST, 'otype' => 'item'));
}
}
// fallback so that parent always gets set to non-zero.
if (!$parent) {
$parent = $post_id;
}
$r = q("UPDATE `item` SET `parent` = %d, `parent-uri` = '%s', `plink` = '%s', `changed` = '%s', `last-child` = 1, `visible` = 1\n\t\t\tWHERE `id` = %d LIMIT 1", intval($parent), dbesc($parent == $post_id ? $uri : $parent_item['uri']), dbesc($a->get_baseurl() . '/display/' . $user['nickname'] . '/' . $post_id), dbesc(datetime_convert()), intval($post_id));
// photo comments turn the corresponding item visible to the profile wall
// This way we don't see every picture in your new photo album posted to your wall at once.
// They will show up as people comment on them.
if (!$parent_item['visible']) {
$r = q("UPDATE `item` SET `visible` = 1 WHERE `id` = %d LIMIT 1", intval($parent_item['id']));
}
} else {
logger('mod_item: unable to retrieve post that was just stored.');
notice(t('System error. Post not saved.') . EOL);
goaway($a->get_baseurl() . "/" . $return_path);
// NOTREACHED
示例13: diaspora_send
function diaspora_send(&$a, &$b)
{
$hostname = $a->get_hostname();
logger('diaspora_send: invoked');
if ($b['deleted'] || $b['private'] || $b['created'] !== $b['edited']) {
return;
}
if (!strstr($b['postopts'], 'diaspora')) {
return;
}
if ($b['parent'] != $b['id']) {
return;
}
logger('diaspora_send: prepare posting', LOGGER_DEBUG);
$diaspora_username = get_pconfig($b['uid'], 'diaspora', 'diaspora_username');
$diaspora_password = get_pconfig($b['uid'], 'diaspora', 'diaspora_password');
$diaspora_url = get_pconfig($b['uid'], 'diaspora', 'diaspora_url');
if ($diaspora_url && $diaspora_username && $diaspora_password) {
logger('diaspora_send: all values seem to be okay', LOGGER_DEBUG);
require_once 'include/bb2diaspora.php';
$tag_arr = array();
$tags = '';
$x = preg_match_all('/\\#\\[(.*?)\\](.*?)\\[/', $b['tag'], $matches, PREG_SET_ORDER);
if ($x) {
foreach ($matches as $mtch) {
$tag_arr[] = $mtch[2];
}
}
if (count($tag_arr)) {
$tags = implode(',', $tag_arr);
}
$title = $b['title'];
$body = $b['body'];
// Insert a newline before and after a quote
$body = str_ireplace("[quote", "\n\n[quote", $body);
$body = str_ireplace("[/quote]", "[/quote]\n\n", $body);
// Removal of tags and mentions
// #-tags
$body = preg_replace('/#\\[url\\=(\\w+.*?)\\](\\w+.*?)\\[\\/url\\]/i', '#$2', $body);
// @-mentions
$body = preg_replace('/@\\[url\\=(\\w+.*?)\\](\\w+.*?)\\[\\/url\\]/i', '@$2', $body);
// remove multiple newlines
do {
$oldbody = $body;
$body = str_replace("\n\n\n", "\n\n", $body);
} while ($oldbody != $body);
// convert to markdown
$body = bb2diaspora($body, false, true);
// Adding the title
if (strlen($title)) {
$body = "## " . html_entity_decode($title) . "\n\n" . $body;
}
require_once "addon/diaspora/diasphp.php";
try {
logger('diaspora_send: prepare', LOGGER_DEBUG);
$conn = new Diasphp($diaspora_url);
logger('diaspora_send: try to log in ' . $diaspora_username, LOGGER_DEBUG);
$conn->login($diaspora_username, $diaspora_password);
logger('diaspora_send: try to send ' . $body, LOGGER_DEBUG);
//throw new Exception('Test');
$conn->post($body, $hostname);
logger('diaspora_send: success');
} catch (Exception $e) {
logger("diaspora_send: Error submitting the post: " . $e->getMessage());
logger('diaspora_send: requeueing ' . $b['uid'], LOGGER_DEBUG);
$r = q("SELECT `id` FROM `contact` WHERE `uid` = %d AND `self`", $b['uid']);
if (count($r)) {
$a->contact = $r[0]["id"];
}
$s = serialize(array('url' => $url, 'item' => $b['id'], 'post' => $body));
require_once 'include/queue_fn.php';
add_to_queue($a->contact, NETWORK_DIASPORA2, $s);
notice(t('Diaspora post failed. Queued for retry.') . EOL);
}
}
}
示例14: item_post
//.........这里部分代码省略.........
if ($parent) {
// This item is the last leaf and gets the comment box, clear any ancestors
$r = q("UPDATE `item` SET `last-child` = 0, `changed` = '%s' WHERE `parent` = %d ", dbesc(datetime_convert()), intval($parent));
// Inherit ACL's from the parent item.
$r = q("UPDATE `item` SET `allow_cid` = '%s', `allow_gid` = '%s', `deny_cid` = '%s', `deny_gid` = '%s', `private` = %d\n\t\t\t\tWHERE `id` = %d LIMIT 1", dbesc($parent_item['allow_cid']), dbesc($parent_item['allow_gid']), dbesc($parent_item['deny_cid']), dbesc($parent_item['deny_gid']), intval($parent_item['private']), intval($post_id));
// Send a notification email to the conversation owner, unless the owner is me and I wrote this item
if ($user['notify-flags'] & NOTIFY_COMMENT && $contact_record != $author) {
push_lang($user['language']);
require_once 'bbcode.php';
$from = $author['name'];
// name of the automated email sender
$msg['notificationfromname'] = stripslashes($datarray['author-name']);
// noreply address to send from
$msg['notificationfromemail'] = t('noreply') . '@' . $a->get_hostname();
// text version
// process the message body to display properly in text mode
$msg['textversion'] = html_entity_decode(strip_tags(bbcode(stripslashes($datarray['body']))), ENT_QUOTES, 'UTF-8');
// html version
// process the message body to display properly in text mode
$msg['htmlversion'] = html_entity_decode(bbcode(stripslashes(str_replace(array("\\r\\n", "\\r", "\\n\\n", "\\n"), "<br />\n", $datarray['body']))));
// load the template for private message notifications
$tpl = get_intltext_template('cmnt_received_html_body_eml.tpl');
$email_html_body_tpl = replace_macros($tpl, array('$username' => $user['username'], '$sitename' => $a->config['sitename'], '$siteurl' => $a->get_baseurl(), '$thumb' => $author['thumb'], '$email' => $importer['email'], '$url' => $author['url'], '$from' => $from, '$body' => $msg['htmlversion'], '$display' => $a->get_baseurl() . '/display/' . $user['nickname'] . '/' . $post_id));
// load the template for private message notifications
$tpl = get_intltext_template('cmnt_received_text_body_eml.tpl');
$email_text_body_tpl = replace_macros($tpl, array('$username' => $user['username'], '$sitename' => $a->config['sitename'], '$siteurl' => $a->get_baseurl(), '$thumb' => $author['thumb'], '$email' => $importer['email'], '$url' => $author['url'], '$from' => $from, '$body' => $msg['textversion'], '$display' => $a->get_baseurl() . '/display/' . $user['nickname'] . '/' . $post_id));
// use the EmailNotification library to send the message
require_once "include/EmailNotification.php";
EmailNotification::sendTextHtmlEmail($msg['notificationfromname'], t("Administrator@") . $a->get_hostname(), t("noreply") . '@' . $a->get_hostname(), $user['email'], sprintf(t('%s commented on an item at %s'), $from, $a->config['sitename']), $email_html_body_tpl, $email_text_body_tpl);
pop_lang();
}
// We won't be able to sign Diaspora comments for authenticated visitors - we don't have their private key
if ($self) {
require_once 'include/bb2diaspora.php';
$signed_body = html_entity_decode(bb2diaspora($datarray['body']));
$myaddr = $a->user['nickname'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(), '://') + 3);
if ($datarray['verb'] === ACTIVITY_LIKE) {
$signed_text = $datarray['guid'] . ';' . 'Post' . ';' . $parent_item['guid'] . ';' . 'true' . ';' . $myaddr;
} else {
$signed_text = $datarray['guid'] . ';' . $parent_item['guid'] . ';' . $signed_body . ';' . $myaddr;
}
$authorsig = base64_encode(rsa_sign($signed_text, $a->user['prvkey'], 'sha256'));
q("insert into sign (`iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ", intval($post_id), dbesc($signed_text), dbesc(base64_encode($authorsig)), dbesc($myaddr));
}
} else {
$parent = $post_id;
// let me know if somebody did a wall-to-wall post on my profile
if ($user['notify-flags'] & NOTIFY_WALL && $contact_record != $author) {
push_lang($user['language']);
require_once 'bbcode.php';
$from = $author['name'];
// name of the automated email sender
$msg['notificationfromname'] = $from;
// noreply address to send from
$msg['notificationfromemail'] = t('noreply') . '@' . $a->get_hostname();
// text version
// process the message body to display properly in text mode
$msg['textversion'] = html_entity_decode(strip_tags(bbcode(stripslashes($datarray['body']))), ENT_QUOTES, 'UTF-8');
// html version
// process the message body to display properly in text mode
$msg['htmlversion'] = html_entity_decode(bbcode(stripslashes(str_replace(array("\\r\\n", "\\r", "\\n\\n", "\\n"), "<br />\n", $datarray['body']))));
// load the template for private message notifications
$tpl = load_view_file('view/wall_received_html_body_eml.tpl');
$email_html_body_tpl = replace_macros($tpl, array('$username' => $user['username'], '$sitename' => $a->config['sitename'], '$siteurl' => $a->get_baseurl(), '$thumb' => $author['thumb'], '$url' => $author['url'], '$from' => $from, '$body' => $msg['htmlversion'], '$display' => $a->get_baseurl() . '/display/' . $user['nickname'] . '/' . $post_id));
// load the template for private message notifications
$tpl = load_view_file('view/wall_received_text_body_eml.tpl');
示例15: libertree_send
function libertree_send(&$a, &$b)
{
logger('libertree_send: invoked');
if ($b['deleted'] || $b['private'] || $b['created'] !== $b['edited']) {
return;
}
if (!strstr($b['postopts'], 'libertree')) {
return;
}
if ($b['parent'] != $b['id']) {
return;
}
$ltree_api_token = get_pconfig($b['uid'], 'libertree', 'libertree_api_token');
$ltree_url = get_pconfig($b['uid'], 'libertree', 'libertree_url');
$ltree_blog = "{$ltree_url}/api/v1/posts/create/?token={$ltree_api_token}";
$ltree_source = $a->get_hostname();
if ($b['app'] != "") {
$ltree_source .= " (" . $b['app'] . ")";
}
if ($ltree_url && $ltree_api_token && $ltree_blog && $ltree_source) {
require_once 'include/bb2diaspora.php';
$tag_arr = array();
$tags = '';
$x = preg_match_all('/\\#\\[(.*?)\\](.*?)\\[/', $b['tag'], $matches, PREG_SET_ORDER);
if ($x) {
foreach ($matches as $mtch) {
$tag_arr[] = $mtch[2];
}
}
if (count($tag_arr)) {
$tags = implode(',', $tag_arr);
}
$title = $b['title'];
$body = $b['body'];
// Insert a newline before and after a quote
$body = str_ireplace("[quote", "\n\n[quote", $body);
$body = str_ireplace("[/quote]", "[/quote]\n\n", $body);
// Removal of tags and mentions
// #-tags
$body = preg_replace('/#\\[url\\=(\\w+.*?)\\](\\w+.*?)\\[\\/url\\]/i', '#$2', $body);
// @-mentions
$body = preg_replace('/@\\[url\\=(\\w+.*?)\\](\\w+.*?)\\[\\/url\\]/i', '@$2', $body);
// remove multiple newlines
do {
$oldbody = $body;
$body = str_replace("\n\n\n", "\n\n", $body);
} while ($oldbody != $body);
// convert to markdown
$body = bb2diaspora($body, false, false);
// Adding the title
if (strlen($title)) {
$body = "## " . html_entity_decode($title) . "\n\n" . $body;
}
$params = array('text' => $body, 'source' => $ltree_source);
$result = post_url($ltree_blog, $params);
logger('libertree: ' . $result);
}
}