filterType = $filterType; $this->action = $action; $this->filterData = $filterData; } public function getData(): ?array { return $this->filterData; } /** * @return mixed|null */ public function getParam(string $name) { return $this->filterData[$name] ?? null; } public function getFilterType(): ?string { if ($this->filterType) { return $this->filterType; } // When a new column is empty, we try to get the value from serialized data return $filterData['segmentType'] ?? null; } public function getAction(): ?string { if ($this->action) { return $this->action; } // When a new column is empty, we try to get the value from serialized data // BC compatibility, the wordpress user role segment didn't have action if ($this->getFilterType() === self::TYPE_USER_ROLE && !isset($this->filterData['action'])) { return UserRole::TYPE; } return $this->filterData['action'] ?? null; } public function getOperator(): ?string { $operator = $this->filterData['operator'] ?? null; if (!$operator) { return $this->getDefaultOperator(); } return $operator; } private function getDefaultOperator(): ?string { if ($this->getFilterType() === self::TYPE_WOOCOMMERCE && $this->getAction() === WooCommerceProduct::ACTION_PRODUCT) { return self::OPERATOR_ANY; } return null; } }