if(empty($id) || empty($value) || !is_numeric($value)) { $response['error'] = -1; $response['message'] = _t('잘못된 접근입니다.'); } else { if (!isLoggedIn()) { $response['error'] = 1; $response['message'] = _t('로그인 한 사람만 이 기능을 사용할 수 있습니다.'); } else { $ids = explode(',', $id); foreach($ids as $id) { if(empty($id)) continue; $feedItem = FeedItem::getAll($id); $feed = Feed::getAll($feedItem['feed']); if(isAdmin() || $feed['owner'] == getLoggedId()) { Category::setItemCategory($id, $value); Category::rebuildCount($value); Category::rebuildCount($feedItem['category']); } else { $response['error'] = -1; $response['message'] = _t('잘못된 접근입니다.'); break; } } } } func::printRespond($response); ?>
function buildCategoryRelations($itemId, $tags, $oldtags = null) { global $database, $db; if(empty($tags) || !isset($tags) || !isset($itemId) || !Validator::getBool($itemId)) return false; $tagChunk = array(); foreach ($tags as $tag) { if (!Validator::is_empty($tag)) { $tag = trim($tag); array_push($tagChunk, "'$tag'"); } } $tagString = implode(',', $tagChunk); if(!$db->query('SELECT id FROM '.$database['prefix'].'Tags WHERE name IN ('.$tagString.')')) return false; $tagIds = array(); while($taglist = $db->fetchRow()) { array_push($tagIds, $taglist[0]); } if(!$db->query('SELECT item FROM '.$database['prefix'].'TagRelations WHERE tag IN ('. implode(',', $tagIds) .') AND (type = "category")')) return false; $categoryIds = array(); while ($categorylist = $db->fetchRow()) { array_push($categoryIds, $categorylist[0]); } $db->free(); $relationList = array(); foreach ($categoryIds as $categoryId) { array_push($relationList, "('$itemId', '$categoryId', UNIX_TIMESTAMP(), 'n')"); } $relationStr = implode(',', $relationList); // ('itemId','tagId'),('itemId','tagId')... $db->execute("INSERT IGNORE INTO {$database['prefix']}CategoryRelations (item, category, linked, custom) VALUES $relationStr"); foreach($categoryIds as $categoryId) { Category::rebuildCount($categoryId); } if (!isset($oldtags) || empty($oldtags)) return true; $deletedTags = array_diff($oldtags, $tags); if (count($deletedTags) > 0) { $delTags = array(); $dTagStr = '\'' . implode('\' , \'', $deletedTags) . '\''; if (!$db->query("SELECT id FROM {$database['prefix']}Tags WHERE name IN ($dTagStr)")) return false; while ($dlist = $db->fetchRow()) { array_push($delTags, $dlist[0]); } $db->free(); $delTagStr = implode(', ', $delTags); if(!$db->query('SELECT item FROM '.$database['prefix'].'TagRelations WHERE tag IN ('.$delTagStr.') AND (type = "category")')) return false; $delCategories = array(); while ($dlist = $db->fetchRow()) { array_push($delCategories, $dlist[0]); } $db->free(); $delCategoryStr = implode(', ', $delCategories); $db->execute("DELETE FROM {$database['prefix']}CategoryRelations WHERE item='$itemId' AND category IN ($delCategoryStr)"); foreach($delCategories as $categoryId) { Category::rebuildCount($categoryId); } } }
} if ($db->exists("DESC {$prefix}FeedItems `category`")) { // ncloud 0.1.8 $result = $db->queryAll("SELECT * FROM {$prefix}FeedItems WHERE `category` != 0", MYSQL_ASSOC); foreach($result as $item) { $db->execute("INSERT INTO {$prefix}CategoryRelations (`item`,`category`,`linked`,`custom`) VALUES ({$item['id']},{$item['category']},UNIX_TIMESTAMP(),'y')"); } $db->execute("ALTER TABLE {$prefix}FeedItems DROP `category`"); requireComponent('Bloglounge.Data.Category'); $result = Category::getList(); foreach($result as $item) { Category::rebuildCount($item); } array_push($checkups, array('success', _t('피드아이템 테이블에 카데고리필드를 삭제했습니다.'))); } if(!$db->exists("SHOW INDEX FROM {$prefix}CategoryRelations WHERE `Key_name` = 'item'")) { $db->execute("ALTER TABLE {$prefix}CategoryRelations ADD INDEX ( `item` )"); array_push($checkups, array('success', _t('분류연관 테이블에 아이템 필드를 인덱스로 추가했습니다.'))); } if (!$db->exists("DESC {$prefix}FeedItems `feedVisibility`")) { // 0.2.1 $db->execute("ALTER TABLE {$prefix}FeedItems ADD `feedVisibility` enum('y','n','d') NOT NULL default 'y' AFTER `visibility`"); $result = $db->queryAll("SELECT id,visibility FROM {$prefix}Feeds", MYSQL_ASSOC); foreach($result as $item) {
function deleteByFeedId($feedId) { global $database, $db; $itemIds = array(); requireComponent('LZ.PHP.Media'); requireComponent('Bloglounge.Data.Category'); requireComponent('Bloglounge.Data.Groups'); $result = $db->queryAll("SELECT id FROM {$database['prefix']}FeedItems WHERE feed='$feedId'"); if($result) { foreach($result as $item) { Media::delete($item['id']); array_push($itemIds, $item['id']); } $itemIds = array_unique($itemIds); $categoryIds = array(); foreach($itemIds as $itemId) { $result = $db->queryAll('SELECT category FROM '.$database['prefix'].'Categoryrelations WHERE item = ' . $itemId,MYSQL_ASSOC); foreach($result as $item) { array_push($categoryIds, $item['category']); } } $categoryIds = array_unique($categoryIds); $itemStr = implode(',', $itemIds); $db->execute("DELETE FROM {$database['prefix']}CategoryRelations WHERE item IN ($itemStr)"); // clear CategoryRelations $db->execute("DELETE FROM {$database['prefix']}TagRelations WHERE item IN ($itemStr)"); // clear TagRelations if ($db->execute('DELETE FROM '.$database['prefix'].'FeedItems WHERE feed='.$feedId)) { foreach($categoryIds as $categoryId) { Category::rebuildCount($categoryId); } return true; } else { return false; } } return true; }