rhodes 3.2.0.beta.2 → 3.2.0.beta.4
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +1 -0
- data/Manifest.txt +3 -0
- data/doc/build.txt +1 -1
- data/doc/device-caps.txt +4 -0
- data/doc/extensions.txt +3 -0
- data/doc/install.txt +3 -2
- data/lib/framework/date.rb +13 -0
- data/lib/framework/dateME.rb +2 -0
- data/lib/framework/rho/rhoapplication.rb +3 -1
- data/lib/framework/rho/rhoerror.rb +2 -2
- data/lib/framework/rho/rhomsg.rb +2 -2
- data/lib/framework/rholang/localization_simplified.rb +39 -13
- data/platform/bb/RubyVM/src/com/xruby/runtime/lang/RubyRuntime.java +2 -2
- data/platform/bb/rhodes/src/com/rho/rubyext/System.java +1 -1
- data/platform/iphone/Classes/Rhodes.m +1 -1
- data/platform/iphone/rhosynclib/rhosynclib.xcodeproj/project.pbxproj +8 -8
- data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/MacOS/RhoSimulator +0 -0
- data/platform/shared/RhoConnectClient/RhoConnectClient.cpp +39 -0
- data/platform/shared/RhoConnectClient/RhoConnectClient.h +2 -0
- data/platform/shared/curl/lib/config-mac.h +956 -0
- data/platform/shared/curl/lib/setup.h +1 -1
- data/platform/shared/curl/lib/ssluse.h +7 -0
- data/platform/shared/qt/RhoSimulator.pro +3 -0
- data/platform/shared/qt/curl/curl.pro +2 -1
- data/platform/shared/qt/rhodes/impl/RhoClassFactoryImpl.h +6 -3
- data/platform/shared/qt/rhodes/impl/SSLImpl.cpp +69 -0
- data/platform/shared/qt/rhodes/impl/SSLImpl.h +49 -0
- data/platform/shared/qt/rhodes/rhodes.pro +4 -2
- data/platform/symbian/rhodes/rhodes.pro +3 -2
- data/platform/symbian/rholib/rholib.pro +6 -0
- data/platform/win32/RhoSimulator/RhoSimulator.exe +0 -0
- data/rhodes.gemspec +1 -1
- metadata +7 -4
data/CHANGELOG
CHANGED
data/Manifest.txt
CHANGED
@@ -2139,6 +2139,7 @@ platform/shared/curl/include/curl/types.h
|
|
2139
2139
|
platform/shared/curl/lib/amigaos.c
|
2140
2140
|
platform/shared/curl/lib/arpa_telnet.h
|
2141
2141
|
platform/shared/curl/lib/base64.c
|
2142
|
+
platform/shared/curl/lib/config-mac.h
|
2142
2143
|
platform/shared/curl/lib/config-symbian.h
|
2143
2144
|
platform/shared/curl/lib/config-win32.h
|
2144
2145
|
platform/shared/curl/lib/config-win32ce.h
|
@@ -2382,6 +2383,8 @@ platform/shared/qt/rhodes/impl/RhoThreadImpl.cpp
|
|
2382
2383
|
platform/shared/qt/rhodes/impl/RhoThreadImpl.h
|
2383
2384
|
platform/shared/qt/rhodes/impl/RingtoneManagerImpl.cpp
|
2384
2385
|
platform/shared/qt/rhodes/impl/SignatureImpl.cpp
|
2386
|
+
platform/shared/qt/rhodes/impl/SSLImpl.cpp
|
2387
|
+
platform/shared/qt/rhodes/impl/SSLImpl.h
|
2385
2388
|
platform/shared/qt/rhodes/impl/SystemImpl.cpp
|
2386
2389
|
platform/shared/qt/rhodes/impl/WebViewImpl.cpp
|
2387
2390
|
platform/shared/qt/rhodes/main.cpp
|
data/doc/build.txt
CHANGED
@@ -13,7 +13,7 @@ You should check to see that the required software in installed on your computer
|
|
13
13
|
|
14
14
|
If you planning to modify or [extend](extensions) Rhodes, you will need the Rhodes source code. It is distributed under MIT license. You don't need it if you are not planning to modify/extend Rhodes.
|
15
15
|
|
16
|
-
Rhodes source code is available on github.com. You will need Git to get it. If you used [
|
16
|
+
Rhodes source code is available on github.com. You will need Git to get it. If you used [RhoStudio for Windows](http://rhomobile.com/rhostudio-windows) you probably already have Git installed on your system. Otherwise, load it from [here](http://git-scm.com).
|
17
17
|
|
18
18
|
To clone Rhodes to your local computer, execute git clone from the command line:
|
19
19
|
|
data/doc/device-caps.txt
CHANGED
@@ -115,6 +115,10 @@ Set application icon badge (number) - only for iPhone. set badge to 0 (zero) for
|
|
115
115
|
:::ruby
|
116
116
|
System.set_application_icon_badge(badge_number)
|
117
117
|
|
118
|
+
Switch locale at runtime:
|
119
|
+
:::ruby
|
120
|
+
System::set_locale('es') #set current locale to Spanish
|
121
|
+
|
118
122
|
### Sample
|
119
123
|
See layout.erb of [System API Sample application](http://github.com/rhomobile/rhodes-system-api-samples/tree/master/app/layout.erb) for some of the examples of how to use System class. There is also [system test](http://github.com/rhomobile/rhodes-system-api-samples/tree/master/app/SystemTest/controller.rb) which demonstrate System class usage.
|
120
124
|
|
data/doc/extensions.txt
CHANGED
@@ -57,6 +57,9 @@ And use this string in the view:
|
|
57
57
|
<li><%= Localization::Views[:greeting] %></li>
|
58
58
|
</ul>
|
59
59
|
|
60
|
+
To switch locale at runtime use:
|
61
|
+
:::ruby
|
62
|
+
System::set_locale('es') #set current locale to Spanish
|
60
63
|
#### Details:
|
61
64
|
|
62
65
|
All non-ascii symbols should be utf-8 encoded
|
data/doc/install.txt
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
# Install Rhodes
|
2
2
|
|
3
|
-
##
|
4
|
-
|
3
|
+
## Windows
|
4
|
+
|
5
|
+
If you're running Windows, download the latest [RhoStudio for Windows](http://rhomobile.com/rhostudio-windows). This installs the [Ruby stack](http://www.ruby-lang.org/en/), [Redis](http://redis.io/), [RhoConnect](/rhoconnect/introduction) and [Rhodes](/rhodes/introduction).
|
5
6
|
|
6
7
|
Once the installer has completed, and you have installed the Java Development Kit, you can skip to the [Setup Rhodes section](#setup-rhodes).
|
7
8
|
|
data/lib/framework/date.rb
CHANGED
@@ -8,6 +8,8 @@ end
|
|
8
8
|
require 'rholang/localization_simplified'
|
9
9
|
# Modification of ruby constants
|
10
10
|
class Date
|
11
|
+
alias_method :old_strftime, :strftime
|
12
|
+
|
11
13
|
#FIXME as these are defined as Ruby constants, they can not be overwritten
|
12
14
|
MONTHNAMES = LocalizationSimplified::DateHelper::Monthnames
|
13
15
|
ABBR_MONTHNAMES = LocalizationSimplified::DateHelper::AbbrMonthnames
|
@@ -18,6 +20,17 @@ class Date
|
|
18
20
|
#, :long_ordinal => lambda { |date| date.strftime("%B #{date.day.ordinalize}, %Y") }, # => "April 25th, 2007" :rfc822 => "%e %b %Y"
|
19
21
|
DATE_FORMATS.merge!(LocalizationSimplified::DateHelper::DateFormats)
|
20
22
|
|
23
|
+
def strftime(date)
|
24
|
+
|
25
|
+
if LocalizationSimplified::get_cur_locale() == 'en'
|
26
|
+
return old_strftime(date)
|
27
|
+
end
|
28
|
+
|
29
|
+
tmpdate=date.dup
|
30
|
+
LocalizationSimplified::localize_strftime(tmpdate, self)
|
31
|
+
old_strftime(tmpdate)
|
32
|
+
end
|
33
|
+
|
21
34
|
def to_formatted_s(type)
|
22
35
|
strftime(DATE_FORMATS[type])
|
23
36
|
end
|
data/lib/framework/dateME.rb
CHANGED
@@ -31,6 +31,8 @@ require 'rho/rhomsg'
|
|
31
31
|
require 'rho/rhotabbar'
|
32
32
|
require 'rho/rhotoolbar'
|
33
33
|
|
34
|
+
::System::set_locale(nil, nil)
|
35
|
+
|
34
36
|
module Rho
|
35
37
|
class RhoApplication
|
36
38
|
attr_accessor :default_menu
|
@@ -44,7 +46,7 @@ module Rho
|
|
44
46
|
{:action => :home}, {:action => :refresh}, {:action => :options} ]
|
45
47
|
|
46
48
|
def initialize
|
47
|
-
LocalizationSimplified.requre_loc(Rho::RhoFSConnector::get_app_path('app') + 'lang/lang_',true)
|
49
|
+
#LocalizationSimplified.requre_loc(Rho::RhoFSConnector::get_app_path('app') + 'lang/lang_',true)
|
48
50
|
|
49
51
|
unless @rhom
|
50
52
|
@rhom = Rhom::Rhom.new
|
data/lib/framework/rho/rhomsg.rb
CHANGED
@@ -6,7 +6,8 @@
|
|
6
6
|
|
7
7
|
module LocalizationSimplified
|
8
8
|
@@ignore = "\xFF\xFF\xFF\xFF" # %% == Literal "%" character
|
9
|
-
@@cur_locale = 'en'
|
9
|
+
@@cur_locale = nil #'en'
|
10
|
+
@@cur_country = nil #'en'
|
10
11
|
# substitute all daynames and monthnames with localized names
|
11
12
|
# from RUtils plugin
|
12
13
|
def self.localize_strftime(date='%d.%m.%Y', time='')
|
@@ -22,12 +23,24 @@ module LocalizationSimplified
|
|
22
23
|
@@cur_locale
|
23
24
|
end
|
24
25
|
|
25
|
-
|
26
|
-
|
27
|
-
|
26
|
+
def self.set_cur_locale(loc, country)
|
27
|
+
@@cur_locale = loc
|
28
|
+
@@cur_country = country
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.init_current_locale
|
32
|
+
return if @@cur_locale
|
33
|
+
|
34
|
+
@@cur_locale = System::get_locale().downcase
|
35
|
+
@@cur_locale = 'en' unless @@cur_locale
|
36
|
+
@@cur_country = System::get_property("country").downcase
|
28
37
|
|
29
|
-
puts "Current locale: #{
|
30
|
-
|
38
|
+
puts "Current locale: #{@@cur_locale}; Country code: #{@@cur_country}"
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.requre_loc(file,check_exist)
|
43
|
+
init_current_locale()
|
31
44
|
|
32
45
|
unless check_exist
|
33
46
|
if defined?( RHODES_EMULATOR )
|
@@ -38,13 +51,15 @@ end
|
|
38
51
|
puts "file: #{file}"
|
39
52
|
end
|
40
53
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
require file +
|
54
|
+
puts "Current locale: #{@@cur_locale}; Country code: #{@@cur_country}"
|
55
|
+
|
56
|
+
if @@cur_country && @@cur_country.length() > 0 && Rho::file_exist?(file + @@cur_locale + '_' + @@cur_country + RHO_RB_EXT)
|
57
|
+
require file + @@cur_locale + '_' + @@cur_country
|
58
|
+
elsif Rho::file_exist?(file + @@cur_locale + RHO_RB_EXT)
|
59
|
+
require file + @@cur_locale
|
45
60
|
else
|
46
|
-
puts 'Could not find resources for locale: ' +
|
47
|
-
if
|
61
|
+
puts 'Could not find resources for locale: ' + @@cur_locale.to_s + ";file: #{file}" if @@cur_locale != 'en'
|
62
|
+
if @@cur_locale != 'en' && Rho::file_exist?(file + 'en' + RHO_RB_EXT)
|
48
63
|
puts 'Load english resources.'
|
49
64
|
require file + 'en'
|
50
65
|
end
|
@@ -53,7 +68,18 @@ end
|
|
53
68
|
|
54
69
|
end
|
55
70
|
|
56
|
-
LocalizationSimplified.requre_loc('rholang/lang_',false)
|
71
|
+
#LocalizationSimplified.requre_loc('rholang/lang_',false)
|
72
|
+
|
73
|
+
module System
|
74
|
+
def self.set_locale(locale_code, country_code = nil)
|
75
|
+
LocalizationSimplified::set_cur_locale(locale_code, country_code)
|
76
|
+
|
77
|
+
LocalizationSimplified.requre_loc('rholang/lang_',false)
|
78
|
+
LocalizationSimplified.requre_loc(Rho::RhoFSConnector::get_app_path('app') + 'lang/lang_',true)
|
79
|
+
LocalizationSimplified.requre_loc('rholang/rhoerror_',false)
|
80
|
+
LocalizationSimplified.requre_loc('rholang/rhomsg_',false)
|
81
|
+
end
|
82
|
+
end
|
57
83
|
|
58
84
|
class Hash
|
59
85
|
def reverse_merge(other_hash)
|
@@ -98,7 +98,7 @@ public class RubyRuntime
|
|
98
98
|
public static RubyClass EVRecordClass;
|
99
99
|
public static RubyClass GeoLocationClass;
|
100
100
|
public static RubyModule AsyncHttpModule;
|
101
|
-
public static
|
101
|
+
public static RubyModule SystemClass;
|
102
102
|
public static RubyModule JSONClass;
|
103
103
|
public static RubyClass CameraClass;
|
104
104
|
public static RubyClass RhoBluetoothClass;
|
@@ -311,7 +311,7 @@ public class RubyRuntime
|
|
311
311
|
EVRecordClass = RubyAPI.defineClass("EVRecord", RubyRuntime.ObjectClass);
|
312
312
|
GeoLocationClass = RubyAPI.defineClass("GeoLocation", RubyRuntime.ObjectClass);
|
313
313
|
AsyncHttpModule = rhoModule.defineModule("AsyncHttp");
|
314
|
-
SystemClass = RubyAPI.
|
314
|
+
SystemClass = RubyAPI.defineModule("System");//, RubyRuntime.ObjectClass);
|
315
315
|
JSONClass = rhoModule.defineModule("JSON" );//, RubyRuntime.ObjectClass);
|
316
316
|
CameraClass = RubyAPI.defineClass("Camera", RubyRuntime.ObjectClass);
|
317
317
|
RhoBluetoothClass = RubyAPI.defineClass("RhoBluetooth", RubyRuntime.ObjectClass);
|
@@ -58,7 +58,7 @@ public class System {
|
|
58
58
|
|
59
59
|
private static RhodesApp RHODESAPP(){ return RhodesApp.getInstance(); }
|
60
60
|
|
61
|
-
public static void initMethods(
|
61
|
+
public static void initMethods(RubyModule klass){
|
62
62
|
klass.getSingletonClass().defineMethod( "get_property", new RubyOneArgMethod(){
|
63
63
|
protected RubyValue run(RubyValue receiver, RubyValue arg, RubyBlock block )
|
64
64
|
{
|
@@ -26,8 +26,8 @@
|
|
26
26
|
46E9214C0E9BF40A00F14AC8 /* printbuf.c in Sources */ = {isa = PBXBuildFile; fileRef = 46E9213A0E9BF40A00F14AC8 /* printbuf.c */; };
|
27
27
|
46E9214D0E9BF40A00F14AC8 /* printbuf.h in Headers */ = {isa = PBXBuildFile; fileRef = 46E9213B0E9BF40A00F14AC8 /* printbuf.h */; };
|
28
28
|
5C329221112C748F00FD3F13 /* RJSONTokener.c in Sources */ = {isa = PBXBuildFile; fileRef = 5C329220112C748F00FD3F13 /* RJSONTokener.c */; };
|
29
|
-
5C5335AC0FC2F3AB00F268F0 /*
|
30
|
-
5C5335AD0FC2F3AB00F268F0 /*
|
29
|
+
5C5335AC0FC2F3AB00F268F0 /* SyncThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5C5335AA0FC2F3AB00F268F0 /* SyncThread.cpp */; };
|
30
|
+
5C5335AD0FC2F3AB00F268F0 /* SyncThread.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C5335AB0FC2F3AB00F268F0 /* SyncThread.h */; };
|
31
31
|
5C74058A1064AA4900163569 /* DBAttrManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5C7405881064AA4900163569 /* DBAttrManager.cpp */; };
|
32
32
|
5C74058B1064AA4900163569 /* DBAttrManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C7405891064AA4900163569 /* DBAttrManager.h */; };
|
33
33
|
5C7405F2106CF7F400163569 /* SyncNotify.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5C7405F0106CF7F400163569 /* SyncNotify.cpp */; };
|
@@ -69,8 +69,8 @@
|
|
69
69
|
46E9213A0E9BF40A00F14AC8 /* printbuf.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = printbuf.c; path = ../../shared/json/printbuf.c; sourceTree = SOURCE_ROOT; };
|
70
70
|
46E9213B0E9BF40A00F14AC8 /* printbuf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = printbuf.h; path = ../../shared/json/printbuf.h; sourceTree = SOURCE_ROOT; };
|
71
71
|
5C329220112C748F00FD3F13 /* RJSONTokener.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = RJSONTokener.c; sourceTree = "<group>"; };
|
72
|
-
5C5335AA0FC2F3AB00F268F0 /*
|
73
|
-
5C5335AB0FC2F3AB00F268F0 /*
|
72
|
+
5C5335AA0FC2F3AB00F268F0 /* SyncThread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SyncThread.cpp; path = ../../shared/sync/SyncThread.cpp; sourceTree = SOURCE_ROOT; };
|
73
|
+
5C5335AB0FC2F3AB00F268F0 /* SyncThread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SyncThread.h; path = ../../shared/sync/SyncThread.h; sourceTree = SOURCE_ROOT; };
|
74
74
|
5C7405881064AA4900163569 /* DBAttrManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DBAttrManager.cpp; path = ../../shared/db/DBAttrManager.cpp; sourceTree = SOURCE_ROOT; };
|
75
75
|
5C7405891064AA4900163569 /* DBAttrManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DBAttrManager.h; path = ../../shared/db/DBAttrManager.h; sourceTree = SOURCE_ROOT; };
|
76
76
|
5C7405F0106CF7F400163569 /* SyncNotify.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SyncNotify.cpp; path = ../../shared/sync/SyncNotify.cpp; sourceTree = SOURCE_ROOT; };
|
@@ -168,8 +168,8 @@
|
|
168
168
|
5C7405F1106CF7F400163569 /* SyncNotify.h */,
|
169
169
|
5CE294091009D8B7009A75F6 /* ClientRegister.cpp */,
|
170
170
|
5CE2940A1009D8B7009A75F6 /* ClientRegister.h */,
|
171
|
-
5C5335AA0FC2F3AB00F268F0 /*
|
172
|
-
5C5335AB0FC2F3AB00F268F0 /*
|
171
|
+
5C5335AA0FC2F3AB00F268F0 /* SyncThread.cpp */,
|
172
|
+
5C5335AB0FC2F3AB00F268F0 /* SyncThread.h */,
|
173
173
|
5C9817260FBC4F41002597A5 /* SyncEngine.cpp */,
|
174
174
|
5C9817270FBC4F41002597A5 /* SyncEngine.h */,
|
175
175
|
5C9817280FBC4F41002597A5 /* SyncSource.cpp */,
|
@@ -221,7 +221,7 @@
|
|
221
221
|
5C98172D0FBC4F41002597A5 /* SyncSource.h in Headers */,
|
222
222
|
5C9817340FBC4F70002597A5 /* DBAdapter.h in Headers */,
|
223
223
|
5C9817360FBC4F70002597A5 /* DBResult.h in Headers */,
|
224
|
-
5C5335AD0FC2F3AB00F268F0 /*
|
224
|
+
5C5335AD0FC2F3AB00F268F0 /* SyncThread.h in Headers */,
|
225
225
|
5CE2940C1009D8B7009A75F6 /* ClientRegister.h in Headers */,
|
226
226
|
5C74058B1064AA4900163569 /* DBAttrManager.h in Headers */,
|
227
227
|
5C7405F3106CF7F400163569 /* SyncNotify.h in Headers */,
|
@@ -286,7 +286,7 @@
|
|
286
286
|
5C98172C0FBC4F41002597A5 /* SyncSource.cpp in Sources */,
|
287
287
|
5C9817330FBC4F70002597A5 /* DBAdapter.cpp in Sources */,
|
288
288
|
5C9817350FBC4F70002597A5 /* DBResult.cpp in Sources */,
|
289
|
-
5C5335AC0FC2F3AB00F268F0 /*
|
289
|
+
5C5335AC0FC2F3AB00F268F0 /* SyncThread.cpp in Sources */,
|
290
290
|
5CE2940B1009D8B7009A75F6 /* ClientRegister.cpp in Sources */,
|
291
291
|
5C74058A1064AA4900163569 /* DBAttrManager.cpp in Sources */,
|
292
292
|
5C7405F2106CF7F400163569 /* SyncNotify.cpp in Sources */,
|
Binary file
|
@@ -413,6 +413,45 @@ unsigned long rho_connectclient_find_first(const char* szModel, unsigned long ha
|
|
413
413
|
return rhom_find( szModel, hash, 1 );
|
414
414
|
}
|
415
415
|
|
416
|
+
unsigned long rho_connectclient_findbysql(const char* szModel, const char* szSql, unsigned long arParams )
|
417
|
+
{
|
418
|
+
String src_name = szModel;
|
419
|
+
|
420
|
+
IDBResult res = db::CDBAdapter::getUserDB().executeSQL("SELECT source_id, partition, schema, sync_type from sources WHERE name=?", src_name);
|
421
|
+
if ( res.isEnd())
|
422
|
+
{
|
423
|
+
//TODO: report error - unknown source
|
424
|
+
return 0;
|
425
|
+
}
|
426
|
+
|
427
|
+
int nSrcID = res.getIntByIdx(0);
|
428
|
+
String db_partition = res.getStringByIdx(1);
|
429
|
+
bool isSchemaSrc = res.getStringByIdx(2).length() > 0;
|
430
|
+
db::CDBAdapter& db = db::CDBAdapter::getDB(db_partition.c_str());
|
431
|
+
|
432
|
+
unsigned long items = rho_connectclient_strhasharray_create();
|
433
|
+
|
434
|
+
IDBResult res1 = !arParams ? db.executeSQL(szSql) : db.executeSQLEx( szSql, *((Vector<String>*) arParams) );
|
435
|
+
if ( res1.isEnd() )
|
436
|
+
return items;
|
437
|
+
|
438
|
+
for ( ; !res1.isEnd(); res1.next() )
|
439
|
+
{
|
440
|
+
unsigned long item = rho_connectclient_hash_create();
|
441
|
+
|
442
|
+
for (int i = 0; i < res1.getColCount(); i++ )
|
443
|
+
{
|
444
|
+
if ( !res1.isNullByIdx(i))
|
445
|
+
rho_connectclient_hash_put(item, res1.getColName(i).c_str(), res1.getStringByIdx(i).c_str() );
|
446
|
+
}
|
447
|
+
|
448
|
+
rho_connectclient_strhasharray_add(items, item );
|
449
|
+
}
|
450
|
+
|
451
|
+
return items;
|
452
|
+
|
453
|
+
}
|
454
|
+
|
416
455
|
void rho_connectclient_start_bulkupdate(const char* szModel)
|
417
456
|
{
|
418
457
|
String src_name = szModel;
|
@@ -106,6 +106,8 @@ void rho_connectclient_create_object(const char* szModel, unsigned long hash);
|
|
106
106
|
unsigned long rho_connectclient_find(const char* szModel,const char* szObject );
|
107
107
|
unsigned long rho_connectclient_find_first(const char* szModel, unsigned long hashCond );
|
108
108
|
unsigned long rho_connectclient_find_all(const char* szModel, unsigned long hashCond );
|
109
|
+
unsigned long rho_connectclient_findbysql(const char* szModel, const char* szSql, unsigned long arParams );
|
110
|
+
|
109
111
|
void rho_connectclient_save( const char* szModel, unsigned long hash );
|
110
112
|
void rho_connectclient_itemdestroy( const char* szModel, unsigned long hash );
|
111
113
|
|