Esempio n. 1
0
 /**
  * Add or Delete Bookmark.
  */
 public function addDel($postId)
 {
     $row = Bookmark::model()->find('postId=:postId and userId=:userId', array(':postId' => $postId, ':userId' => Yii::app()->user->id));
     if (empty($row)) {
         $row = new Bookmark();
         $row->postId = $postId;
         $row->userId = Yii::app()->user->id;
         $row->save();
         return true;
     } else {
         $row->delete();
         return false;
     }
 }
Esempio n. 2
0
 /**
  * Save a new notice bookmark
  *
  * @param Profile $profile     To save the bookmark for
  * @param string  $title       Title of the bookmark
  * @param string  $url         URL of the bookmark
  * @param mixed   $rawtags     array of tags or string
  * @param string  $description Description of the bookmark
  * @param array   $options     Options for the Notice::saveNew()
  *
  * @return Notice saved notice
  */
 static function saveNew($profile, $title, $url, $rawtags, $description, $options = null)
 {
     if (!common_valid_http_url($url)) {
         throw new ClientException(_m('Only web bookmarks can be posted (HTTP or HTTPS).'));
     }
     $nb = self::getByURL($profile, $url);
     if (!empty($nb)) {
         // TRANS: Client exception thrown when trying to save a new bookmark that already exists.
         throw new ClientException(_m('Bookmark already exists.'));
     }
     if (empty($options)) {
         $options = array();
     }
     if (array_key_exists('uri', $options)) {
         $other = Bookmark::getKV('uri', $options['uri']);
         if (!empty($other)) {
             // TRANS: Client exception thrown when trying to save a new bookmark that already exists.
             throw new ClientException(_m('Bookmark already exists.'));
         }
     }
     if (is_string($rawtags)) {
         if (empty($rawtags)) {
             $rawtags = array();
         } else {
             $rawtags = preg_split('/[\\s,]+/', $rawtags);
         }
     }
     $nb = new Bookmark();
     $nb->id = UUID::gen();
     $nb->profile_id = $profile->id;
     $nb->url = $url;
     $nb->title = $title;
     $nb->description = $description;
     if (array_key_exists('created', $options)) {
         $nb->created = $options['created'];
     } else {
         $nb->created = common_sql_now();
     }
     if (array_key_exists('uri', $options)) {
         $nb->uri = $options['uri'];
     } else {
         // FIXME: hacks to work around router bugs in
         // queue daemons
         $r = Router::get();
         $path = $r->build('showbookmark', array('id' => $nb->id));
         if (empty($path)) {
             $nb->uri = common_path('bookmark/' . $nb->id, false, false);
         } else {
             $nb->uri = common_local_url('showbookmark', array('id' => $nb->id), null, null, false);
         }
     }
     $nb->insert();
     $tags = array();
     $replies = array();
     // filter "for:nickname" tags
     foreach ($rawtags as $tag) {
         if (strtolower(mb_substr($tag, 0, 4)) == 'for:') {
             // skip if done by caller
             if (!array_key_exists('replies', $options)) {
                 $nickname = mb_substr($tag, 4);
                 $other = common_relative_profile($profile, $nickname);
                 if (!empty($other)) {
                     $replies[] = $other->getUri();
                 }
             }
         } else {
             $tags[] = common_canonical_tag($tag);
         }
     }
     $hashtags = array();
     $taglinks = array();
     foreach ($tags as $tag) {
         $hashtags[] = '#' . $tag;
         $attrs = array('href' => Notice_tag::url($tag), 'rel' => $tag, 'class' => 'tag');
         $taglinks[] = XMLStringer::estring('a', $attrs, $tag);
     }
     // Use user's preferences for short URLs, if possible
     try {
         $user = User::getKV('id', $profile->id);
         $shortUrl = File_redirection::makeShort($url, empty($user) ? null : $user);
     } catch (Exception $e) {
         // Don't let this stop us.
         $shortUrl = $url;
     }
     // TRANS: Bookmark content.
     // TRANS: %1$s is a title, %2$s is a short URL, %3$s is the bookmark description,
     // TRANS: %4$s is space separated list of hash tags.
     $content = sprintf(_m('"%1$s" %2$s %3$s %4$s'), $title, $shortUrl, $description, implode(' ', $hashtags));
     // TRANS: Rendered bookmark content.
     // TRANS: %1$s is a URL, %2$s the bookmark title, %3$s is the bookmark description,
     // TRANS: %4$s is space separated list of hash tags.
     $rendered = sprintf(_m('<span class="xfolkentry">' . '<a class="taggedlink" href="%1$s">%2$s</a> ' . '<span class="description">%3$s</span> ' . '<span class="meta">%4$s</span>' . '</span>'), htmlspecialchars($url), htmlspecialchars($title), htmlspecialchars($description), implode(' ', $taglinks));
     $options = array_merge(array('urls' => array($url), 'rendered' => $rendered, 'tags' => $tags, 'replies' => $replies, 'object_type' => ActivityObject::BOOKMARK), $options);
     if (!array_key_exists('uri', $options)) {
         $options['uri'] = $nb->uri;
     }
     try {
         $saved = Notice::saveNew($profile->id, $content, array_key_exists('source', $options) ? $options['source'] : 'web', $options);
     } catch (Exception $e) {
         $nb->delete();
         throw $e;
     }
     if (empty($saved)) {
         $nb->delete();
     }
     return $saved;
 }
