function _emfield_emfield_field in Embedded Media Field 6
Same name and namespace in other branches
- 6.3 emfield.cck.inc \_emfield_emfield_field()
- 6.3 deprecated/emfield-deprecated.cck.inc \_emfield_emfield_field()
- 6.2 emfield.cck.inc \_emfield_emfield_field()
Implementation of hook_emfield_field(). This in turn is a callback for hook_field().
This private function is returned directly by emfield_emfield_field().
1 call to _emfield_emfield_field()
- emfield_emfield_field in ./
emfield.module - A helper function for hook_field(), called by the various sub-modules.
File
- ./
emfield.cck.inc, line 44 - Helper functions to implement our various cck-required functions, such as hook_field and hook_widget.
Code
function _emfield_emfield_field($op, &$node, $field, &$items, $teaser, $page, $module) {
$return = array();
switch ($op) {
case 'validate':
foreach ($items as $delta => $item) {
$error_field = $field['multiple'] ? $field['field_name'] . '][' . $delta . '][embed' : $field['field_name'];
_emfield_field_validate_id($field, $item, $error_field, $module, $delta);
}
break;
case 'sanitize':
// Get the field ready for Previews.
if (!empty($node->preview)) {
foreach ($items as $delta => $item) {
$items[$delta] = _emfield_field_submit_id($field, $item, $module);
}
}
break;
case 'presave':
foreach ($items as $delta => $item) {
$items[$delta] = _emfield_field_submit_id($field, $item, $module);
// Remove empty fields
if (empty($item['embed'])) {
// Remove thumbnail files
if (module_exists('emthumb')) {
// see http://drupal.org/node/393490#comment-1328368
if (is_array($item) && !empty($item['emthumb']['emthumb']['emthumb']['emthumb']['file'])) {
_emthumb_file_delete($item['emthumb']['emthumb']['emthumb']['emthumb']['file'], $field['field_name']);
}
}
unset($items[$delta]);
}
}
break;
case 'load':
// We need to unserialize the 'data' column manually.
$field_name = $field['field_name'];
foreach ($items as $delta => $item) {
$data = (array) unserialize($items[$delta]['data']);
$items[$delta]['data'] = $data;
$node->{$field_name}[$delta]['data'] = $data;
}
$return[$field_name] = $items;
break;
case 'delete':
break;
}
// Allow other modules to modify the data before storing.
if (in_array($op, array(
'insert',
'update',
))) {
foreach ($items as $delta => $item) {
// Invoke all modules implementing hook_emfield_data_alter(&$data),
// with the following parameters also sent.
drupal_alter('emfield_data', $items[$delta]['data'], $module, $delta, $node, $field, $items);
}
}
// Allow modules (such as emthumb) to alter our data.
foreach (module_implements('emfield_field_extra') as $module) {
$args = array(
$op,
&$node,
$field,
&$items,
$teaser,
$page,
$module,
);
$ret = call_user_func_array($module . '_emfield_field_extra', $args);
if (is_array($ret)) {
$return = array_merge($return, $ret);
}
}
if (in_array($op, array(
'insert',
'update',
))) {
foreach ($items as $delta => $item) {
// We need to manually serialize the 'data' array.
if (is_array($items[$delta]['data'])) {
$items[$delta]['data'] = serialize($items[$delta]['data']);
}
}
}
return $return;
}