CORE-POS/IS4C

View on GitHub
fannie/modules/plugins2.0/InstaCart/InstaCartTask.php

Summary

Maintainability
A
25 mins
Test Coverage
<?php
/*******************************************************************************

    Copyright 2014 Whole Foods Co-op

    This file is part of IT CORE.

    IT CORE is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    IT CORE is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    in the file license.txt along with IT CORE; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

*********************************************************************************/

use League\Flysystem\Sftp\SftpAdapter;
use League\Flysystem\Filesystem;

include(dirname(__FILE__).'/../../../config.php');
if (!class_exists('FannieAPI')) {
    include(__DIR__ . '/../../../classlib2.0/FannieAPI.php');
}

/**
*/
class InstaCartTask extends FannieTask 
{
    public $name = 'Submit InstaCart data';

    public $description = 'Submits product data to InstaCart via FTP';

    public $default_schedule = array(
        'min' => 0,
        'hour' => 4,
        'day' => '*',
        'month' => '*',
        'weekday' => '2',
    );

    public function run()
    {
        $dbc = FannieDB::get($this->config->get('OP_DB'));

        if (!class_exists('InstaFileV3')) {
            include(__DIR__ . '/InstaFileV3.php');
        }
        $csvfile = tempnam(sys_get_temp_dir(), 'ICT');
        $insta = new InstaFileV3($dbc, $this->config);
        $insta->getFile($csvfile);

        /**
          Upload export via (S)FTP
        */
        if (class_exists('League\\Flysystem\\Sftp\\SftpAdapter')) {
            $settings = $this->config->get('PLUGIN_SETTINGS');
            $adapter = new SftpAdapter(array(
                'host' => 'sftp.instacart.com',
                'username' => $settings['InstaCartFtpUser'],
                'password' => $settings['InstaCartFtpPw'],
                'port' => 22,
            ));
            $filesystem = new Filesystem($adapter);
            $path = $settings['InstaCartFtpPath'];
            if (substr($path, -1) != '/') {
                $path .= '/';
            }
            echo "Send to $path\n";
            $success = $filesystem->put($path . date('Ymd') . '.csv', file_get_contents($csvfile));
            if ($success) echo "Upload succeeded\n";
        }

        unlink($csvfile);
    }
}