/**
  * 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);
 }