Initial plugin commit
This commit is contained in:
98
includes/Repositories/AbstractRepository.php
Normal file
98
includes/Repositories/AbstractRepository.php
Normal file
@@ -0,0 +1,98 @@
|
||||
<?php
|
||||
/**
|
||||
* Shared repository helpers.
|
||||
*
|
||||
* @package KGV\VereinManager
|
||||
*/
|
||||
|
||||
namespace KGV\VereinManager\Repositories;
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
abstract class AbstractRepository {
|
||||
|
||||
/**
|
||||
* WordPress database object.
|
||||
*
|
||||
* @var \wpdb
|
||||
*/
|
||||
protected $wpdb;
|
||||
|
||||
/**
|
||||
* Concrete table name.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $table = '';
|
||||
|
||||
/**
|
||||
* Build repository instance.
|
||||
*/
|
||||
public function __construct() {
|
||||
global $wpdb;
|
||||
|
||||
$this->wpdb = $wpdb;
|
||||
$this->table = $this->resolve_table();
|
||||
}
|
||||
|
||||
/**
|
||||
* Resolve table name in child class.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
abstract protected function resolve_table();
|
||||
|
||||
/**
|
||||
* Find a single row by ID.
|
||||
*
|
||||
* @param int $id Record ID.
|
||||
* @return object|null
|
||||
*/
|
||||
public function find( $id ) {
|
||||
return $this->wpdb->get_row( $this->wpdb->prepare( "SELECT * FROM {$this->table} WHERE id = %d", absint( $id ) ) ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a record.
|
||||
*
|
||||
* @param int $id Record ID.
|
||||
* @return bool
|
||||
*/
|
||||
public function delete( $id ) {
|
||||
$result = $this->wpdb->delete( $this->table, array( 'id' => absint( $id ) ), array( '%d' ) );
|
||||
return false !== $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Current local datetime.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function now() {
|
||||
return current_time( 'mysql' );
|
||||
}
|
||||
|
||||
/**
|
||||
* Restrict sortable columns.
|
||||
*
|
||||
* @param string $orderby Requested column.
|
||||
* @param array $allowed Allowed columns.
|
||||
* @param string $default Default column.
|
||||
* @return string
|
||||
*/
|
||||
protected function sanitize_orderby( $orderby, $allowed, $default ) {
|
||||
return in_array( $orderby, $allowed, true ) ? $orderby : $default;
|
||||
}
|
||||
|
||||
/**
|
||||
* Restrict sort direction.
|
||||
*
|
||||
* @param string $order Requested order.
|
||||
* @return string
|
||||
*/
|
||||
protected function sanitize_order( $order ) {
|
||||
return 'ASC' === strtoupper( (string) $order ) ? 'ASC' : 'DESC';
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user