/** * Returns the default values for metadata subfields. * * Gets an asset's metadata object and assigns each property configured in the field settings * its value by rendering the property's default value Twig. * * @param AssetMetadataFieldType $field * * @return array */ public function getDefaultValues(AssetMetadataFieldType $field) { $settings = $field->getSettings(); $element = $field->element; $oldPath = craft()->path->getTemplatesPath(); craft()->path->setTemplatesPath(craft()->path->getSiteTemplatesPath()); if ($settings->useCustomMetadataVar) { $twig = $settings->customMetadataVar; $twig .= '{{ metadata|json_encode|raw }}'; $metadata = craft()->templates->renderString($twig, array('object' => $element)); $metadata = json_decode($metadata, true); } else { $metadata = craft()->assetMetadata->getAssetMetadata($element); } $defaultValues = array(); foreach ($settings->subfields as $id => $subfield) { try { $variables = array('object' => $element, 'metadata' => $metadata); $defaultValues[$id] = craft()->templates->renderString($subfield['defaultValue'], $variables); } catch (\Exception $e) { AssetMetadataPlugin::log('Could not render value for subfield “' . $subfield['handle'] . '” (' . $e->getMessage() . ').', LogLevel::Error); } } craft()->path->setTemplatesPath($oldPath); return $defaultValues; }
/** * Returns the default values for metadata subfields. * * Gets an asset's metadata object and assigns each property configured in the field settings * its value by rendering the property's default value Twig. * * @param AssetMetadataFieldType $field * * @return array */ public function getDefaultValues(AssetMetadataFieldType $field) { $settings = $field->getSettings(); $element = $field->element; $oldPath = craft()->path->getTemplatesPath(); craft()->path->setTemplatesPath(craft()->path->getSiteTemplatesPath()); if ($settings->useCustomMetadataVar) { $twig = $settings->customMetadataVar; $twig .= '{{ metadata|json_encode|raw }}'; $metadata = craft()->templates->renderString($twig, array('object' => $element)); $metadata = json_decode($metadata, true); } else { $metadata = craft()->assetMetadata->getAssetMetadata($element); } $defaultValues = array(); foreach ($settings->subfields as $id => $subfield) { $variables = array('object' => $element, 'metadata' => $metadata); $defaultValues[$id] = craft()->templates->renderString($subfield['defaultValue'], $variables); } craft()->path->setTemplatesPath($oldPath); return $defaultValues; }