[GENERIC] Zend_Translate:
[zend.git] / documentation / manual / pl / module_specs / Zend_Feed-Importing.xml
blob5bae71e220713145892bdb0b505bfeeb9a43def6
1 <sect1 id="zend.feed.importing">
3     <title>Importowanie kanałów informacyjnych</title>
5     <para>
6         <code>Zend_Feed</code> pozwala programistom bardzo łatwo odbierać wiadomości
7         z kanałów informacyjnych. Jeśli znasz adres URI kanału, w prosty sposób
8         użyj metody <code>Zend_Feed::import()</code>:
9     </para>
11     <programlisting role="php"><![CDATA[
12 $feed = Zend_Feed::import('http://feeds.example.com/feedName');
13 ]]>
14     </programlisting>
16     <para>
17         Możesz także użyć <code>Zend_Feed</code> do pobrania zawartości kanału
18         z pliku lub z łańcucha znaków PHP:
19     </para>
21     <programlisting role="php"><![CDATA[
22 // importowanie kanału z pliku tekstowego
23 $feedFromFile = Zend_Feed::importFile('feed.xml');
25 // importowanie kanału z łańcucha znaków PHP
26 $feedFromPHP = Zend_Feed::importString($feedString);
27 ]]>
28     </programlisting>
30     <para>
31         We wszystkich powyższych przykładach w razie powodzenia operacji zwracany
32         jest obiekt klasy rozszerzającej <code>Zend_Feed_Abstract</code>, zależenie
33         od typu kanału. Jeśli zostały odebrane dane RSS za pomocą jednej z powyższych
34         metod importu, wtedy będzie zwrócony obiekt <code>Zend_Feed_Rss</code>.
35         Z drugiej strony, gdy będą importowane dane kanału Atom, zwrócony zostanie
36         obiekt <code>Zend_Feed_Atom</code>. Metody importu w razie niepowodzenia
37         wyrzucają wyjątek <code>Zend_Feed_Exception</code>, czyli na przykład wtedy
38         gdy nie jest możliwe odczytanie kanału lub gdy dane są błędne.
39     </para>
41     <sect2 id="zend.feed.importing.custom">
43         <title>Własne kanały</title>
45         <para>
46             <code>Zend_Feed</code> pozwala programistom na bardzo łatwe
47             tworzenie własnych kanałów. Musisz jedynie utworzyć tablicę i
48             zaimportować ją za pomocą Zend_Feed. Ta tablica może być
49             zaimportowana za pomocą metody <code>Zend_Feed::importArray()</code>
50             lub <code>Zend_Feed::importBuilder()</code>. W tym drugim przypadku
51             tablica zostanie utworzona w locie, przez własne źródło danych
52             implementujące interfejs <code>Zend_Feed_Builder_Interface</code>.
53         </para>
55         <sect3 id="zend.feed.importing.custom.importarray">
57             <title>Importowanie własnej tablicy</title>
59             <programlisting role="php"><![CDATA[
60 // importowanie kanału z tablicy
61 $atomFeedFromArray = Zend_Feed::importArray($array);
63 // poniższy kod odpowiada kodowi powyżej;
64 // domyślnie zwracana jest instancja Zend_Feed_Atom
65 $atomFeedFromArray = Zend_Feed::importArray($array, 'atom');
67 // importowanie kanału rss z tablicy
68 $rssFeedFromArray = Zend_Feed::importArray($array, 'rss');
69 ]]>
70             </programlisting>
72             <para>
73                 Format tablicy musi zgadzać się z taką strukturą:
74             </para>
76             <programlisting role="php"><![CDATA[
77 array(
78       'title'       => 'tytuł kanału', //wymagane
79       'link'        => 'adres url kanału', //wymagane
80       'lastUpdate'  => 'data aktualizacji w postaci uniksowego znacznika czasu', // opcjonalne
81       'published'   => 'data publikacji w postaci uniksowego znacznika czasu', //opcjonalne
82       'charset'     => 'zestaw znaków dla danych tekstowych', // wymagane
83       'description' => 'krótki opis kanału', //opcjonalne
84       'author'      => 'autor kanału', //opcjonalne
85       'email'       => 'adres email autora', //opcjonalne
86       'webmaster'   =>     // opcjonalne, ignorowane jeśli używany jest atom
87                        'adres osoby odpowiedzialnej' .
88                        'za sprawy techniczne'
89       'copyright'   => 'informacje o prawach autorskich', //opcjonalne
90       'image'       => 'adres obrazka', //opcjonalne
91       'generator'   => 'generator', // opcjonalne
92       'language'    => 'język w jakim publikowany jest kanał', // opcjonalne
93       'ttl'         =>     // opcjonalne, ignorowane jeśli używany jest atom
94                        'na jak długo, w minutach, kanał może' .
95                        'być buforowany przed odświeżeniem',
96       'rating'      =>     // opcjonalne, ignorowane jeśli używany jest atom
97                        'Ocena PICS dla kanału.',
98       'cloud'       => array(
99                              'domain'            => 'domena usługi cloud, np. rpc.sys.com' // wymagane
100                              'port'              => 'port usługi to' // opcjonalne, domyślnie wartość 80
101                              'path'              => 'ścieżka usługi cloud, np. /RPC2' //wymagane
102                              'registerProcedure' => 'procedura do wywołania, np. myCloud.rssPleaseNotify' // wymagane
103                              'protocol'          => 'protokół do użycia, np. soap lub xml-rpc' // wymagane
104                              ), // dane usługi cloud umożliwiającej powiadamianie użytkowników o zmianach // opcjonalne, ignorowane jeśli używany jest atom
105       'textInput'   => array(
106                              'title'       => 'etykieta przycisku wysyłającego treść pola tekstowego' // wymagane,
107                              'description' => 'wyjaśnienie przeznaczenia pola tekstowego' // wymagane
108                              'name'        => 'nazwa obiektu pola tekstowego' // wymagane
109                              'link'        => 'adres URL skryptu CGI który przetwarza wysłaną treść' // wymagane
110                              ) // pole tekstowe które może być wyświetlone wraz z kanałem // opcjonalne, ignorowane jeśli używany jest atom
111       'skipHours'   => array(
112                              'godzina do pominięcia w formacie 24 godzinnym', // np. 13 (1pm)
113                              // do 24 wierszy których wartościami mogą być numery między 0 a 23
114                              ) // Wskazówka mówiąca agregatorom które godziny mogą pominąć // opcjonalne, ignorowane jeśli używany jest atom
115       'skipDays '   => array(
116                              'dzień do pominięcia', // np. Monday
117                              // do 7 wierszy, których wartościami mogą być Monday, Tuesday, Wednesday, Thursday, Friday, Saturday lub Sunday
118                              ) // Wskazówka mówiąca agregatorom które dni mogą pominąć // opcjonalne, ignorowane jeśli używany jest atom
119       'itunes'      => array(
120                              'author'       => 'nazwa artysty' // opcjonalne, domyślnie wartość z pola author
121                              'owner'        => array(
122                                                      'name' => 'nazwa właściciela' // opcjonalne, domyślnie wartość z głównego pola author
123                                                      'email' => 'adres email właściciela' // opcjonalne, domyślnie wartość z głównego pola email
124                                                      ) // właściciel podcasta // opcjonalne
125                              'image'        => 'obrazek albumu/podcasta' // opcjonalne, domyślnie wartość z głownego pola image
126                              'subtitle'     => 'krótki opis' // opcjonalne, domyślnie wartość z głownego pola description
127                              'summary'      => 'dłuższy opis' // opcjonalne, domyślnie wartość z głownego pola description
128                              'block'        => 'zapobiega przed pojawieniem się epizodu (yes|no)' // opcjonalne
129                              'category'     => array(
130                                                      array('main' => 'głowna kategoria', // wymagane
131                                                            'sub'  => 'podkategoria' // opcjonalne
132                                                            ),
133                                                      // do 3 wierszy
134                                                      ) // 'Dane kategorii w iTunes Music Store Browse' // wymagane
135                              'explicit'     => 'znaczek kontroli rodzicielskiej (yes|no|clean)' // opcjonalne
136                              'keywords'     => 'lista maksymalnie 12 słów kluczowych oddzielonych przecinkami' // opcjonalne
137                              'new-feed-url' => 'używane aby poinformować iTunes o nowym adresie URL kanału' // opcjonalne
138                              ) // Dane rozszerzenia Itunes // opcjonalne, ignorowane jeśli używany jest atom
139       'entries'     => array(
140                              array(
141                                    'title'        => 'tytuł wpisu z kanału', //wymagane
142                                    'link'         => 'adres do wpisu z kanału', //wymagane
143                                    'description'  => 'krótka wersja wpisu z kanału', // jedynie tekst, bez html, wymagane
144                                    'guid'         => 'identyfikator artykułu, jeśli nie podany, zostanie użyta wartość z pola link', //opcjonalne
145                                    'content'      => 'długa wersja', // może zawierać html, opcjonalne
146                                    'lastUpdate'   => 'data publikacji w postaci uniksowego znacznika czasu', // opcjonalne
147                                    'comments'     => 'strona komentarzy powiązanych z wpisem w kanale', // opcjonalne
148                                    'commentRss'   => 'adres kanału z powiązanymi komentarzami', // opcjonalne
149                                    'source'       => array(
150                                                            'title' => 'tytuł oryginalnego źródła' // wymagane,
151                                                            'url' => 'adres oryginalnego źródła' // wymagane
152                                                            ) // oryginalne źródło wpisu z kanału // opcjonalne
153                                    'category'     => array(
154                                                            array(
155                                                                  'term' => 'etykieta pierwszej kategorii' // wymagane,
156                                                                  'scheme' => 'adres identyfikujący schemat kategoryzowania' // opcjonalne
157                                                                  ),
158                                                            array(
159                                                                  // dane dla kolejnej kategorii itd.
160                                                                  )
161                                                            ) // lista powiązanych kategorii // opcjonalne
162                                    'enclosure'    => array(
163                                                            array(
164                                                                  'url' => 'adres powiązanego załącznika' // wymagane
165                                                                  'type' => 'typ mime załącznika' // opcjonalne
166                                                                  'length' => 'długość załącznika w bajtach' // opcjonalne
167                                                                  ),
168                                                            array(
169                                                                  // dane drugiego załącznika itd.
170                                                                  )
171                                                            ) // lista załączników dla wpisu kanału // opcjonalne
172                                    ),
173                              array(
174                                    // dane dla drugiego wpisu itd.
175                                    )
176                              )
177        );
179             </programlisting>
181             <para>
182                 Odnośniki:
183                 <itemizedlist>
184                     <listitem>
185                         <para>
186                             Specyfikacja RSS 2.0: <ulink url="http://blogs.law.harvard.edu/tech/rss">RSS 2.0</ulink>
187                         </para>
188                     </listitem>
189                     <listitem>
190                         <para>
191                             Specyfikacja Atom: <ulink url="http://tools.ietf.org/html/rfc4287">RFC 4287</ulink>
192                         </para>
193                     </listitem>
194                     <listitem>
195                         <para>
196                             Specyfikacja WFW: <ulink url="http://wellformedweb.org/news/wfw_namespace_elements">Well
197                             Formed Web</ulink>
198                         </para>
199                     </listitem>
200                     <listitem>
201                         <para>
202                             Specyfikacja iTunes:
203                             <ulink url="http://www.apple.com/itunes/store/podcaststechspecs.html">Specyfikacja
204                             Techniczna iTunes</ulink>
205                         </para>
206                     </listitem>
207                 </itemizedlist>
208             </para>
210         </sect3>
212         <sect3 id="zend.feed.importing.custom.importbuilder">
214             <title>Importowanie własnego źródła danych</title>
216             <para>
217                 Możesz utworzyć instancję Zend_Feed z dowolnego źródła danych
218                 implementując interfejs <code>Zend_Feed_Builder_Interface</code>.
219                 Aby użyć swojego obiektu za pomocą metody
220                 <code>Zend_Feed::importBuilder()</code> musisz po prostu
221                 zaimplementować metody <code>getHeader()</code> oraz
222                 <code>getEntries()</code>. Jako przykład implementacji możesz
223                 użyć klasy <code>Zend_Feed_Builder</code>, która przyjmuje
224                 tablicę jako argument konstruktora, przeprowadza pewną
225                 weryfikację, a następnie może być użyta za pomocą metody
226                 <code>importBuilder()</code>. Metoda <code>getHeader()</code>
227                 musi zwracać instancję klasy
228                 <code>Zend_Feed_Builder_Header</code>, a metoda
229                 <code>getEntries()</code> musi zwracać tablicę instancji klasy
230                 <code>Zend_Feed_Builder_Entry</code>.
231             </para>
233             <note>
234                 <para>
235                     <code>Zend_Feed_Builder</code> jest konkretną implementacją
236                     pokazującą sposób użycia. Namawiamy użytkownika do napisania
237                     własnej klasy, implementującej interfejs
238                     <code>Zend_Feed_Builder_Interface</code>.
239                 </para>
240             </note>
242             <para>
243                 Oto przykład użycia metody <code>Zend_Feed::importBuilder()</code>:
244             </para>
246             <programlisting role="php"><![CDATA[
247 // importowanie kanału z własnego źródła
248 $atomFeedFromArray =
249     Zend_Feed::importBuilder(new Zend_Feed_Builder($array));
251 // poniższy kod odpowiada kodowi powyżej;
252 // domyślnie zwracana jest instancja Zend_Feed_Atom
253 $atomFeedFromArray =
254     Zend_Feed::importArray(new Zend_Feed_Builder($array), 'atom');
256 // importowanie kanału rss z własnego źródła
257 $rssFeedFromArray =
258     Zend_Feed::importArray(new Zend_Feed_Builder($array), 'rss');
260             </programlisting>
262         </sect3>
264         <sect3 id="zend.feed.importing.custom.dump">
266             <title>Zrzucanie zawartości kanału</title>
268             <para>
269                 Aby zrzucić zawartość instancji <code>Zend_Feed_Abstract</code>,
270                 możesz użyć metody <code>send()</code> lub <code>saveXml()</code>.
271             </para>
273             <programlisting role="php">
274 <![CDATA[
275 assert($feed instanceof Zend_Feed_Abstract);
277 // zrzuca kanał do standardowego wyjścia
278 print $feed->saveXML();
280 // wysyła nagłówki oraz zrzuca zawartość kanału
281 $feed->send();
283             </programlisting>
284         </sect3>
285     </sect2>
286 </sect1>