Commit realizado el 12:13:52 08-04-2024
This commit is contained in:
@@ -0,0 +1,136 @@
|
||||
<?php
|
||||
/**
|
||||
* The translate functions.
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @package RankMath
|
||||
* @subpackage RankMath\Admin\Database
|
||||
* @author RankMath <support@rankmath.com>
|
||||
*/
|
||||
|
||||
namespace RankMath\Admin\Database;
|
||||
|
||||
/**
|
||||
* Translate class.
|
||||
*/
|
||||
trait Translate {
|
||||
|
||||
/**
|
||||
* Translate the current query to an SQL select statement
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
private function translateSelect() { // @codingStandardsIgnoreLine
|
||||
$query = [ 'SELECT' ];
|
||||
|
||||
if ( $this->found_rows ) {
|
||||
$query[] = 'SQL_CALC_FOUND_ROWS';
|
||||
}
|
||||
|
||||
if ( $this->distinct ) {
|
||||
$query[] = 'DISTINCT';
|
||||
}
|
||||
|
||||
$query[] = $this->has_sql_clause( 'select' ) ? $this->get_sql_clause( 'select', true ) : '*';
|
||||
$query[] = $this->translateFrom();
|
||||
$query[] = $this->get_sql_clause( 'join', true );
|
||||
$query[] = $this->get_sql_clause( 'where', true );
|
||||
$query[] = $this->translateGroupBy();
|
||||
$query[] = $this->translateOrderBy();
|
||||
$query[] = $this->translateLimit();
|
||||
|
||||
return join( ' ', array_filter( $query ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Translate the current query to an SQL update statement
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
private function translateUpdate() { // @codingStandardsIgnoreLine
|
||||
$query = [ "UPDATE {$this->table} SET" ];
|
||||
|
||||
// Add the values.
|
||||
$values = [];
|
||||
foreach ( $this->sql_clauses['values'] as $key => $value ) {
|
||||
$values[] = $key . ' = ' . $this->esc_value( $value );
|
||||
}
|
||||
|
||||
if ( ! empty( $values ) ) {
|
||||
$query[] = join( ', ', $values );
|
||||
}
|
||||
|
||||
$query[] = $this->get_sql_clause( 'where', true );
|
||||
$query[] = $this->translateLimit();
|
||||
|
||||
return join( ' ', array_filter( $query ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Translate the current query to an SQL delete statement
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
private function translateDelete() { // @codingStandardsIgnoreLine
|
||||
$query = [ 'DELETE' ];
|
||||
$query[] = $this->translateFrom();
|
||||
$query[] = $this->get_sql_clause( 'where', true );
|
||||
$query[] = $this->translateLimit();
|
||||
|
||||
return join( ' ', array_filter( $query ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Build the from statement.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
private function translateFrom() { // @codingStandardsIgnoreLine
|
||||
if ( ! $this->has_sql_clause( 'from' ) ) {
|
||||
$this->add_sql_clause( 'from', $this->table );
|
||||
}
|
||||
|
||||
return 'FROM ' . $this->get_sql_clause( 'from', true );
|
||||
}
|
||||
|
||||
/**
|
||||
* Build the order by statement
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function translateOrderBy() { // @codingStandardsIgnoreLine
|
||||
if ( ! $this->has_sql_clause( 'order_by' ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
return 'ORDER BY ' . $this->get_sql_clause( 'order_by', true );
|
||||
}
|
||||
|
||||
/**
|
||||
* Build the group by clauses.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
private function translateGroupBy() { // @codingStandardsIgnoreLine
|
||||
if ( ! $this->has_sql_clause( 'group_by' ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$group_by = 'GROUP BY ' . $this->get_sql_clause( 'group_by', true );
|
||||
|
||||
if ( $this->has_sql_clause( 'having' ) ) {
|
||||
$group_by .= ' ' . $this->get_sql_clause( 'having', true );
|
||||
}
|
||||
|
||||
return $group_by;
|
||||
}
|
||||
|
||||
/**
|
||||
* Build offset and limit.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
private function translateLimit() { // @codingStandardsIgnoreLine
|
||||
return $this->get_sql_clause( 'limit', true );
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user