Update of /cvsroot/php-blog/serendipity
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv8018
Modified Files:
serendipity_admin_category.inc.php
Log Message:
Subselects don't work in MySQL < 5
(see mailinglist)
Index: serendipity_admin_category.inc.php
===================================================================
RCS file: /cvsroot/php-blog/serendipity/serendipity_admin_category.inc.php,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- serendipity_admin_category.inc.php 15 Jul 2004 03:15:02 -0000 1.18
+++ serendipity_admin_category.inc.php 15 Jul 2004 07:34:02 -0000 1.19
@@ -18,10 +18,12 @@
if ($cat_to_edit == 0) {
if ($parentid != 0) {
- // TODO: This doesn't seem to work as expected, serendipity_rebuildCategoryTree(); is still needed!
+ // TODO: This doesn't seem to work as expected, serendipity_rebuildCategoryTree(); is still needed! Only activate this optimization function when it's really working :)
// TODO: This works if only one subcategory exists. Otherwise, the first query will return an array.
+ /*
$res = serendipity_db_query("SELECT category_right FROM {$serendipity['dbPrefix']}category WHERE parentid={$parentid}");
serendipity_db_query("UPDATE {$serendipity['dbPrefix']}category SET category_left=category_left+2, category_right=category_right+2 WHERE category_right>{$res}");
+ */
}
$query = "INSERT INTO {$serendipity['dbPrefix']}category (category_name, category_description, authorid, category_icon, parentid) values ('$name', '$desc', $authorid, '$icon', $parentid)";
} else {
@@ -47,24 +49,26 @@
if ($cat_to_edit != 0) {
$remaining_cat = (int)$_POST['serendipity']['cat']['remaining_catid'];
$category_range = implode(' AND ', serendipity_fetchCategoryRange($cat_to_edit));
- #TODO: Does the revised query work on MySQL? Does it do the same thing?
- /*$query = "UPDATE {$serendipity['dbPrefix']}entries e,
- {$serendipity['dbPrefix']}entrycat ec,
- {$serendipity['dbPrefix']}category c
- SET ec.categoryid={$remaining_cat}
- WHERE e.id = ec.entryid
- AND c.categoryid = ec.categoryid
- AND c.category_left BETWEEN {$category_range}
- {$admin_category}";*/
- $query = "UPDATE {$serendipity['dbPrefix']}entrycat
- SET categoryid={$remaining_cat} WHERE entryid IN
- (
- SELECT DISTINCT(e.id) FROM {$serendipity['dbPrefix']}entries e,
- {$serendipity['dbPrefix']}category c,
- {$serendipity['dbPrefix']}entrycat ec
- WHERE e.id=ec.entryid AND c.categoryid=ec.categoryid
- AND c.category_left BETWEEN {$category_range} {$admin_category}
- )";
+ if (strtolower($serendipity['dbType']) == 'postgres') {
+ $query = "UPDATE {$serendipity['dbPrefix']}entrycat
+ SET categoryid={$remaining_cat} WHERE entryid IN
+ (
+ SELECT DISTINCT(e.id) FROM {$serendipity['dbPrefix']}entries e,
+ {$serendipity['dbPrefix']}category c,
+ {$serendipity['dbPrefix']}entrycat ec
+ WHERE e.id=ec.entryid AND c.categoryid=ec.categoryid
+ AND c.category_left BETWEEN {$category_range} {$admin_category}
+ )";
+ } else {
+ $query = "UPDATE {$serendipity['dbPrefix']}entries e,
+ {$serendipity['dbPrefix']}entrycat ec,
+ {$serendipity['dbPrefix']}category c
+ SET ec.categoryid={$remaining_cat}
+ WHERE e.id = ec.entryid
+ AND c.categoryid = ec.categoryid
+ AND c.category_left BETWEEN {$category_range}
+ {$admin_category}";
+ }
if ( serendipity_db_query($query) ) {
if ( serendipity_db_query("DELETE FROM {$serendipity['dbPrefix']}category WHERE category_left BETWEEN {$category_range} {$admin_category}") ) {
$msg = $remaining_cat ? sprintf(CATEGORY_DELETED_ARTICLES_MOVED, $cat_to_edit, $remaining_cat) : sprintf(CATEGORY_DELETED, $cat_to_edit);
|