/**
 * transform csv to array
 *
 * File to store: ..\modules\csvImport\parser\first_direct_(UK).php
 *
 * @param $fp filepointer, $accountId
 * @return array (categoryId, accountId, title, description, valutaDate, amount, transactionPartner)
 */
function parseToArray($fp, $accountId)
{
    /**
     * count Rows of csv
     *
     * @var int
     */
    $csvRow = 0;
    /**
     * is set true, a line contains "\t" (tabs), but not the correct number for this parser (5)
     *
     * @var boolean
     */
    $noValidFile = NULL;
    /**
     * is set true, after the header was ignored
     *
     * @var boolean
     */
    $headerIgnored = true;
    function avoid_bad_sign($strings)
    {
        $strings = str_replace("\"", "", $strings);
        $strings = str_replace("\\", "", $strings);
        $strings = str_replace("\n", " ", $strings);
        return $strings;
    }
    /******************************************************************************
     * Date,Description,Amount,Balance
     *
     * 16/03/2007,"PAYPAL PAYMENT",-3.83,-160.28
     *
     * 15/03/2007,"PAYPAL PAYMENT",-6.50,-156.45
     *
     * 15/03/2007,"SANTANDER CONSUMER",-242.22,-149.95
     *
     * 14/03/2007,"BP Brian Leighton Howden",-31.60,92.27
     *
     * 14/03/2007,"PAYPAL PAYMENT",-10.79,123.87
     *
     * 14/03/2007,"PAYPAL PAYMENT",-4.94,134.66
     *
     * 13/03/2007,"PAYPAL PAYMENT",-7.99,139.60
     *
     ******************************************************************************/
    //for every line
    while (!feof($fp)) {
        $rowArray = NULL;
        //read one line
        $line = fgets($fp, 1024);
        //skip header
        if (!$headerIgnored) {
            $tmp = strpos($line, HEADER_END_MARKER);
            //Need this complex check as the source file is reported to say "Date" and Date
            //(with and without quotes) at random
            if ($tmp !== false && $tmp <= 2) {
                $headerIgnored = true;
            }
            continue;
        }
        while ($transactionArray = fgetcsv($fp, 1024, ",")) {
            if (count($transactionArray) == 1) {
                //empty line?
                continue;
            }
            //if array contains excactly 4 fields , to ensure it is a valid first_direct_(UK).csv file
            if (count($transactionArray) == 4) {
                // Replaces the date with prior date at $transactionArray[0]
                if (!empty($transactionArray[0])) {
                    $transactionDate = $transactionArray[0];
                } else {
                    $transactionArray[0] = $transactionDate;
                }
                //format amount to usersettings
                //format date YY-MM-DD or YYYY-MM-DD
                $transactionArray[0] = avoid_bad_sign($transactionArray[0]);
                $valutaDate = explode("/", $transactionArray[0]);
                //Valuta Date
                $valutaDate[4] = $valutaDate[2] . "-" . $valutaDate[1] . "-" . $valutaDate[0];
                $valutaDate1 = new Date($valutaDate[4]);
                $transactionArray[1] = avoid_bad_sign($transactionArray[1]);
                //check for a "." in here, to build the decimals
                if (!strpos($transactionArray[2], '.')) {
                    $transactionArray[2] = $transactionArray[2] . ".";
                }
                $amount = new Amount($transactionArray[2]);
                /**
                 * transaction array
                 *
                 * @var array
                 */
                $rowArray = array("categoryId" => "", "accountId" => $accountId, "title" => substr($transactionArray[1], 0, 99), "description" => $transactionArray[1], "valutaDate" => $valutaDate1, "amount" => $amount, "transactionPartner" => "Data missing");
            } else {
                $noValidFile = 'true';
            }
            // if a row contains valid data
            if ($rowArray) {
                /**
                 * array of all transaction arrays
                 *
                 * @var array
                 */
                $importedTransactions[$csvRow] = $rowArray;
                $csvRow++;
            }
        }
    }
    if ($noValidFile) {
        throw new badgerException('importCsv', 'wrongSeperatorNumber');
        //close file
        fclose($fp);
    } else {
        if ($csvRow == 0) {
            throw new badgerException('importCsv', 'noSeperator');
            //close file
            fclose($fp);
        } else {
            //close file
            fclose($fp);
            return $importedTransactions;
        }
    }
}
Esempio n. 2
0
/**
 * transform csv to array
 *
 * File to store: ..\modules\csvImport\parser\star_money.php
 *
 * @param $fp filepointer, $accountId
 * @return array (categoryId, accountId, title, description, valutaDate, amount, transactionPartner)
 */
