$group_ids .= 'c_' . $customers_statuses_array[$i]['id'] . '_group,';
         }
     }
 }
 $sql_data_array = array('sort_order' => $sort_order, 'group_ids' => $group_ids, 'products_sorting' => olc_db_prepare_input($_POST['products_sorting']), 'products_sorting2' => olc_db_prepare_input($_POST['products_sorting2']), 'categories_template' => olc_db_prepare_input($_POST['categorie_template']), 'listing_template' => olc_db_prepare_input($_POST['listing_template']));
 if ($action == 'insert_category') {
     $insert_sql_data = array('parent_id' => $current_category_id, 'date_added' => 'now()');
     $sql_data_array = olc_array_merge($sql_data_array, $insert_sql_data);
     olc_db_perform(TABLE_CATEGORIES, $sql_data_array);
     $categories_id = olc_db_insert_id();
 } elseif ($action == 'update_category') {
     $update_sql_data = array('last_modified' => 'now()');
     $sql_data_array = olc_array_merge($sql_data_array, $update_sql_data);
     olc_db_perform(TABLE_CATEGORIES, $sql_data_array, 'update', 'categories_id=' . $categories_id);
 }
 olc_set_groups($categories_id, $group_ids);
 $_GET['cID'] = $categories_id;
 $languages = olc_get_languages();
 for ($i = 0, $n = sizeof($languages); $i < $n; $i++) {
     $categories_name_array = $_POST['categories_name'];
     $language_id = $languages[$i]['id'];
     $sql_data_array = array('categories_name' => olc_db_prepare_input($categories_name_array[$language_id]));
     if (ALLOW_CATEGORY_DESCRIPTIONS == TRUE_STRING_S) {
         $categories_name = olc_db_prepare_input($_POST['categories_name'][$language_id]);
         $categories_heading_title = olc_db_prepare_input($_POST['categories_heading_title'][$language_id]);
         $categories_description = olc_db_prepare_input($_POST['categories_description_' . $language_id]);
         $categories_meta_title = olc_db_prepare_input($_POST['categories_meta_title'][$language_id]);
         if ($categories_meta_title == EMPTY_STRING) {
             $categories_meta_title = $categories_name;
         }
         $categories_meta_description = olc_db_prepare_input($_POST['categories_meta_description'][$language_id]);
 function insert_category($categories_data, $dest_category_id, $action = 'insert')
 {
     $categories_id = olc_db_prepare_input($categories_data['categories_id']);
     $sort_order = olc_db_prepare_input($categories_data['sort_order']);
     $categories_status = olc_db_prepare_input($categories_data['status']);
     $customers_statuses_array = olc_get_customers_statuses();
     $permission = array();
     for ($i = 0; $n = sizeof($customers_statuses_array), $i < $n; $i++) {
         if (isset($customers_statuses_array[$i]['id'])) {
             $permission[$customers_statuses_array[$i]['id']] = 0;
         }
     }
     if (isset($categories_data['groups'])) {
         foreach ($categories_data['groups'] as $dummy => $b) {
             $permission[$b] = 1;
         }
     }
     // build array
     if ($permission['all'] == 1) {
         $permission = array();
         end($customers_statuses_array);
         for ($i = 0; $n = key($customers_statuses_array), $i < $n + 1; $i++) {
             if (isset($customers_statuses_array[$i]['id'])) {
                 $permission[$customers_statuses_array[$i]['id']] = 1;
             }
         }
     }
     $permission_array = array();
     // set pointer to last key
     end($customers_statuses_array);
     for ($i = 0; $n = key($customers_statuses_array), $i < $n + 1; $i++) {
         if (isset($customers_statuses_array[$i]['id'])) {
             $permission_array = array_merge($permission_array, array('group_permission_' . $customers_statuses_array[$i]['id'] => $permission[$customers_statuses_array[$i]['id']]));
         }
     }
     $sql_data_array = array('sort_order' => $sort_order, 'categories_status' => $categories_status, 'products_sorting' => olc_db_prepare_input($categories_data['products_sorting']), 'products_sorting2' => olc_db_prepare_input($categories_data['products_sorting2']), 'categories_template' => olc_db_prepare_input($categories_data['categories_template']), 'listing_template' => olc_db_prepare_input($categories_data['listing_template']));
     $sql_data_array = array_merge($sql_data_array, $permission_array);
     if ($action == 'insert') {
         $insert_sql_data = array('parent_id' => $dest_category_id, 'date_added' => 'now()');
         $sql_data_array = olc_array_merge($sql_data_array, $insert_sql_data);
         olc_db_perform(TABLE_CATEGORIES, $sql_data_array);
         $categories_id = olc_db_insert_id();
     } elseif ($action == 'update') {
         $update_sql_data = array('last_modified' => 'now()');
         $sql_data_array = olc_array_merge($sql_data_array, $update_sql_data);
         olc_db_perform(TABLE_CATEGORIES, $sql_data_array, 'update', 'categories_id = \'' . $categories_id . '\'');
     }
     olc_set_groups($categories_id, $permission_array);
     $languages = olc_get_languages();
     foreach ($languages as $lang) {
         $categories_name_array = $categories_data['name'];
         $sql_data_array = array('categories_name' => olc_db_prepare_input($categories_data['categories_name'][$lang['id']]), 'categories_heading_title' => olc_db_prepare_input($categories_data['categories_heading_title'][$lang['id']]), 'categories_description' => olc_db_prepare_input($categories_data['categories_description'][$lang['id']]), 'categories_meta_title' => olc_db_prepare_input($categories_data['categories_meta_title'][$lang['id']]), 'categories_meta_description' => olc_db_prepare_input($categories_data['categories_meta_description'][$lang['id']]), 'categories_meta_keywords' => olc_db_prepare_input($categories_data['categories_meta_keywords'][$lang['id']]));
         if ($action == 'insert') {
             $insert_sql_data = array('categories_id' => $categories_id, 'language_id' => $lang['id']);
             $sql_data_array = olc_array_merge($sql_data_array, $insert_sql_data);
             olc_db_perform(TABLE_CATEGORIES_DESCRIPTION, $sql_data_array);
         } elseif ($action == 'update') {
             olc_db_perform(TABLE_CATEGORIES_DESCRIPTION, $sql_data_array, 'update', 'categories_id = \'' . $categories_id . '\' and language_id = \'' . $lang['id'] . '\'');
         }
     }
     if ($categories_image =& olc_try_upload('categories_image', DIR_FS_CATALOG_IMAGES . 'categories/')) {
         $cname_arr = explode('.', $categories_image->filename);
         $cnsuffix = array_pop($cname_arr);
         $categories_image_name = $categories_id . '.' . $cnsuffix;
         @unlink(DIR_FS_CATALOG_IMAGES . 'categories/' . $categories_image_name);
         rename(DIR_FS_CATALOG_IMAGES . 'categories/' . $categories_image->filename, DIR_FS_CATALOG_IMAGES . 'categories/' . $categories_image_name);
         olc_db_query("SQL_UPDATE " . TABLE_CATEGORIES . "\n\t\t\t\t\t\t    \t\t                 SET categories_image = '" . olc_db_input($categories_image_name) . "'\n\t\t\t\t\t\t    \t\t               WHERE categories_id = '" . (int) $categories_id . "'");
     }
     if ($categories_data['del_cat_pic'] == 'yes') {
         @unlink(DIR_FS_CATALOG_IMAGES . 'categories/' . $categories_data['categories_previous_image']);
         olc_db_query("SQL_UPDATE " . TABLE_CATEGORIES . "\n\t\t\t\t\t\t    \t\t                 SET categories_image = ''\n\t\t\t\t\t\t    \t\t               WHERE categories_id    = '" . (int) $categories_id . "'");
     }
 }
function olc_set_groups($categories_id, $shops)
{
    // get products in categorie
    $products_query = olc_db_query("SELECT products_id FROM " . TABLE_PRODUCTS_TO_CATEGORIES . "\n\twhere categories_id='" . $categories_id . APOS);
    while ($products = olc_db_fetch_array($products_query)) {
        olc_db_query(SQL_UPDATE . TABLE_PRODUCTS . " SET group_ids='" . $shops . "'\n\t\twhere products_id='" . $products['products_id'] . APOS);
    }
    // set status of categorie
    olc_db_query(SQL_UPDATE . TABLE_CATEGORIES . " set group_ids = '" . $shops . "'\n\twhere categories_id = '" . $categories_id . APOS);
    // look for deeper categories and go rekursiv
    $categories_query = olc_db_query("SELECT categories_id FROM " . TABLE_CATEGORIES . "\n\twhere parent_id='" . $categories_id . APOS);
    while ($categories = olc_db_fetch_array($categories_query)) {
        olc_set_groups($categories['categories_id'], $shops);
    }
}