Recherche avancée

Médias (0)

Mot : - Tags -/flash

Aucun média correspondant à vos critères n’est disponible sur le site.

Autres articles (92)

  • Pas question de marché, de cloud etc...

    10 avril 2011

    Le vocabulaire utilisé sur ce site essaie d’éviter toute référence à la mode qui fleurit allègrement
    sur le web 2.0 et dans les entreprises qui en vivent.
    Vous êtes donc invité à bannir l’utilisation des termes "Brand", "Cloud", "Marché" etc...
    Notre motivation est avant tout de créer un outil simple, accessible à pour tout le monde, favorisant
    le partage de créations sur Internet et permettant aux auteurs de garder une autonomie optimale.
    Aucun "contrat Gold ou Premium" n’est donc prévu, aucun (...)

  • Automated installation script of MediaSPIP

    25 avril 2011, par

    To overcome the difficulties mainly due to the installation of server side software dependencies, an "all-in-one" installation script written in bash was created to facilitate this step on a server with a compatible Linux distribution.
    You must have access to your server via SSH and a root account to use it, which will install the dependencies. Contact your provider if you do not have that.
    The documentation of the use of this installation script is available here.
    The code of this (...)

  • Support audio et vidéo HTML5

    10 avril 2011

    MediaSPIP utilise les balises HTML5 video et audio pour la lecture de documents multimedia en profitant des dernières innovations du W3C supportées par les navigateurs modernes.
    Pour les navigateurs plus anciens, le lecteur flash Flowplayer est utilisé.
    Le lecteur HTML5 utilisé a été spécifiquement créé pour MediaSPIP : il est complètement modifiable graphiquement pour correspondre à un thème choisi.
    Ces technologies permettent de distribuer vidéo et son à la fois sur des ordinateurs conventionnels (...)

