Merge branch 'master' of https://github.com/tainacan/tainacan
This commit is contained in:
commit
8a84bcc4df
|
@ -6,7 +6,7 @@ use Tainacan\Entities;
|
||||||
defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
|
defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
|
||||||
|
|
||||||
class Items extends Repository {
|
class Items extends Repository {
|
||||||
|
protected $entities_type = '\Tainacan\Entities\Item';
|
||||||
public function get_map() {
|
public function get_map() {
|
||||||
return [
|
return [
|
||||||
'id' => [
|
'id' => [
|
||||||
|
@ -53,47 +53,7 @@ class Items extends Repository {
|
||||||
}
|
}
|
||||||
|
|
||||||
public function insert($item) {
|
public function insert($item) {
|
||||||
$map = $this->get_map();
|
$new_item = parent::insert($item);
|
||||||
|
|
||||||
// get collection to determine post type
|
|
||||||
$collection = $item->get_collection();
|
|
||||||
|
|
||||||
if (!$collection){
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
$cpt = $collection->get_db_identifier();
|
|
||||||
|
|
||||||
// iterate through the native post properties
|
|
||||||
foreach ($map as $prop => $mapped) {
|
|
||||||
if ($mapped['map'] != 'meta' && $mapped['map'] != 'meta_multi') {
|
|
||||||
$item->WP_Post->{$mapped['map']} = $item->get_mapped_property($prop);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// save post and geet its ID
|
|
||||||
$item->WP_Post->post_type = $cpt;
|
|
||||||
$item->WP_Post->post_status = 'publish';
|
|
||||||
|
|
||||||
$id = wp_insert_post($item->WP_Post);
|
|
||||||
$item->WP_Post = get_post($id);
|
|
||||||
|
|
||||||
// Now run through properties stored as postmeta
|
|
||||||
foreach ($map as $prop => $mapped) {
|
|
||||||
if ($mapped['map'] == 'meta') {
|
|
||||||
update_post_meta($id, $prop, $item->get_mapped_property($prop));
|
|
||||||
} elseif ($mapped['map'] == 'meta_multi') {
|
|
||||||
$values = $item->get_mapped_property($prop);
|
|
||||||
|
|
||||||
delete_post_meta($id, $prop);
|
|
||||||
|
|
||||||
if (is_array($values)){
|
|
||||||
foreach ($values as $value){
|
|
||||||
add_post_meta($id, $prop, $value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// save metadata
|
// save metadata
|
||||||
$metadata = $item->get_metadata();
|
$metadata = $item->get_metadata();
|
||||||
|
@ -103,8 +63,7 @@ class Items extends Repository {
|
||||||
$Tainacan_Item_Metadata->insert($meta);
|
$Tainacan_Item_Metadata->insert($meta);
|
||||||
}
|
}
|
||||||
|
|
||||||
// return a brand new object
|
return $new_item;
|
||||||
return new Entities\Item($item->WP_Post);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function fetch($args = [], $object = []){
|
public function fetch($args = [], $object = []){
|
||||||
|
|
|
@ -36,8 +36,19 @@ abstract class Repository {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// save post and geet its ID
|
// If implement trait \Tainacan\Traits\Entity_Collection_Relation get its collection relation, else get post type from entity
|
||||||
$obj->WP_Post->post_type = $obj::get_post_type();
|
if ( method_exists($obj, 'get_collection') ) {
|
||||||
|
$collection = $obj->get_collection();
|
||||||
|
|
||||||
|
if (!$collection){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
$cpt = $collection->get_db_identifier();
|
||||||
|
$obj->WP_Post->post_type = $cpt;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$obj->WP_Post->post_type = $obj::get_post_type();
|
||||||
|
}
|
||||||
$obj->WP_Post->post_status = 'publish';
|
$obj->WP_Post->post_status = 'publish';
|
||||||
|
|
||||||
// TODO verificar se salvou mesmo
|
// TODO verificar se salvou mesmo
|
||||||
|
|
|
@ -88,7 +88,9 @@ class Collections extends \WP_UnitTestCase {
|
||||||
$this->assertTrue($x->validate());
|
$this->assertTrue($x->validate());
|
||||||
$this->assertTrue(empty($x->get_errors()));
|
$this->assertTrue(empty($x->get_errors()));
|
||||||
|
|
||||||
|
global $Tainacan_Collections;
|
||||||
|
|
||||||
|
$this->assertTrue(has_action('init', array($Tainacan_Collections, 'register_post_type')) !== false, 'Collections Init is not registred!');
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,7 +51,7 @@ class Items extends \WP_UnitTestCase {
|
||||||
|
|
||||||
$this->assertTrue( isset($meta_test[$metadata->get_id()]) );
|
$this->assertTrue( isset($meta_test[$metadata->get_id()]) );
|
||||||
$this->assertTrue( $meta_test[$metadata->get_id()] instanceof \Tainacan\Entities\Item_Metadata_Entity );
|
$this->assertTrue( $meta_test[$metadata->get_id()] instanceof \Tainacan\Entities\Item_Metadata_Entity );
|
||||||
$this->assertEquals( $meta_test[$metadata->get_id()]->get_value(), 'value_1');
|
$this->assertEquals( 'value_1', $meta_test[$metadata->get_id()]->get_value());
|
||||||
|
|
||||||
$i = new \Tainacan\Entities\Item();
|
$i = new \Tainacan\Entities\Item();
|
||||||
$i->set_title('apple');
|
$i->set_title('apple');
|
||||||
|
|
Loading…
Reference in New Issue