Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 20
0.00% covered (danger)
0.00%
0 / 4
CRAP
0.00% covered (danger)
0.00%
0 / 1
TopicImportState
0.00% covered (danger)
0.00%
0 / 20
0.00% covered (danger)
0.00%
0 / 4
30
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 6
0.00% covered (danger)
0.00%
0 / 1
2
 getMetadata
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 1
2
 recordUpdateTime
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
6
 commitLastUpdated
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3namespace Flow\Import;
4
5use Flow\Model\PostRevision;
6use Flow\Model\UUID;
7use Flow\Model\Workflow;
8use ReflectionProperty;
9
10class TopicImportState {
11    /**
12     * @var PageImportState
13     */
14    public $parent;
15
16    /**
17     * @var Workflow
18     */
19    public $topicWorkflow;
20
21    /**
22     * @var PostRevision
23     */
24    public $topicTitle;
25
26    /**
27     * @var string
28     */
29    protected $lastUpdated;
30
31    /**
32     * @var ReflectionProperty
33     */
34    private $workflowUpdatedProperty;
35
36    public function __construct( PageImportState $parent, Workflow $topicWorkflow, PostRevision $topicTitle ) {
37        $this->parent = $parent;
38        $this->topicWorkflow = $topicWorkflow;
39        $this->topicTitle = $topicTitle;
40
41        $this->workflowUpdatedProperty = new ReflectionProperty( Workflow::class, 'lastUpdated' );
42
43        $this->lastUpdated = '';
44        $this->recordUpdateTime( $topicWorkflow->getId() );
45    }
46
47    public function getMetadata() {
48        return [
49            'workflow' => $this->topicWorkflow,
50            'board-workflow' => $this->parent->boardWorkflow,
51            'topic-title' => $this->topicTitle,
52        ];
53    }
54
55    /**
56     * Notify the state about a modification action at a given time.
57     *
58     * @param UUID $uuid UUID of the modification revision.
59     */
60    public function recordUpdateTime( UUID $uuid ) {
61        $timestamp = $uuid->getTimestamp();
62        $timestamp = wfTimestamp( TS_MW, $timestamp );
63
64        if ( $timestamp > $this->lastUpdated ) {
65            $this->lastUpdated = $timestamp;
66        }
67    }
68
69    /**
70     * Saves the last updated timestamp based on calls to recordUpdateTime
71     * XXX: Kind of icky; reaching through the parent and doing a second put().
72     */
73    public function commitLastUpdated() {
74        $this->workflowUpdatedProperty->setValue(
75            $this->topicWorkflow,
76            $this->lastUpdated
77        );
78
79        $this->parent->put( $this->topicWorkflow, $this->getMetadata() );
80    }
81}