_views_query_tag_alter_condition(AlterableInterface $query, &$conditions, $substitutions)
Replaces the substitutions recursive foreach condition.
File
- core/modules/views/views.module, line 676
- Primarily Drupal hooks and global API functions to manipulate views.
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | function _views_query_tag_alter_condition(AlterableInterface $query , & $conditions , $substitutions ) { foreach ( $conditions as $condition_id => & $condition ) { if ( is_numeric ( $condition_id )) { if ( is_string ( $condition [ 'field' ])) { $condition [ 'field' ] = str_replace ( array_keys ( $substitutions ), array_values ( $substitutions ), $condition [ 'field' ]); } elseif ( is_object ( $condition [ 'field' ])) { $sub_conditions = & $condition [ 'field' ]->conditions(); _views_query_tag_alter_condition( $query , $sub_conditions , $substitutions ); } // $condition['value'] is a subquery so alter the subquery recursive. // Therefore make sure to get the metadata of the main query. if ( is_object ( $condition [ 'value' ])) { $subquery = $condition [ 'value' ]; $subquery ->addMetaData( 'views_substitutions' , $query ->getMetaData( 'views_substitutions' )); views_query_views_alter( $condition [ 'value' ]); } elseif (isset( $condition [ 'value' ])) { // We can not use a simple str_replace() here because it always returns // a string and we have to keep the type of the condition value intact. if ( is_array ( $condition [ 'value' ])) { foreach ( $condition [ 'value' ] as & $value ) { if ( is_string ( $value )) { $value = str_replace ( array_keys ( $substitutions ), array_values ( $substitutions ), $value ); } } } elseif ( is_string ( $condition [ 'value' ])) { $condition [ 'value' ] = str_replace ( array_keys ( $substitutions ), array_values ( $substitutions ), $condition [ 'value' ]); } } } } } |
Please login to continue.