updated modules
views friendly_register serial address_field i18n
This commit is contained in:
@@ -42,7 +42,7 @@ function addressfield_get_address_format($country_code) {
|
||||
$countries_with_optional_postal_code = array(
|
||||
'AC', 'AD', 'AL', 'AZ', 'BA', 'BB', 'BD', 'BG', 'BH', 'BM', 'BN', 'BT',
|
||||
'CR', 'CY', 'CZ', 'DO', 'DZ', 'EC', 'EH', 'ET', 'FO', 'GE', 'GN', 'GT',
|
||||
'GW', 'HR', 'HT', 'HU', 'IL', 'IS', 'JO', 'KE', 'KG', 'KH', 'KW', 'LA',
|
||||
'GW', 'HR', 'HT', 'IL', 'IS', 'JO', 'KE', 'KG', 'KH', 'KW', 'LA',
|
||||
'LA', 'LB', 'LK', 'LR', 'LS', 'MA', 'MC', 'MD', 'ME', 'MG', 'MK', 'MM',
|
||||
'MT', 'MU', 'MV', 'NE', 'NP', 'OM', 'PK', 'PY', 'RO', 'RS', 'SA', 'SI',
|
||||
'SK', 'SN', 'SZ', 'TA', 'TJ', 'TM', 'TN', 'VA', 'VC', 'VG', 'XK', 'ZM',
|
||||
@@ -57,7 +57,7 @@ function addressfield_get_address_format($country_code) {
|
||||
// postal code in 'used_fields' and 'required_fields'.
|
||||
$countries_with_required_postal_code = array(
|
||||
'AT', 'AX', 'BE', 'BL', 'CH', 'DE', 'DK', 'FI', 'FK', 'FR', 'GF', 'GG',
|
||||
'GL', 'GP', 'GR', 'GS', 'IM', 'IO', 'JE', 'LI', 'LU', 'MF', 'MQ', 'NC',
|
||||
'GL', 'GP', 'GR', 'GS', 'HU', 'IM', 'IO', 'JE', 'LI', 'LU', 'MF', 'MQ', 'NC',
|
||||
'NL', 'NO', 'PL', 'PM', 'PN', 'PT', 'RE', 'SE', 'SH', 'SJ', 'TC', 'WF',
|
||||
'YT',
|
||||
);
|
||||
@@ -245,6 +245,7 @@ function addressfield_get_address_format($country_code) {
|
||||
'used_fields' => array('locality', 'administrative_area', 'postal_code'),
|
||||
'required_fields' => array('locality', 'administrative_area', 'postal_code'),
|
||||
'administrative_area_label' => t('Region', array(), array('context' => 'Territory of a country')),
|
||||
'render_administrative_area_value' => TRUE,
|
||||
);
|
||||
$address_formats['LT'] = array(
|
||||
'used_fields' => array('locality', 'administrative_area', 'postal_code'),
|
||||
@@ -343,6 +344,7 @@ function addressfield_get_address_format($country_code) {
|
||||
$address_formats['RU'] = array(
|
||||
'used_fields' => array('locality', 'administrative_area', 'postal_code'),
|
||||
'required_fields' => array('locality', 'postal_code'),
|
||||
'render_administrative_area_value' => TRUE,
|
||||
);
|
||||
$address_formats['SC'] = array(
|
||||
'used_fields' => array('locality', 'administrative_area'),
|
||||
|
@@ -23,7 +23,7 @@ function addressfield_devel_generate($object, $field, $instance, $bundle) {
|
||||
*/
|
||||
function _addressfield_devel_generate($object, $field, $instance, $bundle) {
|
||||
// Set default value
|
||||
$object_field = addressfield_default_values();
|
||||
$object_field = addressfield_default_values($field, $instance);
|
||||
$addresses = _addressfield_sample_addresses();
|
||||
$object_field = array_merge($object_field, $addresses[array_rand($addresses)]);
|
||||
unset($object_field['data']);
|
||||
|
@@ -9,9 +9,9 @@ files[] = addressfield.migrate.inc
|
||||
files[] = views/addressfield_views_handler_field_country.inc
|
||||
files[] = views/addressfield_views_handler_filter_country.inc
|
||||
|
||||
; Information added by Drupal.org packaging script on 2015-01-16
|
||||
version = "7.x-1.0"
|
||||
; Information added by Drupal.org packaging script on 2015-04-23
|
||||
version = "7.x-1.1"
|
||||
core = "7.x"
|
||||
project = "addressfield"
|
||||
datestamp = "1421426885"
|
||||
datestamp = "1429819382"
|
||||
|
||||
|
@@ -203,7 +203,7 @@ function addressfield_update_7001() {
|
||||
// previously selected default country.
|
||||
$default_country = '';
|
||||
if (!empty($instance['required']) && !empty($instance['default_value'])) {
|
||||
$default_country = $instance['default_value']['country'];
|
||||
$default_country = $instance['default_value'][0]['country'];
|
||||
}
|
||||
|
||||
$instance['widget']['settings']['default_country'] = $default_country;
|
||||
|
@@ -298,10 +298,9 @@ function addressfield_theme() {
|
||||
function theme_addressfield_container($variables) {
|
||||
$element = $variables['element'];
|
||||
$element['#children'] = trim($element['#children']);
|
||||
// Remove the autocomplete attributes because the W3C validator complains.
|
||||
// They are only used on forms anyway.
|
||||
// Remove the autocomplete attribute because the W3C validator complains.
|
||||
// It's only used on forms anyway.
|
||||
unset($element['#attributes']['autocomplete']);
|
||||
unset($element['#attributes']['x-autocompletetype']);
|
||||
|
||||
if (strlen($element['#children']) > 0) {
|
||||
$output = '<' . $element['#tag'] . drupal_attributes($element['#attributes']) . '>';
|
||||
@@ -375,9 +374,15 @@ function addressfield_field_info() {
|
||||
function addressfield_default_values($field, $instance, array $address = array()) {
|
||||
$available_countries = _addressfield_country_options_list($field, $instance);
|
||||
$default_country = $instance['widget']['settings']['default_country'];
|
||||
// If the default country is not in the list of available countries,
|
||||
// fallback to the first country in the list.
|
||||
if ($default_country && !isset($available_countries[$default_country])) {
|
||||
// Resolve the special site_default option.
|
||||
if ($default_country == 'site_default') {
|
||||
$default_country = variable_get('site_default_country', '');
|
||||
}
|
||||
// Fallback to the first country in the list if the default country is not
|
||||
// available, or is empty even though the field is required.
|
||||
$not_available = $default_country && !isset($available_countries[$default_country]);
|
||||
$empty_but_required = empty($default_country) && !empty($instance['required']);
|
||||
if ($not_available || $empty_but_required) {
|
||||
$default_country = key($available_countries);
|
||||
}
|
||||
|
||||
@@ -458,7 +463,10 @@ function addressfield_field_widget_info() {
|
||||
'field types' => array('addressfield'),
|
||||
'settings' => array(
|
||||
'available_countries' => array(),
|
||||
'default_country' => '',
|
||||
// Can't use variable_get('site_default_country') here because it would
|
||||
// set the value in stone. Instead, the site_default option allows the
|
||||
// default country to always reflect the current site setting.
|
||||
'default_country' => 'site_default',
|
||||
'format_handlers' => array('address'),
|
||||
),
|
||||
);
|
||||
@@ -487,7 +495,7 @@ function addressfield_field_widget_settings_form($field, $instance) {
|
||||
$form['default_country'] = array(
|
||||
'#type' => 'select',
|
||||
'#title' => t('Default country'),
|
||||
'#options' => _addressfield_country_options_list(),
|
||||
'#options' => array('site_default' => t('- Site default -')) + _addressfield_country_options_list(),
|
||||
'#default_value' => $settings['default_country'],
|
||||
'#empty_value' => '',
|
||||
);
|
||||
|
@@ -7,9 +7,9 @@ hidden = TRUE
|
||||
dependencies[] = ctools
|
||||
dependencies[] = addressfield
|
||||
|
||||
; Information added by Drupal.org packaging script on 2015-01-16
|
||||
version = "7.x-1.0"
|
||||
; Information added by Drupal.org packaging script on 2015-04-23
|
||||
version = "7.x-1.1"
|
||||
core = "7.x"
|
||||
project = "addressfield"
|
||||
datestamp = "1421426885"
|
||||
datestamp = "1429819382"
|
||||
|
||||
|
@@ -38,10 +38,10 @@ function addressfield_format_address_generate(&$format, $address, $context = arr
|
||||
'#tag' => 'div',
|
||||
'#attributes' => array(
|
||||
'class' => array('thoroughfare'),
|
||||
'x-autocompletetype' => 'address-line1',
|
||||
'autocomplete' => 'address-line1',
|
||||
),
|
||||
'#size' => 30,
|
||||
'#maxlength' => 255,
|
||||
'#required' => TRUE,
|
||||
);
|
||||
$format['street_block']['premise'] = array(
|
||||
@@ -49,10 +49,10 @@ function addressfield_format_address_generate(&$format, $address, $context = arr
|
||||
'#tag' => 'div',
|
||||
'#attributes' => array(
|
||||
'class' => array('premise'),
|
||||
'x-autocompletetype' => 'address-line2',
|
||||
'autocomplete' => 'address-line2',
|
||||
),
|
||||
'#size' => 30,
|
||||
'#maxlength' => 255,
|
||||
);
|
||||
$format['locality_block'] = array(
|
||||
'#type' => 'addressfield_container',
|
||||
@@ -60,6 +60,7 @@ function addressfield_format_address_generate(&$format, $address, $context = arr
|
||||
'class' => array('addressfield-container-inline', 'locality-block', 'country-' . $address['country']),
|
||||
),
|
||||
'#weight' => 50,
|
||||
'#maxlength' => 255,
|
||||
);
|
||||
$format['locality_block']['#attached']['css'][] = drupal_get_path('module', 'addressfield') . '/addressfield.css';
|
||||
$format['locality_block']['postal_code'] = array(
|
||||
@@ -67,9 +68,9 @@ function addressfield_format_address_generate(&$format, $address, $context = arr
|
||||
'#required' => in_array('postal_code', $address_format['required_fields']),
|
||||
'#access' => in_array('postal_code', $address_format['used_fields']),
|
||||
'#size' => 10,
|
||||
'#maxlength' => 255,
|
||||
'#attributes' => array(
|
||||
'class' => array('postal-code'),
|
||||
'x-autocompletetype' => 'postal-code',
|
||||
'autocomplete' => 'postal-code',
|
||||
),
|
||||
);
|
||||
@@ -78,9 +79,11 @@ function addressfield_format_address_generate(&$format, $address, $context = arr
|
||||
'#required' => in_array('dependent_locality', $address_format['required_fields']),
|
||||
'#access' => in_array('dependent_locality', $address_format['used_fields']),
|
||||
'#size' => 25,
|
||||
'#maxlength' => 255,
|
||||
'#tag' => 'div',
|
||||
'#attributes' => array(
|
||||
'class' => array('dependent-locality')
|
||||
'class' => array('dependent-locality'),
|
||||
'autocomplete' => '"address-level3',
|
||||
),
|
||||
// Most formats place this field in its own row.
|
||||
'#suffix' => $clearfix,
|
||||
@@ -90,11 +93,11 @@ function addressfield_format_address_generate(&$format, $address, $context = arr
|
||||
'#required' => in_array('locality', $address_format['required_fields']),
|
||||
'#access' => in_array('locality', $address_format['used_fields']),
|
||||
'#size' => 30,
|
||||
'#maxlength' => 255,
|
||||
'#prefix' => ' ',
|
||||
'#attributes' => array(
|
||||
'class' => array('locality'),
|
||||
'x-autocompletetype' => 'locality',
|
||||
'autocomplete' => 'locality',
|
||||
'autocomplete' => '"address-level2',
|
||||
),
|
||||
);
|
||||
$format['locality_block']['administrative_area'] = array(
|
||||
@@ -103,12 +106,12 @@ function addressfield_format_address_generate(&$format, $address, $context = arr
|
||||
'#access' => in_array('administrative_area', $address_format['used_fields']),
|
||||
'#empty_value' => '',
|
||||
'#size' => 10,
|
||||
'#maxlength' => 255,
|
||||
'#prefix' => ' ',
|
||||
'#render_option_value' => $address_format['render_administrative_area_value'],
|
||||
'#attributes' => array(
|
||||
'class' => array('state'),
|
||||
'x-autocompletetype' => 'region',
|
||||
'autocomplete' => 'region',
|
||||
'autocomplete' => 'address-level1',
|
||||
),
|
||||
);
|
||||
$format['country'] = array(
|
||||
@@ -118,7 +121,6 @@ function addressfield_format_address_generate(&$format, $address, $context = arr
|
||||
'#required' => TRUE,
|
||||
'#attributes' => array(
|
||||
'class' => array('country'),
|
||||
'x-autocompletetype' => 'country',
|
||||
'autocomplete' => 'country',
|
||||
),
|
||||
'#weight' => 100,
|
||||
@@ -166,6 +168,7 @@ function addressfield_format_address_generate(&$format, $address, $context = arr
|
||||
'#tag' => NULL,
|
||||
'#attributes' => array('class' => array('premise')),
|
||||
'#size' => 20,
|
||||
'#maxlength' => 255,
|
||||
'#prefix' => ', ',
|
||||
);
|
||||
$format['locality_block']['locality']['#suffix'] = ' - ';
|
||||
|
@@ -28,24 +28,26 @@ function addressfield_format_name_full_generate(&$format, $address) {
|
||||
// until one is selected.
|
||||
'#access' => !empty($address['country']),
|
||||
);
|
||||
// Maxlength is set to 127 so that the name_line still can be created without
|
||||
// exceeding the char limit from the database.
|
||||
$format['name_block']['first_name'] = array(
|
||||
'#title' => t('First name'),
|
||||
'#size' => 30,
|
||||
'#maxlength' => 127,
|
||||
'#required' => TRUE,
|
||||
'#attributes' => array(
|
||||
'class' => array('first-name'),
|
||||
'x-autocompletetype' => 'given-name',
|
||||
'autocomplete' => 'given-name',
|
||||
),
|
||||
);
|
||||
$format['name_block']['last_name'] = array(
|
||||
'#title' => t('Last name'),
|
||||
'#size' => 30,
|
||||
'#maxlength' => 127,
|
||||
'#required' => TRUE,
|
||||
'#prefix' => ' ',
|
||||
'#attributes' => array(
|
||||
'class' => array('last-name'),
|
||||
'x-autocompletetype' => 'family-name',
|
||||
'autocomplete' => 'family-name',
|
||||
),
|
||||
);
|
||||
|
@@ -31,10 +31,10 @@ function addressfield_format_name_oneline_generate(&$format, $address) {
|
||||
'#tag' => 'div',
|
||||
'#attributes' => array(
|
||||
'class' => array('name-block'),
|
||||
'x-autocompletetype' => 'name',
|
||||
'autocomplete' => 'name',
|
||||
),
|
||||
'#size' => 30,
|
||||
'#maxlength' => 255,
|
||||
'#required' => TRUE,
|
||||
);
|
||||
}
|
||||
|
@@ -29,9 +29,9 @@ function addressfield_format_organisation_generate(&$format, $address) {
|
||||
$format['organisation_block']['organisation_name'] = array(
|
||||
'#title' => t('Company'),
|
||||
'#size' => 30,
|
||||
'#maxlength' => 255,
|
||||
'#attributes' => array(
|
||||
'class' => array('organisation-name'),
|
||||
'x-autocompletetype' => 'organization',
|
||||
'autocomplete' => 'organization',
|
||||
),
|
||||
);
|
||||
|
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Internal functions for the Serial module.
|
||||
@@ -16,94 +15,94 @@
|
||||
/**
|
||||
* Creates an assistant serial table for a new created field.
|
||||
*
|
||||
* @param $field
|
||||
* a serial field
|
||||
* @param $instance
|
||||
* a new instance of that serial field
|
||||
* @param array $field
|
||||
* Serial field.
|
||||
* @param array $instance
|
||||
* New instance of that serial field.
|
||||
*/
|
||||
function _serial_create_table($field, $instance) {
|
||||
function _serial_create_table(array $field, array $instance) {
|
||||
$table = _serial_get_field_table_name($field, $instance);
|
||||
$schema = _serial_get_table_schema();
|
||||
db_create_table($table, $schema);
|
||||
|
||||
if (!db_table_exists($table)) {
|
||||
db_create_table($table, _serial_get_table_schema());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Drops an assistant serial table for a deleted field.
|
||||
*
|
||||
* @param $field
|
||||
* a serial field
|
||||
* @param $instance
|
||||
* a deleted instance of that serial field
|
||||
* @param array $field
|
||||
* Serial field.
|
||||
* @param array $instance
|
||||
* Deleted instance of that serial field.
|
||||
*/
|
||||
function _serial_drop_table($field, $instance) {
|
||||
$table = _serial_get_field_table_name($field, $instance);
|
||||
db_drop_table($table);
|
||||
function _serial_drop_table(array $field, array $instance) {
|
||||
db_drop_table(_serial_get_field_table_name($field, $instance));
|
||||
}
|
||||
|
||||
/**
|
||||
* Renames serial table(s) when a content type us renamed.
|
||||
*
|
||||
* @param $old_type
|
||||
* an old node type machine name
|
||||
* @param $new_type
|
||||
* a new node type machine name
|
||||
* @param string $old_type
|
||||
* An old node type machine name.
|
||||
* @param string $new_type
|
||||
* A new node type machine name.
|
||||
*/
|
||||
function _serial_rename_tables($old_type, $new_type) {
|
||||
|
||||
// Build the query to find all affected tables.
|
||||
$query = db_select('field_config', 'f')->fields('f', array('field_name'));
|
||||
$table_joined_alias = $query->join(
|
||||
'field_config_instance', 'i',
|
||||
'(f.field_name = i.field_name) AND ' .
|
||||
'(f.type = :field_type) AND (i.bundle = :bundle_type)',
|
||||
array(':field_type' => 'serial', ':bundle_type' => $new_type)
|
||||
$query = db_select('field_config', 'f')
|
||||
->fields('f', array('field_name'));
|
||||
|
||||
$query->join(
|
||||
'field_config_instance',
|
||||
'i',
|
||||
"f.field_name = i.field_name AND f.type = 'serial' AND i.bundle = '$new_type'"
|
||||
);
|
||||
|
||||
// Add an access check and execute it.
|
||||
$result = $query->addTag('node_access')->execute();
|
||||
|
||||
// Rename each affected table.
|
||||
foreach ($result as $record) {
|
||||
$old_table = _serial_get_table_name($old_type, $record->field_name);
|
||||
$new_table = _serial_get_table_name($new_type, $record->field_name);
|
||||
db_rename_table($old_table, $new_table);
|
||||
foreach ($query->addTag('node_access')->execute() as $record) {
|
||||
db_rename_table(
|
||||
_serial_get_table_name($old_type, $record->field_name),
|
||||
_serial_get_table_name($new_type, $record->field_name)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the name of the assistant table for a specific field.
|
||||
*
|
||||
* @param $field
|
||||
* a serial field
|
||||
* @param $instance
|
||||
* an instance of that serial field
|
||||
* @return
|
||||
* the name of the assistant table of the specified field instance.
|
||||
* @param array $field
|
||||
* Serial field.
|
||||
* @param array $instance
|
||||
* An instance of that serial field.
|
||||
*
|
||||
* @return string
|
||||
* The name of the assistant table of the specified field instance.
|
||||
*/
|
||||
function _serial_get_field_table_name($field, $instance) {
|
||||
function _serial_get_field_table_name(array $field, array $instance) {
|
||||
return _serial_get_table_name($instance['bundle'], $field['field_name']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the name of the assistant table for a specific field.
|
||||
*
|
||||
* @param $bundle
|
||||
* the name of the entity type that contains the field
|
||||
* @param $field_name
|
||||
* the name of the field
|
||||
* @return
|
||||
* @param string $bundle
|
||||
* The name of the entity type that contains the field.
|
||||
* @param string $field_name
|
||||
* The name of the field.
|
||||
*
|
||||
* @return string
|
||||
* the name of the assistant table of the specified field.
|
||||
*/
|
||||
function _serial_get_table_name($bundle, $field_name) {
|
||||
return db_escape_table( // be on the safe side
|
||||
'serial_' . $bundle . '_' . $field_name);
|
||||
return db_escape_table('serial_' . $bundle . '_' . $field_name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the schema of the assistant tables for generating serial values.
|
||||
*
|
||||
* @return
|
||||
* the assistant table schema.
|
||||
* @return array
|
||||
* Assistant table schema.
|
||||
*/
|
||||
function _serial_get_table_schema() {
|
||||
return array(
|
||||
@@ -131,28 +130,24 @@ function _serial_get_table_schema() {
|
||||
/**
|
||||
* Generates a unique serial value (unique per node type).
|
||||
*
|
||||
* @param $nid
|
||||
* id of the node for which to generate a serial value
|
||||
* @param $bundle
|
||||
* a containing bundle (e.g. content type)
|
||||
* @param $field_name
|
||||
* the field name
|
||||
* @param $delete
|
||||
* indicates if temporary records should be deleted
|
||||
* @return
|
||||
* @param string $bundle
|
||||
* Containing bundle (e.g. content type).
|
||||
* @param string $field_name
|
||||
* The field name.
|
||||
* @param bool $delete
|
||||
* Indicates if temporary records should be deleted.
|
||||
*
|
||||
* @return int
|
||||
* the unique serial value number.
|
||||
*/
|
||||
function _serial_generate_value($bundle, $field_name, $delete = TRUE) {
|
||||
|
||||
// Get the name of the relevant table.
|
||||
$table = _serial_get_table_name($bundle, $field_name);
|
||||
|
||||
// Insert a temporary record to get a new unique serial value.
|
||||
$uniqid = uniqid('', TRUE);
|
||||
$sid = db_insert($table)
|
||||
->fields(array(
|
||||
'uniqid' => $uniqid,
|
||||
))
|
||||
->fields(array('uniqid' => $uniqid))
|
||||
->execute();
|
||||
|
||||
// If there's a reason why it's come back undefined, reset it.
|
||||
@@ -160,9 +155,9 @@ function _serial_generate_value($bundle, $field_name, $delete = TRUE) {
|
||||
|
||||
// Delete the temporary record.
|
||||
if ($delete && ($sid % 10) == 0) {
|
||||
db_delete($table)
|
||||
->condition('uniqid', $uniqid, '=')
|
||||
->execute();
|
||||
db_delete($table)
|
||||
->condition('uniqid', $uniqid)
|
||||
->execute();
|
||||
}
|
||||
|
||||
// Return the new unique serial value.
|
||||
@@ -172,46 +167,49 @@ function _serial_generate_value($bundle, $field_name, $delete = TRUE) {
|
||||
/**
|
||||
* Initializes the value of a new serial field in existing nodes.
|
||||
*
|
||||
* @param $bundle
|
||||
* a containing bundle (e.g. content type)
|
||||
* @param $field_name
|
||||
* the field name
|
||||
* @return
|
||||
* the number of existing nodes that have been initialized.
|
||||
* @todo Currently works only for nodes - should support comments and users.
|
||||
*
|
||||
* @param string $bundle
|
||||
* Containing bundle (e.g. content type).
|
||||
* @param string $field_name
|
||||
* The field name.
|
||||
*
|
||||
* @return int
|
||||
* Number of existing nodes that have been initialized.
|
||||
*/
|
||||
function _serial_init_old_nodes($bundle, $field_name) {
|
||||
// Retrieve all the node ids of that type:
|
||||
$query = "SELECT nid FROM {node} WHERE type = :type ORDER BY nid";
|
||||
// TODO: Currently works only for nodes - should support comments and users.
|
||||
$result = db_query($query, array('type' => $bundle));
|
||||
$nodes = node_load_multiple(array(), array('type' => $bundle));
|
||||
|
||||
// Allocate a serial number for every old node.
|
||||
foreach ($nodes as $node) {
|
||||
$node->{$field_name} = array(
|
||||
LANGUAGE_NONE => array(
|
||||
array(
|
||||
'value' => _serial_generate_value($bundle, $field_name, FALSE),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
// Allocate a serial number for every old node:
|
||||
$count = 0;
|
||||
foreach ($result as $node) {
|
||||
$nid = $node->nid;
|
||||
$node = node_load($nid);
|
||||
$sid = _serial_generate_value($bundle, $field_name, FALSE);
|
||||
$node->{$field_name} = array('und' => array(array('value' => $sid)));
|
||||
node_save($node);
|
||||
$count++;
|
||||
}
|
||||
|
||||
// Return the number of existing nodes that have been initialized:
|
||||
return $count;
|
||||
// Return the number of existing nodes that have been initialized.
|
||||
return count($nodes);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves all the managed serial fields.
|
||||
*
|
||||
* @return result set containing pairs of (node type name, field name).
|
||||
* @return array
|
||||
* Pairs of node type name, field name.
|
||||
*/
|
||||
function _serial_get_all_fields() {
|
||||
$query = db_select('field_config', 'f');
|
||||
$query->join('field_config_instance', 'i', 'i.field_name = f.field_name');
|
||||
$query->fields('i', array('bundle', 'field_name'))
|
||||
->condition('f.type', 'serial', '=')
|
||||
->condition('i.deleted', 0, '=');
|
||||
$result = $query->execute();
|
||||
return $result->fetchAll();
|
||||
}
|
||||
|
||||
return $query->fields('i', array('bundle', 'field_name'))
|
||||
->condition('f.type', 'serial')
|
||||
->condition('i.deleted', 0)
|
||||
->execute()
|
||||
->fetchAll();
|
||||
}
|
||||
|
@@ -6,9 +6,9 @@ dependencies[] = field
|
||||
files[] = serial.module
|
||||
|
||||
|
||||
; Information added by drupal.org packaging script on 2013-10-15
|
||||
version = "7.x-1.3"
|
||||
; Information added by Drupal.org packaging script on 2015-05-19
|
||||
version = "7.x-1.4"
|
||||
core = "7.x"
|
||||
project = "serial"
|
||||
datestamp = "1381844527"
|
||||
datestamp = "1432026177"
|
||||
|
||||
|
@@ -1,24 +1,15 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Install, update and uninstall functions for the Serial module.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Implements hook_uninstall().
|
||||
*/
|
||||
function serial_uninstall() {
|
||||
/*
|
||||
* Schema tables are now dropped automatically. However, if any work needs
|
||||
* to be done before this, do it here.
|
||||
*/
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements hook_field_schema().
|
||||
*/
|
||||
function serial_field_schema($field) {
|
||||
$columns = array();
|
||||
|
||||
switch ($field['type']) {
|
||||
case 'serial':
|
||||
$columns['value'] = array(
|
||||
@@ -31,9 +22,8 @@ function serial_field_schema($field) {
|
||||
);
|
||||
break;
|
||||
}
|
||||
return array(
|
||||
'columns' => $columns
|
||||
);
|
||||
|
||||
return array('columns' => $columns);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -42,45 +32,40 @@ function serial_field_schema($field) {
|
||||
function serial_schema() {
|
||||
// Get the standard schema:
|
||||
module_load_include('inc', 'serial');
|
||||
$table_schema = _serial_get_table_schema();
|
||||
|
||||
// Build the schema by iteration over all the serial field instances:
|
||||
$table_schema = _serial_get_table_schema();
|
||||
$schema = array();
|
||||
$result = _serial_get_all_fields();
|
||||
foreach ($result as $field) {
|
||||
$table = _serial_get_table_name($field->bundle, $field->field_name);
|
||||
$schema[$table] = $table_schema;
|
||||
|
||||
foreach (_serial_get_all_fields() as $field) {
|
||||
$schema[_serial_get_table_name($field->bundle, $field->field_name)] = $table_schema;
|
||||
}
|
||||
|
||||
// Return the schema of all the assistant tables (one per serial field instance):
|
||||
// Return the schema of all the assistant tables (one per field instance).
|
||||
return $schema;
|
||||
}
|
||||
|
||||
/**
|
||||
* Upgrade path.
|
||||
*
|
||||
* Switches from nids to uniqid.
|
||||
* Switches from nids to uniqids.
|
||||
*/
|
||||
function serial_update_7130() {
|
||||
// Get the new field schema.
|
||||
module_load_include('inc', 'serial');
|
||||
|
||||
$table_schema = _serial_get_table_schema();
|
||||
$uniqid_schema = $table_schema['fields']['uniqid'];
|
||||
|
||||
// Update the schema of old assistant tables.
|
||||
$result = _serial_get_all_fields();
|
||||
foreach ($result as $field) {
|
||||
foreach (_serial_get_all_fields() as $field) {
|
||||
// Empty the table.
|
||||
$table = _serial_get_table_name($field->bundle, $field->field_name);
|
||||
db_delete($table)->execute();
|
||||
|
||||
// Drop nid field and key
|
||||
// Drop nid field and key.
|
||||
db_drop_field($table, 'nid');
|
||||
db_drop_unique_key($table, 'nid');
|
||||
|
||||
// Add uniqid field and key
|
||||
db_add_field($table, 'uniqid', $uniqid_schema);
|
||||
// Add uniqid field and key.
|
||||
db_add_field($table, 'uniqid', $table_schema['fields']['uniqid']);
|
||||
db_add_unique_key($table, 'uniqid', array('uniqid'));
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -1,14 +1,9 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* The Serial module main file.
|
||||
*/
|
||||
|
||||
//==================//
|
||||
// Field Definition //
|
||||
//==================//
|
||||
|
||||
/**
|
||||
* Implements hook_field_info().
|
||||
*/
|
||||
@@ -17,6 +12,9 @@ function serial_field_info() {
|
||||
'serial' => array(
|
||||
'label' => t('Serial'),
|
||||
'description' => t('Auto increment serial field type.'),
|
||||
// The "property_type" should be defined for accessing the
|
||||
// field by entity metadata wrapper.
|
||||
'property_type' => 'serial',
|
||||
'default_widget' => 'serial',
|
||||
'default_formatter' => 'serial_formatter_default',
|
||||
),
|
||||
@@ -28,18 +26,19 @@ function serial_field_info() {
|
||||
*/
|
||||
function serial_field_create_instance($instance) {
|
||||
$field = field_read_field($instance['field_name']);
|
||||
if ($field['type'] == 'serial') {
|
||||
|
||||
if ('serial' == $field['type']) {
|
||||
// Create the assistant table:
|
||||
module_load_include('inc', 'serial');
|
||||
_serial_create_table($field, $instance);
|
||||
|
||||
// Set serial values for old objects
|
||||
// Set serial values for old objects.
|
||||
$old_count = _serial_init_old_nodes($instance['bundle'], $field['field_name']);
|
||||
if ($old_count) {
|
||||
drupal_set_message(
|
||||
t('Serial values have been automatically set for %count existing nodes.',
|
||||
array('%count' => $old_count))
|
||||
);
|
||||
|
||||
if ($old_count > 0) {
|
||||
drupal_set_message(t('Serial values have been automatically set for %count existing nodes.', array(
|
||||
'%count' => $old_count,
|
||||
)));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -49,8 +48,9 @@ function serial_field_create_instance($instance) {
|
||||
*/
|
||||
function serial_field_delete_instance($instance) {
|
||||
$field = field_read_field($instance['field_name']);
|
||||
if ($field['type'] == 'serial') {
|
||||
// Drop the assistant table:
|
||||
|
||||
if ('serial' == $field['type']) {
|
||||
// Drop the assistant table.
|
||||
module_load_include('inc', 'serial');
|
||||
_serial_drop_table($field, $instance);
|
||||
}
|
||||
@@ -60,18 +60,12 @@ function serial_field_delete_instance($instance) {
|
||||
* Implements hook_form_alter().
|
||||
*/
|
||||
function serial_form_alter(&$form, $form_state, $form_id) {
|
||||
if ('field_ui_field_settings_form' == $form_id && 'serial' == $form['field']['type']['#value']) {
|
||||
drupal_set_message(t('Serial field %field has been created.', array(
|
||||
'%field' => $form['field']['field_name']['#value'],
|
||||
)));
|
||||
|
||||
if ($form_id == 'field_ui_field_settings_form' && $form['field']['type']['#value'] == 'serial') {
|
||||
// Show messages:
|
||||
$field_name = $form['field']['field_name']['#value'];
|
||||
drupal_set_message(
|
||||
t('Serial field %field has been created.',
|
||||
array('%field' => $field_name))
|
||||
);
|
||||
|
||||
// Go back to Managed Fields:
|
||||
$type = $form['#bundle'];
|
||||
drupal_goto("admin/structure/types/manage/$type/fields");
|
||||
drupal_goto("admin/structure/types/manage/{$form['#bundle']}/fields");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -79,19 +73,19 @@ function serial_form_alter(&$form, $form_state, $form_id) {
|
||||
* Implements hook_field_presave().
|
||||
*/
|
||||
function serial_field_presave($entity_type, $entity, $field, $instance, $langcode, &$items) {
|
||||
module_load_include('inc', 'serial');
|
||||
if (empty($items)) {
|
||||
$sid = _serial_generate_value($instance['bundle'], $field['field_name']);
|
||||
$items = array(array('value' => $sid));
|
||||
module_load_include('inc', 'serial');
|
||||
|
||||
$items = array(array('value' => _serial_generate_value($instance['bundle'], $field['field_name'])));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Implements hook_field_is_empty().
|
||||
*/
|
||||
function serial_field_is_empty($item, $field) {
|
||||
return FALSE; // never should be treated as empty
|
||||
// Never should be treated as empty.
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -116,39 +110,6 @@ function serial_node_type_update($info) {
|
||||
}
|
||||
}
|
||||
|
||||
// Tokens for fields are currently not supported - http://drupal.org/node/691078.
|
||||
|
||||
///**
|
||||
// * Implements hook_token_info().
|
||||
// */
|
||||
//function serial_token_info() {
|
||||
// $type = array(
|
||||
// 'name' => t('Nodes'),
|
||||
// 'description' => t('Tokens related to individual nodes.'),
|
||||
// 'needs-data' => 'node',
|
||||
// );
|
||||
// $node['serial'] = array(
|
||||
// 'name' => t("Serial Field"),
|
||||
// 'description' => t('Serial field value (unique per node type)'),
|
||||
// 'needs-data' => 'node',
|
||||
// );
|
||||
// return array(
|
||||
// 'types' => array('node' => $type),
|
||||
// 'tokens' => array('node' => $node),
|
||||
// );
|
||||
//}
|
||||
//
|
||||
///**
|
||||
// * Implements hook_tokens().
|
||||
// */
|
||||
//function serial_tokens($type, $tokens, $data, $options) {
|
||||
// // TODO
|
||||
//}
|
||||
|
||||
//=================//
|
||||
// Field Formatter //
|
||||
//=================//
|
||||
|
||||
/**
|
||||
* Implements hook_field_formatter_info().
|
||||
*/
|
||||
@@ -157,7 +118,7 @@ function serial_field_formatter_info() {
|
||||
'serial_formatter_default' => array(
|
||||
'label' => t('Default'),
|
||||
'field types' => array('serial'),
|
||||
)
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -172,21 +133,17 @@ function serial_field_formatter_view($entity_type, $entity, $field, $instance, $
|
||||
$element[$delta] = array(
|
||||
'#markup' => theme('serial_formatter_default', array(
|
||||
'serial_id' => $item['value'],
|
||||
))
|
||||
)),
|
||||
);
|
||||
}
|
||||
|
||||
return $element;
|
||||
}
|
||||
|
||||
/**
|
||||
* Theme Functions
|
||||
*/
|
||||
|
||||
/**
|
||||
* Implements hook_theme().
|
||||
*/
|
||||
function serial_theme() {
|
||||
|
||||
// Register the theme for the default formatter.
|
||||
return array(
|
||||
'serial_formatter_default' => array(
|
||||
@@ -204,10 +161,6 @@ function theme_serial_formatter_default($variables) {
|
||||
return $variables['serial_id'];
|
||||
}
|
||||
|
||||
//==============//
|
||||
// Field Widget //
|
||||
//==============//
|
||||
|
||||
/**
|
||||
* Implements hook_field_widget_info().
|
||||
*/
|
||||
@@ -228,7 +181,6 @@ function serial_field_widget(&$form, &$form_state, $field, $instance, $items, $d
|
||||
'value' => array(
|
||||
'#type' => 'hidden',
|
||||
'#default_value' => $items[$delta]['value'],
|
||||
)
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user