RSS

(root)/phpwe/sWG_basic : 2 : system/functions/swg_tmp_storager.php

« back to all changes in this revision

Viewing changes to system/functions/swg_tmp_storager.php

@4u
2009-06-17 10:25:56
Revision ID: @4u-20090617102556-9i7k61py79uu57lc
Initial commit
Trivial: We are working with Bazaar not CVS

Show diffs side-by-side

added added

removed removed

 
1
<?php
 
2
//j// BOF
 
3
 
 
4
/*n// NOTE
 
5
----------------------------------------------------------------------------
 
6
secured WebGine
 
7
net-based application engine
 
8
----------------------------------------------------------------------------
 
9
(C) direct Netware Group - All rights reserved
 
10
http://www.direct-netware.de/redirect.php?swg
 
11
 
 
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
----------------------------------------------------------------------------
 
22
NOTE_END //n*/
 
23
/**
 
24
* Storing temporary data in the database provide the possibility to build
 
25
* multi page applications as well as AJAX based interfaces.
 
26
*
 
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
 
30
*             code.
 
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
 
35
* @package    sWG_basic
 
36
* @subpackage extra_functions
 
37
* @uses       direct_product_iversion
 
38
* @since      v0.1.00
 
39
* @license    http://www.direct-netware.de/redirect.php?licenses;w3c
 
40
*             W3C (R) Software License
 
41
*/
 
42
 
 
43
/* -------------------------------------------------------------------------
 
44
All comments will be removed in the "production" packages (they will be in
 
45
all development packets)
 
46
------------------------------------------------------------------------- */
 
47
 
 
48
//j// Basic configuration
 
49
 
 
50
/* -------------------------------------------------------------------------
 
51
Direct calls will be honored with an "exit ()"
 
52
------------------------------------------------------------------------- */
 
53
 
 
54
if (!defined ("direct_product_iversion")) { exit (); }
 
55
 
 
56
//j// Functions and classes
 
57
 
 
58
//f// direct_tmp_storage_get ($f_type,$f_id,$f_sid = "",$f_identifier = "")
 
59
/**
 
60
* Reads an entry from the "tmp_storage" table.
 
61
*
 
62
* @param  string $f_type Returns the result as array ("a"), parsed evars or
 
63
*         plain string ("s")
 
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
 
79
* @since  v0.1.00
 
80
*/
 
81
function direct_tmp_storage_get ($f_type,$f_id,$f_sid = "",$f_identifier = "")
 
82
{
 
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__)#)"); }
 
85
 
 
86
        $f_return = false;
 
87
 
 
88
        if ((((mt_rand (0,30)) > 20))&&(!$direct_settings['swg_auto_maintenance']))
 
89
        {
 
90
                $direct_classes['db']->init_delete ($direct_settings['tmp_storage_table']);
 
91
 
 
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' />
 
97
</sqlconditions>");
 
98
 
 
99
                $direct_classes['db']->define_row_conditions ($f_delete_criteria);
 
100
 
 
101
                if (($direct_classes['db']->query_exec ("ar"))&&(!$direct_settings['swg_auto_maintenance'])) { $direct_classes['db']->optimize_random ($direct_settings['tmp_storage_table']); }
 
102
        }
 
103
 
 
104
        $f_id = $direct_classes['basic_functions']->tmd5 ($f_id);
 
105
 
 
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"));
 
108
 
 
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"))."
 
114
</sub1>
 
115
".($direct_classes['db']->define_row_conditions_encode ($direct_settings['tmp_storage_table'].".ddbtmp_storage_time_min",$direct_cachedata['core_time'],"number","<=")));
 
116
 
 
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"); }
 
119
 
 
120
        $f_select_criteria .= "</sqlconditions>";
 
121
 
 
122
        $direct_classes['db']->define_row_conditions ($f_select_criteria);
 
123
        $direct_classes['db']->define_limit (1);
 
