public function addWorkflowProgress(Workflow $wf) { Loader::model('workflow/progress/categories/user'); $uwp = UserWorkflowProgress::add($wf, $this); $r = $uwp->start(); $uwp->setWorkflowProgressResponseObject($r); return $uwp; }
public function get($itemsToGet = 0, $offset = 0) { $_users = DatabaseItemList::get($itemsToGet, $offset); $users = array(); foreach ($_users as $row) { $u = UserInfo::getByID($row['uID']); $wp = UserWorkflowProgress::getByID($row['wpID']); $users[] = new ProgressUser($u, $wp); } return $users; }
public static function getList($requestedUID, $filters = array('wpIsCompleted' => 0), $sortBy = 'wpDateAdded asc') { $db = Loader::db(); $filter = ''; foreach ($filters as $key => $value) { $filter .= ' and ' . $key . ' = ' . $value . ' '; } $filter .= ' order by ' . $sortBy; $r = $db->Execute('SELECT wp.wpID FROM UserWorkflowProgress uwp INNER JOIN WorkflowProgress wp ON wp.wpID = uwp.wpID WHERE uwp.uID = ? ' . $filter, $requestedUID); $list = array(); while ($row = $r->FetchRow()) { $wp = UserProgress::getByID($row['wpID']); if (is_object($wp)) { $list[] = $wp; } } return $list; }
public function view($uID = false, $status = false) { if ($uID) { $this->setupUser($uID); } $this->requireAsset('selectize'); $ui = $this->user; if (is_object($ui)) { $dh = $this->app->make('helper/date'); /* @var $dh \Concrete\Core\Localization\Service\Date */ $this->requireAsset('core/app/editable-fields'); $uo = $this->user->getUserObject(); $groups = []; foreach ($uo->getUserGroupObjects() as $g) { $obj = new stdClass(); $obj->gDisplayName = $g->getGroupDisplayName(); $obj->gID = $g->getGroupID(); $obj->gDateTimeEntered = $dh->formatDateTime($g->getGroupDateTimeEntered($this->user)); $groups[] = $obj; } $this->set('groupsJSON', json_encode($groups)); $attributes = UserAttributeKey::getList(true); $this->set('attributes', $attributes); $this->set('pageTitle', t('View/Edit %s', $this->user->getUserDisplayName())); $workflowRequestActions = []; $workflowList = UserWorkflowProgress::getList($uo->getUserID()); $this->set('workflowList', $workflowList); if (count($workflowList) > 0) { foreach ($workflowList as $wp) { $wr = $wp->getWorkflowRequestObject(); $workflowRequestActions[] = $wr->getRequestAction(); } } $this->set('workflowRequestActions', $workflowRequestActions); $headerMenu = new \Concrete\Controller\Element\Dashboard\Users\Header($this->user); $headerMenu->set('canActivateUser', $this->canActivateUser); $headerMenu->set('canSignInAsUser', $this->canSignInAsUser); $headerMenu->set('canDeleteUser', $this->canDeleteUser); $headerMenu->set('workflowRequestActions', $workflowRequestActions); $this->set('headerMenu', $headerMenu); switch ($status) { case 'activated': if (in_array("activate", $workflowRequestActions)) { $this->set('message', t('User activation workflow initiated.')); } else { $this->set('success', t('User activated successfully.')); } break; case 'deactivated': if (in_array("deactivate", $workflowRequestActions)) { $this->set('message', t('User deactivation workflow initiated.')); } else { $this->set('message', t('User deactivated successfully.')); } break; case 'created': $this->set('message', t('User created successfully.')); break; case 'email_validated': $this->set('message', t('Email marked as valid.')); break; case 'workflow_canceled': $this->set('message', t('Workflow request is canceled.')); break; case 'deleted': // TODO show username // $this->set('message', t('User %s has been deleted.', $ui->getUserDisplayName())); if (in_array('delete', $workflowRequestActions)) { $this->set('message', t('User deletion workflow initiated.')); } else { $this->set('message', t('User has been deleted.')); } break; } } else { switch ($status) { case 'deleted': $this->set('message', t('User has been deleted.')); break; } $header = new Header(); $header->setShowAddButton(true); $this->set('headerMenu', $header); $search = $this->app->make('Concrete\\Controller\\Search\\Users'); $result = $search->getCurrentSearchObject(); if (is_object($result)) { $this->set('result', $result); } } }
<?php defined('C5_EXECUTE') or die("Access Denied."); $u = User::getByUserID($_REQUEST['uID']); $obj = new stdClass(); $obj->tableData = t('None'); use Concrete\Core\Workflow\Progress\Response as WorkflowProgressResponse; use Concrete\Core\Workflow\Progress\Progress as WorkflowProgress; use Concrete\Core\Workflow\Progress\UserProgress as UserWorkflowProgress; use Concrete\Core\Workflow\Progress\Category as WorkflowProgressCategory; if ($_REQUEST['task'] == 'save_user_workflow_progress' && Loader::helper("validation/token")->validate('save_user_workflow_progress')) { $wp = UserWorkflowProgress::getByID($_REQUEST['wpID']); if (is_object($wp)) { $wf = $wp->getWorkflowObject(); $form = Loader::helper('form'); $obj->wpID = $wp->getWorkflowProgressID(); if ($wf->canApproveWorkflowProgressObject($wp)) { $task = WorkflowProgress::getRequestedTask(); if ($task) { $r = $wp->runTask($task, $_POST); if ($r instanceof WorkflowProgressResponse && $r->getWorkflowProgressResponseURL() != '') { $obj->redirect = $r->getWorkflowProgressResponseURL(); $obj->message = $r->message; } else { $obj->redirect = BASE_URL . View::url('/dashboard/users/search') . '?uID=' . $_REQUEST['uID']; } $category = WorkflowProgressCategory::getByID($wp->getWorkflowProgressCategoryID()); $list = $category->getPendingWorkflowProgressList(); $items = $list->get(); // start a new buffer ob_start();