Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
n/a
0 / 0
n/a
0 / 0
CRAP
n/a
0 / 0
1<?php
2
3namespace Flow\Import;
4
5use Flow\Import\Postprocessor\Postprocessor;
6use Flow\Import\SourceStore\SourceStoreInterface;
7use MediaWiki\Title\Title;
8use WikitextContent;
9
10/**
11 * Interface between the Converter and an implementation of IImportSource.
12 * Informs conversion behavior and which pages should be converted.
13 */
14interface IConversionStrategy {
15    /**
16     * @return SourceStoreInterface This should consistently return the
17     *  same store between conversion runs from the same source to
18     *  guarantee idempotent imports (without duplicate content).
19     */
20    public function getSourceStore();
21
22    /**
23     * @param Title $from The original location of the page
24     * @param Title $to The archive location of the page
25     * @return string A reason for moving the page to an archive location.
26     */
27    public function getMoveComment( Title $from, Title $to );
28
29    /**
30     * @param Title $from The original location of the page
31     * @param Title $to The archive location of the page
32     * @return string A reason for performing an edit to the
33     *  archive location.
34     */
35    public function getCleanupComment( Title $from, Title $to );
36
37    /**
38     * @param Title $title The current location of the page
39     * @param Title|null $movedFrom The location this was moved from
40     *  in a prior run of the converter.
41     * @return bool True when the conversion is complete and nothing
42     *  more can be done
43     */
44    public function isConversionFinished( Title $title, Title $movedFrom = null );
45
46    /**
47     * Create an ImportSource implementation for the provided Title.
48     * This provides a consistent interface to the headers, topics,
49     * summaries and posts to be imported.
50     *
51     * @param Title $title The page to import from
52     * @return IImportSource
53     */
54    public function createImportSource( Title $title );
55
56    /**
57     * Flow does not support viewing the history of the wikitext pages
58     * it takes over, so those need to be moved out the way. This method
59     * decides that destination.
60     *
61     * @param Title $source The title to be archived
62     * @return Title The title to archive $source to
63     * @throws ImportException When no title can be decided upon
64     */
65    public function decideArchiveTitle( Title $source );
66
67    /**
68     * Creates the content for an edit to the archived page content. When
69     * null is returned no edit is performed. This edit is performed by
70     * an administrative user provided to the Converter.
71     *
72     * @param WikitextContent $content
73     * @param Title $title
74     * @return WikitextContent|null
75     */
76    public function createArchiveCleanupRevisionContent( WikitextContent $content, Title $title );
77
78    /**
79     * Gets any postprocessors used for this type of conversion
80     * @return Postprocessor|null
81     */
82    public function getPostprocessor();
83
84    /**
85     * Checks whether the title should be converted.
86     * This is a secondary filter in addition to the original list (which might be a
87     * single title, a namespace, etc.) passed into convert/convertAll.
88     *
89     * @param Title $sourceTitle
90     * @return bool True if and only if it should be converted
91     */
92    public function shouldConvert( Title $sourceTitle );
93}