roundcubemail-plugins-kolab/plugins/kolab_files/lib/kolab_files_observer.php

39 lines
950 B
PHP
Raw Normal View History

2013-02-08 14:30:48 +01:00
<?php
/**
* Observer for HTTP_Request2 implementing saving response body into a file
*/
class kolab_files_observer implements SplObserver
{
protected $file;
protected $fp;
public function set_file($file)
{
$this->file = $file;
}
public function update(SplSubject $subject): void
2013-02-08 14:30:48 +01:00
{
2024-01-25 13:47:41 +01:00
/** @var HTTP_Request2 $subject */
2013-02-08 14:30:48 +01:00
$event = $subject->getLastEvent();
switch ($event['name']) {
2024-01-24 11:24:41 +01:00
case 'receivedHeaders':
if (!$this->file || !($this->fp = @fopen($this->file, 'wb'))) {
throw new Exception("Cannot open target file '{$this->file}'");
}
break;
2013-02-08 14:30:48 +01:00
2024-01-24 11:24:41 +01:00
case 'receivedBodyPart':
case 'receivedEncodedBodyPart':
fwrite($this->fp, $event['data']);
break;
2013-02-08 14:30:48 +01:00
2024-01-24 11:24:41 +01:00
case 'receivedBody':
fclose($this->fp);
break;
2013-02-08 14:30:48 +01:00
}
}
}