This project does not seem to handle request data directly as such no vulnerable execution paths were found.
include
, or for example
via PHP's auto-loading mechanism.
These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
1 | <?php namespace XoopsModules\Smartobject; |
||
2 | |||
3 | /** |
||
4 | * Contains the classes responsible for displaying a tree table filled with records of SmartObjects |
||
5 | * |
||
6 | * @license GNU |
||
7 | * @author marcan <[email protected]> |
||
8 | * @link http://smartfactory.ca The SmartFactory |
||
9 | * @package SmartObject |
||
10 | * @subpackage SmartObjectTable |
||
11 | */ |
||
12 | |||
13 | use XoopsModules\Smartobject; |
||
14 | |||
15 | //require_once SMARTOBJECT_ROOT_PATH . 'class/smartobjecttable.php'; |
||
16 | |||
17 | /** |
||
18 | * SmartObjectTreeTable class |
||
19 | * |
||
20 | * Class representing a tree table for displaying SmartObjects |
||
21 | * |
||
22 | * @package SmartObject |
||
23 | * @author marcan <[email protected]> |
||
24 | * @link http://smartfactory.ca The SmartFactory |
||
25 | */ |
||
26 | class TreeTable extends Smartobject\BaseSmartObjectTable |
||
27 | { |
||
28 | /** |
||
29 | * SmartObjectTreeTable constructor. |
||
30 | * @param PersistableObjectHandler $objectHandler |
||
31 | * @param bool $criteria |
||
32 | * @param array $actions |
||
33 | * @param bool $userSide |
||
34 | */ |
||
35 | public function __construct( |
||
36 | PersistableObjectHandler $objectHandler, |
||
37 | $criteria = false, |
||
38 | $actions = ['edit', 'delete'], |
||
39 | $userSide = false |
||
40 | ) { |
||
41 | $this->SmartObjectTable($objectHandler, $criteria, $actions, $userSide); |
||
42 | $this->_isTree = true; |
||
43 | } |
||
44 | |||
45 | /** |
||
46 | * Get children objects given a specific parentid |
||
47 | * |
||
48 | * @var int $parentid id of the parent which children we want to retreive |
||
49 | * @return array of SmartObject |
||
50 | */ |
||
51 | public function getChildrenOf($parentid = 0) |
||
52 | { |
||
53 | return isset($this->_objects[$parentid]) ? $this->_objects[$parentid] : false; |
||
54 | } |
||
55 | |||
56 | /** |
||
57 | * @param $object |
||
58 | * @param int $level |
||
59 | */ |
||
60 | public function createTableRow($object, $level = 0) |
||
61 | { |
||
62 | $aObject = []; |
||
63 | |||
64 | $i = 0; |
||
65 | |||
66 | $aColumns = []; |
||
67 | $doWeHaveActions = false; |
||
68 | |||
69 | foreach ($this->_columns as $column) { |
||
70 | $aColumn = []; |
||
71 | |||
72 | View Code Duplication | if (0 == $i) { |
|
73 | $class = 'head'; |
||
74 | } elseif (0 == $i % 2) { |
||
75 | $class = 'even'; |
||
76 | } else { |
||
77 | $class = 'odd'; |
||
78 | } |
||
79 | |||
80 | if ($column->_customMethodForValue && method_exists($object, $column->_customMethodForValue)) { |
||
81 | $method = $column->_customMethodForValue; |
||
82 | $value = $object->$method(); |
||
83 | View Code Duplication | } else { |
|
84 | /** |
||
85 | * If the column is the identifier, then put a link on it |
||
86 | */ |
||
87 | if ($column->getKeyName() == $this->_objectHandler->identifierName) { |
||
88 | $value = $object->getItemLink(); |
||
89 | } else { |
||
90 | $value = $object->getVar($column->getKeyName()); |
||
91 | } |
||
92 | } |
||
93 | |||
94 | $space = ''; |
||
95 | if ($column->getKeyName() == $this->_objectHandler->identifierName) { |
||
96 | for ($i = 0; $i < $level; ++$i) { |
||
97 | $space .= '--'; |
||
98 | } |
||
99 | } |
||
100 | |||
101 | if ('' !== $space) { |
||
102 | $space .= ' '; |
||
103 | } |
||
104 | |||
105 | $aColumn['value'] = $space . $value; |
||
106 | $aColumn['class'] = $class; |
||
107 | $aColumn['width'] = $column->getWidth(); |
||
108 | $aColumn['align'] = $column->getAlign(); |
||
109 | $aColumn['key'] = $column->getKeyName(); |
||
110 | |||
111 | $aColumns[] = $aColumn; |
||
112 | ++$i; |
||
113 | } |
||
114 | |||
115 | $aObject['columns'] = $aColumns; |
||
116 | |||
117 | $class = 'even' === $class ? 'odd' : 'even'; |
||
118 | $aObject['class'] = $class; |
||
119 | |||
120 | $actions = []; |
||
121 | |||
122 | // Adding the custom actions if any |
||
123 | foreach ($this->_custom_actions as $action) { |
||
124 | if (method_exists($object, $action)) { |
||
125 | $actions[] = $object->$action(); |
||
126 | } |
||
127 | } |
||
128 | |||
129 | // require_once SMARTOBJECT_ROOT_PATH . 'class/smartobjectcontroller.php'; |
||
130 | $controller = new ObjectController($this->_objectHandler); |
||
131 | |||
132 | View Code Duplication | if (in_array('edit', $this->_actions)) { |
|
133 | $actions[] = $controller->getEditItemLink($object, false, true); |
||
134 | } |
||
135 | View Code Duplication | if (in_array('delete', $this->_actions)) { |
|
136 | $actions[] = $controller->getDeleteItemLink($object, false, true); |
||
137 | } |
||
138 | $aObject['actions'] = $actions; |
||
139 | |||
140 | $this->_tpl->assign('smartobject_actions_column_width', count($actions) * 30); |
||
141 | $aObject['id'] = $object->id(); |
||
142 | $this->_aObjects[] = $aObject; |
||
143 | |||
144 | $childrenObjects = $this->getChildrenOf($object->id()); |
||
145 | |||
146 | $this->_hasActions = $this->_hasActions ? true : count($actions) > 0; |
||
147 | |||
148 | if ($childrenObjects) { |
||
0 ignored issues
–
show
|
|||
149 | ++$level; |
||
150 | foreach ($childrenObjects as $subObject) { |
||
151 | $this->createTableRow($subObject, $level); |
||
152 | } |
||
153 | } |
||
154 | } |
||
155 | |||
156 | public function createTableRows() |
||
157 | { |
||
158 | $this->_aObjects = []; |
||
159 | |||
160 | if (count($this->_objects) > 0) { |
||
161 | foreach ($this->getChildrenOf() as $object) { |
||
162 | $this->createTableRow($object); |
||
163 | } |
||
164 | |||
165 | $this->_tpl->assign('smartobject_objects', $this->_aObjects); |
||
166 | } else { |
||
167 | $colspan = count($this->_columns) + 1; |
||
168 | $this->_tpl->assign('smartobject_colspan', $colspan); |
||
169 | } |
||
170 | } |
||
171 | |||
172 | /** |
||
173 | * @return mixed |
||
174 | */ |
||
175 | public function fetchObjects() |
||
176 | { |
||
177 | $ret = $this->_objectHandler->getObjects($this->_criteria, 'parentid'); |
||
178 | |||
179 | return $ret; |
||
180 | } |
||
181 | } |
||
182 |
This check marks implicit conversions of arrays to boolean values in a comparison. While in PHP an empty array is considered to be equal (but not identical) to false, this is not always apparent.
Consider making the comparison explicit by using
empty(..)
or! empty(...)
instead.