本文整理汇总了PHP中is_item_normal函数的典型用法代码示例。如果您正苦于以下问题:PHP is_item_normal函数的具体用法?PHP is_item_normal怎么用?PHP is_item_normal使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了is_item_normal函数的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: wppost_post_remote_end
function wppost_post_remote_end(&$a, &$b)
{
// We are only looking for public comments
logger('wppost_post_remote_end');
if ($b['mid'] === $b['parent_mid']) {
return;
}
if (!is_item_normal($b) || $b['item_private']) {
return;
}
// Does the post owner have this plugin installed?
$wp_post = intval(get_pconfig($b['uid'], 'wppost', 'post'));
if (!$wp_post) {
return;
}
// Are we allowed to forward comments?
$wp_forward_comments = intval(get_pconfig($b['uid'], 'wppost', 'forward_comments'));
if (!$wp_forward_comments) {
return;
}
// how about our stream permissions?
if (!perm_is_allowed($b['uid'], '', 'view_stream')) {
return;
}
// Now we have to get down and dirty. Was the parent shared with wordpress?
$r = q("select * from iconfig left join item on iconfig.iid = item.id where cat = 'system' and k = 'wordpress' and iid = %d and item.uid = %d limit 1", intval($b['parent']), intval($b['uid']));
if (!$r) {
return;
}
$wp_parent_id = intval(basename($r[0]['v']));
$x = q("select * from xchan where xchan_hash = '%s' limit 1", dbesc($b['author_xchan']));
if (!$x) {
return;
}
logger('Wordpress xpost comment invoked', LOGGER_DEBUG);
$edited = $b['created'] !== $b['edited'] ? true : false;
if ($edited) {
$r = q("select * from iconfig left join item on iconfig.iid = item.id\n\t\t\twhere cat = 'system' and k = 'wordpress' and iid = %d and uid = %d limit 1", intval($b['id']), intval($b['uid']));
if (!$r) {
return;
}
$wp_comment_id = intval(basename($r[0]['v']));
}
$wp_username = get_pconfig($b['uid'], 'wppost', 'wp_username');
$wp_password = z_unobscure(get_pconfig($b['uid'], 'wppost', 'wp_password'));
$wp_blog = get_pconfig($b['uid'], 'wppost', 'wp_blog');
$wp_blogid = get_pconfig($b['uid'], 'wppost', 'wp_blogid');
if (!$wp_blogid) {
$wp_blogid = 1;
}
if ($wp_username && $wp_password && $wp_blog) {
require_once 'include/bbcode.php';
$data = array('author' => $x[0]['xchan_name'], 'author_email' => $x[0]['xchan_addr'], 'author_url' => $x[0]['xchan_url'], 'content' => bbcode($b['body']), 'approved' => 1);
if ($edited) {
$data['comment_id'] = $wp_comment_id;
} else {
$data['red_avatar'] = $x[0]['xchan_photo_m'];
}
$client = new IXR_Client($wp_blog);
// this will fail if the post_to_red plugin isn't installed on the wordpress site
$res = $client->query('red.Comment', $wp_blogid, $wp_username, $wp_password, $wp_parent_id, $data);
if (!$res) {
logger('wppost: comment failed.');
return;
}
$post_id = $client->getResponse();
logger('wppost: comment returns post_id: ' . $post_id, LOGGER_DEBUG);
// edited just returns true
if ($edited) {
return;
}
if ($post_id) {
q("insert into iconfig ( iid, cat, v, k, sharing ) values ( %d, 'system', '%s', '%s', 1 )", intval($b['id']), dbesc(dirname($wp_blog) . '/' . $post_id), dbesc('wordpress'));
}
}
}
示例2: dwpost_send
function dwpost_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'], 'dwpost')) {
return;
}
if ($b['parent'] != $b['id']) {
return;
}
// dreamwidth post in the LJ user's timezone.
// Hopefully the person's Friendica account
// will be set to the same thing.
$tz = 'UTC';
$x = q("select channel_timezone from channel where channel_id = %d limit 1", intval($b['uid']));
if ($x && strlen($x[0]['channel_timezone'])) {
$tz = $x[0]['channel_timezone'];
}
$dw_username = get_pconfig($b['uid'], 'dwpost', 'dw_username');
$dw_password = z_unobscure(get_pconfig($b['uid'], 'dwpost', 'dw_password'));
$dw_blog = 'http://www.dreamwidth.org/interface/xmlrpc';
if ($dw_username && $dw_password && $dw_blog) {
require_once 'include/bbcode.php';
require_once 'include/datetime.php';
$title = $b['title'];
$post = bbcode($b['body']);
$post = xmlify($post);
$tags = dwpost_get_tags($b['tag']);
$date = datetime_convert('UTC', $tz, $b['created'], 'Y-m-d H:i:s');
$year = intval(substr($date, 0, 4));
$mon = intval(substr($date, 5, 2));
$day = intval(substr($date, 8, 2));
$hour = intval(substr($date, 11, 2));
$min = intval(substr($date, 14, 2));
$xml = <<<EOT
<?xml version="1.0" encoding="utf-8"?>
<methodCall><methodName>LJ.XMLRPC.postevent</methodName>
<params><param>
<value><struct>
<member><name>year</name><value><int>{$year}</int></value></member>
<member><name>mon</name><value><int>{$mon}</int></value></member>
<member><name>day</name><value><int>{$day}</int></value></member>
<member><name>hour</name><value><int>{$hour}</int></value></member>
<member><name>min</name><value><int>{$min}</int></value></member>
<member><name>event</name><value><string>{$post}</string></value></member>
<member><name>username</name><value><string>{$dw_username}</string></value></member>
<member><name>password</name><value><string>{$dw_password}</string></value></member>
<member><name>subject</name><value><string>{$title}</string></value></member>
<member><name>lineendings</name><value><string>unix</string></value></member>
<member><name>ver</name><value><int>1</int></value></member>
<member><name>props</name>
<value><struct>
<member><name>useragent</name><value><string>Friendica</string></value></member>
<member><name>taglist</name><value><string>{$tags}</string></value></member>
</struct></value></member>
</struct></value>
</param></params>
</methodCall>
EOT;
logger('dwpost: data: ' . $xml, LOGGER_DATA);
if ($dw_blog !== 'test') {
$x = z_post_url($dw_blog, $xml, array('headers' => array("Content-Type: text/xml")));
}
logger('posted to dreamwidth: ' . print_r($x, true), LOGGER_DEBUG);
}
}
示例3: 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);
}
}
}
示例4: rtof_post_hook
function rtof_post_hook(&$a, &$b)
{
/**
* Post to Friendica
*/
// for now, just top level posts.
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'], 'rtof')) {
return;
}
logger('Red-to-Friendica post invoked');
load_pconfig($b['uid'], 'rtof');
$api = get_pconfig($b['uid'], 'rtof', 'baseapi');
if (substr($api, -1, 1) != '/') {
$api .= '/';
}
$username = get_pconfig($b['uid'], 'rtof', 'username');
$password = z_unobscure(get_pconfig($b['uid'], 'rtof', 'password'));
$msg = $b['body'];
$postdata = array('status' => $b['body'], 'title' => $b['title'], 'message_id' => $b['mid'], 'source' => 'Red Matrix');
if (strlen($b['body'])) {
$ret = z_post_url($api . 'statuses/update', $postdata, 0, array('http_auth' => $username . ':' . $password, 'novalidate' => 1));
if ($ret['success']) {
logger('rtof: returns: ' . print_r($ret['body'], true));
} else {
logger('rtof: z_post_url failed: ' . print_r($ret['debug'], true));
}
}
}
示例5: twitter_post_hook
function twitter_post_hook(&$a, &$b)
{
/**
* Post to Twitter
*/
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'], 'twitter')) {
return;
}
if ($b['parent'] != $b['id']) {
return;
}
logger('twitter post invoked');
load_pconfig($b['uid'], 'twitter');
$ckey = get_config('twitter', 'consumerkey');
$csecret = get_config('twitter', 'consumersecret');
$otoken = get_pconfig($b['uid'], 'twitter', 'oauthtoken');
$osecret = get_pconfig($b['uid'], 'twitter', 'oauthsecret');
$intelligent_shortening = get_pconfig($b['uid'], 'twitter', 'intelligent_shortening');
// Global setting overrides this
if (get_config('twitter', 'intelligent_shortening')) {
$intelligent_shortening = get_config('twitter', 'intelligent_shortening');
}
if ($ckey && $csecret && $otoken && $osecret) {
logger('twitter: we have customer key and oauth stuff, going to send.', LOGGER_DEBUG);
// If it's a repeated message from twitter then do a native retweet and exit
// if (twitter_is_retweet($a, $b['uid'], $b['body']))
// return;
require_once 'library/twitteroauth.php';
require_once 'include/bbcode.php';
$tweet = new TwitterOAuth($ckey, $csecret, $otoken, $osecret);
// in theory max char is 140 but T. uses t.co to make links
// longer so we give them 10 characters extra
if (!$intelligent_shortening) {
$max_char = 130;
// max. length for a tweet
// we will only work with up to two times the length of the dent
// we can later send to Twitter. This way we can "gain" some
// information during shortening of potential links but do not
// shorten all the links in a 200000 character long essay.
if (!$b['title'] == '') {
$tmp = $b['title'] . ' : ' . $b['body'];
// $tmp = substr($tmp, 0, 4*$max_char);
} else {
$tmp = $b['body'];
// substr($b['body'], 0, 3*$max_char);
}
// if [url=bla][img]blub.png[/img][/url] get blub.png
$tmp = preg_replace('/\\[url\\=(https?\\:\\/\\/[a-zA-Z0-9\\:\\/\\-\\?\\&\\;\\.\\=\\_\\~\\#\\%\\$\\!\\+\\,]+)\\]\\[img\\](\\w+.*?)\\[\\/img\\]\\[\\/url\\]/i', '$2', $tmp);
$tmp = preg_replace('/\\[zrl\\=(https?\\:\\/\\/[a-zA-Z0-9\\:\\/\\-\\?\\&\\;\\.\\=\\_\\~\\#\\%\\$\\!\\+\\,]+)\\]\\[zmg\\](\\w+.*?)\\[\\/zmg\\]\\[\\/zrl\\]/i', '$2', $tmp);
// preserve links to images, videos and audios
$tmp = preg_replace('/\\[img\\=([0-9]*)x([0-9]*)\\](.*?)\\[\\/img\\]/ism', '$3', $tmp);
$tmp = preg_replace('/\\[\\/?img(\\s+.*?\\]|\\])/i', '', $tmp);
$tmp = preg_replace('/\\[zmg\\=([0-9]*)x([0-9]*)\\](.*?)\\[\\/zmg\\]/ism', '$3', $tmp);
$tmp = preg_replace('/\\[\\/?zmg(\\s+.*?\\]|\\])/i', '', $tmp);
$tmp = preg_replace('/\\[\\/?video(\\s+.*?\\]|\\])/i', '', $tmp);
$tmp = preg_replace('/\\[\\/?youtube(\\s+.*?\\]|\\])/i', '', $tmp);
$tmp = preg_replace('/\\[\\/?vimeo(\\s+.*?\\]|\\])/i', '', $tmp);
$tmp = preg_replace('/\\[\\/?audio(\\s+.*?\\]|\\])/i', '', $tmp);
$linksenabled = get_pconfig($b['uid'], 'twitter', 'post_taglinks');
// if a #tag is linked, don't send the [url] over to SN
// that is, don't send if the option is not set in the
// connector settings
if ($linksenabled == '0') {
// #-tags
$tmp = preg_replace('/#\\[url\\=(\\w+.*?)\\](\\w+.*?)\\[\\/url\\]/i', '#$2', $tmp);
// @-mentions
$tmp = preg_replace('/@\\[url\\=(\\w+.*?)\\](\\w+.*?)\\[\\/url\\]/i', '@$2', $tmp);
$tmp = preg_replace('/#\\[zrl\\=(\\w+.*?)\\](\\w+.*?)\\[\\/zrl\\]/i', '#$2', $tmp);
// @-mentions
$tmp = preg_replace('/@\\[zrl\\=(\\w+.*?)\\](\\w+.*?)\\[\\/zrl\\]/i', '@$2', $tmp);
// recycle 1
}
$tmp = preg_replace('/\\[url\\=(https?\\:\\/\\/[a-zA-Z0-9\\:\\/\\-\\?\\&\\;\\.\\=\\_\\~\\#\\%\\$\\!\\+\\,]+)\\](\\w+.*?)\\[\\/url\\]/i', '$2 $1', $tmp);
// find all http or https links in the body of the entry and
// apply the shortener if the link is longer then 20 characters
if (strlen($tmp) > $max_char && $max_char > 0) {
preg_match_all('/(https?\\:\\/\\/[a-zA-Z0-9\\:\\/\\-\\?\\&\\;\\.\\=\\_\\~\\#\\%\\$\\!\\+\\,]+)/i', $tmp, $allurls);
foreach ($allurls as $url) {
foreach ($url as $u) {
if (strlen($u) > 20) {
$sl = short_link($u);
$tmp = str_replace($u, $sl, $tmp);
}
}
}
}
// ok, all the links we want to send out are save, now strip
// away the remaining bbcode
//$msg = strip_tags(bbcode($tmp, false, false));
$msg = bbcode($tmp, false, false);
$msg = str_replace(array('<br>', '<br />'), "\n", $msg);
$msg = strip_tags($msg);
// quotes not working - let's try this
$msg = html_entity_decode($msg);
//.........这里部分代码省略.........
示例6: item_post
//.........这里部分代码省略.........
if ($uid) {
if ($channel['channel_hash'] === $datarray['author_xchan']) {
$datarray['sig'] = base64url_encode(rsa_sign($datarray['body'], $channel['channel_prvkey']));
$datarray['item_verified'] = 1;
}
}
}
if ($orig_post) {
$datarray['id'] = $post_id;
item_store_update($datarray, $execflag);
update_remote_id($channel, $post_id, $webpage, $pagetitle, $namespace, $remote_id, $mid);
if (!$parent) {
$r = q("select * from item where id = %d", intval($post_id));
if ($r) {
xchan_query($r);
$sync_item = fetch_post_tags($r);
$rid = q("select * from item_id where iid = %d", intval($post_id));
build_sync_packet($uid, array('item' => array(encode_item($sync_item[0], true)), 'item_id' => $rid));
}
}
if (!$nopush) {
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;
}
$post = item_store($datarray, $execflag);
$post_id = $post['item_id'];
if ($post_id) {
logger('mod_item: saved item ' . $post_id);
if ($parent) {
// only send comment notification if this is a wall-to-wall comment,
// otherwise it will happen during delivery
if ($datarray['owner_xchan'] != $datarray['author_xchan'] && intval($parent_item['item_wall'])) {
notification(array('type' => NOTIFY_COMMENT, 'from_xchan' => $datarray['author_xchan'], 'to_xchan' => $datarray['owner_xchan'], 'item' => $datarray, 'link' => $a->get_baseurl() . '/display/' . $datarray['mid'], 'verb' => ACTIVITY_POST, 'otype' => 'item', 'parent' => $parent, 'parent_mid' => $parent_item['mid']));
}
} else {
$parent = $post_id;
if ($datarray['owner_xchan'] != $datarray['author_xchan']) {
notification(array('type' => NOTIFY_WALL, 'from_xchan' => $datarray['author_xchan'], 'to_xchan' => $datarray['owner_xchan'], 'item' => $datarray, 'link' => $a->get_baseurl() . '/display/' . $datarray['mid'], 'verb' => ACTIVITY_POST, 'otype' => 'item'));
}
if ($uid && $uid == $profile_uid && is_item_normal($datarray)) {
q("update channel set channel_lastpost = '%s' where channel_id = %d", dbesc(datetime_convert()), intval($uid));
}
}
// 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 (intval($parent_item['item_hidden'])) {
$r = q("UPDATE item SET item_hidden = 0 WHERE id = %d", 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
}
update_remote_id($channel, $post_id, $webpage, $pagetitle, $namespace, $remote_id, $mid);
if ($parent && $parent != $post_id) {
// Store the comment signature information in case we need to relay to Diaspora
$ditem = $datarray;
$ditem['author'] = $observer;
store_diaspora_comment_sig($ditem, $channel, $parent_item, $post_id, $walltowall_comment ? 1 : 0);
} else {
$r = q("select * from item where id = %d", intval($post_id));
if ($r) {
xchan_query($r);
$sync_item = fetch_post_tags($r);
$rid = q("select * from item_id where iid = %d", intval($post_id));
build_sync_packet($uid, array('item' => array(encode_item($sync_item[0], true)), 'item_id' => $rid));
}
}
$datarray['id'] = $post_id;
$datarray['llink'] = $a->get_baseurl() . '/display/' . $channel['channel_address'] . '/' . $post_id;
call_hooks('post_local_end', $datarray);
if (!$nopush) {
proc_run('php', 'include/notifier.php', $notify_type, $post_id);
}
logger('post_complete');
// figure out how to return, depending on from whence we came
if ($api_source) {
return $post;
}
if ($return_path) {
goaway($a->get_baseurl() . "/" . $return_path);
}
$json = array('success' => 1);
if (x($_REQUEST, 'jsreload') && strlen($_REQUEST['jsreload'])) {
$json['reload'] = $a->get_baseurl() . '/' . $_REQUEST['jsreload'];
}
logger('post_json: ' . print_r($json, true), LOGGER_DEBUG);
echo json_encode($json);
killme();
// NOTREACHED
}
示例7: statusnet_post_hook
function statusnet_post_hook(&$a, &$b)
{
/**
* Post to statusnet
*/
if (!strstr($b['postopts'], 'statusnet')) {
logger('crosspost not enabled.');
return;
}
if (!is_item_normal($b) || $b['item_private'] || $b['created'] !== $b['edited']) {
logger('not a usable post. ' . print_r($b, true), LOGGER_DEBUG);
return;
}
if (!perm_is_allowed($b['uid'], '', 'view_stream')) {
logger('permissions prevent crossposting.', LOGGER_DEBUG);
return;
}
if ($b['parent'] != $b['id']) {
logger('not a top level post.', LOGGER_DEBUG);
return;
}
// if posts comes from statusnet don't send it back
if ($b['app'] == "StatusNet") {
logger('potential recursion. Crosspost ignored.');
return;
}
logger('statusnet post invoked');
load_pconfig($b['uid'], 'statusnet');
$api = get_pconfig($b['uid'], 'statusnet', 'baseapi');
$ckey = get_pconfig($b['uid'], 'statusnet', 'consumerkey');
$csecret = get_pconfig($b['uid'], 'statusnet', 'consumersecret');
$otoken = get_pconfig($b['uid'], 'statusnet', 'oauthtoken');
$osecret = get_pconfig($b['uid'], 'statusnet', 'oauthsecret');
$intelligent_shortening = get_pconfig($b['uid'], 'statusnet', 'intelligent_shortening');
// Global setting overrides this
if (get_config('statusnet', 'intelligent_shortening')) {
$intelligent_shortening = get_config('statusnet', 'intelligent_shortening');
}
if ($ckey && $csecret && $otoken && $osecret) {
require_once 'include/bbcode.php';
$dent = new StatusNetOAuth($api, $ckey, $csecret, $otoken, $osecret);
$max_char = $dent->get_maxlength();
// max. length for a dent
// we will only work with up to two times the length of the dent
// we can later send to GNU social. This way we can "gain" some
// information during shortening of potential links but do not
// shorten all the links in a 200000 character long essay.
$tempfile = "";
$intelligent_shortening = get_config('statusnet', 'intelligent_shortening');
if (!$intelligent_shortening) {
if (!$b['title'] == '') {
$tmp = $b['title'] . ": \n" . $b['body'];
// $tmp = substr($tmp, 0, 4*$max_char);
} else {
$tmp = $b['body'];
// substr($b['body'], 0, 3*$max_char);
}
// if [url=bla][img]blub.png[/img][/url] get blub.png
$tmp = preg_replace('/\\[url\\=(https?\\:\\/\\/[a-zA-Z0-9\\:\\/\\-\\?\\&\\;\\.\\=\\_\\~\\#\\%\\$\\!\\+\\,]+)\\]\\[img\\](\\w+.*?)\\[\\/img\\]\\[\\/url\\]/i', '$2', $tmp);
$tmp = preg_replace('/\\[zrl\\=(https?\\:\\/\\/[a-zA-Z0-9\\:\\/\\-\\?\\&\\;\\.\\=\\_\\~\\#\\%\\$\\!\\+\\,]+)\\]\\[zmg\\](\\w+.*?)\\[\\/zmg\\]\\[\\/zrl\\]/i', '$2', $tmp);
// preserve links to images, videos and audios
$tmp = preg_replace('/\\[img\\=([0-9]*)x([0-9]*)\\](.*?)\\[\\/img\\]/ism', '$3', $tmp);
$tmp = preg_replace('/\\[\\/?img(\\s+.*?\\]|\\])/i', '', $tmp);
$tmp = preg_replace('/\\[zmg\\=([0-9]*)x([0-9]*)\\](.*?)\\[\\/zmg\\]/ism', '$3', $tmp);
$tmp = preg_replace('/\\[\\/?zmg(\\s+.*?\\]|\\])/i', '', $tmp);
$tmp = preg_replace('/\\[\\/?video(\\s+.*?\\]|\\])/i', '', $tmp);
$tmp = preg_replace('/\\[\\/?audio(\\s+.*?\\]|\\])/i', '', $tmp);
$linksenabled = get_pconfig($b['uid'], 'statusnet', 'post_taglinks');
// if a #tag is linked, don't send the [url] over to SN
// that is, don't send if the option is not set in the
// connector settings
if ($linksenabled == '0') {
// #-tags
$tmp = preg_replace('/#\\[url\\=(\\w+.*?)\\](\\w+.*?)\\[\\/url\\]/i', '#$2', $tmp);
// @-mentions
$tmp = preg_replace('/@\\[url\\=(\\w+.*?)\\](\\w+.*?)\\[\\/url\\]/i', '@$2', $tmp);
// #-tags
$tmp = preg_replace('/#\\[zrl\\=(\\w+.*?)\\](\\w+.*?)\\[\\/zrl\\]/i', '#$2', $tmp);
// @-mentions
$tmp = preg_replace('/@\\[zrl\\=(\\w+.*?)\\](\\w+.*?)\\[\\/zrl\\]/i', '@$2', $tmp);
// recycle 1
$recycle = html_entity_decode("♲ ", ENT_QUOTES, 'UTF-8');
$tmp = preg_replace('/' . $recycle . '\\[url\\=(\\w+.*?)\\](\\w+.*?)\\[\\/url\\]/i', $recycle . '$2', $tmp);
// recycle 2 (test)
$recycle = html_entity_decode("◌ ", ENT_QUOTES, 'UTF-8');
$tmp = preg_replace('/' . $recycle . '\\[url\\=(\\w+.*?)\\](\\w+.*?)\\[\\/url\\]/i', $recycle . '$2', $tmp);
}
// preserve links to webpages
$tmp = preg_replace('/\\[url\\=(https?\\:\\/\\/[a-zA-Z0-9\\:\\/\\-\\?\\&\\;\\.\\=\\_\\~\\#\\%\\$\\!\\+\\,]+)\\](\\w+.*?)\\[\\/url\\]/i', '$2 $1', $tmp);
$tmp = preg_replace('/\\[zrl\\=(https?\\:\\/\\/[a-zA-Z0-9\\:\\/\\-\\?\\&\\;\\.\\=\\_\\~\\#\\%\\$\\!\\+\\,]+)\\](\\w+.*?)\\[\\/zrl\\]/i', '$2 $1', $tmp);
// find all http or https links in the body of the entry and
// apply the shortener if the link is longer then 20 characters
if (strlen($tmp) > $max_char && $max_char > 0) {
preg_match_all('/(https?\\:\\/\\/[a-zA-Z0-9\\:\\/\\-\\?\\&\\;\\.\\=\\_\\~\\#\\%\\$\\!\\+\\,]+)/i', $tmp, $allurls);
foreach ($allurls as $url) {
foreach ($url as $u) {
if (strlen($u) > 20) {
$sl = short_link($u);
$tmp = str_replace($u, $sl, $tmp);
}
//.........这里部分代码省略.........
示例8: 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));
}
}
示例9: pumpio_send
function pumpio_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'], 'pumpio')) {
return;
}
if ($b['parent'] != $b['id']) {
return;
}
// if post comes from pump.io don't send it back
if ($b['app'] == "pump.io") {
return;
}
$oauth_token = get_pconfig($b['uid'], "pumpio", "oauth_token");
$oauth_token_secret = get_pconfig($b['uid'], "pumpio", "oauth_token_secret");
$consumer_key = get_pconfig($b['uid'], "pumpio", "consumer_key");
$consumer_secret = get_pconfig($b['uid'], "pumpio", "consumer_secret");
$host = get_pconfig($b['uid'], "pumpio", "host");
$user = get_pconfig($b['uid'], "pumpio", "user");
$public = get_pconfig($b['uid'], "pumpio", "public");
if ($oauth_token && $oauth_token_secret) {
require_once 'include/bbcode.php';
$title = trim($b['title']);
if ($title != '') {
$title = "<h4>" . $title . "</h4>";
}
$params = array();
$params["verb"] = "post";
$params["object"] = array('objectType' => "note", 'content' => $title . bbcode($b['body'], false, false));
if ($public) {
$params["to"] = array(array("objectType" => "collection", "id" => "http://activityschema.org/collection/public"));
}
$client = new oauth_client_class();
$client->oauth_version = '1.0a';
$client->url_parameters = false;
$client->authorization_header = true;
$client->access_token = $oauth_token;
$client->access_token_secret = $oauth_token_secret;
$client->client_id = $consumer_key;
$client->client_secret = $consumer_secret;
$success = $client->CallAPI('https://' . $host . '/api/user/' . $user . '/feed', 'POST', $params, array('FailOnAccessError' => true, 'RequestContentType' => 'application/json'), $user);
if ($success) {
logger('pumpio_send: success');
} else {
logger('pumpio_send: general error: ' . print_r($user, true));
}
}
}