log); } elseif ($internal_value !== NULL) { process_v_internal($econf, $out_elm, $internal_value); } elseif ($req_value !== NULL) { process_v_req($econf, $out_elm, $req_value); } } function process_v_internal($econf, $out_elm, $var_name) { $var_val = get_internal_var($econf, $var_name); if (is_string($var_val)) { append_text($out_elm, $var_val); } elseif (is_array($var_val)) { array_to_spans($econf->html_ns, $var_val, $out_elm); } } function process_v_req($econf, $out_elm, $req_var_name) { $req_var_val = get_http_parameter($req_var_name, TRUE); if (is_string($req_var_val)) { append_text($out_elm, $req_var_val); } elseif (is_array($req_var_val)) { array_to_spans($econf->html_ns, $req_var_val, $out_elm); } } function get_internal_var($econf, $var_name) { switch ($var_name) { case 'uri': return $econf->doc->uri_str(); case 'request method': return $_SERVER['REQUEST_METHOD']; case 'request host': return $_SERVER['HTTP_HOST']; case 'request uri': return $_SERVER['REQUEST_URI']; case 'request body': # Note: php://input is not available with enctype="multipart/form-data". $fd = fopen('php://input', 'R'); $res = fread($fd, 1024*1024); fclose($fd); return $res; case 'request content-type': return $_SERVER['CONTENT_TYPE']; break; case 'request variables': return get_all_http_parameter_keys_values(array_merge($_POST, $_GET)); case 'request variables names': return get_all_http_parameter_keys(array_merge($_POST, $_GET)); case 'request variables values': return get_all_http_parameter_values(array_merge($_POST, $_GET)); case 'all users': $all_users = array_keys($econf->registered_users); sort($all_users, SORT_STRING); return $all_users; case 'user': $user = $econf->user(); return $user->name; case 'all groups': $all_groups = array_keys($econf->registered_groups); sort($all_groups, SORT_STRING); return $all_groups; case 'groups': $user = $econf->user(); $groups = array_unique($user->in_groups()); sort($groups, SORT_STRING); return $groups; case 'user ip': return $_SERVER['REMOTE_ADDR']; case 'server ip': return $_SERVER['SERVER_ADDR']; case 'processor name': return 'phpW2ML'; case 'processor version': return SOFTWARE_VERSION; case 'processor build': return 'N/A'; case 'processor full name': return 'phpW2ML-'.SOFTWARE_VERSION; case 'copyright': return '©2008 Marc Mongenet'; case 'hit counter': case 'running time': return 'N/A'; default: if (preg_match('/^(parent )+uri$/', $var_name)) { return get_parent_uri($econf, $var_name); } log_error('Unknown value: internal="'.$var_name.'"', $econf->log); return NULL; } } function get_parent_uri($econf, $var_name) { $parental_level = substr_count($var_name, 'parent'); $doc = $econf->doc; do { $doc = $doc->including_doc; if ($doc === NULL) { return ''; } --$parental_level; } while ($parental_level > 0); return $doc->uri_str(); } ?>