5
----------------------------------------------------------------------------
7
net-based application engine
8
----------------------------------------------------------------------------
9
(C) direct Netware Group - All rights reserved
10
http://www.direct-netware.de/redirect.php?swg
12
This work is distributed under the W3C (R) Software License, but without any
13
warranty; without even the implied warranty of merchantability or fitness
14
for a particular purpose.
15
----------------------------------------------------------------------------
16
http://www.direct-netware.de/redirect.php?licenses;w3c
17
----------------------------------------------------------------------------
18
$Id: swg_tmp_storager.php,v 1.2 2008/12/20 13:18:00 s4u Exp $
19
#echo(sWGbasicVersion)#
20
sWG/#echo(__FILEPATH__)#
21
----------------------------------------------------------------------------
24
* Storing temporary data in the database provide the possibility to build
25
* multi page applications as well as AJAX based interfaces.
27
* @internal We are using phpDocumentor to automate the documentation process
28
* for creating the Developer's Manual. All sections including
29
* these special comments will be removed from the release source
31
* Use the following line to ensure 76 character sizes:
32
* ----------------------------------------------------------------------------
33
* @author direct Netware Group
34
* @copyright (C) direct Netware Group - All rights reserved
36
* @subpackage extra_functions
37
* @uses direct_product_iversion
39
* @license http://www.direct-netware.de/redirect.php?licenses;w3c
40
* W3C (R) Software License
43
/* -------------------------------------------------------------------------
44
All comments will be removed in the "production" packages (they will be in
45
all development packets)
46
------------------------------------------------------------------------- */
48
//j// Basic configuration
50
/* -------------------------------------------------------------------------
51
Direct calls will be honored with an "exit ()"
52
------------------------------------------------------------------------- */
54
if (!defined ("direct_product_iversion")) { exit (); }
56
//j// Functions and classes
58
//f// direct_tmp_storage_get ($f_type,$f_id,$f_sid = "",$f_identifier = "")
60
* Reads an entry from the "tmp_storage" table.
62
* @param string $f_type Returns the result as array ("a"), parsed evars or
64
* @param string $f_id Entry ID
65
* @param string $f_sid Required service ID for selection
66
* @param string $f_identifier Required identifier for selection
67
* @uses direct_db::define_attributes()
68
* @uses direct_db::define_limit()
69
* @uses direct_db::define_row_conditions()
70
* @uses direct_db::define_row_conditions_encode()
71
* @uses direct_db::init_delete()
72
* @uses direct_db::init_select()
73
* @uses direct_db::optimize_random()
74
* @uses direct_db::query_exec()
75
* @uses direct_debug()
76
* @uses direct_evars_get()
77
* @uses USE_debug_reporting
78
* @return mixed Array, parsed evars array or string; false on error
81
function direct_tmp_storage_get ($f_type,$f_id,$f_sid = "",$f_identifier = "")
83
global $direct_cachedata,$direct_classes,$direct_settings;
84
if (USE_debug_reporting) { direct_debug (3,"sWG/#echo(__FILEPATH__)# -direct_tmp_storage_get ($f_type,$f_id,$f_sid,$f_identifier)- (#echo(__LINE__)#)"); }
88
if ((((mt_rand (0,30)) > 20))&&(!$direct_settings['swg_auto_maintenance']))
90
$direct_classes['db']->init_delete ($direct_settings['tmp_storage_table']);
92
$f_delete_criteria = ("<sqlconditions>
93
<element1 attribute='{$direct_settings['tmp_storage_table']}.ddbtmp_storage_time_max' value='0' type='number' operator='>' />
94
".($direct_classes['db']->define_row_conditions_encode ($direct_settings['tmp_storage_table'].".ddbtmp_storage_time_max",$direct_cachedata['core_time'],"number","<"))."
95
<element2 attribute='{$direct_settings['tmp_storage_table']}.ddbtmp_storage_sid' value='9d3bb895f22bf0afa958d68c2a58ded7' type='string' operator='!=' />
96
<element3 attribute='{$direct_settings['tmp_storage_table']}.ddbtmp_storage_maintained' value='0' type='number' />
99
$direct_classes['db']->define_row_conditions ($f_delete_criteria);
101
if (($direct_classes['db']->query_exec ("ar"))&&(!$direct_settings['swg_auto_maintenance'])) { $direct_classes['db']->optimize_random ($direct_settings['tmp_storage_table']); }
104
$f_id = $direct_classes['basic_functions']->tmd5 ($f_id);
106
$direct_classes['db']->init_select ($direct_settings['tmp_storage_table']);
107
$direct_classes['db']->define_attributes (array ($direct_settings['tmp_storage_table'].".ddbtmp_storage_data"));
109
$f_select_criteria = ("<sqlconditions>
110
".($direct_classes['db']->define_row_conditions_encode ($direct_settings['tmp_storage_table'].".ddbtmp_storage_id",$f_id,"string"))."
111
<sub1 type='sublevel'>
112
<element1 attribute='{$direct_settings['tmp_storage_table']}.ddbtmp_storage_time_max' value='0' type='number' condition='or' />
113
".($direct_classes['db']->define_row_conditions_encode ($direct_settings['tmp_storage_table'].".ddbtmp_storage_time_max",$direct_cachedata['core_time'],"number",">","or"))."
115
".($direct_classes['db']->define_row_conditions_encode ($direct_settings['tmp_storage_table'].".ddbtmp_storage_time_min",$direct_cachedata['core_time'],"number","<=")));
117
if ($f_sid) { $f_select_criteria .= $direct_classes['db']->define_row_conditions_encode ($direct_settings['tmp_storage_table'].".ddbtmp_storage_sid",$f_sid,"string"); }
118
if ($f_identifier) { $f_select_criteria .= $direct_classes['db']->define_row_conditions_encode ($direct_settings['tmp_storage_table'].".ddbtmp_storage_identifier",$f_identifier,"string"); }
120
$f_select_criteria .= "</sqlconditions>";
122
$direct_classes['db']->define_row_conditions ($f_select_criteria);
123
$direct_classes['db']->define_limit (1);
125
$f_result = $direct_classes['db']->query_exec ("ss");
129
if ($f_type == "evars") { $f_return = direct_evars_get ($f_result); }
132
if ($f_type == "a") { $f_return = explode ("\n",(trim ($f_result))); }
133
else { $f_return = trim ($f_result); }
137
return /*#ifdef(DEBUG):direct_debug (7,"sWG/#echo(__FILEPATH__)# -direct_tmp_storage_get ()- (#echo(__LINE__)#)",:#*/$f_return/*#ifdef(DEBUG):,true):#*/;
140
//f// direct_tmp_storage_write ($f_data,$f_id,$f_sid,$f_identifier = "",$f_type = "evars",$f_mintime = 0,$f_maxtime = 0,$f_maintained = false)
142
* Writes an entry to the "tmp_storage" table.
144
* @param mixed $f_data Data to write to the database
145
* @param string $f_id Entry ID
146
* @param string $f_sid Service ID
147
* @param string $f_identifier Identifier
148
* @param string $f_type Returns the result as array ("a"), parsed evars or
150
* @param integer $f_mintime UNIX time stamp when the entry gets valid
151
* @param integer $f_maxtime UNIX time stamp when the entry gets deleted (or 0
152
* if it will be deleted manually)
153
* @param boolean $f_maintained True to manually maintain the entry state
154
* @uses direct_basic_functions::tmd5()
155
* @uses direct_db::define_values()
156
* @uses direct_db::define_values_encode()
157
* @uses direct_db::define_values_keys()
158
* @uses direct_db::define_row_conditions()
159
* @uses direct_db::define_row_conditions_encode()
160
* @uses direct_db::init_delete()
161
* @uses direct_db::init_replace()
162
* @uses direct_db::optimize_random()
163
* @uses direct_db::query_exec()
164
* @uses direct_dbsync_event()
165
* @uses direct_debug()
166
* @uses direct_evars_write()
167
* @uses USE_debug_reporting
168
* @return mixed Array, parsed evars array or string; false on error
171
function direct_tmp_storage_write ($f_data,$f_id,$f_sid,$f_identifier = "",$f_type = "evars",$f_mintime = 0,$f_maxtime = 0,$f_maintained = false)
173
global $direct_cachedata,$direct_classes,$direct_settings;
174
if (USE_debug_reporting) { direct_debug (3,"sWG/#echo(__FILEPATH__)# -direct_tmp_storage_write (+f_data,$f_id,$f_sid,$f_identifier,$f_type,$f_mintime,$f_maxtime,$f_maintained)- (#echo(__LINE__)#)"); }
178
if (((is_array ($f_data))&&($f_type == "evars"))||($f_type != "evars"))
180
$f_id = $direct_classes['basic_functions']->tmd5 ($f_id);
182
if ($f_type == "evars") { $f_data = direct_evars_write ($f_data); }
185
if ($f_type == "a") { $f_data = trim (implode ("\n",$f_data)); }
186
else { $f_data = trim ($f_data); }
192
$direct_classes['db']->init_replace ($direct_settings['tmp_storage_table']);
194
$f_replace_attributes = array ($direct_settings['tmp_storage_table'].".ddbtmp_storage_id",$direct_settings['tmp_storage_table'].".ddbtmp_storage_time_min",$direct_settings['tmp_storage_table'].".ddbtmp_storage_time_max",$direct_settings['tmp_storage_table'].".ddbtmp_storage_sid",$direct_settings['tmp_storage_table'].".ddbtmp_storage_identifier",$direct_settings['tmp_storage_table'].".ddbtmp_storage_data",$direct_settings['tmp_storage_table'].".ddbtmp_storage_maintained");
195
$direct_classes['db']->define_values_keys ($f_replace_attributes);
197
$f_replace_values = "<sqlvalues>".($direct_classes['db']->define_values_encode ($f_id,"string"));
199
if ($f_mintime) { $f_replace_values .= $direct_classes['db']->define_values_encode ($f_mintime,"number"); }
200
else { $f_replace_values .= $direct_classes['db']->define_values_encode ($direct_cachedata['core_time'],"number"); }
202
if ($f_maxtime) { $f_replace_values .= $direct_classes['db']->define_values_encode ($f_maxtime,"number"); }
203
else { $f_replace_values .= "<element1 value='0' type='number' />"; }
205
$f_replace_values .= (($direct_classes['db']->define_values_encode ($f_sid,"string"))."
206
".($direct_classes['db']->define_values_encode ($f_identifier,"string"))."
207
".($direct_classes['db']->define_values_encode ($f_data,"string")));
209
if ($f_maintained) { $f_replace_values .= "<element2 value='1' type='string' />"; }
210
else { $f_replace_values .= "<element2 value='0' type='string' />"; }
212
$f_replace_values .= "</sqlvalues>";
213
$direct_classes['db']->define_values ($f_replace_values);
215
$f_return = $direct_classes['db']->query_exec ("co");
216
if (($f_return)&&(function_exists ("direct_dbsync_event"))) { direct_dbsync_event ($direct_settings['tmp_storage_table'],"replace",("<sqlconditions>".($direct_classes['db']->define_row_conditions_encode ($direct_settings['tmp_storage_table'].".ddbtmp_storage_id",$f_id,"string"))."</sqlconditions>")); }
220
$direct_classes['db']->init_delete ($direct_settings['tmp_storage_table']);
222
$f_delete_criteria = "<sqlconditions>".($direct_classes['db']->define_row_conditions_encode ($direct_settings['tmp_storage_table'].".ddbtmp_storage_id",$f_id,"string"))."</sqlconditions>";
223
$direct_classes['db']->define_row_conditions ($f_delete_criteria);
225
$f_return = $direct_classes['db']->query_exec ("ar");
229
if (function_exists ("direct_dbsync_event")) { direct_dbsync_event ($direct_settings['tmp_storage_table'],"delete",$f_delete_criteria); }
233
if (!$direct_settings['swg_auto_maintenance']) { $direct_classes['db']->optimize_random ($direct_settings['tmp_storage_table']); }
236
return /*#ifdef(DEBUG):direct_debug (7,"sWG/#echo(__FILEPATH__)# -direct_tmp_storage_write ()- (#echo(__LINE__)#)",:#*/$f_return/*#ifdef(DEBUG):,true):#*/;
239
//j// Script specific functions
241
if (!isset ($direct_settings['swg_auto_maintenance'])) { $direct_settings['swg_auto_maintenance'] = false; }
'\\ No newline at end of file'