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); } }
function fn_delete_company($company_id) { if (empty($company_id)) { return false; } if (fn_allowed_for('MULTIVENDOR')) { // Do not delete vendor if there're any orders associated with this company if (db_get_field("SELECT COUNT(*) FROM ?:orders WHERE company_id = ?i", $company_id)) { fn_set_notification('W', __('warning'), __('unable_delete_vendor_orders_exists'), '', 'company_has_orders'); return false; } } fn_set_hook('delete_company_pre', $company_id); $result = db_query("DELETE FROM ?:companies WHERE company_id = ?i", $company_id); // deleting categories $cat_ids = db_get_fields("SELECT category_id FROM ?:categories WHERE company_id = ?i", $company_id); foreach ($cat_ids as $cat_id) { fn_delete_category($cat_id, false); } // deleting products $product_ids = db_get_fields("SELECT product_id FROM ?:products WHERE company_id = ?i", $company_id); foreach ($product_ids as $product_id) { fn_delete_product($product_id); } // deleting shipping $shipping_ids = db_get_fields("SELECT shipping_id FROM ?:shippings WHERE company_id = ?i", $company_id); foreach ($shipping_ids as $shipping_id) { fn_delete_shipping($shipping_id); } if (fn_allowed_for('ULTIMATE')) { // deleting layouts $layouts = Layout::instance($company_id)->getList(); foreach ($layouts as $layout_id => $layout) { Layout::instance($company_id)->delete($layout_id); } } $blocks = Block::instance($company_id)->getAllUnique(); foreach ($blocks as $block) { Block::instance($company_id)->remove($block['block_id']); } $product_tabs = ProductTabs::instance($company_id)->getList(); foreach ($product_tabs as $product_tab) { ProductTabs::instance($company_id)->delete($product_tab['tab_id'], true); } $_menus = Menu::getList(db_quote(" AND company_id = ?i", $company_id)); foreach ($_menus as $menu) { Menu::delete($menu['menu_id']); } db_query("DELETE FROM ?:company_descriptions WHERE company_id = ?i", $company_id); // deleting product_options $option_ids = db_get_fields("SELECT option_id FROM ?:product_options WHERE company_id = ?i", $company_id); foreach ($option_ids as $option_id) { fn_delete_product_option($option_id); } // deleting company admins and users if (Registry::get('settings.Stores.share_users') != 'Y') { $users_condition = db_quote(' OR company_id = ?i', $company_id); } else { $users_condition = ''; // Unassign users from deleted company db_query('UPDATE ?:users SET company_id = 0 WHERE company_id = ?i', $company_id); } $user_ids = db_get_fields("SELECT user_id FROM ?:users WHERE company_id = ?i AND user_type = ?s ?p", $company_id, 'V', $users_condition); foreach ($user_ids as $user_id) { fn_delete_user($user_id); } // deleting pages $page_ids = db_get_fields("SELECT page_id FROM ?:pages WHERE company_id = ?i", $company_id); foreach ($page_ids as $page_id) { fn_delete_page($page_id); } // deleting promotions $promotion_ids = db_get_fields("SELECT promotion_id FROM ?:promotions WHERE company_id = ?i", $company_id); fn_delete_promotions($promotion_ids); // deleting features $feature_ids = db_get_fields("SELECT feature_id FROM ?:product_features WHERE company_id = ?i", $company_id); foreach ($feature_ids as $feature_id) { fn_delete_feature($feature_id); } // deleting logos $types = fn_get_logo_types(); foreach ($types as $type => $data) { fn_delete_logo($type, $company_id); } $payment_ids = db_get_fields('SELECT payment_id FROM ?:payments WHERE company_id = ?i', $company_id); foreach ($payment_ids as $payment_id) { fn_delete_payment($payment_id); } // Delete sitemap sections and links $params = array('company_id' => $company_id); $section_ids = fn_get_sitemap_sections($params); fn_delete_sitemap_sections(array_keys($section_ids)); fn_set_hook('delete_company', $company_id, $result); return $result; }
function fn_google_export_remove_additional_google_categories() { $available_langs = array_keys(fn_google_export_available_categories()); foreach ($available_langs as $lang) { $feature_id = db_get_field("SELECT feature_id FROM ?:product_features_descriptions WHERE description = 'Google product category ({$lang})' AND lang_code = ?s", DEFAULT_LANGUAGE); if (!empty($feature_id)) { fn_delete_feature($feature_id); } } }
function fn_exim_1c_import_features($classifier_data, $company_id, $cml) { $settings_1c = Registry::get('addons.rus_exim_1c'); if (isset($classifier_data->{$cml}['properties']->{$cml}['property'])) { $features_1c = array(); $promo_text = trim($settings_1c['exim_1c_property_product']); $shipping_params = fn_exim_1c_get_shipping_params(); $features_list = fn_explode("\n", $settings_1c['exim_1c_features_list']); $deny_or_allow_list = $settings_1c['exim_1c_deny_or_allow']; foreach ($classifier_data->{$cml}['properties']->{$cml}['property'] as $_feature) { $_variants = array(); if ($deny_or_allow_list != 'not_used') { if ($deny_or_allow_list == 'do_not_import') { if (in_array(strval($_feature->{$cml}['name']), $features_list)) { continue; } } else { if (!in_array(strval($_feature->{$cml}['name']), $features_list)) { continue; } } } $feature_data = array(); $id = db_get_field("SELECT feature_id FROM ?:product_features WHERE external_id = ?s", strval($_feature->{$cml}['id'])); $new_feature = false; $feature_id = $id; if (empty($id)) { $new_feature = true; $feature_id = 0; } $feature_id = !empty($id) ? $id : 0; $feature_data = fn_exim_1c_get_feature(strval($_feature->{$cml}['name']), $feature_id, strval($_feature->{$cml}['id']), $company_id, $settings_1c); if (fn_exim_1c_feature_display_shipping_param(strval($_feature->{$cml}['name']), $shipping_params)) { if ($promo_text != strval($_feature->{$cml}['name'])) { $feature_id = fn_update_product_feature($feature_data, $feature_id); if ($new_feature) { db_query("INSERT INTO ?:ult_objects_sharing VALUES ({$company_id}, {$feature_id}, 'product_features')"); } } else { fn_delete_feature($feature_id); } } $count = 0; if (!empty($_feature->{$cml}['variants_values'])) { $_feature_data = $_feature->{$cml}['variants_values']->{$cml}['directory']; foreach ($_feature_data as $_variant) { $_variants[$count]['id'] = strval($_variant->{$cml}['id_value']); $_variants[$count]['value'] = strval($_variant->{$cml}['value']); $count++; } } $features_1c[strval($_feature->{$cml}['id'])]['id'] = $feature_id; $features_1c[strval($_feature->{$cml}['id'])]['name'] = strval($_feature->{$cml}['name']); if (!empty($_variants)) { $features_1c[strval($_feature->{$cml}['id'])]['variants'] = $_variants; } } if (Registry::isExist('rus_exim_1c.features_1c')) { $_features_1c = Registry::get('rus_exim_1c.features_1c'); $features_1c = fn_array_merge($_features_1c, $features_1c); Registry::set('rus_exim_1c.features_1c', $features_1c); } else { Registry::set('rus_exim_1c.features_1c', $features_1c); } } }
} if ($mode == 'update_status') { fn_tools_update_status($_REQUEST); if (!empty($_REQUEST['status']) && $_REQUEST['status'] == 'D') { $filter_ids = db_get_fields("SELECT filter_id FROM ?:product_filters WHERE feature_id = ?i AND status = 'A'", $_REQUEST['id']); if (!empty($filter_ids)) { db_query("UPDATE ?:product_filters SET status = 'D' WHERE filter_id IN (?n)", $filter_ids); $filter_names_array = db_get_fields("SELECT filter FROM ?:product_filter_descriptions WHERE filter_id IN (?n) AND lang_code = ?s", $filter_ids, DESCR_SL); fn_set_notification('W', __('warning'), __('text_product_filters_were_disabled', array('[url]' => fn_url('product_filters.manage'), '[filters_list]' => implode(', ', $filter_names_array)))); } } exit; } if ($mode == 'delete') { if (!empty($_REQUEST['feature_id'])) { fn_delete_feature($_REQUEST['feature_id']); } } return array(CONTROLLER_STATUS_OK, 'product_features.manage'); } if ($mode == 'update') { $selected_section = empty($_REQUEST['selected_section']) ? 'detailed' : $_REQUEST['selected_section']; $feature = fn_get_product_feature_data($_REQUEST['feature_id'], false, false, DESCR_SL); Registry::get('view')->assign('feature', $feature); list($group_features) = fn_get_product_features(array('feature_types' => ProductFeatures::GROUP), 0, DESCR_SL); Registry::get('view')->assign('group_features', $group_features); if (fn_allowed_for('ULTIMATE') && !Registry::get('runtime.company_id')) { Registry::get('view')->assign('picker_selected_companies', fn_ult_get_controller_shared_companies($_REQUEST['feature_id'])); } $params = array('feature_id' => $feature['feature_id'], 'feature_type' => $feature['feature_type'], 'get_images' => true, 'page' => !empty($_REQUEST['page']) ? $_REQUEST['page'] : 1, 'items_per_page' => !empty($_REQUEST['items_per_page']) ? $_REQUEST['items_per_page'] : Registry::get('settings.Appearance.admin_elements_per_page')); list($variants, $search) = fn_get_product_feature_variants($params, Registry::get('settings.Appearance.admin_elements_per_page'), DESCR_SL);
/** * 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; }
public static function importFeaturesFile($data_features, $import_params) { $cml = self::$cml; $features_import = array(); if (isset($data_features->{$cml}['property'])) { $promo_text = trim(self::$s_commerceml['exim_1c_property_product']); $shipping_params = self::getShippingFeatures(); $features_list = fn_explode("\n", self::$s_commerceml['exim_1c_features_list']); $deny_or_allow_list = self::$s_commerceml['exim_1c_deny_or_allow']; $company_id = self::$company_id; foreach ($data_features->{$cml}['property'] as $_feature) { $_variants = array(); $feature_data = array(); $feature_name = strval($_feature->{$cml}['name']); if ($deny_or_allow_list == 'do_not_import') { if (in_array($feature_name, $features_list)) { self::addMessageLog("Feature is not added (do not import): " . $feature_name); continue; } } elseif ($deny_or_allow_list == 'import_only') { if (!in_array($feature_name, $features_list)) { self::addMessageLog("Feature is not added (import only): " . $feature_name); continue; } } $feature_id = db_get_field("SELECT feature_id FROM ?:product_features WHERE external_id = ?s", strval($_feature->{$cml}['id'])); $new_feature = false; if (empty($feature_id)) { $new_feature = true; $feature_id = 0; } $feature_data = self::dataFeatures($feature_name, $feature_id, strval($_feature->{$cml}['type_field']), strval($_feature->{$cml}['id']), $import_params); if (self::displayFeatures($feature_name, $shipping_params)) { if ($promo_text != $feature_name) { $feature_id = fn_update_product_feature($feature_data, $feature_id); self::addMessageLog("Feature is added: " . $feature_name); if ($new_feature) { db_query("INSERT INTO ?:ult_objects_sharing VALUES ({$company_id}, {$feature_id}, 'product_features')"); } } else { fn_delete_feature($feature_id); $feature_id = 0; } } else { fn_delete_feature($feature_id); $feature_id = 0; } if (!empty($_feature->{$cml}['variants_values'])) { $_feature_data = $_feature->{$cml}['variants_values']->{$cml}['directory']; foreach ($_feature_data as $_variant) { $_variants[strval($_variant->{$cml}['id_value'])]['id'] = strval($_variant->{$cml}['id_value']); $_variants[strval($_variant->{$cml}['id_value'])]['value'] = strval($_variant->{$cml}['value']); } } $features_import[strval($_feature->{$cml}['id'])]['id'] = $feature_id; $features_import[strval($_feature->{$cml}['id'])]['name'] = $feature_name; $features_import[strval($_feature->{$cml}['id'])]['type'] = $feature_data['feature_type']; if (!empty($_variants)) { $features_import[strval($_feature->{$cml}['id'])]['variants'] = $_variants; } } } $feature_data = array(); if (self::$s_commerceml['exim_1c_used_brand'] == 'field_brand') { $company_id = self::$company_id; $feature_id = db_get_field("SELECT feature_id FROM ?:product_features WHERE external_id = ?s AND company_id = ?i", "brand1c", $company_id); $new_feature = false; if (empty($feature_id)) { $new_feature = true; $feature_id = 0; } $feature_data = self::dataFeatures($cml['brand'], $feature_id, ProductFeatures::EXTENDED, "brand1c", $import_params); $_feature_id = fn_update_product_feature($feature_data, $feature_id); self::addMessageLog("Feature brand is added"); if ($feature_id == 0) { db_query("INSERT INTO ?:ult_objects_sharing VALUES ({$company_id}, {$_feature_id}, 'product_features')"); } $features_import['brand1c']['id'] = !empty($feature_id) ? $feature_id : $_feature_id; $features_import['brand1c']['name'] = $cml['brand']; } if (!empty($features_import)) { if (!empty($features_commerceml)) { $_features_commerceml = self::$features_commerceml; self::$features_commerceml = fn_array_merge($_features_commerceml, $features_import); } else { self::$features_commerceml = $features_import; } } }
public function delete($id) { $data = array(); $status = Response::STATUS_NOT_FOUND; if (fn_delete_feature($id)) { $status = Response::STATUS_OK; $data['message'] = 'Ok'; } return array('status' => $status, 'data' => $data); }
public function delete($id) { $data = array(); $status = Response::STATUS_NOT_FOUND; if (fn_delete_feature($id)) { $status = Response::STATUS_NO_CONTENT; } return array('status' => $status, 'data' => $data); }