Example #1
0
 /**
  * Create a request from PHP's superglobals.
  *
  * @return self The request.
  */
 public static function createGlobal()
 {
     $uri = new Uri(isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '');
     $method = isset($_SERVER['REQUEST_METHOD']) ? $_SERVER['REQUEST_METHOD'] : 'GET';
     $request = new self($uri, $method, $_GET, $_POST, $_COOKIE, UploadedFile::convert($_FILES), $_SERVER);
     foreach ($_SERVER as $name => $value) {
         if (substr_compare($name, 'HTTP_', 0, 5) === 0) {
             $request->setHeader(str_replace('_', '-', substr($name, 5)), $value);
         }
     }
     return $request;
 }
Example #2
0
 public static function buildFromCurlResponse($curl_response)
 {
     $response = new self();
     $t = new \SimpleXMLElement($curl_response);
     foreach ($t as $k => $v) {
         if ($k == 'Request') {
             foreach ($t->Request[0] as $k => $v) {
                 $response->setHeader($k, $v);
             }
         } else {
             $obj = ResponseObj::fromXML($k, $v);
             $response->setProperty($k, $obj);
             //                echo $k.'.'. print_r($v, 1) ."\n";
         }
     }
     return $response;
 }
 /**
  */
 public static function createFromRawResponse($rawResponse)
 {
     $response = new self($rawResponse);
     $lines = preg_split('/(\\r?\\n)/', $rawResponse);
     for ($i = 0; $i < count($lines); $i++) {
         if (0 == $i) {
             preg_match('/^HTTP\\/(\\d\\.\\d)\\s(\\d+)\\s(.+)/', $lines[$i], $statusLine);
             $response->setStatusCode($statusCode = $statusLine[2]);
             continue;
         }
         if (empty($lines[$i])) {
             $body = array_slice($lines, $i + 1);
             $response->setBody(implode("\n", $body));
             break;
         }
         if (strpos($lines[$i], ':')) {
             $headerParts = explode(':', $lines[$i]);
             $response->setHeader($headerParts[0], $headerParts[1]);
         }
     }
     return $response;
 }
Example #4
0
 /**
  * Export record to PDF file
  * @param int $recordId - id of a record
  * @param string $moduleName - name of records module
  * @param int $templateId - id of pdf template
  * @param string $filePath - path name for saving pdf file
  * @param string $saveFlag - save option flag
  */
 public function export($recordId, $moduleName, $templateId, $filePath = '', $saveFlag = '')
 {
     $template = Vtiger_PDF_Model::getInstanceById($templateId, $moduleName);
     $template->setMainRecordId($recordId);
     $pageOrientation = $template->get('page_orientation') == 'PLL_PORTRAIT' ? 'P' : 'L';
     $pdf = new self('c', $template->get('page_format'), 0, '', $template->get('margin_left'), $template->get('margin_right'), $template->get('margin_top'), $template->get('margin_bottom'), $template->get('margin_top'), $template->get('margin_bottom'), $pageOrientation);
     $pdf->setTemplateId($templateId);
     $pdf->setRecordId($recordId);
     $pdf->setModuleName($moduleName);
     $pdf->setLanguage($template->get('language'));
     $pdf->setFileName($template->get('filename'));
     $origLanguage = vglobal('default_language');
     vglobal('default_language', $template->get('language'));
     $pdf->parseParams($template->getParameters());
     $pdf->setHeader('Header', $template->getHeader());
     $pdf->setFooter('Footer', $template->getFooter());
     $html = $template->getBody();
     $pdf->loadHTML($html);
     vglobal('default_language', $origLanguage);
     $pdf->output($filePath, $saveFlag);
 }
