protected function prepareExportList()
{
$requestedLanguage = $this->extractLanguage();
$folder = Pimcore\Model\Object\AbstractObject::getById($this->getParam("folderId"));
$class = Object\ClassDefinition::getById($this->getParam("classId"));
$className = $class->getName();
$listClass = "\\Pimcore\\Model\\Object\\" . ucfirst($className) . "\\Listing";
if (!empty($folder)) {
$conditionFilters = ["o_path LIKE '" . $folder->getRealFullPath() . "%'"];
} else {
$conditionFilters = [];
}
$featureJoins = [];
if ($this->getParam("filter")) {
$conditionFilters[] = Object\Service::getFilterCondition($this->getParam("filter"), $class);
$featureFilters = Object\Service::getFeatureFilters($this->getParam("filter"), $class);
if ($featureFilters) {
$featureJoins = array_merge($featureJoins, $featureFilters["joins"]);
}
}
if ($this->getParam("condition")) {
$conditionFilters[] = "(" . $this->getParam("condition") . ")";
}
/** @var Object\Listing\Concrete $list */
$list = new $listClass();
$list->setCondition(implode(" AND ", $conditionFilters));
//parameters specified in the objects grid
$ids = $this->getParam('ids', []);
if (!empty($ids)) {
//add a condition if id numbers are specified
$list->addConditionParam('o_id IN (' . implode(',', $ids) . ')');
}
$list->setOrder("ASC");
$list->setOrderKey("o_id");
$objectType = $this->getParam("objecttype");
if ($objectType) {
if ($objectType == Object\AbstractObject::OBJECT_TYPE_OBJECT && $class->getShowVariants()) {
$list->setObjectTypes([Object\AbstractObject::OBJECT_TYPE_OBJECT, Object\AbstractObject::OBJECT_TYPE_VARIANT]);
} else {
$list->setObjectTypes([$objectType]);
}
}
list($fields, $bricks) = $this->extractFieldsAndBricks();
if (!empty($bricks)) {
foreach ($bricks as $b) {
$list->addObjectbrick($b);
}
}
$list->setLocale($requestedLanguage);
Object\Service::addGridFeatureJoins($list, $featureJoins, $class, $featureFilters, $requestedLanguage);
return [$list, $fields, $requestedLanguage];
}