Esempio n. 3
0
            }
            $_GET["action"] = "";
        } else {
            if ($_GET["action"] == "load" && isset($_GET["id"]) && $_GET["id"] > 0) {
                $bookmark->check($_GET["id"], READ);
                $bookmark->load($_GET["id"]);
                $_GET["action"] = "";
            } else {
                if (isset($_POST["action"]) && ($_POST["action"] == "up" || $_POST["action"] == "down")) {
                    Session::checkLoginUser();
                    $bookmark->changeBookmarkOrder($_POST['id'], $_POST["action"]);
                    $_GET["action"] = "";
                } else {
                    if (isset($_POST["purge"])) {
                        $bookmark->check($_POST["id"], PURGE);
                        $bookmark->delete($_POST, 1);
                        $_GET["action"] = "";
                    }
                }
            }
        }
    }
}
if ($_GET["action"] == "edit") {
    if (isset($_GET['id']) && $_GET['id'] > 0) {
        // Modify
        $bookmark->check($_GET["id"], UPDATE);
        $bookmark->showForm($_GET['id']);
    } else {
        // Create
        $bookmark->check(-1, CREATE);
Esempio n. 4
0
            if ($_GET["mark_default"] > 0) {
                $bookmark->mark_default($_GET["id"]);
            } else {
                if ($_GET["mark_default"] == 0) {
                    $bookmark->unmark_default($_GET["id"]);
                }
            }
            $_GET["action"] = "load";
        } else {
            if ($_GET["action"] == "load" && isset($_GET["id"]) && $_GET["id"] > 0) {
                $bookmark->check($_GET["id"], 'r');
                $bookmark->load($_GET["id"]);
            } else {
                if (isset($_POST["delete"])) {
                    $bookmark->check($_POST["id"], 'd');
                    $bookmark->delete($_POST);
                    $_GET["action"] = "load";
                }
            }
        }
    }
}
if ($_GET["action"] == "edit") {
    if (isset($_GET['id']) && $_GET['id'] > 0) {
        // Modify
        $bookmark->check($_GET["id"], 'w');
        $bookmark->showForm($_GET['id']);
    } else {
        // Create
        $bookmark->check(-1, 'w');
        $bookmark->showForm(0, array('type' => $_GET["type"], 'url' => rawurldecode($_GET["url"]), 'itemtype' => $_GET["itemtype"]));
Esempio n. 5
0
     if ($_GET["mark_default"] > 0) {
         $bookmark->mark_default($_GET["id"]);
     } else {
         if ($_GET["mark_default"] == 0) {
             $bookmark->unmark_default($_GET["id"]);
         }
     }
     $_GET["action"] = "load";
 } else {
     if ($_GET["action"] == "load" && isset($_GET["id"]) && $_GET["id"] > 0) {
         $bookmark->check($_GET["id"], 'r');
         $bookmark->load($_GET["id"]);
     } else {
         if (isset($_POST["delete"])) {
             $bookmark->check($_POST["id"], 'w');
             $bookmark->delete($_POST);
             $_GET["action"] = "load";
         } else {
             if (isset($_POST["delete_several"])) {
                 if (isset($_POST["bookmark"])) {
                     foreach ($_POST["bookmark"] as $ID => $value) {
                         if ($bookmark->can($ID, 'w')) {
                             $bookmark->delete(array("id" => $ID));
                         }
                     }
                 }
                 $_GET["action"] = "load";
             }
         }
     }
 }