rebase from live enviornment
This commit is contained in:
43
wp/plugins/imagify/classes/Traits/InstanceGetterTrait.php
Normal file
43
wp/plugins/imagify/classes/Traits/InstanceGetterTrait.php
Normal file
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
namespace Imagify\Traits;
|
||||
|
||||
defined( 'ABSPATH' ) || die( 'Cheatin’ uh?' );
|
||||
|
||||
/**
|
||||
* Trait that simulates a singleton pattern.
|
||||
* The idea is more to ease the instance retrieval than to prevent multiple instances.
|
||||
* This is temporary, until we get a DI container.
|
||||
*
|
||||
* @since 1.9
|
||||
* @since 1.9.4 Renamed into InstanceGetterTrait.
|
||||
* @author Grégory Viguier
|
||||
*/
|
||||
trait InstanceGetterTrait {
|
||||
|
||||
/**
|
||||
* The "not-so-single" instance of the class.
|
||||
*
|
||||
* @var object
|
||||
* @since 1.9
|
||||
* @access protected
|
||||
* @author Grégory Viguier
|
||||
*/
|
||||
protected static $instance;
|
||||
|
||||
/**
|
||||
* Get the main Instance.
|
||||
*
|
||||
* @since 1.9
|
||||
* @access protected
|
||||
* @author Grégory Viguier
|
||||
*
|
||||
* @return object Main instance.
|
||||
*/
|
||||
public static function get_instance() {
|
||||
if ( ! isset( static::$instance ) ) {
|
||||
static::$instance = new static();
|
||||
}
|
||||
|
||||
return static::$instance;
|
||||
}
|
||||
}
|
||||
139
wp/plugins/imagify/classes/Traits/MediaRowTrait.php
Normal file
139
wp/plugins/imagify/classes/Traits/MediaRowTrait.php
Normal file
@@ -0,0 +1,139 @@
|
||||
<?php
|
||||
namespace Imagify\Traits;
|
||||
|
||||
defined( 'ABSPATH' ) || die( 'Cheatin’ uh?' );
|
||||
|
||||
/**
|
||||
* Trait to use to connect medias and database.
|
||||
* It also cache the results.
|
||||
* Classes using that trait must define a protected property $db_class_name (string) containing the media SQL DB class name.
|
||||
*
|
||||
* @since 1.9
|
||||
* @author Grégory Viguier
|
||||
*/
|
||||
trait MediaRowTrait {
|
||||
|
||||
/**
|
||||
* The media SQL data row.
|
||||
*
|
||||
* @var array
|
||||
* @since 1.9
|
||||
* @access protected
|
||||
* @author Grégory Viguier
|
||||
*/
|
||||
protected $row;
|
||||
|
||||
/**
|
||||
* The media ID.
|
||||
*
|
||||
* @var int
|
||||
* @since 1.9
|
||||
* @access protected
|
||||
* @author Grégory Viguier
|
||||
*/
|
||||
protected $id;
|
||||
|
||||
/**
|
||||
* Get the row.
|
||||
*
|
||||
* @since 1.9
|
||||
* @access public
|
||||
* @author Grégory Viguier
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function get_row() {
|
||||
if ( isset( $this->row ) ) {
|
||||
return $this->row;
|
||||
}
|
||||
|
||||
if ( ! $this->db_class_name || $this->id <= 0 ) {
|
||||
return $this->invalidate_row();
|
||||
}
|
||||
|
||||
$this->row = $this->get_row_db_instance()->get( $this->id );
|
||||
|
||||
if ( ! $this->row ) {
|
||||
return $this->invalidate_row();
|
||||
}
|
||||
|
||||
return $this->row;
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the row.
|
||||
*
|
||||
* @since 1.9
|
||||
* @access public
|
||||
* @author Grégory Viguier
|
||||
*
|
||||
* @param array $data The data to update.
|
||||
*/
|
||||
public function update_row( $data ) {
|
||||
if ( ! $this->db_class_name || $this->id <= 0 ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->get_row_db_instance()->update( $this->id, $data );
|
||||
|
||||
$this->reset_row_cache();
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete the row.
|
||||
*
|
||||
* @since 1.9
|
||||
* @access public
|
||||
* @author Grégory Viguier
|
||||
*/
|
||||
public function delete_row() {
|
||||
if ( ! $this->db_class_name || $this->id <= 0 ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->get_row_db_instance()->delete( $this->id );
|
||||
|
||||
$this->invalidate_row();
|
||||
}
|
||||
|
||||
/**
|
||||
* Shorthand to get the DB table instance.
|
||||
*
|
||||
* @since 1.9
|
||||
* @access public
|
||||
* @author Grégory Viguier
|
||||
*
|
||||
* @return \Imagify\DB\DBInterface The DB table instance.
|
||||
*/
|
||||
public function get_row_db_instance() {
|
||||
return call_user_func( [ $this->db_class_name, 'get_instance' ] );
|
||||
}
|
||||
|
||||
/**
|
||||
* Invalidate the row, by setting it to an empty array.
|
||||
*
|
||||
* @since 1.9
|
||||
* @access public
|
||||
* @author Grégory Viguier
|
||||
*
|
||||
* @return array The row.
|
||||
*/
|
||||
public function invalidate_row() {
|
||||
$this->row = [];
|
||||
return $this->row;
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset the row cache.
|
||||
*
|
||||
* @since 1.9
|
||||
* @access public
|
||||
* @author Grégory Viguier
|
||||
*
|
||||
* @return null The row.
|
||||
*/
|
||||
public function reset_row_cache() {
|
||||
$this->row = null;
|
||||
return $this->row;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user