function parseToArray($fp, $accountId)
{
    /**
     * count Rows of csv
     *
     * @var int
     */
    $csvRow = 0;
    /**
     * is set true, a line contains "\t" (tabs), but not the correct number for this parser (5)
     *
     * @var boolean
     */
    $noValidFile = NULL;
    /**
     * is set true, after the header was ignored
     *
     * @var boolean
     */
    $headerIgnored = true;
    function avoid_bad_sign($strings)
    {
        $strings = str_replace("\"", "", $strings);
        $strings = str_replace("\\", "", $strings);
        $strings = str_replace("\n", " ", $strings);
        $strings = str_replace("\r", " ", $strings);
        return $strings;
    }
    // check the valueDate, if day | month have only 1 digit and adds an leading zero
    // those numbers could cause problems
    function strlen2($string)
    {
        if (strlen(trim($string)) == 1) {
            $string = "0" . trim($string);
        }
        return $string;
    }
    // check the arrayField, if any data exists then add a ","
    function isEmpty($field)
    {
        if (empty($field)) {
            return;
        } else {
            return ", " . $field;
        }
    }
    // check the valueDate, if year have only 2 digits.
    // If the number of the year is between 50 and 99 it will add a leading 19 else a leading 20
    // those numbers could cause problems
    function strlen4($string)
    {
        if (strlen(trim($string)) == 2) {
            if ($string >= 50 && $string <= 99) {
                $string = "19" . trim($string);
            } else {
                $string = "20" . trim($string);
            }
        }
        return trim($string);
    }
    while (!feof($fp)) {
        $rowArray = NULL;
        //read one line
        $line = fgets($fp, 1024);
        //skip header
        if (!$headerIgnored) {
            $tmp = strpos($line, HEADER_END_MARKER);
            //Need this complex check as the source file is reported to say "Date" and Date
            //(with and without quotes) at random
            if ($tmp !== false && $tmp <= 2) {
                $headerIgnored = true;
            }
            continue;
        }
        //if array is not empty or is no header
        while ($transactionArray = fgetcsv($fp, 1024, ";")) {
            if (!empty($transactionArray[0])) {
                //if array contains excactly 5 fields , to ensure it is a valid csv file
                if (count($transactionArray) == 42) {
                    //format date YY-MM-DD or YYYY-MM-DD
                    $transactionArray[3] = avoid_bad_sign($transactionArray[3]);
                    $valutaDate = explode(".", $transactionArray[3]);
                    //Valuta Date
                    $valutaDate[0] = strlen2($valutaDate[0]);
                    $valutaDate[1] = strlen2($valutaDate[1]);
                    $valutaDate[2] = strlen4($valutaDate[2]);
                    $valutaDate[4] = $valutaDate[2] . "-" . $valutaDate[1] . "-" . $valutaDate[0];
                    $valutaDate1 = new Date($valutaDate[4]);
                    //avoid " & \ in the title & description, those characters could cause problems
                    // number of checks
                    $transactionArray[1] = avoid_bad_sign($transactionArray[1]);
                    $transactionArray[2] = avoid_bad_sign($transactionArray[2]);
                    $transactionArray[4] = avoid_bad_sign($transactionArray[4]);
                    $transactionArray[5] = avoid_bad_sign($transactionArray[5]);
                    $transactionArray[6] = avoid_bad_sign($transactionArray[6]);
                    $transactionArray[7] = avoid_bad_sign($transactionArray[7]);
                    $transactionArray[8] = avoid_bad_sign($transactionArray[8]);
                    $transactionArray[9] = avoid_bad_sign($transactionArray[9]);
                    $transactionArray[10] = avoid_bad_sign($transactionArray[10]);
                    $transactionArray[11] = avoid_bad_sign($transactionArray[11]);
                    $transactionArray[12] = avoid_bad_sign($transactionArray[12]);
                    $transactionArray[13] = avoid_bad_sign($transactionArray[13]);
                    $transactionArray[14] = avoid_bad_sign($transactionArray[14]);
                    $transactionArray[15] = avoid_bad_sign($transactionArray[15]);
                    $transactionArray[16] = avoid_bad_sign($transactionArray[16]);
                    $transactionArray[17] = avoid_bad_sign($transactionArray[17]);
                    $transactionArray[18] = avoid_bad_sign($transactionArray[18]);
                    $transactionArray[19] = avoid_bad_sign($transactionArray[19]);
                    $transactionArray[20] = avoid_bad_sign($transactionArray[20]);
                    $transactionArray[21] = avoid_bad_sign($transactionArray[21]);
                    $transactionArray[22] = avoid_bad_sign($transactionArray[22]);
                    $transactionArray[23] = avoid_bad_sign($transactionArray[23]);
                    $transactionArray[24] = avoid_bad_sign($transactionArray[24]);
                    $transactionArray[25] = avoid_bad_sign($transactionArray[25]);
                    $transactionArray[26] = avoid_bad_sign($transactionArray[26]);
                    $transactionArray[27] = avoid_bad_sign($transactionArray[27]);
                    $transactionArray[28] = avoid_bad_sign($transactionArray[28]);
                    $transactionArray[29] = avoid_bad_sign($transactionArray[29]);
                    $transactionArray[30] = avoid_bad_sign($transactionArray[30]);
                    $transactionArray[31] = avoid_bad_sign($transactionArray[31]);
                    $transactionArray[32] = avoid_bad_sign($transactionArray[32]);
                    $transactionArray[33] = avoid_bad_sign($transactionArray[33]);
                    $transactionArray[34] = avoid_bad_sign($transactionArray[34]);
                    $transactionArray[35] = avoid_bad_sign($transactionArray[35]);
                    $transactionArray[36] = avoid_bad_sign($transactionArray[36]);
                    $transactionArray[37] = avoid_bad_sign($transactionArray[37]);
                    $transactionArray[38] = avoid_bad_sign($transactionArray[38]);
                    $transactionArray[39] = avoid_bad_sign($transactionArray[39]);
                    if (empty($transactionArray[6])) {
                        $transactionArray[42] = $transactionArray[1] . ", " . $transactionArray[23];
                    } else {
                        $transactionArray[42] = $transactionArray[1] . ", " . $transactionArray[6] . ", BLZ =" . $transactionArray[4] . ", Kto.=" . $transactionArray[5];
                    }
                    // build description array
                    $transactionArray[43] = $transactionArray[26] . isEmpty($transactionArray[27]) . isEmpty($transactionArray[28]) . isEmpty($transactionArray[29]) . isEmpty($transactionArray[30]) . isEmpty($transactionArray[31]) . isEmpty($transactionArray[32]) . isEmpty($transactionArray[33]) . isEmpty($transactionArray[34]) . isEmpty($transactionArray[35]) . isEmpty($transactionArray[36]) . isEmpty($transactionArray[37]) . isEmpty($transactionArray[38]) . isEmpty($transactionArray[39]);
                    //format amount to usersettings
                    if (strpos($transactionArray[0], ',')) {
                        $transactionArray[0] = str_replace(",", ".", $transactionArray[0]);
                    }
                    $amount = new Amount($transactionArray[0]);
                    //   echo $transactionArray[2]; //for debug only
                    //   echo $transactionArray[3]; //for debug only
                    //  print_r($transactionArray);//for debug only
                    /**
                     * transaction array
                     *
                     * @var array
                     */
                    $rowArray = array("categoryId" => "", "accountId" => $accountId, "title" => substr($transactionArray[23], 0, 99), "description" => $transactionArray[43], "valutaDate" => $valutaDate1, "amount" => $amount, "transactionPartner" => $transactionArray[42]);
                } else {
                    $noValidFile = 'true';
                }
            }
            // if a row contains valid data
            if ($rowArray) {
                /**
                 * array of all transaction arrays
                 *
                 * @var array
                 */
                $importedTransactions[$csvRow] = $rowArray;
                $csvRow++;
            }
        }
    }
    if ($noValidFile) {
        throw new badgerException('importCsv', 'wrongSeperatorNumber');
        //close file
        fclose($fp);
    } else {
        if ($csvRow == 0) {
            throw new badgerException('importCsv', 'noSeperator');
            //close file
            fclose($fp);
        } else {
            //close file
            fclose($fp);
            return $importedTransactions;
        }
    }
}
/**
 * transform csv to array
 *
 * File to store: ..\modules\csvImport\parser\republic_bank_pfm.php
 *
 * @param $fp filepointer, $accountId
 * @return array (categoryId, accountId, title, description, valutaDate, amount, transactionPartner)
 */
