updated to the new pikotools api: changed the way how child_spaces are created in Space class
This commit is contained in:
parent
fe67b5d72a
commit
f1b9d1b870
|
@ -258,9 +258,10 @@ bool TimeZone::SetTzDst(pt::Space & year)
|
||||||
Dst dst;
|
Dst dst;
|
||||||
|
|
||||||
int year_int = 0;
|
int year_int = 0;
|
||||||
|
std::wstring * year_name = year.find_child_space_name();
|
||||||
|
|
||||||
if( year.name )
|
if( year_name )
|
||||||
year_int = Toi(*year.name);
|
year_int = Toi(*year_name);
|
||||||
|
|
||||||
if( year_int < 1970 || year_int > 10000 )
|
if( year_int < 1970 || year_int > 10000 )
|
||||||
return false;
|
return false;
|
||||||
|
@ -296,8 +297,10 @@ bool TimeZone::SetTz(pt::Space & space)
|
||||||
bool result = true;
|
bool result = true;
|
||||||
name.clear();
|
name.clear();
|
||||||
|
|
||||||
if( space.name )
|
std::wstring * space_name = space.find_child_space_name();
|
||||||
name = *space.name;
|
|
||||||
|
if( space_name )
|
||||||
|
name = *space_name;
|
||||||
|
|
||||||
id = space.to_int(L"id", -1);
|
id = space.to_int(L"id", -1);
|
||||||
offset = GetOffset(space);
|
offset = GetOffset(space);
|
||||||
|
@ -308,19 +311,22 @@ bool TimeZone::SetTz(pt::Space & space)
|
||||||
|
|
||||||
pt::Space * dst = space.find_child_space(L"dst");
|
pt::Space * dst = space.find_child_space(L"dst");
|
||||||
|
|
||||||
if( dst && dst->child_spaces )
|
if( dst )
|
||||||
{
|
{
|
||||||
for(size_t i=0 ; i<dst->child_spaces->size() ; ++i)
|
pt::Space::TableType * child_table = dst->find_child_space_table();
|
||||||
{
|
|
||||||
pt::Space & year = *(*dst->child_spaces)[i];
|
|
||||||
|
|
||||||
if( !SetTzDst(year) )
|
if( child_table )
|
||||||
|
{
|
||||||
|
for(pt::Space * year : *child_table)
|
||||||
|
{
|
||||||
|
if( !SetTzDst(*year) )
|
||||||
{
|
{
|
||||||
result = false;
|
result = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
|
@ -123,14 +123,15 @@ bool TimeZones::Empty() const
|
||||||
|
|
||||||
void TimeZones::ParseZones()
|
void TimeZones::ParseZones()
|
||||||
{
|
{
|
||||||
if( temp_space.child_spaces )
|
pt::Space::TableType * child_table = temp_space.find_child_space_table();
|
||||||
|
|
||||||
|
if( child_table )
|
||||||
{
|
{
|
||||||
for(size_t i=0 ; i<temp_space.child_spaces->size() ; ++i)
|
for(pt::Space * zone : *child_table)
|
||||||
{
|
{
|
||||||
pt::Space & zone = *((*temp_space.child_spaces)[i]);
|
|
||||||
temp_zone.Clear();
|
temp_zone.Clear();
|
||||||
|
|
||||||
if( temp_zone.SetTz(zone) )
|
if( temp_zone.SetTz(*zone) )
|
||||||
{
|
{
|
||||||
if( !HasZone(temp_zone.id) )
|
if( !HasZone(temp_zone.id) )
|
||||||
{
|
{
|
||||||
|
@ -154,7 +155,7 @@ void TimeZones::ParseZones()
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
log << log1 << "System: problem with reading time zone info from time zone: "
|
log << log1 << "System: problem with reading time zone info from time zone: "
|
||||||
<< zone.name << " (skipping) " << logend;
|
<< zone->get_child_space_name() << " (skipping) " << logend;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -330,20 +330,20 @@ void ExportInfo::SendAllFilesFromDir(long dir_id)
|
||||||
|
|
||||||
void ExportInfo::AdditionalExport(const Item & item)
|
void ExportInfo::AdditionalExport(const Item & item)
|
||||||
{
|
{
|
||||||
if( item.item_content.meta.child_spaces )
|
const pt::Space::TableType * child_table = item.item_content.meta.find_child_space_table();
|
||||||
|
|
||||||
|
if( child_table )
|
||||||
{
|
{
|
||||||
for(size_t i=0 ; i<item.item_content.meta.child_spaces->size() ; ++i)
|
for(const pt::Space * child : *child_table)
|
||||||
{
|
{
|
||||||
pt::Space & child = *(*item.item_content.meta.child_spaces)[i];
|
if( child->is_child_space_name(L"export") )
|
||||||
|
AdditionalExport(item, *child);
|
||||||
if( child.name && *child.name == L"export" )
|
|
||||||
AdditionalExport(item, child);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void ExportInfo::AdditionalExport(const Item & item, pt::Space & meta)
|
void ExportInfo::AdditionalExport(const Item & item, const pt::Space & meta)
|
||||||
{
|
{
|
||||||
meta.to_list(L"additional_export", additional_export);
|
meta.to_list(L"additional_export", additional_export);
|
||||||
|
|
||||||
|
|
|
@ -103,7 +103,7 @@ private:
|
||||||
bool SkipDir(long dir_id, std::wstring & dir);
|
bool SkipDir(long dir_id, std::wstring & dir);
|
||||||
|
|
||||||
void AdditionalExport(const Item & item);
|
void AdditionalExport(const Item & item);
|
||||||
void AdditionalExport(const Item & item, pt::Space & meta);
|
void AdditionalExport(const Item & item, const pt::Space & meta);
|
||||||
void AdditionalExport(const std::wstring & path);
|
void AdditionalExport(const std::wstring & path);
|
||||||
|
|
||||||
bool HasRecurrenceId(long id);
|
bool HasRecurrenceId(long id);
|
||||||
|
|
|
@ -59,24 +59,27 @@ void Groups::Reindex()
|
||||||
group_index_tab.clear();
|
group_index_tab.clear();
|
||||||
size_t seti = 0;
|
size_t seti = 0;
|
||||||
|
|
||||||
if( space.child_spaces )
|
pt::Space::TableType * child_table = space.find_child_space_table();
|
||||||
{
|
|
||||||
while( seti < space.child_spaces->size() )
|
|
||||||
{
|
|
||||||
pt::Space & sp = *(*space.child_spaces)[seti];
|
|
||||||
|
|
||||||
if( sp.name )
|
if( child_table )
|
||||||
{
|
{
|
||||||
if( set_index.find(*sp.name) == set_index.end() )
|
while( seti < child_table->size() )
|
||||||
{
|
{
|
||||||
set_index[*sp.name] = seti;
|
pt::Space & sp = *(*child_table)[seti];
|
||||||
|
std::wstring * name = sp.get_wstr(pt::Space::child_spaces_name);
|
||||||
|
|
||||||
|
if( name )
|
||||||
|
{
|
||||||
|
if( set_index.find(*name) == set_index.end() )
|
||||||
|
{
|
||||||
|
set_index[*name] = seti;
|
||||||
group_index_tab.push_back(GroupIndex());
|
group_index_tab.push_back(GroupIndex());
|
||||||
ReindexGroups(group_index_tab.back(), sp);
|
ReindexGroups(group_index_tab.back(), sp);
|
||||||
seti += 1;
|
seti += 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
slog << logerror << "set: " << sp.name << " already defined (skipping)" << logend;
|
slog << logerror << "set: " << name << " already defined (skipping)" << logend;
|
||||||
space.remove_child_space(seti);
|
space.remove_child_space(seti);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -88,24 +91,21 @@ void Groups::Reindex()
|
||||||
void Groups::ReindexGroups(GroupIndex & group_index, pt::Space & set)
|
void Groups::ReindexGroups(GroupIndex & group_index, pt::Space & set)
|
||||||
{
|
{
|
||||||
size_t i, v;
|
size_t i, v;
|
||||||
|
pt::Space::TableType * child_table = set.find_child_space_table();
|
||||||
|
|
||||||
if( set.child_spaces )
|
if( child_table )
|
||||||
{
|
{
|
||||||
// loop through all groups in the set
|
for( i=0 ; i < child_table->size() ; ++i )
|
||||||
for( i=0 ; i < set.child_spaces->size() ; ++i )
|
|
||||||
{
|
{
|
||||||
pt::Space & group = *(*set.child_spaces)[i];
|
pt::Space * group = (*child_table)[i];
|
||||||
// !! IMPROVE ME will be safer to copy the value out
|
std::wstring key = group->to_wstr(L"key", L"value");
|
||||||
// if we used accidently the group.Text later the key
|
pt::Space::TableType * group_child_table = group->find_child_space_table();
|
||||||
// would be overwritten
|
|
||||||
std::wstring key = group.to_wstr(L"key", L"value");
|
|
||||||
|
|
||||||
if( group.child_spaces )
|
if( group_child_table )
|
||||||
{
|
{
|
||||||
// loop through all values in the group
|
for(v=0 ; v < group_child_table->size() ; )
|
||||||
for(v=0 ; v<group.child_spaces->size() ; )
|
|
||||||
{
|
{
|
||||||
std::wstring * vali = (*group.child_spaces)[v]->get_wstr(key.c_str());
|
std::wstring * vali = (*group_child_table)[v]->get_wstr(key.c_str());
|
||||||
|
|
||||||
if( vali )
|
if( vali )
|
||||||
{
|
{
|
||||||
|
@ -118,24 +118,26 @@ size_t i, v;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
slog << logwarning << "set: " << set.name << " has a group with a duplicated value: "
|
slog << logwarning << "set: " << group->get_child_space_name()
|
||||||
|
<< " has a group with a duplicated value: "
|
||||||
<< *vali << " (skipping)" << logend;
|
<< *vali << " (skipping)" << logend;
|
||||||
|
|
||||||
group.remove_child_space(v);
|
group->remove_child_space(v);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
log << log1 << "key: " << key << " was not found" << logend;
|
log << log1 << "key: " << key << " was not found" << logend;
|
||||||
slog << logwarning << "set: " << set.name
|
|
||||||
|
slog << logwarning << "set: " << group->get_child_space_name()
|
||||||
<< " has a group without a value (skipping)" << logend;
|
<< " has a group without a value (skipping)" << logend;
|
||||||
|
|
||||||
group.remove_child_space(v);
|
group->remove_child_space(v);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SortValues(group);
|
SortValues(*group);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -146,10 +148,12 @@ void Groups::SortValues(pt::Space & group)
|
||||||
sort_by = group.to_wstr(L"sort_by");
|
sort_by = group.to_wstr(L"sort_by");
|
||||||
sort_asc = group.is_equal(L"sort_asc", L"true");
|
sort_asc = group.is_equal(L"sort_asc", L"true");
|
||||||
|
|
||||||
if( !sort_by.empty() && group.child_spaces )
|
pt::Space::TableType * child_table = group.find_child_space_table();
|
||||||
|
|
||||||
|
if( !sort_by.empty() && child_table )
|
||||||
{
|
{
|
||||||
group.to_list(L"sort", sort_value, true);
|
group.to_list(L"sort", sort_value, true);
|
||||||
std::sort(group.child_spaces->begin(), group.child_spaces->end(), SortFunHelper(this));
|
std::sort(child_table->begin(), child_table->end(), SortFunHelper(this));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -206,22 +210,23 @@ return false;
|
||||||
|
|
||||||
const std::wstring & Groups::GetOption(size_t seti, size_t groupi, size_t valuei, const wchar_t * option)
|
const std::wstring & Groups::GetOption(size_t seti, size_t groupi, size_t valuei, const wchar_t * option)
|
||||||
{
|
{
|
||||||
if( space.child_spaces && seti < space.child_spaces->size() )
|
pt::Space * groups = space.find_child_space(seti);
|
||||||
{
|
|
||||||
pt::Space & groups = *(*space.child_spaces)[seti];
|
|
||||||
|
|
||||||
if( groups.child_spaces && groupi < groups.child_spaces->size() )
|
if( groups )
|
||||||
{
|
{
|
||||||
pt::Space & value = *(*groups.child_spaces)[groupi];
|
pt::Space * value = groups->find_child_space(groupi);
|
||||||
|
|
||||||
if( value.child_spaces && valuei < value.child_spaces->size() )
|
if( value )
|
||||||
{
|
{
|
||||||
const std::wstring * res = (*value.child_spaces)[valuei]->get_wstr(option);
|
pt::Space * value_child = value->find_child_space(valuei);
|
||||||
|
|
||||||
|
if( value_child )
|
||||||
|
{
|
||||||
|
const std::wstring * res = value_child->get_wstr(option);
|
||||||
|
|
||||||
if( res )
|
if( res )
|
||||||
return *res;
|
return *res;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -237,12 +242,14 @@ const std::wstring & Groups::GetOption(size_t seti, size_t groupi, size_t valuei
|
||||||
|
|
||||||
size_t Groups::Size(size_t seti, size_t groupi)
|
size_t Groups::Size(size_t seti, size_t groupi)
|
||||||
{
|
{
|
||||||
if( space.child_spaces && seti < space.child_spaces->size() )
|
pt::Space * groups = space.find_child_space(seti);
|
||||||
{
|
|
||||||
pt::Space & groups = *(*space.child_spaces)[seti];
|
|
||||||
|
|
||||||
if( groups.child_spaces && groupi < groups.child_spaces->size() )
|
if( groups )
|
||||||
return (*groups.child_spaces)[groupi]->child_spaces->size();
|
{
|
||||||
|
pt::Space * group = groups->find_child_space(groupi);
|
||||||
|
|
||||||
|
if( group )
|
||||||
|
return group->child_spaces_size();
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -144,14 +144,14 @@ void SessionData::BuildFileList(std::vector<long> & file_tab, pt::Space & space)
|
||||||
{
|
{
|
||||||
file_tab.clear();
|
file_tab.clear();
|
||||||
|
|
||||||
if( space.child_spaces )
|
pt::Space::TableType * child_table = space.find_child_space_table();
|
||||||
{
|
|
||||||
for(size_t i=0 ; i<space.child_spaces->size() ; ++i)
|
|
||||||
{
|
|
||||||
pt::Space & sp = *(*space.child_spaces)[i];
|
|
||||||
|
|
||||||
if( sp.name && (*sp.name) == L"param" )
|
if( child_table )
|
||||||
CheckFile(file_tab, sp);
|
{
|
||||||
|
for(pt::Space * sp : *child_table)
|
||||||
|
{
|
||||||
|
if( sp->is_child_space_name(L"param") )
|
||||||
|
CheckFile(file_tab, *sp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -159,21 +159,15 @@ void SessionData::BuildFileList(std::vector<long> & file_tab, pt::Space & space)
|
||||||
|
|
||||||
void SessionData::CheckFile(std::vector<long> & file_tab, pt::Space & space)
|
void SessionData::CheckFile(std::vector<long> & file_tab, pt::Space & space)
|
||||||
{
|
{
|
||||||
if( space.child_spaces )
|
pt::Space::TableType * child_table = space.find_child_space_table();
|
||||||
{
|
|
||||||
for(size_t i=0 ; i<space.child_spaces->size() ; ++i)
|
|
||||||
{
|
|
||||||
pt::Space & subsp = *(*space.child_spaces)[i];
|
|
||||||
|
|
||||||
if( subsp.name && *subsp.name == L"file" )
|
if( child_table )
|
||||||
{
|
{
|
||||||
std::wstring * file_id_str = subsp.get_wstr(L"itemid");
|
for(pt::Space * sp : *child_table)
|
||||||
|
|
||||||
if( file_id_str )
|
|
||||||
{
|
{
|
||||||
long file_id = Tol(*file_id_str);
|
if( sp->is_child_space_name(L"file") )
|
||||||
file_tab.push_back(file_id);
|
{
|
||||||
}
|
file_tab.push_back(sp->to_long(L"itemid"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -171,24 +171,18 @@ return false;
|
||||||
*/
|
*/
|
||||||
pt::Space * find_ticket_param(long param_id, pt::Space & meta)
|
pt::Space * find_ticket_param(long param_id, pt::Space & meta)
|
||||||
{
|
{
|
||||||
wchar_t param_id_str[50];
|
pt::Space::TableType * child_table = meta.find_child_space_table();
|
||||||
|
|
||||||
if( meta.child_spaces )
|
if( child_table )
|
||||||
{
|
{
|
||||||
// for performane
|
for(pt::Space * sp : *child_table)
|
||||||
// should be a little faster in each loop comparing only just text
|
|
||||||
Toa(param_id, param_id_str, sizeof(param_id_str)/sizeof(wchar_t));
|
|
||||||
|
|
||||||
for(size_t i=0 ; i<meta.child_spaces->size() ; ++i)
|
|
||||||
{
|
{
|
||||||
pt::Space & sp = *(*meta.child_spaces)[i];
|
if( sp->is_child_space_name(L"param") && sp->to_long(L"id") == param_id )
|
||||||
|
return sp;
|
||||||
if( sp.name && *sp.name == L"param" && sp.is_equal(L"id", param_id_str) )
|
|
||||||
return &sp;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -249,15 +243,15 @@ size_t par_index;
|
||||||
|
|
||||||
void ticket_print_value_select(Info & i, TicketValue & value)
|
void ticket_print_value_select(Info & i, TicketValue & value)
|
||||||
{
|
{
|
||||||
if( value.is_param && value.is_value && value.config_par->child_spaces )
|
if( value.is_param && value.is_value )
|
||||||
{
|
{
|
||||||
for(size_t a=0 ; a<value.config_par->child_spaces->size() ; ++a)
|
pt::Space::TableType * child_table = value.config_par->find_child_space_table();
|
||||||
{
|
|
||||||
pt::Space & sp = *(*value.config_par->child_spaces)[a];
|
|
||||||
|
|
||||||
if( sp.name && *sp.name == L"option" && sp.to_long(L"id") == value.ticket_par->intv )
|
for(pt::Space * sp : *child_table)
|
||||||
{
|
{
|
||||||
std::wstring * val = sp.get_wstr(L"value");
|
if( sp->is_child_space_name(L"option") && sp->to_long(L"id") == value.ticket_par->intv )
|
||||||
|
{
|
||||||
|
std::wstring * val = sp->get_wstr(L"value");
|
||||||
|
|
||||||
if( val )
|
if( val )
|
||||||
i.out << *val;
|
i.out << *val;
|
||||||
|
@ -336,22 +330,21 @@ void ticket_param_value_for_param_id(Info & i)
|
||||||
{
|
{
|
||||||
value_for_param_id.Clear();
|
value_for_param_id.Clear();
|
||||||
|
|
||||||
size_t conf_index = 0;
|
|
||||||
pt::Space & space = *ticket_info.cur_conf;
|
pt::Space & space = *ticket_info.cur_conf;
|
||||||
int id = Toi(i.par);
|
int id = Toi(i.par);
|
||||||
|
|
||||||
if( space.child_spaces )
|
pt::Space::TableType * child_table = space.find_child_space_table();
|
||||||
{
|
|
||||||
for( ; conf_index < space.child_spaces->size() ; ++conf_index)
|
|
||||||
{
|
|
||||||
pt::Space & sp = *(*space.child_spaces)[conf_index];
|
|
||||||
|
|
||||||
if( sp.name && *sp.name == L"param" && sp.to_int(L"id") == id )
|
if( child_table )
|
||||||
|
{
|
||||||
|
for(pt::Space * sp : *child_table)
|
||||||
|
{
|
||||||
|
if( sp->is_child_space_name(L"param") && sp->to_int(L"id") == id )
|
||||||
{
|
{
|
||||||
value_for_param_id.Clear();
|
value_for_param_id.Clear();
|
||||||
value_for_param_id.is_param = true;
|
value_for_param_id.is_param = true;
|
||||||
value_for_param_id.config_par = &sp;
|
value_for_param_id.config_par = sp;
|
||||||
value_for_param_id.param_id = sp.to_long(L"id");
|
value_for_param_id.param_id = sp->to_long(L"id");
|
||||||
|
|
||||||
if( ticket_info.ticket && ticket_info.item )
|
if( ticket_info.ticket && ticket_info.item )
|
||||||
{
|
{
|
||||||
|
@ -371,24 +364,22 @@ void ticket_does_param_id_have_value(Info & i)
|
||||||
{
|
{
|
||||||
value_for_param_id.Clear();
|
value_for_param_id.Clear();
|
||||||
|
|
||||||
size_t conf_index = 0;
|
|
||||||
pt::Space & space = *ticket_info.cur_conf;
|
pt::Space & space = *ticket_info.cur_conf;
|
||||||
|
pt::Space::TableType * child_table = space.find_child_space_table();
|
||||||
|
|
||||||
if( i.params.size() == 2 && space.child_spaces )
|
if( i.params.size() == 2 && child_table )
|
||||||
{
|
{
|
||||||
long id = Tol(i.params[0].str);
|
long id = Tol(i.params[0].str);
|
||||||
long id2 = Tol(i.params[1].str);
|
long id2 = Tol(i.params[1].str);
|
||||||
|
|
||||||
for( ; conf_index < space.child_spaces->size() ; ++conf_index)
|
for(pt::Space * sp : *child_table)
|
||||||
{
|
{
|
||||||
pt::Space & sp = *(*space.child_spaces)[conf_index];
|
if( sp->is_child_space_name(L"param") && sp->to_long(L"id") == id )
|
||||||
|
|
||||||
if( sp.name && *sp.name == L"param" && sp.to_long(L"id") == id )
|
|
||||||
{
|
{
|
||||||
value_for_param_id.Clear();
|
value_for_param_id.Clear();
|
||||||
value_for_param_id.is_param = true;
|
value_for_param_id.is_param = true;
|
||||||
value_for_param_id.config_par = &sp;
|
value_for_param_id.config_par = sp;
|
||||||
value_for_param_id.param_id = sp.to_long(L"id");
|
value_for_param_id.param_id = sp->to_long(L"id");
|
||||||
|
|
||||||
if( ticket_info.ticket && ticket_info.item )
|
if( ticket_info.ticket && ticket_info.item )
|
||||||
{
|
{
|
||||||
|
@ -637,23 +628,21 @@ void tickets_tab_param_value_for_param_id(Info & i)
|
||||||
|
|
||||||
if( tickets_value.is_ticket )
|
if( tickets_value.is_ticket )
|
||||||
{
|
{
|
||||||
size_t param_index = 0;
|
|
||||||
pt::Space & space = *ticket_info.cur_conf;
|
pt::Space & space = *ticket_info.cur_conf;
|
||||||
long id = Tol(i.par);
|
long id = Tol(i.par);
|
||||||
|
|
||||||
if( space.child_spaces )
|
pt::Space::TableType * child_table = space.find_child_space_table();
|
||||||
{
|
|
||||||
for( ; param_index < space.child_spaces->size() ; ++param_index)
|
|
||||||
{
|
|
||||||
pt::Space & sp = *(*space.child_spaces)[param_index];
|
|
||||||
|
|
||||||
if( sp.name && *sp.name == L"param" &&
|
if( child_table )
|
||||||
sp.to_long(L"id") == id )
|
{
|
||||||
|
for(pt::Space * sp : *child_table)
|
||||||
|
{
|
||||||
|
if( sp->is_child_space_name(L"param") && sp->to_long(L"id") == id )
|
||||||
{
|
{
|
||||||
value_for_param_id.Clear();
|
value_for_param_id.Clear();
|
||||||
value_for_param_id.is_param = true;
|
value_for_param_id.is_param = true;
|
||||||
value_for_param_id.config_par = &sp;
|
value_for_param_id.config_par = sp;
|
||||||
value_for_param_id.param_id = sp.to_long(L"id");
|
value_for_param_id.param_id = sp->to_long(L"id");
|
||||||
|
|
||||||
find_ticket_value(value_for_param_id, tickets_value.ticket->par_tab, tickets_value.item->item_content.meta);
|
find_ticket_value(value_for_param_id, tickets_value.ticket->par_tab, tickets_value.item->item_content.meta);
|
||||||
ticket_print_value(i, value_for_param_id);
|
ticket_print_value(i, value_for_param_id);
|
||||||
|
@ -674,23 +663,22 @@ void tickets_tab_does_param_id_have_value(Info & i)
|
||||||
|
|
||||||
if( tickets_value.is_ticket && i.params.size() == 2 )
|
if( tickets_value.is_ticket && i.params.size() == 2 )
|
||||||
{
|
{
|
||||||
size_t param_index = 0;
|
|
||||||
pt::Space & space = *ticket_info.cur_conf;
|
pt::Space & space = *ticket_info.cur_conf;
|
||||||
long id = Toi(i.params[0].str);
|
long id = Toi(i.params[0].str);
|
||||||
long id2 = Toi(i.params[1].str);
|
long id2 = Toi(i.params[1].str);
|
||||||
|
|
||||||
if( space.child_spaces )
|
pt::Space::TableType * child_table = space.find_child_space_table();
|
||||||
{
|
|
||||||
for( ; param_index < space.child_spaces->size() ; ++param_index)
|
|
||||||
{
|
|
||||||
pt::Space & sp = *(*space.child_spaces)[param_index];
|
|
||||||
|
|
||||||
if( sp.name && *sp.name == L"param" && sp.to_long(L"id") == id )
|
if( child_table )
|
||||||
|
{
|
||||||
|
for(pt::Space * sp : *child_table)
|
||||||
|
{
|
||||||
|
if( sp->is_child_space_name(L"param") && sp->to_long(L"id") == id )
|
||||||
{
|
{
|
||||||
value_for_param_id.Clear();
|
value_for_param_id.Clear();
|
||||||
value_for_param_id.is_param = true;
|
value_for_param_id.is_param = true;
|
||||||
value_for_param_id.config_par = &sp;
|
value_for_param_id.config_par = sp;
|
||||||
value_for_param_id.param_id = sp.to_long(L"id");
|
value_for_param_id.param_id = sp->to_long(L"id");
|
||||||
|
|
||||||
find_ticket_value(value_for_param_id, tickets_value.ticket->par_tab, tickets_value.item->item_content.meta);
|
find_ticket_value(value_for_param_id, tickets_value.ticket->par_tab, tickets_value.item->item_content.meta);
|
||||||
|
|
||||||
|
@ -725,24 +713,26 @@ void tickets_tab_conf_tab(Info & i)
|
||||||
conf_index = i.iter;
|
conf_index = i.iter;
|
||||||
pt::Space & space = *ticket_info.cur_conf;
|
pt::Space & space = *ticket_info.cur_conf;
|
||||||
|
|
||||||
if( space.child_spaces )
|
pt::Space::TableType * child_table = space.find_child_space_table();
|
||||||
{
|
|
||||||
while( conf_index < space.child_spaces->size() )
|
|
||||||
{
|
|
||||||
pt::Space & sp = *(*space.child_spaces)[conf_index];
|
|
||||||
|
|
||||||
if( sp.name && *sp.name == L"param" )
|
if( child_table )
|
||||||
|
{
|
||||||
|
while( conf_index < child_table->size() )
|
||||||
|
{
|
||||||
|
pt::Space & sp = *(*child_table)[conf_index];
|
||||||
|
|
||||||
|
if( sp.is_child_space_name(L"param") )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
conf_index += 1;
|
conf_index += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
i.res = conf_index < space.child_spaces->size();
|
i.res = conf_index < child_table->size();
|
||||||
|
|
||||||
if( i.res )
|
if( i.res )
|
||||||
{
|
{
|
||||||
value.is_param = true;
|
value.is_param = true;
|
||||||
value.config_par = (*space.child_spaces)[conf_index];
|
value.config_par = (*child_table)[conf_index];
|
||||||
value.param_id = value.config_par->to_long(L"id");
|
value.param_id = value.config_par->to_long(L"id");
|
||||||
find_ticket_value(value, tickets_value.ticket->par_tab, tickets_value.item->item_content.meta);
|
find_ticket_value(value, tickets_value.ticket->par_tab, tickets_value.item->item_content.meta);
|
||||||
}
|
}
|
||||||
|
@ -841,20 +831,21 @@ void tickets_tab_conf_tab_file_tab(Info & i)
|
||||||
tickets_file_number = 0;
|
tickets_file_number = 0;
|
||||||
|
|
||||||
pt::Space & mt = *value.value_meta;
|
pt::Space & mt = *value.value_meta;
|
||||||
|
pt::Space::TableType * child_table = mt.find_child_space_table();
|
||||||
|
|
||||||
if( mt.child_spaces )
|
if( child_table )
|
||||||
{
|
{
|
||||||
while( tickets_file_index < mt.child_spaces->size() )
|
while( tickets_file_index < child_table->size() )
|
||||||
{
|
{
|
||||||
pt::Space & sp = *(*mt.child_spaces)[tickets_file_index];
|
pt::Space & sp = *(*child_table)[tickets_file_index];
|
||||||
|
|
||||||
if( sp.name && *sp.name == L"file" )
|
if( sp.is_child_space_name(L"file") )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
tickets_file_index += 1;
|
tickets_file_index += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
i.res = (tickets_file_index < mt.child_spaces->size());
|
i.res = (tickets_file_index < child_table->size());
|
||||||
|
|
||||||
if( i.res && i.iter > 0 )
|
if( i.res && i.iter > 0 )
|
||||||
tickets_file_number += 1;
|
tickets_file_number += 1;
|
||||||
|
@ -871,7 +862,7 @@ void tickets_tab_conf_tab_file_tab_index(Info & i)
|
||||||
{
|
{
|
||||||
pt::Space & mt = *value.value_meta;
|
pt::Space & mt = *value.value_meta;
|
||||||
|
|
||||||
if( mt.child_spaces && tickets_file_index < mt.child_spaces->size() )
|
if( mt.find_child_space(tickets_file_index) )
|
||||||
i.out << tickets_file_number;
|
i.out << tickets_file_number;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -885,9 +876,10 @@ void tickets_tab_conf_tab_file_tab_path(Info & i)
|
||||||
if( value.is_value && !value.is_in_ticket_par )
|
if( value.is_value && !value.is_in_ticket_par )
|
||||||
{
|
{
|
||||||
pt::Space & mt = *value.value_meta;
|
pt::Space & mt = *value.value_meta;
|
||||||
|
pt::Space * sp = mt.find_child_space(tickets_file_index);
|
||||||
|
|
||||||
if( mt.child_spaces && tickets_file_index < mt.child_spaces->size() )
|
if( sp )
|
||||||
i.out << (*mt.child_spaces)[tickets_file_index]->to_wstr(L"path");
|
i.out << sp->to_wstr(L"path");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -899,9 +891,10 @@ void tickets_tab_conf_tab_file_tab_itemid(Info & i)
|
||||||
if( value.is_value && !value.is_in_ticket_par )
|
if( value.is_value && !value.is_in_ticket_par )
|
||||||
{
|
{
|
||||||
pt::Space & mt = *value.value_meta;
|
pt::Space & mt = *value.value_meta;
|
||||||
|
pt::Space * sp = mt.find_child_space(tickets_file_index);
|
||||||
|
|
||||||
if( mt.child_spaces && tickets_file_index < mt.child_spaces->size() )
|
if( sp )
|
||||||
i.out << (*mt.child_spaces)[tickets_file_index]->to_wstr(L"itemid");
|
i.out << sp->to_long(L"itemid");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -913,9 +906,10 @@ void tickets_tab_conf_tab_file_tab_meta(Info & i)
|
||||||
if( value.is_value && !value.is_in_ticket_par )
|
if( value.is_value && !value.is_in_ticket_par )
|
||||||
{
|
{
|
||||||
pt::Space & mt = *value.value_meta;
|
pt::Space & mt = *value.value_meta;
|
||||||
|
pt::Space * sp = mt.find_child_space(tickets_file_index);
|
||||||
|
|
||||||
if( mt.child_spaces && tickets_file_index < mt.child_spaces->size() )
|
if( sp )
|
||||||
space_value(i, *(*mt.child_spaces)[tickets_file_index]);
|
space_value(i, *sp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -954,26 +948,27 @@ void ticket_tab(Info & i)
|
||||||
value.Clear();
|
value.Clear();
|
||||||
|
|
||||||
conf_index = i.iter;
|
conf_index = i.iter;
|
||||||
pt::Space & space = *ticket_info.cur_conf;
|
pt::Space & space = *ticket_info.cur_conf; // CHECKME is ticket_info.cur_conf always set?
|
||||||
|
pt::Space::TableType * child_table = space.find_child_space_table();
|
||||||
|
|
||||||
if( space.child_spaces )
|
if( child_table )
|
||||||
{
|
{
|
||||||
while( conf_index < space.child_spaces->size() )
|
while( conf_index < child_table->size() )
|
||||||
{
|
{
|
||||||
pt::Space & sp = *(*space.child_spaces)[conf_index];
|
pt::Space & sp = *(*child_table)[conf_index];
|
||||||
|
|
||||||
if( sp.name && *sp.name == L"param" )
|
if( sp.is_child_space_name(L"param") )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
conf_index += 1;
|
conf_index += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
i.res = conf_index < space.child_spaces->size();
|
i.res = conf_index < child_table->size();
|
||||||
|
|
||||||
if( i.res )
|
if( i.res )
|
||||||
{
|
{
|
||||||
value.is_param = true;
|
value.is_param = true;
|
||||||
value.config_par = (*space.child_spaces)[conf_index];
|
value.config_par = (*child_table)[conf_index];
|
||||||
value.param_id = value.config_par->to_long(L"id");
|
value.param_id = value.config_par->to_long(L"id");
|
||||||
|
|
||||||
if( ticket_info.ticket && ticket_info.item )
|
if( ticket_info.ticket && ticket_info.item )
|
||||||
|
@ -1072,21 +1067,21 @@ void ticket_tab_select_tab(Info & i)
|
||||||
if( value.is_param )
|
if( value.is_param )
|
||||||
{
|
{
|
||||||
select_index = i.iter;
|
select_index = i.iter;
|
||||||
pt::Space & sp = *value.config_par;
|
pt::Space::TableType * child_table = value.config_par->find_child_space_table();
|
||||||
|
|
||||||
if( sp.child_spaces )
|
if( child_table )
|
||||||
{
|
{
|
||||||
while( select_index < sp.child_spaces->size() )
|
while( select_index < child_table->size() )
|
||||||
{
|
{
|
||||||
pt::Space & sp_child = *(*sp.child_spaces)[select_index];
|
pt::Space & sp = *(*child_table)[select_index];
|
||||||
|
|
||||||
if( sp_child.name && *sp_child.name == L"option" )
|
if( sp.is_child_space_name(L"option") )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
select_index += 1;
|
select_index += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
i.res = (select_index < sp.child_spaces->size());
|
i.res = (select_index < child_table->size());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1098,13 +1093,13 @@ void ticket_tab_select_tab_is_selected(Info & i)
|
||||||
|
|
||||||
if( value.is_param )
|
if( value.is_param )
|
||||||
{
|
{
|
||||||
pt::Space & sp = *value.config_par;
|
pt::Space::TableType * child_table = value.config_par->find_child_space_table();
|
||||||
|
|
||||||
if( sp.child_spaces && select_index < sp.child_spaces->size() )
|
if( child_table && select_index < child_table->size() )
|
||||||
{
|
{
|
||||||
pt::Space & sp_child = *(*sp.child_spaces)[select_index];
|
pt::Space & sp = *(*child_table)[select_index];
|
||||||
|
|
||||||
long id = sp_child.to_long(L"id");
|
long id = sp.to_long(L"id");
|
||||||
|
|
||||||
if( value.is_value )
|
if( value.is_value )
|
||||||
{
|
{
|
||||||
|
@ -1126,10 +1121,10 @@ void ticket_tab_select_tab_name(Info & i)
|
||||||
|
|
||||||
if( value.is_param )
|
if( value.is_param )
|
||||||
{
|
{
|
||||||
pt::Space & sp = *value.config_par;
|
pt::Space * sp = value.config_par->find_child_space(select_index);
|
||||||
|
|
||||||
if( sp.child_spaces && select_index < sp.child_spaces->size() )
|
if( sp )
|
||||||
i.out << (*sp.child_spaces)[select_index]->to_wstr(L"value");
|
i.out << sp->to_wstr(L"value");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1140,10 +1135,10 @@ void ticket_tab_select_tab_id(Info & i)
|
||||||
|
|
||||||
if( value.is_param )
|
if( value.is_param )
|
||||||
{
|
{
|
||||||
pt::Space & sp = *value.config_par;
|
pt::Space * sp = value.config_par->find_child_space(select_index);
|
||||||
|
|
||||||
if( sp.child_spaces && select_index < sp.child_spaces->size() )
|
if( sp )
|
||||||
i.out << (*sp.child_spaces)[select_index]->to_wstr(L"id");
|
i.out << sp->to_wstr(L"id");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1153,10 +1148,10 @@ void ticket_tab_select_tab_meta(Info & i)
|
||||||
|
|
||||||
if( value.is_param )
|
if( value.is_param )
|
||||||
{
|
{
|
||||||
pt::Space & sp = *value.config_par;
|
pt::Space * sp = value.config_par->find_child_space(select_index);
|
||||||
|
|
||||||
if( sp.child_spaces && select_index < sp.child_spaces->size() )
|
if( sp )
|
||||||
space_value(i, *(*sp.child_spaces)[select_index]);
|
space_value(i, *sp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1173,21 +1168,21 @@ void ticket_tab_file_tab(Info & i)
|
||||||
if( i.iter == 0 )
|
if( i.iter == 0 )
|
||||||
ticket_file_number = 0;
|
ticket_file_number = 0;
|
||||||
|
|
||||||
pt::Space & mt = *value.value_meta;
|
pt::Space::TableType * child_table = value.value_meta->find_child_space_table();
|
||||||
|
|
||||||
if( mt.child_spaces )
|
if( child_table )
|
||||||
{
|
{
|
||||||
while( ticket_file_index < mt.child_spaces->size() )
|
while( ticket_file_index < child_table->size() )
|
||||||
{
|
{
|
||||||
pt::Space & sp = *(*mt.child_spaces)[ticket_file_index];
|
pt::Space & sp = *(*child_table)[ticket_file_index];
|
||||||
|
|
||||||
if( sp.name && *sp.name == L"file" )
|
if( sp.is_child_space_name(L"file") )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
ticket_file_index += 1;
|
ticket_file_index += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
i.res = (ticket_file_index < mt.child_spaces->size());
|
i.res = (ticket_file_index < child_table->size());
|
||||||
|
|
||||||
if( i.res && i.iter > 0 )
|
if( i.res && i.iter > 0 )
|
||||||
ticket_file_number += 1;
|
ticket_file_number += 1;
|
||||||
|
@ -1202,9 +1197,9 @@ void ticket_tab_file_tab_index(Info & i)
|
||||||
|
|
||||||
if( value.is_value && !value.is_in_ticket_par )
|
if( value.is_value && !value.is_in_ticket_par )
|
||||||
{
|
{
|
||||||
pt::Space & mt = *value.value_meta;
|
pt::Space * sp = value.value_meta->find_child_space(ticket_file_index);
|
||||||
|
|
||||||
if( mt.child_spaces && ticket_file_index < mt.child_spaces->size() )
|
if( sp )
|
||||||
i.out << ticket_file_number;
|
i.out << ticket_file_number;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1216,10 +1211,10 @@ void ticket_tab_file_tab_path(Info & i)
|
||||||
|
|
||||||
if( value.is_value && !value.is_in_ticket_par )
|
if( value.is_value && !value.is_in_ticket_par )
|
||||||
{
|
{
|
||||||
pt::Space & mt = *value.value_meta;
|
pt::Space * sp = value.value_meta->find_child_space(ticket_file_index);
|
||||||
|
|
||||||
if( mt.child_spaces && ticket_file_index < mt.child_spaces->size() )
|
if( sp )
|
||||||
i.out << (*mt.child_spaces)[ticket_file_index]->to_wstr(L"path");
|
i.out << sp->to_wstr(L"path");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1229,10 +1224,10 @@ void ticket_tab_file_tab_itemid(Info & i)
|
||||||
|
|
||||||
if( value.is_value && !value.is_in_ticket_par )
|
if( value.is_value && !value.is_in_ticket_par )
|
||||||
{
|
{
|
||||||
pt::Space & mt = *value.value_meta;
|
pt::Space * sp = value.value_meta->find_child_space(ticket_file_index);
|
||||||
|
|
||||||
if( mt.child_spaces && ticket_file_index < mt.child_spaces->size() )
|
if( sp )
|
||||||
i.out << (*mt.child_spaces)[ticket_file_index]->to_wstr(L"itemid");
|
i.out << sp->to_long(L"itemid");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1242,10 +1237,10 @@ void ticket_tab_file_tab_meta(Info & i)
|
||||||
|
|
||||||
if( value.is_value && !value.is_in_ticket_par )
|
if( value.is_value && !value.is_in_ticket_par )
|
||||||
{
|
{
|
||||||
pt::Space & mt = *value.value_meta;
|
pt::Space * sp = value.value_meta->find_child_space(ticket_file_index);
|
||||||
|
|
||||||
if( mt.child_spaces && ticket_file_index < mt.child_spaces->size() )
|
if( sp )
|
||||||
space_value(i, *(*mt.child_spaces)[ticket_file_index]);
|
space_value(i, *sp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -302,16 +302,21 @@ void TicketInfo::CheckMinMaxValue(pt::Space & space, Ticket::TicketParam & par)
|
||||||
else
|
else
|
||||||
if( *type == L"select" )
|
if( *type == L"select" )
|
||||||
{
|
{
|
||||||
if( space.child_spaces )
|
pt::Space::TableType * child_table = space.find_child_space_table();
|
||||||
{
|
|
||||||
for(size_t a=0 ; a<space.child_spaces->size() ; ++a)
|
|
||||||
{
|
|
||||||
pt::Space & sp = *(*space.child_spaces)[a];
|
|
||||||
|
|
||||||
if( sp.name && *sp.name == L"option" && sp.to_long(L"id") == par.intv )
|
if( child_table )
|
||||||
|
{
|
||||||
|
for(pt::Space * sp : *child_table)
|
||||||
|
{
|
||||||
|
if( sp->is_child_space_name(L"option") )
|
||||||
|
{
|
||||||
|
if( sp->to_long(L"id") == par.intv )
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
par.intv = 0;
|
par.intv = 0;
|
||||||
std::wstring * def = space.get_wstr(L"default");
|
std::wstring * def = space.get_wstr(L"default");
|
||||||
|
@ -324,14 +329,19 @@ void TicketInfo::CheckMinMaxValue(pt::Space & space, Ticket::TicketParam & par)
|
||||||
|
|
||||||
pt::Space & TicketInfo::FindAddMetaByParam(pt::Space & meta, long param)
|
pt::Space & TicketInfo::FindAddMetaByParam(pt::Space & meta, long param)
|
||||||
{
|
{
|
||||||
if( meta.child_spaces )
|
pt::Space::TableType * child_table = meta.find_child_space_table();
|
||||||
{
|
|
||||||
for(size_t i=0 ; i<meta.child_spaces->size() ; ++i)
|
|
||||||
{
|
|
||||||
pt::Space & sp = *(*meta.child_spaces)[i];
|
|
||||||
|
|
||||||
if( sp.name && *sp.name == L"param" && sp.to_long(L"id") == param )
|
if( child_table )
|
||||||
return sp;
|
{
|
||||||
|
for(pt::Space * sp : *child_table)
|
||||||
|
{
|
||||||
|
if( sp->is_child_space_name(L"param") )
|
||||||
|
{
|
||||||
|
if( sp->to_long(L"id") == param )
|
||||||
|
{
|
||||||
|
return *sp;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -484,15 +494,15 @@ void TicketInfo::ReadTicketParam(Ticket & ticket, long param_id, const std::wstr
|
||||||
{
|
{
|
||||||
ticket_param.Clear();
|
ticket_param.Clear();
|
||||||
|
|
||||||
if( cur_conf->child_spaces )
|
pt::Space::TableType * child_table = cur_conf->find_child_space_table();
|
||||||
{
|
|
||||||
for(size_t i=0 ; i<cur_conf->child_spaces->size() ; ++i)
|
|
||||||
{
|
|
||||||
pt::Space & space = *(*cur_conf->child_spaces)[i];
|
|
||||||
|
|
||||||
if( space.name && *space.name == L"param" && space.to_long(L"id") == param_id )
|
if( child_table )
|
||||||
{
|
{
|
||||||
ReadTicketParam(space, ticket, param_id, value, meta);
|
for(pt::Space * space : *child_table)
|
||||||
|
{
|
||||||
|
if( space->is_child_space_name(L"param") && space->to_long(L"id") == param_id )
|
||||||
|
{
|
||||||
|
ReadTicketParam(*space, ticket, param_id, value, meta);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -505,19 +515,22 @@ void TicketInfo::ReadTicketParam(Ticket & ticket, long param_id, const std::wstr
|
||||||
// always adds a new parameter
|
// always adds a new parameter
|
||||||
void TicketInfo::ReadTicketParam(long param_id, const PostFile & value, pt::Space & meta)
|
void TicketInfo::ReadTicketParam(long param_id, const PostFile & value, pt::Space & meta)
|
||||||
{
|
{
|
||||||
if( cur_conf->child_spaces )
|
pt::Space::TableType * child_table = cur_conf->find_child_space_table();
|
||||||
{
|
|
||||||
for(size_t i=0 ; i<cur_conf->child_spaces->size() ; ++i)
|
|
||||||
{
|
|
||||||
pt::Space & space = *(*cur_conf->child_spaces)[i];
|
|
||||||
|
|
||||||
if( space.name && *space.name == L"param" && space.to_long(L"id") == param_id )
|
if( child_table )
|
||||||
{
|
{
|
||||||
ReadTicketValue(space, param_id, value, meta);
|
for(pt::Space * sp : *child_table)
|
||||||
|
{
|
||||||
|
if( sp->is_child_space_name(L"param") )
|
||||||
|
{
|
||||||
|
if( sp->to_long(L"id") == param_id )
|
||||||
|
{
|
||||||
|
ReadTicketValue(*sp, param_id, value, meta);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
log << log1 << "Ticket: skipped incorrect parameter: " << param_id << " (not defined in the config)" << logend;
|
log << log1 << "Ticket: skipped incorrect parameter: " << param_id << " (not defined in the config)" << logend;
|
||||||
}
|
}
|
||||||
|
@ -528,23 +541,23 @@ void TicketInfo::ReadTicketParam(long param_id, const PostFile & value, pt::Spac
|
||||||
|
|
||||||
bool TicketInfo::DeleteTicketFile(Ticket & ticket, long file_id, pt::Space & meta)
|
bool TicketInfo::DeleteTicketFile(Ticket & ticket, long file_id, pt::Space & meta)
|
||||||
{
|
{
|
||||||
if( meta.child_spaces )
|
pt::Space::TableType * meta_child_table = meta.find_child_space_table();
|
||||||
{
|
|
||||||
for(size_t i=0 ; i<meta.child_spaces->size() ; ++i)
|
|
||||||
{
|
|
||||||
pt::Space & param = *(*meta.child_spaces)[i];
|
|
||||||
|
|
||||||
if( param.name && *param.name == L"param" && param.child_spaces )
|
if( meta_child_table )
|
||||||
{
|
{
|
||||||
for(size_t z=0 ; z<param.child_spaces->size() ; ++z)
|
for(pt::Space * param : *meta_child_table)
|
||||||
{
|
{
|
||||||
pt::Space & file = *(*param.child_spaces)[z];
|
pt::Space::TableType * param_child_table = param->find_child_space_table();
|
||||||
|
|
||||||
if( file.name && *file.name == L"file" )
|
if( param_child_table && param->is_child_space_name(L"param") )
|
||||||
{
|
{
|
||||||
if( file.to_long(L"itemid") == file_id )
|
for(size_t z=0 ; z < param_child_table->size() ; ++z)
|
||||||
{
|
{
|
||||||
param.remove_child_space(z);
|
pt::Space * file = (*param_child_table)[z];
|
||||||
|
|
||||||
|
if( file->is_child_space_name(L"file") && file->to_long(L"itemid") == file_id )
|
||||||
|
{
|
||||||
|
param->remove_child_space(z);
|
||||||
|
|
||||||
// !! IMPROVE ME
|
// !! IMPROVE ME
|
||||||
// temporarily we delete the file here
|
// temporarily we delete the file here
|
||||||
|
@ -558,7 +571,6 @@ bool TicketInfo::DeleteTicketFile(Ticket & ticket, long file_id, pt::Space & met
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,18 +75,18 @@ void copy_space(const std::vector<Ezc::Var> & params, std::vector<std::wstring>
|
||||||
|
|
||||||
pt::Space * find_space(const std::vector<Ezc::Var> & params, pt::Space & space, size_t level = 0)
|
pt::Space * find_space(const std::vector<Ezc::Var> & params, pt::Space & space, size_t level = 0)
|
||||||
{
|
{
|
||||||
if( level + 1 < params.size() && space.child_spaces )
|
pt::Space::TableType * child_table = space.find_child_space_table();
|
||||||
{
|
|
||||||
for(size_t i=0 ; i<space.child_spaces->size() ; ++i)
|
|
||||||
{
|
|
||||||
pt::Space & child = *(*space.child_spaces)[i];
|
|
||||||
|
|
||||||
if( child.name && *child.name == params[level].str )
|
if( level + 1 < params.size() && child_table )
|
||||||
return find_space(params, child, level+1);
|
{
|
||||||
|
for(pt::Space * child : *child_table)
|
||||||
|
{
|
||||||
|
if( child->is_child_space_name(params[level].str.c_str()) )
|
||||||
|
return find_space(params, *child, level+1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// there is no such a space
|
// there is no such a space
|
||||||
return 0;
|
return nullptr;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue