本文整理汇总了PHP中TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer::enableFields方法的典型用法代码示例。如果您正苦于以下问题:PHP ContentObjectRenderer::enableFields方法的具体用法?PHP ContentObjectRenderer::enableFields怎么用?PHP ContentObjectRenderer::enableFields使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer
的用法示例。
在下文中一共展示了ContentObjectRenderer::enableFields方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: getRecords
/**
* @param int $startPage
* @param array $basePages
* @param SitemapController $obj
*
* @return array
*/
public function getRecords($startPage, $basePages, SitemapController $obj)
{
$nodes = array();
foreach ($basePages as $uid) {
if ($this->currentLanguageUid) {
$fields = $this->cObject->enableFields('pages_language_overlay');
$overlay = $this->database->exec_SELECTgetSingleRow('uid', 'pages_language_overlay', ' pid=' . intval($uid) . ' AND sys_language_uid=' . $this->currentLanguageUid . $fields);
if (!is_array($overlay)) {
continue;
}
}
// Build URL
$url = $obj->getUriBuilder()->setTargetPageUid($uid)->build();
// can't generate a valid url
if (!strlen($url)) {
continue;
}
// Get Record
$record = BackendUtility::getRecord('pages', $uid);
// exclude Doctypes
if (in_array($record['doktype'], array(4))) {
continue;
}
// Check FE Access
if ($record['fe_group'] != 0) {
continue;
}
$rootLineList = $GLOBALS['TSFE']->sys_page->getRootLine($record['uid']);
$addToNode = true;
foreach ($rootLineList as $rootPage) {
if ($rootPage['extendToSubpages'] == 1 && $rootPage['fe_group'] != 0) {
$addToNode = false;
break;
}
}
if ($addToNode == false) {
continue;
}
// Build Node
$node = new Node();
$node->setLoc($url);
$node->setPriority($this->getPriority($startPage, $record));
$node->setChangefreq(SitemapDataService::mapTimeout2Period($record['cache_timeout']));
$node->setLastmod($this->getModifiedDate($record));
#$geo = new Geo();
#$geo->setFormat('kml');
#$node->setGeo($geo);
$nodes[] = $node;
}
return $nodes;
}
示例2: getChildren
/**
* fetches all available children for a certain grid container
*
* @param int $element : The uid of the grid container
* @param string $csvColumns : A list of available column IDs
*
* @return array $children: The child elements of this grid container
*/
public function getChildren($element = 0, $csvColumns = '')
{
if ($element && $csvColumns !== '') {
$where = '(tx_gridelements_container = ' . $element . $this->cObj->enableFields('tt_content') . ' AND colPos != -2
AND pid > 0
AND tx_gridelements_columns IN (' . $csvColumns . ')
AND sys_language_uid IN (-1,0)
)';
if ($GLOBALS['TSFE']->sys_language_content > 0) {
if ($GLOBALS['TSFE']->sys_language_contentOL) {
if (isset($this->cObj->data['_LOCALIZED_UID']) && $this->cObj->data['_LOCALIZED_UID'] !== 0) {
$element = (int) $this->cObj->data['_LOCALIZED_UID'];
}
if ($element) {
$where .= ' OR (
tx_gridelements_container = ' . $element . $this->cObj->enableFields('tt_content') . ' AND sys_language_uid IN (-1,' . $GLOBALS['TSFE']->sys_language_content . ')
AND l18n_parent = 0
)';
}
} else {
if ($element) {
$where .= ' OR (
tx_gridelements_container = ' . $element . $this->cObj->enableFields('tt_content') . ' AND sys_language_uid IN (-1,' . $GLOBALS['TSFE']->sys_language_content . ')
)';
}
}
}
$res = $this->getDatabaseConnection()->exec_SELECTquery('*', 'tt_content', $where, '', 'sorting ASC');
if (!$this->getDatabaseConnection()->sql_error()) {
$this->cObj->data['tx_gridelements_view_children'] = array();
while ($child = $this->getDatabaseConnection()->sql_fetch_assoc($res)) {
// Versioning preview:
$sorting = $child['sorting'];
$GLOBALS['TSFE']->sys_page->versionOL('tt_content', $child, true);
// Language overlay:
if (is_array($child)) {
$child['sorting'] = $sorting;
if ($GLOBALS['TSFE']->sys_language_contentOL) {
$child = $GLOBALS['TSFE']->sys_page->getRecordOverlay('tt_content', $child, $GLOBALS['TSFE']->sys_language_content, $GLOBALS['TSFE']->sys_language_contentOL);
}
if ($child !== false) {
$this->cObj->data['tx_gridelements_view_children'][] = $child;
unset($child);
}
}
}
$compareFunction = function ($child_a, $child_b) {
if ($child_a['sorting'] > $child_b['sorting']) {
return 1;
} elseif ($child_a['sorting'] === $child_b['sorting']) {
return 0;
} else {
return -1;
}
};
usort($this->cObj->data['tx_gridelements_view_children'], $compareFunction);
$this->getDatabaseConnection()->sql_free_result($res);
}
}
}
示例3: parseLanguageMenu
/**
* Sets all parameter for langMenu
*
* @return array
*/
protected function parseLanguageMenu()
{
$order = $this->arguments['order'] ? GeneralUtility::trimExplode(',', $this->arguments['order']) : '';
$labelOverwrite = $this->arguments['labelOverwrite'] ? GeneralUtility::trimExplode(',', $this->arguments['labelOverwrite']) : '';
$languageMenu = array();
$tempArray = array();
$tempArray[0] = array('label' => $this->arguments['defaultLanguageLabel'], 'flag' => $this->arguments['defaultIsoFlag']);
$select = 'uid, title, flag';
$from = 'sys_language';
$where = '1=1' . $this->cObj->enableFields('sys_language');
$sysLanguage = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows($select, $from, $where);
foreach ($sysLanguage as $value) {
$tempArray[$value['uid']] = array('label' => $value['title'], 'flag' => $value['flag']);
}
// reorders languageMenu
if (FALSE === empty($order)) {
foreach ($order as $value) {
$languageMenu[$value] = $tempArray[$value];
}
} else {
$languageMenu = $tempArray;
}
// overwrite of label
if (FALSE === empty($labelOverwrite)) {
$i = 0;
foreach ($languageMenu as $key => $value) {
$languageMenu[$key]['label'] = $labelOverwrite[$i];
$i++;
}
}
// Select all pages_language_overlay records on the current page. Each represents a possibility for a language.
$pageArray = array();
$table = 'pages_language_overlay';
$whereClause = 'pid=' . $this->getPageUid() . ' ';
$whereClause .= $GLOBALS['TSFE']->sys_page->enableFields($table);
$sysLang = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows('DISTINCT sys_language_uid', $table, $whereClause);
if (FALSE === empty($sysLang)) {
foreach ($sysLang as $val) {
$pageArray[$val['sys_language_uid']] = $val['sys_language_uid'];
}
}
foreach ($languageMenu as $key => $value) {
$current = $GLOBALS['TSFE']->sys_language_uid === (int) $key ? 1 : 0;
$inactive = $pageArray[$key] || (int) $key === $this->defaultLangUid ? 0 : 1;
$url = $this->getLanguageUrl($key, $inactive);
if (TRUE === empty($url)) {
$url = GeneralUtility::getIndpEnv('REQUEST_URI');
}
$languageMenu[$key]['current'] = $current;
$languageMenu[$key]['inactive'] = $inactive;
$languageMenu[$key]['url'] = $url;
$languageMenu[$key]['flagSrc'] = $this->getLanguageFlagSrc($value['flag']);
if (TRUE === (bool) $this->arguments['hideNotTranslated'] && TRUE === (bool) $inactive) {
unset($languageMenu[$key]);
}
}
return $languageMenu;
}
示例4: prepareMenuItemsForListMenu
/**
* Fetches all menuitems if special = list is set
*
* @param string $specialValue The value from special.value
* @return array
*/
protected function prepareMenuItemsForListMenu($specialValue)
{
$menuItems = array();
if ($specialValue == '') {
$specialValue = $this->id;
}
$skippedEnableFields = array();
if (!empty($this->mconf['showAccessRestrictedPages'])) {
$skippedEnableFields = array('fe_group' => 1);
}
/** @var RelationHandler $loadDB*/
$loadDB = GeneralUtility::makeInstance(RelationHandler::class);
$loadDB->setFetchAllFields(true);
$loadDB->start($specialValue, 'pages');
$loadDB->additionalWhere['pages'] = $this->parent_cObj->enableFields('pages', false, $skippedEnableFields);
$loadDB->getFromDB();
foreach ($loadDB->itemArray as $val) {
$MP = $this->tmpl->getFromMPmap($val['id']);
// Keep mount point?
$mount_info = $this->sys_page->getMountPointInfo($val['id']);
// There is a valid mount point.
if (is_array($mount_info) && $mount_info['overlay']) {
// Using "getPage" is OK since we need the check for enableFields
// AND for type 2 of mount pids we DO require a doktype < 200!
$mp_row = $this->sys_page->getPage($mount_info['mount_pid']);
if (!empty($mp_row)) {
$row = $mp_row;
$row['_MP_PARAM'] = $mount_info['MPvar'];
// Overlays should already have their full MPvars calculated
if ($mount_info['overlay']) {
$MP = $this->tmpl->getFromMPmap($mount_info['mount_pid']);
if ($MP) {
unset($row['_MP_PARAM']);
}
}
} else {
// If the mount point could not be fetched with respect to
// enableFields, unset the row so it does not become a part of the menu!
unset($row);
}
} else {
$row = $loadDB->results['pages'][$val['id']];
}
// Add versioning overlay for current page (to respect workspaces)
if (isset($row) && is_array($row)) {
$this->sys_page->versionOL('pages', $row, true);
}
// Add external MP params, then the row:
if (isset($row) && is_array($row)) {
if ($MP) {
$row['_MP_PARAM'] = $MP . ($row['_MP_PARAM'] ? ',' . $row['_MP_PARAM'] : '');
}
$menuItems[] = $this->sys_page->getPageOverlay($row);
}
}
return $menuItems;
}
示例5: getCloseTime
/**
* Gets closing time from a record
*
* @param string $table Table name
* @param int $uid UID of the record
* @param \TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer $cObj COBJECT
* @return int Closing timestamp
*/
function getCloseTime($table, $uid, &$cObj)
{
$result = 0;
$recs = $this->getDatabaseConnection()->exec_SELECTgetRows('disable_comments,comments_closetime', $table, 'uid=' . intval($uid) . $cObj->enableFields($table));
if (count($recs)) {
$result = $recs[0]['disable_comments'] ? 0 : ($recs[0]['comments_closetime'] ? $recs[0]['comments_closetime'] : PHP_INT_MAX);
}
return $result;
}
示例6: pi_getCategoryTableContents
/**
* Will select all records from the "category table", $table, and return them in an array.
*
* @param string $table The name of the category table to select from.
* @param int $pid The page from where to select the category records.
* @param string $whereClause Optional additional WHERE clauses put in the end of the query. DO NOT PUT IN GROUP BY, ORDER BY or LIMIT!
* @param string $groupBy Optional GROUP BY field(s), if none, supply blank string.
* @param string $orderBy Optional ORDER BY field(s), if none, supply blank string.
* @param string $limit Optional LIMIT value ([begin,]max), if none, supply blank string.
* @return array The array with the category records in.
*/
public function pi_getCategoryTableContents($table, $pid, $whereClause = '', $groupBy = '', $orderBy = '', $limit = '')
{
$res = $this->databaseConnection->exec_SELECTquery('*', $table, 'pid=' . (int) $pid . $this->cObj->enableFields($table) . ' ' . $whereClause, $groupBy, $orderBy, $limit);
$outArr = array();
while ($row = $this->databaseConnection->sql_fetch_assoc($res)) {
$outArr[$row['uid']] = $row;
}
$this->databaseConnection->sql_free_result($res);
return $outArr;
}
示例7: hasTranslation
/**
* Check if a translation of a page is available
* @param $pid \int Page id
* @param $languageUid \int Language uid
* @return bool
*/
protected function hasTranslation($pid, $languageUid)
{
$enableFieldsSql = $this->cObj->enableFields('pages_language_overlay');
$languageSql = ' pid=' . (int) $pid . ' AND `sys_language_uid` =' . (int) $languageUid . ' ';
$where = $languageSql . $enableFieldsSql;
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('COUNT(uid)', 'pages_language_overlay', $where);
$row = $GLOBALS['TYPO3_DB']->sql_fetch_row($res);
$GLOBALS['TYPO3_DB']->sql_free_result($res);
return $row[0] > 0;
}
示例8: hasTranslation
/**
* Check if a translation of a page is available
* @param $pid \int Page id
* @param $languageUid \int Language uid
* @return bool
*/
protected function hasTranslation($pid, $languageUid)
{
$enableFieldsSql = $this->contentObjectRenderer->enableFields('pages_language_overlay');
//$visibleSql = ' deleted=0 AND t3ver_state<=0 AND hidden=0 ';
//$startEndSql = ' AND (starttime<=' . time() . ' AND (endtime=0 OR endtime >=' . time() . ')) ';
$languageSql = ' pid=' . (int) $pid . ' AND `sys_language_uid` =' . (int) $languageUid . ' ';
$where = $languageSql . $enableFieldsSql;
//$visibleSql.$startEndSql;
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('COUNT(uid)', 'pages_language_overlay', $where);
$row = $GLOBALS['TYPO3_DB']->sql_fetch_row($res);
$GLOBALS['TYPO3_DB']->sql_free_result($res);
return $row[0] > 0;
}
示例9: makeCheckboxes
/**
* Userfunc called per TS to create categories check boxes
*
* @param string $content
* @param array $conf TS conf
*
* @return string
*/
public function makeCheckboxes($content, $conf)
{
$content = '';
$databaseConnection = $this->getDatabaseConnection();
$pid = $this->cObj->stdWrap($conf['pid'], $conf['pid.']);
if ($address_uid = GeneralUtility::_GP('rU')) {
$res = $databaseConnection->exec_SELECTquery('*', 'sys_dmail_ttaddress_category_mm', 'uid_local=' . intval($address_uid));
$subscribed_to = [];
while ($row = $databaseConnection->sql_fetch_assoc($res)) {
$subscribed_to[] = $row['uid_foreign'];
}
$subscribed_to_list = implode(',', $subscribed_to);
}
$res = $databaseConnection->exec_SELECTquery('*', 'sys_dmail_category', 'l18n_parent=0 AND pid=' . intval($pid) . $this->cObj->enableFields('sys_dmail_category'));
$i = 1;
while ($row = $databaseConnection->sql_fetch_assoc($res)) {
$checked = GeneralUtility::inList($subscribed_to_list, $row['uid']);
if ($theRow = $this->getTypoScriptFrontendController()->sys_page->getRecordOverlay('sys_dmail_category', $row, $this->getTypoScriptFrontendController()->sys_language_uid, $conf['hideNonTranslatedCategories'] ? 'hideNonTranslated' : '')) {
$content .= '<label for="option-' . $i . '">' . htmlspecialchars($theRow['category']) . '</label><input id="option-' . $i . '" type="checkbox" ' . ($checked ? 'checked' : '') . ' name="FE[tt_address][module_sys_dmail_category][' . $row['uid'] . ']" value="1" /><div class="clearall"></div>';
}
$i++;
}
return $content;
}
示例10: getManufacturerAsCategory
/**
* Adds the manufacturer to the category, as simulated category
*
* @param int $pid Page PID for the level
* @param int $uidPage UidPage for the level
* @param string $tableMm Relation Table
* @param string $tableSubMain Sub table
* @param string $tableSubMm Sub Table Relationship
* @param int $categoryUid Category ID
* @param int $mDepth Menu Depth
* @param string $path Path for fast resolving
*
* @return array|bool
*/
public function getManufacturerAsCategory($pid, $uidPage, $tableMm, $tableSubMain, $tableSubMm, $categoryUid, $mDepth, $path)
{
$database = $this->getDatabaseConnection();
$result = $database->exec_SELECTquery('*', 'tx_commerce_products_categories_mm', 'uid_foreign = ' . (int) $categoryUid);
$productUids = array();
while (($mmRow = $database->sql_fetch_assoc($result)) !== FALSE) {
$productUids[] = (int) $mmRow['uid_local'];
}
if (!count($productUids)) {
return FALSE;
}
$result = $database->exec_SELECTquery('uid, manufacturer_uid', 'tx_commerce_products', 'uid IN (' . implode(',', $productUids) . ')' . $this->cObj->enableFields('tx_commerce_products'));
$outout = array();
$firstPath = $path;
while (($productRow = $database->sql_fetch_assoc($result)) !== FALSE) {
if ($productRow['manufacturer_uid'] != '0') {
/*
* @todo not a realy good solution
*/
$path = $this->manufacturerIdentifier . $productRow['manufacturer_uid'] . ',' . $firstPath;
/**
* Product
*
* @var Tx_Commerce_Domain_Model_Product $product
*/
$product = GeneralUtility::makeInstance('Tx_Commerce_Domain_Model_Product', $productRow['uid']);
$product->loadData();
$manufacturerTitle = htmlspecialchars(strip_tags($product->getManufacturerTitle()));
$addGet = $this->separator . $this->prefixId . '[catUid]=' . $categoryUid . $this->separator . $this->prefixId . '[manufacturer]=' . $productRow['manufacturer_uid'] . '';
$cHash = $this->generateChash($addGet . $GLOBALS['TSFE']->linkVars);
$addGet .= $this->separator . 'cHash=' . $cHash;
$aLevel = array('pid' => $pid, 'uid' => $uidPage, 'title' => $manufacturerTitle, 'parent_id' => $categoryUid, 'nav_title' => $manufacturerTitle, 'hidden' => '0', 'depth' => $mDepth, 'leaf' => $this->isLeaf($categoryUid, $tableMm, $tableSubMm), 'hasSubChild' => $this->hasSubChild($categoryUid, $tableSubMm), 'subChildTable' => $tableSubMm, 'tableSubMain' => $tableSubMain, 'path' => $path, '_ADD_GETVARS' => $addGet, 'ITEM_STATE' => 'NO', 'manu' => $productRow['manufacturer_uid']);
if ($this->gpVars['manufacturer']) {
$this->choosenCat = $this->manufacturerIdentifier . $this->gpVars['manufacturer'];
}
if ($aLevel['hasSubChild'] == 1 && $this->mConf['showProducts'] == 1) {
$aLevel['--subLevel--'] = $this->makeSubChildArrayPostRender($uidPage, $tableSubMain, $tableSubMm, $categoryUid, $mDepth + 1, $path, $productRow['manufacturer_uid']);
}
if ($this->expandAll > 0 || $this->expandAll < 0 && -$this->expandAll >= $mDepth) {
$aLevel['_SUB_MENU'] = $aLevel['--subLevel--'];
}
$outout[$this->manufacturerIdentifier . $productRow['manufacturer_uid']] = $aLevel;
}
}
return $outout;
}
示例11: makeMenu
//.........这里部分代码省略.........
if (count($mp_row)) {
$row = $mp_row;
$row['_MP_PARAM'] = $mount_info['MPvar'];
} else {
// If the mount point could not be fetched with respect
// to enableFields, unset the row so it does not become a part of the menu!
unset($row);
}
}
// Add external MP params, then the row:
if (!empty($row)) {
if ($MP) {
$row['_MP_PARAM'] = $MP . ($row['_MP_PARAM'] ? ',' . $row['_MP_PARAM'] : '');
}
$temp[$row['uid']] = $row;
}
}
}
$GLOBALS['TYPO3_DB']->sql_free_result($res);
}
break;
case 'list':
if ($value == '') {
$value = $this->id;
}
$skippedEnableFields = array();
if (!empty($this->mconf['showAccessRestrictedPages'])) {
$skippedEnableFields = array('fe_group' => 1);
}
/** @var \TYPO3\CMS\Core\Database\RelationHandler $loadDB*/
$loadDB = GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Database\\RelationHandler');
$loadDB->setFetchAllFields(TRUE);
$loadDB->start($value, 'pages');
$loadDB->additionalWhere['pages'] = $this->parent_cObj->enableFields('pages', FALSE, $skippedEnableFields);
$loadDB->getFromDB();
foreach ($loadDB->itemArray as $val) {
$MP = $this->tmpl->getFromMPmap($val['id']);
// Keep mount point?
$mount_info = $this->sys_page->getMountPointInfo($val['id']);
// There is a valid mount point.
if (is_array($mount_info) && $mount_info['overlay']) {
// Using "getPage" is OK since we need the check for enableFields
// AND for type 2 of mount pids we DO require a doktype < 200!
$mp_row = $this->sys_page->getPage($mount_info['mount_pid']);
if (count($mp_row)) {
$row = $mp_row;
$row['_MP_PARAM'] = $mount_info['MPvar'];
// Overlays should already have their full MPvars calculated
if ($mount_info['overlay']) {
$MP = $this->tmpl->getFromMPmap($mount_info['mount_pid']);
if ($MP) {
unset($row['_MP_PARAM']);
}
}
} else {
// If the mount point could not be fetched with respect to
// enableFields, unset the row so it does not become a part of the menu!
unset($row);
}
} else {
$row = $loadDB->results['pages'][$val['id']];
}
//Add versioning overlay for current page (to respect workspaces)
if (is_array($row)) {
$this->sys_page->versionOL('pages', $row, TRUE);
}
示例12: loadLanguageRecordsFromDatabase
/**
* @return array
*/
protected function loadLanguageRecordsFromDatabase()
{
$cObj = new ContentObjectRenderer();
$GLOBALS['TSFE'] = new TypoScriptFrontendController($GLOBALS['TYPO3_CONF_VARS'], 0, 0);
$GLOBALS['TSFE']->sys_page = new PageRepository();
$select = 'flag';
$from = 'sys_language';
$where = '1=1' . $cObj->enableFields('sys_language');
$sysLanguages = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows($select, $from, $where);
return (array) $sysLanguages;
}
示例13: isInLocalDomain
/**
* Determines whether the URL matches a domain
* in the sys_domain databse table.
*
* @param string $url Absolute URL which needs to be checked
* @return boolean Whether the URL is considered to be local
*/
protected function isInLocalDomain($url)
{
$result = FALSE;
if (\TYPO3\CMS\Core\Utility\GeneralUtility::isValidUrl($url)) {
$parsedUrl = parse_url($url);
if ($parsedUrl['scheme'] === 'http' || $parsedUrl['scheme'] === 'https') {
$host = $parsedUrl['host'];
// Removes the last path segment and slash sequences like /// (if given):
$path = preg_replace('#/+[^/]*$#', '', $parsedUrl['path']);
$cObj = new ContentObjectRenderer();
$localDomains = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows('domainName', 'sys_domain', '1=1' . $cObj->enableFields('sys_domain'));
if (is_array($localDomains)) {
foreach ($localDomains as $localDomain) {
// strip trailing slashes (if given)
$domainName = rtrim($localDomain['domainName'], '/');
if (\TYPO3\CMS\Core\Utility\GeneralUtility::isFirstPartOfStr($host . $path . '/', $domainName . '/')) {
$result = TRUE;
break;
}
}
}
}
}
return $result;
}
示例14: getUsersFromTime
/**
* Determines all registered users who were online since a certain point of time.
* @author Martin Helmich <m.helmich@mittwald.de>
* @param integer $time The point of time, since when the users are to be counted.
* @param boolean $sesBackcheck Determines, of the user status is to be checked by session data.
* @param boolean $postCount Determines, if the amount of posts created since $time is to be determined (can be
* quite time-expensive)
* @return array An array containing information on users who were online today.
*/
function getUsersFromTime($time, $sesBackcheck = FALSE, $postCount = TRUE)
{
$result = array('users', 'mods', "admins", 'count');
if (!ExtensionManagementUtility::isLoaded('sys_stat')) {
$sesBackcheck = TRUE;
}
$grp_admin = array($this->getAdministratorGroup());
$grp_mod = $this->getModeratorGroups();
if ($sesBackcheck) {
$res = $this->databaseHandle->exec_SELECTquery('u.usergroup, u.' . $this->tx_mmforum_pi1->getUserNameField() . ', u.uid', 'fe_users u, fe_sessions s', 's.ses_tstamp >= "' . $time . '" AND u.deleted=0 AND u.disable=0 AND u.uid=s.ses_userid ' . $this->getUserPidQuery('u'), 'ses_userid', 'username ASC');
} else {
$res = $this->databaseHandle->exec_SELECTquery('u.usergroup, u.' . $this->tx_mmforum_pi1->getUserNameField() . ', u.uid', 'fe_users u, sys_stat s', 's.feuser_id != "0" AND u.uid = s.feuser_id AND s.tstamp >= "' . $time . '" ' . $this->getUserPidQuery('u'), 'feuser_id');
}
while ($arr = $this->databaseHandle->sql_fetch_assoc($res)) {
if ($postCount) {
$res2 = $this->databaseHandle->exec_SELECTquery('COUNT(*)', 'tx_mmforum_posts', 'poster_id="' . $arr['uid'] . '" AND post_time >= "' . $time . '"' . $this->cObj->enableFields('tx_mmforum_posts') . ' ' . $this->getStoragePIDQuery());
$arr2 = $this->databaseHandle->sql_fetch_row($res2);
$arr['postCount'] = $arr2[0];
}
$user_groups = GeneralUtility::intExplode(',', $arr['usergroup']);
if (count(array_intersect($user_groups, $grp_mod)) > 0) {
$result['mods'][] = $arr;
} elseif (count(array_intersect($user_groups, $grp_admin)) > 0) {
$result['admins'][] = $arr;
} else {
$result['users'][] = $arr;
}
}
$result['count'] = $this->databaseHandle->sql_num_rows($res);
return $result;
}
示例15: intval
/**
* Displays the form for creating a new post an answer to an existing topic.
* @param string $content The plugin content
* @param array $conf The plugin's configuration vars
* @return string The content
*/
function new_post($content, $conf)
{
$loginUser = $GLOBALS['TSFE']->loginUser;
$topicId = intval($this->piVars['tid']);
$topicData = $this->getTopicData($topicId);
$forumId = $topicData['forum_id'];
if ($loginUser && $this->get_topic_is($topicId) == 0 || $loginUser && $this->getIsModOrAdmin($forumId)) {
if (!$this->getMayWrite_topic($topicId)) {
return $content . $this->errorMessage($conf, $this->pi_getLL('newTopic.noAccess'));
}
if ($this->piVars['button'] == $this->pi_getLL('newPost.save')) {
if (!$this->piVars['message']) {
$content .= $this->errorMessage($this->conf, $this->pi_getLL('newTopic.noText'));
unset($this->piVars['button']);
return $this->new_post($content, $conf);
}
//Check CSRF Attacks
if ($GLOBALS["TSFE"]->fe_user->getKey('ses', "token") != $this->piVars['token'] || $this->piVars['token'] == false) {
$content .= $this->errorMessage($this->conf, $this->pi_getLL('newPost.quote.error'));
unset($this->piVars['button']);
return $this->new_post($content, $conf);
}
// Checks if the current user has already written a post in a certain interval
// from now on. If so, the write attempt is blocked for security reasons.
$interval = $conf['spamblock_interval'];
$time = $GLOBALS['EXEC_TIME'] - $interval;
$res = $this->databaseHandle->exec_SELECTquery('*', 'tx_mmforum_posts', 'poster_id=' . $this->getUserID() . ' AND post_time>=' . $time . $this->cObj->enableFields('tx_mmforum_posts'));
if ($this->databaseHandle->sql_num_rows($res) > 0) {
$template = $this->cObj->fileResource($conf['template.']['login_error']);
$template = $this->cObj->getSubpart($template, "###LOGINERROR###");
$marker = array();
$llMarker = array('###SPAMBLOCK###' => $interval);
$marker['###LOGINERROR_MESSAGE###'] = $this->cObj->substituteMarkerArray($this->pi_getLL('newPost.spamBlock'), $llMarker);
$content .= $this->cObj->substituteMarkerArrayCached($template, $marker);
return $content;
}
// Create a topic subscription if the user checked the regarding checkbox.
if ($this->piVars['havealook']) {
tx_mmforum_havealook::addSubscription($this, $topicId, $this->getUserID());
}
// Check file upload
if ($_FILES['tx_mmforum_pi1_attachment_1']['size'] > 0) {
$res = $this->performAttachmentUpload();
if (!is_array($res)) {
$content .= $res;
unset($this->piVars['button']);
return $this->new_post($content, $conf);
} else {
$attachment_ids = $res;
}
} else {
$attachment_ids = 0;
}
// Instantiate postfactory class
$postfactory = GeneralUtility::makeInstance('tx_mmforum_postfactory');
$postfactory->init($this->conf, $this);
if ($this->isModeratedForum() && !$this->getIsAdmin() && !$this->getIsMod($this->piVars['fid'])) {
// Create post using postfactory
$postfactory->create_post_queue($topicId, $this->getUserID(), $this->piVars['message'], $GLOBALS['EXEC_TIME'], $this->tools->ip2hex(GeneralUtility::getIndpEnv("REMOTE_ADDR")), $attachment_ids);
return $this->successMessage($conf, $this->pi_getLL('postqueue-success'));
} else {
// Create post using postfactory
$postId = $postfactory->create_post($topicId, $this->getUserID(), $this->piVars['message'], $GLOBALS['EXEC_TIME'], $this->tools->ip2hex(GeneralUtility::getIndpEnv("REMOTE_ADDR")), $attachment_ids, false, $this->piVars['havealook'] == 'havealook');
// Redirect user to new post
$linkParams = array('tx_mmforum_pi1[action]' => 'list_post', 'tx_mmforum_pi1[tid]' => $topicId, 'tx_mmforum_pi1[pid]' => $postId);
if (is_array($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['mm_forum']['forum']['newPost_linkParams'])) {
foreach ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['mm_forum']['forum']['newPost_linkParams'] as $classRef) {
$procObj =& GeneralUtility::getUserObj($classRef);
$linkParams = $procObj->newPost_linkParams($linkParams, $this);
}
}
$link = $this->pi_getPageLink($GLOBALS['TSFE']->id, '', $linkParams);
HttpUtility::redirect($link . '#pid' . $postId);
}
} else {
$this->generateToken();
// Show post preview
if ($this->piVars['button'] == $this->pi_getLL('newPost.preview')) {
$template = $this->cObj->fileResource($conf['template.']['list_post']);
$template = $this->cObj->getSubpart($template, '###LIST_POSTS###');
$template = $this->cObj->substituteSubpart($template, '###ATTACHMENT_SECTION###', '');
$userSignature = $this->tx_mmforum_postfunctions->marker_getUserSignature($GLOBALS['TSFE']->fe_user->user);
$posttext = $this->piVars['message'];
$posttext = $this->tx_mmforum_postparser->main($this, $conf, $posttext, 'textparser') . ($this->conf['list_posts.']['appendSignatureToPostText'] ? $userSignature : '');
$marker['###POSTOPTIONS###'] = '';
$marker['###MESSAGEMENU###'] = '';
$marker['###PROFILEMENU###'] = '';
$marker['###POSTMENU###'] = '';
$marker['###POSTUSER###'] = $this->ident_user($this->getUserID(), $conf);
$marker['###POSTTEXT###'] = $posttext;
$marker['###ANKER###'] = '';
$marker['###POSTANCHOR###'] = '';
$marker['###POSTDATE###'] = $this->pi_getLL('post.writtenOn') . ': ' . $this->formatDate($GLOBALS['EXEC_TIME']);
$marker['###POSTRATING###'] = '';
//.........这里部分代码省略.........