protected function resolveExtraSql(RedBeanModelJoinTablesQueryAdapter &$joinTablesAdapter, &$where) { if ($where != '') { $where .= ' and '; } $user = Yii::app()->user->userModel; $quote = DatabaseCompatibilityUtil::getQuote(); $starredTableName = StarredUtil::getStarredTableName($this->modelClassName); $extraOnQueryPart = "and {$quote}{$starredTableName}{$quote}.{$quote}user_id{$quote} = {$user->id}"; $starredTableAliasName = $joinTablesAdapter->addLeftTableAndGetAliasName($starredTableName, 'id', null, 'model_id', $extraOnQueryPart); $where .= "{$quote}{$starredTableAliasName}{$quote}.{$quote}user_id{$quote} = {$user->id}"; }
/** * @depends testCreateStarredTables */ public function testUnmarkModelAsStarredForAllUsers() { $super = User::getByUsername('super'); Yii::app()->user->userModel = $super; $steven = UserTestHelper::createBasicUser('Steven'); $account = new Account(); $account->owner = $super; $account->name = 'Test Account'; $account->officePhone = '1234567890'; $this->assertTrue($account->save()); StarredUtil::markModelAsStarred($account); Yii::app()->user->userModel = $steven; StarredUtil::markModelAsStarred($account); $tableName = StarredUtil::getStarredTableName('Account'); $sql = "SELECT id FROM {$tableName} WHERE model_id = :modelId;"; $rows = R::getAll($sql, $values = array(':modelId' => $account->id)); $this->assertCount(2, $rows); StarredUtil::unmarkModelAsStarredForAllUsers($account); $sql = "SELECT id FROM {$tableName} WHERE model_id = :modelId;"; $rows = R::getAll($sql, $values = array(':modelId' => $account->id)); $this->assertCount(0, $rows); }