Inheritance: extends Infusionsoft_Generated_ContactGroupAssign
 public static function queryWithOrderBy($object, $queryData, $orderByField = null, $ascending = true, $limit = 1000, $page = 0, $returnFields = false, Infusionsoft_App $app = null)
 {
     if (PHP_INT_SIZE < 8) {
         throw new Exception("This version oh php is not 64 bit it is " . PHP_INT_SIZE * 8 . ' bit.  ContactGroupAssign cannot be synced unless running on a 64bit version of php.');
     }
     Infusionsoft_ContactGroupAssign::removeField('Id');
     if (is_array($returnFields) && in_array('Id', $returnFields)) {
         unset($returnFields[array_search('Id', $returnFields)]);
         $returnFields[] = 'ContactId';
         $returnFields[] = 'GroupId';
         $returnFields = array_values($returnFields);
     }
     $results = Infusionsoft_DataService::queryWithOrderBy($object, $queryData, $orderByField, $ascending, $limit, $page, $returnFields, $app);
     Infusionsoft_ContactGroupAssign::addCustomField('Id');
     self::addCompoundKeyToResults($results);
     if ($orderByField == 'ContactId' && $ascending && count($results) > 0) {
         if ($page > 0) {
             self::removeRecordsForContactsAlreadyProcessed(self::$lastProcessedContactId, $results);
         }
         $lastRecordOfResultSet = end($results);
         $lastContactId = $lastRecordOfResultSet->ContactId;
         self::$lastProcessedContactId = $lastContactId;
         $foundLastRecordForLastContact = false;
         $extraPages = 1;
         while (!$foundLastRecordForLastContact && count($results) > 0) {
             Infusionsoft_ContactGroupAssign::removeField('Id');
             $extraResults = Infusionsoft_DataService::queryWithOrderBy($object, $queryData, $orderByField, $ascending, $limit, $page + $extraPages, $returnFields, $app);
             Infusionsoft_ContactGroupAssign::addCustomField('Id');
             self::addCompoundKeyToResults($extraResults);
             foreach ($extraResults as $extraResult) {
                 //If somehow, between calls, a lot of tags are applied, and our "last" contact gets pushed down to the second page, we need to not break because of new contacts higher up on the page.
                 if ($extraResult->ContactId <= $lastContactId) {
                     $results[] = $extraResult;
                 } else {
                     $foundLastRecordForLastContact = true;
                     break;
                 }
             }
             if (count($extraResults) == 0) {
                 $foundLastRecordForLastContact = true;
             }
             $extraPages++;
         }
         return $results;
     }
     /** @var Infusionsoft_ContactGroupAssign $result */
     return $results;
 }
コード例 #2
0
 public static function getContactListWhoHaveATagInCategory($categoryName)
 {
     $categories = Infusionsoft_DataService::query(new Infusionsoft_ContactGroupCategory(), array('CategoryName' => $categoryName));
     if (count($categories) > 0) {
         $category = array_shift($categories);
     } else {
         throw new Exception("Tag Category: " . $categoryName . " doesn't exist.");
     }
     $tags = Infusionsoft_DataService::query(new Infusionsoft_ContactGroup(), array('GroupCategoryId' => $category->Id));
     $contactList = array();
     foreach ($tags as $tag) {
         /** @var Infusionsoft_ContactGroup $tag */
         Infusionsoft_ContactGroupAssign::addCustomField("Contact.FirstName");
         Infusionsoft_ContactGroupAssign::addCustomField("Contact.LastName");
         $contacts = Infusionsoft_DataService::query(new Infusionsoft_ContactGroupAssign(), array('GroupId' => $tag->Id));
         foreach ($contacts as $contact) {
             /** @var Infusionsoft_ContactGroupAssign $contact */
             if (!isset($contactList[$contact->ContactId])) {
                 $contactList[$contact->ContactId] = $contact->__get('Contact.FirstName') . ' ' . $contact->__get('Contact.LastName');
             }
         }
     }
     return $contactList;
 }