ふたりはララベル (Laravel PHP Framework)

PHPフレームワークのLaravelの体験記を書いていきます。こんなタイトルのブログですが萌え系アニメは一秒たりとも観たことがありません。

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;