Passed
Push — master ( d46765...078281 )
by Paul
05:16
created

Labels   A

Complexity

Total Complexity 11

Size/Duplication

Total Lines 103
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 1
Bugs 1 Features 0
Metric Value
eloc 57
c 1
b 1
f 0
dl 0
loc 103
ccs 0
cts 79
cp 0
rs 10
wmc 11

5 Methods

Rating   Name   Duplication   Size   Complexity  
A customizePostStatusLabels() 0 11 3
A filterUpdateMessages() 0 26 3
A getStatusLabels() 0 14 2
A filterPostStatusLabels() 0 6 2
A getReviewLabels() 0 15 1
1
<?php
2
3
namespace GeminiLabs\SiteReviews\Controllers\EditorController;
4
5
use GeminiLabs\SiteReviews\Application;
6
use WP_Post;
7
8
class Labels
9
{
10
    /**
11
     * @return void
12
     */
13
    public function customizePostStatusLabels()
14
    {
15
        global $wp_scripts;
16
        $strings = [
17
            'savePending' => __('Save as Unapproved', 'site-reviews'),
18
            'published' => __('Approved', 'site-reviews'),
19
        ];
20
        if (isset($wp_scripts->registered['post']->extra['data'])) {
21
            $l10n = &$wp_scripts->registered['post']->extra['data'];
22
            foreach ($strings as $search => $replace) {
23
                $l10n = preg_replace('/("'.$search.'":")([^"]+)/', '$1'.$replace, $l10n);
24
            }
25
        }
26
    }
27
28
    /**
29
     * @param string $translation
30
     * @param string $test
31
     * @return string
32
     */
33
    public function filterPostStatusLabels($translation, $text)
34
    {
35
        $replacements = $this->getStatusLabels();
36
        return array_key_exists($text, $replacements)
37
            ? $replacements[$text]
38
            : $translation;
39
    }
40
41
    /**
42
     * @return array
43
     */
44
    public function filterUpdateMessages(array $messages)
45
    {
46
        $post = get_post();
47
        if (!($post instanceof WP_Post)) {
48
            return;
49
        }
50
        $strings = $this->getReviewLabels();
51
        $restored = filter_input(INPUT_GET, 'revision');
52
        if ($revisionTitle = wp_post_revision_title(intval($restored), false)) {
53
            $restored = sprintf($strings['restored'], $revisionTitle);
54
        }
55
        $scheduled_date = date_i18n('M j, Y @ H:i', strtotime($post->post_date));
56
        $messages[Application::POST_TYPE] = [
57
             1 => $strings['updated'],
58
             4 => $strings['updated'],
59
             5 => $restored,
60
             6 => $strings['published'],
61
             7 => $strings['saved'],
62
             8 => $strings['submitted'],
63
             9 => sprintf($strings['scheduled'], '<strong>'.$scheduled_date.'</strong>'),
64
            10 => $strings['draft_updated'],
65
            50 => $strings['approved'],
66
            51 => $strings['unapproved'],
67
            52 => $strings['reverted'],
68
        ];
69
        return $messages;
70
    }
71
72
    /**
73
     * @return array
74
     */
75
    protected function getReviewLabels()
76
    {
77
        return [
78
            'approved' => __('Review has been approved and published.', 'site-reviews'),
79
            'draft_updated' => __('Review draft updated.', 'site-reviews'),
80
            'preview' => __('Preview review', 'site-reviews'),
81
            'published' => __('Review approved and published.', 'site-reviews'),
82
            'restored' => __('Review restored to revision from %s.', 'site-reviews'),
83
            'reverted' => __('Review has been reverted to its original submission state (title, content, and submission date).', 'site-reviews'),
84
            'saved' => __('Review saved.', 'site-reviews'),
85
            'scheduled' => __('Review scheduled for: %s.', 'site-reviews'),
86
            'submitted' => __('Review submitted.', 'site-reviews'),
87
            'unapproved' => __('Review has been unapproved and is now pending.', 'site-reviews'),
88
            'updated' => __('Review updated.', 'site-reviews'),
89
            'view' => __('View review', 'site-reviews'),
90
        ];
91
    }
92
93
    /**
94
     * Store the labels to avoid unnecessary loops.
95
     * @return array
96
     */
97
    protected function getStatusLabels()
98
    {
99
        static $labels;
100
        if (empty($labels)) {
101
            $labels = [
102
                'Pending' => __('Unapproved', 'site-reviews'),
103
                'Pending Review' => __('Unapproved', 'site-reviews'),
104
                'Privately Published' => __('Privately Approved', 'site-reviews'),
105
                'Publish' => __('Approve', 'site-reviews'),
106
                'Published' => __('Approved', 'site-reviews'),
107
                'Save as Pending' => __('Save as Unapproved', 'site-reviews'),
108
            ];
109
        }
110
        return $labels;
111
    }
112
}
113