| modification, are permitted provided that the conditions mentioned |
| in the accompanying LICENSE file are met. |
+--------------------------------------------------------------------+
- | Copyright (c) 2004-2005, Michael Wallner <mike@php.net> |
+ | Copyright (c) 2004-2006, Michael Wallner <mike@php.net> |
+--------------------------------------------------------------------+
*/
/* $Id$ */
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-#include "php.h"
-
-#include "missing.h"
+#define HTTP_WANT_SAPI
+#define HTTP_WANT_MAGIC
+#include "php_http.h"
/* broken static properties in PHP 5.0 */
#if defined(ZEND_ENGINE_2) && !defined(WONKY)
-#include "SAPI.h"
#include "php_ini.h"
-#include "php_http.h"
#include "php_http_api.h"
-#include "php_http_std_defs.h"
-#include "php_http_response_object.h"
-#include "php_http_exception_object.h"
-#include "php_http_send_api.h"
#include "php_http_cache_api.h"
+#include "php_http_exception_object.h"
#include "php_http_headers_api.h"
-
-#ifdef HTTP_HAVE_MHASH
-# include <mhash.h>
-#endif
-#ifdef HTTP_HAVE_MAGIC
-# include <magic.h>
-#endif
-
-ZEND_EXTERN_MODULE_GLOBALS(http);
+#include "php_http_response_object.h"
+#include "php_http_send_api.h"
#define GET_STATIC_PROP(n) *GET_STATIC_PROP_EX(http_response_object_ce, n)
#define UPD_STATIC_PROP(t, n, v) UPD_STATIC_PROP_EX(http_response_object_ce, t, n, v)
#ifndef WONKY
DCL_CONST(long, "REDIRECT", HTTP_REDIRECT);
DCL_CONST(long, "REDIRECT_PERM", HTTP_REDIRECT_PERM);
+ DCL_CONST(long, "REDIRECT_FOUND", HTTP_REDIRECT_FOUND);
DCL_CONST(long, "REDIRECT_POST", HTTP_REDIRECT_POST);
+ DCL_CONST(long, "REDIRECT_PROXY", HTTP_REDIRECT_PROXY);
DCL_CONST(long, "REDIRECT_TEMP", HTTP_REDIRECT_TEMP);
-
- DCL_CONST(long, "ETAG_MD5", HTTP_ETAG_MD5);
- DCL_CONST(long, "ETAG_SHA1", HTTP_ETAG_SHA1);
- DCL_CONST(long, "ETAG_CRC32", HTTP_ETAG_CRC32);
-
-# ifdef HTTP_HAVE_MHASH
- {
- int l, i, c = mhash_count();
-
- for (i = 0; i <= c; ++i) {
- char const_name[256] = {0};
- const char *hash_name = mhash_get_hash_name_static(i);
-
- if (hash_name) {
- l = snprintf(const_name, 255, "ETAG_MHASH_%s", hash_name);
- zend_declare_class_constant_long(ce, const_name, l, i TSRMLS_CC);
- }
- }
- }
-# endif /* HTTP_HAVE_MHASH */
#endif /* WONKY */
}
/* {{{ proto static bool HttpResponse::setCache(bool cache)
*
- * Whether it sould be attempted to cache the entitity.
+ * Whether it should be attempted to cache the entity.
* This will result in necessary caching headers and checks of clients
* "If-Modified-Since" and "If-None-Match" headers. If one of those headers
* matches a "304 Not Modified" status code will be issued.
*
- * NOTE: If you're using sessions, be shure that you set session.cache_limiter
+ * NOTE: If you're using sessions, be sure that you set session.cache_limiter
* to something more appropriate than "no-cache"!
*
* Expects a boolean as parameter specifying whether caching should be attempted.
*
- * Returns TRUE ons success, or FALSE on failure.
+ * Returns TRUE on success, or FALSE on failure.
*/
PHP_METHOD(HttpResponse, setCache)
{
* The max_age parameter controls how long the cache entry is valid on the client side.
*
* Expects a string parameter containing the primary cache control setting.
- * Addtitionally accepts an int parameter specifying the max-age setting.
+ * Additionally accepts an int parameter specifying the max-age setting.
*
* Returns TRUE on success, or FALSE if control does not match one of
* "public" , "private" or "no-cache".
* if the data actually sent came from a file or something similar, that should
* be "saved" by the client/user (i.e. by browsers "Save as..." popup window).
*
- * Expects a string parameter specifying the file name the "Save as..." dialogue
+ * Expects a string parameter specifying the file name the "Save as..." dialog
* should display. Optionally accepts a bool parameter, which, if set to true
* and the user agent knows how to handle the content type, will probably not
* cause the popup window to be shown.
}
UPD_STATIC_PROP(long, lastModified, http_last_modified(the_data, SEND_DATA));
- if (etag = http_etag(Z_STRVAL_P(the_data), Z_STRLEN_P(the_data), SEND_DATA)) {
+ if ((etag = http_etag(Z_STRVAL_P(the_data), Z_STRLEN_P(the_data), SEND_DATA))) {
UPD_STATIC_PROP(string, eTag, etag);
efree(etag);
}
zend_list_addref(Z_LVAL_P(the_stream));
UPD_STATIC_PROP(long, lastModified, http_last_modified(the_real_stream, SEND_RSRC));
- if (etag = http_etag(the_real_stream, 0, SEND_RSRC)) {
+ if ((etag = http_etag(the_real_stream, 0, SEND_RSRC))) {
UPD_STATIC_PROP(string, eTag, etag);
efree(etag);
}
}
UPD_STATIC_PROP(long, lastModified, http_last_modified(the_file, -1));
- if (etag = http_etag(the_file, 0, -1)) {
+ if ((etag = http_etag(the_file, 0, -1))) {
UPD_STATIC_PROP(string, eTag, etag);
efree(etag);
}
*
* Finally send the entity.
*
- * Accepts an optional boolean parameter, specifying wheter the ouput
+ * Accepts an optional boolean parameter, specifying whether the output
* buffers should be discarded prior sending. A successful caching attempt
* will cause a script termination, and write a log entry if the INI setting
* http.cache_log is set.
*
* Returns TRUE on success, or FALSE on failure.
*
- * Throws HttpHeaderException, HttpResponseException if http.onyl_excpetions is TRUE.
+ * Throws HttpHeaderException, HttpResponseException if http.only_exceptions is TRUE.
*
* Example:
* <pre>
cctl = convert_to_type_ex(IS_STRING, GET_STATIC_PROP(cacheControl), &cctl_p);
http_cache_etag(Z_STRVAL_P(etag), Z_STRLEN_P(etag), Z_STRVAL_P(cctl), Z_STRLEN_P(cctl));
- http_cache_last_modified(Z_LVAL_P(lmod), Z_LVAL_P(lmod) ? Z_LVAL_P(lmod) : time(NULL), Z_STRVAL_P(cctl), Z_STRLEN_P(cctl));
+ http_cache_last_modified(Z_LVAL_P(lmod), Z_LVAL_P(lmod) ? Z_LVAL_P(lmod) : HTTP_GET_REQUEST_TIME(), Z_STRVAL_P(cctl), Z_STRLEN_P(cctl));
if (etag_p) zval_ptr_dtor(&etag_p);
if (lmod_p) zval_ptr_dtor(&lmod_p);
}
/* gzip */
- HTTP_G(send).gzip_encoding = zval_is_true(GET_STATIC_PROP(gzip));
+ HTTP_G(send).deflate.encoding = zval_is_true(GET_STATIC_PROP(gzip));
/* start ob */
php_start_ob_buffer(NULL, HTTP_G(send).buffer_size, 0 TSRMLS_CC);