124
 
 
125
        $f_result = $direct_classes['db']->query_exec ("ss");
 
126
 
 
127
        if ($f_result)
 
128
        {
 
129
                if ($f_type == "evars") { $f_return = direct_evars_get ($f_result); }
 
130
                else
 
131
                {
 
132
                        if ($f_type == "a") { $f_return = explode ("\n",(trim ($f_result))); }
 
133
                        else { $f_return = trim ($f_result); }
 
134
                }
 
135
        }
 
136
 
 
137
        return /*#ifdef(DEBUG):direct_debug (7,"sWG/#echo(__FILEPATH__)# -direct_tmp_storage_get ()- (#echo(__LINE__)#)",:#*/$f_return/*#ifdef(DEBUG):,true):#*/;
 
138
}
 
139
 
 
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)
 
141
/**
 
142
* Writes an entry to the "tmp_storage" table.
 
143
*
 
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
 
149
*         plain string ("s")
 
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
 
169
* @since  v0.1.00
 
170
*/
 
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)
 
172
{
 
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__)#)"); }
 
175
 
 
176
        $f_return = false;
 
177
 
 
178
        if (((is_array ($f_data))&&($f_type == "evars"))||($f_type != "evars"))
 
179
        {
 
180
                $f_id = $direct_classes['basic_functions']->tmd5 ($f_id);
 
181
 
 
182
                if ($f_type == "evars") { $f_data = direct_evars_write ($f_data); }
 
183
                else
 
184
                {
 
185
                        if ($f_type == "a") { $f_data = trim (implode ("\n",$f_data)); }
 
186
                        else { $f_data = trim ($f_data); }
 
187
                }
 
188
 
 
189
 
 
190
                if ($f_data)
 
191
                {
 
192
                        $direct_classes['db']->init_replace ($direct_settings['tmp_storage_table']);
 
193
 
 
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);
 
196
 
 
197
                        $f_replace_values = "<sqlvalues>".($direct_classes['db']->define_values_encode ($f_id,"string"));
 
198
 
 
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"); }
 
201
 
 
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' />"; }
 
204
 
 
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")));
 
208
 
 
209
                        if ($f_maintained) { $f_replace_values .= "<element2 value='1' type='string' />"; }
 
210
                        else { $f_replace_values .= "<element2 value='0' type='string' />"; }
 
211
 
 
212
                        $f_replace_values .= "</sqlvalues>";
 
213
                        $direct_classes['db']->define_values ($f_replace_values);
 
214
 
 
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>")); }
 
217
                }
 
218
                else
 
219
                {
 
220
                        $direct_classes['db']->init_delete ($direct_settings['tmp_storage_table']);
 
221
 
 
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);
 
224
 
 
225
                        $f_return = $direct_classes['db']->query_exec ("ar");
 
226
 
 
227
                        if ($f_return)
 
228
                        {
 
229
                                if (function_exists ("direct_dbsync_event")) { direct_dbsync_event ($direct_settings['tmp_storage_table'],"delete",$f_delete_criteria); }
 
230
                        }
 
231
                }
 
232
 
 
233
                if (!$direct_settings['swg_auto_maintenance']) { $direct_classes['db']->optimize_random ($direct_settings['tmp_storage_table']); }
 
234
        }
 
235
 
 
236
        return /*#ifdef(DEBUG):direct_debug (7,"sWG/#echo(__FILEPATH__)# -direct_tmp_storage_write ()- (#echo(__LINE__)#)",:#*/$f_return/*#ifdef(DEBUG):,true):#*/;
 
237
}
 
238
 
 
239
//j// Script specific functions
 
240
 
 
241
if (!isset ($direct_settings['swg_auto_maintenance'])) { $direct_settings['swg_auto_maintenance'] = false; }
 
242
 
 
243
//j// EOF
 
244
?>
 
 
'\\ No newline at end of file'

Loggerhead 1.17 is a web-based interface for Bazaar branches