function parseToArray($fp, $accountId)
{
    /**
     * count Rows of csv
     *
     * @var int
     */
    $csvRow = 0;
    /**
     * is set true, a line contains "\t" (tabs), but not the correct number for this parser (5)
     *
     * @var boolean
     */
    $noValidFile = NULL;
    /**
     * is set true, after the header was ignored
     *
     * @var boolean
     */
    $headerIgnored = FALSE;
    function avoid_bad_sign($strings)
    {
        $strings = str_replace("\"", "", $strings);
        $strings = str_replace("\\", "", $strings);
        $strings = str_replace("\n", " ", $strings);
        $strings = str_replace("\r", " ", $strings);
        return $strings;
    }
    // check the valueDate, if day | month have only 1 digit and adds an leading zero
    // those numbers could cause problems
    function strlen2($string)
    {
        if (strlen(trim($string)) == 1) {
            $string = "0" . trim($string);
        }
        return $string;
    }
    // check the valueDate, if year have only 2 digits.
    // If the number of the year is between 50 and 99 it will add a leading 19 else a leading 20
    // those numbers could cause problems
    function strlen4($string)
    {
        if (strlen(trim($string)) == 2) {
            if ($string >= 50 && $string <= 99) {
                $string = "19" . trim($string);
            } else {
                $string = "20" . trim($string);
            }
        }
        return trim($string);
    }
    /**************************************** E X A M P L E *************************************
     * 0_Transaction Number, 1_Date, 2_Description, 3_Memo, 4_Debit, 5_Credit, 6_Balance, 7_Check Number, 8_Fees
     * 6996,5/1/2007,Description    Minus   ,,47,,1123.72,,
     * 6997,5/1/2007,Description   Minus   ,,24.3,,1099.42,,
     * 7007,5/2/2007,Description   Minus   ,,15.03,,1084.39,,
     * 4711,5/3/2007,Description   PLUS   ,3,,30.06,1144.45,,
     ********************************************************************************************/
    while (!feof($fp)) {
        $rowArray = NULL;
        //read one line
        $line = fgets($fp, 1024);
        //ignore header (first 5 lines)
        if (!$headerIgnored) {
            for ($headerLine = 0; $headerLine < 4; $headerLine++) {
                $garbage = fgets($fp, 1024);
                //to ignore this code on the next loop run
                $headerIgnored = true;
            }
        }
        //if array is not empty or is no header
        while ($transactionArray = fgetcsv($fp, 1024, ",")) {
            if (!empty($transactionArray[0])) {
                //if array contains excactly 9 fields , to ensure it is a valid csv file
                if (count($transactionArray) == 9) {
                    //format date YY-MM-DD or YYYY-MM-DD
                    $transactionArray[1] = avoid_bad_sign($transactionArray[1]);
                    $valutaDate = explode("/", $transactionArray[1]);
                    //Valuta Date
                    $valutaDate[0] = strlen2($valutaDate[0]);
                    $valutaDate[1] = strlen2($valutaDate[1]);
                    $valutaDate[2] = strlen4($valutaDate[2]);
                    $valutaDate[4] = $valutaDate[2] . "-" . $valutaDate[0] . "-" . $valutaDate[1];
                    $valutaDate1 = new Date($valutaDate[4]);
                    //avoid " & \ in the title & description, those characters could cause problems
                    // number of checks
                    $transactionArray[2] = avoid_bad_sign($transactionArray[2]);
                    $transactionArray[3] = avoid_bad_sign($transactionArray[3]);
                    //format amount to usersettings
                    if (empty($transactionArray[4])) {
                        //check for a "." in that credit-array to build the decimals
                        if (!strpos($transactionArray[5], '.')) {
                            $transactionArray[5] = $transactionArray[5] . ".";
                        }
                        $amount = new Amount($transactionArray[5]);
                    } else {
                        $transactionArray[4] = "-" . $transactionArray[4];
                        //check for a "." in that debit-array to build the decimals
                        if (!strpos($transactionArray[4], '.')) {
                            $transactionArray[4] = $transactionArray[4] . ".";
                        }
                        $amount = new Amount($transactionArray[4]);
                    }
                    /**
                     * transaction array
                     *
                     * @var array
                     */
                    $rowArray = array("categoryId" => "", "accountId" => $accountId, "title" => substr($transactionArray[2], 0, 99), "description" => $transactionArray[2] . ', ' . $transactionArray[0] . ', ' . $transactionArray[3], "valutaDate" => $valutaDate1, "amount" => $amount, "transactionPartner" => "Change by yourself");
                } else {
                    $noValidFile = 'true';
                }
            }
            // if a row contains valid data
            if ($rowArray) {
                /**
                 * array of all transaction arrays
                 *
                 * @var array
                 */
                $importedTransactions[$csvRow] = $rowArray;
                $csvRow++;
            }
        }
    }
    if ($noValidFile) {
        throw new badgerException('importCsv', 'wrongSeperatorNumber');
        //close file
        fclose($fp);
    } else {
        if ($csvRow == 0) {
            throw new badgerException('importCsv', 'noSeperator');
            //close file
            fclose($fp);
        } else {
            //close file
            fclose($fp);
            return $importedTransactions;
        }
    }
}
Esempio n. 4
0
/** 
 * transform csv to array 
 * 
 * File to store: ..\modules\csvImport\parser\ibc_bank.php 
 * 
 * @param $fp filepointer, $accountId 
 * @return array (categoryId, accountId, title, description, valutaDate, amount, transactionPartner) 
 */
