Improved export-import to include allow_ip and password_complexity.
authorNik Okuntseff <support@anuko.com>
Wed, 11 Apr 2018 12:57:39 +0000 (12:57 +0000)
committerNik Okuntseff <support@anuko.com>
Wed, 11 Apr 2018 12:57:39 +0000 (12:57 +0000)
WEB-INF/lib/ttExportHelper.class.php
WEB-INF/lib/ttImportHelper.class.php
WEB-INF/lib/ttTeamHelper.class.php
WEB-INF/templates/footer.tpl

index d969b44..ca202ad 100644 (file)
@@ -70,6 +70,8 @@ class ttExportHelper {
       "\" config=\"".$user->config.
       "\">\n");
     fwrite($file, "  <name><![CDATA[".$user->group."]]></name>\n");
+    fwrite($file, "  <allow_ip><![CDATA[".$user->allow_ip."]]></allow_ip>\n");
+    fwrite($file, "  <password_complexity><![CDATA[".$user->password_complexity."]]></password_complexity>\n");
     fwrite($file, "</group>\n");
 
     // Prepare role map.
index b7c024d..dfa3be5 100644 (file)
@@ -124,7 +124,7 @@ class ttImportHelper {
       // Now we can create a group.
       if ($this->canImport) {
         $this->top_role_id = ttRoleHelper::getRoleByRank(512, 0);
-        $group_id = ttTeamHelper::insert(array(
+        $group_id = $this->createGroup(array(
           'name' => $this->groupData['NAME'],
           'currency' => $this->groupData['CURRENCY'],
           'decimal_mark' => $this->groupData['DECIMAL_MARK'],
@@ -137,6 +137,8 @@ class ttImportHelper {
           'task_required' => $this->groupData['TASK_REQUIRED'],
           'record_type' => $this->groupData['RECORD_TYPE'],
           'bcc_email' => $this->groupData['BCC_EMAIL'],
+          'allow_ip' => $this->groupData['ALLOW_IP'],
+          'password_complexity' => $this->groupData['PASSWORD_COMPLEXITY'],
           'plugins' => $this->groupData['PLUGINS'],
           'lock_spec' => $this->groupData['LOCK_SPEC'],
           'workday_minutes' => $this->groupData['WORKDAY_MINUTES'],
@@ -343,7 +345,9 @@ class ttImportHelper {
       || $this->currentTag == 'LABEL'
       || $this->currentTag == 'VALUE'
       || $this->currentTag == 'COMMENT'
-      || $this->currentTag == 'ADDRESS') {
+      || $this->currentTag == 'ADDRESS'
+      || $this->currentTag == 'ALLOW_IP'
+      || $this->currentTag == 'PASSWORD_COMPLEXITY') {
       if (isset($this->currentElement[$this->currentTag]))
         $this->currentElement[$this->currentTag] .= trim($data);
       else
@@ -432,6 +436,46 @@ class ttImportHelper {
     return true;
   }
 
+  // createGroup function creates a new group.
+  private function createGroup($fields) {
+
+    global $user;
+    $mdb2 = getConnection();
+
+    $columns = '(name, currency, decimal_mark, lang, date_format, time_format, week_start, tracking_mode'.
+      ', project_required, task_required, record_type, bcc_email, allow_ip, password_complexity, plugins'.
+      ', lock_spec, workday_minutes, config, created, created_ip, created_by)';
+
+    $values = ' values ('.$mdb2->quote(trim($fields['name']));
+    $values .= ', '.$mdb2->quote(trim($fields['currency']));
+    $values .= ', '.$mdb2->quote($fields['decimal_mark']);
+    $values .= ', '.$mdb2->quote($fields['lang']);
+    $values .= ', '.$mdb2->quote($fields['date_format']);
+    $values .= ', '.$mdb2->quote($fields['time_format']);
+    $values .= ', '.(int)$fields['week_start'];
+    $values .= ', '.(int)$fields['tracking_mode'];
+    $values .= ', '.(int)$fields['project_required'];
+    $values .= ', '.(int)$fields['task_required'];
+    $values .= ', '.(int)$fields['record_type'];
+    $values .= ', '.$mdb2->quote($fields['bcc_email']);
+    $values .= ', '.$mdb2->quote($fields['allow_ip']);
+    $values .= ', '.$mdb2->quote($fields['password_complexity']);
+    $values .= ', '.$mdb2->quote($fields['plugins']);
+    $values .= ', '.$mdb2->quote($fields['lock_spec']);
+    $values .= ', '.(int)$fields['workday_minutes'];
+    $values .= ', '.$mdb2->quote($fields['config']);
+    $values .= ', now(), '.$mdb2->quote($_SERVER['REMOTE_ADDR']).', '.$mdb2->quote($user->id);
+    $values .= ')';
+
+    $sql = 'insert into tt_groups '.$columns.$values;
+    $affected = $mdb2->exec($sql);
+    if (!is_a($affected, 'PEAR_Error')) {
+      $group_id = $mdb2->lastInsertID('tt_groups', 'id');
+      return $group_id;
+    }
+    return false;
+  }
+
   // insertMonthlyQuota - a helper function to insert a monthly quota.
   private function insertMonthlyQuota($group_id, $year, $month, $minutes) {
     $mdb2 = getConnection();
index a8133b8..dfcdaaf 100644 (file)
@@ -673,106 +673,6 @@ class ttTeamHelper {
     return false;
   }
 
-  // The insert function creates a new group.
-  static function insert($fields) {
-
-    global $user;
-    $mdb2 = getConnection();
-
-    // Start with group name and currency.
-    $columns = 'name, currency';
-    $values = $mdb2->quote(trim($fields['name'])).', '.$mdb2->quote(trim($fields['currency']));
-
-    if ($fields['decimal_mark']) {
-      $columns .= ', decimal_mark';
-      $values .= ', '.$mdb2->quote($fields['decimal_mark']);
-    }
-
-    $lang = $fields['lang'];
-    if (!$lang) {
-      global $i18n;
-      $lang = $i18n->lang;
-    }
-    $columns .= ', lang';
-    $values .= ', '.$mdb2->quote($lang);
-
-    if ($fields['date_format'] || defined('DATE_FORMAT_DEFAULT')) {
-      $date_format = $fields['date_format'] ? $fields['date_format'] : DATE_FORMAT_DEFAULT;
-      $columns .= ', date_format';
-      $values .= ', '.$mdb2->quote($date_format);
-    }
-
-    if ($fields['time_format'] || defined('TIME_FORMAT_DEFAULT')) {
-      $time_format = $fields['time_format'] ? $fields['time_format'] : TIME_FORMAT_DEFAULT;
-      $columns .= ', time_format';
-      $values .= ', '.$mdb2->quote($time_format);
-    }
-
-    if ($fields['week_start'] || defined('WEEK_START_DEFAULT')) {
-      $week_start = $fields['week_start'] ? $fields['week_start'] : WEEK_START_DEFAULT;
-      $columns .= ', week_start';
-      $values .= ', '.(int)$week_start;
-    }
-
-    if ($fields['tracking_mode']) {
-      $columns .= ', tracking_mode';
-      $values .= ', '.(int)$fields['tracking_mode'];
-    }
-
-    if ($fields['project_required']) {
-      $columns .= ', project_required';
-      $values .= ', '.(int)$fields['project_required'];
-    }
-
-    if ($fields['task_required']) {
-      $columns .= ', task_required';
-      $values .= ', '.(int)$fields['task_required'];
-    }
-
-    if ($fields['record_type']) {
-      $columns .= ', record_type';
-      $values .= ', '.(int)$fields['record_type'];
-    }
-
-    if ($fields['bcc_email']) {
-      $columns .= ', bcc_email';
-      $values .= ', '.$mdb2->quote($fields['bcc_email']);
-    }
-
-    if ($fields['plugins']) {
-      $columns .= ', plugins';
-      $values .= ', '.$mdb2->quote($fields['plugins']);
-    }
-
-    if ($fields['lock_spec']) {
-      $columns .= ', lock_spec';
-      $values .= ', '.$mdb2->quote($fields['lock_spec']);
-    }
-
-    if ($fields['workday_minutes']) {
-      $columns .= ', workday_minutes';
-      $values .= ', '.(int)$fields['workday_minutes'];
-    }
-
-    if ($fields['config']) {
-      $columns .= ', config';
-      $values .= ', '.$mdb2->quote($fields['config']);
-    }
-
-    $columns .= ', created, created_ip, created_by';
-    $values .= ', now(), '.$mdb2->quote($_SERVER['REMOTE_ADDR']).', '.$mdb2->quote($user->id);
-
-    $sql = "insert into tt_groups ($columns) values($values)";
-    $affected = $mdb2->exec($sql);
-
-    if (!is_a($affected, 'PEAR_Error')) {
-      $group_id = $mdb2->lastInsertID('tt_groups', 'id');
-      return $group_id;
-    }
-
-    return false;
-  }
-
   // The getInactiveGroups is a maintenance function that returns an array of inactive group ids (max 100).
   static function getInactiveGroups() {
     $inactive_groups = array();
index e13d4f5..8eed912 100644 (file)
@@ -12,7 +12,7 @@
       <br>
       <table cellspacing="0" cellpadding="4" width="100%" border="0">
         <tr>
-          <td align="center">&nbsp;Anuko Time Tracker 1.17.87.4249 | Copyright &copy; <a href="https://www.anuko.com/lp/tt_3.htm" target="_blank">Anuko</a> |
+          <td align="center">&nbsp;Anuko Time Tracker 1.17.87.4250 | Copyright &copy; <a href="https://www.anuko.com/lp/tt_3.htm" target="_blank">Anuko</a> |
             <a href="https://www.anuko.com/lp/tt_4.htm" target="_blank">{$i18n.footer.credits}</a> |
             <a href="https://www.anuko.com/lp/tt_5.htm" target="_blank">{$i18n.footer.license}</a> |
             <a href="https://www.anuko.com/lp/tt_7.htm" target="_blank">{$i18n.footer.improve}</a>