// retrieve cat infos before continuing (following updates are expensive) $cat_info = get_cat_info($_GET['cat_id']); if ($_POST['visible'] == 'true_sub') { set_cat_visible(array($_GET['cat_id']), true, true); } elseif ($cat_info['visible'] != get_boolean($_POST['visible'])) { set_cat_visible(array($_GET['cat_id']), $_POST['visible']); } // in case the use moves his album to the gallery root, we force // $_POST['parent'] from 0 to null to be compared with // $cat_info['id_uppercat'] if (empty($_POST['parent'])) { $_POST['parent'] = null; } // only move virtual albums if (empty($cat_info['dir']) and $cat_info['id_uppercat'] != $_POST['parent']) { move_categories(array($_GET['cat_id']), $_POST['parent']); } $_SESSION['page_infos'][] = l10n('Album updated successfully'); $redirect = true; } elseif (isset($_POST['set_random_representant'])) { set_random_representant(array($_GET['cat_id'])); $redirect = true; } elseif (isset($_POST['delete_representant'])) { $query = ' UPDATE ' . CATEGORIES_TABLE . ' SET representative_picture_id = NULL WHERE id = ' . $_GET['cat_id'] . ' ;'; pwg_query($query); $redirect = true; }
/** * API method * Moves a category * @param mixed[] $params * @option string|int[] category_id * @option int parent * @option string pwg_token */ function ws_categories_move($params, &$service) { global $page; if (get_pwg_token() != $params['pwg_token']) { return new PwgError(403, 'Invalid security token'); } if (!is_array($params['category_id'])) { $params['category_id'] = preg_split('/[\\s,;\\|]/', $params['category_id'], -1, PREG_SPLIT_NO_EMPTY); } $params['category_id'] = array_map('intval', $params['category_id']); $category_ids = array(); foreach ($params['category_id'] as $category_id) { if ($category_id > 0) { $category_ids[] = $category_id; } } if (count($category_ids) == 0) { return new PwgError(403, 'Invalid category_id input parameter, no category to move'); } // we can't move physical categories $categories_in_db = array(); $query = ' SELECT id, name, dir FROM ' . CATEGORIES_TABLE . ' WHERE id IN (' . implode(',', $category_ids) . ') ;'; $result = pwg_query($query); while ($row = pwg_db_fetch_assoc($result)) { $categories_in_db[$row['id']] = $row; // we break on error at first physical category detected if (!empty($row['dir'])) { $row['name'] = strip_tags(trigger_change('render_category_name', $row['name'], 'ws_categories_move')); return new PwgError(403, sprintf('Category %s (%u) is not a virtual category, you cannot move it', $row['name'], $row['id'])); } } if (count($categories_in_db) != count($category_ids)) { $unknown_category_ids = array_diff($category_ids, array_keys($categories_in_db)); return new PwgError(403, sprintf('Category %u does not exist', $unknown_category_ids[0])); } // does this parent exists? This check should be made in the // move_categories function, not here // 0 as parent means "move categories at gallery root" if (0 != $params['parent']) { $subcat_ids = get_subcat_ids(array($params['parent'])); if (count($subcat_ids) == 0) { return new PwgError(403, 'Unknown parent category id'); } } $page['infos'] = array(); $page['errors'] = array(); include_once PHPWG_ROOT_PATH . 'admin/include/functions.php'; move_categories($category_ids, $params['parent']); invalidate_user_cache(); if (count($page['errors']) != 0) { return new PwgError(403, implode('; ', $page['errors'])); } }
} include_once PHPWG_ROOT_PATH . 'admin/include/functions.php'; // +-----------------------------------------------------------------------+ // | Check Access and exit when user status is not ok | // +-----------------------------------------------------------------------+ check_status(ACCESS_ADMINISTRATOR); // +-----------------------------------------------------------------------+ // | functions | // +-----------------------------------------------------------------------+ // +-----------------------------------------------------------------------+ // | categories movement | // +-----------------------------------------------------------------------+ if (isset($_POST['submit'])) { if (count($_POST['selection']) > 0) { // TODO: tests move_categories($_POST['selection'], $_POST['parent']); } else { $page['errors'][] = l10n('Select at least one album'); } } // +-----------------------------------------------------------------------+ // | template initialization | // +-----------------------------------------------------------------------+ $template->set_filename('cat_move', 'cat_move.tpl'); $template->assign(array('U_HELP' => get_root_url() . 'admin/popuphelp.php?page=cat_move', 'F_ACTION' => get_root_url() . 'admin.php?page=cat_move')); // +-----------------------------------------------------------------------+ // | tabs | // +-----------------------------------------------------------------------+ $page['tab'] = 'move'; include PHPWG_ROOT_PATH . 'admin/include/albums_tab.inc.php'; // +-----------------------------------------------------------------------+