Example #5
0
 /**
  * Create an instance from an input string.
  * @param  string     $str the stringified response
  * @return \vakata\http\Response          the response instance
  * @codeCoverageIgnore
  */
 public static function fromString($str)
 {
     $res = new self();
     $break = strpos($str, "\r\n\r\n") === false ? "\n" : "\r\n";
     // just in case someone breaks RFC 2616
     list($headers, $message) = explode($break . $break, (string) $str, 2);
     $headers = explode($break, preg_replace("(" . $break . "\\s+)", " ", $headers));
     if (isset($headers[0]) && substr($headers[0], 0, 5) === 'HTTP/') {
         $temp = explode(' ', substr($headers[0], 5));
         $res->setProtocolVersion($temp[0]);
         $res->setStatusCode((int) $temp[1]);
         unset($headers[0]);
         $headers = array_values($headers);
     }
     foreach (array_filter($headers) as $v) {
         $v = explode(':', $v, 2);
         $res->setHeader(trim($v[0]), trim($v[1]));
     }
     $res->setBody($message);
     $res->removeHeader('Content-Length');
     $res->removeHeader('Transfer-Encoding');
     return $res;
 }
Example #6
0
 /**
  * Create a file response.
  *
  * @param string $path Path to file.
  * @param string|null $type Optional MIME type.
  * @return self The response.
  */
 public static function file($path, $type = null)
 {
     $response = new self(Status::OK, new PhpStream($path, 'rb'));
     if (isset($type)) {
         $response->setHeader('Content-Type', $type);
     }
     return $response;
 }
Example #7
0
File: Mail.php Project: vakata/mail
 /**
  * Create an instance from a stringified mail.
  * @param  string     $str the mail string
  * @return \vakata\mail\Mail          the mail instance
  */
 public static function fromString($mail)
 {
     $rtrn = new self();
     $mail = $rtrn->parseParts($mail);
     foreach ($mail['head'] as $k => $v) {
         switch (strtolower($k)) {
             case 'to':
                 $rtrn->setTo($v);
                 break;
             case 'cc':
                 $rtrn->setCc($v);
                 break;
             case 'bcc':
                 $rtrn->setBcc($v);
                 break;
             case 'from':
                 $rtrn->setFrom($v);
                 break;
             case 'subject':
                 $rtrn->setSubject($v);
                 break;
             default:
                 $rtrn->setHeader($k, $v);
                 break;
         }
     }
     $rtrn->processPart($mail);
     return $rtrn;
 }
Example #8
0
 /**
  * Create an instance from a stringified request.
  * @param  string     $str the stringified request
  * @return \vakata\http\Request          the request instance
  * @codeCoverageIgnore
  */
 public static function fromString($str)
 {
     $req = new self();
     $break = strpos($str, "\r\n\r\n") === false ? "\n" : "\r\n";
     // just in case someone breaks RFC 2616
     list($headers, $message) = explode($break . $break, $str, 2);
     $headers = explode($break, preg_replace("(" . $break . "\\s+)", " ", $headers));
     if (isset($headers[0]) && strlen($headers[0])) {
         $temp = explode(' ', $headers[0]);
         if (in_array($temp[0], ['GET', 'POST', 'HEAD', 'PATCH', 'PUT', 'OPTIONS', 'TRACE', 'DELETE'])) {
             $req->setMethod($temp[0]);
             $req->setUrl($temp[1]);
             if (isset($temp[2])) {
                 $req->setProtocolVersion(substr($temp[2], 5));
             }
             unset($headers[0]);
             $headers = array_values($headers);
         }
     }
     foreach (array_filter($headers) as $v) {
         $v = explode(':', $v, 2);
         $req->setHeader(trim($v[0]), trim($v[1]));
     }
     if ($req->hasHeader('Host')) {
         $host = explode(':', $req->getHeader('Host'), 2);
         $req->getUrl()->setHost($host[0]);
         if (isset($host[1]) && (int) $host[1]) {
             $req->getUrl()->setPort($host[1]);
         }
     }
     if (strpos($req->getHeader('Content-Type'), 'multipart') !== false) {
         $bndr = trim(explode(' boundary=', $req->getHeader('Content-Type'))[1], '"');
         $parts = explode($break . '--' . $bndr, $break . $message);
         array_pop($parts);
         array_shift($parts);
         $post = [];
         foreach ($parts as $item) {
             list($head, $body) = explode($break . $break, $item, 2);
             $head = explode($break, preg_replace("(" . $break . "\\s+)", " ", $head));
             foreach ($head as $h) {
                 if (strpos(strtolower($h), 'content-disposition') === 0) {
                     $cd = explode(';', $h);
                     $name = '';
                     $file = '';
                     foreach ($cd as $p) {
                         if (strpos(trim($p), 'name=') === 0) {
                             $name = trim(explode('name=', $p)[1], ' "');
                         }
                         if (strpos(trim($p), 'filename=') === 0) {
                             $file = trim(explode('filename=', $p)[1], ' "');
                         }
                     }
                     if ($file) {
                         $req->addUpload($name, $body, $file);
                     } else {
                         $post[$name] = $body;
                     }
                 }
             }
         }
         $req->setBody(http_build_query($post));
     } elseif (strlen($message)) {
         $req->setBody($message);
     }
     $req->removeHeader('Content-Length');
     $req->removeHeader('Transfer-Encoding');
     return $req;
 }
