<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jan 22, 2013 at 1:40 PM, Sinan Kaan Yerli <span dir="ltr"><<a href="mailto:sinan@sinan.physics.metu.edu.tr" target="_blank">sinan@sinan.physics.metu.edu.tr</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div id=":2u2">  * How could I redirect /this formatted/ output to a mimetype?<br>


          Do I have to introduce an ?action=export ...<br>
          If so how could I start the download of this data (i.e<br>
          download starts immediately without having a page to show).</div></blockquote></div><br>A quick google of "automatic download dynamic php" resulted in this:</div><div class="gmail_extra"><br></div><div class="gmail_extra">

<pre class="" style="margin-top:0px;margin-bottom:10px;padding:5px;border:0px;font-size:13.333333015441895px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;overflow:auto;width:auto;max-height:600px;color:rgb(0,0,0);line-height:16.66666603088379px">

<code style="margin:0px;padding:0px;border:0px;font-size:13.333333015441895px;vertical-align:baseline;font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif"><span class="" style="margin:0px;padding:0px;border:0px;font-size:13.333333015441895px;vertical-align:baseline;background-color:transparent">header</span><span class="" style="margin:0px;padding:0px;border:0px;font-size:13.333333015441895px;vertical-align:baseline;background-color:transparent">(</span><span class="" style="margin:0px;padding:0px;border:0px;font-size:13.333333015441895px;vertical-align:baseline;background-color:transparent;color:rgb(128,0,0)">'Content-Type: application/download'</span><span class="" style="margin:0px;padding:0px;border:0px;font-size:13.333333015441895px;vertical-align:baseline;background-color:transparent">);</span><span class="" style="margin:0px;padding:0px;border:0px;font-size:13.333333015441895px;vertical-align:baseline;background-color:transparent">
    header</span><span class="" style="margin:0px;padding:0px;border:0px;font-size:13.333333015441895px;vertical-align:baseline;background-color:transparent">(</span><span class="" style="margin:0px;padding:0px;border:0px;font-size:13.333333015441895px;vertical-align:baseline;background-color:transparent;color:rgb(128,0,0)">'Content-Disposition: attachment; filename="example.txt"'</span><span class="" style="margin:0px;padding:0px;border:0px;font-size:13.333333015441895px;vertical-align:baseline;background-color:transparent">);</span><span class="" style="margin:0px;padding:0px;border:0px;font-size:13.333333015441895px;vertical-align:baseline;background-color:transparent">
    header</span><span class="" style="margin:0px;padding:0px;border:0px;font-size:13.333333015441895px;vertical-align:baseline;background-color:transparent">(</span><span class="" style="margin:0px;padding:0px;border:0px;font-size:13.333333015441895px;vertical-align:baseline;background-color:transparent;color:rgb(128,0,0)">"Content-Length: "</span><span class="" style="margin:0px;padding:0px;border:0px;font-size:13.333333015441895px;vertical-align:baseline;background-color:transparent"> </span><span class="" style="margin:0px;padding:0px;border:0px;font-size:13.333333015441895px;vertical-align:baseline;background-color:transparent">.</span><span class="" style="margin:0px;padding:0px;border:0px;font-size:13.333333015441895px;vertical-align:baseline;background-color:transparent"> filesize</span><span class="" style="margin:0px;padding:0px;border:0px;font-size:13.333333015441895px;vertical-align:baseline;background-color:transparent">(</span><span class="" style="margin:0px;padding:0px;border:0px;font-size:13.333333015441895px;vertical-align:baseline;background-color:transparent;color:rgb(128,0,0)">"example.txt"</span><span class="" style="margin:0px;padding:0px;border:0px;font-size:13.333333015441895px;vertical-align:baseline;background-color:transparent">));</span><span class="" style="margin:0px;padding:0px;border:0px;font-size:13.333333015441895px;vertical-align:baseline;background-color:transparent">

    $fp </span><span class="" style="margin:0px;padding:0px;border:0px;font-size:13.333333015441895px;vertical-align:baseline;background-color:transparent">=</span><span class="" style="margin:0px;padding:0px;border:0px;font-size:13.333333015441895px;vertical-align:baseline;background-color:transparent"> fopen</span><span class="" style="margin:0px;padding:0px;border:0px;font-size:13.333333015441895px;vertical-align:baseline;background-color:transparent">(</span><span class="" style="margin:0px;padding:0px;border:0px;font-size:13.333333015441895px;vertical-align:baseline;background-color:transparent;color:rgb(128,0,0)">"example.txt"</span><span class="" style="margin:0px;padding:0px;border:0px;font-size:13.333333015441895px;vertical-align:baseline;background-color:transparent">,</span><span class="" style="margin:0px;padding:0px;border:0px;font-size:13.333333015441895px;vertical-align:baseline;background-color:transparent"> </span><span class="" style="margin:0px;padding:0px;border:0px;font-size:13.333333015441895px;vertical-align:baseline;background-color:transparent;color:rgb(128,0,0)">"r"</span><span class="" style="margin:0px;padding:0px;border:0px;font-size:13.333333015441895px;vertical-align:baseline;background-color:transparent">);</span><span class="" style="margin:0px;padding:0px;border:0px;font-size:13.333333015441895px;vertical-align:baseline;background-color:transparent">
    fpassthru</span><span class="" style="margin:0px;padding:0px;border:0px;font-size:13.333333015441895px;vertical-align:baseline;background-color:transparent">(</span><span class="" style="margin:0px;padding:0px;border:0px;font-size:13.333333015441895px;vertical-align:baseline;background-color:transparent">$fp</span><span class="" style="margin:0px;padding:0px;border:0px;font-size:13.333333015441895px;vertical-align:baseline;background-color:transparent">);</span><span class="" style="margin:0px;padding:0px;border:0px;font-size:13.333333015441895px;vertical-align:baseline;background-color:transparent">
    fclose</span><span class="" style="margin:0px;padding:0px;border:0px;font-size:13.333333015441895px;vertical-align:baseline;background-color:transparent">(</span><span class="" style="margin:0px;padding:0px;border:0px;font-size:13.333333015441895px;vertical-align:baseline;background-color:transparent">$fp</span><span class="" style="margin:0px;padding:0px;border:0px;font-size:13.333333015441895px;vertical-align:baseline;background-color:transparent">);</span></code></pre>

