A few more replacements for canManageTeam.
[timetracker.git] / WEB-INF / lib / ttImportHelper.class.php
index 753dc16..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) {
@@ -273,6 +276,7 @@ class ttImportHelper {
         'name' => $this->currentElement['NAME'],
         'cost' => $this->currentElement['COST'],
         'invoice_id' => $this->invoiceMap[$this->currentElement['INVOICE_ID']],
+        'paid' => $this->currentElement['PAID'],
         'status' => $this->currentElement['STATUS']));
     }
 
@@ -295,18 +299,36 @@ class ttImportHelper {
         'period' => $this->currentElement['PERIOD'],
         'from' => $this->currentElement['PERIOD_START'],
         'to' => $this->currentElement['PERIOD_END'],
-        'chclient' => $this->currentElement['SHOW_CLIENT'],
-        'chinvoice' => $this->currentElement['SHOW_INVOICE'],
-        'chproject' => $this->currentElement['SHOW_PROJECT'],
-        'chstart' => $this->currentElement['SHOW_START'],
-        'chduration' => $this->currentElement['SHOW_DURATION'],
-        'chcost' => $this->currentElement['SHOW_COST'],
-        'chtask' => $this->currentElement['SHOW_TASK'],
-        'chfinish' => $this->currentElement['SHOW_END'],
-        'chnote' => $this->currentElement['SHOW_NOTE'],
-        'chcf_1' => $this->currentElement['SHOW_CUSTOM_FIELD_1'],
+        'chclient' => (int) $this->currentElement['SHOW_CLIENT'],
+        'chinvoice' => (int) $this->currentElement['SHOW_INVOICE'],
+        'chpaid' => (int) $this->currentElement['SHOW_PAID'],
+        'chproject' => (int) $this->currentElement['SHOW_PROJECT'],
+        'chstart' => (int) $this->currentElement['SHOW_START'],
+        'chduration' => (int) $this->currentElement['SHOW_DURATION'],
+        'chcost' => (int) $this->currentElement['SHOW_COST'],
+        'chtask' => (int) $this->currentElement['SHOW_TASK'],
+        'chfinish' => (int) $this->currentElement['SHOW_END'],
+        'chnote' => (int) $this->currentElement['SHOW_NOTE'],
+        'chcf_1' => (int) $this->currentElement['SHOW_CUSTOM_FIELD_1'],
         'group_by' => $this->currentElement['GROUP_BY'],
-        'chtotalsonly' => $this->currentElement['SHOW_TOTALS_ONLY']));
+        '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 = '';
   }
@@ -408,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'));
   }