Code Duplication    Length = 15-27 lines in 2 locations

src/Xtools/PagesRepository.php 2 locations

@@ 136-162 (lines=27) @@
133
     * @param User|null $user Specify to get only revisions by the given user.
134
     * @return Doctrine\DBAL\Driver\PDOStatement
135
     */
136
    public function getRevisionsStmt(Page $page, User $user = null)
137
    {
138
        $revTable = $this->getTableName($page->getProject()->getDatabaseName(), 'revision');
139
        $userClause = $user ? "revs.rev_user_text in (:username) AND " : "";
140
141
        $sql = "SELECT
142
                    revs.rev_id AS id,
143
                    revs.rev_timestamp AS timestamp,
144
                    revs.rev_minor_edit AS minor,
145
                    revs.rev_len AS length,
146
                    (CAST(revs.rev_len AS SIGNED) - IFNULL(parentrevs.rev_len, 0)) AS length_change,
147
                    revs.rev_user AS user_id,
148
                    revs.rev_user_text AS username,
149
                    revs.rev_comment AS comment
150
                FROM $revTable AS revs
151
                LEFT JOIN $revTable AS parentrevs ON (revs.rev_parent_id = parentrevs.rev_id)
152
                WHERE $userClause revs.rev_page = :pageid
153
                ORDER BY revs.rev_timestamp ASC";
154
155
        $params = ['pageid' => $page->getId()];
156
        if ($user) {
157
            $params['username'] = $user->getUsername();
158
        }
159
160
        $conn = $this->getProjectsConnection();
161
        return $conn->executeQuery($sql, $params);
162
    }
163
164
    /**
165
     * Get a count of the number of revisions of a single page
@@ 170-184 (lines=15) @@
167
     * @param User|null $user Specify to only count revisions by the given user.
168
     * @return int
169
     */
170
    public function getNumRevisions(Page $page, User $user = null)
171
    {
172
        $revTable = $this->getTableName($page->getProject()->getDatabaseName(), 'revision');
173
        $userClause = $user ? "rev_user_text in (:username) AND " : "";
174
175
        $sql = "SELECT COUNT(*)
176
                FROM $revTable
177
                WHERE $userClause rev_page = :pageid";
178
        $params = ['pageid' => $page->getId()];
179
        if ($user) {
180
            $params['username'] = $user->getUsername();
181
        }
182
        $conn = $this->getProjectsConnection();
183
        return $conn->executeQuery($sql, $params)->fetchColumn(0);
184
    }
185
186
    /**
187
     * Get various basic info used in the API, including the