/** * Do the edit form for a record. * * @param Content $content A content record * @param array $contentType The contenttype data * @param boolean $duplicate If TRUE create a duplicate record * * @return array */ public function action(Content $content, array $contentType, $duplicate) { $contentTypeSlug = $contentType['slug']; $new = $content->getId() === null ?: false; $oldStatus = $content->getStatus(); $allStatuses = ['published', 'held', 'draft', 'timed']; $allowedStatuses = []; foreach ($allStatuses as $status) { if ($this->users->isContentStatusTransitionAllowed($oldStatus, $status, $contentTypeSlug, $content->getId())) { $allowedStatuses[] = $status; } } // For duplicating a record, clear base field values. if ($duplicate) { $content->setId(''); $content->setSlug(''); $content->setDatecreated(''); $content->setDatepublish(''); $content->setDatedepublish(null); $content->setDatechanged(''); $content->setUsername(''); $content->setOwnerid(''); $this->loggerFlash->info(Trans::__('contenttypes.generic.duplicated-finalize', ['%contenttype%' => $contentTypeSlug])); } // Set the users and the current owner of this content. if ($new || $duplicate) { // For brand-new and duplicated items, the creator becomes the owner. $contentowner = $this->users->getCurrentUser(); } else { // For existing items, we'll just keep the current owner. $contentowner = $this->users->getUser($content->getOwnerid()); } // Test write access for uploadable fields. $contentType['fields'] = $this->setCanUpload($contentType['fields']); $templateFields = $content->getTemplatefields(); if ($templateFields && ($templateFieldsData = $templateFields->getContenttype()->getFields())) { $this->setCanUpload($templateFields->getContenttype()); } // Build context for Twig. $contextCan = ['upload' => $this->users->isAllowed('files:uploads'), 'publish' => $this->users->isAllowed('contenttype:' . $contentTypeSlug . ':publish:' . $content->getId()), 'depublish' => $this->users->isAllowed('contenttype:' . $contentTypeSlug . ':depublish:' . $content->getId()), 'change_ownership' => $this->users->isAllowed('contenttype:' . $contentTypeSlug . ':change-ownership:' . $content->getId())]; $contextHas = ['incoming_relations' => count($content->getRelation()->incoming($content)), 'relations' => isset($contentType['relations']), 'tabs' => $contentType['groups'] !== false, 'taxonomy' => isset($contentType['taxonomy']), 'templatefields' => empty($templateFieldsData) ? false : true]; $contextValues = ['datepublish' => $this->getPublishingDate($content->getDatepublish(), true), 'datedepublish' => $this->getPublishingDate($content->getDatedepublish())]; $context = ['contenttype' => $contentType, 'content' => $content, 'allowed_status' => $allowedStatuses, 'contentowner' => $contentowner, 'fields' => $this->config->fields->fields(), 'fieldtemplates' => $this->getTempateFieldTemplates($contentType, $content), 'fieldtypes' => $this->getUsedFieldtypes($contentType, $content, $contextHas), 'groups' => $this->createGroupTabs($contentType, $contextHas), 'can' => $contextCan, 'has' => $contextHas, 'values' => $contextValues, 'relations_list' => $this->getRelationsList($contentType)]; return $context; }
/** * Log out the currently logged in user. * * @return boolean */ public function revokeSession() { $this->flashLogger->info(Trans::__('You have been logged out.')); // Remove all auth tokens when logging off a user if ($sessionAuth = $this->session->get('authentication')) { $this->repositoryAuthtoken->deleteTokens($sessionAuth->getUser()->getUsername()); } $this->session->remove('authentication'); $this->session->migrate(true); return false; }
/** * Log out the currently logged in user. * * @return boolean */ public function revokeSession() { try { // Only show this flash if there are users in the system. // Not when we're about to get redirected to the "first users" screen. if ($this->repositoryUsers->hasUsers()) { $this->flashLogger->info(Trans::__('You have been logged out.')); } } catch (TableNotFoundException $e) { // If we have no table, then we definitely have no users } // Remove all auth tokens when logging off a user if ($sessionAuth = $this->session->get('authentication')) { $this->repositoryAuthtoken->deleteTokens($sessionAuth->getUser()->getUsername()); } $this->session->remove('authentication'); $this->session->migrate(true); return false; }