yf_shop user module

Shop module.

Fileplugins/shop/modules/yf_shop.class.php
Usemodule('shop'), URL ?object=shop
Extendsyf_module

Public properties

A site sets them in its config with $PROJECT_CONF['shop']['NAME'] = ...;

PropertyDefaultDescription
$ATTRIBUTES_CAT_ID 1
$COMPANY_INFO
array
['company_name' => 'Shop.com ', 'company_address' => 'Company Address 1', 'company_address2' => 'Company Address 2', 'company_phone' => 'Company Phone', 'company_website' => 'Company Website', 'company_email' => 'Company Email', ... (7 items)]
array (
  'company_name' => 'Shop.com ',
  'company_address' => 'Company Address 1',
  'company_address2' => 'Company Address 2',
  'company_phone' => 'Company Phone',
  'company_website' => 'Company Website',
  'company_email' => 'Company Email',
  'company_title' => 'Shop.com ',
)
forum settings (default values)
$CURRENCY
string
'$' Default currency
$FORCE_GROUP_PAY
Force
[] payment method for user group (user_group => pay_type)
$FORCE_GROUP_SHIP
Force
[] ship method for user group (user_group => ship_type)
$FORCE_PAY_METHOD
Force
0 payment method (Set to 0 to disable)
$FULL_IMG_SUFFIX
string
'_full' fullsize image suffix (underscore at the beginning required)
$IMG_PREFIX
string
'product_' Image prefix
$INLINE_REGISTER
Inline
true registration
$PROD_IMG_DIR
string
'shop/products/' Folder where product's images store
$SHOW_SIMILAR_PRICE
bool
true SHOW_SIMILAR_PRICE or not
$THIS_ITEM_OFTEN_BUY
bool
true THIS_ITEM_OFTEN_BUY or not
$THUMB_SUFFIX
string
'_small' Thumb image suffix (underscore at the beginning required)
$_b_fields
Billing
['b_first_name', 'b_last_name', 'b_email', 'b_phone', 'b_address', 'b_address2', ... (11 items)]
array (
  0 => 'b_first_name',
  1 => 'b_last_name',
  2 => 'b_email',
  3 => 'b_phone',
  4 => 'b_address',
  5 => 'b_address2',
  6 => 'b_zip_code',
  7 => 'b_city',
  8 => 'b_state',
  9 => 'b_country',
  10 => 'b_company',
)
info
$_comments_params ['return_action' => 'product_details', 'object_name' => 'shop', 'allow_guests_posts' => '1']
$_pay_method_params
Payment
[2 => ['LOGIN_ID' => '{CLIENT_ID}', 'TRANSACTION_KEY' => '{CLIENT_SECRET}', 'TEST_MODE' => 1, 'IN_PRODUCTION' => 0, 'DESCRIPTION' => 'Shop Description Here']] methods params
$_pay_types
Payment
[1 => 'Cash On Delivery', 2 => 'Authorize.Net', 3 => 'Bank Transfer', 4 => 'Cheque / Money Order'] types
$_required_fields
Required
['name', 'phone'] shipping and billing fields
$_s_fields
Shipping
['s_first_name', 's_last_name', 's_email', 's_phone', 's_address', 's_address2', ... (11 items)]
array (
  0 => 's_first_name',
  1 => 's_last_name',
  2 => 's_email',
  3 => 's_phone',
  4 => 's_address',
  5 => 's_address2',
  6 => 's_zip_code',
  7 => 's_city',
  8 => 's_state',
  9 => 's_country',
  10 => 's_company',
)
info
$_ship_type [1 => 'Free', 2 => 'Courier', 3 => 'FedEX', 4 => 'Post']
$_ship_types
Shipping
[1 => ['name' => 'Free', 'price' => 0], 2 => ['name' => 'Courier', 'price' => 1], 3 => ['name' => 'FedEX', 'price' => 5], 4 => ['name' => 'Post', 'price' => 1]] types
$_ship_types_name
Shipping
[] types names (creating automatically inside '_init') @conf_skip
$_statuses
@conf_skip
['pending' => 'pending', 'pending payment' => 'pending payment', 'proccessed' => 'proccessed', 'delivery' => 'delivery', 'shipped' => 'shipped']

