/** * @return Listing */ protected function getListing() { if (empty($this->list)) { $objectList = "\\Pimcore\\Model\\Object\\" . ucfirst($this->class) . "\\Listing"; $this->list = new $objectList(); $conditions = ["(newsletterActive = 1 AND newsletterConfirmed = 1)"]; if ($this->condition) { $conditions[] = "(" . $this->condition . ")"; } if ($this->personas) { $class = ClassDefinition::getByName($this->class); if ($class && $class->getFieldDefinition("persona")) { $personas = []; if ($class->getFieldDefinition("persona") instanceof \Pimcore\Model\Object\ClassDefinition\Data\Persona) { foreach ($this->personas as $value) { if (!empty($value)) { $personas[] = $this->list->quote($value); } } $conditions[] = "persona IN (" . implode(",", $personas) . ")"; } elseif ($class->getFieldDefinition("persona") instanceof \Pimcore\Model\Object\ClassDefinition\Data\Personamultiselect) { $personasCondition = []; foreach ($this->personas as $value) { $personasCondition[] = "persona LIKE " . $this->list->quote("%," . $value . ",%"); } $conditions[] = "(" . implode(" OR ", $personasCondition) . ")"; } } } $this->list->setCondition(implode(" AND ", $conditions)); $this->list->setOrderKey("email"); $this->list->setOrder("ASC"); $this->elementsTotal = $this->list->getTotalCount(); } return $this->list; }