/*
FILE
	tHDQuota source code of mysqlSendmail.cgi
	(built by mysqlRAD2.cgi (c) Gary Wallis 2001,2002 GPL Licensed)
	$Id: thdquota.c 6 2005-11-24 00:02:59Z ggw $
	(tAuthorize.cPasswd template set member)
PURPOSE
*/

#include "mysqlrad.h"

//Table Variables
//uHDQuota: Primary Key
static unsigned uHDQuota=0;
//cLabel: Short label
static char cLabel[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_tHDQuota "tHDQuota.uHDQuota,tHDQuota.cLabel,tHDQuota.uOwner,tHDQuota.uCreatedBy,tHDQuota.uCreatedDate,tHDQuota.uModBy,tHDQuota.uModDate"

 //Local only
void Insert_tHDQuota(void);
void Update_tHDQuota(char *rowid);
int InsertUpdate_tHDQuota(char *cKey);
void ProcesstHDQuotaListVars(pentry entries[], int x);

 //In tHDQuotafunc.h file included below
void ExtProcesstHDQuotaVars(pentry entries[], int x);
void ExttHDQuotaCommands(pentry entries[], int x);
void ExttHDQuotaButtons(void);
void ExttHDQuotaNavBar(void);
void ExttHDQuotaGetHook(entry gentries[], int x);
void ExttHDQuotaSelect(void);
void ExttHDQuotaSelectRow(void);
void ExttHDQuotaListSelect(void);
void ExttHDQuotaListFilter(void);
void ExttHDQuotaAuxTable(void);

#include "thdquotafunc.h"

 //Table Variables Assignment Function
void ProcesstHDQuotaVars(pentry entries[], int x)
{
	register int i;


	for(i=0;i<x;i++)
	{
		if(!strcmp(entries[i].name,"uHDQuota"))
			sscanf(entries[i].val,"%u",&uHDQuota);
		else if(!strcmp(entries[i].name,"cLabel"))
			sprintf(cLabel,"%.32s",entries[i].val);
		else if(!strcmp(entries[i].name,"uOwner"))
			sscanf(entries[i].val,"%u",&uOwner);
		else if(!strcmp(entries[i].name,"uCreatedBy"))
			sscanf(entries[i].val,"%u",&uCreatedBy);
		else if(!strcmp(entries[i].name,"uCreatedDate"))
			sscanf(entries[i].val,"%lu",&uCreatedDate);
		else if(!strcmp(entries[i].name,"uModBy"))
			sscanf(entries[i].val,"%u",&uModBy);
		else if(!strcmp(entries[i].name,"uModDate"))
			sscanf(entries[i].val,"%lu",&uModDate);

	}

	//After so we can overwrite form data if needed.
	ExtProcesstHDQuotaVars(entries,x);

}//ProcesstHDQuotaVars()


void ProcesstHDQuotaListVars(pentry entries[], int x)
{
        register int i;

        for(i=0;i<x;i++)
        {
                if(!strncmp(entries[i].name,"ED",2))
                {
                        sscanf(entries[i].name+2,"%u",&uHDQuota);
                        mode=6;
                        tHDQuota("");
                }
        }
}//void ProcesstHDQuotaListVars(pentry entries[], int x)


int tHDQuotaCommands(pentry entries[], int x)
{
	ProcessControlVars(entries,x);

	ExttHDQuotaCommands(entries,x);

	if(!strcmp(function,"tHDQuotaTools"))
	{
		if(!strcmp(find,LANG_NB_LIST))
		{
			tHDQuotaList();
		}

		//Default
		ProcesstHDQuotaVars(entries,x);
		tHDQuota("");
	}
	else if(!strcmp(function,"tHDQuotaList"))
	{
		ProcessControlVars(entries,x);
		ProcesstHDQuotaListVars(entries,x);
		tHDQuotaList();
	}

	return(0);

}//tHDQuotaCommands()


void tHDQuota(const char *result)
{
	MYSQL_RES *res;
	MYSQL_RES *res2;
	MYSQL_ROW field;

	//Internal skip reloading
	if(!result[0])
	{
		if(mode)
			ExttHDQuotaSelectRow();
		else
			ExttHDQuotaSelect();

		mysql_query(&mysql,query);
		if(mysql_errno(&mysql))
        	{
			if(strstr(mysql_error(&mysql)," doesn't exist"))
                	{
				CreatetHDQuota();
				mysqlSendmail("New tHDQuota table created");
                	}
			else
			{
				mysqlSendmail(mysql_error(&mysql));
			}
        	}

		res=mysql_store_result(&mysql);
		if((i=mysql_num_rows(res)))
		{
			if(mode==6)
			{
			sprintf(query,"SELECT _rowid FROM tHDQuota WHERE uHDQuota=%u"
						,uHDQuota);
			mysql_query(&mysql,query);
			res2=mysql_store_result(&mysql);
			field=mysql_fetch_row(res2);
			sscanf(field[0],"%lu",&rowid);
			rowid++;
			}
			PageMachine("",0,"");
			if(!mode) mysql_data_seek(res,rowid-1);
			field=mysql_fetch_row(res);
		sscanf(field[0],"%u",&uHDQuota);
		sprintf(cLabel,"%.32s",field[1]);
		sscanf(field[2],"%u",&uOwner);
		sscanf(field[3],"%u",&uCreatedBy);
		sscanf(field[4],"%lu",&uCreatedDate);
		sscanf(field[5],"%u",&uModBy);
		sscanf(field[6],"%lu",&uModDate);

		}

	}//Internal Skip

	Header_ism3(":: tHDQuota",0);
	printf("<form action=mysqlSendmail.cgi method=post >\n");
	printf("<table width=900 border=0 bgcolor=#A9BEC0 valign=center>\n");
	printf("<tr><td colspan=2><font face=Arial,Helvetica size=2>");


	ExttHDQuotaNavBar();

	printf("<input type=hidden name=function value=tHDQuotaTools>");
	printf("<input type=hidden name=rowid value=%lu>",rowid);
	if(i)
	{
		printf(" <font color=blue >");
		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(" <b> %s",result);
	printf("</td></tr>");
	printf("<tr><td valign=top>");

        ExttHDQuotaButtons();

        printf("</td><td valign=top>");
	printf("<table width=630 border=0 bgcolor=#9BC1B3 valign=center>\n");

	if(mode==2000 || mode==2002)
		tHDQuotaInputContent();
	else
		tHDQuotaContent();

	printf("</table>\n");
	printf("</table>\n");

	//Bottom table
        ExttHDQuotaAuxTable();

	printf("</font></form>\n");
	Footer_ism3();

}//end of tHDQuota();


void tHDQuotaContent(void)
{

	OpenRow(LANG_FL_tHDQuota_uHDQuota,"white");
	printf("%u<input type=hidden name=uHDQuota value=%u >\n",uHDQuota,uHDQuota);
	printf("&nbsp;&nbsp;");
	OpenRow(LANG_FL_tHDQuota_cLabel,"white");
	printf("%s<input type=hidden name=cLabel value=\"%s\">",cLabel,EncodeDoubleQuotes(cLabel));
	printf("&nbsp;&nbsp;");
	OpenRow(LANG_FL_tHDQuota_uOwner,"white");
	printf("%s<input type=hidden name=uOwner value=%u >\n",ForeignKey("tClient","cLabel",uOwner),uOwner);
	printf("&nbsp;&nbsp;");
	OpenRow(LANG_FL_tHDQuota_uCreatedBy,"white");
	printf("%s<input type=hidden name=uCreatedBy value=%u >\n",ForeignKey("tClient","cLabel",uCreatedBy),uCreatedBy);
	printf("&nbsp;&nbsp;");
	OpenRow(LANG_FL_tHDQuota_uCreatedDate,"white");
	if(uCreatedDate)
		printf("%s\n\n",ctime((time_t *)&uCreatedDate));
	else
		printf("---\n\n");
	printf("<input type=hidden name=uCreatedDate value=%lu >\n",uCreatedDate);
	printf("&nbsp;&nbsp;");
	OpenRow(LANG_FL_tHDQuota_uModBy,"white");
	printf("%s<input type=hidden name=uModBy value=%u >\n",ForeignKey("tClient","cLabel",uModBy),uModBy);
	printf("&nbsp;&nbsp;");
	OpenRow(LANG_FL_tHDQuota_uModDate,"white");
	if(uModDate)
		printf("%s\n\n",ctime((time_t *)&uModDate));
	else
		printf("---\n\n");
	printf("<input type=hidden name=uModDate value=%lu >\n",uModDate);
	printf("&nbsp;&nbsp;");
	printf("</tr>\n");



}//tHDQuotaContent()


void tHDQuotaInputContent(void)
{

	OpenRow(LANG_FL_tHDQuota_uHDQuota,"white");
	if(uPermLevel>=20)
		printf("<input title='%s' type=text name=uHDQuota value=%u size=16 maxlength=10>\n",LANG_FT_tHDQuota_uHDQuota,uHDQuota);
	else
		printf("%u<input type=hidden name=uHDQuota value=%u >\n",uHDQuota,uHDQuota);
	OpenRow(LANG_FL_tHDQuota_cLabel,"white");
	if(uPermLevel>=12)
		printf("<input title='%s' type=text name=cLabel value=\"%s\" size=40 maxlength=32>\n",LANG_FT_tHDQuota_cLabel,EncodeDoubleQuotes(cLabel));
	else
		printf("%s<input type=hidden name=cLabel value=\"%s\">",cLabel,EncodeDoubleQuotes(cLabel));
	OpenRow(LANG_FL_tHDQuota_uOwner,"white");
	printf("%s<input type=hidden name=uOwner value=%u >\n",ForeignKey("tClient","cLabel",uOwner),uOwner);
	OpenRow(LANG_FL_tHDQuota_uCreatedBy,"white");
	printf("%s<input type=hidden name=uCreatedBy value=%u >\n",ForeignKey("tClient","cLabel",uCreatedBy),uCreatedBy);
	OpenRow(LANG_FL_tHDQuota_uCreatedDate,"white");
	if(uCreatedDate)
		printf("%s\n\n",ctime((time_t *)&uCreatedDate));
	else
		printf("---\n\n");
	printf("<input type=hidden name=uCreatedDate value=%lu >\n",uCreatedDate);
	OpenRow(LANG_FL_tHDQuota_uModBy,"white");
	printf("%s<input type=hidden name=uModBy value=%u >\n",ForeignKey("tClient","cLabel",uModBy),uModBy);
	OpenRow(LANG_FL_tHDQuota_uModDate,"white");
	if(uModDate)
		printf("%s\n\n",ctime((time_t *)&uModDate));
	else
		printf("---\n\n");
	printf("<input type=hidden name=uModDate value=%lu >\n",uModDate);
	printf("</tr>\n");



}//void tHDQuotaInputContent(void)


void NewtHDQuota(unsigned uMode)
{
	register int i=0;
	MYSQL_RES *res;

	//New select
	sprintf(query,"SELECT uHDQuota FROM tHDQuota\
				WHERE uHDQuota=%u"
							,uHDQuota);
	mysql_query(&mysql,query);
	if(mysql_errno(&mysql)) mysqlSendmail(mysql_error(&mysql));
	res=mysql_store_result(&mysql);
	i=mysql_num_rows(res);

	if(i) 
		//tHDQuota("<blink>Record already exists");
		tHDQuota(LANG_NBR_RECEXISTS);

	//insert query
	Insert_tHDQuota();
	if(mysql_errno(&mysql)) mysqlSendmail(mysql_error(&mysql));
	//sprintf(query,"New record %u added");
	uHDQuota=mysql_insert_id(&mysql);

	if(!uMode)
	{
	sprintf(query,LANG_NBR_NEWRECADDED,uHDQuota);
	tHDQuota(query);
	}

}//NewtHDQuota(unsigned uMode)


void DeletetHDQuota(void)
{
#ifdef ISM3FIELDS
	sprintf(query,"DELETE FROM tHDQuota WHERE uHDQuota=%u AND ( uOwner=%u OR %u>9 )"
					,uHDQuota,uLoginClient,uPermLevel);
#else
	sprintf(query,"DELETE FROM tHDQuota WHERE uHDQuota=%u"
					,uHDQuota);
#endif
	mysql_query(&mysql,query);
	if(mysql_errno(&mysql)) mysqlSendmail(mysql_error(&mysql));

	//tHDQuota("Record Deleted");
	if(mysql_affected_rows(&mysql)>0)
		tHDQuota(LANG_NBR_RECDELETED);
	else
		tHDQuota(LANG_NBR_RECNOTDELETED);

}//void DeletetHDQuota(void)


void Insert_tHDQuota(void)
{

#ifdef ISM3FIELDS
	time_t clock;

        time(&clock);
#endif

	//insert query

	//insert query
	sprintf(query,"INSERT INTO tHDQuota SET  uHDQuota=%u, cLabel='%s', uOwner=%u, uCreatedBy=%u, uCreatedDate=%lu, uModBy=%u, uModDate=0",
			uHDQuota
			,TextAreaSave(cLabel)
			,uOwner
			,uCreatedBy
			,(long unsigned)clock
			,uModBy
			);


	mysql_query(&mysql,query);
#ifdef ISM3FIELDS
	uCreatedDate=clock;
#endif

}//void Insert_tHDQuota(void)


void Update_tHDQuota(char *rowid)
{
#ifdef ISM3FIELDS
	time_t clock;

        time(&clock);
#endif

	//update query

	//update query
	sprintf(query,"UPDATE tHDQuota SET uHDQuota=%u,cLabel='%s',uModBy=%u,uModDate=%lu WHERE _rowid=%s",
			uHDQuota
			,TextAreaSave(cLabel)
			,uModBy
			,(long unsigned)clock
			,rowid);


	mysql_query(&mysql,query);

#ifdef ISM3FIELDS
	uModDate=clock;
#endif

}//void Update_tHDQuota(void)


void ModtHDQuota(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 tHDQuota.uHDQuota,\
				tHDQuota.uModDate\
				FROM tHDQuota,tClient\
				WHERE tHDQuota.uHDQuota=%u\
				AND tHDQuota.uOwner=tClient.uClient\
				AND (tClient.uOwner=%u OR tClient.uClient=%u)"
			,uHDQuota,uLoginClient,uLoginClient);
	else
	sprintf(query,"SELECT uHDQuota,uModDate FROM tHDQuota\
				WHERE uHDQuota=%u"
						,uHDQuota);
#else
	sprintf(query,"SELECT uHDQuota FROM tHDQuota\
				WHERE uHDQuota=%u"
						,uHDQuota);
#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) tHDQuota("<blink>Record does not exist");
	if(i<1) tHDQuota(LANG_NBR_RECNOTEXIST);
	//if(i>1) tHDQuota("<blink>Multiple rows!");
	if(i>1) tHDQuota(LANG_NBR_MULTRECS);

	field=mysql_fetch_row(res);
#ifdef ISM3FIELDS
	sscanf(field[1],"%u",&uPreModDate);
	if(uPreModDate!=uModDate) tHDQuota(LANG_NBR_EXTMOD);
#endif

	Update_tHDQuota(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]);
	tHDQuota(query);

}//ModtHDQuota(void)


