diff --git a/include/ajax.users.php b/include/ajax.users.php index 3b6da01791ff0c3b3d88c42c46ef15aea95b6091..05b4094e4fd0449bb2c144e686ffa9276799d425 100644 --- a/include/ajax.users.php +++ b/include/ajax.users.php @@ -295,5 +295,55 @@ class UsersAjaxAPI extends AjaxController { } return $this->json_encode($users); } + + function updateOrg($id, $orgId = 0) { + global $thisstaff; + + if (!$thisstaff) + Http::response(403, 'Login Required'); + elseif (!($user = User::lookup($id)) + || !($account=$user->getAccount())) + Http::response(404, 'Unknown user account'); + + $info['title'] = 'Organization for '.$user->getName(); + $info['action'] = '#users/'.$user->getId().'/org'; + $info['onselect'] = 'ajax.php/users/'.$user->getId().'/org'; + + if ($_POST) { + if ($_POST['orgid']) { //Existing org. + if (!($org = Organization::lookup($_POST['orgid']))) + $info['error'] = 'Unknown organization selected'; + } else { //Creating new org. + $form = OrganizationForm::getDefaultForm()->getForm($_POST); + if (!($org = Organization::fromForm($form))) + $info['error'] = 'Unable to create organization - try again!'; + } + + if ($org && $account->setOrganization($org)) + Http::response(201, $org->to_json()); + + $info['error'] = 'Unable to user account - try again!'; + + } elseif ($orgId) + $org = Organization::lookup($orgId); + elseif ($org = $account->getOrganization()) { + $info['title'] = $org->getName(); + $info['action'] = $info['onselect'] = ''; + $tmpl = 'org.tmpl.php'; + } + + if ($org && $account->getOrgId() && $org->getId() != $account->getOrgId()) + $info['warning'] = 'Are you sure you want to change user\'s organization?'; + + $tmpl = $tmpl ?: 'org-lookup.tmpl.php'; + + ob_start(); + include(STAFFINC_DIR . "templates/$tmpl"); + $resp = ob_get_contents(); + ob_end_clean(); + + return $resp; + } + } ?> diff --git a/scp/ajax.php b/scp/ajax.php index 4cc09c57abaa5d9333d27cd52090bf6319728b24..37cbff3521b0944bd137475396b007620d3dc794 100644 --- a/scp/ajax.php +++ b/scp/ajax.php @@ -82,6 +82,8 @@ $dispatcher = patterns('', url_delete('^/(?P<id>\d+)/delete$', 'delete'), url_get('^/(?P<id>\d+)/manage(?:/(?P<target>\w+))?$', 'manage'), url_post('^/(?P<id>\d+)/manage(?:/(?P<target>\w+))?$', 'manage'), + url_get('^/(?P<id>\d+)/org(?:/(?P<orgid>\d+))?$', 'updateOrg'), + url_post('^/(?P<id>\d+)/org$', 'updateOrg'), url_get('^/staff$', 'searchStaff') )), url('^/tickets/', patterns('ajax.tickets.php:TicketsAjaxAPI',