Admin_ObjectHelperController::getCsvData PHP Метод

getCsvData() защищенный Метод

protected getCsvData ( $list, $fields, $addTitles = true )
    protected function getCsvData($list, $fields, $addTitles = true)
    {
        $requestedLanguage = $this->extractLanguage();
        $mappedFieldnames = [];
        $objects = [];
        Logger::debug("objects in list:" . count($list->getObjects()));
        //add inherited values to objects
        Object\AbstractObject::setGetInheritedValues(true);
        foreach ($list->getObjects() as $object) {
            if ($fields) {
                $objectData = [];
                foreach ($fields as $field) {
                    $fieldData = $this->getCsvFieldData($field, $object, $requestedLanguage);
                    if (!$mappedFieldnames[$field]) {
                        $mappedFieldnames[$field] = $this->mapFieldname($field);
                    }
                    $objectData[$mappedFieldnames[$field]] = $fieldData;
                }
                $objects[] = $objectData;
            } else {
                /**
                 * @extjs - TODO remove this, when old ext support is removed
                 */
                if ($object instanceof Object\Concrete) {
                    $o = $this->csvObjectData($object);
                    $objects[] = $o;
                }
            }
        }
        //create csv
        $csv = "";
        if (!empty($objects)) {
            if ($addTitles) {
                $columns = array_keys($objects[0]);
                foreach ($columns as $key => $value) {
                    $columns[$key] = '"' . $value . '"';
                }
                $csv = implode(";", $columns) . "\r\n";
            }
            foreach ($objects as $o) {
                foreach ($o as $key => $value) {
                    //clean value of evil stuff such as " and linebreaks
                    if (is_string($value)) {
                        $value = strip_tags($value);
                        $value = str_replace('"', '', $value);
                        $value = str_replace("\r", "", $value);
                        $value = str_replace("\n", "", $value);
                        $o[$key] = '"' . $value . '"';
                    }
                }
                $csv .= implode(";", $o) . "\r\n";
            }
        }
        return $csv;
    }