function pico_updatecontent($mydirname, $content_id, $prev_auto_approval = true, $prev_isadminormod = false) { global $xoopsUser; $db =& Database::getInstance(); $auto_approval = $prev_auto_approval; $isadminormod = $prev_isadminormod; $requests = pico_get_requests4content($mydirname, $errors = array(), $auto_approval, $isadminormod, $content_id); $targetCategoryObj = $requests['categoryObj']; $ef_obj = $requests['ef_obj']; unset($requests['categoryObj'], $requests['ef_obj']); unset($requests['specify_created_time'], $requests['specify_modified_time'], $requests['specify_expiring_time'], $requests['created_time_formatted'], $requests['modified_time_formatted'], $requests['expiring_time_formatted']); $ignore_requests = $auto_approval ? array() : array('subject', 'htmlheader', 'body', 'visible', 'filters', 'show_in_navi', 'show_in_menu', 'allow_comment', 'use_cache', 'weight', 'tags', 'cat_id'); if (!$isadminormod) { // only adminormod can set htmlheader $requests['htmlheader_waiting'] = $requests['htmlheader']; $ignore_requests[] = 'htmlheader'; } $set = ''; foreach ($requests as $key => $val) { if (in_array($key, $ignore_requests)) { continue; } if ($key == 'vpath' && empty($val)) { $set .= "`{$key}`=null,"; } else { $set .= "`{$key}`='" . mysql_real_escape_string($val) . "',"; } } // some patches about times $time4sql = ''; if (empty($requests['modified_time'])) { $time4sql .= "modified_time=UNIX_TIMESTAMP(),"; } // backup the content, first pico_transact_backupcontent($mydirname, $content_id); // do update $uid = is_object($xoopsUser) ? $xoopsUser->getVar('uid') : 0; $sql = "UPDATE " . $db->prefix($mydirname . "_contents") . " SET modifier_uid='{$uid}', {$set} {$time4sql} modifier_ip='" . mysql_real_escape_string(@$_SERVER['REMOTE_ADDR']) . "',body_cached='',for_search='' WHERE content_id={$content_id}"; if (!$db->queryF($sql)) { die(_MD_PICO_ERR_DUPLICATEDVPATH . ' or ' . _MD_PICO_ERR_SQL . __LINE__ . __FUNCTION__); } pico_transact_reset_body_cached($mydirname, $content_id); // rebuild category tree pico_sync_cattree($mydirname); // update tags pico_sync_tags($mydirname); // update content_ef_sortables $ef_obj->syncContentEfSortables($content_id); return $content_id; }
continue; } $label = $myts->stripSlashesGPC($label); $db->query("DELETE FROM " . $db->prefix($mydirname . "_tags") . " WHERE label='" . mysql_real_escape_string($label) . "'"); // update tags field in contents table $result = $db->query("SELECT content_id,tags FROM " . $db->prefix($mydirname . "_contents WHERE tags LIKE '%" . mysql_real_escape_string($label) . "%'")); while (list($content_id, $tags) = $db->fetchRow($result)) { $tags_array = array_flip(explode(' ', $tags)); if (isset($tags_array[$label])) { unset($tags_array[$label]); $new_tags = implode(' ', array_flip($tags_array)); $db->query("UPDATE " . $db->prefix($mydirname . "_contents") . " SET tags='" . mysql_real_escape_string($new_tags) . "' WHERE content_id={$content_id}"); } } } pico_sync_tags($mydirname); redirect_header(XOOPS_URL . "/modules/{$mydirname}/admin/index.php?page=tags", 3, _MD_A_PICO_MSG_DELETED); exit; } // // form stage // // requests for form $pos = empty($_GET['pos']) ? 0 : intval($_GET['pos']); $num = empty($_GET['num']) ? 30 : intval($_GET['num']); $order = in_array(@$_GET['order'], $allowed_orders) ? $_GET['order'] : $allowed_orders[0]; // pre query list($hit) = $db->fetchRow($db->query("SELECT COUNT(*) FROM " . $db->prefix($mydirname . "_tags"))); // pagenav $pagenav = ''; $pagenav_obj = new XoopsPageNav($hit, $num, $pos, 'pos', "page=tags&num={$num}&order=" . urlencode($order));