Ejemplo n.º 1
0
 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;
 }
Ejemplo n.º 2
0
 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;
 }
Ejemplo n.º 4
0
 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;
         }
     }
 }
Ejemplo n.º 5
0
 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;
 }
Ejemplo n.º 6
0
 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;
 }