/** * Saves a category from HTTP POST data. * * @param string $event Type of category * @param string $table Affected database table */ function cat_event_category_save($event, $table_name) { extract(doSlash(array_map('assert_string', psa(array('id', 'name', 'description', 'old_name', 'parent', 'title'))))); $id = assert_int($id); $rawname = $name; $name = sanitizeForUrl($rawname); // Make sure the name is valid. if (!$name) { $message = array(gTxt($event . '_category_invalid', array('{name}' => $rawname)), E_ERROR); return cat_event_category_edit($event, $message); } // Don't allow rename to clobber an existing category. $existing_id = safe_field("id", 'txp_category', "name = '{$name}' AND type = '{$event}'"); if ($existing_id and $existing_id != $id) { $message = array(gTxt($event . '_category_already_exists', array('{name}' => $name)), E_ERROR); return cat_event_category_edit($event, $message); } // TODO: validate parent? $parent = $parent ? $parent : 'root'; $message = array(gTxt('category_save_failed'), E_ERROR); if (safe_update('txp_category', "name = '{$name}', parent = '{$parent}', title = '{$title}', description = '{$description}'", "id = {$id}") && safe_update('txp_category', "parent = '{$name}'", "parent = '{$old_name}' AND type = '{$event}'")) { rebuild_tree_full($event); if ($event == 'article') { if (safe_update('textpattern', "Category1 = '{$name}'", "Category1 = '{$old_name}'") && safe_update('textpattern', "Category2 = '{$name}'", "Category2 = '{$old_name}'")) { $message = gTxt($event . '_category_updated', array('{name}' => doStrip($name))); } } else { if (safe_update($table_name, "category = '{$name}'", "category = '{$old_name}'")) { $message = gTxt($event . '_category_updated', array('{name}' => doStrip($name))); } } } cat_category_list($message); }
function cat_event_category_save($event, $table_name) { global $txpcfg; extract(doSlash(psa(array('id', 'name', 'old_name', 'parent', 'title')))); $id = assert_int($id); $name = sanitizeForUrl($name); // make sure the name is valid if (!$name) { $message = array(gTxt($event . '_category_invalid', array('{name}' => $name)), E_ERROR); return cat_category_list($message); } // don't allow rename to clobber an existing category $existing_id = safe_field('id', 'txp_category', "name = '{$name}' and type = '{$event}'"); if ($existing_id and $existing_id != $id) { $message = array(gTxt($event . '_category_already_exists', array('{name}' => $name)), E_ERROR); return cat_category_list($message); } $parent = $parent ? $parent : 'root'; if (safe_update('txp_category', "name = '{$name}', parent = '{$parent}', title = '{$title}'", "id = {$id}")) { safe_update('txp_category', "parent = '{$name}'", "parent = '{$old_name}'"); } rebuild_tree_full($event); if ($event == 'article') { safe_update('textpattern', "Category1 = '{$name}'", "Category1 = '{$old_name}'"); safe_update('textpattern', "Category2 = '{$name}'", "Category2 = '{$old_name}'"); } else { safe_update($table_name, "category = '{$name}'", "category = '{$old_name}'"); } $message = gTxt($event . '_category_updated', array('{name}' => doStrip($name))); cat_category_list($message); }
function cat_event_category_save($evname, $table_name) { global $txpcfg; //Prevent non url chars on category names include_once txpath . '/lib/classTextile.php'; $textile = new Textile(); $in = psa(array('id', 'name', 'old_name', 'parent', 'title')); extract(doSlash($in)); $title = $textile->TextileThis($title, 1); $name = dumbDown($textile->TextileThis($name, 1)); $name = preg_replace("/[^[:alnum:]\\-_]/", "", str_replace(" ", "-", $name)); $parent = $parent ? $parent : 'root'; if (safe_update("txp_category", "name='{$name}',parent='{$parent}',title='{$title}'", "id={$id}")) { safe_update('txp_category', "parent='{$name}'", "parent='{$old_name}'"); } rebuild_tree('root', 1, $evname); if ($evname == 'article') { safe_update("textpattern", "Category1='{$name}'", "Category1 = '{$old_name}'"); safe_update("textpattern", "Category2='{$name}'", "Category2 = '{$old_name}'"); } else { safe_update($table_name, "category='{$name}'", "category='{$old_name}'"); } cat_category_list(messenger($evname . '_category', stripslashes($name), 'saved')); }