Skip to content

Instantly share code, notes, and snippets.

@Ibochkarev
Created January 28, 2021 16:41
Show Gist options
  • Save Ibochkarev/a45a38269de25b752ea0499473e44bd0 to your computer and use it in GitHub Desktop.
Save Ibochkarev/a45a38269de25b752ea0499473e44bd0 to your computer and use it in GitHub Desktop.
<?php
define('MODX_API_MODE', true);
require_once __DIR__ . '/../core/config/config.inc.php';
require_once MODX_CORE_PATH . 'model/modx/modx.class.php';
$modx = new modX();
$modx->initialize('web');
$modx->getService('error', 'error.modError', '', '');
$modx->error->message = null;
$q = $modx->newQuery('modResource');
$q->leftJoin('msProductData','Data','modResource.id = Data.id');
$q->leftJoin('msProductFile','File','modResource.id = File.product_id and File.parent = 0 ');
$q->select('`modResource`.`pagetitle`,`modResource`.`content`,`Data`.`price`,`Data`.`price` as price2, GROUP_CONCAT(`File`.`url` SEPARATOR \';;\') as `images`');
$q->where([
    'class_key'=>'msProduct',
    'parent:NOT IN'=>[19],
]);
$q->groupby('modResource.id');
$out = [];
$site_url = rtrim($modx->getOption('site_url'),'/');  
if ($q->prepare() && $q->stmt->execute()) {
    $res = $q->stmt->fetchAll(PDO::FETCH_ASSOC);
    $name = 'file.csv'; 
    header('Content-type: text/csv; charset=UTF-8');
    header('Content-Disposition: attachment; filename=' . $name);
    $output = fopen('php://output', 'w');
    foreach ($res as $product){
        $images = explode(';;',$product['images']);
        unset($product['images']);
        $i=0;
        foreach ($images as $img){
            $product['image'.$i] = $site_url.$img;
            $i++;
        } 
        $product['content'] = str_replace(["\n", "\r", "\r\n",'&nbsp;'], ' ', $product['content']);
        fputcsv($output, $product,';');
    }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment