[ Index ]

Source Code Reference for V1.00

title

Body

[close]

/modules/reports/reports/ -> tasklogs.php (source)

   1  <?php /* $Id: tasklogs.php 137 2008-04-04 16:12:02Z pedroix $ $URL: https://web2project.svn.sourceforge.net/svnroot/web2project/trunk/modules/reports/reports/tasklogs.php $ */
   2  if (!defined('W2P_BASE_DIR')) {
   3      die('You should not access this file directly.');
   4  }
   5  
   6  /**

   7   * Generates a report of the task logs for given dates

   8   */
   9  //error_reporting( E_ALL );

  10  global $AppUI, $cal_sdf;
  11  $AppUI->loadCalendarJS();
  12  
  13  $perms = &$AppUI->acl();
  14  if (!$perms->checkModule('task_log', 'view')) {
  15      $AppUI->redirect('m=public&a=access_denied');
  16  }
  17  $do_report = w2PgetParam($_GET, 'do_report', 0);
  18  $log_all = w2PgetParam($_GET, 'log_all', 0);
  19  $log_pdf = w2PgetParam($_GET, 'log_pdf', 0);
  20  $log_ignore = w2PgetParam($_GET, 'log_ignore', 0);
  21  $log_userfilter = w2PgetParam($_GET, 'log_userfilter', '0');
  22  
  23  $log_start_date = w2PgetParam($_GET, 'log_start_date', 0);
  24  $log_end_date = w2PgetParam($_GET, 'log_end_date', 0);
  25  
  26  // create Date objects from the datetime fields

  27  $start_date = intval($log_start_date) ? new CDate($log_start_date) : new CDate();
  28  $end_date = intval($log_end_date) ? new CDate($log_end_date) : new CDate();
  29  
  30  if (!$log_start_date) {
  31      $start_date->subtractSpan(new Date_Span('14,0,0,0'));
  32  }
  33  $end_date->setTime(23, 59, 59);
  34  
  35  // Lets check cost codes

  36  $q = new DBQuery;
  37  $q->addTable('billingcode');
  38  $q->addQuery('billingcode_id, billingcode_name');
  39  
  40  $task_log_costcodes[0] = $AppUI->_('None');
  41  $rows = $q->loadList();
  42  echo db_error();
  43  $nums = 0;
  44  if ($rows) {
  45      $nums = count($rows);
  46  }
  47  foreach ($rows as $row) {
  48      $task_log_costcodes[$row['billingcode_id']] = $row['billingcode_name'];
  49  }
  50  
  51  ?>
  52  <script language="javascript">
  53  function setDate( frm_name, f_date ) {
  54      fld_date = eval( 'document.' + frm_name + '.' + f_date );
  55      fld_real_date = eval( 'document.' + frm_name + '.' + 'log_' + f_date );
  56      if (fld_date.value.length>0) {
  57        if ((parseDate(fld_date.value))==null) {
  58              alert('The Date/Time you typed does not match your prefered format, please retype.');
  59              fld_real_date.value = '';
  60              fld_date.style.backgroundColor = 'red';
  61          } else {
  62              fld_real_date.value = formatDate(parseDate(fld_date.value), 'yyyyMMdd');
  63              fld_date.value = formatDate(parseDate(fld_date.value), '<?php echo $cal_sdf ?>');
  64              fld_date.style.backgroundColor = '';
  65            }
  66      } else {
  67            fld_real_date.value = '';
  68      }
  69  }
  70  </script>
  71  
  72  <form name="editFrm" action="" method="GET">
  73  <input type="hidden" name="m" value="reports" />
  74  <input type="hidden" name="company_id" value="<?php echo $company_id; ?>" />
  75  <input type="hidden" name="project_id" value="<?php echo $project_id; ?>" />
  76  <input type="hidden" name="report_type" value="<?php echo $report_type; ?>" />
  77  <?php
  78  if (function_exists('styleRenderBoxTop')) {
  79      echo styleRenderBoxTop();
  80  }
  81  ?>
  82  <table cellspacing="0" cellpadding="4" border="0" width="100%" class="std">
  83  <tr>
  84      <td align="right" nowrap="nowrap"><?php echo $AppUI->_('For period'); ?>:</td>
  85      <td nowrap="nowrap">
  86          <input type="hidden" name="log_start_date" id="log_start_date" value="<?php echo $start_date ? $start_date->format(FMT_TIMESTAMP_DATE) : ''; ?>" />
  87          <input type="text" name="start_date" id="start_date" onchange="setDate('editFrm', 'start_date');" value="<?php echo $start_date ? $start_date->format($df) : ''; ?>" class="text" />
  88          <a href="javascript: void(0);" onclick="return showCalendar('start_date', '<?php echo $df ?>', 'editFrm', null, true)">
  89              <img src="<?php echo w2PfindImage('calendar.gif'); ?>" width="24" height="12" alt="<?php echo $AppUI->_('Calendar'); ?>" border="0" />
  90          </a>
  91      </td>
  92      <td align="right" nowrap="nowrap"><?php echo $AppUI->_('to'); ?></td>
  93      <td nowrap="nowrap">
  94          <input type="hidden" name="log_end_date" id="log_end_date" value="<?php echo $end_date ? $end_date->format(FMT_TIMESTAMP_DATE) : ''; ?>" />
  95          <input type="text" name="end_date" id="end_date" onchange="setDate('editFrm', 'end_date');" value="<?php echo $end_date ? $end_date->format($df) : ''; ?>" class="text" />
  96          <a href="javascript: void(0);" onclick="return showCalendar('end_date', '<?php echo $df ?>', 'editFrm', null, true)">
  97              <img src="<?php echo w2PfindImage('calendar.gif'); ?>" width="24" height="12" alt="<?php echo $AppUI->_('Calendar'); ?>" border="0" />
  98          </a>
  99      </td>
 100  
 101      <td nowrap="nowrap">
 102          <?php echo $AppUI->_('User'); ?>:
 103          <select name="log_userfilter" class="text" style="width: 200px">
 104    
 105                  <?php
 106  if ($log_userfilter == 0)
 107      echo '<option value="0" selected="selected">' . $AppUI->_('All users');
 108  else
 109      echo '<option value="0">All users';
 110  
 111  if (($log_userfilter_users = w2PgetUsersList())) {
 112      foreach ($log_userfilter_users as $row) {
 113          $selected = '';
 114          if ($log_userfilter == $row['user_id']) {
 115              $selected = ' selected="selected"';
 116          }
 117          echo '<option value="' . $row['user_id'] . '"' . $selected . '>' . $row['contact_first_name'] . ' ' . $row['contact_last_name'];
 118      }
 119  }
 120  
 121  ?>
 122  
 123          </select>
 124      </td>
 125  
 126      <td nowrap="nowrap">
 127          <input type="checkbox" name="log_all" <?php if ($log_all)
 128      echo "checked" ?> />
 129          <?php echo $AppUI->_('Log All'); ?>
 130      </td>
 131  
 132      <td nowrap="nowrap">
 133          <input type="checkbox" name="log_pdf" <?php if ($log_pdf)
 134      echo "checked" ?> />
 135          <?php echo $AppUI->_('Make PDF'); ?>
 136      </td>
 137  
 138      <td nowrap="nowrap">
 139          <input type="checkbox" name="log_ignore" />
 140          <?php echo $AppUI->_('Ignore 0 hours'); ?>
 141      </td>
 142  
 143      <td align="right" width="50%" nowrap="nowrap">
 144          <input class="button" type="submit" name="do_report" value="<?php echo $AppUI->_('submit'); ?>" />
 145      </td>
 146  </tr>
 147  </table>
 148  </form>
 149  
 150  <?php
 151  if ($do_report) {
 152  
 153      if (function_exists('styleRenderBoxBottom')) {
 154          echo styleRenderBoxBottom();
 155      }
 156      echo '<br />';
 157      if (function_exists('styleRenderBoxTop')) {
 158          echo styleRenderBoxTop();
 159      }
 160      echo '<table cellspacing="0" cellpadding="4" border="0" width="100%" class="std">
 161      <tr>
 162          <td>';
 163  
 164      $q = new DBQuery;
 165      $q->addTable('task_log', 't');
 166      $q->addQuery('t.*, CONCAT_WS(\' \',contact_first_name,contact_last_name) AS creator, billingcode_value, ROUND((billingcode_value * t.task_log_hours), 2) AS amount, c.company_name, project_name, ts.task_name');
 167  
 168      $q->addJoin('tasks', 'ts', 'ts.task_id = t.task_log_task');
 169      $q->addJoin('projects', '', 'projects.project_id = ts.task_project');
 170      $q->addJoin('users', 'u', 'user_id = task_log_creator');
 171      $q->addJoin('contacts', '', 'user_contact = contact_id');
 172      $q->addJoin('companies', 'c', 'c.company_id = projects.project_company');
 173      $q->addJoin('billingcode', '', 'billingcode_id = task_log_costcode');
 174  
 175      $q->addJoin('project_departments', '', 'project_departments.project_id = projects.project_id');
 176      $q->addJoin('departments', '', 'department_id = dept_id');
 177  
 178      $q->addWhere('task_log_task > 0');
 179  
 180      if ($project_id) {
 181          $q->addWhere('projects.project_id = ' . (int)$project_id);
 182      }
 183      if ($company_id) {
 184          $q->addWhere('c.company_id = ' . (int)$company_id);
 185      }
 186  
 187      if (!$log_all) {
 188          $q->addWhere('task_log_date >= \'' . $start_date->format(FMT_DATETIME_MYSQL) . '\'');
 189          $q->addWhere('task_log_date <= \'' . $end_date->format(FMT_DATETIME_MYSQL) . '\'');
 190      }
 191      if ($log_ignore) {
 192          $q->addWhere('task_log_hours > 0');
 193      }
 194      if ($log_userfilter) {
 195          $q->addWhere('task_log_creator = ' . (int)$log_userfilter);
 196      }
 197  
 198      $proj = &new CProject;
 199      $allowedProjects = $proj->getAllowedSQL($AppUI->user_id, 'task_project');
 200      if (count($allowedProjects)) {
 201          $q->addWhere(implode(' AND ', $allowedProjects));
 202      }
 203  
 204      $q->addOrder('creator');
 205      $q->addOrder('company_name');
 206      $q->addOrder('project_name');
 207      $q->addOrder('task_log_date');
 208  
 209      $logs = $q->loadList();
 210      echo db_error();
 211  ?>
 212      <table cellspacing="1" cellpadding="4" border="0" class="tbl">
 213      <tr>
 214          <th><?php echo $AppUI->_('Creator'); ?></th>
 215          <th><?php echo $AppUI->_('Company'); ?></th>
 216          <th><?php echo $AppUI->_('Project'); ?></th>
 217          <th><?php echo $AppUI->_('Task'); ?></th>
 218          <th><?php echo $AppUI->_('Date'); ?></th>
 219          <th><?php echo $AppUI->_('Description'); ?></th>
 220          <th><?php echo $AppUI->_('Cost Code'); ?></th>
 221          <th><?php echo $AppUI->_('Hours'); ?></th>
 222      </tr>
 223  <?php
 224      $hours = 0.00;
 225      $tamount = 0.00;
 226      $pdfdata = array();
 227  
 228      foreach ($logs as $log) {
 229          $date = new CDate($log['task_log_date']);
 230          $hours += $log['task_log_hours'];
 231          $tamount += $log['amount'];
 232  
 233          $pdfdata[] = array($log['creator'], $log['company_name'], $log['project_name'], $log['task_name'], $date->format($df), $log['task_log_description'], $task_log_costcodes[$log['task_log_costcode']], sprintf("%.2f", $log['task_log_hours']), );
 234  ?>
 235      <tr>
 236          <td><?php echo $log['creator']; ?></td>
 237          <td><?php echo $log['company_name']; ?></td>
 238          <td><?php echo $log['project_name']; ?></td>
 239          <td><?php echo $log['task_name']; ?></td>
 240          <td><?php echo $date->format($df); ?></td>
 241          <td><?php
 242          // dylan_cuthbert: auto-transation system in-progress, leave these lines for time-being

 243          $transbrk = "\n[translation]\n";
 244          $descrip = str_replace("\n", '<br />', $log['task_log_description']);
 245          $tranpos = strpos($descrip, str_replace("\n", '<br />', $transbrk));
 246          if ($tranpos === false)
 247              echo $descrip;
 248          else {
 249              $descrip = substr($descrip, 0, $tranpos);
 250              $tranpos = strpos($log['task_log_description'], $transbrk);
 251              $transla = substr($log['task_log_description'], $tranpos + strlen($transbrk));
 252              $transla = trim(str_replace("'", '"', $transla));
 253              echo $descrip . '<div style="font-weight: bold; text-align: right"><a title="' . $transla . '" class="hilite">[' . $AppUI->_('translation') . ']</a></div>';
 254          }
 255          // dylan_cuthbert; auto-translation end

 256  
 257  ?></td>
 258          <td><?php echo $task_log_costcodes[$log['task_log_costcode']]; ?></td>
 259          <td align="right"><?php printf('%.2f', $log['task_log_hours']); ?></td>
 260      </tr>
 261  <?php
 262      }
 263      $pdfdata[] = array('', '', '', '', '', '', $AppUI->_('Totals') . ':', sprintf('%.2f', $hours), );
 264  ?>
 265      <tr>
 266          <td align="right" colspan="7"><?php echo $AppUI->_('Report Totals'); ?>:</td>
 267          <td align="right"><?php printf('%.2f', $hours); ?></td>
 268      </tr>
 269      </table>
 270  <?php
 271      if ($log_pdf) {
 272          // make the PDF file

 273          if ($project_id) {
 274              $q = new DBQuery;
 275              $q->addTable('projects');
 276              $q->addQuery('project_name');
 277              $q->addWhere('project_id=' . (int)$project_id);
 278              $pname = 'Project: ' . $q->loadResult();
 279          } else {
 280              $pname = 'All Companies and All Projects';
 281          }
 282          echo db_error();
 283  
 284          if ($company_id) {
 285              $q = new DBQuery;
 286              $q->addTable('companies');
 287              $q->addQuery('company_name');
 288              $q->addWhere('company_id=' . (int)$company_id);
 289              $cname = 'Company: ' . $q->loadResult();
 290          } else {
 291              $cname = 'All Companies and All Projects';
 292          }
 293          echo db_error();
 294  
 295          if ($log_userfilter) {
 296              $q = new DBQuery;
 297              $q->addTable('contacts');
 298              $q->addQuery('CONCAT(contact_first_name, \' \', contact_last_name)');
 299              $q->addJoin('users', '', 'user_contact = contact_id', 'inner');
 300              $q->addWhere('user_id =' . (int)$log_userfilter);
 301              $uname = 'User: ' . $q->loadResult();
 302          } else {
 303              $uname = 'All Users';
 304          }
 305  
 306          $font_dir = w2PgetConfig('root_dir') . '/lib/ezpdf/fonts';
 307          $temp_dir = w2PgetConfig('root_dir') . '/files/temp';
 308          $base_url = w2PgetConfig('base_url');
 309          require ($AppUI->getLibraryClass('ezpdf/class.ezpdf'));
 310  
 311          $pdf = &new Cezpdf();
 312          $pdf->ezSetCmMargins(1, 2, 1.5, 1.5);
 313          $pdf->selectFont($font_dir . '/Helvetica.afm');
 314  
 315          $pdf->ezText(w2PgetConfig('company_name'), 12);
 316          // $pdf->ezText( w2PgetConfig( 'company_name' ).' :: '.w2PgetConfig( 'page_title' ), 12 );

 317  
 318          $date = new CDate();
 319          $pdf->ezText("\n" . $date->format($df), 8);
 320  
 321          $pdf->selectFont($font_dir . '/Helvetica-Bold.afm');
 322          $pdf->ezText("\n" . $AppUI->_('Task Log Report'), 12);
 323  
 324          if ($company_id) {
 325              $pdf->ezText($cname, 10);
 326          } else {
 327              $pdf->ezText($pname, 10);
 328          }
 329  
 330          $pdf->ezText($uname, 10);
 331  
 332          if ($log_all) {
 333              $pdf->ezText('All Task Log entries', 9);
 334          } else {
 335              $pdf->ezText('Task Log entries from ' . $start_date->format($df) . ' to ' . $end_date->format($df), 9);
 336          }
 337          $pdf->ezText("\n\n");
 338  
 339          $title = 'Task Logs';
 340  
 341          $pdfheaders = array($AppUI->_('Creator', UI_OUTPUT_JS), $AppUI->_('Company', UI_OUTPUT_JS), $AppUI->_('Project', UI_OUTPUT_JS), $AppUI->_('Task', UI_OUTPUT_JS), $AppUI->_('Date', UI_OUTPUT_JS), $AppUI->_('Description', UI_OUTPUT_JS), $AppUI->_('CCode', UI_OUTPUT_JS), $AppUI->_('Hours', UI_OUTPUT_JS), );
 342  
 343          $options = array('showLines' => 1, 'fontSize' => 7, 'rowGap' => 1, 'colGap' => 1, 'xPos' => 50, 'xOrientation' => 'right', 'width' => '500', 'cols' => array(0 => array('justification' => 'left', 'width' => 50), 1 => array('justification' => 'left', 'width' => 60), 2 => array('justification' => 'left', 'width' => 60), 3 => array('justification' => 'left', 'width' => 60), 4 => array('justification' => 'center', 'width' => 40), 5 => array('justification' => 'left', 'width' => 170), 6 => array('justification' => 'left', 'width' => 30), 7 => array('justification' => 'right', 'width' => 30), ));
 344  
 345          $pdf->ezTable($pdfdata, $pdfheaders, $title, $options);
 346  
 347          if ($fp = fopen($temp_dir . '/temp' . $AppUI->user_id . '.pdf', 'wb')) {
 348              fwrite($fp, $pdf->ezOutput());
 349              fclose($fp);
 350              echo "<a href=\"$base_url/files/temp/temp$AppUI->user_id.pdf\" target=\"pdf\">";
 351              echo $AppUI->_('View PDF File');
 352              echo '</a>';
 353          } else {
 354              echo 'Could not open file to save PDF.  ';
 355              if (!is_writable($temp_dir)) {
 356                  'The files/temp directory is not writable.  Check your file system permissions.';
 357              }
 358          }
 359      }
 360      echo '</td>
 361  </tr>
 362  </table>';
 363  }
 364  ?>


Generated: Thu Jan 8 03:00:03 2009 Cross-referenced by PHPXref 0.7