/* FILE tJob source code of mysqlSendmail.cgi (built by mysqlRAD2.cgi (c) Gary Wallis 2001,2002 GPL Licensed) $Id: tjob.c 6 2005-11-24 00:02:59Z ggw $ (tAuthorize.cPasswd template set member) PURPOSE */ #include "mysqlrad.h" //Table Variables //uJob: Primary Key static unsigned uJob=0; //cLabel: Short label static char cLabel[33]={""}; //cServer: Server name ip or any server static char cServer[65]={""}; //cJobName: Subsystem.Function style job name static char cJobName[65]={""}; //uUser: User ID if corresponds static unsigned uUser=0; //cJobData: Remote subsystem server function arguments static char *cJobData={""}; //uJobDate: Unix seconds for job to start to be considered static long unsigned uJobDate=0; //uJobStatus: Waiting, being processed, done, error static unsigned uJobStatus=0; static char cuJobStatusPullDown[256]={""}; //cRemoteMsg: Remote subsytem error message static char cRemoteMsg[33]={""}; //uOwner: Record owner static unsigned uOwner=0; //uCreatedBy: uClient for last insert static unsigned uCreatedBy=0; #define ISM3FIELDS //uCreatedDate: Unix seconds date last insert static long unsigned uCreatedDate=0; //uModBy: uClient for last update static unsigned uModBy=0; //uModDate: Unix seconds date last update static long unsigned uModDate=0; #define VAR_LIST_tJob "tJob.uJob,tJob.cLabel,tJob.cServer,tJob.cJobName,tJob.uUser,tJob.cJobData,tJob.uJobDate,tJob.uJobStatus,tJob.cRemoteMsg,tJob.uOwner,tJob.uCreatedBy,tJob.uCreatedDate,tJob.uModBy,tJob.uModDate" //Local only void Insert_tJob(void); void Update_tJob(char *rowid); int InsertUpdate_tJob(char *cKey); void ProcesstJobListVars(pentry entries[], int x); //In tJobfunc.h file included below void ExtProcesstJobVars(pentry entries[], int x); void ExttJobCommands(pentry entries[], int x); void ExttJobButtons(void); void ExttJobNavBar(void); void ExttJobGetHook(entry gentries[], int x); void ExttJobSelect(void); void ExttJobSelectRow(void); void ExttJobListSelect(void); void ExttJobListFilter(void); void ExttJobAuxTable(void); #include "tjobfunc.h" //Table Variables Assignment Function void ProcesstJobVars(pentry entries[], int x) { register int i; for(i=0;i\n"); printf("\n"); printf(""); printf("
"); ExttJobNavBar(); printf(""); printf("",rowid); if(i) { printf(" "); if(mode==6) //printf(" Found"); printf(LANG_NBR_FOUND); else if(mode==5) //printf(" Modified"); printf(LANG_NBR_MODIFIED); else if(mode==4) //printf(" New"); printf(LANG_NBR_NEW); printf(LANG_NBRF_SHOWING,rowid,i); } else { if(!result[0]) //printf(" No records found"); printf(LANG_NBR_NORECS); } if(result[0]) printf(" %s",result); printf("
"); ExttJobButtons(); printf(""); printf("\n"); if(mode==2000 || mode==2002) tJobInputContent(); else tJobContent(); printf("
\n"); printf("
\n"); //Bottom table ExttJobAuxTable(); printf("\n"); Footer_ism3(); }//end of tJob(); void tJobContent(void) { OpenRow(LANG_FL_tJob_uJob,"white"); printf("%u\n",uJob,uJob); printf("  "); OpenRow(LANG_FL_tJob_cLabel,"white"); printf("%s",cLabel,EncodeDoubleQuotes(cLabel)); printf("  "); OpenRow(LANG_FL_tJob_cServer,"white"); printf("%s",cServer,EncodeDoubleQuotes(cServer)); printf("  "); OpenRow(LANG_FL_tJob_cJobName,"white"); printf("%s",cJobName,EncodeDoubleQuotes(cJobName)); printf("  "); OpenRow(LANG_FL_tJob_uUser,"white"); printf("%s\n",ForeignKey("tUser","cLogin",uUser),uUser); printf("  "); OpenRow(LANG_FL_tJob_cJobData,"white"); printf("
%s
\n\n", TransformAngleBrackets(cJobData)); printf("", EncodeDoubleQuotes(cJobData)); printf("  "); OpenRow(LANG_FL_tJob_uJobDate,"white"); if(uJobDate) printf("%s\n\n",ctime((time_t *)&uJobDate)); else printf("---\n\n"); printf("\n",uJobDate); printf("  "); OpenRow(LANG_FL_tJob_uJobStatus,"white"); tTablePullDownReadOnly("tJobStatus;cuJobStatusPullDown","cLabel","cLabel",uJobStatus); printf("  "); OpenRow(LANG_FL_tJob_cRemoteMsg,"white"); printf("%s",cRemoteMsg,EncodeDoubleQuotes(cRemoteMsg)); printf("  "); OpenRow(LANG_FL_tJob_uOwner,"white"); printf("%s\n",ForeignKey("tClient","cLabel",uOwner),uOwner); printf("  "); OpenRow(LANG_FL_tJob_uCreatedBy,"white"); printf("%s\n",ForeignKey("tClient","cLabel",uCreatedBy),uCreatedBy); printf("  "); OpenRow(LANG_FL_tJob_uCreatedDate,"white"); if(uCreatedDate) printf("%s\n\n",ctime((time_t *)&uCreatedDate)); else printf("---\n\n"); printf("\n",uCreatedDate); printf("  "); OpenRow(LANG_FL_tJob_uModBy,"white"); printf("%s\n",ForeignKey("tClient","cLabel",uModBy),uModBy); printf("  "); OpenRow(LANG_FL_tJob_uModDate,"white"); if(uModDate) printf("%s\n\n",ctime((time_t *)&uModDate)); else printf("---\n\n"); printf("\n",uModDate); printf("  "); printf("\n"); }//tJobContent() void tJobInputContent(void) { OpenRow(LANG_FL_tJob_uJob,"white"); if(uPermLevel>=20) printf("\n",LANG_FT_tJob_uJob,uJob); else printf("%u\n",uJob,uJob); OpenRow(LANG_FL_tJob_cLabel,"white"); if(uPermLevel>=10) printf("\n",LANG_FT_tJob_cLabel,EncodeDoubleQuotes(cLabel)); else printf("%s",cLabel,EncodeDoubleQuotes(cLabel)); OpenRow(LANG_FL_tJob_cServer,"white"); if(uPermLevel>=10) printf("\n",LANG_FT_tJob_cServer,EncodeDoubleQuotes(cServer)); else printf("%s",cServer,EncodeDoubleQuotes(cServer)); OpenRow(LANG_FL_tJob_cJobName,"white"); if(uPermLevel>=10) printf("\n",LANG_FT_tJob_cJobName,EncodeDoubleQuotes(cJobName)); else printf("%s",cJobName,EncodeDoubleQuotes(cJobName)); OpenRow(LANG_FL_tJob_uUser,"white"); printf("%s\n",ForeignKey("tUser","cLogin",uUser),uUser); OpenRow(LANG_FL_tJob_cJobData,"white"); if(uPermLevel>=10) printf("\n\n",LANG_FT_tJob_cJobData,cJobData); else { printf("
%s
\n\n", TransformAngleBrackets(cJobData)); printf("", EncodeDoubleQuotes(cJobData)); } OpenRow(LANG_FL_tJob_uJobDate,"white"); if(uJobDate) printf("%s\n\n",ctime((time_t *)&uJobDate)); else printf("---\n\n"); printf("\n",uJobDate); OpenRow(LANG_FL_tJob_uJobStatus,"white"); if(uPermLevel>=10) tTablePullDown("tJobStatus;cuJobStatusPullDown","cLabel","cLabel",uJobStatus); else { tTablePullDownReadOnly("tJobStatus;cuJobStatusPullDown","cLabel","cLabel",uJobStatus); } OpenRow(LANG_FL_tJob_cRemoteMsg,"white"); if(uPermLevel>=10) printf("\n",LANG_FT_tJob_cRemoteMsg,EncodeDoubleQuotes(cRemoteMsg)); else printf("%s",cRemoteMsg,EncodeDoubleQuotes(cRemoteMsg)); OpenRow(LANG_FL_tJob_uOwner,"white"); printf("%s\n",ForeignKey("tClient","cLabel",uOwner),uOwner); OpenRow(LANG_FL_tJob_uCreatedBy,"white"); printf("%s\n",ForeignKey("tClient","cLabel",uCreatedBy),uCreatedBy); OpenRow(LANG_FL_tJob_uCreatedDate,"white"); if(uCreatedDate) printf("%s\n\n",ctime((time_t *)&uCreatedDate)); else printf("---\n\n"); printf("\n",uCreatedDate); OpenRow(LANG_FL_tJob_uModBy,"white"); printf("%s\n",ForeignKey("tClient","cLabel",uModBy),uModBy); OpenRow(LANG_FL_tJob_uModDate,"white"); if(uModDate) printf("%s\n\n",ctime((time_t *)&uModDate)); else printf("---\n\n"); printf("\n",uModDate); printf("\n"); }//void tJobInputContent(void) void NewtJob(unsigned uMode) { register int i=0; MYSQL_RES *res; //New select sprintf(query,"SELECT uJob FROM tJob\ WHERE uJob=%u" ,uJob); mysql_query(&mysql,query); if(mysql_errno(&mysql)) mysqlSendmail(mysql_error(&mysql)); res=mysql_store_result(&mysql); i=mysql_num_rows(res); if(i) //tJob("Record already exists"); tJob(LANG_NBR_RECEXISTS); //insert query Insert_tJob(); if(mysql_errno(&mysql)) mysqlSendmail(mysql_error(&mysql)); //sprintf(query,"New record %u added"); uJob=mysql_insert_id(&mysql); if(!uMode) { sprintf(query,LANG_NBR_NEWRECADDED,uJob); tJob(query); } }//NewtJob(unsigned uMode) void DeletetJob(void) { #ifdef ISM3FIELDS sprintf(query,"DELETE FROM tJob WHERE uJob=%u AND ( uOwner=%u OR %u>9 )" ,uJob,uLoginClient,uPermLevel); #else sprintf(query,"DELETE FROM tJob WHERE uJob=%u" ,uJob); #endif mysql_query(&mysql,query); if(mysql_errno(&mysql)) mysqlSendmail(mysql_error(&mysql)); //tJob("Record Deleted"); if(mysql_affected_rows(&mysql)>0) tJob(LANG_NBR_RECDELETED); else tJob(LANG_NBR_RECNOTDELETED); }//void DeletetJob(void) void Insert_tJob(void) { #ifdef ISM3FIELDS time_t clock; time(&clock); #endif //insert query //insert query sprintf(query,"INSERT INTO tJob SET uJob=%u, cLabel='%s', cServer='%s', cJobName='%s', uUser=%u, cJobData='%s', uJobDate=%lu, uJobStatus=%u, cRemoteMsg='%s', uOwner=%u, uCreatedBy=%u, uCreatedDate=%lu, uModBy=%u, uModDate=0", uJob ,TextAreaSave(cLabel) ,TextAreaSave(cServer) ,TextAreaSave(cJobName) ,uUser ,TextAreaSave(cJobData) ,uJobDate ,uJobStatus ,TextAreaSave(cRemoteMsg) ,uOwner ,uCreatedBy ,(long unsigned)clock ,uModBy ); mysql_query(&mysql,query); #ifdef ISM3FIELDS uCreatedDate=clock; #endif }//void Insert_tJob(void) void Update_tJob(char *rowid) { #ifdef ISM3FIELDS time_t clock; time(&clock); #endif //update query //update query sprintf(query,"UPDATE tJob SET uJob=%u,cLabel='%s',cServer='%s',cJobName='%s',uUser=%u,cJobData='%s',uJobDate=%lu,uJobStatus=%u,cRemoteMsg='%s',uModBy=%u,uModDate=%lu WHERE _rowid=%s", uJob ,TextAreaSave(cLabel) ,TextAreaSave(cServer) ,TextAreaSave(cJobName) ,uUser ,TextAreaSave(cJobData) ,uJobDate ,uJobStatus ,TextAreaSave(cRemoteMsg) ,uModBy ,(long unsigned)clock ,rowid); mysql_query(&mysql,query); #ifdef ISM3FIELDS uModDate=clock; #endif }//void Update_tJob(void) void ModtJob(void) { register int i=0; MYSQL_RES *res; MYSQL_ROW field; #ifdef ISM3FIELDS unsigned uPreModDate=0; //Mod select query if(uPermLevel<10) sprintf(query,"SELECT tJob.uJob,\ tJob.uModDate\ FROM tJob,tClient\ WHERE tJob.uJob=%u\ AND tJob.uOwner=tClient.uClient\ AND (tClient.uOwner=%u OR tClient.uClient=%u)" ,uJob,uLoginClient,uLoginClient); else sprintf(query,"SELECT uJob,uModDate FROM tJob\ WHERE uJob=%u" ,uJob); #else sprintf(query,"SELECT uJob FROM tJob\ WHERE uJob=%u" ,uJob); #endif mysql_query(&mysql,query); if(mysql_errno(&mysql)) mysqlSendmail(mysql_error(&mysql)); res=mysql_store_result(&mysql); i=mysql_num_rows(res); //if(i<1) tJob("Record does not exist"); if(i<1) tJob(LANG_NBR_RECNOTEXIST); //if(i>1) tJob("Multiple rows!"); if(i>1) tJob(LANG_NBR_MULTRECS); field=mysql_fetch_row(res); #ifdef ISM3FIELDS sscanf(field[1],"%u",&uPreModDate); if(uPreModDate!=uModDate) tJob(LANG_NBR_EXTMOD); #endif Update_tJob(field[0]); if(mysql_errno(&mysql)) mysqlSendmail(mysql_error(&mysql)); //sprintf(query,"record %s modified",field[0]); sprintf(query,LANG_NBRF_REC_MODIFIED,field[0]); tJob(query); }//ModtJob(void) void tJobList(void) { MYSQL_RES *res; MYSQL_ROW field; ExttJobListSelect(); mysql_query(&mysql,query); if(mysql_error(&mysql)[0]) mysqlSendmail(mysql_error(&mysql)); res=mysql_store_result(&mysql); i=mysql_num_rows(res); PageMachine("tJobList",1,"");//1 is auto header list mode. Opens table! //Filter select drop down ExttJobListFilter(); printf("",command); printf("\n"); printf("\n"); printf(""); mysql_data_seek(res,start-1); for(n=0;n<(end-start+1);n++) { field=mysql_fetch_row(res); if(!field) { printf("
uJobcLabelcServercJobNameuUsercJobDatauJobDateuJobStatuscRemoteMsguOwneruCreatedByuCreatedDateuModByuModDate
End of data
"); Footer_ism3(); } if(n % 2) printf(""); else printf(""); printf(" %s%s%s%s%s
%s%s%s%s%s%s%s%s%s"
			,field[0]
			,field[0]
			,field[1]
			,field[2]
			,field[3]
			,field[4]
			,field[5]
			,field[6]
			,field[7]
			,field[8]
			,field[9]
			,field[10]
			,field[11]
			,field[12]
			,field[13]
				);

	}

	printf("\n");
	Footer_ism3();

}//tJobList()


void CreatetJob(void)
{
	sprintf(query,"CREATE TABLE tJob ( cJobName varchar(64) NOT NULL DEFAULT '', uUser int unsigned NOT NULL DEFAULT 0, uModDate int unsigned NOT NULL DEFAULT 0, cServer varchar(64) NOT NULL DEFAULT '', uCreatedDate int unsigned NOT NULL DEFAULT 0, uModBy int unsigned NOT NULL DEFAULT 0, uOwner int unsigned NOT NULL DEFAULT 0,index (uOwner), uCreatedBy int unsigned NOT NULL DEFAULT 0, cJobData text NOT NULL DEFAULT '', uJob int unsigned PRIMARY KEY AUTO_INCREMENT, cLabel varchar(32) NOT NULL DEFAULT '', uJobStatus int unsigned NOT NULL DEFAULT 0,index (uJobStatus), uJobDate int unsigned NOT NULL DEFAULT 0, cRemoteMsg varchar(32) NOT NULL DEFAULT '' )");
	mysql_query(&mysql,qstr);
	if(mysql_errno(&mysql))
		mysqlSendmail(mysql_error(&mysql));
}//CreatetJob()

//sedall patch1