field = $field; $this->label = 0 === strpos( $field, 'display:' ) ? __( 'Unit price', 'recast-subscriptions' ) : Fields::label( $field ); $this->type = 0 === strpos( $field, 'display:' ) ? 'money' : Fields::type( $field ); $this->before = $before; $this->after = $after; $this->item_id = ( $parsed && 'item' === $parsed['kind'] && '*' !== $parsed['item_id'] ) ? (int) $parsed['item_id'] : null; if ( null === $this->item_id && preg_match( '/^display:item:(\d+):/', $field, $m ) ) { $this->item_id = (int) $m[1]; } $this->item_name = $item_name; } /** * Array form for storage / REST. * * @return array */ public function to_array() { return array( 'field' => $this->field, 'label' => $this->label, 'type' => $this->type, 'before' => $this->before, 'after' => $this->after, 'item_id' => $this->item_id, 'item_name' => $this->item_name, ); } /** * Rebuilds from storage. * * @param array $data Array form. * @return FieldDiff */ public static function from_array( array $data ) { $diff = new self( (string) $data['field'], $data['before'], $data['after'], isset( $data['item_name'] ) ? $data['item_name'] : null ); if ( isset( $data['label'] ) ) { $diff->label = $data['label']; } return $diff; } }