Exemplo n.º 1
0
 /**
  * @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;
 }