function myPlurk_AddPlurkIcon($target, $mother) { global $blogid, $service, $database, $suri, $blogURL, $pluginURL, $configVal; requireComponent('Textcube.Function.misc'); $data = misc::fetchConfigVal($configVal); $attachResponses = isset($data['attachResponses']) && $data['attachResponses'] == 1 ? true : false; $plurklang = Setting::getBlogSettingGlobal('blogLanguage', ''); $plurkIcon = ""; $responsePlurks = ""; if ($suri['directive'] != "/rss" && $suri['directive'] != "/m" && $suri['directive'] != "/i/entry" && $suri['directive'] != "/atom" && $suri['directive'] != "/sync" && POD::queryCount("SELECT id FROM {$database['prefix']}PlurkEntries WHERE blogid={$blogid} AND id={$mother}") > 0) { $plurk_id = intval(POD::queryCell("SELECT plurkid FROM {$database['prefix']}PlurkEntries WHERE blogid={$blogid} AND id={$mother}")); $plurkLink = "http://www.plurk.com/p/" . base_convert($plurk_id, 10, 36); if (!empty($plurkLink)) { $plurkIcon = '<div id="plurkthis"><img src="' . $pluginURL . '/images/plurkicon.png" border="0" width="16" height="16" alt="Plurk This!" /> PLURK: <a href="' . $plurkLink . '" target="_blank">' . $plurkLink . '</a></div><br />'; } if (!$attachResponses) { return $plurkIcon . $target; } $cache = new PageCache(); $cache->name = 'HC_TCPlurkCache'; if ($cache->load()) { $cache->contents = unserialize($cache->contents); if (array_key_exists($mother, $cache->contents) && Timestamp::getUNIXtime() - $cache->dbContents < 600) { return $plurkIcon . $target . $cache->contents[$mother]; } } require_once "libs/plurk_api.php"; $plurk = new plurk_api(); $plurkNickname = isset($data['plurknickname']) ? $data['plurknickname'] : ""; $plurkPassword = isset($data['plurkpassword']) ? $data['plurkpassword'] : ""; $plurk_api = 'iMCH3JDDda7c4bs0qiOchZcxAx7t8PA7'; if (!$plurk->login($plurk_api, $plurkNickname, $plurkPassword)) { return $plurkIcon . $target; } $responsePlurks = ""; $response = $plurk->get_responses($plurk_id); if ($response->responses_seen > 0) { $qualifiers = array("loves", "likes", "shares", "gives", "hates", "wants", "wishes", "needs", "will", "hopes", "asks", "has", "was", "wonders", "feels", "thinks", "says", "is"); $qualifiers_locale = array('en' => $qualifiers, 'zh-TW' => array("愛", "喜歡", "推", "給", "討厭", "想要", "希望", "需要", "打算", "希望", "問", "已經", "曾經", "好奇", "覺得", "想", "說", "正在"), 'zh-CN' => array("爱", "喜欢", "推", "给", "讨厌", "想要", "希望", "需要", "打算", "希望", "问", "已经", "曾经", "好奇", "觉得", "想", "说", "正在")); $lang = "en"; switch ($plurklang) { case "zh-TW": case "zh-CN": $lang = $plurklang; break; default: $lang = "en"; } $friends = array(); $nick2displayname = array('nickname' => array(), 'displayname' => array()); foreach ($response->friends as $friend) { $friends[$friend->uid]['display_name'] = $friend->display_name; $friends[$friend->uid]['nick_name'] = $friend->nick_name; $friends[$friend->uid]['has_profile_image'] = $friend->has_profile_image == 1 ? true : false; $friends[$friend->uid]['avatar'] = $friend->avatar == null ? "" : $friend->avatar; if (!in_array($friend->nick_name, $nick2displayname['nickname'])) { array_push($nick2displayname['nickname'], $friend->nick_name); array_push($nick2displayname['displayname'], $friend->display_name); } } ob_start(); echo "<div class=\"plurkResponse\" id=\"plurkResponse_{$mother}\">\n"; echo "<h3>" . _f("%1 Responses to this Plurk", $response->responses_seen) . "</h3>\n"; echo "<div class=\"plurkResponseLists\">\n<table cellpadding=\"2\" cellspacing=\"2\" border=\"0\">\n"; foreach ($response->responses as $commentObj) { $comment = (array) $commentObj; $userIcon = $friends[$comment['user_id']]['has_profile_image'] ? "http://avatars.plurk.com/{$comment['user_id']}-medium{$friends[$comment['user_id']]['avatar']}.gif" : ""; $display_name = $friends[$comment['user_id']]['display_name']; $nick_name = $friends[$comment['user_id']]['nick_name']; $qualifier = in_array($comment['qualifier'], $qualifiers) ? $comment['qualifier'] : ""; $qualifierKey = array_keys($qualifiers, $comment['qualifier']); $qualifier_trans = isset($qualifiers_locale[$lang][$qualifierKey[0]]) ? $qualifiers_locale[$lang][$qualifierKey[0]] : ''; if (preg_match_all('/<a href="http:\\/\\/www.plurk.com\\/(.*?)" class="ex_link">(.*?)<\\/a>/ms', $comment['content'], $matches)) { $mlen = count($matches[1]); for ($i = $mlen - 1; $i >= 0; $i--) { if (in_array($matches[1][$i], $nick2displayname['nickname'])) { $replydisplayname = $nick2displayname['displayname'][array_search($matches[1][$i], $nick2displayname['nickname'])]; $comment['content'] = str_replace('<a href="http://www.plurk.com/' . $matches[1][$i] . '" class="ex_link">' . $matches[2][$i] . '</a>', '<a href="http://www.plurk.com/' . $matches[1][$i] . '" class="ex_link">' . $replydisplayname . '</a>', $comment['content']); } } } echo "<tr><td class=\"user_icon\"><a href=\"http://www.plurk.com/{$nick_name}\" target=\"_blank\"><img src=\"{$userIcon}\" border=\"0\" width=\"45\" height=\"45\" alt=\"{$display_name}\" title=\"{$display_name}\" onerror=\"this.src='{$pluginURL}/images/nonusericon.gif'\" /></a></td>\n"; echo "<td class=\"plurkcontent\"><a href=\"http://www.plurk.com/{$nick_name}\" target=\"_blank\">{$display_name}</a> \n"; echo "<span class=\"qualifier_{$qualifier}\">{$qualifier_trans}</span> <span class=\"plurkcomment\">{$comment['content']}</span></td></tr>\n"; } echo "</table>\n</div>\n<p style=\"text-align:right;line-height:1em;\" class=\"plurkResponseMoreButton\">" . _t('MorePlurk...') . "</p>\n"; echo "</div>\n\n"; $responsePlurks = ob_get_contents(); ob_end_clean(); } else { // no response } $cache->contents[$mother] = $responsePlurks; $cache->contents = serialize($cache->contents); $cache->dbContents = Timestamp::getUNIXtime(); $cache->update(); unset($cache); } return $plurkIcon . $target . $responsePlurks; }