/** * Get or set team members * * ## OPTIONS * * <list|add-member|remove-member|change-role> * : i.e. add or remove * * [--site=<site>] * : Site to check * * [--member=<email>] * : Email of the member to add. Member will receive an invite * * [--role=<role>] * : Role for the new member to act as * * @subcommand team */ public function team($args, $assoc_args) { $action = array_shift($args) ?: 'list'; $site = SiteFactory::instance(Input::sitename($assoc_args)); $data = array(); $team = $site->getSiteUserMemberships(); switch ($action) { case 'add-member': if ((bool) $site->getFeature('change_management')) { $role = Input::role($assoc_args); } else { $role = 'team_member'; } $workflow = $team->add($assoc_args['member'], $role); $this->workflowOutput($workflow); break; case 'remove-member': $user = $team->findByEmail($assoc_args['member']); $workflow = $user->remove($assoc_args['member']); $this->workflowOutput($workflow); break; case 'change-role': if ((bool) $site->getFeature('change_management')) { $role = Input::role($assoc_args); $user = $team->findByEmail($assoc_args['member']); $workflow = $user->setRole($role); $this->workflowOutput($workflow); } else { Logger::redline('This site does not have the authority to conduct this operation.'); } break; case 'list': default: $user_memberships = $team->all(); foreach ($user_memberships as $uuid => $user_membership) { $user = $user_membership->getUser(); $data[] = array('First' => $user->profile->firstname, 'Last' => $user->profile->lastname, 'Email' => $user->email, 'UUID' => $user->id); } ksort($data); break; } if (!empty($data)) { $this->handleDisplay($data); } }
/** * Outputs basic workflow success/failure messages * * @param [Workflow] $workflow Workflow to output message about * @return [void] */ protected function workflowOutput($workflow) { if ($workflow->get('result') == 'succeeded') { Logger::coloredOutput('%2<K>' . $workflow->get('active_description') . '</K>'); } else { $final_task = $workflow->get('final_task'); Logger::redline($final_task->reason); } }
/** * Get or set team members * * ## OPTIONS * * <list|add-member|remove-member|change-role> * : i.e. add or remove * * [--site=<site>] * : Site to check * * [--member=<email>] * : Email of the member to add. Member will receive an invite * * [--role=<role>] * : Role for the new member to act as * * @subcommand team */ public function team($args, $assoc_args) { $action = array_shift($args) ?: 'list'; $site = $this->sites->get(Input::sitename($assoc_args)); $data = array(); $team = $site->user_memberships; switch ($action) { case 'add-member': if ((bool) $site->getFeature('change_management')) { $role = Input::role($assoc_args); } else { $role = 'team_member'; } $workflow = $team->addMember($assoc_args['member'], $role); $this->workflowOutput($workflow); break; case 'remove-member': $user = $team->get($assoc_args['member']); if ($user != null) { $workflow = $user->removeMember($assoc_args['member']); $this->workflowOutput($workflow); } else { Terminus::error('"' . $assoc_args['member'] . '" is not a valid member.'); } break; case 'change-role': if ((bool) $site->getFeature('change_management')) { $role = Input::role($assoc_args); $user = $team->get($assoc_args['member']); if ($user != null) { $workflow = $user->setRole($role); $this->workflowOutput($workflow); } else { Terminus::error('"' . $assoc_args['member'] . '" is not a valid member.'); } } else { Logger::redline('This site does not have the authority to conduct this operation.'); } break; case 'list': default: $user_memberships = $team->all(); foreach ($user_memberships as $uuid => $user_membership) { $user = $user_membership->get('user'); $data[] = array('First' => $user->profile->firstname, 'Last' => $user->profile->lastname, 'Email' => $user->email, 'UUID' => $user->id); } ksort($data); break; } if (!empty($data)) { $this->outputter->outputRecordList($data); } }