knjrbfw 0.0.23 → 0.0.24
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/knjrbfw.gemspec +7 -4
- data/lib/knj/autoload.rb +1 -61
- data/lib/knj/datarow.rb +7 -10
- data/lib/knj/datarow_custom.rb +12 -2
- data/lib/knj/datet.rb +107 -0
- data/lib/knj/eruby.rb +21 -12
- data/lib/knj/gettext_threadded.rb +1 -1
- data/lib/knj/http2.rb +27 -9
- data/lib/knj/image.rb +10 -0
- data/lib/knj/includes/require_info.rb +3 -3
- data/lib/knj/knj.rb +16 -9
- data/lib/knj/knj_controller.rb +10 -1
- data/lib/knj/knjdb/drivers/mysql/knjdb_mysql.rb +26 -9
- data/lib/knj/knjdb/drivers/mysql/knjdb_mysql_columns.rb +11 -8
- data/lib/knj/knjdb/drivers/mysql/knjdb_mysql_indexes.rb +5 -0
- data/lib/knj/knjdb/drivers/mysql/knjdb_mysql_tables.rb +83 -26
- data/lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3_tables.rb +3 -3
- data/lib/knj/knjdb/libknjdb.rb +19 -20
- data/lib/knj/knjdb/revision.rb +9 -2
- data/lib/knj/kvm.rb +100 -0
- data/lib/knj/locale_strings.rb +32 -3
- data/lib/knj/locales.rb +1 -4
- data/lib/knj/memory_analyzer.rb +335 -0
- data/lib/knj/objects/objects_sqlhelper.rb +2 -2
- data/lib/knj/objects.rb +44 -11
- data/lib/knj/opts.rb +8 -8
- data/lib/knj/os.rb +13 -0
- data/lib/knj/php.rb +18 -33
- data/lib/knj/process.rb +3 -0
- data/lib/knj/process_meta.rb +1 -1
- data/lib/knj/rhodes/mutex.rb +2 -1
- data/lib/knj/rhodes/rhodes.js +5 -1
- data/lib/knj/rhodes/rhodes.rb +15 -15
- data/lib/knj/rhodes/youtube_embed.erb +12 -0
- data/lib/knj/rhodes/youtube_open.erb +45 -0
- data/lib/knj/strings.rb +2 -1
- data/lib/knj/translations.rb +3 -3
- data/lib/knj/unix_proc.rb +15 -4
- data/lib/knj/web.rb +17 -247
- data/lib/knj/webscripts/image.rhtml +9 -3
- data/lib/knj/wref.rb +109 -70
- data/spec/datet_spec.rb +30 -0
- data/spec/http2_spec.rb +23 -0
- data/spec/php_spec.rb +3 -0
- metadata +20 -17
- data/lib/knj/rhodes/delegate.rb +0 -414
- data/lib/knj/rhodes/weakref.rb +0 -80
data/lib/knj/rhodes/rhodes.rb
CHANGED
@@ -15,6 +15,7 @@ class Knj::Rhodes
|
|
15
15
|
require "#{$knjpath}errors.rb"
|
16
16
|
require "#{$knjpath}gettext_threadded.rb"
|
17
17
|
require "#{$knjpath}locales.rb"
|
18
|
+
require "#{$knjpath}locale_strings.rb"
|
18
19
|
require "#{$knjpath}web.rb"
|
19
20
|
|
20
21
|
if !Kernel.const_defined?("Mutex")
|
@@ -22,11 +23,6 @@ class Knj::Rhodes
|
|
22
23
|
require "#{$knjpath}rhodes/mutex.rb"
|
23
24
|
end
|
24
25
|
|
25
|
-
if !Kernel.const_defined?("WeakRef")
|
26
|
-
print "WeakRef not defined - loading alternative.\n"
|
27
|
-
require "#{$knjpath}rhodes/weakref.rb"
|
28
|
-
end
|
29
|
-
|
30
26
|
require "#{$knjpath}opts.rb"
|
31
27
|
|
32
28
|
require "#{$knjpath}knjdb/libknjdb.rb"
|
@@ -43,7 +39,7 @@ class Knj::Rhodes
|
|
43
39
|
@db = Knj::Db.new(
|
44
40
|
:type => "sqlite3",
|
45
41
|
:subtype => "rhodes",
|
46
|
-
:path => "#{Rho::RhoApplication.
|
42
|
+
:path => "#{Rho::RhoApplication.get_user_path}rhodes_default.sqlite3",
|
47
43
|
:return_keys => "symbols",
|
48
44
|
:require => false
|
49
45
|
)
|
@@ -54,6 +50,7 @@ class Knj::Rhodes
|
|
54
50
|
schema = {"tables" => {}}
|
55
51
|
end
|
56
52
|
|
53
|
+
#Table used for options-module.
|
57
54
|
schema["tables"]["Option"] = {
|
58
55
|
"columns" => [
|
59
56
|
{"name" => "id", "type" => "int", "autoincr" => true, "primarykey" => true},
|
@@ -62,23 +59,26 @@ class Knj::Rhodes
|
|
62
59
|
]
|
63
60
|
}
|
64
61
|
|
62
|
+
#Run database-revision.
|
65
63
|
dbrev = Knj::Db::Revision.new
|
66
64
|
dbrev.init_db("schema" => schema, "db" => @db)
|
67
65
|
|
66
|
+
#Initialize options-module.
|
67
|
+
Knj::Opts.init(
|
68
|
+
"table" => "Option",
|
69
|
+
"knjdb" => @db
|
70
|
+
)
|
71
|
+
|
72
|
+
#Initialize objects-module.
|
68
73
|
@ob = Knj::Objects.new(
|
69
74
|
:db => @db,
|
70
75
|
:class_path => "#{Rho::RhoApplication.get_base_app_path}app/models",
|
71
76
|
:require => false,
|
72
77
|
:module => @args[:module],
|
73
|
-
:datarow => true
|
74
|
-
:cache => :none
|
75
|
-
)
|
76
|
-
|
77
|
-
Knj::Opts.init(
|
78
|
-
"table" => "Option",
|
79
|
-
"knjdb" => @db
|
78
|
+
:datarow => true
|
80
79
|
)
|
81
80
|
|
81
|
+
#Initialize locales.
|
82
82
|
@gettext = Knj::Gettext_threadded.new
|
83
83
|
@gettext.load_dir("#{Rho::RhoApplication.get_base_app_path}app/locales")
|
84
84
|
|
@@ -181,8 +181,8 @@ class Knj::Rhodes
|
|
181
181
|
end
|
182
182
|
|
183
183
|
#This method is used to emulate web-behavior and make Knj::Locales.number_out and friends work properly.
|
184
|
-
def _session
|
185
|
-
return $rhodes.
|
184
|
+
def _session
|
185
|
+
return {:locale => $rhodes.locale}
|
186
186
|
end
|
187
187
|
|
188
188
|
#This method is used to make gettext work.
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<div data-role="page">
|
2
|
+
<div data-role="header">
|
3
|
+
<h1><%=_"YouTube embedded"%></h1>
|
4
|
+
|
5
|
+
<a href="javascript: history.back(-1)" class="ui-btn-left" data-icon="back" data-back="true"><%=_("Back")%></a>
|
6
|
+
</div>
|
7
|
+
<div data-role="content">
|
8
|
+
<center>
|
9
|
+
<iframe width="100%" height="<%=@iframe_height%>px" src="http://www.youtube.com/embed/<%=@params["youtube_id"]%>" frameborder="0" allowfullscreen></iframe>
|
10
|
+
</center>
|
11
|
+
</div>
|
12
|
+
</div>
|
@@ -0,0 +1,45 @@
|
|
1
|
+
<div data-role="page">
|
2
|
+
<div data-role="header">
|
3
|
+
<h1><%=_"Open YouTube link"%></h1>
|
4
|
+
|
5
|
+
<a href="javascript: history.back(-1)" class="ui-btn-left" data-icon="back" data-back="true"><%=_("Back")%></a>
|
6
|
+
</div>
|
7
|
+
<div data-role="content">
|
8
|
+
<ul data-role="listview">
|
9
|
+
<%if System::get_property('platform') != "APPLE"%>
|
10
|
+
<li>
|
11
|
+
<a href="javascript: knj_rhodes_html_links({'url': 'vnd.youtube://<%=@params["youtube_id"]%>'})">
|
12
|
+
<h3><%=_"Open in built-in app. (VND)"%></h3>
|
13
|
+
<p><%=_"This will trigger the YouTube-app. in Android."%></p>
|
14
|
+
</a>
|
15
|
+
</li>
|
16
|
+
<%end%>
|
17
|
+
|
18
|
+
<%if System::get_property("platform") == "APPLE"%>
|
19
|
+
<li>
|
20
|
+
<a href="javascript: knj_rhodes_html_links({'url': iphone_str})">
|
21
|
+
<h3><%=_"Open in built-in app. (iPhone)"%></h3>
|
22
|
+
<p><%=_"This will trigger the YouTube-app. on iPhone."%></p>
|
23
|
+
</a>
|
24
|
+
</li>
|
25
|
+
<%end%>
|
26
|
+
|
27
|
+
<li>
|
28
|
+
<a href="javascript: knj_rhodes_html_links({'url': 'http://www.youtube.com/watch?v=<%=@params["youtube_id"]%>'})">
|
29
|
+
<h3><%=_"Open YouTube-URL"%></h3>
|
30
|
+
<p><%=_"This will open the YouTube-video in a browser."%></p>
|
31
|
+
</a>
|
32
|
+
</li>
|
33
|
+
<li>
|
34
|
+
<a href="<%=url_for(:action => :youtube_embed, :query => {:youtube_id => @params["youtube_id"]})%>">
|
35
|
+
<h3><%=_"Open YouTube embedded"%></h3>
|
36
|
+
<p><%=_"Watch the video in this app. using embedding from YouTube."%></p>
|
37
|
+
</a>
|
38
|
+
</li>
|
39
|
+
</ul>
|
40
|
+
|
41
|
+
<script>
|
42
|
+
var iphone_str = "[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@\"http://www.youtube.com/v/oHg5SJYRHA0&f=gdata_videos\"]]; "
|
43
|
+
</script>
|
44
|
+
</div>
|
45
|
+
</div>
|
data/lib/knj/strings.rb
CHANGED
@@ -110,6 +110,7 @@ module Knj::Strings
|
|
110
110
|
#Returns 'Yes' or 'No' based on a value. The value can be 0, 1, yes, no, true or false.
|
111
111
|
def self.yn_str(value, str_yes = "Yes", str_no = "No")
|
112
112
|
value = value.to_i if Knj::Php.is_numeric(value)
|
113
|
+
value_s = value.to_s
|
113
114
|
|
114
115
|
if value.is_a?(Integer)
|
115
116
|
if value == 0
|
@@ -119,7 +120,7 @@ module Knj::Strings
|
|
119
120
|
end
|
120
121
|
end
|
121
122
|
|
122
|
-
return str_no if !value or
|
123
|
+
return str_no if !value or value_s == "no" or value_s == "false" or value_s == ""
|
123
124
|
return str_yes
|
124
125
|
end
|
125
126
|
|
data/lib/knj/translations.rb
CHANGED
@@ -113,11 +113,11 @@ class Knj::Translations
|
|
113
113
|
"object_class" => obj.class.name
|
114
114
|
})
|
115
115
|
trans.each do |tran|
|
116
|
-
#Delete the translation object.
|
117
|
-
@ob.delete(tran)
|
118
|
-
|
119
116
|
#Delete the cache if defined on the object.
|
120
117
|
cache.delete(tran[:key].to_sym) if cache and cache.key?(tran[:key].to_sym)
|
118
|
+
|
119
|
+
#Delete the translation object.
|
120
|
+
@ob.delete(tran)
|
121
121
|
end
|
122
122
|
end
|
123
123
|
end
|
data/lib/knj/unix_proc.rb
CHANGED
@@ -12,7 +12,7 @@ class Knj::Unix_proc
|
|
12
12
|
begin
|
13
13
|
proc_ele = PROCS[pid]
|
14
14
|
proc_ele.update_data(data)
|
15
|
-
rescue
|
15
|
+
rescue Knj::Wref::Recycled
|
16
16
|
proc_ele = Knj::Unix_proc.new(data)
|
17
17
|
PROCS[pid] = proc_ele
|
18
18
|
end
|
@@ -30,7 +30,7 @@ class Knj::Unix_proc
|
|
30
30
|
end
|
31
31
|
|
32
32
|
MUTEX.synchronize do
|
33
|
-
ret = []
|
33
|
+
ret = [] unless block_given?
|
34
34
|
res = Knj::Os.shellcmd(cmdstr)
|
35
35
|
|
36
36
|
res.scan(/^(\S+)\s+([0-9]+)\s+([0-9.]+)\s+([0-9.]+)\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+\s+\S+ (.+)($|\n)/) do |match|
|
@@ -60,11 +60,22 @@ class Knj::Unix_proc
|
|
60
60
|
next if !found
|
61
61
|
end
|
62
62
|
|
63
|
-
|
63
|
+
proc_obj = Knj::Unix_proc.spawn(data)
|
64
|
+
|
65
|
+
if block_given?
|
66
|
+
yield(proc_obj)
|
67
|
+
else
|
68
|
+
ret << proc_obj
|
69
|
+
end
|
64
70
|
end
|
65
71
|
|
66
72
|
PROCS.clean
|
67
|
-
|
73
|
+
|
74
|
+
if block_given?
|
75
|
+
return nil
|
76
|
+
else
|
77
|
+
return ret
|
78
|
+
end
|
68
79
|
end
|
69
80
|
end
|
70
81
|
|
data/lib/knj/web.rb
CHANGED
@@ -1,213 +1,16 @@
|
|
1
1
|
class Knj::Web
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
@db = @args[:db] if @args[:db]
|
7
|
-
@args[:tmp] = "/tmp" if !@args[:tmp]
|
8
|
-
|
9
|
-
raise "No ID was given." if !@args[:id]
|
10
|
-
raise "No DB was given." if !@args[:db]
|
11
|
-
|
12
|
-
if @args[:cgi]
|
13
|
-
@cgi = @args[:cgi]
|
14
|
-
elsif $_CGI
|
15
|
-
@cgi = $_CGI
|
16
|
-
else
|
17
|
-
if ENV["HTTP_HOST"] or $knj_eruby or Knj::Php.class_exists("Apache")
|
18
|
-
@cgi = CGI.new
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
$_CGI = @cgi if !$_CGI
|
23
|
-
self.read_cgi
|
24
|
-
|
25
|
-
if $_FCGI
|
26
|
-
KnjEruby.connect("exit") do
|
27
|
-
@session.close
|
28
|
-
|
29
|
-
@post = nil
|
30
|
-
@get = nil
|
31
|
-
@server = nil
|
32
|
-
@cookie = nil
|
33
|
-
|
34
|
-
$_POST = nil
|
35
|
-
$_GET = nil
|
36
|
-
$_SERVER = nil
|
37
|
-
$_COOKIE = nil
|
38
|
-
end
|
39
|
-
else
|
40
|
-
Kernel.at_exit do
|
41
|
-
@session.close
|
42
|
-
|
43
|
-
@post = nil
|
44
|
-
@get = nil
|
45
|
-
@server = nil
|
46
|
-
@cookie = nil
|
47
|
-
|
48
|
-
$_POST = nil
|
49
|
-
$_GET = nil
|
50
|
-
$_SERVER = nil
|
51
|
-
$_COOKIE = nil
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
def read_cgi(args = {})
|
57
|
-
args.each do |key, value|
|
58
|
-
if key == :cgi
|
59
|
-
@cgi = value
|
60
|
-
else
|
61
|
-
raise "No such key: #{key.to_s}"
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
if $_FCGI_COUNT and $_FCGI and $_CGI
|
66
|
-
@server = {}
|
67
|
-
$_CGI.env_table.each do |key, value|
|
68
|
-
@server[key] = value
|
69
|
-
end
|
70
|
-
elsif $_CGI and ENV["HTTP_HOST"] and ENV["REMOTE_ADDR"]
|
71
|
-
@server = {}
|
72
|
-
ENV.each do |key, value|
|
73
|
-
@server[key] = value
|
74
|
-
end
|
75
|
-
elsif Knj::Php.class_exists("Apache")
|
76
|
-
@server = {
|
77
|
-
"HTTP_HOST" => Apache.request.hostname,
|
78
|
-
"HTTP_USER_AGENT" => Apache.request.headers_in["User-Agent"],
|
79
|
-
"REMOTE_ADDR" => Apache.request.remote_host(1),
|
80
|
-
"REQUEST_URI" => Apache.request.unparsed_uri
|
81
|
-
}
|
82
|
-
else
|
83
|
-
@server = {}
|
84
|
-
end
|
85
|
-
|
86
|
-
@files = {}
|
87
|
-
@post = {}
|
88
|
-
if @cgi and @cgi.request_method == "POST"
|
89
|
-
@cgi.params.each do |pair|
|
90
|
-
do_files = false
|
91
|
-
isstring = true
|
92
|
-
varname = pair[0]
|
93
|
-
stringparse = nil
|
94
|
-
|
95
|
-
if pair[1][0].class.name == "Tempfile"
|
96
|
-
if varname[0..3] == "file"
|
97
|
-
isstring = false
|
98
|
-
do_files = true
|
99
|
-
|
100
|
-
if pair[1][0].size > 0
|
101
|
-
stringparse = {
|
102
|
-
"name" => pair[1][0].original_filename,
|
103
|
-
"tmp_name" => pair[1][0].path,
|
104
|
-
"size" => pair[1][0].size,
|
105
|
-
"error" => 0
|
106
|
-
}
|
107
|
-
|
108
|
-
stringparse["name"] = pair[1][0].original_filename if pair[1][0].respond_to?("original_filename")
|
109
|
-
end
|
110
|
-
else
|
111
|
-
stringparse = File.read(pair[1][0].path)
|
112
|
-
end
|
113
|
-
elsif pair[1][0].is_a?(StringIO)
|
114
|
-
if varname[0..3] == "file"
|
115
|
-
tmpname = @args[:tmp] + "/knj_web_upload_#{Time.now.to_f.to_s}_#{rand(1000).to_s.untaint}"
|
116
|
-
isstring = false
|
117
|
-
do_files = true
|
118
|
-
cont = pair[1][0].string
|
119
|
-
Knj::Php.file_put_contents(tmpname, cont.to_s)
|
120
|
-
|
121
|
-
if cont.length > 0
|
122
|
-
stringparse = {
|
123
|
-
"tmp_name" => tmpname,
|
124
|
-
"size" => cont.length,
|
125
|
-
"error" => 0
|
126
|
-
}
|
127
|
-
|
128
|
-
stringparse["name"] = pair[1][0].original_filename if pair[1][0].respond_to?("original_filename")
|
129
|
-
end
|
130
|
-
else
|
131
|
-
stringparse = pair[1][0].string
|
132
|
-
end
|
133
|
-
else
|
134
|
-
stringparse = pair[1][0]
|
135
|
-
end
|
136
|
-
|
137
|
-
if stringparse
|
138
|
-
if !do_files
|
139
|
-
if isstring
|
140
|
-
Knj::Web.parse_name(@post, varname, stringparse)
|
141
|
-
else
|
142
|
-
@post[varname] = stringparse
|
143
|
-
end
|
144
|
-
else
|
145
|
-
if isstring
|
146
|
-
Knj::Web.parse_name(@files, varname, stringparse)
|
147
|
-
else
|
148
|
-
@files[varname] = stringparse
|
149
|
-
end
|
150
|
-
end
|
151
|
-
end
|
152
|
-
end
|
153
|
-
end
|
154
|
-
|
155
|
-
|
156
|
-
if @cgi and @cgi.query_string
|
157
|
-
@get = Knj::Web.parse_urlquery(@cgi.query_string)
|
158
|
-
else
|
159
|
-
@get = {}
|
160
|
-
end
|
2
|
+
#Parses URI and returns hash with data.
|
3
|
+
def self.parse_uri(str)
|
4
|
+
uri_match = str.to_s.match(/^\/(.+?\..+?|)(\?(.+)|)$/)
|
5
|
+
raise "Could not parse the URI: '#{str}'." if !uri_match
|
161
6
|
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
end
|
167
|
-
end
|
168
|
-
|
169
|
-
self.global_params if @args[:globals]
|
170
|
-
|
171
|
-
if @cookie[@args[:id]] and (sdata = @args[:db].single(:sessions, :id => @cookie[@args[:id]]))
|
172
|
-
@data = Knj::ArrayExt.hash_sym(sdata)
|
173
|
-
|
174
|
-
if @data
|
175
|
-
if @data[:user_agent] != @server["HTTP_USER_AGENT"] or @data[:ip] != @server["REMOTE_ADDR"]
|
176
|
-
@data = nil
|
177
|
-
else
|
178
|
-
@db.update(:sessions, {"last_url" => @server["REQUEST_URI"].to_s, "date_active" => Time.new}, {"id" => @data[:id]})
|
179
|
-
session_id = @args[:id] + "_" + @data[:id]
|
180
|
-
end
|
181
|
-
end
|
182
|
-
end
|
183
|
-
|
184
|
-
if !@data or !session_id
|
185
|
-
@db.insert(:sessions,
|
186
|
-
:date_start => Time.new,
|
187
|
-
:date_active => Time.new,
|
188
|
-
:user_agent => @server["HTTP_USER_AGENT"],
|
189
|
-
:ip => @server["REMOTE_ADDR"],
|
190
|
-
:last_url => @server["REQUEST_URI"].to_s
|
191
|
-
)
|
192
|
-
|
193
|
-
@data = Knj::ArrayExt.hash_sym(@db.single(:sessions, :id => @db.last_id))
|
194
|
-
session_id = @args[:id] + "_" + @data[:id]
|
195
|
-
Knj::Php.setcookie(@args[:id], @data[:id])
|
196
|
-
end
|
197
|
-
|
198
|
-
require "cgi/session"
|
199
|
-
require "cgi/session/pstore"
|
200
|
-
@session = CGI::Session.new(@session, "database_manager" => CGI::Session::PStore, "session_id" => session_id, "session_path" => @args[:tmp])
|
201
|
-
end
|
202
|
-
|
203
|
-
def [](key)
|
204
|
-
return @session[key.to_sym]
|
205
|
-
end
|
206
|
-
|
207
|
-
def []=(key, value)
|
208
|
-
return @session[key.to_sym] = value
|
7
|
+
return {
|
8
|
+
:path => "/#{uri_match[1]}",
|
9
|
+
:query => uri_match[3]
|
10
|
+
}
|
209
11
|
end
|
210
12
|
|
13
|
+
#Parses cookies-string and returns hash with parsed cookies.
|
211
14
|
def self.parse_cookies(str)
|
212
15
|
ret = {}
|
213
16
|
|
@@ -356,22 +159,6 @@ class Knj::Web
|
|
356
159
|
end
|
357
160
|
end
|
358
161
|
|
359
|
-
def global_params
|
360
|
-
$_POST = @post
|
361
|
-
$_GET = @get
|
362
|
-
$_COOKIE = @cookie
|
363
|
-
$_FILES = @files
|
364
|
-
$_SERVER = @server
|
365
|
-
end
|
366
|
-
|
367
|
-
def destroy
|
368
|
-
@cgi = nil
|
369
|
-
@post = nil
|
370
|
-
@get = nil
|
371
|
-
@session = nil
|
372
|
-
@args = nil
|
373
|
-
end
|
374
|
-
|
375
162
|
def self.require_eruby(filepath)
|
376
163
|
cont = File.read(filepath).untaint
|
377
164
|
parse = Erubis.Eruby.new(cont)
|
@@ -722,13 +509,8 @@ class Knj::Web
|
|
722
509
|
return html
|
723
510
|
end
|
724
511
|
|
725
|
-
def self.rendering_engine
|
726
|
-
|
727
|
-
servervar = _server
|
728
|
-
rescue Exception
|
729
|
-
servervar = $_SERVER
|
730
|
-
end
|
731
|
-
|
512
|
+
def self.rendering_engine(servervar = nil)
|
513
|
+
servervar = _server if !servervar
|
732
514
|
if !servervar
|
733
515
|
raise "Could not figure out meta data."
|
734
516
|
end
|
@@ -749,13 +531,8 @@ class Knj::Web
|
|
749
531
|
end
|
750
532
|
end
|
751
533
|
|
752
|
-
def self.os
|
753
|
-
|
754
|
-
servervar = _server
|
755
|
-
rescue Exception
|
756
|
-
servervar = $_SERVER
|
757
|
-
end
|
758
|
-
|
534
|
+
def self.os(servervar = nil)
|
535
|
+
servervar = _server if !servervar
|
759
536
|
if !servervar
|
760
537
|
raise "Could not figure out meta data."
|
761
538
|
end
|
@@ -778,14 +555,7 @@ class Knj::Web
|
|
778
555
|
end
|
779
556
|
|
780
557
|
def self.browser(servervar = nil)
|
781
|
-
if !servervar
|
782
|
-
begin
|
783
|
-
servervar = _server
|
784
|
-
rescue Exception => e
|
785
|
-
servervar = $_SERVER
|
786
|
-
end
|
787
|
-
end
|
788
|
-
|
558
|
+
servervar = _server if !servervar
|
789
559
|
raise "Could not figure out meta data." if !servervar
|
790
560
|
agent = servervar["HTTP_USER_AGENT"].to_s.downcase
|
791
561
|
|
@@ -923,10 +693,10 @@ class Knj::Web
|
|
923
693
|
end
|
924
694
|
|
925
695
|
def self.locale(args = {})
|
926
|
-
|
696
|
+
if args[:servervar]
|
697
|
+
servervar = args[:servervar]
|
698
|
+
else
|
927
699
|
servervar = _server
|
928
|
-
rescue Exception
|
929
|
-
servervar = $_SERVER
|
930
700
|
end
|
931
701
|
|
932
702
|
if !servervar
|
@@ -26,6 +26,12 @@
|
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
|
+
#Base64-encoding of path.
|
30
|
+
if _get["path64"]
|
31
|
+
require "base64"
|
32
|
+
_get["path"] = Base64.decode64(_get["path64"])
|
33
|
+
end
|
34
|
+
|
29
35
|
|
30
36
|
idstr = Digest::MD5.hexdigest("#{_get["path"]}_#{_get["smartsize"].to_i}_#{_get["width"].to_i}_#{_get["height"].to_i}_#{_get["maxwidth"].to_i}_#{_get["maxheight"].to_i}_#{_get["rounded_corners"].to_i}_#{_get["border"].to_i}_#{_get["border_color"]}")
|
31
37
|
|
@@ -38,9 +44,9 @@
|
|
38
44
|
|
39
45
|
tmp_use = false
|
40
46
|
tmp_write = false
|
41
|
-
if
|
47
|
+
if Knj::CONFIG["webscripts_image"]
|
42
48
|
tmp_use = true
|
43
|
-
tmp_path = "#{
|
49
|
+
tmp_path = "#{Knj::CONFIG["webscripts_image"]["tmp_path"]}/#{idstr}"
|
44
50
|
tmp_exists = File.exists?(tmp_path)
|
45
51
|
tmp_write = true if !tmp_exists
|
46
52
|
|
@@ -167,7 +173,7 @@
|
|
167
173
|
if tmp_use and !force
|
168
174
|
_kas.header("Last-Modified", "#{time_orig.httpdate} GMT") if time_orig
|
169
175
|
_kas.header("Content-Type", "image/png")
|
170
|
-
_httpsession.force_content(File.
|
176
|
+
_httpsession.force_content(File.read(tmp_path))
|
171
177
|
else
|
172
178
|
_kas.header("Last-Modified", "#{time_orig.httpdate} GMT") if time_orig
|
173
179
|
_kas.header("Content-Type", "image/png")
|