function parseToArray($fp, $accountId)
{
    /** 
     * count Rows of csv 
     * 
     * @var int 
     */
    $csvRow = 0;
    /** 
     * is set true, a line contains "\t" (tabs), but not the correct number for this parser (5) 
     * 
     * @var boolean 
     */
    $noValidFile = NULL;
    /** 
     * is set true, after the header was ignored 
     * 
     * @var boolean 
     */
    $headerIgnored = true;
    function avoid_bad_sign($strings)
    {
        $strings = str_replace("\"", "", $strings);
        $strings = str_replace("\\", "", $strings);
        $strings = str_replace("\n", " ", $strings);
        return $strings;
    }
    while (!feof($fp)) {
        $rowArray = NULL;
        //read one line
        $line = fgets($fp, 1024);
        //skip header
        if (!$headerIgnored) {
            $tmp = strpos($line, HEADER_END_MARKER);
            //Need this complex check as the source file is reported to say "Date" and Date
            //(with and without quotes) at random
            if ($tmp !== false && $tmp <= 2) {
                $headerIgnored = true;
            }
            continue;
        }
        //if array is not empty or is no header
        while ($transactionArray = fgetcsv($fp, 1024, ",")) {
            if (!empty($transactionArray[0])) {
                //if array contains excactly 5 fields , to ensure it is a valid IBC Bank.csv file
                if (count($transactionArray) == 5) {
                    //format date YY-MM-DD or YYYY-MM-DD
                    $transactionArray[0] = avoid_bad_sign($transactionArray[0]);
                    $valutaDate = explode("/", $transactionArray[0]);
                    //Valuta Date
                    $valutaDate[4] = $valutaDate[2] . "-" . $valutaDate[0] . "-" . $valutaDate[1];
                    $valutaDate1 = new Date($valutaDate[4]);
                    //avoid " & \ in the title & description, those characters could cause problems
                    // number of checks
                    $transactionArray[1] = avoid_bad_sign($transactionArray[1]);
                    //avoid " & \ in the title & description, those characters could cause problems
                    $transactionArray[2] = avoid_bad_sign($transactionArray[2]);
                    if (empty($transactionArray[1])) {
                        $description = $transactionArray[2];
                    } else {
                        $description = "No." . $transactionArray[1] . " " . $transactionArray[2];
                    }
                    //format amount to usersettings
                    if (empty($transactionArray[3])) {
                        //check for a "." in that credit-array to build the decimals
                        if (!strpos($transactionArray[4], '.')) {
                            $transactionArray[4] = $transactionArray[4] . ".";
                        }
                        $amount = new Amount($transactionArray[4]);
                    } else {
                        //check for a "." in that debit-array to build the decimals
                        if (!strpos($transactionArray[3], '.')) {
                            $transactionArray[3] = $transactionArray[3] . ".";
                        }
                        $amount = new Amount($transactionArray[3]);
                    }
                    /** 
                     * transaction array 
                     * 
                     * @var array 
                     */
                    $rowArray = array("categoryId" => "", "accountId" => $accountId, "title" => substr($transactionArray[2], 0, 99), "description" => $description, "valutaDate" => $valutaDate1, "amount" => $amount, "transactionPartner" => "");
                } else {
                    $noValidFile = 'true';
                }
            }
            // if a row contains valid data
            if ($rowArray) {
                /** 
                 * array of all transaction arrays 
                 * 
                 * @var array 
                 */
                $importedTransactions[$csvRow] = $rowArray;
                $csvRow++;
            }
        }
    }
    if ($noValidFile) {
        throw new badgerException('importCsv', 'wrongSeperatorNumber');
        //close file
        fclose($fp);
    } else {
        if ($csvRow == 0) {
            throw new badgerException('importCsv', 'noSeperator');
            //close file
            fclose($fp);
        } else {
            //close file
            fclose($fp);
            return $importedTransactions;
        }
    }
}
Esempio n. 5
0
/**
 * transform xml to array
 * Filename: /badger/modules/csvImport/parser/vr-bank_BW.php
 *
 * @param $fp filepointer, $accountId
 * @return array (categoryId, accountId, title, description, valutaDate, amount, transactionPartner)
 */
