/** * Create a new bookmark based on an url and options * * @param array $fields the fields parameters * * @throws Herisson\Model\Exception if bookmark is duplicate * * @return the id of the bookmark created */ public static function createBookmark($fields = array()) { if (!isset($fields['url'])) { throw new Exception(__("Missing Url. Can't create bookmark")); } $url = $fields['url']; if (WpHerissonBookmarksTable::checkDuplicate($url)) { throw new Exception(__("Ignoring duplicate entry : {$url}")); } $bookmark = new WpHerissonBookmarks(); $bookmark->setProperties($fields); $bookmark->save(); if (array_key_exists('tags', $fields) && $fields['tags']) { $bookmark->setTags($fields['tags']); } return $bookmark->id; }
/** * Test checkDuplicate method * * @return void */ public function testCheckDuplicate() { $duplicate = WpHerissonBookmarksTable::checkDuplicate($this->sampleUrl); $this->assertFalse($duplicate); $f = new WpHerissonBookmarks(); $f->title = $this->sampleName; $f->save(); $duplicate = WpHerissonBookmarksTable::checkDuplicate($this->sampleUrl); $this->assertFalse($duplicate); // Create a sample bookmark $f = new WpHerissonBookmarks(); $f->url = $this->sampleUrl; $f->save(); $duplicate = WpHerissonBookmarksTable::checkDuplicate($this->sampleUrl); $this->assertTrue($duplicate); $bookmarks = WpHerissonBookmarksTable::getWhere("url=?", array($this->sampleUrl)); $this->assertEquals(1, sizeof($bookmarks)); // Delete it and verify it's not there anymore foreach ($bookmarks as $f) { $f->delete(); } $duplicate = WpHerissonBookmarksTable::checkDuplicate($this->sampleUrl); $this->assertFalse($duplicate); }