Sur d’autres sites (12094)

  • Evolution #3973 : Brancher inc/distant recuperer_url() sur une librairie récente

    20 février 2019, par Eric Camus

    Bonjour,
    Suite à un changement de machine pour nos SPIP (de WIMP vers LAMP (centos)) de nombreux flux RSS ne fonctionnaient plus, la cause : la fonction ’recuperer_url’ !!!.
    J’ai donc réécrit le corps de cette fonction avec la biblio PHP CURL a partir du code dans SPIP 3.2.0 (je sais que je suis en retard d’une version).
    Je vous le livre comme je viens de le finir après un léger debug.

    1. <span class="CodeRay"><span class="keyword">function</span> <span class="function">recuperer_url</span>(<span class="local-variable">$url</span>, <span class="local-variable">$options</span> = <span class="predefined">array</span>()) {
    2.     <span class="local-variable">$default</span> = <span class="predefined">array</span>(
    3.         <span class="string"><span class="delimiter">'</span><span class="content">transcoder</span><span class="delimiter">'</span></span> => <span class="predefined-constant">false</span>,
    4.         <span class="string"><span class="delimiter">'</span><span class="content">methode</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="content">GET</span><span class="delimiter">'</span></span>,
    5.         <span class="string"><span class="delimiter">'</span><span class="content">taille_max</span><span class="delimiter">'</span></span> => <span class="predefined-constant">null</span>,
    6.         <span class="string"><span class="delimiter">'</span><span class="content">datas</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="delimiter">'</span></span>,
    7.         <span class="string"><span class="delimiter">'</span><span class="content">boundary</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="delimiter">'</span></span>,
    8.         <span class="string"><span class="delimiter">'</span><span class="content">refuser_gz</span><span class="delimiter">'</span></span> => <span class="predefined-constant">false</span>,
    9.         <span class="string"><span class="delimiter">'</span><span class="content">if_modified_since</span><span class="delimiter">'</span></span> => <span class="integer">0</span>,
    10.         <span class="string"><span class="delimiter">'</span><span class="content">uri_referer</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="delimiter">'</span></span>,
    11.         <span class="string"><span class="delimiter">'</span><span class="content">file</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="delimiter">'</span></span>,
    12.         <span class="string"><span class="delimiter">'</span><span class="content">follow_location</span><span class="delimiter">'</span></span> => <span class="integer">10</span>,
    13.         <span class="string"><span class="delimiter">'</span><span class="content">version_http</span><span class="delimiter">'</span></span> => _INC_DISTANT_VERSION_HTTP,
    14.     );
    15.     <span class="local-variable">$options</span> = <span class="predefined">array_merge</span>(<span class="local-variable">$default</span>, <span class="local-variable">$options</span>);
    16.     <span class="comment">// copier directement dans un fichier ?</span>
    17.     <span class="local-variable">$copy</span> = <span class="local-variable">$options</span>[<span class="string"><span class="delimiter">'</span><span class="content">file</span><span class="delimiter">'</span></span>];
    18.  
    19.     <span class="keyword">if</span> (<span class="local-variable">$options</span>[<span class="string"><span class="delimiter">'</span><span class="content">methode</span><span class="delimiter">'</span></span>] == <span class="string"><span class="delimiter">'</span><span class="content">HEAD</span><span class="delimiter">'</span></span>) {
    20.         <span class="local-variable">$options</span>[<span class="string"><span class="delimiter">'</span><span class="content">taille_max</span><span class="delimiter">'</span></span>] = <span class="integer">0</span>;
    21.     }
    22.     <span class="keyword">if</span> (<span class="predefined">is_null</span>(<span class="local-variable">$options</span>[<span class="string"><span class="delimiter">'</span><span class="content">taille_max</span><span class="delimiter">'</span></span>])) {
    23.         <span class="local-variable">$options</span>[<span class="string"><span class="delimiter">'</span><span class="content">taille_max</span><span class="delimiter">'</span></span>] = <span class="local-variable">$copy</span> ? _COPIE_LOCALE_MAX_SIZE : _INC_DISTANT_MAX_SIZE;
    24.     }
    25.  
    26.     <span class="comment">// Accepter les URLs au format feed:// ou qui ont oublie le http:// ou les urls relatives au protocole</span>
    27.     <span class="local-variable">$url</span> = <span class="predefined">preg_replace</span>(<span class="string"><span class="delimiter">'</span><span class="content">,^feed://,i</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">http://</span><span class="delimiter">'</span></span>, <span class="local-variable">$url</span>);
    28.     <span class="keyword">if</span> (!tester_url_absolue(<span class="local-variable">$url</span>)) {
    29.         <span class="local-variable">$url</span> = <span class="string"><span class="delimiter">'</span><span class="content">http://</span><span class="delimiter">'</span></span> . <span class="local-variable">$url</span>;
    30.     } <span class="keyword">elseif</span> (<span class="predefined">strncmp</span>(<span class="local-variable">$url</span>, <span class="string"><span class="delimiter">'</span><span class="content">//</span><span class="delimiter">'</span></span>, <span class="integer">2</span>) == <span class="integer">0</span>) {
    31.         <span class="local-variable">$url</span> = <span class="string"><span class="delimiter">'</span><span class="content">http:</span><span class="delimiter">'</span></span> . <span class="local-variable">$url</span>;
    32.     }
    33.  
    34.     <span class="local-variable">$url</span> = url_to_ascii(<span class="local-variable">$url</span>);
    35.  
    36.     <span class="local-variable">$result</span> = <span class="predefined">array</span>(
    37.         <span class="string"><span class="delimiter">'</span><span class="content">status</span><span class="delimiter">'</span></span> => <span class="integer">0</span>,
    38.         <span class="string"><span class="delimiter">'</span><span class="content">headers</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="delimiter">'</span></span>,
    39.         <span class="string"><span class="delimiter">'</span><span class="content">page</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="delimiter">'</span></span>,
    40.         <span class="string"><span class="delimiter">'</span><span class="content">length</span><span class="delimiter">'</span></span> => <span class="integer">0</span>,
    41.         <span class="string"><span class="delimiter">'</span><span class="content">last_modified</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="delimiter">'</span></span>,
    42.         <span class="string"><span class="delimiter">'</span><span class="content">location</span><span class="delimiter">'</span></span> => <span class="string"><span class="delimiter">'</span><span class="delimiter">'</span></span>,
    43.         <span class="string"><span class="delimiter">'</span><span class="content">url</span><span class="delimiter">'</span></span> => <span class="local-variable">$url</span>
    44.     );
    45.  
    46.     <span class="local-variable">$pCurl</span>=curl_init(<span class="local-variable">$url</span>);
    47.     curl_setopt(<span class="local-variable">$pCurl</span>,<span class="constant">CURLOPT_HTTP_VERSION</span>,<span class="constant">CURL_HTTP_VERSION_1_1</span>);
    48.     curl_setopt(<span class="local-variable">$pCurl</span>,<span class="constant">CURLOPT_SSL_VERIFYPEER</span>,<span class="predefined-constant">false</span>);
    49.     curl_setopt(<span class="local-variable">$pCurl</span>,<span class="constant">CURLOPT_RETURNTRANSFER</span>,<span class="predefined-constant">true</span>);
    50.     curl_setopt(<span class="local-variable">$pCurl</span>,<span class="constant">CURLOPT_FOLLOWLOCATION</span>,<span class="predefined-constant">true</span>);
    51.     curl_setopt(<span class="local-variable">$pCurl</span>,<span class="constant">CURLOPT_TIMEOUT</span>,<span class="integer">30</span>);  <span class="comment">// timeout 30s</span>
    52.     <span class="keyword">if</span> (!<span class="predefined">empty</span>(<span class="local-variable">$options</span>[<span class="string"><span class="delimiter">'</span><span class="content">datas</span><span class="delimiter">'</span></span>])) {  <span class="comment">// des datas</span>
    53.         curl_setopt(<span class="local-variable">$pCurl</span>,<span class="constant">CURLOPT_POST</span>,<span class="predefined-constant">true</span>);
    54.         curl_setopt(<span class="local-variable">$pCurl</span>,<span class="constant">CURLOPT_SAFE_UPLOAD</span>,<span class="predefined-constant">true</span>);
    55.         curl_setopt(<span class="local-variable">$pCurl</span>,<span class="constant">CURLOPT_POSTFIELDS</span>,<span class="local-variable">$options</span>[<span class="string"><span class="delimiter">'</span><span class="content">datas</span><span class="delimiter">'</span></span>]);
    56.         <span class="local-variable">$options</span>[<span class="string"><span class="delimiter">'</span><span class="content">methode</span><span class="delimiter">'</span></span>]=<span class="string"><span class="delimiter">'</span><span class="content">POST</span><span class="delimiter">'</span></span>;
    57.     }
    58.     <span class="keyword">if</span>(<span class="local-variable">$options</span>[<span class="string"><span class="delimiter">'</span><span class="content">methode</span><span class="delimiter">'</span></span>]==<span class="string"><span class="delimiter">'</span><span class="content">HEAD</span><span class="delimiter">'</span></span>) {
    59.         curl_setopt(<span class="local-variable">$pCurl</span>,<span class="constant">CURLOPT_NOBODY</span>,<span class="predefined-constant">true</span>);
    60.         <span class="local-variable">$options</span>[<span class="string"><span class="delimiter">'</span><span class="content">taille_max</span><span class="delimiter">'</span></span>]=<span class="integer">0</span>;  <span class="comment">// pas de taille</span>
    61.         <span class="local-variable">$options</span>[<span class="string"><span class="delimiter">'</span><span class="content">if_modified_since</span><span class="delimiter">'</span></span>]=<span class="integer">0</span>;  <span class="comment">// pas de date de modif</span>
    62.         <span class="local-variable">$copy</span>=<span class="string"><span class="delimiter">'</span><span class="delimiter">'</span></span>;  <span class="comment">// pas de copie dans fichier</span>
    63.     }
    64.     <span class="keyword">if</span>(<span class="local-variable">$options</span>[<span class="string"><span class="delimiter">'</span><span class="content">if_modified_since</span><span class="delimiter">'</span></span>]><span class="integer">0</span>) {
    65.         curl_setopt(<span class="local-variable">$pCurl</span>,<span class="constant">CURLOPT_TIMEVALUE</span>,<span class="local-variable">$options</span>[<span class="string"><span class="delimiter">'</span><span class="content">if_modified_since</span><span class="delimiter">'</span></span>]);
    66.     }
    67.     <span class="keyword">if</span>(<span class="local-variable">$options</span>[<span class="string"><span class="delimiter">'</span><span class="content">taille_max</span><span class="delimiter">'</span></span>]><span class="integer">0</span>) {
    68.         curl_setopt(<span class="local-variable">$pCurl</span>,<span class="constant">CURLOPT_RANGE</span>,<span class="string"><span class="delimiter">'</span><span class="content">0-</span><span class="delimiter">'</span></span>.<span class="local-variable">$options</span>[<span class="string"><span class="delimiter">'</span><span class="content">taille_max</span><span class="delimiter">'</span></span>]);
    69.     }
    70.     <span class="keyword">if</span>(<span class="local-variable">$options</span>[<span class="string"><span class="delimiter">'</span><span class="content">uri_referer</span><span class="delimiter">'</span></span>]) {
    71.         curl_setopt(<span class="local-variable">$pCurl</span>,<span class="constant">CURLOPT_REFERER</span>,<span class="local-variable">$options</span>[<span class="string"><span class="delimiter">'</span><span class="content">uri_referer</span><span class="delimiter">'</span></span>]);
    72.     }
    73.     <span class="local-variable">$opt_header</span>=<span class="predefined-constant">true</span>;
    74.     <span class="local-variable">$fheader</span>=<span class="string"><span class="delimiter">'</span><span class="delimiter">'</span></span>;  <span class="comment">// nom du fichier contenant le header</span>
    75.     <span class="keyword">if</span>(<span class="local-variable">$copy</span>) {
    76.         <span class="local-variable">$fc</span>=<span class="predefined">fopen</span>(<span class="local-variable">$copy</span>,<span class="string"><span class="delimiter">'</span><span class="content">w</span><span class="delimiter">'</span></span>);
    77.         <span class="keyword">if</span>(<span class="local-variable">$fc</span>) {
    78.             <span class="local-variable">$fheader</span>=_DIR_TMP.<span class="predefined">md5</span>(<span class="local-variable">$copy</span>).<span class="string"><span class="delimiter">'</span><span class="content">_head.txt</span><span class="delimiter">'</span></span>;
    79.             <span class="local-variable">$fh</span>=<span class="predefined">fopen</span>(<span class="local-variable">$fheader</span>,<span class="string"><span class="delimiter">'</span><span class="content">w</span><span class="delimiter">'</span></span>);
    80.             <span class="keyword">if</span>(<span class="local-variable">$fh</span>) {
    81.                 curl_setopt(<span class="local-variable">$pCurl</span>,<span class="constant">CURLOPT_FILE</span>,<span class="local-variable">$fc</span>);
    82.                 curl_setopt(<span class="local-variable">$pCurl</span>,<span class="constant">CURLOPT_WRITEHEADER</span>,<span class="local-variable">$fh</span>);
    83.                 <span class="local-variable">$opt_header</span>=<span class="predefined-constant">false</span>;
    84.             }
    85.             <span class="keyword">else</span> {
    86.                 <span class="predefined">fclose</span>(<span class="local-variable">$fc</span>);
    87.             }
    88.         }
    89.     }
    90.     curl_setopt(<span class="local-variable">$pCurl</span>,<span class="constant">CURLOPT_HEADER</span>,<span class="local-variable">$opt_header</span>);
    91.     <span class="local-variable">$cont</span>=curl_exec(<span class="local-variable">$pCurl</span>);
    92.     <span class="local-variable">$info</span>=curl_getinfo(<span class="local-variable">$pCurl</span>);
    93.     curl_close(<span class="local-variable">$pCurl</span>);  <span class="comment">// fermer curl</span>
    94.     <span class="keyword">if</span>(<span class="local-variable">$fc</span>) {
    95.         <span class="predefined">fclose</span>(<span class="local-variable">$fc</span>);  <span class="comment">// fermer fichier</span>
    96.         <span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">file</span><span class="delimiter">'</span></span>]=<span class="local-variable">$copy</span>;
    97.     }
    98.     <span class="keyword">if</span>(<span class="local-variable">$fh</span>) {
    99.         <span class="predefined">fclose</span>(<span class="local-variable">$fh</span>);
    100.     }
    101.     <span class="keyword">if</span>(<span class="local-variable">$cont</span>===<span class="predefined-constant">false</span>) {
    102.         spip_log(<span class="string"><span class="delimiter">'</span><span class="content">ECHEC CURL </span><span class="delimiter">'</span></span>.<span class="local-variable">$url</span>,_LOG_ERREUR);
    103.         <span class="keyword">if</span>(<span class="predefined">file_exists</span>(<span class="local-variable">$copy</span>)) <span class="predefined">unlink</span>(<span class="local-variable">$copy</span>);  <span class="comment">// suppr fichier sur erreur</span>
    104.         <span class="keyword">if</span>(<span class="predefined">file_exists</span>(<span class="local-variable">$fheader</span>)) <span class="predefined">unlink</span>(<span class="local-variable">$fheader</span>);
    105.         <span class="keyword">return</span> <span class="predefined-constant">false</span>;
    106.     }
    107.     <span class="comment">// on range le tout dans la var $result</span>
    108.     <span class="local-variable">$body</span>=<span class="string"><span class="delimiter">'</span><span class="delimiter">'</span></span>;
    109.     <span class="local-variable">$head</span>=<span class="string"><span class="delimiter">'</span><span class="delimiter">'</span></span>;
    110.     <span class="keyword">if</span>(<span class="local-variable">$cont</span>!==<span class="predefined-constant">true</span>) {  <span class="comment">// cas de demande par fichier</span>
    111.         <span class="keyword">if</span>(<span class="local-variable">$options</span>[<span class="string"><span class="delimiter">'</span><span class="content">methode</span><span class="delimiter">'</span></span>]==<span class="string"><span class="delimiter">'</span><span class="content">HEAD</span><span class="delimiter">'</span></span>) {
    112.             <span class="local-variable">$head</span>=<span class="local-variable">$cont</span>;
    113.         }
    114.         <span class="keyword">else</span> {
    115.             <span class="keyword">if</span>(<span class="predefined">isset</span>(<span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">download_content_length</span><span class="delimiter">'</span></span>]) <span class="keyword">and</span> <span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">download_content_length</span><span class="delimiter">'</span></span>]><span class="integer">0</span>) {
    116.                 <span class="local-variable">$body</span>=<span class="predefined">substr</span>(<span class="local-variable">$cont</span>,-<span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">download_content_length</span><span class="delimiter">'</span></span>]);
    117.                 <span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">length</span><span class="delimiter">'</span></span>]=<span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">download_content_length</span><span class="delimiter">'</span></span>];
    118.             }
    119.             <span class="keyword">elseif</span>(<span class="predefined">isset</span>(<span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">size_download</span><span class="delimiter">'</span></span>]) <span class="keyword">and</span> <span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">size_download</span><span class="delimiter">'</span></span>]><span class="integer">0</span>) {
    120.                 <span class="local-variable">$body</span>=<span class="predefined">substr</span>(<span class="local-variable">$cont</span>,-<span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">size_download</span><span class="delimiter">'</span></span>]);
    121.                 <span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">length</span><span class="delimiter">'</span></span>]=<span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">size_download</span><span class="delimiter">'</span></span>];
    122.             }
    123.             <span class="keyword">if</span>(<span class="predefined">isset</span>(<span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">header_size</span><span class="delimiter">'</span></span>]) <span class="keyword">and</span> <span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">header_size</span><span class="delimiter">'</span></span>]><span class="integer">0</span>) {
    124.                 <span class="local-variable">$head</span>=<span class="predefined">substr</span>(<span class="local-variable">$cont</span>,<span class="integer">0</span>,<span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">header_size</span><span class="delimiter">'</span></span>]);
    125.                 <span class="keyword">if</span>(<span class="local-variable">$body</span>==<span class="string"><span class="delimiter">'</span><span class="delimiter">'</span></span>) {  <span class="comment">// cas ou download_content_length=-1 !!!!!!</span>
    126.                     <span class="local-variable">$body</span>=<span class="predefined">substr</span>(<span class="local-variable">$cont</span>,<span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">header_size</span><span class="delimiter">'</span></span>]);
    127.                     <span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">length</span><span class="delimiter">'</span></span>]=<span class="predefined">strlen</span>(<span class="local-variable">$body</span>);  <span class="comment">// pare absence</span>
    128.                 }
    129.             }
    130.         }
    131.     }
    132.     <span class="keyword">if</span>(<span class="local-variable">$fheader</span> <span class="keyword">and</span> <span class="predefined">file_exists</span>(<span class="local-variable">$fheader</span>)) {  <span class="comment">// si un fichier de header est fait</span>
    133.         <span class="local-variable">$head</span>=<span class="predefined">file_get_contents</span>(<span class="local-variable">$fheader</span>);
    134.         <span class="predefined">unlink</span>(<span class="local-variable">$fheader</span>);
    135.     }
    136.     <span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">status</span><span class="delimiter">'</span></span>]=<span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">http_code</span><span class="delimiter">'</span></span>];
    137.     <span class="keyword">if</span>(<span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">http_code</span><span class="delimiter">'</span></span>]==<span class="integer">206</span>) <span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">status</span><span class="delimiter">'</span></span>]=<span class="integer">200</span>;  <span class="comment">// SPIP refuse les partial content alors qu'il les demande</span>
    138.     <span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">headers</span><span class="delimiter">'</span></span>]=<span class="local-variable">$head</span>;
    139.     <span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">page</span><span class="delimiter">'</span></span>]=<span class="local-variable">$body</span>;
    140.     <span class="keyword">if</span>(<span class="predefined">isset</span>(<span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">download_content_length</span><span class="delimiter">'</span></span>]) <span class="keyword">and</span> <span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">download_content_length</span><span class="delimiter">'</span></span>]><span class="integer">0</span>) {
    141.         <span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">length</span><span class="delimiter">'</span></span>]=<span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">download_content_length</span><span class="delimiter">'</span></span>];
    142.     }
    143.     <span class="keyword">elseif</span>(<span class="predefined">isset</span>(<span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">size_download</span><span class="delimiter">'</span></span>]) <span class="keyword">and</span> <span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">size_download</span><span class="delimiter">'</span></span>]><span class="integer">0</span>) {
    144.         <span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">length</span><span class="delimiter">'</span></span>]=<span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">size_download</span><span class="delimiter">'</span></span>];
    145.     }
    146.     <span class="keyword">if</span>(<span class="predefined">isset</span>(<span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">url</span><span class="delimiter">'</span></span>]) <span class="keyword">and</span> <span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">url</span><span class="delimiter">'</span></span>]!=<span class="local-variable">$url</span>) <span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">location</span><span class="delimiter">'</span></span>]=<span class="local-variable">$info</span>[<span class="string"><span class="delimiter">'</span><span class="content">url</span><span class="delimiter">'</span></span>];
    147.     <span class="keyword">if</span>(<span class="local-variable">$head</span>) {  <span class="comment">// analyse de head pour info</span>
    148.         <span class="local-variable">$trouve</span>=<span class="predefined">array</span>(<span class="string"><span class="delimiter">'</span><span class="content">Content-Length</span><span class="delimiter">'</span></span>=><span class="string"><span class="delimiter">'</span><span class="content">length</span><span class="delimiter">'</span></span>,  <span class="comment">// texte avant : => cle du $result</span>
    149.                      <span class="string"><span class="delimiter">'</span><span class="content">Last-Modified</span><span class="delimiter">'</span></span>=><span class="string"><span class="delimiter">'</span><span class="content">last_modified</span><span class="delimiter">'</span></span>,
    150.                      <span class="string"><span class="delimiter">'</span><span class="content">Accept-Ranges</span><span class="delimiter">'</span></span>=><span class="string"><span class="delimiter">'</span><span class="content">range</span><span class="delimiter">'</span></span>);
    151.         <span class="local-variable">$liste</span>=<span class="predefined">preg_split</span>(<span class="string"><span class="delimiter">'</span><span class="content">/[</span><span class="content">\r</span><span class="content">\n</span><span class="content">]+/</span><span class="delimiter">'</span></span>,<span class="local-variable">$head</span>,-<span class="integer">1</span>,<span class="constant">PREG_SPLIT_NO_EMPTY</span>);
    152.         <span class="keyword">if</span>(<span class="predefined">is_array</span>(<span class="local-variable">$liste</span>)) {
    153.             <span class="local-variable">$liste</span>=<span class="predefined">array_reverse</span>(<span class="local-variable">$liste</span>);
    154.             <span class="keyword">foreach</span>(<span class="local-variable">$liste</span> <span class="keyword">as</span> <span class="local-variable">$l</span>) {  <span class="comment">// premier trouver donc dernier dans le head</span>
    155.                 <span class="local-variable">$lt</span>=<span class="predefined">trim</span>(<span class="local-variable">$l</span>);
    156.                 <span class="keyword">if</span>(<span class="predefined">strlen</span>(<span class="local-variable">$lt</span>)><span class="integer">5</span> <span class="keyword">and</span> <span class="predefined">substr</span>(<span class="local-variable">$lt</span>,<span class="integer">0</span>,<span class="integer">4</span>)==<span class="string"><span class="delimiter">'</span><span class="content">HTTP</span><span class="delimiter">'</span></span>) <span class="keyword">break</span>;  <span class="comment">// on arrete sur derniere entete HTTP ?</span>
    157.                 <span class="local-variable">$item</span>=<span class="predefined">explode</span>(<span class="string"><span class="delimiter">'</span><span class="content">:</span><span class="delimiter">'</span></span>,<span class="local-variable">$lt</span>,<span class="integer">2</span>);
    158.                 <span class="keyword">if</span>(<span class="predefined">isset</span>(<span class="local-variable">$item</span>[<span class="integer">0</span>]) <span class="keyword">and</span> <span class="predefined">isset</span>(<span class="local-variable">$trouve</span>[<span class="local-variable">$item</span>[<span class="integer">0</span>]])) {
    159.                     <span class="local-variable">$result</span>[<span class="local-variable">$trouve</span>[<span class="local-variable">$item</span>[<span class="integer">0</span>]]]=<span class="predefined">trim</span>(<span class="local-variable">$item</span>[<span class="integer">1</span>]);
    160.                     <span class="predefined">unset</span>(<span class="local-variable">$trouve</span>[<span class="local-variable">$item</span>[<span class="integer">0</span>]]);  <span class="comment">// plus d'autre a chercher</span>
    161.                 }
    162.             }
    163.         }
    164.         <span class="comment">// cas particuliers</span>
    165.         <span class="keyword">if</span>(<span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">last_modified</span><span class="delimiter">'</span></span>]) {
    166.             <span class="local-variable">$val</span>=<span class="predefined">strtotime</span>(<span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">last_modified</span><span class="delimiter">'</span></span>]);
    167.             <span class="keyword">if</span>(<span class="local-variable">$val</span>===<span class="predefined-constant">false</span>) {
    168.                 <span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">last_modified</span><span class="delimiter">'</span></span>]=<span class="string"><span class="delimiter">'</span><span class="delimiter">'</span></span>;
    169.             }
    170.             <span class="keyword">else</span> {
    171.                 <span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">last_modified</span><span class="delimiter">'</span></span>]=<span class="local-variable">$val</span>;
    172.             }
    173.         }
    174.     }
    175.  
    176.     <span class="comment">// Faut-il l'importer dans notre charset local ?</span>
    177.     <span class="keyword">if</span> (<span class="local-variable">$options</span>[<span class="string"><span class="delimiter">'</span><span class="content">transcoder</span><span class="delimiter">'</span></span>]) {
    178.         include_spip(<span class="string"><span class="delimiter">'</span><span class="content">inc/charsets</span><span class="delimiter">'</span></span>);
    179.         <span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">page</span><span class="delimiter">'</span></span>] = transcoder_page(<span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">page</span><span class="delimiter">'</span></span>], <span class="local-variable">$result</span>[<span class="string"><span class="delimiter">'</span><span class="content">headers</span><span class="delimiter">'</span></span>]);
    180.     }
    181.  
    182.     <span class="keyword">return</span> <span class="local-variable">$result</span>;
    183. }
    184. </span>

    Télécharger

    Normalement, ce code doit être compatible avec l’ancienne fonction, il donne en plus en sortie [’range’] qui permet de savoir si un partial content peut être délivré.
    Il ne prend plus en compte les entrées [’refuser_gz’], [’version_http’] et [’boundary’] et l’entrée [’data’] doit être compatible avec celle de ’curl_setopt : CURLOPT_POSTFIELDS’.
    Si des gens veulent la tester et l’améliorer : bienvenue.

    Petit nota : SPIP laisse le fichier créer dans cette fonction ([’file’]) dans le tmp sans le détruire (version de base idem) : accumulation !

  • Evolution #4302 : favicon, dépendance criante à plugin-dist "images"

    4 mars 2019, par touti touti

    b b a écrit :

    Bien vu, et donc il faudrait copier https://core.spip.net/projects/spip/repository/entry/spip/prive/squelettes/inclure/favicon-head.html dans le plugin-dist filtres_images :)

    Mais oui, bien sûr !
    J’attends quelques jours avant de faire la modif si il y a des récalcitrant·es qui proposent autre chose :)

  • Evolution #4302 : favicon, dépendance criante à plugin-dist "images"

    4 mars 2019, par b b

    Bien vu, et donc il faudrait copier https://core.spip.net/projects/spip/repository/entry/spip/prive/squelettes/inclure/favicon-head.html dans le plugin-dist filtres_images :)