/** * xtc_set_groups() * * @param mixed $categories_id * @param mixed $permission_array * @return */ function xtc_set_groups($categories_id, $permission_array) { // get products in categorie $products_query = xtc_db_query("SELECT products_id FROM " . TABLE_PRODUCTS_TO_CATEGORIES . " where categories_id='" . $categories_id . "'"); while ($products = xtc_db_fetch_array($products_query)) { xtc_db_perform(TABLE_PRODUCTS, $permission_array, 'update', 'products_id = \'' . $products['products_id'] . '\''); } // set status of categorie xtc_db_perform(TABLE_CATEGORIES, $permission_array, 'update', 'categories_id = \'' . $categories_id . '\''); // look for deeper categories and go rekursiv $categories_query = xtc_db_query("SELECT categories_id FROM " . TABLE_CATEGORIES . " where parent_id='" . $categories_id . "'"); while ($categories = xtc_db_fetch_array($categories_query)) { xtc_set_groups($categories['categories_id'], $permission_array); } }
function insert_category($categories_data, $dest_category_id, $link, $action = 'insert') { $categories_id = xtc_db_prepare_input($categories_data['categories_id']); $sort_order = xtc_db_prepare_input($categories_data['sort_order']); $categories_status = xtc_db_prepare_input($categories_data['status']); $customers_statuses_array = xtc_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 (isset($permission['all']) && $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' => xtc_db_prepare_input($categories_data['products_sorting']), 'products_sorting2' => xtc_db_prepare_input($categories_data['products_sorting2']), 'categories_template' => xtc_db_prepare_input($categories_data['categories_template']), 'listing_template' => xtc_db_prepare_input($categories_data['listing_template'])); if (trim(ADD_CATEGORIES_FIELDS) != '') { $sql_data_array = array_merge($sql_data_array, $this->add_data_fields(ADD_CATEGORIES_FIELDS, $categories_data)); } $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 = xtc_array_merge($sql_data_array, $insert_sql_data); xtc_db_perform(TABLE_CATEGORIES, $sql_data_array); $categories_id = xtc_db_insert_id(); } elseif ($action == 'update') { $update_sql_data = array('last_modified' => 'now()'); $sql_data_array = xtc_array_merge($sql_data_array, $update_sql_data); xtc_db_perform(TABLE_CATEGORIES, $sql_data_array, 'update', 'categories_id = \'' . $categories_id . '\''); } xtc_set_groups($categories_id, $permission_array); $languages = xtc_get_languages(); foreach ($languages as $lang) { if (isset($categories_data['name'])) { $categories_name_array = $categories_data['name']; } $sql_data_array = array('categories_name' => xtc_db_prepare_input($categories_data['categories_name'][$lang['id']]), 'categories_heading_title' => xtc_db_prepare_input($categories_data['categories_heading_title'][$lang['id']]), 'categories_description' => xtc_db_prepare_input($categories_data['categories_description'][$lang['id']]), 'categories_meta_title' => xtc_db_prepare_input($categories_data['categories_meta_title'][$lang['id']]), 'categories_meta_description' => xtc_db_prepare_input($categories_data['categories_meta_description'][$lang['id']])); if (trim(ADD_CATEGORIES_DESCRIPTION_FIELDS) != '') { $sql_data_array = array_merge($sql_data_array, $this->add_data_fields(ADD_CATEGORIES_DESCRIPTION_FIELDS, $categories_data, $lang['id'])); } if ($action == 'insert') { $insert_sql_data = array('categories_id' => $categories_id, 'language_id' => $lang['id']); $sql_data_array = xtc_array_merge($sql_data_array, $insert_sql_data); xtc_db_perform(TABLE_CATEGORIES_DESCRIPTION, $sql_data_array); } elseif ($action == 'update') { //BOF - web28 - 2010-07-11 - BUGFIX no entry stored for previous deactivated languages $category_query = xtc_db_query("select * from " . TABLE_CATEGORIES_DESCRIPTION . " where language_id = '" . $lang['id'] . "' and categories_id = '" . $categories_id . "'"); if (xtc_db_num_rows($category_query) == 0) { xtc_db_perform(TABLE_CATEGORIES_DESCRIPTION, array('categories_id' => $categories_id, 'language_id' => $lang['id'])); } //EOF - web28 - 2010-07-11 - BUGFIX no entry stored for previous deactivated languages xtc_db_perform(TABLE_CATEGORIES_DESCRIPTION, $sql_data_array, 'update', 'categories_id = \'' . $categories_id . '\' and language_id = \'' . $lang['id'] . '\''); } } $accepted_categories_image_files_extensions = array("jpg", "jpeg", "jpe", "gif", "png", "bmp", "tiff", "tif", "bmp"); $accepted_categories_image_files_mime_types = array("image/jpeg", "image/gif", "image/png", "image/bmp"); if ($categories_image = xtc_try_upload('categories_image', DIR_FS_CATALOG_IMAGES . 'categories_org/', '777', $accepted_categories_image_files_extensions, $accepted_categories_image_files_mime_types)) { $cname_arr = explode('.', $categories_image->filename); $cnsuffix = array_pop($cname_arr); $categories_image_name = $categories_id . '.' . $cnsuffix; @unlink(DIR_FS_CATALOG_IMAGES . 'categories_org/' . $categories_image_name); rename(DIR_FS_CATALOG_IMAGES . 'categories_org/' . $categories_image->filename, DIR_FS_CATALOG_IMAGES . 'categories_org/' . $categories_image_name); xtc_db_query("UPDATE " . TABLE_CATEGORIES . "\n SET categories_image = '" . xtc_db_input($categories_image_name) . "'\n WHERE categories_id = '" . (int) $categories_id . "'"); require DIR_WS_INCLUDES . 'category_image.php'; } if (isset($categories_data['del_cat_pic']) && $categories_data['del_cat_pic'] == 'yes') { @unlink(DIR_FS_CATALOG_IMAGES . 'categories/' . $categories_data['categories_previous_image']); xtc_db_query("UPDATE " . TABLE_CATEGORIES . "\n SET categories_image = ''\n WHERE categories_id = '" . (int) $categories_id . "'"); } //web28 2012-11-30 new redirect if ($action == 'insert') { xtc_redirect(xtc_href_link(FILENAME_CATEGORIES, xtc_get_path($categories_id) . '&cID=' . $categories_id)); } }