2026-03-26 12:55:30 +00:00

71 lines
2.6 KiB
PHP

<?php
class ASPVariations {
var $groups = array();
var $variations = array();
var $prod_id = false;
function __construct( $prod_id ) {
$this->prod_id = $prod_id;
$this->_get_variations();
}
private function _get_variations() {
$variations_groups = get_post_meta( $this->prod_id, 'asp_variations_groups', true );
if ( empty( $variations_groups ) ) {
return false;
}
$this->groups = $variations_groups;
foreach ( $variations_groups as $grp_id => $group ) {
$variations_names = get_post_meta( $this->prod_id, 'asp_variations_names', true );
if ( ! empty( $variations_names ) ) {
$variations_prices_orig = get_post_meta( $this->prod_id, 'asp_variations_prices', true );
$variations_prices = apply_filters( 'asp_variations_prices_filter', $variations_prices_orig, $this->prod_id );
$variations_urls = get_post_meta( $this->prod_id, 'asp_variations_urls', true );
$variations_opts = get_post_meta( $this->prod_id, 'asp_variations_opts', true );
$this->variations[ $grp_id ]['names'] = $variations_names[ $grp_id ];
$this->variations[ $grp_id ]['prices'] = $variations_prices[ $grp_id ];
$this->variations[ $grp_id ]['urls'] = $variations_urls[ $grp_id ];
$this->variations[ $grp_id ]['opts'] = isset( $variations_opts[ $grp_id ] ) ? $variations_opts[ $grp_id ] : 0;
}
}
}
public function get_variation( $grp_id, $var_id ) {
if ( empty( $this->variations[ $grp_id ] ) ) {
return false;
}
if ( empty( $this->variations[ $grp_id ]['names'][ $var_id ] ) ) {
return false;
}
$var = array(
'grp_id' => $grp_id,
'id' => $var_id,
'group_name' => $this->groups[ $grp_id ],
'name' => $this->variations[ $grp_id ]['names'][ $var_id ],
'price' => $this->variations[ $grp_id ]['prices'][ $var_id ],
'url' => $this->variations[ $grp_id ]['urls'][ $var_id ],
'opts' => isset( $this->variations[ $grp_id ]['opts'][ $var_id ] ) ? $this->variations[ $grp_id ]['opts'][ $var_id ] : array(),
);
return $var;
}
public function get_group( $grp_id ) {
if ( empty( $this->variations[ $grp_id ] ) ) {
return false;
}
$grp = array(
'id' => $grp_id,
'group_name' => $this->groups[ $grp_id ],
'type' => isset( $this->variations[ $grp_id ]['opts']['type'] ) ? $this->variations[ $grp_id ]['opts']['type'] : $this->variations[ $grp_id ]['opts'],
'opts' => isset( $this->variations[ $grp_id ]['opts'] ) ? $this->variations[ $grp_id ]['opts'] : array(),
);
return $grp;
}
}