PluginProbe ʕ •ᴥ•ʔ
JetFormBuilder — Dynamic Blocks Form Builder / 3.2.3
JetFormBuilder — Dynamic Blocks Form Builder v3.2.3
3.6.3.1 3.6.3 3.6.2.2 3.6.2.1 3.6.2 3.6.1.1 3.6.1 3.6.0.1 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.3.0 1.3.1 1.3.2 1.3.3 1.4.0 1.4.1 1.4.2 1.4.3 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.1.0 2.1.1 2.1.10 2.1.11 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 3.0.0 3.0.0.1 3.0.0.2 3.0.0.3 3.0.1 3.0.1.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.0.1 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.2.0 3.2.1 3.2.2 3.2.3 3.3.0 3.3.1 3.3.2 3.3.3 3.3.3.1 3.3.4 3.3.4.1 3.3.4.2 3.4.0 3.4.1 3.4.2 3.4.3 3.4.4 3.4.5 3.4.5.1 3.4.5.2 3.4.6 3.4.7 3.4.7.1 3.5.0 3.5.1 3.5.1.1 3.5.1.2 3.5.2 3.5.2.1 3.5.3 3.5.4 3.5.5 3.5.6 3.5.6.1 3.5.6.2 3.5.6.3 3.6.0
jetformbuilder / includes / db-queries / views / relation.php
jetformbuilder / includes / db-queries / views Last commit date
post-meta-view.php 2 years ago relation.php 2 years ago view-base-count-trait.php 2 years ago view-base.php 2 years ago view-custom-table-base.php 2 years ago
relation.php
74 lines
1 <?php
2
3
4 namespace Jet_Form_Builder\Db_Queries\Views;
5
6 // If this file is called directly, abort.
7 if ( ! defined( 'WPINC' ) ) {
8 die;
9 }
10
11 class Relation {
12
13 /** @var object */
14 public $local;
15
16 /** @var object */
17 public $foreign;
18
19 public $condition = '';
20 protected $type = 'INNER';
21
22 public function type( string $type ): Relation {
23 $this->type = $type;
24
25 return $this;
26 }
27
28 public function local( View_Base $view_base, string $foreign_key ): Relation {
29 if ( ! $this->local ) {
30 $this->local = (object) array(
31 'table' => $view_base->table(),
32 'key' => $foreign_key,
33 );
34 }
35
36 return $this;
37 }
38
39 public function foreign( View_Base $view_base, string $primary_key = 'id' ): Relation {
40 if ( ! $this->foreign ) {
41 $this->foreign = (object) array(
42 'table' => $view_base->table(),
43 'key' => $primary_key,
44 );
45 }
46
47 return $this;
48 }
49
50 public function condition( string $condition ): Relation {
51 $this->condition = $condition;
52
53 return $this;
54 }
55
56 public function parse_condition( string $condition ): string {
57 return str_replace(
58 array( '@local', '@foreign' ),
59 array( $this->local->table, $this->foreign->table ),
60 $condition
61 );
62 }
63
64 public function get_result() {
65 $foreign = $this->foreign->table;
66
67 $left = "`{$this->local->table}`.`{$this->local->key}`";
68 $right = "`{$foreign}`.`{$this->foreign->key}`";
69
70 return "{$this->type} JOIN `{$foreign}` ON {$left} = {$right} {$this->parse_condition( $this->condition )}";
71 }
72
73 }
74