function fn_delete_feature($feature_id)
{
    $feature_type = db_get_field("SELECT feature_type FROM ?:product_features WHERE feature_id = ?i", $feature_id);
    if ($feature_type == 'G') {
        $fids = db_get_fields("SELECT feature_id FROM ?:product_features WHERE parent_id = ?i", $feature_id);
        if (!empty($fids)) {
            foreach ($fids as $fid) {
                fn_delete_feature($fid);
            }
        }
    }
    db_query("DELETE FROM ?:product_features WHERE feature_id = ?i", $feature_id);
    db_query("DELETE FROM ?:product_features_descriptions WHERE feature_id = ?i", $feature_id);
    db_query("DELETE FROM ?:product_features_values WHERE feature_id = ?i", $feature_id);
    $v_ids = db_get_fields("SELECT variant_id FROM ?:product_feature_variants WHERE feature_id = ?i", $feature_id);
    // Delete variant images
    foreach ($v_ids as $v_id) {
        fn_delete_image_pairs($v_id, 'feature_variant');
    }
    db_query("DELETE FROM ?:product_feature_variants WHERE feature_id = ?i", $feature_id);
    db_query("DELETE FROM ?:product_feature_variant_descriptions WHERE variant_id IN (?n)", $v_ids);
    $filter_ids = db_get_fields("SELECT filter_id FROM ?:product_filters WHERE feature_id = ?i", $feature_id);
    foreach ($filter_ids as $_filter_id) {
        fn_delete_product_filter($_filter_id);
    }
}
Exemple #2
0
if (!defined('BOOTSTRAP')) {
    die('Access denied');
}
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if ($mode == 'update') {
        fn_update_product_filter($_REQUEST['filter_data'], $_REQUEST['filter_id'], DESCR_SL);
    }
    if ($mode == 'delete') {
        if (!empty($_REQUEST['filter_id'])) {
            if (fn_allowed_for('ULTIMATE')) {
                if (!fn_check_company_id('product_filters', 'filter_id', $_REQUEST['filter_id'])) {
                    fn_company_access_denied_notification();
                    return array(CONTROLLER_STATUS_REDIRECT, 'product_filters.manage');
                }
            }
            fn_delete_product_filter($_REQUEST['filter_id']);
        }
    }
    return array(CONTROLLER_STATUS_OK, 'product_filters.manage');
}
if ($mode == 'manage' || $mode == 'picker') {
    $params = $_REQUEST;
    $params['get_descriptions'] = true;
    list($filters, $search) = fn_get_product_filters($params, Registry::get('settings.Appearance.admin_elements_per_page'));
    Tygh::$app['view']->assign('filters', $filters);
    Tygh::$app['view']->assign('search', $search);
    if (fn_allowed_for('ULTIMATE:FREE') && count($filters) > FILTERS_LIMIT) {
        fn_set_notification('W', __('warning'), __('product_filters_free_limit'));
    }
    if ($mode == 'manage') {
        Tygh::$app['view']->assign('filter_fields', fn_get_product_filter_fields());
/**
 * Removes product feature
 *
 * @param int $feature_id Feature identifier
 * @return boolean Always true
 */
function fn_delete_feature($feature_id)
{
    $feature_deleted = true;
    if (fn_allowed_for('ULTIMATE')) {
        if (!fn_check_company_id('product_features', 'feature_id', $feature_id)) {
            fn_company_access_denied_notification();
            return false;
        }
    }
    /**
     * Adds additional actions before product feature deleting
     *
     * @param int $feature_id Feature identifier
     */
    fn_set_hook('delete_feature_pre', $feature_id);
    $feature_type = db_get_field("SELECT feature_type FROM ?:product_features WHERE feature_id = ?i", $feature_id);
    fn_set_hook('delete_product_feature', $feature_id, $feature_type);
    if ($feature_type == 'G') {
        $fids = db_get_fields("SELECT feature_id FROM ?:product_features WHERE parent_id = ?i", $feature_id);
        if (!empty($fids)) {
            foreach ($fids as $fid) {
                fn_delete_feature($fid);
            }
        }
    }
    $affected_rows = db_query("DELETE FROM ?:product_features WHERE feature_id = ?i", $feature_id);
    db_query("DELETE FROM ?:product_features_descriptions WHERE feature_id = ?i", $feature_id);
    if ($affected_rows == 0) {
        fn_set_notification('E', __('error'), __('object_not_found', array('[object]' => __('feature'))), '', '404');
        $feature_deleted = false;
    }
    $variant_ids = fn_delete_product_feature_variants($feature_id);
    if (!fn_allowed_for('ULTIMATE:FREE')) {
        $filter_ids = db_get_fields("SELECT filter_id FROM ?:product_filters WHERE feature_id = ?i", $feature_id);
        foreach ($filter_ids as $_filter_id) {
            fn_delete_product_filter($_filter_id);
        }
    }
    /**
     * Adds additional actions after product feature deleting
     *
     * @param int   $feature_id  Deleted feature identifier
     * @param array $variant_ids Deleted feature variants
     */
    fn_set_hook('delete_feature_post', $feature_id, $variant_ids);
    return $feature_deleted;
}
function fn_ult_delete_company(&$company_id)
{
    $filter_ids = db_get_fields("SELECT filter_id FROM ?:product_filters WHERE company_id = ?i", $company_id);
    foreach ($filter_ids as $filter_id) {
        fn_delete_product_filter($filter_id);
    }
    db_query('DELETE FROM ?:ult_objects_sharing WHERE share_company_id = ?i', $company_id);
    db_query('DELETE FROM ?:ult_product_descriptions WHERE company_id = ?i', $company_id);
    db_query('DELETE FROM ?:ult_product_prices WHERE company_id = ?i', $company_id);
    db_query('DELETE FROM ?:ult_product_option_variants WHERE company_id = ?i', $company_id);
    db_query('DELETE FROM ?:ult_language_values WHERE company_id = ?i', $company_id);
    Settings::instance()->removeVendorSettings($company_id);
    /**
     * Deletes additional data for ULT in add-ons
     *
     * @param integer $company_id Company ID
     */
    fn_set_hook('ult_delete_company', $company_id);
}