/** * Sanitize and expand query arguments from request variables * * @since 1.40 * * @param array query parameters from web page, usually found in $_REQUEST * @param int Optional number of rows (default 0) to skip over to reach desired page * @param int Optional number of rows on each page (0 = all rows, default) * * @return array revised arguments suitable for query */ private static function _prepare_view_items_query($raw_request, $offset = 0, $count = 0) { /* * Go through the $raw_request, take only the arguments that are used in the query and * sanitize or validate them. */ if (!is_array($raw_request)) { /* translators: 1: ERROR tag 2: function name 3: non-array value */ error_log(sprintf(_x('%1$s: %2$s non-array "%3$s"', 'error_log', 'media-library-assistant'), __('ERROR', 'media-library-assistant'), 'MLAMime::_prepare_view_items_query', var_export($raw_request, true)), 0); return NULL; } $clean_request = array('orderby' => 'slug', 'order' => 'ASC', 's' => ''); foreach ($raw_request as $key => $value) { switch ($key) { case 'orderby': if ('none' == $value) { $clean_request[$key] = $value; } else { $sortable_columns = MLA_View_List_Table::mla_get_sortable_columns(); foreach ($sortable_columns as $sort_key => $sort_value) { if ($value == $sort_value[0]) { $clean_request[$key] = $value; break; } } // foreach } break; case 'order': switch ($value = strtoupper($value)) { case 'ASC': case 'DESC': $clean_request[$key] = $value; break; default: $clean_request[$key] = 'ASC'; } break; /* * ['s'] - Search Media by one or more keywords */ /* * ['s'] - Search Media by one or more keywords */ case 's': $clean_request[$key] = stripslashes(trim($value)); break; default: // ignore anything else in $_REQUEST } // switch $key } // foreach $raw_request /* * Ignore incoming paged value; use offset and count instead */ if ((int) $count > 0) { $clean_request['offset'] = $offset; $clean_request['posts_per_page'] = $count; } return $clean_request; }