void tHDQuotaList(void)
{
	MYSQL_RES *res;
	MYSQL_ROW field;

	ExttHDQuotaListSelect();

	mysql_query(&mysql,query);
	if(mysql_error(&mysql)[0]) mysqlSendmail(mysql_error(&mysql));
	res=mysql_store_result(&mysql);
	i=mysql_num_rows(res);

	PageMachine("tHDQuotaList",1,"");//1 is auto header list mode. Opens table!

	//Filter select drop down
	ExttHDQuotaListFilter();

	printf("<input type=text size=16 name=command maxlength=98 value=\"%s\" >",command);

	printf("</table>\n");

	printf("<table bgcolor=#9BC1B3 border=0 width=900>\n");
	printf("<tr bgcolor=black><td><font face=arial,helvetica color=white>uHDQuota<td><font face=arial,helvetica color=white>cLabel<td><font face=arial,helvetica color=white>uOwner<td><font face=arial,helvetica color=white>uCreatedBy<td><font face=arial,helvetica color=white>uCreatedDate<td><font face=arial,helvetica color=white>uModBy<td><font face=arial,helvetica color=white>uModDate</tr>");



	mysql_data_seek(res,start-1);

	for(n=0;n<(end-start+1);n++)
	{
		field=mysql_fetch_row(res);
		if(!field)
		{
			printf("<tr><td><font face=arial,helvetica>End of data</table>");
			Footer_ism3();
		}
			if(n % 2)
				printf("<tr bgcolor=#BBE1D3>");
			else
				printf("<tr>");
		printf("<td><font face=arial,helvetica size=1><input type=submit name=ED%s value=Edit></font> %s<td>%s<td>%s<td>%s<td>%s<td>%s<td>%s</tr>"
			,field[0]
			,field[0]
			,field[1]
			,field[2]
			,field[3]
			,field[4]
			,field[5]
			,field[6]
				);

	}

	printf("</table></form>\n");
	Footer_ism3();

}//tHDQuotaList()


void CreatetHDQuota(void)
{
	sprintf(query,"CREATE TABLE tHDQuota ( uHDQuota int unsigned PRIMARY KEY AUTO_INCREMENT, cLabel varchar(32) NOT NULL DEFAULT '', uOwner int unsigned NOT NULL DEFAULT 0,index (uOwner), uCreatedBy int unsigned NOT NULL DEFAULT 0, uCreatedDate int unsigned NOT NULL DEFAULT 0, uModBy int unsigned NOT NULL DEFAULT 0, uModDate int unsigned NOT NULL DEFAULT 0 )");
	mysql_query(&mysql,qstr);
	if(mysql_errno(&mysql))
		mysqlSendmail(mysql_error(&mysql));
}//CreatetHDQuota()

//sedall patch1
