getDocumentObject API MODX Evo ✈ Evolution CMS
- Разработчикам
- API
- getDocumentObject
Поддержать: USDT TRC20: TBGKTYDs4yzU17vQbobbUB8epFFtFb6PKh
Menu
- addEventListener
- changeWebUserPassword
- clearCache
- getActiveChildren
- getAllChildren
- getCachePath
- getChildIds
- getChunk
- getConfig
- getDocument
- getDocumentChildren
- getDocumentChildrenTVarOutput
- getDocumentChildrenTVars
- getDocumentObject
- getDocuments
- getFullTableName
- getKeywords
- getLoginUserID
- getLoginUserName
- getLoginUserType
- getManagerPath
- getMETATags
- getPageInfo
- getParent
- getParentIds
- getPlaceholder
- getSnippetId
- getSnippetName
- getTemplateVar
- getTemplateVarOutput
- getTemplateVars
- getUserData
- getUserDocGroups
- getUserInfo
- getVersionData
- getWebUserInfo
- hasPermission
- insideManager
- invokeEvent
- isBackend
- isFrontend
- isMemberOfWebGroup
- logEvent
- makeList
- makeUrl
- mapPath
- parseChunk
- parseText
- parseProperties
- putChunk
- regClientCSS
- regClientHTMLBlock
- regClientScript
- regClientStartupHTMLBlock
- regClientStartupScript
- removeAllEventListener
- removeEventListener
- runSnippet
- sendAlert
- setPlaceholder
- stripTags
- toPlaceholder
- toPlaceholders
- userLoggedIn
- webAlert
- sendmail
6718
getDocumentObject API MODX Evo ✈ Evolution CMS
Получает документ из базы данных
Права доступа к документу проверяются. Документ возвращается в виде массива на успех. Если документ не существует, анализатор вызывает sendErrorPage и выходы. Если документ существует, но пользователь не авторизован, анализатор вызывает sendUnauthorizedPage и выходы.
array getDocumentObject(string $method, mixed $identifier);
- $method should be either 'id' or 'alias'
- $identifier will be type string or int depending on $method.
Примеры
// Get the home page title
$homeDoc = $modx->getDocumentObject('id',1);
$title = $homeDoc['pagetitle'];
echo "{$title}
";
echo htmlspecialchars(print_r($homeDoc,true));
Источник Функции
Файл: manager/includes/document.parser.class.inc.php
Строка: 901
/**
* name: getDocumentObject - used by parser
* desc: returns a document object - $method: alias, id
*/
function getDocumentObject($method, $identifier) {
$tblsc= $this->getFullTableName("site_content");
$tbldg= $this->getFullTableName("document_groups");
// get document groups for current user
if ($docgrp= $this->getUserDocGroups())
$docgrp= implode(",", $docgrp);
// get document
$access= ($this->isFrontend() ? "sc.privateweb=0" : "1='" . $_SESSION['mgrRole'] . "' OR sc.privatemgr=0") .
(!$docgrp ? "" : " OR dg.document_group IN ($docgrp)");
$sql= "SELECT sc.*
FROM $tblsc sc
LEFT JOIN $tbldg dg ON dg.document = sc.id
WHERE sc." . $method . " = '" . $identifier . "'
AND ($access) LIMIT 1;";
$result= $this->db->query($sql);
$rowCount= $this->recordCount($result);
if ($rowCount < 1) {
if ($this->config['unauthorized_page']) {
// Fix for FS #375 - netnoise 2006/08/14
if ($method != 'id')
$identifier= $this->cleanDocumentIdentifier($identifier);
if (!is_numeric($identifier) && array_key_exists($identifier, $this->documentListing)) {
$identifier= $this->documentListing[$identifier];
$method= 'id';
}
// check if file is not public
$secrs= $this->dbQuery("SELECT id FROM $tbldg WHERE document = '" . $identifier . "' LIMIT 1;");
if ($secrs)
$seclimit= mysql_num_rows($secrs);
}
if ($seclimit > 0) {
// match found but not publicly accessible, send the visitor to the unauthorized_page
$this->sendUnauthorizedPage();
exit; // stop here
} else {
$this->sendErrorPage();
exit;
}
}
# this is now the document :) #
$documentObject= $this->fetchRow($result);
// load TVs and merge with document - Orig by Apodigm - Docvars
$sql= "SELECT tv.*, IF(tvc.value!='',tvc.value,tv.default_text) as value ";
$sql .= "FROM " . $this->getFullTableName("site_tmplvars") . " tv ";
$sql .= "INNER JOIN " . $this->getFullTableName("site_tmplvar_templates")." tvtpl ON tvtpl.tmplvarid = tv.id ";
$sql .= "LEFT JOIN " . $this->getFullTableName("site_tmplvar_contentvalues")." tvc ON tvc.tmplvarid=tv.id AND tvc.contentid = '" . $this->documentIdentifier . "' ";
$sql .= "WHERE tvtpl.templateid = '" . $documentObject['template'] . "'";
$rs= $this->dbQuery($sql);
$rowCount= $this->recordCount($rs);
if ($rowCount > 0) {
for ($i= 0; $i < $rowCount; $i++) {
$row= $this->fetchRow($rs);
$tmplvars[$row['name']]= array (
$row['name'],
$row['value'],
$row['display'],
$row['display_params'],
$row['type']
);
}
$documentObject= array_merge($documentObject, $tmplvars);
}
return $documentObject;
}