getId()], 7200, null, true); if (isset($results[0]) && Arrays::count($results) === 1) { return $results[0]; } return false; } /** * @param MetaFieldModel $fieldModel * * @return mixed|bool */ protected static function getMetaFieldData(MetaFieldModel $fieldModel) { $query = "SELECT * FROM `".ACPT_Lite_DB::prefixedTableName(ACPT_Lite_DB::TABLE_META_FIELD)."` f JOIN `".ACPT_Lite_DB::prefixedTableName(ACPT_Lite_DB::TABLE_META_BOX)."` b ON b.id = f.meta_box_id WHERE f.id = %s GROUP BY f.id "; $results = ACPT_Lite_DB::getResults($query, [$fieldModel->getId()], 7200, null, true); if (isset($results[0]) && Arrays::count($results) === 1) { return $results[0]; } return false; } /** * @param MetaFieldModel $fieldModel * * @return mixed|bool */ protected static function getParentMetaFieldData(MetaFieldModel $fieldModel) { $query = "SELECT * FROM `".ACPT_Lite_DB::prefixedTableName(ACPT_Lite_DB::TABLE_META_FIELD)."` f JOIN `".ACPT_Lite_DB::prefixedTableName(ACPT_Lite_DB::TABLE_META_BOX)."` b ON b.id = f.meta_box_id WHERE f.id = %s GROUP BY f.id "; $results = ACPT_Lite_DB::getResults($query, [$fieldModel->getParentId()], 7200, null, true); if (isset($results[0]) && Arrays::count($results) === 1) { return $results[0]; } return false; } /** * @param string $oldBoxName * @param string $newBoxName * * @return array */ protected static function changedBoxNames($oldBoxName, $newBoxName) { return [ 'newKey' => Strings::toDBFormat($newBoxName).'_', 'oldKey' => Strings::toDBFormat($oldBoxName).'_', ]; } /** * The SET and WHERE of the query that moves a renamed field's value and its extra keys * (`_id`, `_type`, `_attachment_id`...) to the new key, in one statement. * * One CASE renames each row once. The old two-step rename (exact key, then * REPLACE over `LIKE '_%'`) matched the key it had just renamed when the new name * starts with `_` (zz_field -> zz_field_renamed stored the value under * zz_field_renamed_renamed), and also moved a sibling field named `_`. * Only the exact key and the ExtraFields suffixes are touched. * * @param string $column the key column, e.g. `pm.meta_key` * @param string $oldKey * @param string $newKey * * @return array{set: string, where: string, args: array} args: SET's, then WHERE's */ protected static function renameFieldKeys(string $column, string $oldKey, string $newKey): array { $pairs = [$oldKey => $newKey]; foreach (ExtraFields::ALLOWED_VALUES as $suffix) { $pairs[$oldKey.'_'.$suffix] = $newKey.'_'.$suffix; } $set = "{$column} = CASE {$column}"; $setArgs = []; foreach ($pairs as $old => $new) { $set .= " WHEN %s THEN %s"; $setArgs[] = (string)$old; $setArgs[] = $new; } $set .= " ELSE {$column} END"; $where = "{$column} IN (".implode(', ', array_fill(0, count($pairs), '%s')).")"; return [ 'set' => $set, 'where' => $where, 'args' => array_merge($setArgs, array_map('strval', array_keys($pairs))), ]; } }