<?xml version="1.0" encoding="UTF-8"?>
<!-- Reviewed: no -->
<!-- EN-Revision: 17175 -->
<sect1 id="zend.service.simpy">
    <title>Zend_Service_Simpy</title>
    <sect2 id="zend.service.simpy.introduction">
        <title>導入</title>
        <para>
            <classname>Zend_Service_Simpy</classname> は、ソーシャルブックマークサービスである
            Simpy 用のフリーな REST <acronym>API</acronym> の、軽量なラッパーです。
        </para>
        <para>
            <classname>Zend_Service_Simpy</classname> を使用するには
            Simpy アカウントが必要です。アカウントを取得するには、
            <ulink url="http://simpy.com">Simpy のウェブサイト</ulink> にいきます。
            Simpy REST <acronym>API</acronym> についての詳細な情報は
            <ulink url="http://www.simpy.com/doc/api/rest">Simpy REST <acronym>API</acronym> ドキュメント</ulink>
            を参照ください。
        </para>
        <para>
            Simpy REST <acronym>API</acronym> を使用すると、Simpy
            のウェブサイトが提供するサービスを利用することができます。
            以下の節は、<classname>Zend_Service_Simpy</classname>
            で利用できる機能の概要をまとめたものです。
            <itemizedlist>
                <listitem>
                    <para>
                        リンク: 作成、取得、更新、削除
                    </para>
                </listitem>
                <listitem>
                    <para>
                        タグ: 取得、削除、名前の変更、統合、分割
                    </para>
                </listitem>
                <listitem>
                    <para>
                        メモ: 作成、取得、更新、削除
                    </para>
                </listitem>
                <listitem>
                    <para>
                        ウォッチリスト: 取得、すべてを取得
                    </para>
                </listitem>
            </itemizedlist>
        </para>
    </sect2>
    <sect2 id="zend.service.simpy.links">
        <title>リンク</title>
        <para>
            リンクを問い合わせると、登録日の降順で結果が返されます。
            リンクの検索は、タイトルやニックネーム、タグ、メモ
            そしてリンクに関連付けられたウェブページの内容にもとづいて行うことができます。
            Simpy の検索は、これらのフィールドのいずれかあるいはすべてを対象に
            フレーズや論理演算子、ワイルドカードを使用して行うことができます。
            詳細な情報は、Simpy FAQ の
            <ulink url="http://www.simpy.com/faq#searchSyntax">検索構文</ulink> や
            <ulink url="http://www.simpy.com/faq#searchFieldsLinks">検索フィールド</ulink>
            といった節を参照ください。
        </para>
        <example id="zend.service.simpy.links.querying">
            <title>リンクの問い合わせ</title>
            <programlisting language="php"><![CDATA[
$simpy = new Zend_Service_Simpy('あなたのユーザ名', 'あなたのパスワード');

/* 直近に追加された 10 件のリンクを探します */
$linkQuery = new Zend_Service_Simpy_LinkQuery();
$linkQuery->setLimit(10);

/* リンクを取得し、表示します */
$linkSet = $simpy->getLinks($linkQuery);
foreach ($linkSet as $link) {
    echo '<a href="';
    echo $link->getUrl();
    echo '">';
    echo $link->getTitle();
    echo '</a><br />';
}

/* 直近に追加されたリンクのうち、タイトルに 'PHP' が含まれるものを
   5 件まで探します */
$linkQuery->setQueryString('title:PHP');
$linkQuery->setLimit(5);

/* タイトルに 'French'、タグに 'language' が含まれる
   すべてのリンクを探します */
$linkQuery->setQueryString('+title:French +tags:language');

/* タイトルに 'French' を含み、タグに 'travel' を含まない
   すべてのリンクを探します */
$linkQuery->setQueryString('+title:French -tags:travel');

/* 2006/12/09 に追加されたすべてのリンクを探します */
$linkQuery->setDate('2006-12-09');

/* 2006/12/09 より後 (その日を含まない) に追加された
   すべてのリンクを探します */
$linkQuery->setAfterDate('2006-12-09');

/* 2006/12/09 より前 (その日を含まない) に追加された
   すべてのリンクを探します */
$linkQuery->setBeforeDate('2006-12-09');

/* 2006/12/01 から 2006/12/09 (両端の日を含まない) に追加された
   すべてのリンクを探します */
$linkQuery->setBeforeDate('2006-12-01');
$linkQuery->setAfterDate('2006-12-09');
]]></programlisting>
        </example>
        <para>
            リンクの識別は、<acronym>URL</acronym> によって行います。言い換えると、
            既存のリンクと同じ <acronym>URL</acronym> のリンクを保存しようとすると
            既存のリンクが新しいデータで上書きされるということです。
        </para>
        <example id="zend.service.simpy.links.modifying">
            <title>リンクの変更</title>
            <programlisting language="php"><![CDATA[
$simpy = new Zend_Service_Simpy('あなたのユーザ名', 'あなたのパスワード');

/* リンクを保存します */
$simpy->saveLink(
    'Zend Framework' // タイトル
    'http://framework.zend.com', // URL
    Zend_Service_Simpy_Link::ACCESSTYPE_PUBLIC, // アクセス形式
    'zend, framework, php' // タグ
    'Zend Framework home page' // 別のタイトル
    'This site rocks!' // メモ
);

/* 既存のリンクを新しいデータで上書きします */
$simpy->saveLink(
    'Zend Framework'
    'http://framework.zend.com',
    Zend_Service_Simpy_Link::ACCESSTYPE_PRIVATE, // アクセス形式を変更しました
    'php, zend, framework' // タグの順番を変更しました
    'Zend Framework' // 別のタイトルを変更しました
    'This site REALLY rocks!' // メモを変更しました
);

/* リンクを削除します */
$simpy->deleteLink('http://framework.zend.com');

/* あなたのリンクを大掃除する簡単な方法 (^o^) */
$linkSet = $this->_simpy->getLinks();
foreach ($linkSet as $link) {
    $this->_simpy->deleteLink($link->getUrl());
}
]]></programlisting>
        </example>
    </sect2>
    <sect2 id="zend.service.simpy.tags">
        <title>タグ</title>
        <para>
            取得時に、そのタグを使用しているリンク数の降順
            (多いものが先) でタグが並べ替えられます。
        </para>
        <example id="zend.service.simpy.tags.working">
            <title>タグの処理</title>
            <programlisting language="php"><![CDATA[
$simpy = new Zend_Service_Simpy('あなたのユーザ名', 'あなたのパスワード');

/* タグつきでリンクを保存します */
$simpy->saveLink(
    'Zend Framework' // タイトル
    'http://framework.zend.com', // URL
    Zend_Service_Simpy_Link::ACCESSTYPE_PUBLIC, // アクセス形式
    'zend, framework, php' // タグ
);

/* リンクおよびメモで使用しているすべてのタグの一覧を取得します */
$tagSet = $simpy->getTags();

/* 各タグと、それを使用しているリンク数を表示します */
foreach ($tagSet as $tag) {
    echo $tag->getTag();
    echo ' - ';
    echo $tag->getCount();
    echo '<br />';
}

/* 'zend' タグを使用しているすべてのリンクから、そのタグを削除します */
$simpy->removeTag('zend');

/* 'framework' タグの名前を 'frameworks' に変更します */
$simpy->renameTag('framework', 'frameworks');

/* 'frameworks' タグを 'framework' および
'development' に分割します。つまり、'frameworks' タグを
使用しているすべてのリンクからこのタグを削除し、'framework'
および 'development' をそれらのリンクに追加します */
$simpy->splitTag('frameworks', 'framework', 'development');

/* 'framework' および 'development' のふたつのタグを
'frameworks' に統合します。これは分割の反対の作業です */
$simpy->mergeTags('framework', 'development', 'frameworks');
]]></programlisting>
        </example>
    </sect2>
    <sect2 id="zend.service.simpy.notes">
        <title>メモ</title>
        <para>
            メモの保存、取得および削除が可能です。
            メモは、数値 ID によって識別されます。
        </para>
        <example id="zend.service.simpy.notes.working">
            <title>メモの扱い</title>
            <programlisting language="php"><![CDATA[
$simpy = new Zend_Service_Simpy('あなたのユーザ名', 'あなたのパスワード');

/* メモを保存します */
$simpy->saveNote(
    'Test Note', // タイトル
    'test,note', // タグ
    'This is a test note.' // 説明
);

/* 既存のメモを上書きします */
$simpy->saveNote(
    'Updated Test Note', // タイトル
    'test,note,updated', // タグ
    'This is an updated test note.', // 説明
    $note->getId() // 一意な ID
);

/* 直近に追加された 10 件のメモを探します */
$noteSet = $simpy->getNotes(null, 10);

/* メモを表示します */
foreach ($noteSet as $note) {
    echo '<p>';
    echo $note->getTitle();
    echo '<br />';
    echo $note->getDescription();
    echo '<br >';
    echo $note->getTags();
    echo '</p>';
}

/* タイトルに 'PHP' が含まれるすべてのメモを探します */
$noteSet = $simpy->getNotes('title:PHP');

/* タイトルに 'PHP' が含まれ、説明に 'framework' が含まれない
   すべてのメモを探します */
$noteSet = $simpy->getNotes('+title:PHP -description:framework');

/* メモを削除します */
$simpy->deleteNote($note->getId());
]]></programlisting>
        </example>
    </sect2>
    <sect2 id="zend.service.simpy.watchlists">
        <title>ウォッチリスト</title>
        <para>
            ウォッチリストは、<acronym>API</acronym> を用いて作成したり削除したりすることはできません。
            取得のみが可能です。したがって、<acronym>API</acronym> を使用してアクセスする前には
            Simpy のウェブサイトでウォッチリストを作成しておく必要があります。
        </para>
        <example id="zend.service.simpy.watchlists.retrieving">
            <title>ウォッチリストの取得</title>
            <programlisting language="php"><![CDATA[
$simpy = new Zend_Service_Simpy('あなたのユーザ名', 'あなたのパスワード');

/* すべてのウォッチリストの一覧を取得します */
$watchlistSet = $simpy->getWatchlists();

/* 各ウォッチリストのデータを表示します */
foreach ($watchlistSet as $watchlist) {
    echo $watchlist->getId();
    echo '<br />';
    echo $watchlist->getName();
    echo '<br />';
    echo $watchlist->getDescription();
    echo '<br />';
    echo $watchlist->getAddDate();
    echo '<br />';
    echo $watchlist->getNewLinks();
    echo '<br />';

    foreach ($watchlist->getUsers() as $user) {
        echo $user;
        echo '<br />';
    }

    foreach ($watchlist->getFilters() as $filter) {
        echo $filter->getName();
        echo '<br />';
        echo $filter->getQuery();
        echo '<br />';
    }
}

/* 個々のウォッチリストを、ID を指定して取得します */
$watchlist = $simpy->getWatchlist($watchlist->getId());
$watchlist = $simpy->getWatchlist(1);
]]></programlisting>
        </example>
    </sect2>
</sect1>
<!--
vim:se ts=4 sw=4 et:
-->
