Files
medicalalert-web-reloaded/wp/wp-content/plugins/imagify/classes/Traits/MediaRowTrait.php
Tony Volpe 4eb982d7a8 Merged in feature/from-pantheon (pull request #16)
code from pantheon

* code from pantheon
2024-01-10 17:03:02 +00:00

140 lines
2.4 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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;
}
}