function parseToArray($fp, $accountId)
{
    /**
     * count Rows of csv
     *
     * @var int
     */
    $csvRow = 0;
    /**
     * is set true, a line contains ";" , but not the correct number for this parser (5)
     *
     * @var boolean
     */
    $noValidFile = NULL;
    /**
     * is set true, after the header was ignored
     *
     * @var boolean
     */
    $headerIgnored = NULL;
    //for every line
    /*****
     * avoid " & \ in the title & description,
     * those characters could cause problems
     */
    function avoid_bad_sign($strings)
    {
        $strings = str_replace("\"", "", $strings);
        $strings = str_replace("\\", "", $strings);
        $strings = str_replace("\n", " ", $strings);
        return $strings;
    }
    while (!feof($fp)) {
        $rowArray = NULL;
        //read one line
        $line = fgets($fp, 1024);
        //skip header
        if (!$headerIgnored) {
            $tmp = strpos($line, HEADER_END_MARKER);
            //Need this complex check as the source file is reported to say "Buchungstag" and Buchungstag
            //(with and without quotes) at random
            if ($tmp !== false && $tmp <= 2) {
                $headerIgnored = true;
            }
            continue;
        }
        if (!empty($line) && !strpos($line, FOOTER_END_MARKER_A) && !strpos($line, FOOTER_END_MARKER_E)) {
            if (substr_count($line, ";") == 2) {
                $description = "";
                $line1 = 1;
                //set the first line of dataset
                // divide String to an array
                $transactionArray = explode(";", $line);
                //format date YY-MM-DD or YYYY-MM-DD
                $transactionArray[1] = avoid_bad_sign($transactionArray[1]);
                $valutaDate = explode(".", $transactionArray[1]);
                //Valuta Date
                $valutaDate[4] = $valutaDate[2] . "-" . $valutaDate[1] . "-" . $valutaDate[0];
                $valutaDate1 = new Date($valutaDate[4]);
                $transactionArray[2] = avoid_bad_sign($transactionArray[2]);
                $description .= $transactionArray[2];
            } elseif ($line1 == 1 && !strpos($line, ';')) {
                $transactionArray[3] = avoid_bad_sign($line);
                $transactionPartner = $transactionArray[3];
                $description .= $transactionArray[3];
                ++$line1;
            } elseif ($line1 == 2 && !strpos($line, ';')) {
                $description .= avoid_bad_sign($line);
                $line1++;
            } elseif ($line1 == 3 && !strpos($line, ';')) {
                $description .= avoid_bad_sign($line);
                $line1++;
            } elseif ($line1 == 4 && !strpos($line, ';')) {
                $description .= avoid_bad_sign($line);
                $line1++;
            } elseif ($line1 == 5 && !strpos($line, ';')) {
                $description .= avoid_bad_sign($line);
                $line1++;
            } elseif ($line1 == 6 && !strpos($line, ';')) {
                $description .= avoid_bad_sign($line);
                $line1++;
            } elseif ($line1 == 7 && !strpos($line, ';')) {
                $description .= avoid_bad_sign($line);
                $line1++;
            } elseif ($line1 == 8 && !strpos($line, ';')) {
                $description .= avoid_bad_sign($line);
                $line1++;
            } elseif ($line1 == 9 && !strpos($line, ';')) {
                $description .= avoid_bad_sign($line);
                $line1++;
            } elseif ($line1 == 10 && !strpos($line, ';')) {
                $description .= avoid_bad_sign($line);
                $line1++;
                //if line contains excactly 3 ';', to ensure it is a valid VR-Bank csv file
            } elseif (substr_count($line, ";") == 3) {
                $line1 = 0;
                $transactionArray3 = "";
                // divide String to an array
                $transactionArray3 = explode(";", $line);
                //avoid " & \ in the title & description, those characters could cause problems
                $transactionArray3[0] = avoid_bad_sign($transactionArray3[0]);
                $description .= $transactionArray3[0];
                $transactionArray3[1] = avoid_bad_sign($transactionArray3[1]);
                // inserts the amount
                $transactionArray3[2] = avoid_bad_sign($transactionArray3[2]);
                $transactionArray3[2] = str_replace(",", ".", $transactionArray3[2]);
                // get the sign for balance: i.e. "H" == plus(input); "S" == minus(out)
                $transactionArray3[3] = str_replace("\"", "", $transactionArray3[3]);
                $transactionArray3[3] = str_replace("\\", "", $transactionArray3[3]);
                // checks for "S" == minus(out) and adds a "-"sign
                if ($transactionArray3[3] == "S\n") {
                    $transactionArray3[2] = "-" . $transactionArray3[2];
                    //"-".
                }
            }
            /**
             * transaction array
             *
             * @var array
             */
            if ($line1 == 0) {
                $rowArray = array("categoryId" => "", "accountId" => $accountId, "title" => substr($transactionArray[2] . $transactionArray[3], 0, 99), "description" => $description, "valutaDate" => $valutaDate1, "amount" => new Amount($transactionArray3[2]), "transactionPartner" => $transactionPartner);
            }
            // if a row contains valid data
            if ($rowArray && $line1 == 0) {
                /**
                 * array of all transaction arrays
                 *
                 * @var array
                 */
                $importedTransactions[$csvRow] = $rowArray;
                $csvRow++;
                //print_r ($rowArray);
            }
        }
    }
    if ($noValidFile) {
        throw new badgerException('importCsv', 'wrongSeperatorNumber');
        //close file
        fclose($fp);
    } else {
        if ($csvRow == 0) {
            throw new badgerException('importCsv', 'noSeperator');
            //close file
            fclose($fp);
        } else {
            //delete footer (1 line)
            unset($importedTransactions[$csvRow - 1]);
            //close file
            fclose($fp);
            return $importedTransactions;
        }
    }
}
Esempio n. 6
0
/**
 * transform csv to array
 *
 * File to store: ..\modules\csvImport\parser\ChaseVisa.php
 *
 * @param $fp filepointer, $accountId
 * @return array (categoryId, accountId, title, description, valutaDate, amount, transactionPartner)
 */