Inherited properties

from yf_module: $CAPTCHA, $FORCE_STRIPSLASHES, $USER_GROUP, $USER_ID, $USE_BB_CODES, $USE_CAPTCHA, $USE_PREVIEW, $_boxes, $_poll_params, $_tags_params

Public methods 59

basket

public function basket($params = [])
    public function basket($params = [])
    {
        return _class('shop_basket', 'modules/shop/')->basket($params);
    }

basket_add

public function basket_add()
    public function basket_add()
    {
        return _class('shop_basket_add', 'modules/shop/')->basket_add();
    }

basket_clean

public function basket_clean()
    public function basket_clean()
    {
        return _class('shop_basket_clean', 'modules/shop/')->basket_clean();
    }

basket_main

public function basket_main($params = [])
    public function basket_main($params = [])
    {
        return _class('shop_basket_main', 'modules/shop/')->basket_main($params);
    }

category

public function category()
    public function category()
    {
        // TODO: show category contents
    }

manufacturer

public function manufacturer()
    public function manufacturer()
    {
        // TODO: show products by given manufacturer
    }

manufacturers

public function manufacturers()
    public function manufacturers()
    {
        // TODO: show list of manufacturers
    }

order

public function order()
    public function order()
    {
        return _class('shop_order', 'modules/shop/')->order();
    }

order_delete

public function order_delete($FORCE_DISPLAY_FORM = false)
    public function order_delete($FORCE_DISPLAY_FORM = false)
    {
        return _class('shop_order_delete', 'modules/shop/')->order_delete($FORCE_DISPLAY_FORM);
    }
public function order_validate_data($FORCE_DISPLAY_FORM = false)
    public function order_validate_data($FORCE_DISPLAY_FORM = false)
    {
        return _class('shop_order_validate_data', 'modules/shop/')->order_validate_data($FORCE_DISPLAY_FORM);
    }

order_view

public function order_view($FORCE_DISPLAY_FORM = false)
    public function order_view($FORCE_DISPLAY_FORM = false)
    {
        return _class('shop_order_view', 'modules/shop/')->order_view($FORCE_DISPLAY_FORM);
    }

orders

public function orders($FORCE_DISPLAY_FORM = false)
    public function orders($FORCE_DISPLAY_FORM = false)
    {
        return _class('shop_orders', 'modules/shop/')->orders($FORCE_DISPLAY_FORM);
    }
public function payment_callback()
    public function payment_callback()
    {
        return _class('shop_payment_callback', 'modules/shop/')->payment_callback();
    }
public function product_details()
    public function product_details()
    {
        return _class('shop_product_details', 'modules/shop/')->product_details();
    }

product_set

public function product_set()
    public function product_set()
    {
        // TODO: show details of given product set
    }

product_sets

public function product_sets()
    public function product_sets()
    {
        // TODO: show list of product set
    }

products_show

public function products_show($search = '', $str_search = '')
    public function products_show($search = '', $str_search = '')
    {
        return _class('shop_products_show', 'modules/shop/')->products_show($search, $str_search);
    }
public function products_similar_by_basket($id)
    public function products_similar_by_basket($id)
    {
        return _class('shop_products_similar_by_basket', 'modules/shop/')->products_similar_by_basket($id);
    }
public function products_similar_by_price($price, $id)
    public function products_similar_by_price($price, $id)
    {
        return _class('shop_products_similar_by_price', 'modules/shop/')->products_similar_by_price($price, $id);
    }

show

public function show()
    public function show()
    {
        return _class('shop_show', 'modules/shop/')->show();
    }

supplier

public function supplier()
    public function supplier()
    {
        // TODO: show products by given supplier
    }

