VersionPress\Database\EntityInfo::getRulesForIgnoredEntities PHP Method

getRulesForIgnoredEntities() public method

    public function getRulesForIgnoredEntities()
    {
        return QueryLanguageUtils::createRulesFromQueries($this->ignoredEntities);
    }

Usage Example

 private function deleteEntitiesWhichAreNotInStorage()
 {
     if ($this->isSelectiveSynchronization) {
         $savedVpIds = array_column($this->entities, $this->entityInfo->vpidColumnName);
         $vpIdsToSynchronize = array_column($this->entitiesToSynchronize, 'vp_id');
         if ($this->entityInfo->hasNaturalVpid) {
             $sql = "SELECT `{$this->idColumnName}` FROM {$this->prefixedTableName} ";
             $sql .= sprintf("WHERE {$this->idColumnName} IN (\"%s\") ", join('", "', $vpIdsToSynchronize));
             $sql .= sprintf("AND {$this->idColumnName} NOT IN (\"%s\")", join('", "', $savedVpIds));
         } else {
             $sql = sprintf('SELECT id FROM %s WHERE `table` = "%s" ', $this->database->vp_id, $this->tableName);
             $sql .= sprintf('AND HEX(vp_id) IN ("%s") ', join('", "', $vpIdsToSynchronize));
             $sql .= sprintf('AND HEX(vp_id) NOT IN ("%s")', join('", "', $savedVpIds));
         }
         $ids = $this->database->get_col($sql);
     } else {
         $allVpids = array_column($this->entities, $this->entityInfo->vpidColumnName);
         if ($this->entityInfo->hasNaturalVpid) {
             $rules = $this->entityInfo->getRulesForIgnoredEntities();
             $restrictionForIgnoredEntities = join(' OR ', array_map(function ($rule) {
                 $restrictionPart = QueryLanguageUtils::createSqlRestrictionFromRule($rule);
                 return "({$restrictionPart})";
             }, $rules));
             $sql = "SELECT `{$this->idColumnName}` FROM {$this->prefixedTableName} WHERE NOT ({$restrictionForIgnoredEntities})";
             if (count($allVpids) > 0) {
                 $sql .= " AND `{$this->idColumnName}` NOT IN (\"" . join('", "', $allVpids) . "\")";
             }
         } else {
             $sql = "SELECT id FROM {$this->database->vp_id} WHERE `table` = \"{$this->tableName}\"" . (count($allVpids) > 0 ? "AND HEX(vp_id) NOT IN (\"" . join('", "', $allVpids) . "\")" : "");
         }
         $ids = $this->database->get_col($sql);
     }
     $this->deletedIds = $ids;
     if (count($ids) == 0) {
         return;
     }
     $idsString = join("', '", $ids);
     $this->database->query("DELETE FROM {$this->prefixedTableName} WHERE {$this->idColumnName} IN ('{$idsString}')");
     $this->database->query("DELETE FROM {$this->database->vp_id} WHERE `table` = \"{$this->tableName}\" AND id IN ('{$idsString}')");
 }
All Usage Examples Of VersionPress\Database\EntityInfo::getRulesForIgnoredEntities