root/trunk/tostemplate.c

Revision 1583, 13.3 KB (checked in by Gary, 19 months ago)

unxsVZ fixed major install bug missing ) in create table SQL.

  • Property svn:keywords set to id
Line 
1/*
2FILE
3        tOSTemplate source code of unxsVZ.cgi
4        Built by mysqlRAD2.cgi (C) Gary Wallis 2001-2007
5        $Id$
6PURPOSE
7        Schema dependent RAD generated file.
8        Program app functionality in tostemplatefunc.h while
9        RAD is still to be used.
10AUTHOR/LEGAL
11        (C) 2001-2010 Gary Wallis for Unixservice, LLC.
12        GPLv2 license applies. See LICENSE file included.
13*/
14
15
16#include "mysqlrad.h"
17
18//Table Variables
19//Table Variables
20//uOSTemplate: Primary Key
21static unsigned uOSTemplate=0;
22//cLabel: Short label
23static char cLabel[101]={""};
24//uOwner: Record owner
25static unsigned uOwner=0;
26//uCreatedBy: uClient for last insert
27static unsigned uCreatedBy=0;
28//uCreatedDate: Unix seconds date last insert
29static time_t uCreatedDate=0;
30//uModBy: uClient for last update
31static unsigned uModBy=0;
32//uModDate: Unix seconds date last update
33static time_t uModDate=0;
34
35
36#define VAR_LIST_tOSTemplate "tOSTemplate.uOSTemplate,tOSTemplate.cLabel,tOSTemplate.uOwner,tOSTemplate.uCreatedBy,tOSTemplate.uCreatedDate,tOSTemplate.uModBy,tOSTemplate.uModDate"
37
38 //Local only
39void Insert_tOSTemplate(void);
40void Update_tOSTemplate(char *cRowid);
41void ProcesstOSTemplateListVars(pentry entries[], int x);
42
43 //In tOSTemplatefunc.h file included below
44void ExtProcesstOSTemplateVars(pentry entries[], int x);
45void ExttOSTemplateCommands(pentry entries[], int x);
46void ExttOSTemplateButtons(void);
47void ExttOSTemplateNavBar(void);
48void ExttOSTemplateGetHook(entry gentries[], int x);
49void ExttOSTemplateSelect(void);
50void ExttOSTemplateSelectRow(void);
51void ExttOSTemplateListSelect(void);
52void ExttOSTemplateListFilter(void);
53void ExttOSTemplateAuxTable(void);
54
55#include "tostemplatefunc.h"
56
57 //Table Variables Assignment Function
58void ProcesstOSTemplateVars(pentry entries[], int x)
59{
60        register int i;
61
62
63        for(i=0;i<x;i++)
64        {
65                if(!strcmp(entries[i].name,"uOSTemplate"))
66                        sscanf(entries[i].val,"%u",&uOSTemplate);
67                else if(!strcmp(entries[i].name,"cLabel"))
68                        sprintf(cLabel,"%.100s",entries[i].val);
69                else if(!strcmp(entries[i].name,"uOwner"))
70                        sscanf(entries[i].val,"%u",&uOwner);
71                else if(!strcmp(entries[i].name,"uCreatedBy"))
72                        sscanf(entries[i].val,"%u",&uCreatedBy);
73                else if(!strcmp(entries[i].name,"uCreatedDate"))
74                        sscanf(entries[i].val,"%lu",&uCreatedDate);
75                else if(!strcmp(entries[i].name,"uModBy"))
76                        sscanf(entries[i].val,"%u",&uModBy);
77                else if(!strcmp(entries[i].name,"uModDate"))
78                        sscanf(entries[i].val,"%lu",&uModDate);
79        }
80
81        //After so we can overwrite form data if needed.
82        ExtProcesstOSTemplateVars(entries,x);
83
84}//ProcesstOSTemplateVars()
85
86
87void ProcesstOSTemplateListVars(pentry entries[], int x)
88{
89        register int i;
90
91        for(i=0;i<x;i++)
92        {
93                if(!strncmp(entries[i].name,"ED",2))
94                {
95                        sscanf(entries[i].name+2,"%u",&uOSTemplate);
96                        guMode=2002;
97                        tOSTemplate("");
98                }
99        }
100}//void ProcesstOSTemplateListVars(pentry entries[], int x)
101
102
103int tOSTemplateCommands(pentry entries[], int x)
104{
105        ProcessControlVars(entries,x);
106
107        ExttOSTemplateCommands(entries,x);
108
109        if(!strcmp(gcFunction,"tOSTemplateTools"))
110        {
111                if(!strcmp(gcFind,LANG_NB_LIST))
112                {
113                        tOSTemplateList();
114                }
115
116                //Default
117                ProcesstOSTemplateVars(entries,x);
118                tOSTemplate("");
119        }
120        else if(!strcmp(gcFunction,"tOSTemplateList"))
121        {
122                ProcessControlVars(entries,x);
123                ProcesstOSTemplateListVars(entries,x);
124                tOSTemplateList();
125        }
126
127        return(0);
128
129}//tOSTemplateCommands()
130
131
132void tOSTemplate(const char *cResult)
133{
134        MYSQL_RES *res;
135        MYSQL_RES *res2;
136        MYSQL_ROW field;
137
138        //Internal skip reloading
139        if(!cResult[0])
140        {
141                if(guMode)
142                        ExttOSTemplateSelectRow();
143                else
144                        ExttOSTemplateSelect();
145
146                mysql_query(&gMysql,gcQuery);
147                if(mysql_errno(&gMysql))
148                {
149                        if(strstr(mysql_error(&gMysql)," doesn't exist"))
150                        {
151                                CreatetOSTemplate();
152                                unxsVZ("New tOSTemplate table created");
153                        }
154                        else
155                        {
156                                htmlPlainTextError(mysql_error(&gMysql));
157                        }
158                }
159
160                res=mysql_store_result(&gMysql);
161                if((guI=mysql_num_rows(res)))
162                {
163                        if(guMode==6)
164                        {
165                                sprintf(gcQuery,"SELECT _rowid FROM tOSTemplate WHERE uOSTemplate=%u"
166                                                ,uOSTemplate);
167                                MYSQL_RUN_STORE(res2);
168                                field=mysql_fetch_row(res2);
169                                sscanf(field[0],"%lu",&gluRowid);
170                                gluRowid++;
171                        }
172                        PageMachine("",0,"");
173                        if(!guMode) mysql_data_seek(res,gluRowid-1);
174                        field=mysql_fetch_row(res);
175                        sscanf(field[0],"%u",&uOSTemplate);
176                        sprintf(cLabel,"%.100s",field[1]);
177                        sscanf(field[2],"%u",&uOwner);
178                        sscanf(field[3],"%u",&uCreatedBy);
179                        sscanf(field[4],"%lu",&uCreatedDate);
180                        sscanf(field[5],"%u",&uModBy);
181                        sscanf(field[6],"%lu",&uModDate);
182                }
183
184        }//Internal Skip
185
186        Header_ism3(":: Container OS Template",0);
187        printf("<table width=100%% cellspacing=0 cellpadding=0>\n");
188        printf("<tr><td colspan=2 align=right valign=center>");
189
190
191        printf("<input type=hidden name=gcFunction value=tOSTemplateTools>");
192        printf("<input type=hidden name=gluRowid value=%lu>",gluRowid);
193        if(guI)
194        {
195                if(guMode==6)
196                        //printf(" Found");
197                        printf(LANG_NBR_FOUND);
198                else if(guMode==5)
199                        //printf(" Modified");
200                        printf(LANG_NBR_MODIFIED);
201                else if(guMode==4)
202                        //printf(" New");
203                        printf(LANG_NBR_NEW);
204                printf(LANG_NBRF_SHOWING,gluRowid,guI);
205        }
206        else
207        {
208                if(!cResult[0])
209                //printf(" No records found");
210                printf(LANG_NBR_NORECS);
211        }
212        if(cResult[0]) printf("%s",cResult);
213        printf("</td></tr>");
214        printf("<tr><td valign=top width=25%%>");
215
216        ExttOSTemplateButtons();
217
218        printf("</td><td valign=top>");
219        //
220        OpenFieldSet("tOSTemplate Record Data",100);
221
222        if(guMode==2000 || guMode==2002)
223                tOSTemplateInput(1);
224        else
225                tOSTemplateInput(0);
226
227        //
228        CloseFieldSet();
229
230        //Bottom table
231        printf("<tr><td colspan=2>");
232        ExttOSTemplateAuxTable();
233
234        Footer_ism3();
235
236}//end of tOSTemplate();
237
238
239void tOSTemplateInput(unsigned uMode)
240{
241
242//uOSTemplate
243        OpenRow(LANG_FL_tOSTemplate_uOSTemplate,"black");
244        printf("<input title='%s' type=text name=uOSTemplate value=%u size=16 maxlength=10 "
245,LANG_FT_tOSTemplate_uOSTemplate,uOSTemplate);
246        if(guPermLevel>=20 && uMode)
247        {
248                printf("></td></tr>\n");
249        }
250        else
251        {
252                printf("disabled></td></tr>\n");
253                printf("<input type=hidden name=uOSTemplate value=%u >\n",uOSTemplate);
254        }
255//cLabel
256        OpenRow(LANG_FL_tOSTemplate_cLabel,"black");
257        printf("<input title='%s' type=text name=cLabel value=\"%s\" size=100 maxlength=100 "
258,LANG_FT_tOSTemplate_cLabel,EncodeDoubleQuotes(cLabel));
259        if(guPermLevel>=0 && uMode)
260        {
261                printf("></td></tr>\n");
262        }
263        else
264        {
265                printf("disabled></td></tr>\n");
266                printf("<input type=hidden name=cLabel value=\"%s\">\n",EncodeDoubleQuotes(cLabel));
267        }
268//uOwner
269        OpenRow(LANG_FL_tOSTemplate_uOwner,"black");
270        if(guPermLevel>=20 && uMode)
271        {
272        printf("%s<input type=hidden name=uOwner value=%u >\n",ForeignKey("tClient","cLabel",uOwner),uOwner);
273        }
274        else
275        {
276        printf("%s<input type=hidden name=uOwner value=%u >\n",ForeignKey("tClient","cLabel",uOwner),uOwner);
277        }
278//uCreatedBy
279        OpenRow(LANG_FL_tOSTemplate_uCreatedBy,"black");
280        if(guPermLevel>=20 && uMode)
281        {
282        printf("%s<input type=hidden name=uCreatedBy value=%u >\n",ForeignKey("tClient","cLabel",uCreatedBy),uCreatedBy);
283        }
284        else
285        {
286        printf("%s<input type=hidden name=uCreatedBy value=%u >\n",ForeignKey("tClient","cLabel",uCreatedBy),uCreatedBy);
287        }
288//uCreatedDate
289        OpenRow(LANG_FL_tOSTemplate_uCreatedDate,"black");
290        if(uCreatedDate)
291                printf("%s\n\n",ctime(&uCreatedDate));
292        else
293                printf("---\n\n");
294        printf("<input type=hidden name=uCreatedDate value=%lu >\n",uCreatedDate);
295//uModBy
296        OpenRow(LANG_FL_tOSTemplate_uModBy,"black");
297        if(guPermLevel>=20 && uMode)
298        {
299        printf("%s<input type=hidden name=uModBy value=%u >\n",ForeignKey("tClient","cLabel",uModBy),uModBy);
300        }
301        else
302        {
303        printf("%s<input type=hidden name=uModBy value=%u >\n",ForeignKey("tClient","cLabel",uModBy),uModBy);
304        }
305//uModDate
306        OpenRow(LANG_FL_tOSTemplate_uModDate,"black");
307        if(uModDate)
308                printf("%s\n\n",ctime(&uModDate));
309        else
310                printf("---\n\n");
311        printf("<input type=hidden name=uModDate value=%lu >\n",uModDate);
312        printf("</tr>\n");
313
314
315
316}//void tOSTemplateInput(unsigned uMode)
317
318
319void NewtOSTemplate(unsigned uMode)
320{
321        register int i=0;
322        MYSQL_RES *res;
323
324        sprintf(gcQuery,"SELECT uOSTemplate FROM tOSTemplate WHERE uOSTemplate=%u",uOSTemplate);
325        MYSQL_RUN_STORE(res);
326        i=mysql_num_rows(res);
327
328        if(i)
329                //tOSTemplate("<blink>Record already exists");
330                tOSTemplate(LANG_NBR_RECEXISTS);
331
332        //insert query
333        Insert_tOSTemplate();
334        if(mysql_errno(&gMysql)) htmlPlainTextError(mysql_error(&gMysql));
335        //sprintf(gcQuery,"New record %u added");
336        uOSTemplate=mysql_insert_id(&gMysql);
337        uCreatedDate=luGetCreatedDate("tOSTemplate",uOSTemplate);
338        unxsVZLog(uOSTemplate,"tOSTemplate","New");
339        if(!uMode)
340        {
341                sprintf(gcQuery,LANG_NBR_NEWRECADDED,uOSTemplate);
342                tOSTemplate(gcQuery);
343        }
344
345}//NewtOSTemplate(unsigned uMode)
346
347
348void DeletetOSTemplate(void)
349{
350        sprintf(gcQuery,"DELETE FROM tOSTemplate WHERE uOSTemplate=%u AND ( uOwner=%u OR %u>9 )"
351                                        ,uOSTemplate,guLoginClient,guPermLevel);
352        MYSQL_RUN;
353        //tOSTemplate("Record Deleted");
354        if(mysql_affected_rows(&gMysql)>0)
355        {
356                unxsVZLog(uOSTemplate,"tOSTemplate","Del");
357                tOSTemplate(LANG_NBR_RECDELETED);
358        }
359        else
360        {
361                unxsVZLog(uOSTemplate,"tOSTemplate","DelError");
362                tOSTemplate(LANG_NBR_RECNOTDELETED);
363        }
364
365}//void DeletetOSTemplate(void)
366
367
368void Insert_tOSTemplate(void)
369{
370        sprintf(gcQuery,"INSERT INTO tOSTemplate SET uOSTemplate=%u,cLabel='%s',uOwner=%u,uCreatedBy=%u,"
371                                "uCreatedDate=UNIX_TIMESTAMP(NOW())",
372                        uOSTemplate
373                        ,TextAreaSave(cLabel)
374                        ,uOwner
375                        ,uCreatedBy);
376        MYSQL_RUN;
377
378}//void Insert_tOSTemplate(void)
379
380
381void Update_tOSTemplate(char *cRowid)
382{
383        sprintf(gcQuery,"UPDATE tOSTemplate SET uOSTemplate=%u,cLabel='%s',uModBy=%u,"
384                        "uModDate=UNIX_TIMESTAMP(NOW()) WHERE _rowid=%s",
385                        uOSTemplate
386                        ,TextAreaSave(cLabel)
387                        ,uModBy
388                        ,cRowid);
389        MYSQL_RUN;
390
391}//void Update_tOSTemplate(void)
392
393
394void ModtOSTemplate(void)
395{
396        register int i=0;
397        MYSQL_RES *res;
398        MYSQL_ROW field;
399        unsigned uPreModDate=0;
400
401        //Mod select gcQuery
402        if(guPermLevel<10)
403        sprintf(gcQuery,"SELECT tOSTemplate.uOSTemplate,\
404                                tOSTemplate.uModDate\
405                                FROM tOSTemplate,tClient\
406                                WHERE tOSTemplate.uOSTemplate=%u\
407                                AND tOSTemplate.uOwner=tClient.uClient\
408                                AND (tClient.uOwner=%u OR tClient.uClient=%u)"
409                        ,uOSTemplate,guLoginClient,guLoginClient);
410        else
411        sprintf(gcQuery,"SELECT uOSTemplate,uModDate FROM tOSTemplate\
412                                WHERE uOSTemplate=%u"
413                                                ,uOSTemplate);
414        MYSQL_RUN_STORE(res);
415        i=mysql_num_rows(res);
416
417        //if(i<1) tOSTemplate("<blink>Record does not exist");
418        if(i<1) tOSTemplate(LANG_NBR_RECNOTEXIST);
419        //if(i>1) tOSTemplate("<blink>Multiple rows!");
420        if(i>1) tOSTemplate(LANG_NBR_MULTRECS);
421
422        field=mysql_fetch_row(res);
423        sscanf(field[1],"%u",&uPreModDate);
424        if(uPreModDate!=uModDate) tOSTemplate(LANG_NBR_EXTMOD);
425
426        Update_tOSTemplate(field[0]);
427        if(mysql_errno(&gMysql)) htmlPlainTextError(mysql_error(&gMysql));
428        //sprintf(query,"record %s modified",field[0]);
429        sprintf(gcQuery,LANG_NBRF_REC_MODIFIED,field[0]);
430        uModDate=luGetModDate("tOSTemplate",uOSTemplate);
431        unxsVZLog(uOSTemplate,"tOSTemplate","Mod");
432        tOSTemplate(gcQuery);
433
434}//ModtOSTemplate(void)
435
436
437void tOSTemplateList(void)
438{
439        MYSQL_RES *res;
440        MYSQL_ROW field;
441
442        ExttOSTemplateListSelect();
443
444        MYSQL_RUN_STORE(res);
445        guI=mysql_num_rows(res);
446
447        PageMachine("tOSTemplateList",1,"");//1 is auto header list guMode. Opens table!
448
449        //Filter select drop down
450        ExttOSTemplateListFilter();
451
452        printf("<input type=text size=16 name=gcCommand maxlength=98 value=\"%s\" >",gcCommand);
453
454        printf("</table>\n");
455
456        printf("<table bgcolor=#9BC1B3 border=0 width=100%%>\n");
457        printf("<tr bgcolor=black>"
458                "<td><font face=arial,helvetica color=white>uOSTemplate"
459                "<td><font face=arial,helvetica color=white>cLabel"
460                "<td><font face=arial,helvetica color=white>uOwner"
461                "<td><font face=arial,helvetica color=white>uCreatedBy"
462                "<td><font face=arial,helvetica color=white>uCreatedDate"
463                "<td><font face=arial,helvetica color=white>uModBy"
464                "<td><font face=arial,helvetica color=white>uModDate</tr>");
465
466        mysql_data_seek(res,guStart-1);
467
468        for(guN=0;guN<(guEnd-guStart+1);guN++)
469        {
470                field=mysql_fetch_row(res);
471                if(!field)
472                {
473                        printf("<tr><td><font face=arial,helvetica>End of data</table>");
474                        Footer_ism3();
475                }
476                        if(guN % 2)
477                                printf("<tr bgcolor=#BBE1D3>");
478                        else
479                                printf("<tr>");
480                time_t luTime4=strtoul(field[4],NULL,10);
481                char cBuf4[32];
482                if(luTime4)
483                        ctime_r(&luTime4,cBuf4);
484                else
485                        sprintf(cBuf4,"---");
486                time_t luTime6=strtoul(field[6],NULL,10);
487                char cBuf6[32];
488                if(luTime6)
489                        ctime_r(&luTime6,cBuf6);
490                else
491                        sprintf(cBuf6,"---");
492                printf("<td><input type=submit name=ED%s value=Edit> %s<td>%s<td>%s<td>%s<td>%s<td>%s<td>%s</tr>"
493                        ,field[0]
494                        ,field[0]
495                        ,field[1]
496                        ,ForeignKey("tClient","cLabel",strtoul(field[2],NULL,10))
497                        ,ForeignKey("tClient","cLabel",strtoul(field[3],NULL,10))
498                        ,cBuf4
499                        ,ForeignKey("tClient","cLabel",strtoul(field[5],NULL,10))
500                        ,cBuf6);
501
502        }
503
504        printf("</table></form>\n");
505        Footer_ism3();
506
507}//tOSTemplateList()
508
509
510void CreatetOSTemplate(void)
511{
512        sprintf(gcQuery,"CREATE TABLE IF NOT EXISTS tOSTemplate ( "
513                        "uOSTemplate INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,"
514                        "cLabel VARCHAR(100) NOT NULL DEFAULT '',"
515                        "uOwner INT UNSIGNED NOT NULL DEFAULT 0, INDEX (uOwner),"
516                        "uCreatedBy INT UNSIGNED NOT NULL DEFAULT 0,"
517                        "uCreatedDate INT UNSIGNED NOT NULL DEFAULT 0,"
518                        "uModBy INT UNSIGNED NOT NULL DEFAULT 0,"
519                        "uModDate INT UNSIGNED NOT NULL DEFAULT 0,"
520                        "uDatacenter INT UNSIGNED NOT NULL DEFAULT 0 )");
521        mysql_query(&gMysql,gcQuery);
522        if(mysql_errno(&gMysql))
523                htmlPlainTextError(mysql_error(&gMysql));
524}//CreatetOSTemplate()
525
Note: See TracBrowser for help on using the browser.