diff --git a/core_bridge/storage_core_bridge.install b/core_bridge/storage_core_bridge.install index 852f962..fd124ad 100644 --- a/core_bridge/storage_core_bridge.install +++ b/core_bridge/storage_core_bridge.install @@ -64,6 +64,17 @@ function storage_core_bridge_install() { } } } + + // Create selector for filesystem default scheme + storage_core_bridge_default_selector()->create(); +} + +/** + * Create file default scheme selector. + */ +function storage_core_bridge_update_7001() { + // Create file default scheme selector. + storage_core_bridge_default_selector()->create(); } /** diff --git a/core_bridge/storage_core_bridge.module b/core_bridge/storage_core_bridge.module index 97916b8..02a4907 100755 --- a/core_bridge/storage_core_bridge.module +++ b/core_bridge/storage_core_bridge.module @@ -67,6 +67,13 @@ function storage_core_bridge_image_style_default_selector($isid) { } /** + * Gets the storage selector for the default file scheme. + */ +function storage_core_bridge_default_selector() { + return storage_selector('storage_core_bridge', 'file_default_scheme'); +} + +/** * Creates a storage selector for a field. * * @param string $field_name @@ -137,6 +144,13 @@ function storage_core_bridge_stream_wrappers() { ); } + $wrappers[storage_core_bridge_field_scheme('file_default_scheme')] = array( + 'name' => t("Storage class (default file scheme)"), + 'class' => 'DrupalStorageStreamWrapper', + 'description' => 'Storage class - default file scheme (set at /admin/config/media/file-system)', + 'type' => STREAM_WRAPPERS_WRITE_VISIBLE, + ); + return $wrappers; } @@ -297,6 +311,26 @@ function storage_core_bridge_image_style_form_submit(array $form, array &$form_s } /** + * Implements hook_form_FORM_ID_alter(). + */ +function storage_core_bridge_form_system_file_system_settings_alter(array &$form, array &$form_state) { + // Add the option to use Storage API. + $field_name = 'file_default_scheme'; + $scheme = storage_core_bridge_field_scheme($field_name); + $form[$field_name]['#options'][$scheme] = t("Storage class (select below)"); + + // Add the class selector widget. + $form[$field_name . '_storage_class'] = storage_core_bridge_default_selector()->formItem(); + + $form['#submit'][] = 'storage_core_bridge_system_file_system_settings_submit'; +} + +function storage_core_bridge_system_file_system_settings_submit(array $form, array &$form_state) { + storage_core_bridge_default_selector() + ->submit($form_state['values']['file_default_scheme_storage_class']); +} + +/** * Loads a storage from its URI. * * @param $uri @@ -394,7 +428,12 @@ function storage_core_bridge_styled_image_create($uri) { } else { $field_name = storage_core_bridge_uri_field_name($uri); - $selector = storage_core_bridge_field_selector($field_name); + if ($field_name == 'file_default_scheme') { + $selector = storage_core_bridge_default_selector(); + } + else { + $selector = storage_core_bridge_field_selector($field_name); + } } drupal_alter('storage_core_bridge_styled_image_options', $options, $uri, $parent); @@ -555,7 +594,12 @@ class DrupalStorageStreamWrapper implements DrupalStreamWrapperInterface { $field_name = storage_core_bridge_uri_field_name($this->uri); try { - $storage = storage_core_bridge_field_selector($field_name)->storageAdd($options); + if ($field_name == 'file_default_scheme') { + $storage = storage_core_bridge_default_selector()->storageAdd($options); + } + else { + $storage = storage_core_bridge_field_selector($field_name)->storageAdd($options); + } db_insert('storage_core_bridge') ->fields(array( @@ -825,3 +869,17 @@ class DrupalStorageStreamWrapper implements DrupalStreamWrapperInterface { } } + +/** + * Implements hook_query_media_browser_alter(). + */ +function storage_core_bridge_query_media_browser_alter($query) { + $conditions =& $query->conditions(); + foreach ($conditions as $key => $condition) { + if (isset($condition['field']) && gettype($condition['field']) == 'string' + && substr($condition['field'], -4) == '.uri' && $condition['operator'] == 'NOT LIKE' + && substr($condition['value'], 0, 8) == 'storage-') { + unset($conditions[$key]); + } + } +}