123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- <?php
- /**
- * @file
- * Main functions and hook implementations for FE Profile.
- */
- /**
- * Implements hook_features_api().
- */
- function fe_profile_features_api() {
- return array(
- 'fe_profile' => array(
- 'name' => t('Profile fields'),
- 'feature_source' => TRUE,
- 'default_hook' => 'fe_profile_export_fields',
- 'default_file' => FEATURES_DEFAULTS_INCLUDED_COMMON,
- ),
- );
- }
- /**
- * Implements hook_features_export_options().
- */
- function fe_profile_features_export_options() {
- $options = array();
- $table = 'profile_field';
- $query = "SELECT * FROM {{$table}}";
- $fields = db_query($query);
- while ($row = $fields->fetchObject()) {
- $options[$row->name] = $row->name;
- }
- return $options;
- }
- /**
- * Implements hook_features_export().
- */
- function fe_profile_features_export($data, &$export, $module_name = '') {
- $export['dependencies']['profile'] = 'profile';
- foreach ($data as $machine_name) {
- $export['features']['fe_profile'][$machine_name] = $machine_name;
- }
- return array();
- }
- /**
- * Implements hook_features_export_render().
- */
- function fe_profile_features_export_render($module_name, $data) {
- $items = array();
- $table = 'profile_field';
- foreach ($data as $key) {
- $field = db_query("SELECT * FROM {{$table}} WHERE name = :profile_field_name", array(':profile_field_name' => $key))->fetchObject();
- $items[$key] = $field;
- }
- $code = " \$items = " . features_var_export($items, ' ') . ";\n";
- $code .= ' return $items;';
- return array('fe_profile_export_fields' => $code);
- }
- /**
- * Implements hook_features_revert().
- */
- function fe_profile_features_revert($module) {
- $table = 'profile_field';
- $defaults = features_get_default('fe_profile', $module);
- if (empty($defaults)) {
- return;
- }
- // Revert.
- foreach ($defaults as $object) {
- _fe_profile_save_field($object);
- }
- }
- /**
- * Saves a profile field to the database.
- *
- * @param array $field_data
- * The field data to save.
- */
- function _fe_profile_save_field($field_data) {
- if (!isset($field_data['options'])) {
- $field_data['options'] = '';
- }
- if (!isset($field_data['page'])) {
- $field_data['page'] = '';
- }
- if (!isset($field_data['fid'])) {
- $field_data = (object) $field_data;
- drupal_write_record('profile_field', $field_data);
- }
- else {
- $field_data = (object) $field_data;
- if (!db_query("SELECT * FROM {profile_field} WHERE fid = :fid", array(':fid' => $field_data->fid))->fetchObject()) {
- drupal_write_record('profile_field', $field_data);
- }
- else {
- drupal_write_record('profile_field', $field_data, array('fid'));
- }
- }
- }
|