function createWorkspace($ws_name, $parentWS_ids = null) { try { DB::beginWork(); $color = rand(0, 24); $project_data = array('name' => $ws_name, 'description' => '', 'show_description_in_overview' => false, 'color' => $color); $project = new Project(); $project->setFromAttributes($project_data); $project->save(); $permission_columns = ProjectUsers::getPermissionColumns(); $auto_assign_users = owner_company()->getAutoAssignUsers(); // We are getting the list of auto assign users. If current user is not in the list // add it. He's creating the project after all... if (is_array($auto_assign_users)) { $auto_assign_logged_user = false; foreach ($auto_assign_users as $user) { if ($user->getId() == logged_user()->getId()) { $auto_assign_logged_user = true; } } // if if (!$auto_assign_logged_user) { $auto_assign_users[] = logged_user(); } } else { $auto_assign_users[] = logged_user(); } // if $project->clearUsers(); foreach ($auto_assign_users as $user) { $project_user = new ProjectUser(); $project_user->setProjectId($project->getId()); $project_user->setUserId($user->getId()); if (is_array($permission_columns)) { foreach ($permission_columns as $permission) { $project_user->setColumnValue($permission, true); } } // if $project_user->save(); } // foreach $this->setParents($project, $parentWS_ids); $id_parent = $project->getPID($project->getDepth() - 1); $proj_id = $project->getId(); ImportLogger::instance()->log("Workspace created: {$proj_id} {$ws_name} [{$id_parent}]"); print "Workspace created: {$proj_id} {$ws_name} [{$id_parent}]\r\n"; DB::commit(); } catch (Exception $e) { print "ERROR: {$e}\r\n"; DB::rollback(); } return $proj_id; }