/** * Used to build the xml that limits the results to only updated results * * @param string $user Same deal: pass along the $user parameter * @param string $action Ditto with $action parameter * @param array $extra Simply pass in the $extra value that is passed to the function you're calling this from. * @param boolean $filter_wrap * @return string */ protected static function _buildFilter($user, $action, $extra, $filter_wrap = false) { $Driver = QuickBooks_Driver_Singleton::getInstance(); $xml = ''; $type = ''; $key_prev = QuickBooks_Server_SQL_Callbacks::_keySyncPrev($action); $key_curr = QuickBooks_Server_SQL_Callbacks::_keySyncCurr($action); $module = __CLASS__; //$action = null; $type = null; $opts = null; // configRead($user, $module, $key, &$type, &$opts) $prev_sync_datetime = $Driver->configRead($user, $module, $key_prev, $type, $opts); // last sync started... if (!$prev_sync_datetime) { // If this query has *never* run before, let's get *all* of the records $timestamp = time() - 60 * 60 * 24 * 365 * 25; $prev_sync_datetime = date('Y-m-d', $timestamp) . 'T' . date('H:i:s', $timestamp); $extra = array(); // If an iterator exists, get rid of it (this should *never* happen... how could it?) // configWrite($user, $module, $key, $value, $type, $opts $Driver->configWrite($user, $module, $key_prev, $prev_sync_datetime, null); } if (!is_array($extra) or empty($extra['iteratorID'])) { // Start of a new iterator! // Store when we started to do this iterator (this will become the $prev_sync_datetime after we finish with this iterator) $curr_sync_datetime = date('Y-m-d') . 'T' . date('H:i:s'); $Driver->configWrite($user, $module, $key_curr, $curr_sync_datetime, null); if ($filter_wrap) { if ($action == QUICKBOOKS_QUERY_DELETEDITEMS || $action == QUICKBOOKS_QUERY_DELETEDTXNS) { $xml .= '<DeletedDateRangeFilter>' . "\n"; $xml .= ' <FromDeletedDate>' . $prev_sync_datetime . '</FromDeletedDate>' . "\n"; $xml .= '</DeletedDateRangeFilter>' . "\n"; } else { $xml .= '<ModifiedDateRangeFilter>' . "\n"; $xml .= ' <FromModifiedDate>' . $prev_sync_datetime . '</FromModifiedDate>' . "\n"; $xml .= '</ModifiedDateRangeFilter>' . "\n"; } } else { $xml .= '<FromModifiedDate>' . $prev_sync_datetime . '</FromModifiedDate>'; } } else { if ($filter_wrap) { if ($action == QUICKBOOKS_QUERY_DELETEDITEMS || $action == QUICKBOOKS_QUERY_DELETEDTXNS) { $xml .= '<DeletedDateRangeFilter>' . "\n"; $xml .= ' <FromDeletedDate>' . $prev_sync_datetime . '</FromDeletedDate>' . "\n"; $xml .= '</DeletedDateRangeFilter>' . "\n"; } else { $xml .= '<ModifiedDateRangeFilter>' . "\n"; $xml .= ' <FromModifiedDate>' . $prev_sync_datetime . '</FromModifiedDate>' . "\n"; $xml .= '</ModifiedDateRangeFilter>' . "\n"; } } else { $xml .= '<FromModifiedDate>' . $prev_sync_datetime . '</FromModifiedDate>'; } } return $xml; }