| @@ -1,8 +1,11 @@ | ||
| 1 | 1 | <?php |
| 2 | 2 | |
| 3 | 3 | namespace ImportWP\Common\Addon; |
| 4 | 4 | |
| 5 | +/** | |
| 6 | + * @deprecated 2.14.0 | |
| 7 | + */ | |
| 5 | 8 | class AddonBasePanel extends AddonBaseContainer implements AddonPanelInterface |
| 6 | 9 | { |
| 7 | 10 | /** |
| 8 | 11 | * @var callable |
| @@ -25,8 +28,15 @@ | ||
| 25 | 28 | * @var \ImportWP\Common\Importer\ParsedData |
| 26 | 29 | */ |
| 27 | 30 | protected $_process_data; |
| 28 | 31 | |
| 32 | + /** | |
| 33 | + * If a panel field has permission, then the group also should have permission | |
| 34 | + * | |
| 35 | + * @var bool | |
| 36 | + */ | |
| 37 | + protected $_panel_has_permission = false; | |
| 38 | + | |
| 29 | 39 | public function __construct($addon, $callback, $id, $data) |
| 30 | 40 | { |
| 31 | 41 | $this->_id = $id; |
| 32 | 42 | $this->_register_callback = $callback; |
| @@ -210,8 +220,9 @@ | ||
| 210 | 220 | $group_fields = $this->fields(); |
| 211 | 221 | $repeatable = $this->is_repeatable(); |
| 212 | 222 | |
| 213 | 223 | $this->_process_data = $data; |
| 224 | + $this->_panel_has_permission = false; | |
| 214 | 225 | |
| 215 | 226 | $rows = $data->getData($section_id); |
| 216 | 227 | if ($repeatable) { |
| 217 | 228 | foreach ($rows as $i => $row) { |
| @@ -220,13 +231,20 @@ | ||
| 220 | 231 | } else { |
| 221 | 232 | $this->_process_fields($id, $group_fields, $section_id, $rows, $importer_model, $template, false); |
| 222 | 233 | } |
| 223 | 234 | |
| 224 | - // check permissions before calling save | |
| 225 | - $permission_key = $section_id; | |
| 226 | - $allowed = $this->_process_data->permission()->validate([$permission_key => ''], $this->_process_data->getMethod(), $section_id); | |
| 227 | - $is_allowed = isset($allowed[$permission_key]) ? true : false; | |
| 235 | + $is_allowed = $this->_panel_has_permission; | |
| 228 | 236 | |
| 237 | + // groups that do not process fields without the callback, can be allowed with this key | |
| 238 | + if (!$is_allowed) { | |
| 239 | + | |
| 240 | + // check permissions before calling save | |
| 241 | + $permission_key = $section_id; | |
| 242 | + $allowed = $this->_process_data->permission()->validate([$permission_key => ''], $this->_process_data->getMethod(), $section_id); | |
| 243 | + $is_allowed = isset($allowed[$permission_key]) ? true : false; | |
| 244 | + } | |
| 245 | + | |
| 246 | + | |
| 229 | 247 | if ($is_allowed) { |
| 230 | 248 | $this->_trigger_process_callback($id, $rows, $importer_model, $template); |
| 231 | 249 | } |
| 232 | 250 | |
| @@ -268,8 +286,10 @@ | ||
| 268 | 286 | $is_allowed = isset($allowed[$permission_key]) ? true : false; |
| 269 | 287 | if (!$is_allowed) { |
| 270 | 288 | continue; |
| 271 | 289 | } |
| 290 | + | |
| 291 | + $this->_panel_has_permission = true; | |
| 272 | 292 | |
| 273 | 293 | $group_field->_process($this->addon(), $id, $section_id, $data, $importer_model, $template, $i); |
| 274 | 294 | } |
| 275 | 295 | } |