Completed
Push — master ( 17429c...067f41 )
by Damian
02:18
created

code/compat/pages/BlogEntry.php (7 issues)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
3
/**
4
 * @deprecated since version 2.0
5
 *
6
 * @property int $ParentID
7
 * @property string $Date
8
 * @property string $PublishDate
9
 * @property string $Tags
10
 */
11
class BlogEntry extends BlogPost implements MigratableObject
0 ignored issues
show
Coding Style Compatibility introduced by
PSR1 recommends that each class must be in a namespace of at least one level to avoid collisions.

You can fix this by adding a namespace to your class:

namespace YourVendor;

class YourClass { }

When choosing a vendor namespace, try to pick something that is not too generic to avoid conflicts with other libraries.

Loading history...
12
{
13
    /**
14
     * @var string
15
     */
16
    private static $hide_ancestor = 'BlogEntry';
0 ignored issues
show
The property $hide_ancestor is not used and could be removed.

This check marks private properties in classes that are never used. Those properties can be removed.

Loading history...
17
18
    /**
19
     * @var array
20
     */
21
    private static $db = array(
0 ignored issues
show
Comprehensibility introduced by
Consider using a different property name as you override a private property of the parent class.
Loading history...
The property $db is not used and could be removed.

This check marks private properties in classes that are never used. Those properties can be removed.

Loading history...
22
        'Date' => 'SS_Datetime',
23
        'Author' => 'Text',
24
        'Tags' => 'Text',
25
    );
26
27
    /**
28
     * {@inheritdoc}
29
     */
30
    public function canCreate($member = null)
31
    {
32
        return false;
33
    }
34
35
    /**
36
     * {@inheritdoc}
37
     */
38
    public function up()
39
    {
40
        
41
        //Migrate comma separated tags into BlogTag objects.
42
        foreach ($this->TagNames() as $tag) {
0 ignored issues
show
Deprecated Code introduced by
The method BlogEntry::TagNames() has been deprecated with message: since version 2.0

This method has been deprecated. The supplier of the class has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the method will be removed from the class and what other method or class to use instead.

Loading history...
43
            $existingTag = BlogTag::get()->filter(array('Title' => $tag, 'BlogID' => $this->ParentID));
44
            if ($existingTag->count()) {
45
                //if tag already exists we will simply add it to this post.
46
                $tagObject = $existingTag->First();
47
            } else {
48
49
                //if the tag is now we create it and add it to this post.
50
                $tagObject = new BlogTag();
51
                $tagObject->Title = $tag;
52
                $tagObject->BlogID = $this->ParentID;
53
                $tagObject->write();
54
            }
55
56
            if ($tagObject) {
57
                $this->Tags()->add($tagObject);
58
            }
59
        }
60
61
        //Store if the original entity was published or not (draft)
62
        $published = $this->IsPublished();
63
        // If a user has subclassed BlogEntry, it should not be turned into a BlogPost.
64
        if ($this->ClassName === 'BlogEntry') {
65
            $this->ClassName = 'BlogPost';
66
            $this->RecordClassName = 'BlogPost';
67
        }
68
        //Migrate these key data attributes
69
        $this->PublishDate = $this->Date;
70
        $this->AuthorNames = $this->Author;
71
        $this->InheritSideBar = true;
72
        
73
        //Write and additionally publish the item if it was published before.
74
        $this->write();
75
        if ($published) {
76
            $this->publish('Stage', 'Live');
77
            $message = "PUBLISHED: ";
78
        } else {
79
            $message = "DRAFT: ";
80
        }
81
        
82
        return $message . $this->Title;
83
    }
84
85
    /**
86
     * Safely split and parse all distinct tags assigned to this BlogEntry.
87
     *
88
     * @deprecated since version 2.0
89
     *
90
     * @return array
91
     */
92
    public function TagNames()
93
    {
94
        $tags = preg_split('/\s*,\s*/', trim($this->Tags));
95
96
        $results = array();
97
98
        foreach ($tags as $tag) {
99
            if ($tag) {
100
                $results[mb_strtolower($tag)] = $tag;
101
            }
102
        }
103
104
        return $results;
105
    }
106
}
107
108
/**
109
 * @deprecated since version 2.0
110
 */
111
class BlogEntry_Controller extends BlogPost_Controller
0 ignored issues
show
Coding Style Compatibility introduced by
PSR1 recommends that each class should be in its own file to aid autoloaders.

Having each class in a dedicated file usually plays nice with PSR autoloaders and is therefore a well established practice. If you use other autoloaders, you might not want to follow this rule.

Loading history...
Coding Style Compatibility introduced by
PSR1 recommends that each class must be in a namespace of at least one level to avoid collisions.

You can fix this by adding a namespace to your class:

namespace YourVendor;

class YourClass { }

When choosing a vendor namespace, try to pick something that is not too generic to avoid conflicts with other libraries.

Loading history...
112
{
113
}
114