public static function parseCredit(FileCreditModel $objModel, array $arrPids = array(), $objModule) { global $objPage; $objTemplate = new \FrontendTemplate(!$objModule->creditsGroupBy ? 'filecredit_default' : 'filecredit_grouped'); // skip if no files model exists if (($objFilesModel = $objModel->getRelated('uuid')) === null) { return null; } // cleanup: remove credits where copyright was deleted if ($objFilesModel->copyright == '') { FileCreditPageModel::deleteByPid($objModel->id); $objModel->delete(); return null; } // skip if credit occurs on no page if (($objCreditPages = FileCreditPageModel::findPublishedByPids(array($objModel->id))) === null) { return null; } while ($objCreditPages->next()) { $arrCredit = $objCreditPages->row(); // not a child of current root page if (!empty($arrPids) && !in_array($arrCredit['page'], $arrPids)) { continue; } if ($arrCredit['url'] == '' && ($objTarget = \PageModel::findByPk($arrCredit['page'])) !== null) { $arrCredit['url'] = \Controller::generateFrontendUrl($objTarget->row()); } $arrPages[] = $arrCredit; } if ($arrPages === null) { return null; } $objTemplate->setData($objModel->row()); $objTemplate->fileData = $objFilesModel->row(); static::addCopyrightToTemplate($objTemplate, $objFilesModel, $objModule); $objTemplate->link = $GLOBALS['TL_LANG']['MSC']['creditLinkText']; $objTemplate->pagesLabel = $GLOBALS['TL_LANG']['MSC']['creditPagesLabel']; $objTemplate->path = $objFilesModel->path; $objTemplate->pages = $arrPages; $objTemplate->pageCount = count($arrPages); // colorbox support if ($objPage->outputFormat == 'xhtml') { $strLightboxId = 'lightbox'; } else { $strLightboxId = 'lightbox[' . substr(md5($objTemplate->getName() . '_' . $objFilesModel->id), 0, 6) . ']'; } $objTemplate->attribute = $strLightboxId ? ($objPage->outputFormat == 'html5' ? ' data-gallery="#gallery-' . $objModule->id . '" data-lightbox="' : ' rel="') . $strLightboxId . '"' : ''; $objTemplate->addImage = false; // Add an image if (!is_file(TL_ROOT . '/' . $objModel->path)) { $arrData = array('singleSRC' => $objFilesModel->path, 'doNotIndex' => true); $size = deserialize($objModule->imgSize); if ($size[0] > 0 || $size[1] > 0 || is_numeric($size[2])) { $arrData['size'] = $objModule->imgSize; } \Controller::addImageToTemplate($objTemplate, $arrData); } return array('pages' => $arrPages, 'order' => static::getSortValue($objModule->creditsSortBy, $objTemplate), 'group' => static::getGroupValue($objModule->creditsGroupBy, $objTemplate), 'output' => $objTemplate->parse()); }
protected static function addCurrentPage(FileCreditModel $objCredit) { global $objPage; $strRequestRaw = preg_replace('/\\?.*/', '', \Environment::get('request')); // strip get parameter from url $strRequest = rtrim($strRequestRaw, "/"); $strAlias = \Controller::generateFrontendUrl($objPage->row()); // only accept pages or auto_item pages if (!Validator::isRequestAlias($strRequest, $strAlias)) { // cleanup pages that no longer exist $objModel = FileCreditPageModel::findByPidAndPageAndUrl($objCredit->id, $objPage->id, $strRequestRaw); if ($objModel !== null) { while ($objModel->next()) { $objModel->delete(); } } return false; } $objModel = FileCreditPageModel::findByPidAndPageAndUrl($objCredit->id, $objPage->id, $strRequest); // do not index page again if ($objModel !== null) { return false; } $arrSet = array('pid' => $objCredit->id, 'tstamp' => time(), 'page' => $objPage->id, 'url' => $strRequest, 'protected' => $objPage->protected ? '1' : '', 'groups' => $objPage->groups, 'language' => $objPage->language, 'published' => 1, 'start' => '', 'stop' => ''); // create: add new page for the credit $objModel = new FileCreditPageModel(); $objModel->setRow($arrSet); $objModel->save(); return true; }