Changeset 4615
- Timestamp:
- 10/24/07 23:06:21 (13 months ago)
- Location:
- trunk
- Files:
-
- 5 modified
-
blog/owner/entry/add/index.php (modified) (3 diffs)
-
blog/owner/entry/edit/item.php (modified) (3 diffs)
-
blog/owner/entry/update/item.php (modified) (3 diffs)
-
lib/config.php (modified) (1 diff)
-
lib/model/blog.entry.php (modified) (11 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/blog/owner/entry/add/index.php
r3845 r4615 17 17 'acceptComment' => array(array('0', '1'), 'default' => '0'), 18 18 'acceptTrackback' => array(array('0', '1'), 'default' => '0'), 19 'published' => array('int', 0, 'default' => 1) 19 'published' => array('int', 0, 'default' => 1), 20 'draft' => array(array('0', '1'), 'default' => '0') 20 21 ) 21 22 ); … … 24 25 25 26 requireStrictRoute(); 27 $entry = array(); 26 28 $entry['visibility'] = $_POST['visibility']; 27 29 $entry['category'] = empty($_POST['category']) ? 0 : $_POST['category']; … … 38 40 $entry['acceptTrackback'] = empty($_POST['acceptTrackback']) ? 0 : 1; 39 41 $entry['published'] = empty($_POST['published']) ? 1 : $_POST['published']; 42 $entry['draft'] = empty($_POST['draft']) ? 0 : $_POST['draft']; 40 43 if ($id = addEntry($blogid, $entry)) { 41 44 fireEvent('AddPost', $id, $entry); -
trunk/blog/owner/entry/edit/item.php
r4606 r4615 29 29 $suri['id'] = 0; 30 30 31 $entry = getEntry(getBlogId(), $suri['id'], false); 31 if($_GET['draft']) { 32 $entry = getEntry(getBlogId(), $suri['id'], true); 33 } else { 34 $entry = getEntry(getBlogId(), $suri['id'], false); 35 } 32 36 if (!$entry) { 33 37 respondErrorPage(_t('포스트 정보가 존재하지 않습니다.')); … … 295 299 return false; 296 300 } 301 data = data+"&draft=1"; 297 302 if(entryManager.isSaved == true) { 298 303 var request = new HTTPRequest("POST", "<?php echo $blogURL;?>/owner/entry/update/"+entryManager.entryId); … … 354 359 if (data == null) 355 360 return false; 356 361 data = data+"&draft=0"; 357 362 if(entryManager.isSaved == true) { 358 363 var request = new HTTPRequest("POST", "<?php echo $blogURL;?>/owner/entry/update/"+entryManager.entryId); -
trunk/blog/owner/entry/update/item.php
r4606 r4615 17 17 'acceptComment' => array(array('0', '1'), 'default' => '0'), 18 18 'acceptTrackback' => array(array('0', '1'), 'default' => '0'), 19 'published' => array('int', 0, 'default' => 1) 19 'published' => array('int', 0, 'default' => 1), 20 'draft' => array(array('0', '1'), 'default' => '0') 20 21 ) 21 22 ); … … 24 25 25 26 requireStrictRoute(); 26 if ($entry = getEntry($blogid, $suri['id'])) { 27 $entry = array(); 28 $isDraft = empty($_POST['draft']) ? 0 : $_POST['draft']; 29 if($isDraft) { // Prepare for draft saving. 30 $entry['id'] = $suri['id']; 27 31 $entry['visibility'] = $_POST['visibility']; 28 32 $entry['category'] = $_POST['category']; … … 37 41 $entry['acceptTrackback'] = empty($_POST['acceptTrackback']) ? 0 : 1; 38 42 $entry['published'] = empty($_POST['published']) ? 0 : $_POST['published']; 43 $entry['draft'] = empty($_POST['draft']) ? 0 : $_POST['draft']; 44 } else if ($entry = getEntry($blogid, $suri['id'], $isDraft)) { // Non-draft saving. 45 $entry['visibility'] = $_POST['visibility']; 46 $entry['category'] = $_POST['category']; 47 $entry['location'] = empty($_POST['location']) ? '/' : $_POST['location']; 48 $entry['tag'] = empty($_POST['tag']) ? '' : $_POST['tag']; 49 $entry['title'] = $_POST['title']; 50 $entry['content'] = $_POST['content']; 51 $entry['contentFormatter'] = $_POST['contentFormatter']; 52 $entry['contentEditor'] = $_POST['contentEditor']; 53 $entry['slogan'] = $_POST['permalink']; 54 $entry['acceptComment'] = empty($_POST['acceptComment']) ? 0 : 1; 55 $entry['acceptTrackback'] = empty($_POST['acceptTrackback']) ? 0 : 1; 56 $entry['published'] = empty($_POST['published']) ? 0 : $_POST['published']; 57 $entry['draft'] = empty($_POST['draft']) ? 0 : $_POST['draft']; 58 } 59 if(!empty($entry)) { 39 60 setBlogSetting('LatestEditedEntry_user'.getUserId(),$suri['id']); 40 61 if($id = updateEntry($blogid, $entry)) { -
trunk/lib/config.php
r4606 r4615 18 18 } 19 19 // Define global variable. 20 global $database, $service ;20 global $database, $service, $blog; 21 21 $database['server'] = 'localhost'; 22 22 $database['database'] = ''; -
trunk/lib/model/blog.entry.php
r4578 r4615 421 421 $entry['location'] = UTF8::lessenAsEncoding(trim($entry['location']), 255); 422 422 $entry['slogan'] = array_key_exists('slogan', $entry) ? trim($entry['slogan']) : ''; 423 424 $isDraft = empty($entry['draft']) ? 0 : $entry['draft']; 425 423 426 if((empty($entry['slogan']))||($entry['category'] == -1)) { 424 427 $slogan = $slogan0 = getSlogan($entry['title']); … … 445 448 } 446 449 447 $result = DBQuery::queryCount("SELECT slogan FROM {$database['prefix']}Entries WHERE blogid = $blogid AND slogan = '$slogan' LIMIT 1");450 $result = DBQuery::queryCount("SELECT slogan FROM {$database['prefix']}Entries WHERE blogid = $blogid AND slogan = '$slogan' AND draft = $isDraft LIMIT 1"); 448 451 for ($i = 1; $result > 0; $i++) { 449 452 if ($i > 1000) 450 453 return false; 451 454 $slogan = tc_escape_string(UTF8::lessenAsEncoding($slogan0, 245) . '-' . $i); 452 $result = DBQuery::queryCount("SELECT slogan FROM {$database['prefix']}Entries WHERE blogid = $blogid AND slogan = '$slogan' LIMIT 1");455 $result = DBQuery::queryCount("SELECT slogan FROM {$database['prefix']}Entries WHERE blogid = $blogid AND slogan = '$slogan' AND draft = $isDraft LIMIT 1"); 453 456 } 454 457 $userid = $entry['userid']; … … 464 467 $published = 'UNIX_TIMESTAMP()'; 465 468 } 466 $currentMaxId = DBQuery::queryCell("SELECT MAX(id) FROM {$database['prefix']}Entries WHERE blogid = $blogid and draft = 0"); 467 if(!empty($currentMaxId) && $currentMaxId > 0) { 468 $id = $currentMaxId + 1; 469 470 if(isset($entry['id'])) { // entry id가 있는 경우 (주로 updateEntry에 의하여 draft를 생성하는 경우가 될 것이다) 471 if(DBQuery::queryCell("SELECT count(*) FROM {$database['prefix']}Entries WHERE blogid = $blogid AND id = {$entry['id']} AND draft = $isDraft") != 0) { // 이미 원하는 draft에 같은 id가 다 존재한다. 이 경우 저장할 수 없음. 472 return false; 473 } else { 474 $id = $entry['id']; 475 } 469 476 } else { 470 $id = 1; 477 $currentMaxId = DBQuery::queryCell("SELECT MAX(id) FROM {$database['prefix']}Entries WHERE blogid = $blogid AND draft = 0"); 478 if(!empty($currentMaxId) && $currentMaxId > 0) { 479 $id = $currentMaxId + 1; 480 } else { 481 $id = 1; 482 } 471 483 } 472 484 $result = DBQuery::query("INSERT INTO {$database['prefix']}Entries … … 478 490 $userid, 479 491 $id, 480 0,492 $isDraft, 481 493 {$entry['visibility']}, 482 494 {$entry['category']}, … … 497 509 if (!$result) 498 510 return false; 499 DBQuery::query("DELETE FROM {$database['prefix']}Entries WHERE blogid = $blogid AND id = $id AND draft = 1");500 511 DBQuery::query("UPDATE {$database['prefix']}Attachments SET parent = $id WHERE blogid = $blogid AND parent = 0"); 501 updateEntriesOfCategory($blogid, $entry['category']); 502 if ($entry['visibility'] == 3) 503 syndicateEntry($id, 'create'); 504 if ($entry['visibility'] >= 2) 505 clearRSS(); 506 if (!empty($entry['tag'])) { 507 $tags = getTagsWithEntryString($entry['tag']); 508 addTagsWithEntryId($blogid, $id, $tags); 512 if(!$isDraft) { 513 DBQuery::query("DELETE FROM {$database['prefix']}Entries WHERE blogid = $blogid AND id = $id AND draft = 1"); 514 updateEntriesOfCategory($blogid, $entry['category']); 515 if ($entry['visibility'] == 3) 516 syndicateEntry($id, 'create'); 517 if ($entry['visibility'] >= 2) 518 clearRSS(); 519 if (!empty($entry['tag'])) { 520 $tags = getTagsWithEntryString($entry['tag']); 521 addTagsWithEntryId($blogid, $id, $tags); 522 } 509 523 } 510 524 return $id; … … 521 535 522 536 if($entry['id'] == 0) return false; 523 537 $isDraft = empty($entry['draft']) ? 0 : $entry['draft']; 538 539 // entry가 draft가 없으면서(draft = 1인 글이 없는 경우) 저장하려는 요구사항이 draft인 경우는 addEntry로 글을 더한다. 540 $draftCount = DBQuery::queryCell("SELECT count(*) FROM {$database['prefix']}Entries 541 WHERE blogid = $blogid 542 AND id = ".$entry['id']." 543 AND draft = 1"); 544 if(($draftCount == 0) && ($isDraft == 1)) { 545 return addEntry($blogid, $entry); 546 } 547 // draft가 없으면서 정상적인 글을 저장하려는 경우, (이 경우는 현재 글을 update한다.) 548 // draft가 있으면서 정상적인 글을 저장하려는 경우, (이 경우는 draft를 update한다.) 549 // draft가 있으면서 draft를 저장하려는 경우가 남음. (이 경우도 draft를 update한다.) 550 524 551 if(empty($entry['userid'])) $entry['userid'] = getUserId(); 525 552 $entry['title'] = UTF8::lessenAsEncoding(trim($entry['title'])); … … 537 564 if($entry['visibility'] == 1 || $entry['visibility'] == 3) 538 565 return false; 539 if(DBQuery::queryCell("SELECT count(*) FROM {$database['prefix']}Entries WHERE blogid = $blogid AND id <> {$entry['id']} AND draft = 0 AND title = '$title' AND category = -1") > 0) 566 if(DBQuery::queryCell("SELECT count(*) 567 FROM {$database['prefix']}Entries 568 WHERE blogid = $blogid 569 AND id <> {$entry['id']} 570 AND draft = 0 571 AND title = '$title' 572 AND category = -1") > 0) 540 573 return false; 541 574 } … … 549 582 } 550 583 551 $result = DBQuery::queryCount("SELECT slogan FROM {$database['prefix']}Entries WHERE blogid = $blogid AND slogan = '$slogan' AND id = {$entry['id']} LIMIT 1"); 584 $result = DBQuery::queryCount("SELECT slogan 585 FROM {$database['prefix']}Entries 586 WHERE blogid = $blogid 587 AND slogan = '$slogan' 588 AND id = {$entry['id']} 589 AND draft = $isDraft LIMIT 1"); 552 590 if ($result == 0) { // if changed 553 $result = DBQuery::queryCount("SELECT slogan FROM {$database['prefix']}Entries WHERE blogid = $blogid AND slogan = '$slogan' LIMIT 1");591 $result = DBQuery::queryCount("SELECT slogan FROM {$database['prefix']}Entries WHERE blogid = $blogid AND slogan = '$slogan' AND draft = $isDraft LIMIT 1"); 554 592 for ($i = 1; $result > 0; $i++) { 555 593 if ($i > 1000) 556 594 return false; 557 595 $slogan = tc_escape_string(UTF8::lessenAsEncoding($slogan0, 245) . '-' . $i); 558 $result = DBQuery::queryCount("SELECT slogan FROM {$database['prefix']}Entries WHERE blogid = $blogid AND slogan = '$slogan' LIMIT 1");596 $result = DBQuery::queryCount("SELECT slogan FROM {$database['prefix']}Entries WHERE blogid = $blogid AND slogan = '$slogan' AND draft = $isDraft LIMIT 1"); 559 597 } 560 598 } … … 578 616 break; 579 617 } 618 619 // draft가 없으면서 정상적인 글을 저장하려는 경우, (이 경우는 현재 글을 update한다.) 620 if(($draftCount == 0) && ($isDraft == 0)) $draftSign = 0; 621 else $draftSign = 1; 622 580 623 $result = DBQuery::query("UPDATE {$database['prefix']}Entries 581 624 SET … … 583 626 visibility = {$entry['visibility']}, 584 627 category = {$entry['category']}, 628 draft = $isDraft, 585 629 location = '$location', 586 630 title = '$title', … … 593 637 published = $published, 594 638 modified = UNIX_TIMESTAMP() 595 WHERE blogid = $blogid AND id = {$entry['id']} AND draft = 0"); 596 if ($result) 597 DBQuery::query("DELETE FROM {$database['prefix']}Entries WHERE blogid = $blogid AND id = {$entry['id']} AND draft = 1"); 598 updateEntriesOfCategory($blogid, $entry['category']); 599 if ($entry['visibility'] == 3) 600 syndicateEntry($entry['id'], 'modify'); 601 DBQuery::query("UPDATE {$database['prefix']}Attachments SET parent = {$entry['id']} WHERE blogid = $blogid AND parent = 0"); 602 if ($entry['visibility'] >= 2) 603 clearRSS(); 639 WHERE blogid = $blogid AND id = {$entry['id']} AND draft = $draftSign"); 640 if($isDraft == 0) { // Publishing phase. 641 if ($result) // 정상적인 글을 저장하려는 경우 draft는 날린다. 642 DBQuery::query("DELETE FROM {$database['prefix']}Entries WHERE blogid = $blogid AND id = {$entry['id']} AND draft = 1"); 643 updateEntriesOfCategory($blogid, $entry['category']); 644 if ($entry['visibility'] == 3) 645 syndicateEntry($entry['id'], 'modify'); 646 DBQuery::query("UPDATE {$database['prefix']}Attachments SET parent = {$entry['id']} WHERE blogid = $blogid AND parent = 0"); 647 if ($entry['visibility'] >= 2) 648 clearRSS(); 649 } 604 650 return $result ? $entry['id'] : false; 605 651 }