function parseToArray($fp, $accountId)
{
    /**
     * count Rows of csv
     *
     * @var int
     */
    $csvRow = 0;
    /**
     * is set true, a line contains "\t" (tabs), but not the correct number for this parser (5)
     *
     * @var boolean
     */
    $noValidFile = NULL;
    /**
     * is set true, after the header was ignored
     *
     * @var boolean
     */
    $headerIgnored = TRUE;
    function avoid_bad_sign($strings)
    {
        $strings = str_replace("\"", "", $strings);
        $strings = str_replace("\\", "", $strings);
        $strings = str_replace("\n", " ", $strings);
        $strings = str_replace("\r", " ", $strings);
        return $strings;
    }
    $rowArray = NULL;
    //if array is not empty or is no header
    while ($transactionArray = fgetcsv($fp, 1024, ",")) {
        if (!empty($transactionArray[0])) {
            //if array contains excactly 4 fields , to ensure it is a valid csv file
            if (count($transactionArray) == 4) {
                //format date YY-MM-DD or YYYY-MM-DD
                $transactionArray[1] = avoid_bad_sign($transactionArray[1]);
                $valutaDate[0] = substr($transactionArray[1], 0, 4);
                $valutaDate[1] = substr($transactionArray[1], 4, 2);
                $valutaDate[2] = substr($transactionArray[1], 6, 2);
                $valutaDate[4] = $valutaDate[0] . "-" . $valutaDate[1] . "-" . $valutaDate[2];
                $valutaDate1 = new Date($valutaDate[4]);
                //avoid " & \ in the title & description, those characters could cause problems
                // number of checks
                $transactionArray[0] = avoid_bad_sign($transactionArray[0]);
                $transactionArray[2] = avoid_bad_sign($transactionArray[2]);
                $transactionArray[3] = avoid_bad_sign($transactionArray[3]);
                $amount = new Amount($transactionArray[3]);
                /**
                 * transaction array
                 *
                 * @var array
                 */
                $rowArray = array("categoryId" => "", "accountId" => $accountId, "title" => substr($transactionArray[2], 0, 99), "description" => $transactionArray[0] . ', ' . $transactionArray[2], "valutaDate" => $valutaDate1, "amount" => $amount, "transactionPartner" => "Change by yourself");
            } else {
                $noValidFile = 'true';
            }
        }
        // if a row contains valid data
        if ($rowArray) {
            /**
             * array of all transaction arrays
             *
             * @var array
             */
            $importedTransactions[$csvRow] = $rowArray;
            $csvRow++;
        }
    }
    if ($noValidFile) {
        throw new badgerException('importCsv', 'wrongSeperatorNumber');
        //close file
        fclose($fp);
    } else {
        if ($csvRow == 0) {
            throw new badgerException('importCsv', 'noSeperator');
            //close file
            fclose($fp);
        } else {
            //close file
            fclose($fp);
            return $importedTransactions;
        }
    }
}