当前位置: 首页>>代码示例>>PHP>>正文


PHP is_item_normal函数代码示例

本文整理汇总了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'));
        }
    }
}
开发者ID:phellmes,项目名称:hubzilla-addons,代码行数:76,代码来源:wppost.php

示例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);
    }
}
开发者ID:phellmes,项目名称:hubzilla-addons,代码行数:71,代码来源:dwpost.php

示例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('&#x22d5;', ENT_COMPAT, 'UTF-8');
            $new_mention = html_entity_decode('&#xff20;', 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);
        }
    }
}
开发者ID:git-marijus,项目名称:hubzilla-addons,代码行数:86,代码来源:diaspost.php

示例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));
        }
    }
}
开发者ID:einervonvielen,项目名称:redmatrix-addons,代码行数:37,代码来源:rtof.php

示例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);
//.........这里部分代码省略.........
开发者ID:git-marijus,项目名称:hubzilla-addons,代码行数:101,代码来源:twitter.php

示例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
}
开发者ID:kenrestivo,项目名称:hubzilla,代码行数:101,代码来源:item.php

示例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("&#x2672; ", ENT_QUOTES, 'UTF-8');
                $tmp = preg_replace('/' . $recycle . '\\[url\\=(\\w+.*?)\\](\\w+.*?)\\[\\/url\\]/i', $recycle . '$2', $tmp);
                // recycle 2 (test)
                $recycle = html_entity_decode("&#x25CC; ", 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);
                        }
//.........这里部分代码省略.........
开发者ID:phellmes,项目名称:hubzilla-addons,代码行数:101,代码来源:statusnet.php

示例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));
    }
}
开发者ID:einervonvielen,项目名称:redmatrix-addons,代码行数:61,代码来源:libertree.php

示例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));
        }
    }
}
开发者ID:royalterra,项目名称:hubzilla-addons,代码行数:53,代码来源:pumpio.php


注:本文中的is_item_normal函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。