public static function save($id = null, $data) { global $lC_Database, $lC_Language; $category_id = ''; $error = false; $lC_Database->startTransaction(); if (is_numeric($id)) { $Qcat = $lC_Database->query('update :table_categories set categories_image = :categories_image, parent_id = :parent_id, sort_order = :sort_order, categories_mode = :categories_mode, categories_link_target = :categories_link_target, categories_custom_url = :categories_custom_url, categories_status = :categories_status, categories_visibility_nav = :categories_visibility_nav, categories_visibility_box = :categories_visibility_box, last_modified = now() where categories_id = :categories_id'); $Qcat->bindInt(':categories_id', $id); } else { $Qcat = $lC_Database->query('insert into :table_categories (categories_image, parent_id, sort_order, categories_mode, categories_link_target, categories_custom_url, categories_status, categories_visibility_nav, categories_visibility_box, date_added) values (:categories_image, :parent_id, :sort_order, :categories_mode, :categories_link_target, :categories_custom_url, :categories_status, :categories_visibility_nav, :categories_visibility_box, now())'); $Qcat->bindInt(':parent_id', $data['parent_id']); $Qcat->bindValue(':date_added', $data['date_added']); } $Qcat->bindTable(':table_categories', TABLE_CATEGORIES); $Qcat->bindValue(':categories_image', $data['image']); $Qcat->bindInt(':parent_id', $data['parent_id']); $Qcat->bindInt(':sort_order', $data['sort_order']); $Qcat->bindValue(':categories_mode', $data['mode']); $Qcat->bindInt(':categories_link_target', $data['link_target']); $Qcat->bindValue(':categories_custom_url', $data['custom_url']); $Qcat->bindInt(':categories_status', $data['status']); $Qcat->bindInt(':categories_visibility_nav', $data['nav']); $Qcat->bindInt(':categories_visibility_box', $data['box']); $Qcat->setLogging($_SESSION['module'], $id); $Qcat->execute(); if (!$lC_Database->isError()) { $category_id = is_numeric($id) ? $id : $lC_Database->nextID(); $lC_CategoryTree = new lC_CategoryTree_Admin(); $cPath = $data['parent_id'] != 0 ? $lC_CategoryTree->getcPath($data['parent_id']) . '_' . $category_id : $category_id; foreach ($lC_Language->getAll() as $l) { if (is_numeric($id)) { $Qcd = $lC_Database->query('update :table_categories_description set categories_name = :categories_name, categories_menu_name = :categories_menu_name, categories_blurb = :categories_blurb, categories_description = :categories_description, categories_tags = :categories_tags where categories_id = :categories_id and language_id = :language_id'); } else { $Qcd = $lC_Database->query('insert into :table_categories_description (categories_id, language_id, categories_name, categories_menu_name, categories_blurb, categories_description, categories_tags) values (:categories_id, :language_id, :categories_name, :categories_menu_name, :categories_blurb, :categories_description, :categories_tags)'); } $Qcd->bindTable(':table_categories_description', TABLE_CATEGORIES_DESCRIPTION); $Qcd->bindInt(':categories_id', $category_id); $Qcd->bindInt(':language_id', $l['id']); $Qcd->bindValue(':categories_name', $data['name'][$l['id']]); $Qcd->bindValue(':categories_menu_name', $data['menu_name'][$l['id']]); $Qcd->bindValue(':categories_blurb', $data['blurb'][$l['id']]); $Qcd->bindValue(':categories_description', $data['description'][$l['id']]); $Qcd->bindValue(':categories_tags', $data['tags'][$l['id']]); $Qcd->setLogging($_SESSION['module'], $category_id); $Qcd->execute(); if ($lC_Database->isError()) { $error = true; break; } // added for permalink if (!empty($data['permalink'][$l['id']])) { if ($data['permalink'][$l['id']] != 'no-permalink') { if (is_numeric($id) && lC_Categories_Admin::validatePermalink(array($data['permalink'][$l['id']]), $category_id, 1, $l['id']) == 1) { $Qpl = $lC_Database->query('update :table_permalinks set permalink = :permalink where item_id = :item_id and type = :type and language_id = :language_id'); } else { $Qpl = $lC_Database->query('insert into :table_permalinks (item_id, language_id, type, query, permalink) values (:item_id, :language_id, :type, :query, :permalink)'); } $Qpl->bindTable(':table_permalinks', TABLE_PERMALINKS); $Qpl->bindInt(':item_id', $category_id); $Qpl->bindInt(':language_id', $l['id']); $Qpl->bindInt(':type', 1); $Qpl->bindValue(':query', 'cPath=' . $cPath); $Qpl->bindValue(':permalink', $data['permalink'][$l['id']]); $Qpl->execute(); if ($lC_Database->isError()) { $error = true; break; } } else { $Qpl = $lC_Database->query('delete from :table_permalinks where item_id = :item_id and type = :type and language_id = :language_id'); $Qpl->bindTable(':table_permalinks', TABLE_PERMALINKS); $Qpl->bindInt(':item_id', $category_id); $Qpl->bindInt(':language_id', $l['id']); $Qpl->bindInt(':type', 1); $Qpl->execute(); } } } } if ($error === false) { $lC_Database->commitTransaction(); lC_Cache::clear('categories'); lC_Cache::clear('category_tree'); lC_Cache::clear('also_purchased'); return $category_id; // used for the save_close buttons } $lC_Database->rollbackTransaction(); return false; }
public static function validatePermalink() { $data = str_replace('%5B', '[', $_GET); $data = str_replace('%5D', ']', $data); $validated = lC_Categories_Admin::validatePermalink($data['categories_permalink'], $data['cid'], $data['type']); echo json_encode($validated); }