/** * Retrieve an array of spotlights matching a press id. * @param $pressId int * @return array Array containing matching Spotlights */ function getByPressId($pressId, $rangeInfo = null) { $result = $this->retrieveRange('SELECT * FROM spotlights WHERE press_id = ? ORDER BY spotlight_id DESC', array((int) $pressId), $rangeInfo); $spotlightFactory = new DAOResultFactory($result, $this, '_fromRow'); $returner = array(); // Avoid spotlights without items. while ($spotlight = $spotlightFactory->next()) { $spotlightItem = $spotlight->getSpotlightItem(); if ($spotlightItem) { $returner[$spotlight->getId()] = $spotlight; } } return $returner; }
/** * Populate the sub-filters (if any) for the * given parent filter. * @param $parentFilter PersistableFilter */ function _populateSubFilters(&$parentFilter) { if (!is_a($parentFilter, 'CompositeFilter')) { // Nothing to do. Only composite filters // can have sub-filters. return; } // Retrieve the sub-filters from the database. $parentFilterId = $parentFilter->getId(); $result =& $this->retrieve('SELECT * FROM filters WHERE parent_filter_id = ? ORDER BY seq', $parentFilterId); $daoResultFactory = new DAOResultFactory($result, $this, '_fromRow', array('filter_id')); // Add sub-filters. while (!$daoResultFactory->eof()) { // Retrieve the sub filter. // NB: This recursively loads sub-filters // of this filter via _fromRow(). $subFilter =& $daoResultFactory->next(); // Add the sub-filter to the filter list // of its parent filter. $parentFilter->addFilter($subFilter); unset($subFilter); } }
/** * Remove all user group assignments in a given context * @param int $contextId * @param int $userId */ function deleteAssignmentsByContextId($contextId, $userId = null) { $params = array((int) $contextId); if ($userId) { $params[] = (int) $userId; } $result = $this->retrieve('SELECT uug.user_group_id, uug.user_id FROM user_groups ug JOIN user_user_groups uug ON ug.user_group_id = uug.user_group_id WHERE ug.context_id = ? ' . ($userId ? ' AND uug.user_id = ?' : ''), $params); $assignments = new DAOResultFactory($result, $this, '_fromRow'); while ($assignment = $assignments->next()) { $this->deleteByUserId($assignment->getUserId(), $assignment->getUserGroupId()); } }
/** * Displays the editor role selection page. */ function index($args, $request) { $this->validate(); $this->setupTemplate(EDITOR_SECTION_HOME); $templateMgr =& TemplateManager::getManager(); $journal =& $request->getJournal(); $journalId = $journal->getId(); $user =& $request->getUser(); $editorSubmissionDao =& DAORegistry::getDAO('EditorSubmissionDAO'); $sectionDao =& DAORegistry::getDAO('SectionDAO'); $sections =& $sectionDao->getSectionTitles($journal->getId()); $templateMgr->assign('sectionOptions', array(0 => AppLocale::Translate('editor.allSections')) + $sections); $templateMgr->assign('fieldOptions', $this->_getSearchFieldOptions()); $templateMgr->assign('dateFieldOptions', $this->_getDateFieldOptions()); // Bring in the print_issue_id function (FIXME?) import('classes.issue.IssueAction'); $issueAction = new IssueAction(); $templateMgr->register_function('print_issue_id', array($issueAction, 'smartyPrintIssueId')); // If a search was performed, get the necessary info. if (array_shift($args) == 'search') { $rangeInfo = $this->getRangeInfo('submissions'); // Get the user's search conditions, if any $searchField = $request->getUserVar('searchField'); $dateSearchField = $request->getUserVar('dateSearchField'); $searchMatch = $request->getUserVar('searchMatch'); $search = $request->getUserVar('search'); $sort = $request->getUserVar('sort'); $sort = isset($sort) ? $sort : 'id'; $sortDirection = $request->getUserVar('sortDirection'); $sortDirection = isset($sortDirection) && ($sortDirection == 'ASC' || $sortDirection == 'DESC') ? $sortDirection : 'ASC'; $fromDate = $request->getUserDateVar('dateFrom', 1, 1); if ($fromDate !== null) { $fromDate = date('Y-m-d H:i:s', $fromDate); } $toDate = $request->getUserDateVar('dateTo', 32, 12, null, 23, 59, 59); if ($toDate !== null) { $toDate = date('Y-m-d H:i:s', $toDate); } if ($sort == 'status') { $rawSubmissions =& $editorSubmissionDao->_getUnfilteredEditorSubmissions($journal->getId(), $request->getUserVar('section'), 0, $searchField, $searchMatch, $search, $dateSearchField, $fromDate, $toDate, null, null, $sort, $sortDirection); $submissions = new DAOResultFactory($rawSubmissions, $editorSubmissionDao, '_returnEditorSubmissionFromRow'); // Sort all submissions by status, which is too complex to do in the DB $submissionsArray = $submissions->toArray(); $compare = create_function('$s1, $s2', 'return strcmp($s1->getSubmissionStatus(), $s2->getSubmissionStatus());'); usort($submissionsArray, $compare); if ($sortDirection == 'DESC') { $submissionsArray = array_reverse($submissionsArray); } // Convert submission array back to an ItemIterator class import('lib.pkp.classes.core.ArrayItemIterator'); $submissions =& ArrayItemIterator::fromRangeInfo($submissionsArray, $rangeInfo); } else { $rawSubmissions =& $editorSubmissionDao->_getUnfilteredEditorSubmissions($journal->getId(), $request->getUserVar('section'), 0, $searchField, $searchMatch, $search, $dateSearchField, $fromDate, $toDate, null, $rangeInfo, $sort, $sortDirection); $submissions = new DAOResultFactory($rawSubmissions, $editorSubmissionDao, '_returnEditorSubmissionFromRow'); } // If only result is returned from a search, fast-forward to it if ($search && $submissions && $submissions->getCount() == 1) { $submission =& $submissions->next(); $request->redirect(null, null, 'submission', array($submission->getId())); } $templateMgr->assign_by_ref('submissions', $submissions); $templateMgr->assign('section', $request->getUserVar('section')); // Set search parameters foreach ($this->_getSearchFormDuplicateParameters() as $param) { $templateMgr->assign($param, $request->getUserVar($param)); } $templateMgr->assign('dateFrom', $fromDate); $templateMgr->assign('dateTo', $toDate); $templateMgr->assign('displayResults', true); $templateMgr->assign('sort', $sort); $templateMgr->assign('sortDirection', $sortDirection); } $submissionsCount =& $editorSubmissionDao->getEditorSubmissionsCount($journal->getId()); $templateMgr->assign('submissionsCount', $submissionsCount); $templateMgr->assign('helpTopicId', 'editorial.editorsRole'); $templateMgr->display('editor/index.tpl'); }