criando a entidade Term
This commit is contained in:
parent
7e2dd2c199
commit
5b354a9139
|
@ -0,0 +1,78 @@
|
|||
<?php
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
class Tainacan_Term extends Entity {
|
||||
|
||||
function __construct($which = 0, $taxonomy = '' ) {
|
||||
|
||||
$this->repository = 'Tainacan_Terms';
|
||||
$this->set_taxonomy( $taxonomy );
|
||||
|
||||
if ( is_numeric( $which ) && $which > 0) {
|
||||
$post = get_term_by('id', $which, $taxonomy);
|
||||
if ( $post instanceof WP_Term) {
|
||||
$this->WP_Term = get_term_by('id', $which, $taxonomy);
|
||||
}
|
||||
|
||||
} elseif ( $which instanceof WP_Term ) {
|
||||
$this->WP_Term = $which;
|
||||
} else {
|
||||
$this->WP_Term = new StdClass();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Getters
|
||||
|
||||
function get_id() {
|
||||
return $this->get_mapped_property('term_id');
|
||||
}
|
||||
|
||||
|
||||
function get_name() {
|
||||
return $this->get_mapped_property('name');
|
||||
}
|
||||
|
||||
function get_parent() {
|
||||
return $this->get_mapped_property('parent');
|
||||
}
|
||||
|
||||
|
||||
function get_description() {
|
||||
return $this->get_mapped_property('description');
|
||||
}
|
||||
|
||||
function get_user() {
|
||||
return $this->get_mapped_property('user');
|
||||
}
|
||||
|
||||
function get_taxonomy() {
|
||||
return $this->get_mapped_property('taxonomy');
|
||||
}
|
||||
|
||||
// Setters
|
||||
|
||||
|
||||
function set_name($value) {
|
||||
return $this->set_mapped_property('name', $value);
|
||||
}
|
||||
|
||||
function set_parent($value) {
|
||||
return $this->set_mapped_property('parent', $value);
|
||||
}
|
||||
|
||||
|
||||
function set_description($value) {
|
||||
return $this->set_mapped_property('description', $value);
|
||||
}
|
||||
|
||||
function set_user($value) {
|
||||
return $this->set_mapped_property('user', $value);
|
||||
}
|
||||
|
||||
function set_taxonomy($value) {
|
||||
return $this->set_mapped_property('taxonomy', $value);
|
||||
}
|
||||
}
|
|
@ -22,9 +22,12 @@ class Entity {
|
|||
|
||||
if ( $mapped == 'meta') {
|
||||
return get_post_meta($this->WP_Post->ID, $prop, true);
|
||||
} else {
|
||||
}elseif ( $mapped == 'termmeta' ){
|
||||
return get_term_meta($this->WP_Term->term_id, $prop, true);
|
||||
}elseif ( isset( $this->WP_Post )) {
|
||||
return isset($this->WP_Post->$mapped) ? $this->WP_Post->$mapped : null;
|
||||
|
||||
} else{
|
||||
return isset($this->WP_Term->$mapped) ? $this->WP_Term->$mapped : null;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|||
}
|
||||
|
||||
/**
|
||||
* Class Tainacan_Metadatas
|
||||
* Class Tainacan_Taxonomies
|
||||
*/
|
||||
class Tainacan_Taxonomies {
|
||||
|
||||
|
@ -75,6 +75,19 @@ class Tainacan_Taxonomies {
|
|||
return $meta;
|
||||
}
|
||||
|
||||
|
||||
function get_metadata_db_identifier($id) {
|
||||
$meta = get_post_meta($id, self::DB_IDENTIFIER_META, true);
|
||||
|
||||
if (!$meta) {
|
||||
$p = get_post($id);
|
||||
add_post_meta($id, self::DB_IDENTIFIER_META, $p->post_name);
|
||||
return $p->post_name;
|
||||
}
|
||||
|
||||
return $meta;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Tainacan_Taxonomy $metadata
|
||||
* @return int
|
||||
|
@ -142,19 +155,6 @@ class Tainacan_Taxonomies {
|
|||
function get_taxonomy_by_id($id) {
|
||||
return new Tainacan_Taxonomy($id);
|
||||
}
|
||||
|
||||
function insert_term( $name, $taxonomy, $args = array() ){
|
||||
$term = wp_insert_term( $name, $taxonomy, $args );
|
||||
return $term['term_id'];
|
||||
}
|
||||
|
||||
function get_terms( $taxonomies, $args ){
|
||||
return get_terms( $taxonomies, $args );
|
||||
}
|
||||
|
||||
function get_term_by($field,$value,$taxonomy){
|
||||
return get_term_by($field,$value,$taxonomy);
|
||||
}
|
||||
}
|
||||
|
||||
global $Tainacan_Taxonomies;
|
||||
|
|
|
@ -0,0 +1,60 @@
|
|||
<?php
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Class Tainacan_Terms
|
||||
*/
|
||||
class Tainacan_Terms {
|
||||
|
||||
var $map = [
|
||||
'term_id' => 'term_id',
|
||||
'name' => 'name',
|
||||
'parent' => 'parent',
|
||||
'description' => 'description',
|
||||
'taxonomy' => 'taxonomy',
|
||||
'user' => 'termmeta',
|
||||
];
|
||||
|
||||
function insert( Tainacan_Term $term ){
|
||||
// First iterate through the native post properties
|
||||
$map = $this->map;
|
||||
foreach ($map as $prop => $mapped) {
|
||||
if ($mapped != 'termmeta') {
|
||||
$term->WP_Term->$mapped = $term->get_mapped_property($prop);
|
||||
}
|
||||
}
|
||||
|
||||
// save post and get its ID
|
||||
$term_inserted = wp_insert_term( $term->WP_Term->name, $term->WP_Term->taxonomy, [
|
||||
'parent' => ( isset( $term->WP_Term->parent ) ) ? $term->WP_Term->parent : 0,
|
||||
'description' => ( isset( $term->WP_Term->description ) ) ? $term->WP_Term->description : '',
|
||||
]);
|
||||
|
||||
// Now run through properties stored as postmeta
|
||||
foreach ($map as $prop => $mapped) {
|
||||
if ($mapped == 'termmeta') {
|
||||
update_term_meta($term_inserted['term_id'], $prop, $term->get_mapped_property($prop));
|
||||
}
|
||||
}
|
||||
|
||||
return $term_inserted['term_id'];
|
||||
}
|
||||
|
||||
function get_terms( $taxonomies, $args ){
|
||||
return get_terms( $taxonomies, $args );
|
||||
}
|
||||
|
||||
function get_term_by($field,$value,$taxonomy){
|
||||
$wp_term = get_term_by($field,$value,$taxonomy);
|
||||
|
||||
$tainacan_term = new Tainacan_Term( $wp_term );
|
||||
$tainacan_term->set_user( get_term_meta($tainacan_term->get_id() , 'user', true ) );
|
||||
|
||||
return $tainacan_term;
|
||||
}
|
||||
}
|
||||
|
||||
global $Tainacan_Terms;
|
||||
$Tainacan_Terms = new Tainacan_Terms();
|
|
@ -11,11 +11,13 @@ include('classes/Repositories/Collections.php');
|
|||
include('classes/Repositories/Items.php');
|
||||
include('classes/Repositories/Metatadas.php');
|
||||
include('classes/Repositories/Taxonomies.php');
|
||||
include('classes/Repositories/Terms.php');
|
||||
include('classes/Entity.php');
|
||||
include('classes/Entities/Collection.php');
|
||||
include('classes/Entities/Item.php');
|
||||
include('classes/Entities/Metadata.php');
|
||||
include('classes/Entities/Taxonomy.php');
|
||||
include('classes/Entities/Term.php');
|
||||
include('classes/FieldTypes/FieldType.php');
|
||||
include('classes/FieldTypes/TextFieldType.php');
|
||||
|
||||
|
|
|
@ -37,10 +37,11 @@ class TestTaxonomies extends WP_UnitTestCase {
|
|||
}
|
||||
|
||||
function test_add_term_taxonomy(){
|
||||
global $Tainacan_Taxonomies;
|
||||
global $Tainacan_Taxonomies,$Tainacan_Terms;
|
||||
$taxonomy = new Tainacan_Taxonomy();
|
||||
$term = new Tainacan_Term();
|
||||
|
||||
//setando os valores na classe do tainacan
|
||||
//setando os valores na classe de taxonomia
|
||||
$taxonomy->set_name('genero');
|
||||
|
||||
//insere a taxonomia
|
||||
|
@ -49,12 +50,16 @@ class TestTaxonomies extends WP_UnitTestCase {
|
|||
//retorna a taxonomia
|
||||
$taxonomy_test = $Tainacan_Taxonomies->get_taxonomy_by_id($taxonomy_id);
|
||||
|
||||
//insere um termo na taxonmia
|
||||
$term_id = $Tainacan_Taxonomies->insert_term('Rock', $taxonomy_test->get_taxonomy_name());
|
||||
//insere um termo na taxonomia
|
||||
$term->set_taxonomy( $taxonomy_test->get_taxonomy_name() );
|
||||
$term->set_name('Rock');
|
||||
$term->set_user(56);
|
||||
$term_id = $Tainacan_Terms->insert( $term ) ;
|
||||
|
||||
//retorna o termo
|
||||
$term = $Tainacan_Taxonomies->get_term_by('id', $term_id, $taxonomy_test->get_taxonomy_name());
|
||||
//retorna um objeto da classe Tainacan_Term
|
||||
$test = $Tainacan_Terms->get_term_by('id', $term_id, $taxonomy_test->get_taxonomy_name());
|
||||
|
||||
$this->assertEquals( $term->name, 'Rock' );
|
||||
$this->assertEquals( $test->get_name(), 'Rock' );
|
||||
$this->assertEquals( $test->get_user(), 56 );
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue