Split data_entry right into track_time and track_expenses.
[timetracker.git] / WEB-INF / lib / ttImportHelper.class.php
index da4176c..002dac2 100644 (file)
@@ -36,6 +36,7 @@ import('ttClientHelper');
 import('ttCustomFieldHelper');
 import('ttFavReportHelper');
 import('ttExpenseHelper');
+import('ttRoleHelper');
 
 // ttImportHelper - this class is used to import team data from a file.
 class ttImportHelper {
@@ -52,6 +53,7 @@ class ttImportHelper {
   // The following arrays are maps between entity ids in the file versus the database.
   // In the file they are sequential (1,2,3...) while in the database the entities have different ids.
   var $userMap       = array(); // User ids.
+  var $roleMap       = array(); // Role ids.
   var $projectMap    = array(); // Project ids.
   var $taskMap       = array(); // Task ids.
   var $clientMap     = array(); // Client ids.
@@ -83,7 +85,8 @@ class ttImportHelper {
       || $name == 'INVOICE_HEADER'
       || $name == 'USER_PROJECT_BIND'
       || $name == 'EXPENSE_ITEM'
-      || $name == 'FAV_REPORT') {
+      || $name == 'FAV_REPORT'
+      || $name == 'ROLE') {
       $this->currentElement = $attrs;
     }
     $this->currentTag = $name;
@@ -126,11 +129,11 @@ class ttImportHelper {
           'project_required' => $this->teamData['PROJECT_REQUIRED'],
           'task_required' => $this->teamData['TASK_REQUIRED'],
           'record_type' => $this->teamData['RECORD_TYPE'],
-          'uncompleted_indicators' => $this->teamData['UNCOMPLETED_INDICATORS'],
           'bcc_email' => $this->teamData['BCC_EMAIL'],
           'plugins' => $this->teamData['PLUGINS'],
           'lock_spec' => $this->teamData['LOCK_SPEC'],
-          'workday_hours' => $this->teamData['WORKDAY_HOURS']));
+          'workday_minutes' => $this->teamData['WORKDAY_MINUTES'],
+          'config' => $this->teamData['CONFIG']));
         if ($team_id) {
           $this->team_id = $team_id;
           foreach ($this->users as $key=>$user_item) {
@@ -216,7 +219,7 @@ class ttImportHelper {
     }
 
     if ($name == 'MONTHLY_QUOTA' && $this->canImport) {
-      $this->insertMonthlyQuota($this->team_id, $this->currentElement['YEAR'], $this->currentElement['MONTH'], $this->currentElement['QUOTA']);
+      $this->insertMonthlyQuota($this->team_id, $this->currentElement['YEAR'], $this->currentElement['MONTH'], $this->currentElement['MINUTES']);
     }
 
     if ($name == 'LOG_ITEM' && $this->canImport) {
@@ -310,6 +313,23 @@ class ttImportHelper {
         'group_by' => $this->currentElement['GROUP_BY'],
         'chtotalsonly' => (int) $this->currentElement['SHOW_TOTALS_ONLY']));
     }
+
+    if ($name == 'ROLE' && $this->canImport) {
+      $this->roleMap[$this->currentElement['ID']] = ttRoleHelper::insert(array(
+        'team_id' => $this->team_id,
+        'name' => $this->currentElement['NAME'],
+        'rank' => $this->currentElement['RANK'],
+        'rights' => $this->currentElement['RIGHTS'],
+        'status' => $this->currentElement['STATUS']));
+
+      // Update role_id for tt_users to a mapped value.
+      // We did not do it during user insertion because roleMap was not ready then.
+      // TODO: write setMappedRole function.
+      /*
+        if ($this->currentElement['ID'] != $this->roleMap[$this->currentElement['ID']])
+          ttRoleHelper::setMappedRole($this->team_id, $this->currentElement['ID'], $this->roleMap[$this->currentElement['ID']]);
+       */
+    }
     $this->currentTag = '';
   }
 
@@ -410,9 +430,9 @@ class ttImportHelper {
   }
 
   // insertMonthlyQuota - a helper function to insert a monthly quota.
-  private function insertMonthlyQuota($team_id, $year, $month, $quota) {
+  private function insertMonthlyQuota($team_id, $year, $month, $minutes) {
     $mdb2 = getConnection();
-    $sql = "INSERT INTO tt_monthly_quotas (team_id, year, month, quota) values ($team_id, $year, $month, $quota)";
+    $sql = "INSERT INTO tt_monthly_quotas (team_id, year, month, minutes) values ($team_id, $year, $month, $minutes)";
     $affected = $mdb2->exec($sql);
     return (!is_a($affected, 'PEAR_Error'));
   }