suppliers

public function suppliers()
    public function suppliers()
    {
        // TODO: show list of suppliers
    }

Methods starting with _ hooks and helpers; not routable as page actions

_basket_api

public function _basket_api()
    public function _basket_api()
    {
        return _class('shop__basket_api', 'modules/shop/')->_basket_api();
    }

_basket_save

public function _basket_save()
    public function _basket_save()
    {
        return _class('shop__basket_save', 'modules/shop/')->_basket_save();
    }

_basket_side

public function _basket_side()
    public function _basket_side()
    {
        return _class('shop__basket_side', 'modules/shop/')->_basket_side();
    }

_box

public function _box($name = '', $selected = '')
    public function _box($name = '', $selected = '')
    {
        return _class('shop__box', 'modules/shop/')->_box($name, $selected);
    }
public function _categories_show()
    public function _categories_show()
    {
        return _class('shop__categories_show', 'modules/shop/')->_categories_show();
    }

_format_price

public function _format_price($price = 0)
    public function _format_price($price = 0)
    {
        return _class('shop__format_price', 'modules/shop/')->_format_price($price);
    }
public function _generate_image_name($product_id, $image_id, $media = false)
    public function _generate_image_name($product_id, $image_id, $media = false)
    {
        $dirs = sprintf('%06s', $product_id);
        $dir2 = substr($dirs, -3, 3);
        $dir1 = substr($dirs, -6, 3);
        $m_path = $dir1 . '/' . $dir2 . '/';

        $media_host = defined('MEDIA_HOST') ? MEDIA_HOST : false;
        $base_url = WEB_PATH;
        if ( ! empty($media_host) && $media) {
            $base_url = '//' . $media_host . '/';
        }
        $image = [
            'big' => $base_url . 'uploads/shop/products/' . $m_path . 'product_' . $product_id . '_' . $image_id . '_big.jpg',
            'thumb' => $base_url . 'uploads/shop/products/' . $m_path . 'product_' . $product_id . '_' . $image_id . '_thumb.jpg',
            'default' => $base_url . 'uploads/shop/products/' . $m_path . 'product_' . $product_id . '_' . $image_id . '.jpg',
        ];
        return $image;
    }
public function _get_children_cat($id)
    public function _get_children_cat($id)
    {
        return _class('shop__get_children_cat', 'modules/shop/')->_get_children_cat($id);
    }
public function _get_group_prices($product_ids = [])
    public function _get_group_prices($product_ids = [])
    {
        return _class('shop__get_group_prices', 'modules/shop/')->_get_group_prices($product_ids);
    }

_get_images

public function _get_images($product_id)
    public function _get_images($product_id)
    {
        $A = db()->get_all('SELECT id FROM ' . db('shop_product_images') . ' WHERE product_id=' . (int) $product_id . ' AND active=1 ORDER BY is_default DESC');
        $d = sprintf('%09s', $product_id);
        $images = null;
        foreach ((array) $A as $img) {
            $replace = [
                '{subdir2}' => substr($d, -6, 3),
                '{subdir3}' => substr($d, -3, 3),
                '{product_id}' => $product_id,
                '{image_id}' => $img['id'],
            ];
            $images[] = [
                'big' => str_replace(array_keys($replace), array_values($replace), 'uploads/shop/products/{subdir2}/{subdir3}/product_{product_id}_{image_id}_big.jpg'),
                'thumb' => str_replace(array_keys($replace), array_values($replace), 'uploads/shop/products/{subdir2}/{subdir3}/product_{product_id}_{image_id}_thumb.jpg'),
                'id' => $img['id'],
            ];
        }
        return $images;
    }
public function _get_select_attributes($atts = [])
    public function _get_select_attributes($atts = [])
    {
        return _class('shop__get_select_attributes', 'modules/shop/')->_get_select_attributes($atts);
    }

_hidden_field