<a href="http://stackoverflow.com/questions/40943/how-to-automatically-start-a-download-in-php">http://stackoverflow.com/questions/40943/how-to-automatically-start-a-download-in-php</a><br><br>The thing is you probably don't want a full MarkupToHTML() because you're just looking for the text.  You might want to take a look at toolbox.php and the RunMarkupRules() function there.  This would enable you to run the "pagelist" rule to produce your dynamic download.</div>

<div class="gmail_extra"><br></div><div class="gmail_extra">So that leaves (purely untested and probably loaded with bugs):</div><div class="gmail_extra"><br></div><div class="gmail_extra">$HandleActions['export'] = 'HandleExport';</div>

<div class="gmail_extra">function HandleExport($pagename, $auth = 'read')</div><div class="gmail_extra">{</div><div class="gmail_extra"><div class="gmail_extra">  $page = RetrieveAuthPage($pagename, $auth, true, READPAGE_CURRENT);</div>

<div class="gmail_extra">  if (!$page) Abort("?cannot read $pagename");</div><div style>  $output = RunMarkupRules($pagename, array('pagelist'), $Text, $opt);</div>  header('Content-Type: application/download'); </div>

<div class="gmail_extra">  header('Content-Disposition: attachment; filename="example.csv"'); </div><div class="gmail_extra">  header("Content-Length: " . sizeof($output)); </div><div class="gmail_extra">

  echo $output; // I think this'll handle it.  Sometimes people talk about the ob_* functions, but I usually try to avoid them.</div><div class="gmail_extra">}<br><br>-Peter</div></div>