/** * Find sliders with the provided filters * * @since 5.0.0 * @access public * @param mixed $args Find any slider with the provided filters * @return mixed Array on success, false otherwise */ public static function find($args = array()) { // Find by slider ID if (is_numeric($args) && intval($args) == $args) { return self::_getById((int) $args); // Find by slider slug } elseif (is_string($args)) { return self::_getBySlug($args); // Find by list of slider IDs } elseif (is_array($args) && isset($args[0]) && is_numeric($args[0])) { return self::_getByIds($args); // Find by query } else { // Defaults $defaults = array('columns' => '*', 'where' => '', 'exclude' => array('hidden', 'removed'), 'orderby' => 'date_c', 'order' => 'DESC', 'limit' => 10, 'page' => 1, 'data' => true); // User data foreach ($defaults as $key => $val) { if (!isset($args[$key])) { $args[$key] = $val; } } // Escape user data foreach ($args as $key => $val) { $args[$key] = esc_sql($val); } // Exclude if (!empty($args['exclude'])) { if (in_array('hidden', $args['exclude'])) { $exclude[] = "flag_hidden = '0'"; } if (in_array('removed', $args['exclude'])) { $exclude[] = "flag_deleted = '0'"; } $args['exclude'] = implode(' AND ', $exclude); } // Where $where = ''; if (!empty($args['where']) && !empty($args['exclude'])) { $where = "WHERE ({$args['exclude']}) AND ({$args['where']}) "; } elseif (!empty($args['where'])) { $where = "WHERE {$args['where']} "; } elseif (!empty($args['exclude'])) { $where = "WHERE {$args['exclude']} "; } // Some adjustments $args['limit'] = $args['limit'] * $args['page'] - $args['limit'] . ', ' . $args['limit']; // Build the query global $wpdb; $table = $wpdb->prefix . LS_DB_TABLE; $sliders = $wpdb->get_results("SELECT SQL_CALC_FOUND_ROWS {$args['columns']} FROM {$table} {$where}\n\t\t\t\t\t\t\t\t\tORDER BY {$args['orderby']} {$args['order']} LIMIT {$args['limit']}", ARRAY_A); // Set counter $found = $wpdb->get_col("SELECT FOUND_ROWS()"); self::$count = (int) $found[0]; // Return original value on error if (!is_array($sliders)) { return $sliders; } // Parse slider data if ($args['data']) { foreach ($sliders as $key => $val) { $sliders[$key]['data'] = json_decode($val['data'], true); } } // Return sliders return $sliders; } }