public function _hidden_field($name = '', $value = '')
    public function _hidden_field($name = '', $value = '')
    {
        return _class('shop__hidden_field', 'modules/shop/')->_hidden_field($name, $value);
    }
public function _hook_meta_tags($meta)
    public function _hook_meta_tags($meta)
    {
        return _class('shop__hook_meta_tags', 'modules/shop/')->_hook_meta_tags($meta);
    }
public function _hook_settings()

Hook to provide settigns from shop.

    public function _hook_settings()
    {
        return [
            ['yes_no_box', 'shop__sms_order_send', 'Send SMS to user when new order arrives'],
            ['yes_no_box', 'shop__sms_order_copy', 'Send SMS copy when new order arrives'],
            ['text', 		'shop__sms_order_copy_to', 'Phone numbers to send SMS copy when new order arrives'],
            ['yes_no_box', 'shop__emails_all_send', 'Send emails'],
            ['yes_no_box', 'shop__emails_all_copy', 'Send email copies'],
            ['text', 		'shop__emails_all_copy_to', 'Emails to copy all userland emails'],
            ['text', 		'shop__currency', 'Currency to use in userland'],
        ];
    }

_init

public function _init()
    public function _init()
    {
        $shop = module('shop');
        $shop->_shop_cats = _class('cats')->_get_items_names('shop_cats');
        $shop->_shop_cats_all = _class('cats')->_get_items_array('shop_cats');
        $shop->_shop_cats_for_select = _class('cats')->_prepare_for_box('shop_cats');

        $sql_man = 'SELECT * FROM ' . db('shop_manufacturers') . ' ORDER BY name ASC';
        $shop->_manufacturer = db()->query_fetch_all($sql_man);

        $shop->_man_for_select['none'] = '--NONE--';
        foreach ((array) $shop->_manufacturer as $k => $v) {
            $shop->_man_for_select[$v['url']] = $v['name'];
        }
        $shop->_man_id = 'none';
        $shop->products_img_dir = INCLUDE_PATH . SITE_UPLOADS_DIR . $shop->PROD_IMG_DIR;
        $shop->products_img_webdir = WEB_PATH . SITE_UPLOADS_DIR . $shop->PROD_IMG_DIR;
        if ( ! file_exists($shop->products_img_dir)) {
            _mkdir_m($shop->products_img_dir);
        }

        $shop->_boxes = [
            'ship_type' => 'select_box("ship_type", $shop->_ship_types_names, $selected, false, 2, "", false)',
            'pay_type' => 'radio_box("pay_type", $shop->_pay_types, $selected, 1, 2, "", false)',
        ];

        $shop->_ship_types_names = [];
        foreach ((array) $shop->_ship_types as $_id => $_info) {
            $_price_text = ' (' . ($_info['price'] < 0 ? '-' : '+') . $shop->_format_price(abs($_info['price'])) . ')';
            $shop->_ship_types_names[$_id] = $_info['name'] . ($_info['price'] ? $_price_text : '');
        }

        // Override pay type for group
        $force_group_pay_type = $shop->FORCE_GROUP_PAY[main()->USER_GROUP];
        if ($force_group_pay_type/* && isset($shop->_pay_types[$force_group_pay_type])*/) {
            $shop->FORCE_PAY_METHOD = $force_group_pay_type;
        }
    }
public function _manufacturer_show()
    public function _manufacturer_show()
    {
        // TODO: redo current manufacturers
    }

_order_create

public function _order_create()
    public function _order_create()
    {
        return _class('shop__order_create', 'modules/shop/')->_order_create();
    }
public function _order_pay_authorize_net($order_info = [], $params = [])
    public function _order_pay_authorize_net($order_info = [], $params = [])
    {
        return _class('shop__order_pay_authorize_net', 'modules/shop/')->_order_pay_authorize_net($order_info, $params);
    }
public function _order_step_delivery($FORCE_DISPLAY_FORM = false)
    public function _order_step_delivery($FORCE_DISPLAY_FORM = false)
    {
        return _class('shop__order_step_delivery', 'modules/shop/')->_order_step_delivery($FORCE_DISPLAY_FORM);
    }
