# function: fieldreplace
#
# create a php string with database fields from between [[]] tokens
# function: multiply
#
# create code to search fields between [[]] tokens
#set getvars=''
#set data_connection=0
# Field of type: data ... [<front>[<field>]<back>] ... rest
#function doreplace str fid fnr
#set result=str
#match str with \([^[]*\)\[\([^[]*\)\[\([^]]*\)\]\([^]]*\)\]\(.*\) into front,before,name,after,back
#match name with \([^.-]+\)\.?\([^-]*\)-\([^.-]+\)\.\([^:]+\):\(.*\) into fr_table,fr_field,lk_table,lk_field,lk_show
#set name=lk_table ^ '_' ^ lk_show
#end
#if before<>'' or after<>''
#set getvars=getvars ^ ' if ($sql->data[F' ^ fid ^ '_' ^ string_of_int fnr ^']==\'\') {$' ^ name ^ '_' ^ fid ^ '=\'\';} else {$' ^ name ^ '_' ^ fid ^ '=\'' ^ before ^ '\'.htmlspecialchars($sql->data[F' ^ fid ^ '_' ^ string_of_int fnr ^']).\'' ^ after ^ '\';};\n'
#else
#set getvars=getvars ^ ' $' ^ name ^ '_' ^ fid ^ '=htmlspecialchars($sql->data[F' ^ fid ^ '_' ^ string_of_int fnr ^']);\n'
#end
#set result=front ^ '$' ^ name ^ '_' ^ fid ^ doreplace back fid (fnr+1)
#end
#set doreplace=result
#end
#function fieldreplace str fid
#set result=''
#set getvars=''
#match str with \([^[]*\)\[\([^[]*\)\[\([^]]*\)\]\([^]]*\)\]\(.*\)
#set result=doreplace str fid 1
#end
#if result=''
#set result=str
#end
#set fieldreplace=result
#end
#set qryorder=''
#set qryjoin=''
#function queryvars table str fnr snr
#set result=''
#match str with \([^[]*\)\[\([^[]*\)\[\([^]]*\)\]\([^]]*\)\]\(.*\) into front,before,name,after,back
#if snr=1
#set qryorder='ORDER BY '
#else
#set qryorder=qryorder ^ ', '
#end
#set m=false
#match name with \([^.-]+\)\.?\([^-]*\)-\([^.-]+\)\.\([^:]+\):\(.*\) into fr_table,fr_field,lk_table,lk_field,lk_show
#if fr_field=''
#set fr_field='`' ^ table ^ '`.`' ^ fr_table ^ '`'
#set fr_table=table
#else
#set fr_field='`' ^ fr_table ^ '`.`' ^ fr_field ^ '`'
#end
#set qryjoin = qryjoin ^ ' LEFT JOIN `' ^ lk_table ^ '` ON `' ^ lk_table ^ '`.`' ^ lk_field ^ '`=' ^ fr_field
#set result='`' ^ lk_table ^ '`.`' ^ lk_show ^ '` as F' ^ fnr ^ '_' ^ string_of_var snr
#set qryorder=qryorder ^ '`' ^ lk_table ^ '`.`' ^ lk_show ^ '`'
#set m=true
#end
#match name with \([^.-]+\)\.\([^-]+\) into lk_table,lk_field
#if m=false
#set result='`' ^ lk_table ^ '`.`' ^ lk_show ^ '` as F' ^ fnr ^ '_' ^ string_of_var snr
#set qryorder=qryorder ^ '`' ^ lk_table ^ '`.`' ^ lk_show ^ '`'
#set m=true
#end
#end
#if m=false
#if table<>''
#set result='`' ^ table ^ '`.'
#set qryorder=qryorder ^ '`' ^ table ^ '`.'
#else
#set result=''
#end
#set result=result ^ '`' ^ name ^ '` as F' ^ fnr ^ '_' ^ string_of_var snr
#set qryorder=qryorder ^ '`' ^ name ^ '`'
#end
#set next=queryvars table back fnr (snr+1)
#if next<>''
#set result=result ^ ', ' ^next
#end
#end
#set queryvars=result
#end
#function queryorder
#set queryorder=qryorder
#set qryorder=''
#end
#function queryjoin
#set queryjoin=qryjoin
#set qryjoin=''
#end
#function domultiply table str action
#set result=''
#match str with \([^[]*\)\[\([^[]*\)\[\([^]]*\)\]\([^]]*\)\]\(.*\) into front,before,name,after,back
#set next=domultiply table back action
#set nomatch=true
#match name with \([^.-]+\)\.?\([^-]*\)-\([^.-]+\)\.\([^:]+\):\(.*\) into fr_table,fr_field,lk_table,lk_field,lk_show
#set result='`' ^ lk_table ^ '`.' ^ lk_show ^ action ^ (if next='' then '' else 'OR ' ^ next)
#set nomatch=false
#end
#if nomatch
#set result=table ^ '.' ^ name ^ action ^ (if next='' then '' else 'OR ' ^ next)
#end
#end
#set domultiply=result
#end
#function multiply table str action
#set result=''
#match str with \([^[]*\)\[\([^[]*\)\[\([^]]*\)\]\([^]]*\)\]\(.*\)
#set result=domultiply table str action
#end
#if result=''
#set result=str ^ action
#end
#set multiply=result
#end