PluginProbe ʕ •ᴥ•ʔ
Presto Player / 4.3.1
Presto Player v4.3.1
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 1 year ago DynamicData.php 3 weeks ago HasOneRelationship.php 1 year ago Integration.php 1 year ago Utility.php 3 weeks 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