Completed
Pull Request — master (#287)
by Nic
03:54
created

FoxyCartProductCategory::canDelete()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 6
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 0
Metric Value
dl 0
loc 6
c 0
b 0
f 0
ccs 0
cts 2
cp 0
rs 9.4285
cc 2
eloc 2
nc 2
nop 1
crap 6
1
<?php
2
3
/**
4
 * @package FoxyStripe
5
 * @property string $Title
6
 * @property string $Code
7
 *
8
 */
9
class FoxyCartProductCategory extends DataObject
10
{
11
12
    /**
13
     * @var array
14
     */
15
    private static $db = array(
16
        'Title' => 'Varchar(255)',
17
        'Code' => 'Varchar(50)'
18
    );
19
20
    private static $singular_name = 'FoxyCart Category';
21
    private static $plural_name = 'FoxyCart Categories';
22
    private static $description = 'Set the FoxyCart Category on a Product';
23
24
    private static $summary_fields = array(
25
        'Title' => 'Name',
26
        'Code' => 'Code'
27
    );
28
29
    private static $indexes = array(
30
        'Code' => true
31
    );
32
33
    public function getCMSFields()
34
    {
35
36
        $fields = FieldList::create(
37
            LiteralField::create(
38
                'PCIntro',
39
                _t(
40
                    'ProductCategory.PCIntro',
41
                    '<p>Categories must be created in your
42
                        <a href="https://admin.foxycart.com/admin.php?ThisAction=ManageProductCategories" target="_blank">
43
                            FoxyCart Product Categories
44
                        </a>, and also manually created in FoxyStripe.
45
                    </p>'
46
                )
47
            ),
48
            TextField::create('Code')
49
                ->setTitle(_t('ProductCategory.Code', 'FoxyCart Category Code'))
50
                ->setDescription(_t('ProductCategory.CodeDescription', 'copy/paste from FoxyCart')),
51
            TextField::create('Title')
52
                ->setTitle(_t('ProductCategory.Title', 'FoxyCart Category Description'))
53
                ->setDescription(_t('ProductCategory.TitleDescription', 'copy/paste from FoxyCart'))
54
        );
55
56
        $this->extend('updateCMSFields', $fields);
57
58
        return $fields;
59
    }
60
61
    public function requireDefaultRecords()
62
    {
63
        parent::requireDefaultRecords();
64
        $allCats = DataObject::get('ProductCategory');
65
        if (!$allCats->count()) {
66
            $cat = new ProductCategory();
67
            $cat->Title = 'Default';
68
            $cat->Code = 'DEFAULT';
69
            $cat->write();
70
        }
71
    }
72
73
    public function canView($member = false)
74
    {
75
        return true;
76
    }
77
78
    public function canEdit($member = null)
79
    {
80
        return Permission::check('Product_CANCRUD');
81
    }
82
83
    public function canDelete($member = null)
84
    {
85
86
        //don't allow deletion of DEFAULT category
87
        return ($this->Code == 'DEFAULT') ? false : Permission::check('Product_CANCRUD');
88
    }
89
90
    public function canCreate($member = null)
91
    {
92
        return Permission::check('Product_CANCRUD');
93
    }
94
95
}
96