function get_tags_by_account($account) { $member_id = MemberUtils::get_id_by_account($account); $db =& DBUtils::connect(); $sql = "SELECT t.name, COUNT(t.id) AS cnt\n FROM member m\n JOIN source s ON m.id = s.member_id\n JOIN source_to_feed s2f ON s.id = s2f.source_id\n JOIN feed f ON s2f.feed_id = f.id\n JOIN feed_to_entry f2e ON f.id = f2e.feed_id\n JOIN entry e ON f2e.entry_id = e.id\n JOIN entry_to_tag e2t ON e.id = e2t.entry_id\n JOIN tag t ON e2t.tag_id = t.id\n WHERE m.id = ?\n GROUP BY t.id"; $tags = $db->getAll($sql, array($member_id)); if (DB::isError($tags)) { trigger_error('fetch error.' . $tags->toString(), E_USER_ERROR); return false; } return $tags; }
function execute(&$controller, &$request, &$user) { $account = $request->hasParameter('account') ? $request->getParameter('account') : null; $member = $user->getAttribute('member', GLU_NS); $owner_id = MemberUtils::get_id_by_account($account); $visitor_id = isset($member->id) ? $member->id : null; $site = SiteUtils::get_by_account($account); $request->setAttribute('site', $site); $controller->forward('Footprint', 'AddFootprint'); $footprints = FootprintUtils::get_footprints($owner_id, $visitor_id); $request->setAttribute('footprints', $footprints); return VIEW_SUCCESS; }
function update_content_category_id_by_account_and_feed_id($cc_id, $account, $feed_id) { $member_id = MemberUtils::get_id_by_account($account); $db =& DBUtils::connect(); $exists = MemberToContentCategoryToFeedUtils::is_exists_by_member_id_and_feed_id($member_id, $feed_id); if ($exists) { $fields = array('content_category_id' => $cc_id); $result = $db->autoExecute('member_to_content_category_to_feed', $fields, DB_AUTOQUERY_UPDATE, "member_id = {$member_id} AND feed_id = {$feed_id}"); } else { $fields = array('content_category_id' => $cc_id, 'member_id' => $member_id, 'feed_id' => $feed_id); $result = $db->autoExecute('member_to_content_category_to_feed', $fields, DB_AUTOQUERY_INSERT); } if (DB::isError($result)) { trigger_error(__CLASS__ . '::' . __FUNCTION__ . '(): ' . $result->toString(), E_USER_ERROR); return false; } return $result; }
function execute(&$controller, &$request, &$user) { $account = $request->hasParameter('account') ? $request->getParameter('account') : null; $member = $user->getAttribute('member', GLU_NS); $owner_id = MemberUtils::get_id_by_account($account); $visitor_id = isset($member->id) ? $member->id : null; if ($visitor_id and $owner_id != $visitor_id and !FootprintUtils::is_exist_today($owner_id, $visitor_id)) { $footprint = DB_DataObject::factory('footprint'); $footprint->owner_id = $owner_id; $footprint->visitor_id = $visitor_id; $footprint_id = $footprint->insert(); if ($footprint_id === false) { $error =& PEAR::getStaticProperty('DB_DataObject', 'lastError'); if (PEAR::isError($error)) { trigger_error($error->toString(), E_USER_ERROR); exit; } return VIEW_NONE; } } }
function get_entries_count_by_account_and_tagname($account, $tagname) { $member_id = MemberUtils::get_id_by_account($account); $db =& DBUtils::connect(); $sql = "SELECT COUNT(e.id) AS CNT\n FROM member_to_feed m2f\n JOIN feed f ON m2f.feed_id = f.id\n JOIN entry e ON f.id = e.feed_id\n JOIN entry_to_tag e2t ON e.id = e2t.entry_id\n JOIN tag t ON e2t.tag_id = t.id\n WHERE m2f.member_id = ?\n AND t.name = ?"; $result =& $db->getOne($sql, array($member_id, $tagname)); if (DB::isError($result)) { trigger_error(__CLASS__ . '::' . __FUNCTION__ . '(): ' . $result->toString(), E_USER_ERROR); return false; } return $result; }
function execute(&$controller, &$request, &$user) { $uri = $request->getParameter('uri'); $member = $user->getAttribute('member', GLU_NS); $redirect = $request->hasParameter('redirect') ? $request->getParameter('redirect') : null; $cc_id = $this->getContentCategoryIdByUri($uri) ? $this->getContentCategoryIdByUri($uri) : 8; // get feed $f = new FeedParser($uri); $parse_result = $f->parse(); if ($parse_result === false) { trigger_error(__CLASS__ . '::' . __FUNCTION__ . '(): ' . "Failed to parse feed uri: {$uri}", E_USER_NOTICE); header('Content-Type: text/plain; charset=utf-8'); echo 'false'; return VIEW_NONE; } $name = $f->getTitle(); $favicon = $f->getFavicon() ? $f->getFavicon() : SCRIPT_PATH . 'images/favicon.ico'; $db =& DBUtils::connect(false); $db->query('BEGIN'); // get feedId $feedId = $this->getFeedIdByUri($uri); if ($feedId === false) { // add feed $fields = array('uri' => $uri, 'link' => $f->getLink(), 'title' => $f->getTitle(), 'description' => $f->getDescription(), 'favicon' => $favicon, 'lastupdatedtime' => date("Y-m-d H:i:s")); $res = $db->autoExecute('feed', $fields, DB_AUTOQUERY_INSERT); if (DB::isError($res)) { $db->rollback(); trigger_error(__CLASS__ . '::' . __FUNCTION__ . '(): ' . "Failed to insert. " . $res->toString(), E_USER_ERROR); header('Content-Type: text/plain; charset=utf-8'); echo 'false'; return VIEW_NONE; } // specific mysql $feedId = $db->getOne('SELECT LAST_INSERT_ID()'); } // add member_to_feed $m2f_fields = array('member_id' => MemberUtils::get_id_by_account($member->account), 'feed_id' => $feedId); if (DBUtils::get('member_to_feed', $m2f_fields)) { echo "'already exists'"; // already exists return VIEW_NONE; } $res = $db->autoExecute('member_to_feed', $m2f_fields, DB_AUTOQUERY_INSERT); if (DB::isError($res)) { $db->rollback(); trigger_error(__CLASS__ . '::' . __FUNCTION__ . '(): ' . "Failed to insert m2f. " . $res->toString(), E_USER_WARNING); header('Content-Type: text/plain; charset=utf-8'); echo 'false'; return VIEW_NONE; } // add member_to_content_category_to_feed $m2cc2f_fields = array('member_id' => $member->id, 'content_category_id' => $cc_id, 'feed_id' => $feedId); $sql = "SELECT count(*)\n FROM member_to_content_category_to_feed\n WHERE member_id = ?\n AND content_category_id = ?\n AND feed_id = ? "; if ($db->getOne($sql, array_values($m2cc2f_fields)) == 0) { $res = $db->autoExecute('member_to_content_category_to_feed', $m2cc2f_fields, DB_AUTOQUERY_INSERT); if (DB::isError($res)) { $db->rollback(); trigger_error(__CLASS__ . '::' . __FUNCTION__ . '(): ' . 'Failed to insert m2cc2f. ' . $res->toString(), E_USER_WARNING); header('Content-Type: text/plain; charset=utf-8'); echo 'false'; return VIEW_NONE; } } // try to crawl $crawler =& new Crawler(); $crawl_result = $crawler->crawl($uri); if ($crawl_result === false) { $db->rollback(); trigger_error("AddFeedAction::execute(): Failed to crawl: {$uri}", E_USER_NOTICE); header('Content-Type: text/plain; charset=utf-8'); echo 'false'; return VIEW_NONE; } $db->commit(); if ($redirect) { Controller::redirect(SCRIPT_PATH . 'setting/feed'); } else { header('Content-Type: text/plain; charset=utf-8'); echo 'true'; } return VIEW_NONE; }