OxwallのMAINでイイネ!を押しても順序が変わらないようにする
OxwallでLikeボタンを押すと、押された記事がTOPに移動する。これをMAINでやられるとかなりウザいのでMAINでこの挙動を解除したい。
方法は、MAINのデータを取得するときのSQL文でlikeを除外すればOKだ。修正するのは「ow_plugin\newsfeed\bol\action_dao.php」内のquery文だ。WHERE句の$queryParts["where"]があるところに「activity.activityType<>"like"」を追加すればよい。複数の関数内で編集する。
findByFeed()修正前
$query = 'SELECT action.id FROM ' . $this->getTableName() . ' action INNER JOIN ' . $activityDao->getTableName() . ' activity ON action.id = activity.actionId INNER JOIN ' . $activityDao->getTableName() . ' cactivity ON action.id = cactivity.actionId ' . $queryParts["join"] . ' INNER JOIN ' . $actionFeedDao->getTableName() . ' action_feed ON activity.id=action_feed.activityId WHERE ' . $queryParts["where"] . '
findByFeed()修正後
$query = 'SELECT action.id FROM ' . $this->getTableName() . ' action INNER JOIN ' . $activityDao->getTableName() . ' activity ON action.id = activity.actionId INNER JOIN ' . $activityDao->getTableName() . ' cactivity ON action.id = cactivity.actionId ' . $queryParts["join"] . ' INNER JOIN ' . $actionFeedDao->getTableName() . ' action_feed ON activity.id=action_feed.activityId WHERE ' . $queryParts["where"] . ' AND activity.activityType<>"like" ' . '
findByUser()修正前
$query = ' SELECT b.`id` FROM ( SELECT action.`id`, action.`entityId`, action.`entityType`, action.`pluginKey`, action.`data`, activity.timeStamp FROM ' . $this->getTableName() . ' action INNER JOIN ' . $activityDao->getTableName() . ' activity ON action.id = activity.actionId INNER JOIN `' . $actionSetDao->getTableName() . '` cactivity ON action.id = cactivity.actionId ' . $queryParts["join"] . ' INNER JOIN ' . $actionFeedDao->getTableName() . ' action_feed ON activity.id=action_feed.activityId LEFT JOIN ' . $followDao->getTableName() . ' follow ON action_feed.feedId = follow.feedId AND action_feed.feedType = follow.feedType WHERE ' . $queryParts["where"] . ' AND cactivity.userId = :u AND activity.status=:s AND activity.timeStamp<:st AND (
findByUser()修正後
$query = ' SELECT b.`id` FROM ( SELECT action.`id`, action.`entityId`, action.`entityType`, action.`pluginKey`, action.`data`, activity.timeStamp FROM ' . $this->getTableName() . ' action INNER JOIN ' . $activityDao->getTableName() . ' activity ON action.id = activity.actionId INNER JOIN `' . $actionSetDao->getTableName() . '` cactivity ON action.id = cactivity.actionId ' . $queryParts["join"] . ' INNER JOIN ' . $actionFeedDao->getTableName() . ' action_feed ON activity.id=action_feed.activityId LEFT JOIN ' . $followDao->getTableName() . ' follow ON action_feed.feedId = follow.feedId AND action_feed.feedType = follow.feedType WHERE ' . $queryParts["where"] . ' AND activity.activityType<>"like" ' . ' AND cactivity.userId = :u AND activity.status=:s AND activity.timeStamp<:st AND (
findSiteFeed()修正前
WHERE ' . $queryParts["where"] . ' AND (cactivity.status=:s AND cactivity.activityType=:ac AND cactivity.privacy=:peb AND cactivity.visibility & :v) AND (activity.status=:s AND activity.privacy=:peb AND activity.visibility & :v AND activity.timeStamp < :st) GROUP BY action.id ORDER BY MAX(action.id) DESC ' . $limitStr;
findSiteFeed()修正後
WHERE ' . $queryParts["where"] . ' AND activity.activityType<>"like" AND (cactivity.status=:s AND cactivity.activityType=:ac AND cactivity.privacy=:peb AND cactivity.visibility & :v) AND (activity.status=:s AND activity.privacy=:peb AND activity.visibility & :v AND activity.timeStamp < :st) GROUP BY action.id ORDER BY MAX(activity.timeStamp) DESC ' . $limitStr;