Example #1
0
	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);
				}
			}

		}
Example #3
0
					}			
					
					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;
		}