root/trunk/tgroupfunc.h

Revision 1744, 11.1 KB (checked in by Gary, 11 months ago)

unxsVZ minor update.

  • Property svn:keywords set to id
Line 
1/*
2FILE
3        $Id$
4        (Built initially by unixservice.com mysqlRAD2)
5PURPOSE
6        Non schema-dependent table and application table related functions.
7AUTHOR
8        (C) 2001-2007 Gary Wallis.
9 
10*/
11
12//ModuleFunctionProtos()
13
14
15void tGroupNavList(void);
16void tGroupMemberNavList(void);
17void voidCopyGroupType(unsigned uGroupType,unsigned uGroup);   
18void voidDelGroupProperties(unsigned uGroup);
19
20void ExtProcesstGroupVars(pentry entries[], int x)
21{
22        /*
23        register int i;
24        for(i=0;i<x;i++)
25        {
26        }
27        */
28}//void ExtProcesstGroupVars(pentry entries[], int x)
29
30
31void ExttGroupCommands(pentry entries[], int x)
32{
33
34        if(!strcmp(gcFunction,"tGroupTools"))
35        {
36                //ModuleFunctionProcess()
37
38                if(!strcmp(gcCommand,LANG_NB_NEW))
39                {
40                        if(guPermLevel>=10)
41                        {
42                                ProcesstGroupVars(entries,x);
43                                guMode=2000;
44                                tGroup(LANG_NB_CONFIRMNEW);
45                        }
46                }
47                else if(!strcmp(gcCommand,LANG_NB_CONFIRMNEW))
48                {
49                        if(guPermLevel>=10)
50                        {
51                                ProcesstGroupVars(entries,x);
52
53                                guMode=2000;
54                                //Check entries here
55                                if(strlen(cLabel)<4)
56                                        tGroup("<blink>Error</blink>: cLabel too short");
57                                if(!uGroupType)
58                                        tGroup("<blink>Error</blink>: uGroupType must be selected");
59                                guMode=0;
60
61                                uGroup=0;
62                                uCreatedBy=guLoginClient;
63                                GetClientOwner(guLoginClient,&guReseller);
64                                uOwner=guReseller;
65                                uModBy=0;//Never modified
66                                uModDate=0;//Never modified
67                       
68                                NewtGroup(1);
69                                mysql_insert_id(&gMysql);
70                                voidCopyGroupType(uGroupType,uGroup);   
71                                tGroup("New group created properties copied from group type");
72                        }
73                }
74                else if(!strcmp(gcCommand,LANG_NB_DELETE))
75                {
76                        ProcesstGroupVars(entries,x);
77                        if(uOwner) GetClientOwner(uOwner,&guReseller);
78                        if( (guPermLevel>=12 && uOwner==guLoginClient)
79                                || (guPermLevel>9 && uOwner!=1 && uOwner!=0)
80                                || (guPermLevel>7 && guReseller==guLoginClient) )
81                        {
82                                guMode=2001;
83                                tGroup(LANG_NB_CONFIRMDEL);
84                        }
85                }
86                else if(!strcmp(gcCommand,LANG_NB_CONFIRMDEL))
87                {
88                        ProcesstGroupVars(entries,x);
89                        if(uOwner) GetClientOwner(uOwner,&guReseller);
90                        if( (guPermLevel>=12 && uOwner==guLoginClient)
91                                || (guPermLevel>9 && uOwner!=1 && uOwner!=0)
92                                || (guPermLevel>7 && guReseller==guLoginClient) )
93                        {
94                                guMode=5;
95                                voidDelGroupProperties(uGroup);
96                                DeletetGroup();
97                        }
98                }
99                else if(!strcmp(gcCommand,LANG_NB_MODIFY))
100                {
101                        ProcesstGroupVars(entries,x);
102                        if(uOwner) GetClientOwner(uOwner,&guReseller);
103                        if( (guPermLevel>=10 && uOwner==guLoginClient)
104                                || (guPermLevel>9 && uOwner!=1 && uOwner!=0)
105                                || (guPermLevel>7 && guReseller==guLoginClient) )
106                        {
107                                guMode=2002;
108                                tGroup(LANG_NB_CONFIRMMOD);
109                        }
110                }
111                else if(!strcmp(gcCommand,LANG_NB_CONFIRMMOD))
112                {
113                        ProcesstGroupVars(entries,x);
114                        if(uOwner) GetClientOwner(uOwner,&guReseller);
115                        if( (guPermLevel>=10 && uOwner==guLoginClient)
116                                || (guPermLevel>9 && uOwner!=1 && uOwner!=0)
117                                || (guPermLevel>7 && guReseller==guLoginClient) )
118                        {
119                                guMode=2002;
120                                //Check entries here
121                                guMode=0;
122
123                                uModBy=guLoginClient;
124                                ModtGroup();
125                        }
126                }
127        }
128
129}//void ExttGroupCommands(pentry entries[], int x)
130
131
132void ExttGroupButtons(void)
133{
134        OpenFieldSet("tGroup Aux Panel",100);
135        switch(guMode)
136        {
137                case 2000:
138                        printf("<p><u>Enter/mod data</u><br>");
139                        printf(LANG_NBB_CONFIRMNEW);
140                break;
141
142                case 2001:
143                        printf("<p><u>Think twice</u><br>");
144                        printf(LANG_NBB_CONFIRMDEL);
145                break;
146
147                case 2002:
148                        printf("<p><u>Review changes</u><br>");
149                        printf(LANG_NBB_CONFIRMMOD);
150                break;
151
152                default:
153                        printf("<u>Table Tips</u><br>");
154                        printf("tGroup (and it's related tables <a href=?gcFunction=tGroupGlue>"
155                                "tGroupGlue</a> and <a href=?gcFunction=tGroupType>tGroupType</a>)"
156                                " provide a way to create"
157                                " container and node groups of different types."
158                                " These groups can then be used for organizational and/or autonomic purposes.");
159                        if(uGroup) tGroupMemberNavList();
160                        tGroupNavList();
161        }
162        CloseFieldSet();
163
164}//void ExttGroupButtons(void)
165
166
167void ExttGroupAuxTable(void)
168{
169        if(!uGroup) return;
170
171        MYSQL_RES *res;
172        MYSQL_ROW field;
173
174        sprintf(gcQuery,"%s Property Panel",cLabel);
175        OpenFieldSet(gcQuery,100);
176        sprintf(gcQuery,"SELECT uProperty,cName,cValue FROM tProperty WHERE uKey=%u AND uType="
177                        PROP_GROUP
178                        " ORDER BY cName",
179                                uGroup);
180
181        mysql_query(&gMysql,gcQuery);
182        if(mysql_errno(&gMysql))
183                htmlPlainTextError(mysql_error(&gMysql));
184
185        res=mysql_store_result(&gMysql);
186        if(mysql_num_rows(res))
187        {
188                printf("<table cols=2>");
189                while((field=mysql_fetch_row(res)))
190                {
191                        printf("<tr>\n");
192                        printf("<td width=200 valign=top><a class=darkLink href=unxsVZ.cgi?"
193                                        "gcFunction=tProperty&uProperty=%s&cReturn=tGroup_%u>"
194                                        "%s</a></td><td>%s</td>\n",
195                                                field[0],uGroup,field[1],field[2]);
196                        printf("</tr>\n");
197                }
198                printf("</table>");
199        }
200
201        CloseFieldSet();
202
203
204}//void ExttGroupAuxTable(void)
205
206
207void ExttGroupGetHook(entry gentries[], int x)
208{
209        register int i;
210
211        for(i=0;i<x;i++)
212        {
213                if(!strcmp(gentries[i].name,"uGroup"))
214                {
215                        sscanf(gentries[i].val,"%u",&uGroup);
216                        guMode=6;
217                }
218        }
219        tGroup("");
220
221}//void ExttGroupGetHook(entry gentries[], int x)
222
223
224void ExttGroupSelect(void)
225{
226        ExtSelect("tGroup",VAR_LIST_tGroup);
227
228}//void ExttGroupSelect(void)
229
230
231void ExttGroupSelectRow(void)
232{
233        ExtSelectRow("tGroup",VAR_LIST_tGroup,uGroup);
234
235}//void ExttGroupSelectRow(void)
236
237
238void ExttGroupListSelect(void)
239{
240        char cCat[512];
241
242        ExtListSelect("tGroup",VAR_LIST_tGroup);
243
244        //Changes here must be reflected below in ExttGroupListFilter()
245        if(!strcmp(gcFilter,"uGroup"))
246        {
247                sscanf(gcCommand,"%u",&uGroup);
248                if(guPermLevel<10)
249                        strcat(gcQuery," AND ");
250                else
251                        strcat(gcQuery," WHERE ");
252                sprintf(cCat,"tGroup.uGroup=%u \
253                                                ORDER BY uGroup",
254                                                uGroup);
255                strcat(gcQuery,cCat);
256        }
257        else if(1)
258        {
259                //None NO FILTER
260                strcpy(gcFilter,"None");
261                strcat(gcQuery," ORDER BY uGroup");
262        }
263
264}//void ExttGroupListSelect(void)
265
266
267void ExttGroupListFilter(void)
268{
269        //Filter
270        printf("&nbsp;&nbsp;&nbsp;Filter on ");
271        printf("<select name=gcFilter>");
272        if(strcmp(gcFilter,"uGroup"))
273                printf("<option>uGroup</option>");
274        else
275                printf("<option selected>uGroup</option>");
276        if(strcmp(gcFilter,"None"))
277                printf("<option>None</option>");
278        else
279                printf("<option selected>None</option>");
280        printf("</select>");
281
282}//void ExttGroupListFilter(void)
283
284
285void ExttGroupNavBar(void)
286{
287        if(uOwner) GetClientOwner(uOwner,&guReseller);
288
289        printf(LANG_NBB_SKIPFIRST);
290        printf(LANG_NBB_SKIPBACK);
291        printf(LANG_NBB_SEARCH);
292
293        if(guPermLevel>=10 && !guListMode)
294                printf(LANG_NBB_NEW);
295
296                        if( (guPermLevel>=10 && uOwner==guLoginClient)
297                                || (guPermLevel>9 && uOwner!=1 && uOwner!=0)
298                                || (guPermLevel>7 && guReseller==guLoginClient) )
299                printf(LANG_NBB_MODIFY);
300
301                        if( (guPermLevel>=12 && uOwner==guLoginClient)
302                                || (guPermLevel>9 && uOwner!=1 && uOwner!=0)
303                                || (guPermLevel>7 && guReseller==guLoginClient) )
304                printf(LANG_NBB_DELETE);
305
306        if(uOwner)
307                printf(LANG_NBB_LIST);
308
309        printf(LANG_NBB_SKIPNEXT);
310        printf(LANG_NBB_SKIPLAST);
311        printf("&nbsp;&nbsp;&nbsp;\n");
312
313}//void ExttGroupNavBar(void)
314
315
316void tGroupNavList(void)
317{
318        MYSQL_RES *res;
319        MYSQL_ROW field;
320
321        ExtSelect("tGroup","tGroup.uGroup,tGroup.cLabel");
322
323        mysql_query(&gMysql,gcQuery);
324        if(mysql_errno(&gMysql))
325        {
326                printf("<p><u>tGroupNavList</u><br>\n");
327                printf("%s",mysql_error(&gMysql));
328                return;
329        }
330        res=mysql_store_result(&gMysql);
331        if(mysql_num_rows(res))
332        {       
333                printf("<p><u>tGroupNavList</u><br>\n");
334                while((field=mysql_fetch_row(res)))
335                        printf("<a class=darkLink href=unxsVZ.cgi?gcFunction=tGroup"
336                                "&uGroup=%s>%s</a><br>\n",field[0],field[1]);
337        }
338        mysql_free_result(res);
339
340}//void tGroupNavList(void)
341
342
343void tGroupMemberNavList(void)
344{
345        MYSQL_RES *res;
346        MYSQL_ROW field;
347
348        sprintf(gcQuery,"SELECT uContainer,uNode FROM tGroupGlue WHERE uGroup=%u LIMIT 33",uGroup);
349        mysql_query(&gMysql,gcQuery);
350        if(mysql_errno(&gMysql))
351        {
352                printf("<p><u>tGroupMemberNavList</u><br>\n");
353                printf("%s",mysql_error(&gMysql));
354                return;
355        }
356        res=mysql_store_result(&gMysql);
357        if(mysql_num_rows(res))
358        {
359                unsigned uContainer,uNode,uLimit=0;
360                MYSQL_RES *res2;
361                MYSQL_ROW field2;
362
363                printf("<p><u>tGroupMemberNavList</u><br>\n");
364                while((field=mysql_fetch_row(res)))
365                {       
366                        if(++uLimit>32)
367                        {
368                                printf("(Only first 32 shown)<br>");
369                                break;
370                        }
371
372                        sscanf(field[0],"%u",&uContainer);
373                        sscanf(field[1],"%u",&uNode);
374                        if(uContainer)
375                        {
376                                sprintf(gcQuery,"SELECT cLabel FROM tContainer WHERE uContainer=%u",uContainer);
377                                mysql_query(&gMysql,gcQuery);
378                                if(mysql_errno(&gMysql))
379                                {
380                                        printf("<p><u>tGroupMemberNavList</u><br>\n");
381                                        printf("%s",mysql_error(&gMysql));
382                                        return;
383                                }
384                                res2=mysql_store_result(&gMysql);
385                                if((field2=mysql_fetch_row(res2)))
386                                        printf("<a class=darkLink href=unxsVZ.cgi?gcFunction=tContainer"
387                                        "&uContainer=%u>%s</a><br>\n",uContainer,field2[0]);
388                                mysql_free_result(res2);
389                        }
390                        else if(uNode)
391                        {
392                                sprintf(gcQuery,"SELECT cLabel FROM tNode WHERE uNode=%u",uNode);
393                                mysql_query(&gMysql,gcQuery);
394                                if(mysql_errno(&gMysql))
395                                {
396                                        printf("<p><u>tGroupMemberNavList</u><br>\n");
397                                        printf("%s",mysql_error(&gMysql));
398                                        return;
399                                }
400                                res2=mysql_store_result(&gMysql);
401                                if((field2=mysql_fetch_row(res2)))
402                                        printf("<a class=darkLink href=unxsVZ.cgi?gcFunction=tNode"
403                                        "&uNode=%u>%s</a><br>\n",uNode,field2[0]);
404                                mysql_free_result(res2);
405                        }
406                }
407        }
408        mysql_free_result(res);
409
410}//void tGroupMemberNavList(void)
411
412
413void voidCopyGroupType(unsigned uGroupType,unsigned uGroup)
414{
415        //MySQL 5.0+ SQL
416        sprintf(gcQuery,"INSERT INTO tProperty (cName,cValue,uType,uKey,uOwner,uCreatedBy,uCreatedDate)"
417                        " SELECT cName,cValue,"PROP_GROUP",%u,%u,%u,UNIX_TIMESTAMP(NOW()) FROM"
418                        " tProperty WHERE uKey=%u AND uType="
419                        PROP_GROUPTYPE
420                                        ,uGroup,guLoginClient,guCompany,uGroupType);
421        mysql_query(&gMysql,gcQuery);
422        if(mysql_errno(&gMysql))
423                htmlPlainTextError(mysql_error(&gMysql));
424               
425}//void voidCopyGroupType()
426
427
428void voidDelGroupProperties(unsigned uGroup)
429{
430        sprintf(gcQuery,"DELETE FROM tProperty WHERE uType="PROP_GROUP" AND uKey=%u",uGroup);
431        mysql_query(&gMysql,gcQuery);
432        if(mysql_errno(&gMysql))
433                htmlPlainTextError(mysql_error(&gMysql));
434
435}//void voidDelGroupProperties(unsigned uGroup)
Note: See TracBrowser for help on using the browser.