gravityview /
GravityView
These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
| 1 | <?php |
||
| 2 | namespace GV\Mocks; |
||
| 3 | |||
| 4 | /** |
||
| 5 | * This file contains mock code for deprecated functions. |
||
| 6 | */ |
||
| 7 | |||
| 8 | /** |
||
| 9 | * @see \GravityView_View_Data::add_view |
||
| 10 | * @internal |
||
| 11 | * @since future |
||
| 12 | * |
||
| 13 | * @return array|false The old array data, or false on error. |
||
| 14 | */ |
||
| 15 | function GravityView_View_Data_add_view( $view_id, $atts ) { |
||
| 16 | /** Handle array of IDs. */ |
||
| 17 | 1 | if ( is_array( $view_id ) ) { |
|
| 18 | 1 | foreach ( $view_id as $id ) { |
|
| 19 | 1 | call_user_func( __FUNCTION__, $id, $atts ); |
|
| 20 | } |
||
| 21 | |||
| 22 | 1 | if ( ! gravityview()->request->views->count() ) { |
|
| 23 | 1 | return array(); |
|
| 24 | } |
||
| 25 | |||
| 26 | 1 | return array_combine( |
|
| 27 | array_map( function( $view ) { return $view->ID; }, gravityview()->request->views->all() ), |
||
| 28 | array_map( function( $view ) { return $view->as_data(); }, gravityview()->request->views->all() ) |
||
| 29 | ); |
||
| 30 | } |
||
| 31 | |||
| 32 | /** View has been set already. */ |
||
| 33 | 1 | if ( $view = gravityview()->request->views->get( $view_id ) ) { |
|
| 34 | 1 | do_action( 'gravityview_log_debug', sprintf( 'GravityView_View_Data[add_view] Returning; View #%s already exists.', $view_id ) ); |
|
| 35 | 1 | return $view->as_data(); |
|
| 36 | } |
||
| 37 | |||
| 38 | 1 | $view = \GV\View::by_id( $view_id ); |
|
| 39 | 1 | if ( ! $view ) { |
|
| 40 | 1 | do_action( 'gravityview_log_debug', sprintf( 'GravityView_View_Data[add_view] Returning; View #%s does not exist.', $view_id ) ); |
|
| 41 | 1 | return false; |
|
| 42 | } |
||
| 43 | |||
| 44 | /** Doesn't have a connected form. */ |
||
| 45 | 1 | if ( ! $view->form ) { |
|
| 46 | 1 | do_action( 'gravityview_log_debug', sprintf( 'GravityView_View_Data[add_view] Returning; Post ID #%s does not have a connected form.', $view_id ) ); |
|
| 47 | 1 | return false; |
|
| 48 | } |
||
| 49 | |||
| 50 | /** Update the settings */ |
||
| 51 | 1 | if ( is_array( $atts ) ) { |
|
| 52 | 1 | $view->settings->update( $atts ); |
|
| 53 | } |
||
| 54 | |||
| 55 | 1 | gravityview()->request->views->add( $view ); |
|
| 56 | |||
| 57 | 1 | return $view->as_data(); |
|
| 58 | } |
||
| 59 | |||
| 60 | /** |
||
| 61 | * @see \GravityView_frontend::get_view_entries |
||
| 62 | * @internal |
||
| 63 | * @since future |
||
| 64 | * |
||
| 65 | * @return array The old associative array data as returned by |
||
| 66 | * \GravityView_frontend::get_view_entries(), the paging parameters |
||
| 67 | * and a total count of all entries. |
||
| 68 | */ |
||
| 69 | function GravityView_frontend_get_view_entries( $args, $form_id, $parameters, $count ) { |
||
| 70 | 1 | $form = \GV\GF_Form::by_id( $form_id ); |
|
| 71 | |||
| 72 | /** |
||
| 73 | * Kick off all advanced filters. |
||
| 74 | * |
||
| 75 | * Parameters and criteria are pretty much the same thing here, just |
||
| 76 | * different naming, where `$parameters` are the initial parameters |
||
| 77 | * calculated for hte view, and `$criteria` are the filtered ones |
||
| 78 | * retrieved via `GVCommon::calculate_get_entries_criteria`. |
||
| 79 | */ |
||
| 80 | 1 | $criteria = \GVCommon::calculate_get_entries_criteria( $parameters, $form->ID ); |
|
| 81 | |||
| 82 | 1 | do_action( 'gravityview_log_debug', '[gravityview_get_entries] Final Parameters', $criteria ); |
|
| 83 | |||
| 84 | /** ...and all the (now deprectated) filters that usually follow `gravityview_get_entries` */ |
||
| 85 | |||
| 86 | /** |
||
| 87 | * @deprecated |
||
| 88 | * Do not use this filter anymore. |
||
| 89 | */ |
||
| 90 | 1 | $entries = apply_filters( 'gravityview_before_get_entries', null, $criteria, $parameters, $count ); |
|
| 91 | 1 | if ( ! is_null( $entries ) ) { |
|
| 92 | /** |
||
| 93 | * We've been given an entries result that we can return, |
||
| 94 | * just set the paging and we're good to go. |
||
| 95 | */ |
||
| 96 | 1 | $paging = rgar( $parameters, 'paging' ); |
|
| 97 | } else { |
||
| 98 | 1 | $entries = $form->entries |
|
| 99 | 1 | ->filter( \GV\GF_Entry_Filter::from_search_criteria( $criteria['search_criteria'] ) ) |
|
| 100 | 1 | ->offset( $args['offset'] ) |
|
| 101 | 1 | ->limit( $criteria['paging']['page_size'] ); |
|
| 102 | |||
| 103 | 1 | if ( $criteria['paging']['page_size'] ) { |
|
| 104 | 1 | $entries = $entries->page( ( ( $criteria['paging']['offset'] - $args['offset'] ) / $criteria['paging']['page_size'] ) + 1 ); |
|
| 105 | } |
||
| 106 | |||
| 107 | 1 | if ( ! empty( $criteria['sorting'] ) ) { |
|
| 108 | 1 | $field = new \GV\Field(); |
|
| 109 | 1 | $field->ID = $criteria['sorting']['key']; |
|
| 110 | 1 | switch( strtolower( $criteria['sorting']['direction'] ) ) { |
|
| 111 | 1 | case 'asc': |
|
| 112 | $direction = \GV\Entry_Sort::ASC; |
||
| 113 | break; |
||
| 114 | 1 | case 'rand': |
|
| 115 | $direction = \GV\Entry_Sort::RAND; |
||
| 116 | break; |
||
| 117 | default: |
||
| 118 | 1 | case 'desc': |
|
|
0 ignored issues
–
show
|
|||
| 119 | 1 | $direction = \GV\Entry_Sort::DESC; |
|
| 120 | 1 | break; |
|
| 121 | } |
||
| 122 | |||
| 123 | 1 | $mode = $criteria['sorting']['is_numeric'] ? \GV\Entry_Sort::NUMERIC : \GV\Entry_Sort::ALPHA; |
|
| 124 | 1 | $entries = $entries->sort( new \GV\Entry_Sort( $field, $direction, $mode ) ); |
|
| 125 | } |
||
| 126 | |||
| 127 | /** Set paging, count and unwrap the entries. */ |
||
| 128 | $paging = array( |
||
| 129 | 1 | 'offset' => ( $entries->current_page - 1 ) * $entries->limit, |
|
| 130 | 1 | 'page_size' => $entries->limit, |
|
| 131 | ); |
||
| 132 | 1 | $count = $entries->total(); |
|
| 133 | $entries = array_map( function( $e ) { return $e->as_entry(); }, $entries->all() ); |
||
| 134 | } |
||
| 135 | |||
| 136 | /** Just one more filter, for compatibility's sake! */ |
||
| 137 | |||
| 138 | /** |
||
| 139 | * @deprecated |
||
| 140 | * Do not use this filter anymore. |
||
| 141 | */ |
||
| 142 | 1 | $entries = apply_filters( 'gravityview_entries', $entries, $criteria, $parameters, $count ); |
|
| 143 | |||
| 144 | 1 | return array( $entries, $paging, $count ); |
|
| 145 | } |
||
| 146 | |||
| 147 | /** Add some global fix for field capability discrepancies. */ |
||
| 148 | add_filter( 'gravityview/configuration/fields', function( $fields ) { |
||
| 149 | 3 | if ( empty( $fields ) ) { |
|
| 150 | return $fields; |
||
| 151 | } |
||
| 152 | |||
| 153 | /** |
||
| 154 | * Each view field is saved in a weird capability state by default. |
||
| 155 | * |
||
| 156 | * With loggedin set to false, but a capability of 'read' it introduces |
||
| 157 | * some logical issues and is not robust. Fix this behavior throughout |
||
| 158 | * core by making sure capability is '' if log in is not required. |
||
| 159 | * |
||
| 160 | * Perhaps in the UI a fix would be to unite the two fields (as our new |
||
| 161 | * \GV\Field class already does) into one dropdown: |
||
| 162 | * |
||
| 163 | * Anyone, Logged In Only, ... etc. etc. |
||
| 164 | * |
||
| 165 | * The two "settings" should be as tightly coupled as possible to avoid |
||
| 166 | * split logic scenarios. Uniting them into one field is the way to go. |
||
| 167 | */ |
||
| 168 | |||
| 169 | 3 | foreach ( $fields as $position => &$_fields ) { |
|
| 170 | |||
| 171 | 3 | if ( empty( $_fields ) ) { |
|
| 172 | continue; |
||
| 173 | } |
||
| 174 | |||
| 175 | 3 | foreach ( $_fields as $uid => &$_field ) { |
|
| 176 | 3 | if ( ! isset( $_field['only_loggedin'] ) ) { |
|
| 177 | continue; |
||
| 178 | } |
||
| 179 | /** If we do not require login, we don't require a cap. */ |
||
| 180 | 3 | $_field['only_loggedin'] != '1' && ( $_field['only_loggedin_cap'] = '' ); |
|
| 181 | } |
||
| 182 | } |
||
| 183 | 3 | return $fields; |
|
| 184 | } ); |
||
| 185 |
This check looks for unreachable code. It uses sophisticated control flow analysis techniques to find statements which will never be executed.
Unreachable code is most often the result of
return,dieorexitstatements that have been added for debug purposes.In the above example, the last
return falsewill never be executed, because a return statement has already been met in every possible execution path.