Example #9
0
	/**
	 * Export record to PDF file
	 * @param int $recordId - id of a record
	 * @param string $moduleName - name of records module
	 * @param int $templateId - id of pdf template
	 * @param string $filePath - path name for saving pdf file
	 * @param string $saveFlag - save option flag
	 */
	public function export($recordId, $moduleName, $templateId, $filePath = '', $saveFlag = '')
	{
		$pdf = new self();
		$pdf->setTemplateId($templateId);
		$pdf->setRecordId($recordId);
		$pdf->setModuleName($moduleName);

		$template = Vtiger_PDF_Model::getInstanceById($templateId, $moduleName);
		$template->setMainRecordId($recordId);

		$pdf->setLanguage($template->get('language'));
		$pdf->setFileName($template->get('filename'));

		$origLanguage = vglobal('default_language');
		vglobal('default_language', $template->get('language'));

		$pdf->parseParams($template->getParameters());

		$html = '';

		$pdf->setHeader('Header', $template->getHeader());
		$pdf->setFooter('Footer', $template->getFooter());
		$html = $template->getBody();

		$pdf->loadHTML($html);

		vglobal('default_language', $origLanguage);

		$pdf->output($filePath, $saveFlag);
	}
Example #10
0
 /**
  * Construct the HttpResponse from a file, you can create the
  * dumps from actual traffic using "curl -i http://www.example.org > dump.txt"
  */
 public static function fromFile($file)
 {
     $data = @file_get_contents($file);
     if (FALSE === $data) {
         throw new HttpResponseException("unable to read file");
     }
     $response = new self();
     // separate the headers from the content
     list($headerLines, $contentData) = explode("\r\n\r\n", $data);
     $headerLinesArray = explode("\r\n", $headerLines);
     // First header is HTTP response code, e.g.: HTTP/1.1 200 OK
     $responseCode = substr($headerLinesArray[0], 9, 3);
     $response->setStatusCode($responseCode);
     unset($headerLinesArray[0]);
     foreach ($headerLinesArray as $headerLine) {
         list($k, $v) = explode(":", $headerLine);
         $response->setHeader(trim($k), trim($v));
     }
     $response->setContent($contentData);
     return $response;
 }
Example #11
0
 /**
  * Creates a new CSV object from a file.
  *
  * @param string $file   the filename
  * @param bool   $header whether or not to get the header row
  *
  * @return CsvParser a new instance
  */
 public static function fromFile($file, $header = false)
 {
     ini_set('auto_detect_line_endings', true);
     if (true === extension_loaded('mbstring')) {
         mb_internal_encoding("UTF-8");
     }
     $instance = new self();
     if (($handle = fopen($file, "r")) !== false) {
         $hasHeader = $header;
         while (($data = fgetcsv($handle, self::LINE_BUFFER_SIZE, self::DELIMITER)) !== false) {
             // Skip the first row
             if (true === $hasHeader) {
                 $hasHeader = false;
                 $instance->setHeader($data);
                 continue;
             }
             $instance->addRow($data);
         }
         fclose($handle);
     }
     return $instance;
 }