import('ttReportHelper');
// Access checks.
-if (!(ttAccessAllowed('view_own_reports') || ttAccessAllowed('view_reports'))) {
+if (!(ttAccessAllowed('view_own_reports') || ttAccessAllowed('view_reports') || ttAccessAllowed('view_all_reports') || ttAccessAllowed('view_client_reports'))) {
header('Location: access_denied.php');
exit();
}
// Use custom fields plugin if it is enabled.
if ($user->isPluginEnabled('cf')) {
require_once('plugins/CustomFields.class.php');
- $custom_fields = new CustomFields($user->group_id);
+ $custom_fields = new CustomFields();
}
// Report settings are stored in session bean before we get here.
// Obtain items.
$options = ttReportHelper::getReportOptions($bean);
if ($totals_only)
- $subtotals = ttReportHelper::getSubtotals($bean, $options);
+ $subtotals = ttReportHelper::getSubtotals($options);
else
$items = ttReportHelper::getItems($options);
print "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
print "<rows>\n";
- $group_by = $bean->getAttribute('group_by');
if ($totals_only) {
- // Totals only report. Print subtotals.
+ // Totals only report.
+ $group_by_tag = ttReportHelper::makeGroupByXmlTag($options);
+
+ // Print subtotals.
foreach ($subtotals as $subtotal) {
print "<row>\n";
- print "\t<".$group_by."><![CDATA[".$subtotal['name']."]]></".$group_by.">\n";
+ print "\t<".$group_by_tag."><![CDATA[".$subtotal['name']."]]></".$group_by_tag.">\n";
if ($bean->getAttribute('chduration')) {
$val = $subtotal['time'];
- if($val && defined('EXPORT_DECIMAL_DURATION') && isTrue(EXPORT_DECIMAL_DURATION))
+ if($val && isTrue('EXPORT_DECIMAL_DURATION'))
$val = time_to_decimal($val);
print "\t<duration><![CDATA[".$val."]]></duration>\n";
}
if ($bean->getAttribute('chfinish')) print "\t<finish><![CDATA[".$item['finish']."]]></finish>\n";
if ($bean->getAttribute('chduration')) {
$duration = $item['duration'];
- if($duration && defined('EXPORT_DECIMAL_DURATION') && isTrue(EXPORT_DECIMAL_DURATION))
+ if($duration && isTrue('EXPORT_DECIMAL_DURATION'))
$duration = time_to_decimal($duration);
print "\t<duration><![CDATA[".$duration."]]></duration>\n";
}
print $item['expense'];
print "]]></cost>\n";
}
+ if ($bean->getAttribute('chapproved')) print "\t<approved><![CDATA[".$item['approved']."]]></approved>\n";
if ($bean->getAttribute('chpaid')) print "\t<paid><![CDATA[".$item['paid']."]]></paid>\n";
if ($bean->getAttribute('chip')) {
$ip = $item['modified'] ? $item['modified_ip'].' '.$item['modified'] : $item['created_ip'].' '.$item['created'];
print "\t<ip><![CDATA[".$ip."]]></ip>\n";
}
if ($bean->getAttribute('chinvoice')) print "\t<invoice><![CDATA[".$item['invoice']."]]></invoice>\n";
+ if ($bean->getAttribute('chtimesheet')) print "\t<timesheet><![CDATA[".$item['timesheet_name']."]]></timesheet>\n";
print "</row>\n";
}
$bom = chr(239).chr(187).chr(191); // 0xEF 0xBB 0xBF in the beginning of the file is UTF8 BOM.
print $bom; // Without this Excel does not display UTF8 characters properly.
- $group_by = $bean->getAttribute('group_by');
if ($totals_only) {
// Totals only report.
-
- // Determine group_by header.
- if ('cf_1' == $group_by)
- $group_by_header = $custom_fields->fields[0]['label'];
- else {
- $key = 'label.'.$group_by;
- $group_by_header = $i18n->get($key);
- }
+ $group_by_header = ttReportHelper::makeGroupByHeader($options);
// Print headers.
print '"'.$group_by_header.'"';
print '"'.$subtotal['name'].'"';
if ($bean->getAttribute('chduration')) {
$val = $subtotal['time'];
- if($val && defined('EXPORT_DECIMAL_DURATION') && isTrue(EXPORT_DECIMAL_DURATION))
+ if($val && isTrue('EXPORT_DECIMAL_DURATION'))
$val = time_to_decimal($val);
print ',"'.$val.'"';
}
if ($bean->getAttribute('chunits')) print ',"'.$i18n->get('label.work_units_short').'"';
if ($bean->getAttribute('chnote')) print ',"'.$i18n->get('label.note').'"';
if ($bean->getAttribute('chcost')) print ',"'.$i18n->get('label.cost').'"';
+ if ($bean->getAttribute('chapproved')) print ',"'.$i18n->get('label.approved').'"';
if ($bean->getAttribute('chpaid')) print ',"'.$i18n->get('label.paid').'"';
if ($bean->getAttribute('chip')) print ',"'.$i18n->get('label.ip').'"';
if ($bean->getAttribute('chinvoice')) print ',"'.$i18n->get('label.invoice').'"';
+ if ($bean->getAttribute('chtimesheet')) print ',"'.$i18n->get('label.timesheet').'"';
print "\n";
// Print items.
if ($bean->getAttribute('chfinish')) print ',"'.$item['finish'].'"';
if ($bean->getAttribute('chduration')) {
$val = $item['duration'];
- if($val && defined('EXPORT_DECIMAL_DURATION') && isTrue(EXPORT_DECIMAL_DURATION))
+ if($val && isTrue('EXPORT_DECIMAL_DURATION'))
$val = time_to_decimal($val);
print ',"'.$val.'"';
}
else
print ',"'.$item['expense'].'"';
}
+ if ($bean->getAttribute('chapproved')) print ',"'.$item['approved'].'"';
if ($bean->getAttribute('chpaid')) print ',"'.$item['paid'].'"';
if ($bean->getAttribute('chip')) {
$ip = $item['modified'] ? $item['modified_ip'].' '.$item['modified'] : $item['created_ip'].' '.$item['created'];
print ',"'.$ip.'"';
}
if ($bean->getAttribute('chinvoice')) print ',"'.str_replace('"','""',$item['invoice']).'"';
+ if ($bean->getAttribute('chtimesheet')) print ',"'.str_replace('"','""',$item['timesheet_name']).'"';
print "\n";
}
}