|
1
|
|
|
<?php namespace XoopsModules\Smartobject; |
|
2
|
|
|
|
|
3
|
|
|
/** |
|
4
|
|
|
* Contains the basic classe for managing a category object based on SmartObject |
|
5
|
|
|
* |
|
6
|
|
|
* @license GNU |
|
7
|
|
|
* @author marcan <[email protected]> |
|
8
|
|
|
* @link http://smartfactory.ca The SmartFactory |
|
9
|
|
|
* @package SmartObject |
|
10
|
|
|
* @subpackage SmartObjectItems |
|
11
|
|
|
*/ |
|
12
|
|
|
|
|
13
|
|
|
use XoopsModules\Smartobject; |
|
14
|
|
|
|
|
15
|
|
|
// defined('XOOPS_ROOT_PATH') || die('Restricted access'); |
|
16
|
|
|
//require_once XOOPS_ROOT_PATH . '/modules/smartobject/class/smartseoobject.php'; |
|
17
|
|
|
|
|
18
|
|
|
/** |
|
19
|
|
|
* Class SmartobjectCategory |
|
20
|
|
|
*/ |
|
21
|
|
|
class Category extends Smartobject\SeoObject |
|
22
|
|
|
{ |
|
23
|
|
|
public $_categoryPath; |
|
24
|
|
|
|
|
25
|
|
|
/** |
|
26
|
|
|
* SmartobjectCategory constructor. |
|
27
|
|
|
*/ |
|
28
|
|
|
public function __construct() |
|
29
|
|
|
{ |
|
30
|
|
|
$this->initVar('categoryid', XOBJ_DTYPE_INT, '', true); |
|
31
|
|
|
$this->initVar('parentid', XOBJ_DTYPE_INT, '', false, null, '', false, _CO_SOBJECT_CATEGORY_PARENTID, _CO_SOBJECT_CATEGORY_PARENTID_DSC); |
|
32
|
|
|
$this->initVar('name', XOBJ_DTYPE_TXTBOX, '', false, null, '', false, _CO_SOBJECT_CATEGORY_NAME, _CO_SOBJECT_CATEGORY_NAME_DSC); |
|
33
|
|
|
$this->initVar('description', XOBJ_DTYPE_TXTAREA, '', false, null, '', false, _CO_SOBJECT_CATEGORY_DESCRIPTION, _CO_SOBJECT_CATEGORY_DESCRIPTION_DSC); |
|
34
|
|
|
$this->initVar('image', XOBJ_DTYPE_TXTBOX, '', false, null, '', false, _CO_SOBJECT_CATEGORY_IMAGE, _CO_SOBJECT_CATEGORY_IMAGE_DSC); |
|
35
|
|
|
|
|
36
|
|
|
$this->initCommonVar('doxcode'); |
|
37
|
|
|
|
|
38
|
|
|
$this->setControl('image', ['name' => 'image']); |
|
39
|
|
|
$this->setControl('parentid', ['name' => 'parentcategory']); |
|
40
|
|
|
$this->setControl('description', [ |
|
41
|
|
|
'name' => 'textarea', |
|
42
|
|
|
'itemHandler' => false, |
|
43
|
|
|
'method' => false, |
|
44
|
|
|
'module' => false, |
|
45
|
|
|
'form_editor' => 'default' |
|
46
|
|
|
]); |
|
47
|
|
|
|
|
48
|
|
|
// call parent constructor to get SEO fields initiated |
|
49
|
|
|
parent::__construct(); |
|
50
|
|
|
} |
|
51
|
|
|
|
|
52
|
|
|
/** |
|
53
|
|
|
* returns a specific variable for the object in a proper format |
|
54
|
|
|
* |
|
55
|
|
|
* @access public |
|
56
|
|
|
* @param string $key key of the object's variable to be returned |
|
57
|
|
|
* @param string $format format to use for the output |
|
58
|
|
|
* @return mixed formatted value of the variable |
|
59
|
|
|
*/ |
|
60
|
|
View Code Duplication |
public function getVar($key, $format = 's') |
|
|
|
|
|
|
61
|
|
|
{ |
|
62
|
|
|
if ('s' === $format && in_array($key, ['description', 'image'])) { |
|
63
|
|
|
// return call_user_func(array($this, $key)); |
|
64
|
|
|
return $this->{$key}(); |
|
65
|
|
|
} |
|
66
|
|
|
|
|
67
|
|
|
return parent::getVar($key, $format); |
|
68
|
|
|
} |
|
69
|
|
|
|
|
70
|
|
|
/** |
|
71
|
|
|
* @return string |
|
72
|
|
|
*/ |
|
73
|
|
|
public function description() |
|
74
|
|
|
{ |
|
75
|
|
|
return $this->getValueFor('description', false); |
|
76
|
|
|
} |
|
77
|
|
|
|
|
78
|
|
|
/** |
|
79
|
|
|
* @return bool|mixed |
|
80
|
|
|
*/ |
|
81
|
|
|
public function image() |
|
82
|
|
|
{ |
|
83
|
|
|
$ret = $this->getVar('image', 'e'); |
|
84
|
|
|
if ('-1' == $ret) { |
|
85
|
|
|
return false; |
|
86
|
|
|
} else { |
|
87
|
|
|
return $ret; |
|
88
|
|
|
} |
|
89
|
|
|
} |
|
90
|
|
|
|
|
91
|
|
|
/** |
|
92
|
|
|
* @return array |
|
93
|
|
|
*/ |
|
94
|
|
|
public function toArray() |
|
95
|
|
|
{ |
|
96
|
|
|
$this->setVar('doxcode', true); |
|
97
|
|
|
global $myts; |
|
98
|
|
|
$objectArray = parent::toArray(); |
|
99
|
|
|
if ($objectArray['image']) { |
|
100
|
|
|
$objectArray['image'] = $this->getImageDir() . $objectArray['image']; |
|
101
|
|
|
} |
|
102
|
|
|
|
|
103
|
|
|
return $objectArray; |
|
104
|
|
|
} |
|
105
|
|
|
|
|
106
|
|
|
/** |
|
107
|
|
|
* Create the complete path of a category |
|
108
|
|
|
* |
|
109
|
|
|
* @todo this could be improved as it uses multiple queries |
|
110
|
|
|
* @param bool $withAllLink make all name clickable |
|
111
|
|
|
* @param bool $currentCategory |
|
112
|
|
|
* @return string complete path (breadcrumb) |
|
113
|
|
|
*/ |
|
114
|
|
|
public function getCategoryPath($withAllLink = true, $currentCategory = false) |
|
115
|
|
|
{ |
|
116
|
|
|
// require_once SMARTOBJECT_ROOT_PATH . 'class/smartobjectcontroller.php'; |
|
117
|
|
|
$controller = new ObjectController($this->handler); |
|
118
|
|
|
|
|
119
|
|
|
if (!$this->_categoryPath) { |
|
120
|
|
|
if ($withAllLink && !$currentCategory) { |
|
121
|
|
|
$ret = $controller->getItemLink($this); |
|
122
|
|
|
} else { |
|
123
|
|
|
$currentCategory = false; |
|
124
|
|
|
$ret = $this->getVar('name'); |
|
125
|
|
|
} |
|
126
|
|
|
$parentid = $this->getVar('parentid'); |
|
127
|
|
|
if (0 != $parentid) { |
|
128
|
|
|
$parentObj = $this->handler->get($parentid); |
|
129
|
|
|
if ($parentObj->isNew()) { |
|
130
|
|
|
exit; |
|
131
|
|
|
} |
|
132
|
|
|
$parentid = $parentObj->getVar('parentid'); |
|
|
|
|
|
|
133
|
|
|
$ret = $parentObj->getCategoryPath($withAllLink, $currentCategory) . ' > ' . $ret; |
|
134
|
|
|
} |
|
135
|
|
|
$this->_categoryPath = $ret; |
|
136
|
|
|
} |
|
137
|
|
|
|
|
138
|
|
|
return $this->_categoryPath; |
|
139
|
|
|
} |
|
140
|
|
|
} |
|
141
|
|
|
|
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.
You can also find more detailed suggestions in the “Code” section of your repository.