$password = 'md5('.$password.')';
$email = isset($fields['email']) ? $fields['email'] : '';
$group_id = (int) $fields['group_id'];
+ $org_id = (int) $fields['org_id'];
$rate = str_replace(',', '.', isset($fields['rate']) ? $fields['rate'] : 0);
if($rate == '')
$rate = 0;
$created_ip_v = ', '.$mdb2->quote($_SERVER['REMOTE_ADDR']);
$created_by_v = ', '.$mdb2->quote($user->id);
- $sql = "insert into tt_users (name, login, password, group_id, role_id, client_id, rate, email, created, created_ip, created_by $status_f) values (".
+ $sql = "insert into tt_users (name, login, password, group_id, org_id, role_id, client_id, rate, email, created, created_ip, created_by $status_f) values (".
$mdb2->quote($fields['name']).", ".$mdb2->quote($fields['login']).
- ", $password, $group_id, ".$mdb2->quote($fields['role_id']).", ".$mdb2->quote($fields['client_id']).", $rate, ".$mdb2->quote($email).", now() $created_ip_v $created_by_v $status_v)";
+ ", $password, $group_id, $org_id, ".$mdb2->quote($fields['role_id']).", ".$mdb2->quote($fields['client_id']).", $rate, ".$mdb2->quote($email).", now() $created_ip_v $created_by_v $status_v)";
$affected = $mdb2->exec($sql);
// Now deal with project assignment.
else
$p['rate'] = str_replace(',', '.', $p['rate']);
- $sql = "insert into tt_user_project_binds (project_id, user_id, rate, status) values(".$p['id'].",".$last_id.",".$p['rate'].", 1)";
+ $sql = "insert into tt_user_project_binds (project_id, user_id, group_id, org_id, rate, status)".
+ " values(".$p['id'].", $last_id, $group_id, $org_id, ".$p['rate'].", 1)";
$affected = $mdb2->exec($sql);
}
}
if (is_a($affected, 'PEAR_Error')) die ($affected->getMessage());
} else {
// Record does not exist. Insert it.
- ttUserHelper::insertBind($user_id, $project_id, $rate, 1);
- }
+ ttUserHelper::insertBind(array(
+ 'user_id' => $user_id,
+ 'project_id' => $project_id,
+ 'group_id' => $user->getGroup(),
+ 'org_id' => $user->org_id,
+ 'rate' => $rate,
+ 'status' => ACTIVE));
+ }
}
}
}
return true;
}
- // markDeleted - marks user and its associated things as deleted.
- static function markDeleted($user_id) {
- $mdb2 = getConnection();
- global $user;
-
- // Preliminary checks. Only managers, co-managers, and admin can do this.
- if (!$user->canManageTeam() && !$user->isAdmin())
- return false;
-
- // Tho logic is different depending on who is doing the operation.
- // Co-manager and admin - mark user deleted.
- // Manager - mark user deleted. If manager is the only account in group, mark group items deleted.
-
- // admin part.
- if ($user->isAdmin()) {
- // Mark user binds as deleted.
- $sql = "update tt_user_project_binds set status = NULL where user_id = $user_id";
- $affected = $mdb2->exec($sql);
- if (is_a($affected, 'PEAR_Error'))
- return false;
-
- // Mark favorite reports as deleted.
- $sql = "update tt_fav_reports set status = NULL where user_id = $user_id";
- $affected = $mdb2->exec($sql);
- if (is_a($affected, 'PEAR_Error'))
- return false;
-
- // Mark user as deleted.
- $sql = "update tt_users set status = NULL where id = $user_id";
- $affected = $mdb2->exec($sql);
- if (is_a($affected, 'PEAR_Error'))
- return false;
-
- } elseif ($user->isCoManager()) {
- // Mark user binds as deleted.
- $sql = "update tt_user_project_binds set status = NULL where user_id = $user_id";
- $affected = $mdb2->exec($sql);
- if (is_a($affected, 'PEAR_Error'))
- return false;
-
- // Mark favorite reports as deleted.
- $sql = "update tt_fav_reports set status = NULL where user_id = $user_id";
- $affected = $mdb2->exec($sql);
- if (is_a($affected, 'PEAR_Error'))
- return false;
-
- // Mark user as deleted.
- $sql = "update tt_users set status = NULL where id = $user_id and group_id = ".$user->group_id;
- $affected = $mdb2->exec($sql);
- if (is_a($affected, 'PEAR_Error'))
- return false;
-
- } elseif ($user->isManager()) {
- $user_count = ttTeamHelper::getUserCount($user->group_id);
-
- // Marking deleted a manager with active users is not allowed.
- if (($user_id == $user->id) && ($user_count > 1))
- return false;
-
- if (1 == $user_count) {
- // Mark tasks deleted.
- if (!ttTeamHelper::markTasksDeleted($user->group_id))
- return false;
-
- // Mark projects deleted.
- $sql = "update tt_projects set status = NULL where group_id = $user->group_id";
- $affected = $mdb2->exec($sql);
- if (is_a($affected, 'PEAR_Error'))
- return false;
-
- // Mark clients deleted.
- $sql = "update tt_clients set status = NULL where group_id = $user->group_id";
- $affected = $mdb2->exec($sql);
- if (is_a($affected, 'PEAR_Error'))
- return false;
-
- // Mark custom fields deleted.
- $sql = "update tt_custom_fields set status = NULL where group_id = $user->group_id";
- $affected = $mdb2->exec($sql);
- if (is_a($affected, 'PEAR_Error'))
- return false;
-
- // Mark group deleted.
- $sql = "update tt_groups set status = NULL where id = $user->group_id";
- $affected = $mdb2->exec($sql);
- if (is_a($affected, 'PEAR_Error'))
- return false;
- }
-
- // Mark user binds as deleted.
- $sql = "update tt_user_project_binds set status = NULL where user_id = $user_id";
- $affected = $mdb2->exec($sql);
- if (is_a($affected, 'PEAR_Error'))
- return false;
-
- // Mark favorite reports as deleted.
- $sql = "update tt_fav_reports set status = NULL where user_id = $user_id";
- $affected = $mdb2->exec($sql);
- if (is_a($affected, 'PEAR_Error'))
- return false;
-
- // Mark user as deleted.
- $sql = "update tt_users set status = NULL where id = $user_id and group_id = ".$user->group_id;
- $affected = $mdb2->exec($sql);
- if (is_a($affected, 'PEAR_Error'))
- return false;
- }
-
- return true;
- }
-
// The delete function permanently deletes a user and all associated data.
static function delete($user_id) {
$mdb2 = getConnection();
}
// insertBind - inserts a user to project bind into tt_user_project_binds table.
- static function insertBind($user_id, $project_id, $rate, $status) {
+ static function insertBind($fields) {
+ global $user;
$mdb2 = getConnection();
- $sql = "insert into tt_user_project_binds (user_id, project_id, rate, status)
- values($user_id, $project_id, ".$mdb2->quote($rate).", $status)";
+ // This may be used during import. Use the following until we have import refactored.
+ $group_id = $fields['group_id'] ? (int) $fields['group_id'] : $user->getGroup();
+ $org_id = $fields['org_id'] ? (int) $fields['org_id'] : $user->org_id;
+
+ $user_id = (int) $fields['user_id'];
+ $project_id = (int) $fields['project_id'];
+ $rate = $mdb2->quote($fields['rate']);
+ $status = $mdb2->quote($fields['status']);
+
+ $sql = "insert into tt_user_project_binds (user_id, project_id, group_id, org_id, rate, status)".
+ " values($user_id, $project_id, $group_id, $org_id, $rate, $status)";
$affected = $mdb2->exec($sql);
return (!is_a($affected, 'PEAR_Error'));
}