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;
}