VersionPress\Utils\ArrayUtils::parametrize PHP Method

parametrize() public static method

public static parametrize ( $array )
    public static function parametrize($array)
    {
        $out = [];
        foreach ($array as $key => $value) {
            if (empty($value)) {
                $out[] = "{$key}=''";
            } else {
                $out[] = "{$key}={$value}";
            }
        }
        return $out;
    }

Usage Example

コード例 #1
0
 /**
  * Fixes value references
  *
  * @param $entity
  */
 private function fixValueReferencesOfOneEntity($entity)
 {
     $entityInfo = $this->dbSchema->getEntityInfo($this->entityName);
     $references = $entityInfo->valueReferences;
     $referencesToUpdate = array();
     foreach ($references as $reference => $referencedEntity) {
         list($sourceColumn, $sourceValue, $valueColumn) = array_values(ReferenceUtils::getValueReferenceDetails($reference));
         if (isset($entity[$sourceColumn]) && $entity[$sourceColumn] == $sourceValue && isset($entity[$valueColumn])) {
             $referencesToUpdate[$valueColumn] = $entity[$valueColumn];
         }
     }
     if (count($referencesToUpdate) === 0) {
         return;
     }
     $idMap = $this->getIdsForVpIds($referencesToUpdate);
     $entityTable = $this->dbSchema->getPrefixedTableName($this->entityName);
     $vpIdTable = $this->dbSchema->getPrefixedTableName('vp_id');
     $idColumnName = $entityInfo->idColumnName;
     $updateSql = "UPDATE {$entityTable} SET ";
     $newReferences = array_map(function ($vpId) use($idMap) {
         return $idMap[$vpId];
     }, $referencesToUpdate);
     $updateSql .= join(", ", ArrayUtils::parametrize($newReferences));
     $updateSql .= " WHERE {$idColumnName}=(SELECT id FROM {$vpIdTable} WHERE vp_id=UNHEX(\"{$entity['vp_id']}\"))";
     $this->database->query($updateSql);
 }