if ($desc !== "" || Expense::formatAmount($amount) !== 0.0) { $expenseEntry = array("desc" => $desc, "descError" => $descError, "type" => $type, "typeID" => $typeID, "typeError" => $typeError, "amount" => $amount, "amountError" => $amountError); array_push($expenseEntries, $expenseEntry); } $expenseEntriesCounter++; } // No errors - Insert/Update the database if (!$inputErrors) { $numIncomeEntries = count($incomeEntries); $numIncomes = count($incomes); $numExpenseEntries = count($expenseEntries); $numExpenses = count($expenses); $numIncomeDeletes = Income::numDeletes($numIncomes, $numIncomeEntries); $numIncomeUpdates = Income::numUpdates($numIncomes, $numIncomeEntries); $numIncomeInserts = Income::numInsertions($numIncomes, $numIncomeEntries); $numExpenseDeletes = Expense::numDeletes($numExpenses, $numExpenseEntries); $numExpenseUpdates = Expense::numUpdates($numExpenses, $numExpenseEntries); $numExpenseInserts = Expense::numInsertions($numExpenses, $numExpenseEntries); for ($ii = 0; $ii < $numIncomeDeletes; $ii++) { $income = array_pop($incomes); $income->delete(); } for ($ii = 0; $ii < $numIncomeEntries; $ii++) { if ($ii <= $numIncomeUpdates - 1) { // update existing income entry if it has changed $income = $incomes[$ii]; if ($incomeEntries[$ii]["desc"] !== $income->description || intval($incomeEntries[$ii]["typeID"]) !== intval($income->typeID) || floatval($incomeEntries[$ii]["amount"]) !== floatval($income->amount)) { $income->description = $incomeEntries[$ii]["desc"]; $income->amount = Income::formatAmount($incomeEntries[$ii]["amount"]); $income->typeID = $incomeEntries[$ii]["typeID"]; $income->save(array("amount", "description", "typeID"));