PluginProbe ʕ •ᴥ•ʔ
Presto Player / 4.3.2
Presto Player v4.3.2
4.3.2 4.3.1 4.3.0 4.2.4 4.2.3 4.2.2 4.2.0 4.2.1 trunk 1.10.0 1.10.1 1.10.2 1.11.0 1.12.0 1.13.0 1.14.0 1.14.1 1.5.10 1.5.11 1.5.12 1.5.13 1.5.14 1.5.15 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.6.10 1.6.11 1.6.12 1.6.13 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.9.0 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.14 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.10 2.0.11 2.0.12 2.0.13 2.0.14 2.0.15 2.0.16 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.2.0 2.2.1 2.2.2 2.2.3 2.2.3-beta1 2.3.0 2.3.1 2.3.2 2.3.3 3.0.0 3.0.0-beta1 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.1.0 3.1.1 3.1.2 3.1.3 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4
presto-player / inc / Support / HasOneRelationship.php
presto-player / inc / Support Last commit date
Block.php 1 month ago BlockFinder.php 2 years ago DynamicData.php 1 month ago HasOneRelationship.php 2 years ago Integration.php 2 years ago Utility.php 1 month ago
HasOneRelationship.php
76 lines
1 <?php
2
3 namespace PrestoPlayer\Support;
4
5 class HasOneRelationship {
6
7 protected $classname, $parent_model, $parent_field;
8
9 /**
10 * Construct
11 *
12 * @param string $classname
13 * @param \PrestoPlayer\Models\Model $parent_model
14 */
15 public function __construct( $classname, $parent_model, $parent_field ) {
16 $this->classname = $classname;
17 $this->parent_model = $parent_model;
18 $this->parent_field = $parent_field;
19 }
20
21 public function getRelationshipClass() {
22 return $this->classname;
23 }
24
25 public function getParentField() {
26 return $this->parent_field;
27 }
28
29 public function getRelationshipTable() {
30 return ( new $this->classname() )->getTableName();
31 }
32
33 /**
34 * Save the model with the relationship
35 *
36 * @param array $arguments
37 * @return \PrestoPlayer\Models\Model
38 */
39 public function save( $arguments ) {
40 // create the item and save as
41 $saved_id = ( new $this->classname() )->create( $arguments );
42
43 // update or create parent model
44 if ( $this->parent_model->id ) {
45 return $this->parent_model->update(
46 array(
47 $this->parent_field => (int) $saved_id,
48 )
49 );
50 }
51
52 return new \WP_Error( 'unsaved', 'Please save the model before adding the relationship.' );
53 }
54
55 public function update( $arguments ) {
56 if ( ! $this->parent_field ) {
57 return new \WP_Error( 'unsaved', 'Please create the relationship before updating it.' );
58 }
59
60 $item_class = ( new $this->classname() );
61 $item = $this->parent_model->{$this->parent_field};
62
63 if ( is_int( $item ) ) {
64 $item = $item_class->get( $item );
65 } elseif ( is_object( $item ) ) {
66 $item = $item_class->set( $item );
67 }
68
69 if ( empty( $item ) ) {
70 return new \WP_Error( 'unsaved', 'Please create the relationship before updating it.' );
71 }
72
73 return $item->update( $arguments );
74 }
75 }
76