public function _order_step_do_payment($FORCE_DISPLAY_FORM = false)
    public function _order_step_do_payment($FORCE_DISPLAY_FORM = false)
    {
        return _class('shop__order_step_do_payment', 'modules/shop/')->_order_step_do_payment($FORCE_DISPLAY_FORM);
    }
public function _order_step_finish($FORCE_DISPLAY_FORM = false)
    public function _order_step_finish($FORCE_DISPLAY_FORM = false)
    {
        return _class('shop__order_step_finish', 'modules/shop/')->_order_step_finish($FORCE_DISPLAY_FORM);
    }
public function _order_step_select_payment($FORCE_DISPLAY_FORM = false)
    public function _order_step_select_payment($FORCE_DISPLAY_FORM = false)
    {
        return _class('shop__order_step_select_payment', 'modules/shop/')->_order_step_select_payment($FORCE_DISPLAY_FORM);
    }
public function _order_step_start($FORCE_DISPLAY_FORM = false)
    public function _order_step_start($FORCE_DISPLAY_FORM = false)
    {
        return _class('shop__order_step_start', 'modules/shop/')->_order_step_start($FORCE_DISPLAY_FORM);
    }
public function _order_validate_delivery()
    public function _order_validate_delivery()
    {
        return _class('shop__order_validate_delivery', 'modules/shop/')->_order_validate_delivery();
    }
public function _order_validate_do_payment()
    public function _order_validate_do_payment()
    {
        return _class('shop__order_validate_do_payment', 'modules/shop/')->_order_validate_do_payment();
    }
public function _order_validate_select_payment()
    public function _order_validate_select_payment()
    {
        return _class('shop__order_validate_select_payment', 'modules/shop/')->_order_validate_select_payment();
    }
public function _product_get_price($product_info = [])
    public function _product_get_price($product_info = [])
    {
        return _class('shop__product_get_price', 'modules/shop/')->_product_get_price($product_info);
    }
public function _product_id_url($product_info = [])
    public function _product_id_url($product_info = [])
    {
        return _class('shop__product_id_url', 'modules/shop/')->_product_id_url($product_info);
    }
public function _products_bestsellers()
    public function _products_bestsellers()
    {
        return _class('shop__products_bestsellers', 'modules/shop/')->_products_bestsellers();
    }
public function _products_get_attributes($products_ids = [])
    public function _products_get_attributes($products_ids = [])
    {
        return _class('shop__products_get_attributes', 'modules/shop/')->_products_get_attributes($products_ids);
    }
public function _products_last_viewed()
    public function _products_last_viewed()
    {
        return _class('shop__products_last_viewed', 'modules/shop/')->_products_last_viewed();
    }
public function _search_form_short()
    public function _search_form_short()
    {
        return _class('shop__search_form_short', 'modules/shop/')->_search_form_short();
    }
public function _site_map_items($SITE_MAP_OBJ = false)
    public function _site_map_items($SITE_MAP_OBJ = false)
    {
        return _class('shop__site_map_items', 'modules/shop/')->_site_map_items($SITE_MAP_OBJ);
    }

_site_title

public function _site_title($title)
    public function _site_title($title)
    {
        return _class('shop__site_title', 'modules/shop/')->_site_title($title);
    }

Inherited methods

from yf_module: __call(), _captcha_block(), _captcha_check(), _captcha_load_code(), _comment_delete_allowed(), _comment_edit_allowed(), _comment_is_allowed(), _display_submit_buttons(), _format_text(), _get_num_comments(), _poll(), _prefetch_rate_infos(), _prepare_preview(), _show_rate_box(), _show_tags(), _view_comments(), add_comment(), captcha_image(), create_poll(), delete_comment(), delete_poll(), display_preview(), edit_comment(), edit_tag(), tag(), view_poll_results()