Zend_File_Transfer-Migration.xml 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 17987 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.file.transfer.migration">
  5. <title>Migration von vorhergehenden Versionen</title>
  6. <para>
  7. Die <acronym>API</acronym> von <classname>Zend_File_Transfer</classname> wurde von Zeit zu
  8. Zeit verändert. Wenn man bereits angefangen hat <classname>Zend_File_Transfer</classname>
  9. und dessen Subkomponenten in vorhergehenden Versionen zu verwenden sollte man den anbei
  10. beschriebenen Richtlinien folgen um eigene Skripts auf die neue <acronym>API</acronym> zu
  11. migrieren.
  12. </para>
  13. <sect2 id="zend.file.transfer.migration.fromonenineonetooneten">
  14. <title>Migration von 1.9 zu 1.10 oder neuer</title>
  15. <sect3 id="zend.file.transfer.migration.fromonenineonetooneten.mimetype">
  16. <title>MimeType Prüfung</title>
  17. <para>
  18. Aus Sicherheitsgründen haben wir den standardmäßigen Fallback Mechanismus der
  19. <classname>MimeType</classname>, <classname>ExcludeMimeType</classname>,
  20. <classname>IsCompressed</classname> und <classname>IsImage</classname> Prüfungen
  21. ausgeschaltet. Das bedeutet, wenn die <emphasis>fileInfo</emphasis> oder
  22. <emphasis>magicMime</emphasis> Erweiterungen nicht gefunden werden können, dann
  23. wird die Prüfung immer fehlschlagen.
  24. </para>
  25. <para>
  26. Wenn es notwendig ist das man für die Prüfung die <acronym>HTTP</acronym> Felder
  27. verwendet welche vom Benutzer geschickt werden, dann kann man dieses Feature
  28. einschalten indem die <methodname>enableHeaderCheck()</methodname> Methode
  29. verwendet wird.
  30. </para>
  31. <note>
  32. <title>Sicherheits Hinweis</title>
  33. <para>
  34. Man sollte beachten, das wenn man sich auf die <acronym>HTTP</acronym> Felder
  35. verlässt, die vom Benutzer geschickt werden, das ein Sicherheits Risiko ist.
  36. Diese können einfach geändert werden und könnten es einem Benutzer erlauben eine
  37. schädliche Datei zu schicken.
  38. </para>
  39. </note>
  40. <example id="zend.file.transfer.migration.fromonenineonetooneten.example">
  41. <title>Die Verwendung der HTTP Felder erlauben</title>
  42. <programlisting language="php"><![CDATA[
  43. // Bei der Initiierung
  44. $valid = new Zend_File_Transfer_Adapter_Http(array('headerCheck' => true);
  45. // oder im Nachhinein
  46. $valid->enableHeaderCheck();
  47. ]]></programlisting>
  48. </example>
  49. </sect3>
  50. </sect2>
  51. <sect2 id="zend.file.transfer.migration.fromonesixtooneseven">
  52. <title>Migration von 1.6 zu 1.7 oder neuer</title>
  53. <sect3 id="zend.file.transfer.migration.fromonesixtooneseven.validators">
  54. <title>Änderungen bei der Verwendung von Filtern und Prüfungen</title>
  55. <para>
  56. Wie von Benutzern erwähnt, arbeiteten die Prüfungen von
  57. <classname>Zend_File_Transfer</classname> nicht in Verbindung mit
  58. <classname>Zend_Config</classname> zusammen, durch den Fakt das Sie keine benannten
  59. Arrays verwendet haben.
  60. </para>
  61. <para>
  62. Deswegen wurden alle Filter und Prüfungen für
  63. <classname>Zend_File_Transfer</classname> überarbeitet. Wärend die alten Signaturen
  64. weiterhin funktionieren, wurden sie als veraltet markiert, und werfen eine
  65. <acronym>PHP</acronym> Notiz mit der Aufforderung das zu beheben.
  66. </para>
  67. <para>
  68. Die folgende Liste zeigt die Änderungen und was für die richtige Verwendung der
  69. Parameter getan werden muß.
  70. </para>
  71. <sect4 id="zend.file.transfer.migration.fromonesixtooneseven.validators.rename">
  72. <title>Filter: Rename</title>
  73. <itemizedlist>
  74. <listitem><para>
  75. Alte <acronym>API</acronym> der Methode:
  76. <classname>Zend_Filter_File_Rename($oldfile, $newfile,
  77. $overwrite)</classname>
  78. </para></listitem>
  79. <listitem><para>
  80. Neue <acronym>API</acronym> der Methode:
  81. <methodname>Zend_Filter_File_Rename($options)</methodname> wobei $options
  82. die folgenden Schlüssel für das Array akzeptiert:
  83. <emphasis>source</emphasis> identisch mit $oldfile,
  84. <emphasis>target</emphasis> identisch mit $newfile,
  85. <emphasis>overwrite</emphasis> identisch mit $overwrite
  86. </para></listitem>
  87. </itemizedlist>
  88. <example id="zend.file.transfer.migration.fromonesixonetooneseven.validators.rename.example">
  89. <title>Änderungen für den Rename Filter von 1.6 zu 1.7</title>
  90. <programlisting language="php"><![CDATA[
  91. // Beispiel für 1.6
  92. $upload = new Zend_File_Transfer_Adapter_Http();
  93. $upload->addFilter('Rename',
  94. array('/path/to/oldfile', '/path/to/newfile', true));
  95. // Gleiches Beispiel für 1.7
  96. $upload = new Zend_File_Transfer_Adapter_Http();
  97. $upload->addFilter('Rename',
  98. array('source' => '/path/to/oldfile',
  99. 'target' => '/path/to/newfile',
  100. 'overwrite' => true));
  101. ]]></programlisting>
  102. </example>
  103. </sect4>
  104. <sect4 id="zend.file.transfer.migration.fromonesixtooneseven.validators.count">
  105. <title>Prüfung: Count</title>
  106. <itemizedlist>
  107. <listitem><para>
  108. Alte <acronym>API</acronym> der Methode:
  109. <methodname>Zend_Validate_File_Count($min,
  110. $max)</methodname>
  111. </para></listitem>
  112. <listitem><para>
  113. Neue <acronym>API</acronym> der Methode:
  114. <methodname>Zend_Validate_File_Count($options)</methodname> wobei $options
  115. die folgenden Schlüssel für das Array akzeptiert:
  116. <emphasis>min</emphasis> identisch mit $min,
  117. <emphasis>max</emphasis> identisch mit $max,
  118. </para></listitem>
  119. </itemizedlist>
  120. <example id="zend.file.transfer.migration.fromonesixonetooneseven.validators.count.example">
  121. <title>Änderungen für die Count Prüfung von 1.6 zu 1.7</title>
  122. <programlisting language="php"><![CDATA[
  123. // Beispiel für 1.6
  124. $upload = new Zend_File_Transfer_Adapter_Http();
  125. $upload->addValidator('Count',
  126. array(2, 3));
  127. // Gleiches Beispiel für 1.7
  128. $upload = new Zend_File_Transfer_Adapter_Http();
  129. $upload->addValidator('Count',
  130. false,
  131. array('min' => 2,
  132. 'max' => 3));
  133. ]]></programlisting>
  134. </example>
  135. </sect4>
  136. <sect4 id="zend.file.transfer.migration.fromonesixtooneseven.validators.extension">
  137. <title>Prüfung: Extension</title>
  138. <itemizedlist>
  139. <listitem><para>
  140. Alte <acronym>API</acronym> der Methode:
  141. <classname>Zend_Validate_File_Extension($extension, $case)</classname>
  142. </para></listitem>
  143. <listitem><para>
  144. Neue <acronym>API</acronym> der Methode:
  145. <methodname>Zend_Validate_File_Extension($options)</methodname> wobei
  146. $options die folgenden Schlüssel für das Array akzeptiert:
  147. <emphasis>*</emphasis> identisch mit $extension und kann jeden anderen
  148. Schlüssel haben <emphasis>case</emphasis> identisch mit $case,
  149. </para></listitem>
  150. </itemizedlist>
  151. <example id="zend.file.transfer.migration.fromonesixonetooneseven.validators.extension.example">
  152. <title>Änderungen für die Extension Prüfung von 1.6 zu 1.7</title>
  153. <programlisting language="php"><![CDATA[
  154. // Beispiel für 1.6
  155. $upload = new Zend_File_Transfer_Adapter_Http();
  156. $upload->addValidator('Extension',
  157. array('jpg,gif,bmp', true));
  158. // Gleiches Beispiel für 1.7
  159. $upload = new Zend_File_Transfer_Adapter_Http();
  160. $upload->addValidator('Extension',
  161. false,
  162. array('extension1' => 'jpg,gif,bmp',
  163. 'case' => true));
  164. ]]></programlisting>
  165. </example>
  166. </sect4>
  167. <sect4 id="zend.file.transfer.migration.fromonesixtooneseven.validators.filessize">
  168. <title>Prüfung: FilesSize</title>
  169. <itemizedlist>
  170. <listitem><para>
  171. Alte <acronym>API</acronym> der Methode:
  172. <classname>Zend_Validate_File_FilesSize($min, $max, $bytestring)</classname>
  173. </para></listitem>
  174. <listitem><para>
  175. Neue <acronym>API</acronym> der Methode:
  176. <methodname>Zend_Validate_File_FilesSize($options)</methodname> wobei
  177. $options die folgenden Schlüssel für das Array akzeptiert:
  178. <emphasis>min</emphasis> identisch mit $min,
  179. <emphasis>max</emphasis> identisch mit $max,
  180. <emphasis>bytestring</emphasis> identisch mit $bytestring
  181. </para></listitem>
  182. </itemizedlist>
  183. <para>
  184. Zustätzlich wurde die Signatur der <methodname>useByteString()</methodname>
  185. Methode geändert. Sie kann nur verwendet werden um zu testen ob die Prüfung
  186. ByteStrings in den erzeugten Meldungen verwendet oder ncht. Um den Wert dieses
  187. Flags zu setzen muß die <methodname>setUseByteString()</methodname> Methode
  188. verwendet werden.
  189. </para>
  190. <example id="zend.file.transfer.migration.fromonesixonetooneseven.validators.filessize.example">
  191. <title>Änderungen für die FilesSize Prüfung von 1.6 zu 1.7</title>
  192. <programlisting language="php"><![CDATA[
  193. // Beispiel für 1.6
  194. $upload = new Zend_File_Transfer_Adapter_Http();
  195. $upload->addValidator('FilesSize',
  196. array(100, 10000, true));
  197. // Gleiches Beispiel für 1.7
  198. $upload = new Zend_File_Transfer_Adapter_Http();
  199. $upload->addValidator('FilesSize',
  200. false,
  201. array('min' => 100,
  202. 'max' => 10000,
  203. 'bytestring' => true));
  204. // Beispiel für 1.6
  205. $upload->useByteString(true); // Flag setzen
  206. // Gleiches Beispiel für 1.7
  207. $upload->setUseByteSting(true); // Flag setzen
  208. ]]></programlisting>
  209. </example>
  210. </sect4>
  211. <sect4 id="zend.file.transfer.migration.fromonesixtooneseven.validators.hash">
  212. <title>Prüfung: Hash</title>
  213. <itemizedlist>
  214. <listitem><para>
  215. Alte <acronym>API</acronym> der Methode:
  216. <classname>Zend_Validate_File_Hash($hash, $algorithm)</classname>
  217. </para></listitem>
  218. <listitem><para>
  219. Neue <acronym>API</acronym> der Methode:
  220. <methodname>Zend_Validate_File_Hash($options)</methodname> wobei $options
  221. die folgenden Schlüssel für das Array akzeptiert:
  222. <emphasis>*</emphasis> identisch mit $hash und kann jeden anderen Schlüssel
  223. haben <emphasis>algorithm</emphasis> identisch mit $algorithm,
  224. </para></listitem>
  225. </itemizedlist>
  226. <example id="zend.file.transfer.migration.fromonesixonetooneseven.validators.hash.example">
  227. <title>Änderungen für die Hash Prüfung von 1.6 zu 1.7</title>
  228. <programlisting language="php"><![CDATA[
  229. // Beispiel für 1.6
  230. $upload = new Zend_File_Transfer_Adapter_Http();
  231. $upload->addValidator('Hash',
  232. array('12345', 'md5'));
  233. // Gleiches Beispiel für 1.7
  234. $upload = new Zend_File_Transfer_Adapter_Http();
  235. $upload->addValidator('Hash',
  236. false,
  237. array('hash1' => '12345',
  238. 'algorithm' => 'md5'));
  239. ]]></programlisting>
  240. </example>
  241. </sect4>
  242. <sect4 id="zend.file.transfer.migration.fromonesixtooneseven.validators.imagesize">
  243. <title>Prüfung: ImageSize</title>
  244. <itemizedlist>
  245. <listitem><para>
  246. Alte <acronym>API</acronym> der Methode:
  247. <classname>Zend_Validate_File_ImageSize($minwidth, $minheight, $maxwidth,
  248. $maxheight)</classname>
  249. </para></listitem>
  250. <listitem><para>
  251. Neue <acronym>API</acronym> der Methode:
  252. <methodname>Zend_Validate_File_FilesSize($options)</methodname> wobei
  253. $options die folgenden Schlüssel für das Array akzeptiert:
  254. <emphasis>minwidth</emphasis> identisch mit $minwidth,
  255. <emphasis>maxwidth</emphasis> identisch mit $maxwidth,
  256. <emphasis>minheight</emphasis> identisch mit $minheight,
  257. <emphasis>maxheight</emphasis> identisch mit $maxheight,
  258. </para></listitem>
  259. </itemizedlist>
  260. <example id="zend.file.transfer.migration.fromonesixonetooneseven.validators.imagesize.example">
  261. <title>Änderungen für die ImageSize Prüfung von 1.6 zu 1.7</title>
  262. <programlisting language="php"><![CDATA[
  263. // Beispiel für 1.6
  264. $upload = new Zend_File_Transfer_Adapter_Http();
  265. $upload->addValidator('ImageSize',
  266. array(10, 10, 100, 100));
  267. // Gleiches Beispiel für 1.7
  268. $upload = new Zend_File_Transfer_Adapter_Http();
  269. $upload->addValidator('ImageSize',
  270. false,
  271. array('minwidth' => 10,
  272. 'minheight' => 10,
  273. 'maxwidth' => 100,
  274. 'maxheight' => 100));
  275. ]]></programlisting>
  276. </example>
  277. </sect4>
  278. <sect4 id="zend.file.transfer.migration.fromonesixtooneseven.validators.size">
  279. <title>Prüfung: Size</title>
  280. <itemizedlist>
  281. <listitem><para>
  282. Alte <acronym>API</acronym> der Methode:
  283. <classname>Zend_Validate_File_Size($min, $max, $bytestring)</classname>
  284. </para></listitem>
  285. <listitem><para>
  286. Neue <acronym>API</acronym> der Methode:
  287. <methodname>Zend_Validate_File_Size($options)</methodname> wobei $options
  288. die folgenden Schlüssel für das Array akzeptiert:
  289. <emphasis>min</emphasis> identisch mit $min,
  290. <emphasis>max</emphasis> identisch mit $max,
  291. <emphasis>bytestring</emphasis> identisch mit $bytestring
  292. </para></listitem>
  293. </itemizedlist>
  294. <example id="zend.file.transfer.migration.fromonesixonetooneseven.validators.size.example">
  295. <title>Änderungen für die Size Prüfung von 1.6 zu 1.7</title>
  296. <programlisting language="php"><![CDATA[
  297. // Beispiel für 1.6
  298. $upload = new Zend_File_Transfer_Adapter_Http();
  299. $upload->addValidator('Size',
  300. array(100, 10000, true));
  301. // Gleiches Beispiel für 1.7
  302. $upload = new Zend_File_Transfer_Adapter_Http();
  303. $upload->addValidator('Size',
  304. false,
  305. array('min' => 100,
  306. 'max' => 10000,
  307. 'bytestring' => true));
  308. ]]></programlisting>
  309. </example>
  310. </sect4>
  311. </sect3>
  312. </sect2>
  313. <sect2 id="zend.file.transfer.migration.fromonesixonetoonesixtwo">
  314. <title>Migration von 1.6.1 zu 1.6.2 oder neuer</title>
  315. <sect3 id="zend.file.transfer.migration.fromonesixonetoonesixtwo.validators">
  316. <title>Änderungen bei der Verwendung von Prüfungen</title>
  317. <para>
  318. Wie von Benutzern festgestellt wurde, haben die Prüfungen von
  319. <classname>Zend_File_Transfer</classname> nicht auf die gleiche Art und Weise
  320. funktioniert wie standardmäßigen von <classname>Zend_Form</classname>.
  321. <classname>Zend_Form</classname> erlaubt die Verwendung eines
  322. <varname>$breakChainOnFailure</varname> Parameters der die Prüfung für alle weitere
  323. Prüfer unterbricht wenn ein Prüffehler aufgetreten ist.
  324. </para>
  325. <para>
  326. Deshalb wurde dieser Parameter bei allen bestehenden Prüfungen von
  327. <classname>Zend_File_Transfer</classname> hinzugefügt.
  328. </para>
  329. <itemizedlist>
  330. <listitem><para>
  331. Alte <acronym>API</acronym> der Methode:
  332. <methodname>addValidator($validator, $options, $files)</methodname>.
  333. </para></listitem>
  334. <listitem><para>
  335. Neue <acronym>API</acronym> der Methode:
  336. <methodname>addValidator($validator, $breakChainOnFailure, $options,
  337. $files)</methodname>.
  338. </para></listitem>
  339. </itemizedlist>
  340. <para>
  341. Um also eigene Skripte auf die neue <acronym>API</acronym> zu migrieren, muß einfach
  342. ein <constant>FALSE</constant> nach der Definition der gewünschten Prüfung
  343. hinzugefügt werden.
  344. </para>
  345. <example id="zend.file.transfer.migration.fromonesixonetoonesixtwo.example">
  346. <title>Wie man eigene Dateiprüfungen von 1.6.1 auf 1.6.2 ändert</title>
  347. <programlisting language="php"><![CDATA[
  348. // Beispiel für 1.6.1
  349. $upload = new Zend_File_Transfer_Adapter_Http();
  350. $upload->addValidator('FilesSize', array('1B', '100kB'));
  351. // Selbes Beispiel für 1.6.2 und neuer
  352. // Beachte das hinzugefügte boolsche false
  353. $upload = new Zend_File_Transfer_Adapter_Http();
  354. $upload->addValidator('FilesSize', false, array('1B', '100kB'));
  355. ]]></programlisting>
  356. </example>
  357. </sect3>
  358. </sect2>
  359. </sect1>