Files
shopPRO/autoload/shop/class.ProductAttribute.php
2024-10-23 13:44:50 +02:00

119 lines
3.4 KiB
PHP

<?php
namespace shop;
class ProductAttribute implements \ArrayAccess
{
// sprawdź czy wartość atrybutu jest domyślna
static public function is_value_default( int $value_id )
{
global $mdb;
$cacheHandler = new \CacheHandler();
$cacheKey = "\shop\ProductAttribute::is_value_default:$value_id";
$objectData = $cacheHandler -> get( $cacheKey );
if ( !$objectData )
{
$is_default = $mdb -> get( 'pp_shop_attributes_values', 'is_default', [ 'id' => $value_id ] );
$cacheHandler -> set( $cacheKey, $is_default );
}
else
{
return unserialize( $objectData );
}
return $is_default;
}
public function offsetExists($offset) {
return isset($this->$offset);
}
public function offsetGet($offset) {
return $this->$offset;
}
public function offsetSet($offset , $value) {
$this->$offset = $value;
}
public function offsetUnset($offset) {
unset($this->$offset);
}
public function __construct( int $attribute_id, $lang_id = null )
{
global $mdb;
if ( !$lang_id )
$lang_id = \front\factory\Languages::default_language();
$result = $mdb -> get( 'pp_shop_attributes', '*', [ 'id' => $attribute_id ] );
if ( \S::is_array_fix( $result ) ) foreach ( $result as $key => $val )
$this -> $key = $val;
$results = $mdb -> select( 'pp_shop_attributes_langs', '*', [ 'AND' => [ 'attribute_id' => $attribute_id, 'lang_id' => $lang_id ] ] );
if ( \S::is_array_fix( $results ) ) foreach ( $results as $row )
$this -> language = $row;
}
// pobierz kolejność atrybutu
static public function get_attribute_order( int $attribute_id )
{
global $mdb;
$cacheHandler = new \CacheHandler();
$cacheKey = "\shop\ProductAttribute::get_attribute_order:$attribute_id";
$objectData = $cacheHandler -> get( $cacheKey );
if ( !$objectData )
{
$order = $mdb -> get( 'pp_shop_attributes', 'o', [ 'id' => $attribute_id ] );
$cacheHandler -> set( $cacheKey, $order );
}
else
{
return unserialize($objectData);
}
return $order;
}
// pobierz nazwę atrybutu za pomocą wartości
static public function getAttributeNameByValue( int $value_id, string $lang_id )
{
global $mdb;
return array_pop( $mdb -> query( 'SELECT name FROM pp_shop_attributes_langs AS psal INNER JOIN pp_shop_attributes_values AS psav ON psal.attribute_id = psav.attribute_id WHERE psav.id = ' . $value_id . ' AND lang_id = \'' . $lang_id . '\'' ) -> fetch( \PDO::FETCH_ASSOC ) );
}
// pobierz nazwę wartości
static public function get_value_name( int $value_id, string $lang_id )
{
global $mdb;
$cacheHandler = new \CacheHandler();
$cacheKey = "\shop\ProductAttribute::get_value_name:$value_id:$lang_id";
$objectData = $cacheHandler -> get( $cacheKey );
if ( !$objectData )
{
$value_name = $mdb -> get( 'pp_shop_attributes_values_langs', 'name', [ 'AND' => [ 'value_id' => (int)$value_id, 'lang_id' => $lang_id ] ] );
$cacheHandler -> set( $cacheKey, $value_name );
}
else
{
return unserialize($objectData);
}
return $value_name;
}
// pobierz nazwę atrybutu
static public function getAttributeName( int $attribute_id, string $lang_id )
{
global $mdb;
return $mdb -> get( 'pp_shop_attributes_langs', 'name', [ 'AND' => [ 'attribute_id' => (int)$attribute_id, 'lang_id' => $lang_id ] ] );
}
}