- fix build on Debian systems where access to Curl_* functions is prohibited
[m6w6/ext-http] / http_functions.c
index ceac1a1eee4bbb3d9797e0c0df87149138fd4196..0462c3b760b24aea0b31bd10ac51dea9e5f050a8 100644 (file)
@@ -55,7 +55,7 @@ PHP_FUNCTION(http_date)
        }
 
        if (t == -1) {
-               t = (long) HTTP_GET_REQUEST_TIME();
+               t = HTTP_G->request.time;
        }
 
        RETURN_STRING(http_date(t), 0);
@@ -430,7 +430,7 @@ PHP_FUNCTION(http_send_last_modified)
        }
 
        if (t == -1) {
-               t = (long) HTTP_GET_REQUEST_TIME();
+               t = HTTP_G->request.time;
        }
 
        RETURN_SUCCESS(http_send_last_modified(t));
@@ -510,7 +510,7 @@ PHP_FUNCTION(http_match_modified)
 
        // current time if not supplied (senseless though)
        if (t == -1) {
-               t = (long) HTTP_GET_REQUEST_TIME();
+               t = HTTP_G->request.time;
        }
 
        if (for_range) {
@@ -565,7 +565,7 @@ PHP_FUNCTION(http_match_etag)
  * Returns FALSE on failure, or *exits* with "304 Not Modified" if the entity is cached.
  * 
  * A log entry will be written to the cache log if the INI entry
- * http.cache_log is set and the cache attempt was successful.
+ * http.log.cache is set and the cache attempt was successful.
  */
 PHP_FUNCTION(http_cache_last_modified)
 {
@@ -578,7 +578,7 @@ PHP_FUNCTION(http_cache_last_modified)
        
        HTTP_CHECK_HEADERS_SENT(RETURN_FALSE);
 
-       t = (long) HTTP_GET_REQUEST_TIME();
+       t = HTTP_G->request.time;
 
        /* 0 or omitted */
        if (!last_modified) {
@@ -605,7 +605,7 @@ PHP_FUNCTION(http_cache_last_modified)
 /* {{{ proto bool http_cache_etag([string etag])
  *
  * Attempts to cache the sent entity by its ETag, either supplied or generated 
- * by the hash algorithm specified by the INI setting "http.etag_mode".
+ * by the hash algorithm specified by the INI setting "http.etag.mode".
  *
  * If the clients "If-None-Match" header matches the supplied/calculated
  * ETag, the body is considered cached on the clients side and
@@ -614,7 +614,7 @@ PHP_FUNCTION(http_cache_last_modified)
  * Returns FALSE on failure, or *exits* with "304 Not Modified" if the entity is cached.
  * 
  * A log entry is written to the cache log if the INI entry
- * "http.cache_log" is set and the cache attempt was successful.
+ * "http.log.cache" is set and the cache attempt was successful.
  */
 PHP_FUNCTION(http_cache_etag)
 {
@@ -634,7 +634,7 @@ PHP_FUNCTION(http_cache_etag)
 /* {{{ proto string ob_etaghandler(string data, int mode)
  *
  * For use with ob_start().  Output buffer handler generating an ETag with
- * the hash algorithm specified with the INI setting "http.etag_mode".
+ * the hash algorithm specified with the INI setting "http.etag.mode".
  */
 PHP_FUNCTION(ob_etaghandler)
 {
@@ -713,7 +713,7 @@ PHP_FUNCTION(http_throttle)
  * Returns FALSE on failure, or *exits* on success.
  * 
  * A log entry will be written to the redirect log, if the INI entry
- * "http.redirect_log" is set and the redirect attempt was successful.
+ * "http.log.redirect" is set and the redirect attempt was successful.
  */
 PHP_FUNCTION(http_redirect)
 {
@@ -1089,7 +1089,7 @@ PHP_FUNCTION(http_parse_cookie)
        }
 }
 
-/* {{{ proto object http_parse_params(string param)
+/* {{{ proto object http_parse_params(string param[, int flags = HTTP_PARAMS_DEFAULT])
  *
  * Parse parameter list.
  */
@@ -1097,16 +1097,22 @@ PHP_FUNCTION(http_parse_params)
 {
        char *param;
        int param_len;
+       zval *params;
+       long flags = HTTP_PARAMS_DEFAULT;
        
-       if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &param, &param_len)) {
+       if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|l", &param, &param_len, &flags)) {
                RETURN_FALSE;
        }
        
-       object_init(return_value);
-       if (SUCCESS != http_parse_params(param, HASH_OF(return_value))) {
-               zval_dtor(return_value);
+       params = ecalloc(1, sizeof(zval));
+       array_init(params);
+       if (SUCCESS != http_parse_params(param, flags, Z_ARRVAL_P(params))) {
+               zval_dtor(params);
+               FREE_ZVAL(params);
                RETURN_FALSE;
        }
+       object_init(return_value);
+       add_property_zval(return_value, "params", params);
 }
 /* }}} */
 
@@ -1243,9 +1249,8 @@ PHP_FUNCTION(http_match_request_header)
  *  - cookies:          array, list of cookies as associative array
  *                      like array("cookie" => "value")
  *  - encodecookies:    bool, whether to urlencode the cookies (default: true)
- *  - resetcookies:     bool, wheter to reset the cookies
  *  - cookiestore:      string, path to a file where cookies are/will be stored
- *  - cookiesession:    bool, accept (true) or reset (false) sessioncookies
+ *  - cookiesession:    bool, don't load session cookies from cookiestore if TRUE
  *  - resume:           int, byte offset to start the download from;
  *                      if the server supports ranges
  *  - range:            array, array of arrays, each containing two integers,
@@ -1665,6 +1670,7 @@ PHP_FUNCTION(http_request)
 }
 /* }}} */
 
+#ifdef HAVE_CURL_GETFORMDATA
 static char *file_get_contents(char *file, size_t *len TSRMLS_DC)
 {
        php_stream *s = NULL;
@@ -1758,6 +1764,7 @@ PHP_FUNCTION(http_request_body_encode)
                        break;
        }
 }
+#endif /* HAVE_CURL_GETFORMDATA */
 #endif /* HTTP_HAVE_CURL */
 /* }}} HAVE_CURL */