File: /var/www/vhosts/uyarreklam.com.tr/httpdocs/Query.php.tar
uyarreklam.com.tr/httpdocs/wp-content/plugins/all-in-one-seo-pack/app/Common/Sitemap/Html/Query.php 0000644 00000014575 15154746137 0032233 0 ustar 00 var/www/vhosts <?php
namespace AIOSEO\Plugin\Common\Sitemap\Html;
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* Handles all queries for the HTML sitemap.
*
* @since 4.1.3
*/
class Query {
/**
* Returns all eligible sitemap entries for a given post type.
*
* @since 4.1.3
*
* @param string $postType The post type.
* @param array $attributes The attributes.
* @return array The post objects.
*/
public function posts( $postType, $attributes ) {
$fields = '`ID`, `post_title`,';
$fields .= '`post_parent`, `post_date_gmt`, `post_modified_gmt`';
$orderBy = '';
switch ( $attributes['order_by'] ) {
case 'last_updated':
$orderBy = 'post_modified_gmt';
break;
case 'alphabetical':
$orderBy = 'post_title';
break;
case 'id':
$orderBy = 'ID';
break;
case 'publish_date':
default:
$orderBy = 'post_date_gmt';
break;
}
switch ( strtolower( $attributes['order'] ) ) {
case 'desc':
$orderBy .= ' DESC';
break;
default:
$orderBy .= ' ASC';
}
$query = aioseo()->core->db
->start( 'posts' )
->select( $fields )
->where( 'post_status', 'publish' )
->where( 'post_type', $postType );
$excludedPosts = $this->getExcludedObjects( $attributes );
if ( $excludedPosts ) {
$query->whereRaw( "( `ID` NOT IN ( $excludedPosts ) )" );
}
$posts = $query->orderBy( $orderBy )
->run()
->result();
foreach ( $posts as $post ) {
$post->ID = (int) $post->ID;
}
return $posts;
}
/**
* Returns all eligble sitemap entries for a given taxonomy.
*
* @since 4.1.3
*
* @param string $taxonomy The taxonomy name.
* @param array $attributes The attributes.
* @return array The term objects.
*/
public function terms( $taxonomy, $attributes = [] ) {
$fields = 't.term_id, t.name, tt.parent';
$termRelationshipsTable = aioseo()->core->db->db->prefix . 'term_relationships';
$termTaxonomyTable = aioseo()->core->db->db->prefix . 'term_taxonomy';
$orderBy = '';
switch ( $attributes['order_by'] ) {
case 'alphabetical':
$orderBy = 't.name';
break;
// We can only sort by date after getting the terms.
case 'id':
case 'publish_date':
case 'last_updated':
default:
$orderBy = 't.term_id';
break;
}
switch ( strtolower( $attributes['order'] ) ) {
case 'desc':
$orderBy .= ' DESC';
break;
default:
$orderBy .= ' ASC';
}
$query = aioseo()->core->db
->start( 'terms as t' )
->select( $fields )
->join( 'term_taxonomy as tt', 't.term_id = tt.term_id' )
->whereRaw( "
( `t`.`term_id` IN
(
SELECT `tt`.`term_id`
FROM `$termTaxonomyTable` as tt
WHERE `tt`.`taxonomy` = '$taxonomy'
AND `tt`.`count` > 0
)
)" );
$excludedTerms = $this->getExcludedObjects( $attributes, false );
if ( $excludedTerms ) {
$query->whereRaw("
( `t`.`term_id` NOT IN
(
SELECT `tr`.`term_taxonomy_id`
FROM `$termRelationshipsTable` as tr
WHERE `tr`.`term_taxonomy_id` IN ( $excludedTerms )
)
)" );
}
$terms = $query->orderBy( $orderBy )
->run()
->result();
foreach ( $terms as $term ) {
$term->term_id = (int) $term->term_id;
$term->taxonomy = $taxonomy;
}
$shouldSort = false;
if ( 'last_updated' === $attributes['order_by'] ) {
$shouldSort = true;
foreach ( $terms as $term ) {
$term->timestamp = strtotime( aioseo()->sitemap->content->getTermLastModified( $term->term_id ) );
}
}
if ( 'publish_date' === $attributes['order_by'] ) {
$shouldSort = true;
foreach ( $terms as $term ) {
$term->timestamp = strtotime( $this->getTermPublishDate( $term->term_id ) );
}
}
if ( $shouldSort ) {
if ( 'asc' === strtolower( $attributes['order'] ) ) {
usort( $terms, function( $term1, $term2 ) {
return $term1->timestamp > $term2->timestamp ? 1 : 0;
} );
} else {
usort( $terms, function( $term1, $term2 ) {
return $term1->timestamp < $term2->timestamp ? 1 : 0;
} );
}
}
return $terms;
}
/**
* Returns a list of date archives that can be included.
*
* @since 4.1.3
*
* @return array The date archives.
*/
public function archives() {
$result = aioseo()->core->db
->start( 'posts', false, 'SELECT DISTINCT' )
->select( 'YEAR(post_date) AS year, MONTH(post_date) AS month' )
->where( 'post_type', 'post' )
->where( 'post_status', 'publish' )
->whereRaw( "post_password=''" )
->orderBy( 'year DESC' )
->orderBy( 'month DESC' )
->run()
->result();
$dates = [];
foreach ( $result as $date ) {
$dates[ $date->year ][ $date->month ] = 1;
}
return $dates;
}
/**
* Returns the publish date for a given term.
* This is the publish date of the oldest post that is assigned to the term.
*
* @since 4.1.3
*
* @param int $termId The term ID.
* @return int The publish date timestamp.
*/
public function getTermPublishDate( $termId ) {
$termRelationshipsTable = aioseo()->core->db->db->prefix . 'term_relationships';
$post = aioseo()->core->db
->start( 'posts as p' )
->select( 'MIN(`p`.`post_date_gmt`) as publish_date' )
->whereRaw( "
( `p`.`ID` IN
(
SELECT `tr`.`object_id`
FROM `$termRelationshipsTable` as tr
WHERE `tr`.`term_taxonomy_id` = '$termId'
)
)" )
->run()
->result();
return ! empty( $post[0]->publish_date ) ? strtotime( $post[0]->publish_date ) : 0;
}
/**
* Returns a comma-separated string of excluded object IDs.
*
* @since 4.1.3
*
* @param array $attributes The attributes.
* @param boolean $posts Whether the objects are posts.
* @return string The excluded object IDs.
*/
private function getExcludedObjects( $attributes, $posts = true ) {
$excludedObjects = $posts
? aioseo()->sitemap->helpers->excludedPosts()
: aioseo()->sitemap->helpers->excludedTerms();
$key = $posts ? 'excluded_posts' : 'excluded_terms';
if ( ! empty( $attributes[ $key ] ) ) {
$ids = explode( ',', $excludedObjects );
$extraIds = [];
if ( is_array( $attributes[ $key ] ) ) {
$extraIds = $attributes[ $key ];
}
if ( is_string( $attributes[ $key ] ) ) {
$extraIds = array_map( 'trim', explode( ',', $attributes[ $key ] ) );
}
$ids = array_filter( array_merge( $ids, $extraIds ), 'is_numeric' );
$excludedObjects = esc_sql( implode( ', ', $ids ) );
}
return $excludedObjects;
}
} uyarreklam.com.tr/httpdocs/wp-content/plugins/all-in-one-seo-pack/app/Common/Sitemap/Query.php 0000644 00000027622 15155015353 0031312 0 ustar 00 var/www/vhosts <?php
namespace AIOSEO\Plugin\Common\Sitemap;
// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
use AIOSEO\Plugin\Common\Utils as CommonUtils;
/**
* Handles all complex queries for the sitemap.
*
* @since 4.0.0
*/
class Query {
/**
* Returns all eligble sitemap entries for a given post type.
*
* @since 4.0.0
*
* @param mixed $postTypes The post type(s). Either a singular string or an array of strings.
* @param array $additionalArgs Any additional arguments for the post query.
* @return array[object|int] The post objects or the post count.
*/
public function posts( $postTypes, $additionalArgs = [] ) {
$includedPostTypes = $postTypes;
$postTypesArray = ! is_array( $postTypes ) ? [ $postTypes ] : $postTypes;
if ( is_array( $postTypes ) ) {
$includedPostTypes = implode( "', '", $postTypes );
}
if (
empty( $includedPostTypes ) ||
( 'attachment' === $includedPostTypes && 'disabled' !== aioseo()->dynamicOptions->searchAppearance->postTypes->attachment->redirectAttachmentUrls )
) {
return [];
}
// Set defaults.
$maxAge = '';
$fields = implode( ', ', [
'p.ID',
'p.post_excerpt',
'p.post_type',
'p.post_password',
'p.post_parent',
'p.post_date_gmt',
'p.post_modified_gmt',
'ap.priority',
'ap.frequency'
] );
if ( in_array( aioseo()->sitemap->type, [ 'html', 'rss', 'llms' ], true ) ) {
$fields .= ', p.post_title';
}
if ( 'general' !== aioseo()->sitemap->type || ! aioseo()->sitemap->helpers->excludeImages() ) {
$fields .= ', ap.images';
}
// Order by highest priority first (highest priority at the top),
// then by post modified date (most recently updated at the top).
$orderBy = 'ap.priority DESC, p.post_modified_gmt DESC';
// Override defaults if passed as additional arg.
foreach ( $additionalArgs as $name => $value ) {
// Attachments need to be fetched with all their fields because we need to get their post parent further down the line.
$$name = esc_sql( $value );
if ( 'root' === $name && $value && 'attachment' !== $includedPostTypes ) {
$fields = 'p.ID, p.post_type';
}
if ( 'count' === $name && $value ) {
$fields = 'count(p.ID) as total';
}
}
$query = aioseo()->core->db
->start( aioseo()->core->db->db->posts . ' as p', true )
->select( $fields )
->leftJoin( 'aioseo_posts as ap', 'ap.post_id = p.ID' )
->where( 'p.post_status', 'attachment' === $includedPostTypes ? 'inherit' : 'publish' )
->whereRaw( "p.post_type IN ( '$includedPostTypes' )" );
$homePageId = (int) get_option( 'page_on_front' );
if ( ! is_array( $postTypes ) ) {
if ( ! aioseo()->helpers->isPostTypeNoindexed( $includedPostTypes ) ) {
$query->whereRaw( "( `ap`.`robots_noindex` IS NULL OR `ap`.`robots_default` = 1 OR `ap`.`robots_noindex` = 0 OR post_id = $homePageId )" );
} else {
$query->whereRaw( "( `ap`.`robots_default` = 0 AND `ap`.`robots_noindex` = 0 OR post_id = $homePageId )" );
}
} else {
$robotsMetaSql = [];
foreach ( $postTypes as $postType ) {
if ( ! aioseo()->helpers->isPostTypeNoindexed( $postType ) ) {
$robotsMetaSql[] = "( `p`.`post_type` = '$postType' AND ( `ap`.`robots_noindex` IS NULL OR `ap`.`robots_default` = 1 OR `ap`.`robots_noindex` = 0 OR post_id = $homePageId ) )";
} else {
$robotsMetaSql[] = "( `p`.`post_type` = '$postType' AND ( `ap`.`robots_default` = 0 AND `ap`.`robots_noindex` = 0 OR post_id = $homePageId ) )";
}
}
$query->whereRaw( '( ' . implode( ' OR ', $robotsMetaSql ) . ' )' );
}
$excludedPosts = aioseo()->sitemap->helpers->excludedPosts();
if ( $excludedPosts ) {
$query->whereRaw( "( `p`.`ID` NOT IN ( $excludedPosts ) OR post_id = $homePageId )" );
}
// Exclude posts assigned to excluded terms.
$excludedTerms = aioseo()->sitemap->helpers->excludedTerms();
if ( $excludedTerms ) {
$termRelationshipsTable = aioseo()->core->db->db->prefix . 'term_relationships';
$query->whereRaw("
( `p`.`ID` NOT IN
(
SELECT `tr`.`object_id`
FROM `$termRelationshipsTable` as tr
WHERE `tr`.`term_taxonomy_id` IN ( $excludedTerms )
)
)" );
}
if ( $maxAge ) {
$query->whereRaw( "( `p`.`post_date_gmt` >= '$maxAge' )" );
}
if (
'rss' === aioseo()->sitemap->type ||
(
aioseo()->sitemap->indexes &&
empty( $additionalArgs['root'] ) &&
empty( $additionalArgs['count'] )
)
) {
$query->limit( aioseo()->sitemap->linksPerIndex, aioseo()->sitemap->offset );
}
$isStaticHomepage = 'page' === get_option( 'show_on_front' );
if ( $isStaticHomepage ) {
$excludedPostIds = array_map( 'intval', explode( ',', $excludedPosts ) );
$blogPageId = (int) get_option( 'page_for_posts' );
if ( in_array( 'page', $postTypesArray, true ) ) {
// Exclude the blog page from the pages post type.
if ( $blogPageId ) {
$query->whereRaw( "`p`.`ID` != $blogPageId" );
}
// Custom order by statement to always move the home page to the top.
if ( $homePageId ) {
$orderBy = "case when `p`.`ID` = $homePageId then 0 else 1 end, $orderBy";
}
}
// Include the blog page in the posts post type unless manually excluded.
if (
$blogPageId &&
! in_array( $blogPageId, $excludedPostIds, true ) &&
in_array( 'post', $postTypesArray, true )
) {
// We are using a database class hack to get in an OR clause to
// bypass all the other WHERE statements and just include the
// blog page ID manually.
$query->whereRaw( "1=1 OR `p`.`ID` = $blogPageId" );
// Custom order by statement to always move the blog posts page to the top.
$orderBy = "case when `p`.`ID` = $blogPageId then 0 else 1 end, $orderBy";
}
}
$query->orderByRaw( $orderBy );
$query = $this->filterPostQuery( $query, $postTypes );
// Return the total if we are just counting the posts.
if ( ! empty( $additionalArgs['count'] ) ) {
return (int) $query->run( true, 'var' )
->result();
}
$posts = $query->run()
->result();
// Convert ID from string to int.
foreach ( $posts as $post ) {
$post->ID = (int) $post->ID;
}
return $this->filterPosts( $posts );
}
/**
* Filters the post query.
*
* @since 4.1.4
*
* @param \AIOSEO\Plugin\Common\Utils\Database $query The query.
* @param string $postType The post type.
* @return \AIOSEO\Plugin\Common\Utils\Database The filtered query.
*/
private function filterPostQuery( $query, $postType ) {
switch ( $postType ) {
case 'product':
return $this->excludeHiddenProducts( $query );
default:
break;
}
return $query;
}
/**
* Adds a condition to the query to exclude hidden WooCommerce products.
*
* @since 4.1.4
*
* @param \AIOSEO\Plugin\Common\Utils\Database $query The query.
* @return \AIOSEO\Plugin\Common\Utils\Database The filtered query.
*/
private function excludeHiddenProducts( $query ) {
if (
! aioseo()->helpers->isWooCommerceActive() ||
! apply_filters( 'aioseo_sitemap_woocommerce_exclude_hidden_products', true )
) {
return $query;
}
static $hiddenProductIds = null;
if ( null === $hiddenProductIds ) {
$tempDb = new CommonUtils\Database();
$hiddenProducts = $tempDb->start( 'term_relationships as tr' )
->select( 'tr.object_id' )
->join( 'term_taxonomy as tt', 'tr.term_taxonomy_id = tt.term_taxonomy_id' )
->join( 'terms as t', 'tt.term_id = t.term_id' )
->where( 't.name', 'exclude-from-catalog' )
->run()
->result();
if ( empty( $hiddenProducts ) ) {
return $query;
}
$hiddenProductIds = [];
foreach ( $hiddenProducts as $hiddenProduct ) {
$hiddenProductIds[] = (int) $hiddenProduct->object_id;
}
$hiddenProductIds = esc_sql( implode( ', ', $hiddenProductIds ) );
}
$query->whereRaw( "p.ID NOT IN ( $hiddenProductIds )" );
return $query;
}
/**
* Filters the queried posts.
*
* @since 4.0.0
*
* @param array $posts The posts.
* @return array $remainingPosts The remaining posts.
*/
public function filterPosts( $posts ) {
$remainingPosts = [];
foreach ( $posts as $post ) {
switch ( $post->post_type ) {
case 'attachment':
if ( ! $this->isInvalidAttachment( $post ) ) {
$remainingPosts[] = $post;
}
break;
default:
$remainingPosts[] = $post;
break;
}
}
return $remainingPosts;
}
/**
* Excludes attachments if their post parent isn't published or parent post type isn't registered anymore.
*
* @since 4.0.0
*
* @param Object $post The post.
* @return boolean Whether the attachment is invalid.
*/
private function isInvalidAttachment( $post ) {
if ( empty( $post->post_parent ) ) {
return false;
}
$parent = get_post( $post->post_parent );
if ( ! is_object( $parent ) ) {
return false;
}
if (
'publish' !== $parent->post_status ||
! in_array( $parent->post_type, get_post_types(), true ) ||
$parent->post_password
) {
return true;
}
return false;
}
/**
* Returns all eligible sitemap entries for a given taxonomy.
*
* @since 4.0.0
*
* @param string $taxonomy The taxonomy.
* @param array $additionalArgs Any additional arguments for the term query.
* @return array[object|int] The term objects or the term count.
*/
public function terms( $taxonomy, $additionalArgs = [] ) {
// Set defaults.
$fields = 't.term_id';
$offset = aioseo()->sitemap->offset;
// Include term name for llms sitemap type
if ( 'llms' === aioseo()->sitemap->type ) {
$fields .= ', t.name';
}
// Override defaults if passed as additional arg.
foreach ( $additionalArgs as $name => $value ) {
$$name = esc_sql( $value );
if ( 'root' === $name && $value ) {
$fields = 't.term_id, tt.count';
}
if ( 'count' === $name && $value ) {
$fields = 'count(t.term_id) as total';
}
}
$termRelationshipsTable = aioseo()->core->db->db->prefix . 'term_relationships';
$termTaxonomyTable = aioseo()->core->db->db->prefix . 'term_taxonomy';
// Include all terms that have assigned posts or whose children have assigned posts.
$query = aioseo()->core->db
->start( aioseo()->core->db->db->terms . ' as t', true )
->select( $fields )
->leftJoin( 'term_taxonomy as tt', '`tt`.`term_id` = `t`.`term_id`' )
->whereRaw( "
( `t`.`term_id` IN
(
SELECT `tt`.`term_id`
FROM `$termTaxonomyTable` as tt
WHERE `tt`.`taxonomy` = '$taxonomy'
AND
(
`tt`.`count` > 0 OR
EXISTS (
SELECT 1
FROM `$termTaxonomyTable` as tt2
WHERE `tt2`.`parent` = `tt`.`term_id`
AND `tt2`.`count` > 0
)
)
)
)" );
$excludedTerms = aioseo()->sitemap->helpers->excludedTerms();
if ( $excludedTerms ) {
$query->whereRaw("
( `t`.`term_id` NOT IN
(
SELECT `tr`.`term_taxonomy_id`
FROM `$termRelationshipsTable` as tr
WHERE `tr`.`term_taxonomy_id` IN ( $excludedTerms )
)
)" );
}
if (
aioseo()->sitemap->indexes &&
empty( $additionalArgs['root'] ) &&
empty( $additionalArgs['count'] )
) {
$query->limit( aioseo()->sitemap->linksPerIndex, $offset );
}
// Return the total if we are just counting the terms.
if ( ! empty( $additionalArgs['count'] ) ) {
return (int) $query->run( true, 'var' )
->result();
}
$terms = $query->orderBy( 't.term_id ASC' )
->run()
->result();
foreach ( $terms as $term ) {
// Convert ID from string to int.
$term->term_id = (int) $term->term_id;
// Add taxonomy name to object manually instead of querying it to prevent redundant join.
$term->taxonomy = $taxonomy;
}
return $terms;
}
/**
* Wipes all data and forces the plugin to rescan the site for images.
*
* @since 4.0.13
*
* @return void
*/
public function resetImages() {
aioseo()->core->db
->update( 'aioseo_posts' )
->set(
[
'images' => null,
'image_scan_date' => null
]
)
->run();
}
} www/vhosts/uyarreklam.com.tr/httpdocs/wp-content/plugins/google-listings-and-ads/src/DB/Query.php 0000644 00000027112 15155127771 0027736 0 ustar 00 var <?php
declare( strict_types=1 );
namespace Automattic\WooCommerce\GoogleListingsAndAds\DB;
use Automattic\WooCommerce\GoogleListingsAndAds\Exception\InvalidQuery;
use Automattic\WooCommerce\GoogleListingsAndAds\Value\PositiveInteger;
use wpdb;
defined( 'ABSPATH' ) || exit;
/**
* Class Query
*
* @package Automattic\WooCommerce\GoogleListingsAndAds\DB
*/
abstract class Query implements QueryInterface {
/** @var int */
protected $limit;
/** @var int */
protected $offset = 0;
/** @var array */
protected $orderby = [];
/** @var array */
protected $groupby = [];
/**
* The result of the query.
*
* @var mixed
*/
protected $results = null;
/**
* The number of rows returned by the query.
*
* @var int
*/
protected $count = null;
/**
* The last inserted ID (updated after a call to insert).
*
* @var int
*/
protected $last_insert_id = null;
/** @var TableInterface */
protected $table;
/**
* Where clauses for the query.
*
* @var array
*/
protected $where = [];
/**
* Where relation for multiple clauses.
*
* @var string
*/
protected $where_relation;
/** @var wpdb */
protected $wpdb;
/**
* Query constructor.
*
* @param wpdb $wpdb
* @param TableInterface $table
*/
public function __construct( wpdb $wpdb, TableInterface $table ) {
$this->wpdb = $wpdb;
$this->table = $table;
}
/**
* Add a where clause to the query.
*
* @param string $column The column name.
* @param mixed $value The where value.
* @param string $compare The comparison to use. Valid values are =, <, >, IN, NOT IN.
*
* @return $this
*/
public function where( string $column, $value, string $compare = '=' ): QueryInterface {
$this->validate_column( $column );
$this->validate_compare( $compare );
$this->where[] = [
'column' => $column,
'value' => $value,
'compare' => $compare,
];
return $this;
}
/**
* Add a group by clause to the query.
*
* @param string $column The column name.
*
* @return $this
*
* @since 1.12.0
*/
public function group_by( string $column ): QueryInterface {
$this->validate_column( $column );
$this->groupby[] = "`{$column}`";
return $this;
}
/**
* Set the where relation for the query.
*
* @param string $relation
*
* @return QueryInterface
*/
public function set_where_relation( string $relation ): QueryInterface {
$this->validate_where_relation( $relation );
$this->where_relation = $relation;
return $this;
}
/**
* Set ordering information for the query.
*
* @param string $column
* @param string $order
*
* @return QueryInterface
*/
public function set_order( string $column, string $order = 'ASC' ): QueryInterface {
$this->validate_column( $column );
$this->orderby[] = "`{$column}` {$this->normalize_order( $order )}";
return $this;
}
/**
* Limit the number of results for the query.
*
* @param int $limit
*
* @return QueryInterface
*/
public function set_limit( int $limit ): QueryInterface {
$this->limit = ( new PositiveInteger( $limit ) )->get();
return $this;
}
/**
* Set an offset for the results.
*
* @param int $offset
*
* @return QueryInterface
*/
public function set_offset( int $offset ): QueryInterface {
$this->offset = ( new PositiveInteger( $offset ) )->get();
return $this;
}
/**
* Get the results of the query.
*
* @return mixed
*/
public function get_results() {
if ( null === $this->results ) {
$this->query_results();
}
return $this->results;
}
/**
* Get the number of results returned by the query.
*
* @return int
*/
public function get_count(): int {
if ( null === $this->count ) {
$this->count_results();
}
return $this->count;
}
/**
* Gets the first result of the query.
*
* @return array
*/
public function get_row(): array {
if ( null === $this->results ) {
$old_limit = $this->limit ?? 0;
$this->set_limit( 1 );
$this->query_results();
$this->set_limit( $old_limit );
}
return $this->results[0] ?? [];
}
/**
* Perform the query and save it to the results.
*/
protected function query_results() {
$this->results = $this->wpdb->get_results(
$this->build_query(), // phpcs:ignore WordPress.DB.PreparedSQL
ARRAY_A
);
}
/**
* Count the results and save the result.
*/
protected function count_results() {
$this->count = (int) $this->wpdb->get_var( $this->build_query( true ) ); // phpcs:ignore WordPress.DB.PreparedSQL
}
/**
* Validate that a given column is valid for the current table.
*
* @param string $column
*
* @throws InvalidQuery When the given column is not valid for the current table.
*/
protected function validate_column( string $column ) {
if ( ! array_key_exists( $column, $this->table->get_columns() ) ) {
throw InvalidQuery::from_column( $column, get_class( $this->table ) );
}
}
/**
* Validate that a compare operator is valid.
*
* @param string $compare
*
* @throws InvalidQuery When the compare value is not valid.
*/
protected function validate_compare( string $compare ) {
switch ( $compare ) {
case '=':
case '>':
case '<':
case 'IN':
case 'NOT IN':
// These are all valid.
return;
default:
throw InvalidQuery::from_compare( $compare );
}
}
/**
* Validate that a where relation is valid.
*
* @param string $relation
*
* @throws InvalidQuery When the relation value is not valid.
*/
protected function validate_where_relation( string $relation ) {
switch ( $relation ) {
case 'AND':
case 'OR':
// These are all valid.
return;
default:
throw InvalidQuery::where_relation( $relation );
}
}
/**
* Normalize the string for the order.
*
* Converts the string to uppercase, and will return only DESC or ASC.
*
* @param string $order
*
* @return string
*/
protected function normalize_order( string $order ): string {
$order = strtoupper( $order );
return 'DESC' === $order ? $order : 'ASC';
}
/**
* Build the query and return the query string.
*
* @param bool $get_count False to build a normal query, true to build a COUNT(*) query.
*
* @return string
*/
protected function build_query( bool $get_count = false ): string {
$columns = $get_count ? 'COUNT(*)' : '*';
$pieces = [ "SELECT {$columns} FROM `{$this->table->get_name()}`" ];
$pieces = array_merge( $pieces, $this->generate_where_pieces() );
if ( ! empty( $this->groupby ) ) {
$pieces[] = 'GROUP BY ' . implode( ', ', $this->groupby );
}
if ( ! $get_count ) {
if ( $this->orderby ) {
$pieces[] = 'ORDER BY ' . implode( ', ', $this->orderby );
}
if ( $this->limit ) {
$pieces[] = "LIMIT {$this->limit}";
}
if ( $this->offset ) {
$pieces[] = "OFFSET {$this->offset}";
}
}
return join( "\n", $pieces );
}
/**
* Generate the pieces for the WHERE part of the query.
*
* @return string[]
*/
protected function generate_where_pieces(): array {
if ( empty( $this->where ) ) {
return [];
}
$where_pieces = [ 'WHERE' ];
foreach ( $this->where as $where ) {
$column = $where['column'];
$compare = $where['compare'];
if ( $compare === 'IN' || $compare === 'NOT IN' ) {
$value = sprintf(
"('%s')",
join(
"','",
array_map(
function ( $value ) {
return $this->wpdb->_escape( $value );
},
$where['value']
)
)
);
} else {
$value = "'{$this->wpdb->_escape( $where['value'] )}'";
}
if ( count( $where_pieces ) > 1 ) {
$where_pieces[] = $this->where_relation ?? 'AND';
}
$where_pieces[] = "{$column} {$compare} {$value}";
}
return $where_pieces;
}
/**
* Insert a row of data into the table.
*
* @param array $data
*
* @return int
* @throws InvalidQuery When there is an error inserting the data.
*/
public function insert( array $data ): int {
foreach ( $data as $column => &$value ) {
$this->validate_column( $column );
$value = $this->sanitize_value( $column, $value );
}
$result = $this->wpdb->insert( $this->table->get_name(), $data );
if ( false === $result ) {
throw InvalidQuery::from_insert( $this->wpdb->last_error ?: 'Error inserting data.' );
}
// Save a local copy of the last inserted ID.
$this->last_insert_id = $this->wpdb->insert_id;
return $result;
}
/**
* Returns the last inserted ID. Must be called after insert.
*
* @since 1.12.0
*
* @return int|null
*/
public function last_insert_id(): ?int {
return $this->last_insert_id;
}
/**
* Delete rows from the database.
*
* @param string $where_column Column to use when looking for values to delete.
* @param mixed $value Value to use when determining what rows to delete.
*
* @return int The number of rows deleted.
* @throws InvalidQuery When there is an error deleting data.
*/
public function delete( string $where_column, $value ): int {
$this->validate_column( $where_column );
$result = $this->wpdb->delete( $this->table->get_name(), [ $where_column => $value ] );
if ( false === $result ) {
throw InvalidQuery::from_delete( $this->wpdb->last_error ?: 'Error deleting data.' );
}
return $result;
}
/**
* Update data in the database.
*
* @param array $data Array of columns and their values.
* @param array $where Array of where conditions for updating values.
*
* @return int
* @throws InvalidQuery When there is an error updating data, or when an empty where array is provided.
*/
public function update( array $data, array $where ): int {
if ( empty( $where ) ) {
throw InvalidQuery::empty_where();
}
foreach ( $data as $column => &$value ) {
$this->validate_column( $column );
$value = $this->sanitize_value( $column, $value );
}
$result = $this->wpdb->update(
$this->table->get_name(),
$data,
$where
);
if ( false === $result ) {
throw InvalidQuery::from_update( $this->wpdb->last_error ?: 'Error updating data.' );
}
return $result;
}
/**
* Batch update or insert a set of records.
*
* @param array $records Array of records to be updated or inserted.
*
* @throws InvalidQuery If an invalid column name is provided.
*/
public function update_or_insert( array $records ): void {
if ( empty( $records ) ) {
return;
}
$update_values = [];
$columns = array_keys( reset( $records ) );
foreach ( $columns as $c ) {
$this->validate_column( $c );
$update_values[] = "`$c`=VALUES(`$c`)";
}
$single_placeholder = '(' . implode( ',', array_fill( 0, count( $columns ), "'%s'" ) ) . ')';
$chunk_size = 200;
$num_issues = count( $records );
for ( $i = 0; $i < $num_issues; $i += $chunk_size ) {
$all_values = [];
$all_placeholders = [];
foreach ( array_slice( $records, $i, $chunk_size ) as $issue ) {
if ( array_keys( $issue ) !== $columns ) {
throw new InvalidQuery( 'Not all records contain the same columns' );
}
$all_placeholders[] = $single_placeholder;
array_push( $all_values, ...array_values( $issue ) );
}
$column_names = '(`' . implode( '`, `', $columns ) . '`)';
$query = "INSERT INTO `{$this->table->get_name()}` $column_names VALUES ";
$query .= implode( ', ', $all_placeholders );
$query .= ' ON DUPLICATE KEY UPDATE ' . implode( ', ', $update_values );
$this->wpdb->query( $this->wpdb->prepare( $query, $all_values ) ); // phpcs:ignore WordPress.DB.PreparedSQL
}
}
/**
* Sanitize a value for a given column before inserting it into the DB.
*
* @param string $column The column name.
* @param mixed $value The value to sanitize.
*
* @return mixed The sanitized value.
*/
abstract protected function sanitize_value( string $column, $value );
}
www/vhosts/uyarreklam.com.tr/httpdocs/wp-content/plugins/woocommerce/src/Admin/API/Reports/Query.php0000644 00000001121 15155223504 0030433 0 ustar 00 var <?php
/**
* Class for parameter-based Reports querying
*/
namespace Automattic\WooCommerce\Admin\API\Reports;
defined( 'ABSPATH' ) || exit;
/**
* Admin\API\Reports\Query
*/
abstract class Query extends \WC_Object_Query {
/**
* Get report data matching the current query vars.
*
* @return array|object of WC_Product objects
*/
public function get_data() {
/* translators: %s: Method name */
return new \WP_Error( 'invalid-method', sprintf( __( "Method '%s' not implemented. Must be overridden in subclass.", 'woocommerce' ), __METHOD__ ), array( 'status' => 405 ) );
}
}
uyarreklam.com.tr/httpdocs/wp-content/plugins/woocommerce/src/Admin/API/Reports/Variations/Query.php0000644 00000002366 15155447106 0032574 0 ustar 00 var/www/vhosts <?php
/**
* Class for parameter-based Products Report querying
*
* Example usage:
* $args = array(
* 'before' => '2018-07-19 00:00:00',
* 'after' => '2018-07-05 00:00:00',
* 'page' => 2,
* 'categories' => array(15, 18),
* 'products' => array(1,2,3)
* );
* $report = new \Automattic\WooCommerce\Admin\API\Reports\Variations\Query( $args );
* $mydata = $report->get_data();
*/
namespace Automattic\WooCommerce\Admin\API\Reports\Variations;
defined( 'ABSPATH' ) || exit;
use Automattic\WooCommerce\Admin\API\Reports\Query as ReportsQuery;
/**
* API\Reports\Variations\Query
*/
class Query extends ReportsQuery {
/**
* Valid fields for Products report.
*
* @return array
*/
protected function get_default_query_vars() {
return array();
}
/**
* Get product data based on the current query vars.
*
* @return array
*/
public function get_data() {
$args = apply_filters( 'woocommerce_analytics_variations_query_args', $this->get_query_vars() );
$data_store = \WC_Data_Store::load( 'report-variations' );
$results = $data_store->get_data( $args );
return apply_filters( 'woocommerce_analytics_variations_select_query', $results, $args );
}
}
uyarreklam.com.tr/httpdocs/wp-content/plugins/woocommerce/src/Admin/API/Reports/Coupons/Query.php 0000644 00000002245 15155466166 0032106 0 ustar 00 var/www/vhosts <?php
/**
* Class for parameter-based Coupons Report querying
*
* Example usage:
* $args = array(
* 'before' => '2018-07-19 00:00:00',
* 'after' => '2018-07-05 00:00:00',
* 'page' => 2,
* 'coupons' => array(5, 120),
* );
* $report = new \Automattic\WooCommerce\Admin\API\Reports\Coupons\Query( $args );
* $mydata = $report->get_data();
*/
namespace Automattic\WooCommerce\Admin\API\Reports\Coupons;
defined( 'ABSPATH' ) || exit;
use Automattic\WooCommerce\Admin\API\Reports\Query as ReportsQuery;
/**
* API\Reports\Coupons\Query
*/
class Query extends ReportsQuery {
/**
* Valid fields for Products report.
*
* @return array
*/
protected function get_default_query_vars() {
return array();
}
/**
* Get product data based on the current query vars.
*
* @return array
*/
public function get_data() {
$args = apply_filters( 'woocommerce_analytics_coupons_query_args', $this->get_query_vars() );
$data_store = \WC_Data_Store::load( 'report-coupons' );
$results = $data_store->get_data( $args );
return apply_filters( 'woocommerce_analytics_coupons_select_query', $results, $args );
}
}
uyarreklam.com.tr/httpdocs/wp-content/plugins/google-listings-and-ads/src/API/Google/Query/Query.php0000644 00000017526 15155466176 0032420 0 ustar 00 var/www/vhosts <?php
declare( strict_types=1 );
namespace Automattic\WooCommerce\GoogleListingsAndAds\API\Google\Query;
use Automattic\WooCommerce\GoogleListingsAndAds\Exception\InvalidQuery;
use DateTime;
defined( 'ABSPATH' ) || exit;
/**
* Google Ads Query Language (GAQL)
*
* @package Automattic\WooCommerce\GoogleListingsAndAds\API\Google\Query
*/
abstract class Query implements QueryInterface {
/**
* Resource name.
*
* @var string
*/
protected $resource;
/**
* Set of columns to retrieve in the query.
*
* @var array
*/
protected $columns = [];
/**
* Where clauses for the query.
*
* @var array
*/
protected $where = [];
/**
* Where relation for multiple clauses.
*
* @var string
*/
protected $where_relation;
/**
* Order sort attribute.
*
* @var string
*/
protected $order = 'ASC';
/**
* Column to order by.
*
* @var string
*/
protected $orderby;
/**
* The result of the query.
*
* @var mixed
*/
protected $results = null;
/**
* Query constructor.
*
* @param string $resource_name
*
* @throws InvalidQuery When the resource name is not valid.
*/
public function __construct( string $resource_name ) {
if ( ! preg_match( '/^[a-zA-Z_]+$/', $resource_name ) ) {
throw InvalidQuery::resource_name();
}
$this->resource = $resource_name;
}
/**
* Set columns to retrieve in the query.
*
* @param array $columns List of column names.
*
* @return QueryInterface
*/
public function columns( array $columns ): QueryInterface {
$this->validate_columns( $columns );
$this->columns = $columns;
return $this;
}
/**
* Add a set columns to retrieve in the query.
*
* @param array $columns List of column names.
*
* @return QueryInterface
*/
public function add_columns( array $columns ): QueryInterface {
$this->validate_columns( $columns );
$this->columns = array_merge( $this->columns, array_filter( $columns ) );
return $this;
}
/**
* Add a where clause to the query.
*
* @param string $column The column name.
* @param mixed $value The where value.
* @param string $compare The comparison to use. Valid values are =, <, >, IN, NOT IN.
*
* @return QueryInterface
*/
public function where( string $column, $value, string $compare = '=' ): QueryInterface {
$this->validate_compare( $compare );
$this->where[] = [
'column' => $column,
'value' => $value,
'compare' => $compare,
];
return $this;
}
/**
* Add a where date between clause to the query.
*
* @since 1.7.0
*
* @link https://developers.google.com/shopping-content/guides/reports/query-language/date-ranges
*
* @param string $after Start of date range. In ISO 8601(YYYY-MM-DD) format.
* @param string $before End of date range. In ISO 8601(YYYY-MM-DD) format.
*
* @return QueryInterface
*/
public function where_date_between( string $after, string $before ): QueryInterface {
return $this->where( 'segments.date', [ $after, $before ], 'BETWEEN' );
}
/**
* Set the where relation for the query.
*
* @param string $relation
*
* @return QueryInterface
*/
public function set_where_relation( string $relation ): QueryInterface {
$this->validate_where_relation( $relation );
$this->where_relation = $relation;
return $this;
}
/**
* Set ordering information for the query.
*
* @param string $column
* @param string $order
*
* @return QueryInterface
* @throws InvalidQuery When the given column is not in the list of included columns.
*/
public function set_order( string $column, string $order = 'ASC' ): QueryInterface {
if ( ! array_key_exists( $column, $this->columns ) ) {
throw InvalidQuery::invalid_order_column( $column );
}
$this->orderby = $this->columns[ $column ];
$this->order = $this->normalize_order( $order );
return $this;
}
/**
* Get the results of the query.
*
* @return mixed
*/
public function get_results() {
if ( null === $this->results ) {
$this->query_results();
}
return $this->results;
}
/**
* Perform the query and save it to the results.
*/
protected function query_results() {
$this->results = [];
}
/**
* Validate a set of columns.
*
* @param array $columns
*
* @throws InvalidQuery When one of columns in the set is not valid.
*/
protected function validate_columns( array $columns ) {
array_walk( $columns, [ $this, 'validate_column' ] );
}
/**
* Validate that a given column is using a valid name.
*
* @param string $column
*
* @throws InvalidQuery When the given column is not valid.
*/
protected function validate_column( string $column ) {
if ( ! preg_match( '/^[a-zA-Z0-9\._]+$/', $column ) ) {
throw InvalidQuery::invalid_column( $column );
}
}
/**
* Validate that a compare operator is valid.
*
* @param string $compare
*
* @throws InvalidQuery When the compare value is not valid.
*/
protected function validate_compare( string $compare ) {
switch ( $compare ) {
case '=':
case '>':
case '<':
case '!=':
case 'IN':
case 'NOT IN':
case 'BETWEEN':
case 'IS NOT NULL':
case 'CONTAINS ANY':
// These are all valid.
return;
default:
throw InvalidQuery::from_compare( $compare );
}
}
/**
* Validate that a where relation is valid.
*
* @param string $relation
*
* @throws InvalidQuery When the relation value is not valid.
*/
protected function validate_where_relation( string $relation ) {
switch ( $relation ) {
case 'AND':
case 'OR':
// These are all valid.
return;
default:
throw InvalidQuery::where_relation( $relation );
}
}
/**
* Normalize the string for the order.
*
* Converts the string to uppercase, and will return only DESC or ASC.
*
* @param string $order
*
* @return string
*/
protected function normalize_order( string $order ): string {
$order = strtoupper( $order );
return 'DESC' === $order ? $order : 'ASC';
}
/**
* Build the query and return the query string.
*
* @return string
*
* @throws InvalidQuery When the set of columns is empty.
*/
protected function build_query(): string {
if ( empty( $this->columns ) ) {
throw InvalidQuery::empty_columns();
}
$columns = join( ',', $this->columns );
$pieces = [ "SELECT {$columns} FROM {$this->resource}" ];
$pieces = array_merge( $pieces, $this->generate_where_pieces() );
if ( $this->orderby ) {
$pieces[] = "ORDER BY {$this->orderby} {$this->order}";
}
return join( ' ', $pieces );
}
/**
* Generate the pieces for the WHERE part of the query.
*
* @return string[]
*/
protected function generate_where_pieces(): array {
if ( empty( $this->where ) ) {
return [];
}
$where_pieces = [ 'WHERE' ];
foreach ( $this->where as $where ) {
$column = $where['column'];
$compare = $where['compare'];
if ( 'IN' === $compare || 'NOT_IN' === $compare || 'CONTAINS ANY' === $compare ) {
$value = sprintf(
"('%s')",
join(
"','",
array_map(
function ( $value ) {
return $this->escape( $value );
},
$where['value']
)
)
);
} elseif ( 'BETWEEN' === $compare ) {
$value = "'{$this->escape( $where['value'][0] )}' AND '{$this->escape( $where['value'][1] )}'";
} elseif ( 'IS NOT NULL' === $compare ) {
$value = '';
} else {
$value = "'{$this->escape( $where['value'] )}'";
}
if ( count( $where_pieces ) > 1 ) {
$where_pieces[] = $this->where_relation ?? 'AND';
}
$where_pieces[] = "{$column} {$compare} {$value}";
}
return $where_pieces;
}
/**
* Escape the value to a string which can be used in a query.
*
* @param mixed $value Original value to escape.
*
* @return string
*/
protected function escape( $value ): string {
if ( $value instanceof DateTime ) {
return $value->format( 'Y-m-d' );
}
if ( ! is_numeric( $value ) ) {
return (string) $value;
}
return addslashes( (string) $value );
}
}
uyarreklam.com.tr/httpdocs/wp-content/plugins/woocommerce/src/Admin/API/Reports/Revenue/Query.php 0000644 00000003077 15155522622 0032063 0 ustar 00 var/www/vhosts <?php
/**
* Class for parameter-based Revenue Reports querying
*
* Example usage:
* $args = array(
* 'before' => '2018-07-19 00:00:00',
* 'after' => '2018-07-05 00:00:00',
* 'interval' => 'week',
* );
* $report = new \Automattic\WooCommerce\Admin\API\Reports\Revenue\Query( $args );
* $mydata = $report->get_data();
*/
namespace Automattic\WooCommerce\Admin\API\Reports\Revenue;
defined( 'ABSPATH' ) || exit;
use Automattic\WooCommerce\Admin\API\Reports\Query as ReportsQuery;
/**
* API\Reports\Revenue\Query
*/
class Query extends ReportsQuery {
/**
* Valid fields for Revenue report.
*
* @return array
*/
protected function get_default_query_vars() {
return array(
'per_page' => get_option( 'posts_per_page' ), // not sure if this should be the default.
'page' => 1,
'order' => 'DESC',
'orderby' => 'date',
'before' => '',
'after' => '',
'interval' => 'week',
'fields' => array(
'orders_count',
'num_items_sold',
'total_sales',
'coupons',
'coupons_count',
'refunds',
'taxes',
'shipping',
'net_revenue',
'gross_sales',
),
);
}
/**
* Get revenue data based on the current query vars.
*
* @return array
*/
public function get_data() {
$args = apply_filters( 'woocommerce_analytics_revenue_query_args', $this->get_query_vars() );
$data_store = \WC_Data_Store::load( 'report-revenue-stats' );
$results = $data_store->get_data( $args );
return apply_filters( 'woocommerce_analytics_revenue_select_query', $results, $args );
}
}
uyarreklam.com.tr/httpdocs/wp-content/plugins/woocommerce/src/Admin/API/Reports/Categories/Query.php0000644 00000002367 15155552527 0032547 0 ustar 00 var/www/vhosts <?php
/**
* Class for parameter-based Categories Report querying
*
* Example usage:
* $args = array(
* 'before' => '2018-07-19 00:00:00',
* 'after' => '2018-07-05 00:00:00',
* 'page' => 2,
* 'order' => 'desc',
* 'orderby' => 'items_sold',
* );
* $report = new \Automattic\WooCommerce\Admin\API\Reports\Categories\Query( $args );
* $mydata = $report->get_data();
*/
namespace Automattic\WooCommerce\Admin\API\Reports\Categories;
defined( 'ABSPATH' ) || exit;
use Automattic\WooCommerce\Admin\API\Reports\Query as ReportsQuery;
/**
* API\Reports\Query
*/
class Query extends ReportsQuery {
const REPORT_NAME = 'report-categories';
/**
* Valid fields for Categories report.
*
* @return array
*/
protected function get_default_query_vars() {
return array();
}
/**
* Get categories data based on the current query vars.
*
* @return array
*/
public function get_data() {
$args = apply_filters( 'woocommerce_analytics_categories_query_args', $this->get_query_vars() );
$results = \WC_Data_Store::load( self::REPORT_NAME )->get_data( $args );
return apply_filters( 'woocommerce_analytics_categories_select_query', $results, $args );
}
}
uyarreklam.com.tr/httpdocs/wp-content/plugins/woocommerce/src/Admin/API/Reports/Customers/Query.php 0000644 00000002712 15155572617 0032442 0 ustar 00 var/www/vhosts <?php
/**
* Class for parameter-based Customers Report querying
*
* Example usage:
* $args = array(
* 'registered_before' => '2018-07-19 00:00:00',
* 'registered_after' => '2018-07-05 00:00:00',
* 'page' => 2,
* 'avg_order_value_min' => 100,
* 'country' => 'GB',
* );
* $report = new \Automattic\WooCommerce\Admin\API\Reports\Customers\Query( $args );
* $mydata = $report->get_data();
*/
namespace Automattic\WooCommerce\Admin\API\Reports\Customers;
defined( 'ABSPATH' ) || exit;
use Automattic\WooCommerce\Admin\API\Reports\Query as ReportsQuery;
/**
* API\Reports\Customers\Query
*/
class Query extends ReportsQuery {
/**
* Valid fields for Customers report.
*
* @return array
*/
protected function get_default_query_vars() {
return array(
'per_page' => get_option( 'posts_per_page' ), // not sure if this should be the default.
'page' => 1,
'order' => 'DESC',
'orderby' => 'date_registered',
'fields' => '*',
);
}
/**
* Get product data based on the current query vars.
*
* @return array
*/
public function get_data() {
$args = apply_filters( 'woocommerce_analytics_customers_query_args', $this->get_query_vars() );
$data_store = \WC_Data_Store::load( 'report-customers' );
$results = $data_store->get_data( $args );
return apply_filters( 'woocommerce_analytics_customers_select_query', $results, $args );
}
}
uyarreklam.com.tr/httpdocs/wp-content/plugins/woocommerce/src/Admin/API/Reports/Downloads/Query.php 0000644 00000002260 15155600343 0032372 0 ustar 00 var/www/vhosts <?php
/**
* Class for parameter-based downloads report querying.
*
* Example usage:
* $args = array(
* 'before' => '2018-07-19 00:00:00',
* 'after' => '2018-07-05 00:00:00',
* 'page' => 2,
* 'products' => array(1,2,3)
* );
* $report = new \Automattic\WooCommerce\Admin\API\Reports\Downloads\Query( $args );
* $mydata = $report->get_data();
*/
namespace Automattic\WooCommerce\Admin\API\Reports\Downloads;
defined( 'ABSPATH' ) || exit;
use Automattic\WooCommerce\Admin\API\Reports\Query as ReportsQuery;
/**
* API\Reports\Downloads\Query
*/
class Query extends ReportsQuery {
/**
* Valid fields for downloads report.
*
* @return array
*/
protected function get_default_query_vars() {
return array();
}
/**
* Get downloads data based on the current query vars.
*
* @return array
*/
public function get_data() {
$args = apply_filters( 'woocommerce_analytics_downloads_query_args', $this->get_query_vars() );
$data_store = \WC_Data_Store::load( 'report-downloads' );
$results = $data_store->get_data( $args );
return apply_filters( 'woocommerce_analytics_downloads_select_query', $results, $args );
}
}
uyarreklam.com.tr/httpdocs/wp-content/plugins/woocommerce/src/Admin/API/Reports/Products/Query.php 0000644 00000002352 15155603332 0032246 0 ustar 00 var/www/vhosts <?php
/**
* Class for parameter-based Products Report querying
*
* Example usage:
* $args = array(
* 'before' => '2018-07-19 00:00:00',
* 'after' => '2018-07-05 00:00:00',
* 'page' => 2,
* 'categories' => array(15, 18),
* 'products' => array(1,2,3)
* );
* $report = new \Automattic\WooCommerce\Admin\API\Reports\Products\Query( $args );
* $mydata = $report->get_data();
*/
namespace Automattic\WooCommerce\Admin\API\Reports\Products;
defined( 'ABSPATH' ) || exit;
use Automattic\WooCommerce\Admin\API\Reports\Query as ReportsQuery;
/**
* API\Reports\Products\Query
*/
class Query extends ReportsQuery {
/**
* Valid fields for Products report.
*
* @return array
*/
protected function get_default_query_vars() {
return array();
}
/**
* Get product data based on the current query vars.
*
* @return array
*/
public function get_data() {
$args = apply_filters( 'woocommerce_analytics_products_query_args', $this->get_query_vars() );
$data_store = \WC_Data_Store::load( 'report-products' );
$results = $data_store->get_data( $args );
return apply_filters( 'woocommerce_analytics_products_select_query', $results, $args );
}
}
uyarreklam.com.tr/httpdocs/wp-content/plugins/woocommerce/src/Admin/API/Reports/Orders/Query.php 0000644 00000002347 15155624361 0031712 0 ustar 00 var/www/vhosts <?php
/**
* Class for parameter-based Orders Reports querying
*
* Example usage:
* $args = array(
* 'before' => '2018-07-19 00:00:00',
* 'after' => '2018-07-05 00:00:00',
* 'interval' => 'week',
* 'products' => array(15, 18),
* 'coupons' => array(138),
* 'status_is' => array('completed'),
* 'status_is_not' => array('failed'),
* 'new_customers' => false,
* );
* $report = new \Automattic\WooCommerce\Admin\API\Reports\Orders\Query( $args );
* $mydata = $report->get_data();
*/
namespace Automattic\WooCommerce\Admin\API\Reports\Orders;
defined( 'ABSPATH' ) || exit;
use Automattic\WooCommerce\Admin\API\Reports\Query as ReportsQuery;
/**
* API\Reports\Orders\Query
*/
class Query extends ReportsQuery {
/**
* Get order data based on the current query vars.
*
* @return array
*/
public function get_data() {
$args = apply_filters( 'woocommerce_analytics_orders_query_args', $this->get_query_vars() );
$data_store = \WC_Data_Store::load( 'report-orders' );
$results = $data_store->get_data( $args );
return apply_filters( 'woocommerce_analytics_orders_select_query', $results, $args );
}
}
uyarreklam.com.tr/httpdocs/wp-content/plugins/woocommerce/src/Admin/API/Reports/Taxes/Query.php 0000644 00000002245 15155636334 0031540 0 ustar 00 var/www/vhosts <?php
/**
* Class for parameter-based Taxes Report querying
*
* Example usage:
* $args = array(
* 'before' => '2018-07-19 00:00:00',
* 'after' => '2018-07-05 00:00:00',
* 'page' => 2,
* 'taxes' => array(1,2,3)
* );
* $report = new \Automattic\WooCommerce\Admin\API\Reports\Taxes\Query( $args );
* $mydata = $report->get_data();
*/
namespace Automattic\WooCommerce\Admin\API\Reports\Taxes;
defined( 'ABSPATH' ) || exit;
use Automattic\WooCommerce\Admin\API\Reports\Query as ReportsQuery;
/**
* API\Reports\Taxes\Query
*/
class Query extends ReportsQuery {
/**
* Valid fields for Taxes report.
*
* @return array
*/
protected function get_default_query_vars() {
return array();
}
/**
* Get product data based on the current query vars.
*
* @return array
*/
public function get_data() {
$args = apply_filters( 'woocommerce_analytics_taxes_query_args', $this->get_query_vars() );
$data_store = \WC_Data_Store::load( 'report-taxes' );
$results = $data_store->get_data( $args );
return apply_filters( 'woocommerce_analytics_taxes_select_query', $results, $args );
}
}
httpdocs/wp-content/plugins/woocommerce/src/Admin/API/Reports/Taxes/Stats/Query.php 0000644 00000002376 15155726301 0032635 0 ustar 00 var/www/vhosts/uyarreklam.com.tr <?php
/**
* Class for parameter-based Taxes Stats Report querying
*
* Example usage:
* $args = array(
* 'before' => '2018-07-19 00:00:00',
* 'after' => '2018-07-05 00:00:00',
* 'page' => 2,
* 'categories' => array(15, 18),
* 'product_ids' => array(1,2,3)
* );
* $report = new \Automattic\WooCommerce\Admin\API\Reports\Taxes\Stats\Query( $args );
* $mydata = $report->get_data();
*/
namespace Automattic\WooCommerce\Admin\API\Reports\Taxes\Stats;
defined( 'ABSPATH' ) || exit;
use Automattic\WooCommerce\Admin\API\Reports\Query as ReportsQuery;
/**
* API\Reports\Taxes\Stats\Query
*/
class Query extends ReportsQuery {
/**
* Valid fields for Taxes report.
*
* @return array
*/
protected function get_default_query_vars() {
return array();
}
/**
* Get tax stats data based on the current query vars.
*
* @return array
*/
public function get_data() {
$args = apply_filters( 'woocommerce_analytics_taxes_stats_query_args', $this->get_query_vars() );
$data_store = \WC_Data_Store::load( 'report-taxes-stats' );
$results = $data_store->get_data( $args );
return apply_filters( 'woocommerce_analytics_taxes_stats_select_query', $results, $args );
}
}
httpdocs/wp-content/plugins/woocommerce/src/Admin/API/Reports/Stock/Stats/Query.php 0000644 00000001316 15155726316 0032633 0 ustar 00 var/www/vhosts/uyarreklam.com.tr <?php
/**
* Class for stock stats report querying
*
* $report = new \Automattic\WooCommerce\Admin\API\Reports\Stock\Stats\Query();
* $mydata = $report->get_data();
*/
namespace Automattic\WooCommerce\Admin\API\Reports\Stock\Stats;
defined( 'ABSPATH' ) || exit;
use Automattic\WooCommerce\Admin\API\Reports\Query as ReportsQuery;
/**
* API\Reports\Stock\Stats\Query
*/
class Query extends ReportsQuery {
/**
* Get product data based on the current query vars.
*
* @return array
*/
public function get_data() {
$data_store = \WC_Data_Store::load( 'report-stock-stats' );
$results = $data_store->get_data();
return apply_filters( 'woocommerce_analytics_stock_stats_query', $results );
}
}
httpdocs/wp-content/plugins/woocommerce/src/Admin/API/Reports/Downloads/Stats/Query.php 0000644 00000001577 15156116414 0033504 0 ustar 00 var/www/vhosts/uyarreklam.com.tr <?php
/**
* Class for parameter-based downloads Reports querying
*/
namespace Automattic\WooCommerce\Admin\API\Reports\Downloads\Stats;
defined( 'ABSPATH' ) || exit;
use Automattic\WooCommerce\Admin\API\Reports\Query as ReportsQuery;
/**
* API\Reports\Downloads\Stats\Query
*/
class Query extends ReportsQuery {
/**
* Valid fields for Orders report.
*
* @return array
*/
protected function get_default_query_vars() {
return array();
}
/**
* Get revenue data based on the current query vars.
*
* @return array
*/
public function get_data() {
$args = apply_filters( 'woocommerce_analytics_downloads_stats_query_args', $this->get_query_vars() );
$data_store = \WC_Data_Store::load( 'report-downloads-stats' );
$results = $data_store->get_data( $args );
return apply_filters( 'woocommerce_analytics_downloads_stats_select_query', $results, $args );
}
}
httpdocs/wp-content/plugins/woocommerce/src/Admin/API/Reports/Products/Stats/Query.php 0000644 00000002425 15156145661 0033354 0 ustar 00 var/www/vhosts/uyarreklam.com.tr <?php
/**
* Class for parameter-based Products Stats Report querying
*
* Example usage:
* $args = array(
* 'before' => '2018-07-19 00:00:00',
* 'after' => '2018-07-05 00:00:00',
* 'page' => 2,
* 'categories' => array(15, 18),
* 'product_ids' => array(1,2,3)
* );
* $report = new \Automattic\WooCommerce\Admin\API\Reports\Products\Stats\Query( $args );
* $mydata = $report->get_data();
*/
namespace Automattic\WooCommerce\Admin\API\Reports\Products\Stats;
defined( 'ABSPATH' ) || exit;
use Automattic\WooCommerce\Admin\API\Reports\Query as ReportsQuery;
/**
* API\Reports\Products\Stats\Query
*/
class Query extends ReportsQuery {
/**
* Valid fields for Products report.
*
* @return array
*/
protected function get_default_query_vars() {
return array();
}
/**
* Get product data based on the current query vars.
*
* @return array
*/
public function get_data() {
$args = apply_filters( 'woocommerce_analytics_products_stats_query_args', $this->get_query_vars() );
$data_store = \WC_Data_Store::load( 'report-products-stats' );
$results = $data_store->get_data( $args );
return apply_filters( 'woocommerce_analytics_products_stats_select_query', $results, $args );
}
}
httpdocs/wp-content/plugins/woocommerce/src/Admin/API/Reports/Customers/Stats/Query.php 0000644 00000003005 15156200023 0033510 0 ustar 00 var/www/vhosts/uyarreklam.com.tr <?php
/**
* Class for parameter-based Customers Report Stats querying
*
* Example usage:
* $args = array(
* 'registered_before' => '2018-07-19 00:00:00',
* 'registered_after' => '2018-07-05 00:00:00',
* 'page' => 2,
* 'avg_order_value_min' => 100,
* 'country' => 'GB',
* );
* $report = new \Automattic\WooCommerce\Admin\API\Reports\Customers\Stats\Query( $args );
* $mydata = $report->get_data();
*/
namespace Automattic\WooCommerce\Admin\API\Reports\Customers\Stats;
defined( 'ABSPATH' ) || exit;
use Automattic\WooCommerce\Admin\API\Reports\Query as ReportsQuery;
/**
* API\Reports\Customers\Stats\Query
*/
class Query extends ReportsQuery {
/**
* Valid fields for Customers report.
*
* @return array
*/
protected function get_default_query_vars() {
return array(
'per_page' => get_option( 'posts_per_page' ), // not sure if this should be the default.
'page' => 1,
'order' => 'DESC',
'orderby' => 'date_registered',
'fields' => '*', // @todo Needed?
);
}
/**
* Get product data based on the current query vars.
*
* @return array
*/
public function get_data() {
$args = apply_filters( 'woocommerce_analytics_customers_stats_query_args', $this->get_query_vars() );
$data_store = \WC_Data_Store::load( 'report-customers-stats' );
$results = $data_store->get_data( $args );
return apply_filters( 'woocommerce_analytics_customers_stats_select_query', $results, $args );
}
}
httpdocs/wp-content/plugins/woocommerce/src/Admin/API/Reports/Coupons/Stats/Query.php 0000644 00000002304 15156231053 0033162 0 ustar 00 var/www/vhosts/uyarreklam.com.tr <?php
/**
* Class for parameter-based Products Report querying
*
* Example usage:
* $args = array(
* 'before' => '2018-07-19 00:00:00',
* 'after' => '2018-07-05 00:00:00',
* 'page' => 2,
* 'coupons' => array(5, 120),
* );
* $report = new \Automattic\WooCommerce\Admin\API\Reports\Coupons\Stats\Query( $args );
* $mydata = $report->get_data();
*/
namespace Automattic\WooCommerce\Admin\API\Reports\Coupons\Stats;
defined( 'ABSPATH' ) || exit;
use Automattic\WooCommerce\Admin\API\Reports\Query as ReportsQuery;
/**
* API\Reports\Coupons\Stats\Query
*/
class Query extends ReportsQuery {
/**
* Valid fields for Products report.
*
* @return array
*/
protected function get_default_query_vars() {
return array();
}
/**
* Get product data based on the current query vars.
*
* @return array
*/
public function get_data() {
$args = apply_filters( 'woocommerce_analytics_coupons_stats_query_args', $this->get_query_vars() );
$data_store = \WC_Data_Store::load( 'report-coupons-stats' );
$results = $data_store->get_data( $args );
return apply_filters( 'woocommerce_analytics_coupons_select_query', $results, $args );
}
}
httpdocs/wp-content/plugins/woocommerce/src/Admin/API/Reports/Orders/Stats/Query.php 0000644 00000003003 15156244453 0032777 0 ustar 00 var/www/vhosts/uyarreklam.com.tr <?php
/**
* Class for parameter-based Order Stats Reports querying
*
* Example usage:
* $args = array(
* 'before' => '2018-07-19 00:00:00',
* 'after' => '2018-07-05 00:00:00',
* 'interval' => 'week',
* 'categories' => array(15, 18),
* 'coupons' => array(138),
* 'status_in' => array('completed'),
* );
* $report = new \Automattic\WooCommerce\Admin\API\Reports\Orders\Stats\Query( $args );
* $mydata = $report->get_data();
*/
namespace Automattic\WooCommerce\Admin\API\Reports\Orders\Stats;
defined( 'ABSPATH' ) || exit;
use Automattic\WooCommerce\Admin\API\Reports\Query as ReportsQuery;
/**
* API\Reports\Orders\Stats\Query
*/
class Query extends ReportsQuery {
/**
* Valid fields for Orders report.
*
* @return array
*/
protected function get_default_query_vars() {
return array(
'fields' => array(
'net_revenue',
'avg_order_value',
'orders_count',
'avg_items_per_order',
'num_items_sold',
'coupons',
'coupons_count',
'total_customers',
),
);
}
/**
* Get revenue data based on the current query vars.
*
* @return array
*/
public function get_data() {
$args = apply_filters( 'woocommerce_analytics_orders_stats_query_args', $this->get_query_vars() );
$data_store = \WC_Data_Store::load( 'report-orders-stats' );
$results = $data_store->get_data( $args );
return apply_filters( 'woocommerce_analytics_orders_stats_select_query', $results, $args );
}
}