本文整理汇总了PHP中eZContentObjectTreeNode::createPermissionCheckingSQL方法的典型用法代码示例。如果您正苦于以下问题:PHP eZContentObjectTreeNode::createPermissionCheckingSQL方法的具体用法?PHP eZContentObjectTreeNode::createPermissionCheckingSQL怎么用?PHP eZContentObjectTreeNode::createPermissionCheckingSQL使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类eZContentObjectTreeNode
的用法示例。
在下文中一共展示了eZContentObjectTreeNode::createPermissionCheckingSQL方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: modify
function modify($tpl, $operatorName, $operatorParameters, &$rootNamespace, &$currentNamespace, &$operatorValue, &$namedParameters)
{
$parentNodeID = $namedParameters['parent_node_id'];
switch ($operatorName) {
case 'ezkeywordlist':
include_once 'lib/ezdb/classes/ezdb.php';
$db = eZDB::instance();
if ($parentNodeID) {
$node = eZContentObjectTreeNode::fetch($parentNodeID);
if ($node) {
$pathString = "AND ezcontentobject_tree.path_string like '" . $node->attribute('path_string') . "%'";
}
$parentNodeIDSQL = "AND ezcontentobject_tree.node_id != " . (int) $parentNodeID;
}
$showInvisibleNodesCond = eZContentObjectTreeNode::createShowInvisibleSQLString(true, false);
$limitation = false;
$limitationList = eZContentObjectTreeNode::getLimitationList($limitation);
$sqlPermissionChecking = eZContentObjectTreeNode::createPermissionCheckingSQL($limitationList);
$versionNameJoins = " AND ezcontentobject_tree.contentobject_id = ezcontentobject_name.contentobject_id AND\n ezcontentobject_tree.contentobject_version = ezcontentobject_name.content_version AND ";
$languageFilter = " AND " . eZContentLanguage::languagesSQLFilter('ezcontentobject');
$versionNameJoins .= eZContentLanguage::sqlFilter('ezcontentobject_name', 'ezcontentobject');
$quotedClassIdentifiers = array();
foreach ((array) $namedParameters['class_identifier'] as $classIdentifier) {
$quotedClassIdentifiers[] = "'" . $db->escapeString($classIdentifier) . "'";
}
$rs = $db->arrayQuery("SELECT DISTINCT ezkeyword.keyword\n FROM ezkeyword_attribute_link,\n ezkeyword,\n ezcontentobject,\n ezcontentobject_name,\n ezcontentobject_attribute,\n ezcontentobject_tree,\n ezcontentclass\n {$sqlPermissionChecking['from']}\n WHERE ezkeyword.id = ezkeyword_attribute_link.keyword_id\n AND ezkeyword_attribute_link.objectattribute_id = ezcontentobject_attribute.id\n AND ezcontentobject_tree.contentobject_id = ezcontentobject_attribute.contentobject_id\n AND ezkeyword.class_id = ezcontentclass.id\n AND " . $db->generateSQLINStatement($quotedClassIdentifiers, 'ezcontentclass.identifier') . "\n {$pathString}\n {$parentNodeIDSQL} " . ($namedParameters['depth'] > 0 ? "AND ezcontentobject_tree.depth=" . (int) $namedParameters['depth'] : '') . "\n {$showInvisibleNodesCond}\n {$sqlPermissionChecking['where']}\n {$languageFilter}\n {$versionNameJoins}\n ORDER BY ezkeyword.keyword ASC");
$operatorValue = $rs;
break;
}
}
示例2: trashList
static function trashList($params = false, $asCount = false)
{
if ($params === false) {
$params = array('Offset' => false, 'Limit' => false, 'SortBy' => false, 'AttributeFilter' => false);
}
$offset = isset($params['Offset']) && is_numeric($params['Offset']) ? $params['Offset'] : false;
$limit = isset($params['Limit']) && is_numeric($params['Limit']) ? $params['Limit'] : false;
$asObject = isset($params['AsObject']) ? $params['AsObject'] : true;
$objectNameFilter = isset($params['ObjectNameFilter']) ? $params['ObjectNameFilter'] : false;
$sortBy = isset($params['SortBy']) && is_array($params['SortBy']) ? $params['SortBy'] : array(array('name'));
if ($asCount) {
$sortingInfo = eZContentObjectTreeNode::createSortingSQLStrings(false);
} else {
$sortingInfo = eZContentObjectTreeNode::createSortingSQLStrings($sortBy, 'ezcot');
}
$attributeFilter = eZContentObjectTreeNode::createAttributeFilterSQLStrings($params['AttributeFilter'], $sortingInfo);
if ($attributeFilter === false) {
return null;
}
$objectNameFilterSQL = eZContentObjectTreeNode::createObjectNameFilterConditionSQLString($objectNameFilter);
$limitation = isset($params['Limitation']) && is_array($params['Limitation']) ? $params['Limitation'] : false;
$limitationList = eZContentObjectTreeNode::getLimitationList($limitation);
$sqlPermissionChecking = eZContentObjectTreeNode::createPermissionCheckingSQL($limitationList, 'ezcontentobject_trash', 'ezcot');
if ($asCount) {
$query = "SELECT count(*) as count ";
} else {
$query = "SELECT\n ezcontentobject.*,\n ezcot.*,\n ezcontentclass.serialized_name_list as class_serialized_name_list,\n ezcontentclass.identifier as class_identifier,\n ezcontentobject_name.name as name,\n ezcontentobject_name.real_translation\n {$sortingInfo['attributeTargetSQL']} ";
}
$query .= "FROM\n ezcontentobject_trash ezcot\n INNER JOIN ezcontentobject ON ezcot.contentobject_id = ezcontentobject.id\n INNER JOIN ezcontentclass ON ezcontentclass.version = 0 AND ezcontentclass.id = ezcontentobject.contentclass_id\n INNER JOIN ezcontentobject_name ON (\n ezcot.contentobject_id = ezcontentobject_name.contentobject_id AND\n ezcot.contentobject_version = ezcontentobject_name.content_version\n )\n {$sortingInfo['attributeFromSQL']}\n {$attributeFilter['from']}\n {$sqlPermissionChecking['from']}\n WHERE\n {$sortingInfo['attributeWhereSQL']}\n {$attributeFilter['where']}\n " . eZContentLanguage::sqlFilter('ezcontentobject_name', 'ezcontentobject') . "\n {$sqlPermissionChecking['where']}\n {$objectNameFilterSQL}\n AND " . eZContentLanguage::languagesSQLFilter('ezcontentobject');
if (!$asCount && $sortingInfo['sortingFields'] && strlen($sortingInfo['sortingFields']) > 5) {
$query .= " ORDER BY {$sortingInfo['sortingFields']}";
}
$db = eZDB::instance();
if (!$offset && !$limit) {
$trashRowsArray = $db->arrayQuery($query);
} else {
$trashRowsArray = $db->arrayQuery($query, array('offset' => $offset, 'limit' => $limit));
}
// cleanup temp tables
$db->dropTempTableList($sqlPermissionChecking['temp_tables']);
if ($asCount) {
return $trashRowsArray[0]['count'];
} else {
if ($asObject) {
$retTrashNodes = array();
foreach (array_keys($trashRowsArray) as $key) {
$trashRow =& $trashRowsArray[$key];
$retTrashNodes[] = new eZContentObjectTrashNode($trashRow);
}
return $retTrashNodes;
} else {
return $trashRowsArray;
}
}
}
示例3: subTree
function subTree($params, $nodeID, $countChildren = false)
{
$nodeListArray = array();
// sorting params
$sortingInfo = eZContentObjectTreeNode::createSortingSQLStrings($params['SortBy']);
// node params
$notEqParentString = '';
$pathStringCond = '';
eZContentObjectTreeNode::createPathConditionAndNotEqParentSQLStrings($pathStringCond, $notEqParentString, $nodeID, 1, false);
// class filter
$classCondition = eZContentObjectTreeNode::createClassFilteringSQLString($params['ClassFilterType'], $params['ClassFilterArray']);
if ($classCondition === false) {
return $nodeListArray;
}
// permissions
$limitationParams = false;
$limitationList = eZContentObjectTreeNode::getLimitationList($limitationParams);
if ($limitationList === false) {
return $nodeListArray;
}
$permissionChecking = eZContentObjectTreeNode::createPermissionCheckingSQL($limitationList);
// version
$useVersionName = true;
$versionNameTables = eZContentObjectTreeNode::createVersionNameTablesSQLString($useVersionName);
$versionNameTargets = eZContentObjectTreeNode::createVersionNameTargetsSQLString($useVersionName);
$versionNameJoins = eZContentObjectTreeNode::createVersionNameJoinsSQLString($useVersionName);
// invisible nodes.
$showInvisibleNodesCond = eZContentObjectTreeNode::createShowInvisibleSQLString(false, $params['FetchHidden']);
$query = '';
if ($countChildren) {
$query = "SELECT count(*) as count\n FROM\n ezcontentobject_tree,\n ezcontentobject,ezcontentclass\n {$versionNameTables}\n {$permissionChecking['from']}\n WHERE {$pathStringCond}\n {$classCondition}\n ezcontentclass.version=0 AND\n {$notEqParentString}\n ezcontentobject_tree.contentobject_id = ezcontentobject.id AND\n ezcontentclass.id = ezcontentobject.contentclass_id\n {$versionNameJoins}\n {$permissionChecking['where']} ";
} else {
$query = "SELECT ezcontentobject.*,\n ezcontentobject_tree.*,\n ezcontentclass.serialized_name_list as class_serialized_name_list,\n ezcontentclass.identifier as class_identifier,\n ezcontentclass.is_container as is_container\n {$versionNameTargets}\n FROM\n ezcontentobject_tree,\n ezcontentobject,ezcontentclass\n {$versionNameTables}\n {$sortingInfo['attributeFromSQL']}\n {$permissionChecking['from']}\n WHERE\n {$pathStringCond}\n {$sortingInfo['attributeWhereSQL']}\n ezcontentclass.version=0 AND\n {$notEqParentString}\n ezcontentobject_tree.contentobject_id = ezcontentobject.id AND\n ezcontentclass.id = ezcontentobject.contentclass_id AND\n {$classCondition}\n ezcontentobject_tree.contentobject_is_published = 1\n {$versionNameJoins}\n {$showInvisibleNodesCond}\n {$permissionChecking['where']}\n ORDER BY {$sortingInfo['sortingFields']}";
}
$db = eZDB::instance();
$nodeListArray = $db->arrayQuery($query);
// cleanup temp tables
$db->dropTempTableList($permissionChecking['temp_tables']);
if ($countChildren) {
return $nodeListArray[0]['count'];
} else {
foreach ($nodeListArray as $key => $row) {
$nodeListArray[$key]['path_identification_string'] = eZContentObjectTreeNode::fetch($row['node_id'])->pathWithNames();
}
return $nodeListArray;
}
}
示例4: modify
function modify( $tpl, $operatorName, $operatorParameters, &$rootNamespace, &$currentNamespace, &$operatorValue, &$namedParameters )
{
$parentNodeID = $namedParameters['parent_node_id'];
switch ( $operatorName )
{
case 'ezkeywordlist':
{
include_once( 'lib/ezdb/classes/ezdb.php' );
$db = eZDB::instance();
if( $parentNodeID )
{
$node = eZContentObjectTreeNode::fetch( $parentNodeID );
if ( $node )
$pathString = "AND ezcontentobject_tree.path_string like '" . $node->attribute( 'path_string' ) . "%'";
$parentNodeIDSQL = "AND ezcontentobject_tree.node_id != " . (int)$parentNodeID;
}
$limitation = false;
$sqlPermissionChecking = eZContentObjectTreeNode::createPermissionCheckingSQL( eZContentObjectTreeNode::getLimitationList( $limitation ) );
// eZContentObjectTreeNode::classIDByIdentifier() might need to be used for eZ Publish < 4.1
$classIDs = eZContentClass::classIDByIdentifier( $namedParameters['class_identifier'] );
$operatorValue = $db->arrayQuery(
"SELECT DISTINCT ezkeyword.keyword
FROM ezkeyword
JOIN ezkeyword_attribute_link ON ezkeyword.id = ezkeyword_attribute_link.keyword_id
JOIN ezcontentobject_attribute ON ezkeyword_attribute_link.objectattribute_id = ezcontentobject_attribute.id
JOIN ezcontentobject ON ezcontentobject_attribute.contentobject_id = ezcontentobject.id
JOIN ezcontentobject_name ON ezcontentobject.id = ezcontentobject_name.contentobject_id
JOIN ezcontentobject_tree ON ezcontentobject_name.contentobject_id = ezcontentobject_tree.contentobject_id AND ezcontentobject_name.content_version = ezcontentobject_tree.contentobject_version
$sqlPermissionChecking[from]
WHERE " . eZContentLanguage::languagesSQLFilter( 'ezcontentobject' ) . "
AND " . eZContentLanguage::sqlFilter( 'ezcontentobject_name', 'ezcontentobject' ) .
( empty( $classIDs ) ? '' : ( ' AND ' . $db->generateSQLINStatement( $classIDs, 'ezkeyword.class_id' ) ) ) . "
$pathString
$parentNodeIDSQL " .
( $namedParameters['depth'] > 0 ? ("AND ezcontentobject_tree.depth=" . (int)$namedParameters['depth']) : '' ) . "
" . eZContentObjectTreeNode::createShowInvisibleSQLString( true, false ) . "
$sqlPermissionChecking[where]
ORDER BY ezkeyword.keyword ASC" );
} break;
}
}
示例5: fetchKeyword
/**
* Retourne une liste de noeuds associés à un mot clé
* @param string $keyword le mot clés associé
* @param array $classIDArray filtre éventuel sur des IDs numériques de classes
* @param integer $parentNodeID filtre éventuel sur un noeud parent
* @param string $subtreePathString filtre éventuel sur une sous arborescence (définie par un path_string du type "/1/2/214/" )
* @return une liste de tableaux associatifs {'node_id'=>$nodeID}
*
*/
private static function fetchKeyword( $keyword,
$classIDArray,
$parentNodeID,
$subtreePathString)
{
$showInvisibleNodesCond = eZContentObjectTreeNode::createShowInvisibleSQLString( true, false );
$limitation = false;
$limitationList = eZContentObjectTreeNode::getLimitationList( $limitation );
$sqlPermissionChecking = eZContentObjectTreeNode::createPermissionCheckingSQL( $limitationList );
$sqlKeyword = 'ezkeyword.keyword';
$db = eZDB::instance();
$alphabet = $db->escapeString( $keyword );
$sortingInfo = array();
$sortingInfo['attributeFromSQL'] = ', ezcontentobject_attribute a1';
$sortingInfo['attributeWhereSQL'] = '';
$sqlTarget = 'DISTINCT ezcontentobject_tree.node_id';
$sortingInfo['attributeWhereSQL'] .= " a1.version=ezcontentobject.current_version
AND a1.contentobject_id=ezcontentobject.id AND";
$parentNodeIDString = is_numeric( $parentNodeID ) ? "AND ezcontentobject_tree.parent_node_id = '$parentNodeID'" : '';
$subtreeString = empty( $subtreePathString ) ? '' : "AND ezcontentobject_tree.path_string like '$subtreePathString%'";
$sqlClassIDString = '';
if ( is_array( $classIDArray ) && ! empty( $classIDArray ) )
{
$sqlClassIDString = 'AND ezkeyword.class_id IN (' . $db->implodeWithTypeCast( ',', $classIDArray, 'int' ) . ')';
}
$sqlMatching = "ezkeyword.keyword = '$alphabet'";
$query = "SELECT $sqlTarget
FROM ezkeyword, ezkeyword_attribute_link,ezcontentobject_tree,ezcontentobject,ezcontentclass
$sortingInfo[attributeFromSQL]
$sqlPermissionChecking[from]
WHERE
$sortingInfo[attributeWhereSQL]
$sqlMatching
$showInvisibleNodesCond
$sqlPermissionChecking[where]
$sqlClassIDString
$parentNodeIDString
$subtreeString
AND ezcontentclass.version=0
AND ezcontentobject.status=".eZContentObject::STATUS_PUBLISHED."
AND ezcontentobject_tree.main_node_id=ezcontentobject_tree.node_id
AND ezcontentobject_tree.contentobject_id = ezcontentobject.id
AND ezcontentclass.id = ezcontentobject.contentclass_id
AND a1.id=ezkeyword_attribute_link.objectattribute_id
AND ezkeyword_attribute_link.keyword_id = ezkeyword.id";
$db_params = array();
$keywordNodeArray = $db->arrayQuery( $query, $db_params );
return $keywordNodeArray;
}
示例6: fetchKeyword
public static function fetchKeyword($alphabet, $classid, $offset, $limit, $owner = false, $sortBy = array(), $parentNodeID = false, $includeDuplicates = true, $strictMatching = false, $depth = 1)
{
$classIDArray = array();
if (is_numeric($classid)) {
$classIDArray = array($classid);
} else {
if (is_array($classid)) {
$classIDArray = $classid;
}
}
$showInvisibleNodesCond = eZContentObjectTreeNode::createShowInvisibleSQLString(true, false);
$limitation = false;
$limitationList = eZContentObjectTreeNode::getLimitationList($limitation);
$sqlPermissionChecking = eZContentObjectTreeNode::createPermissionCheckingSQL($limitationList);
$db_params = array();
$db_params['offset'] = $offset;
$db_params['limit'] = $limit;
$keywordNodeArray = array();
$lastKeyword = '';
$db = eZDB::instance();
//in SELECT clause below we will use a full keyword value
//or just a part of ezkeyword.keyword matched to $alphabet respective to $includeDuplicates parameter.
//In the case $includeDuplicates = ture we need only a part
//of ezkeyword.keyword to be fetched in field to allow DISTINCT to remove rows with the same node id's
$sqlKeyword = 'ezkeyword.keyword';
if (!$includeDuplicates) {
$sqlKeyword = $db->subString('ezkeyword.keyword', 1, strlen($alphabet)) . ' AS keyword ';
}
$alphabet = $db->escapeString($alphabet);
$sortingInfo = array();
$sortingInfo['attributeFromSQL'] = '';
$sqlTarget = $sqlKeyword . ',ezcontentobject_tree.node_id';
if (is_array($sortBy) && count($sortBy) > 0) {
switch ($sortBy[0]) {
case 'keyword':
case 'name':
$sortingString = '';
if ($sortBy[0] == 'name') {
$sortingString = 'ezcontentobject.name';
} elseif ($sortBy[0] == 'keyword') {
if ($includeDuplicates) {
$sortingString = 'ezkeyword.keyword';
} else {
$sortingString = 'keyword';
}
}
$sortOrder = true;
// true is ascending
if (isset($sortBy[1])) {
$sortOrder = $sortBy[1];
}
$sortingOrder = $sortOrder ? ' ASC' : ' DESC';
$sortingInfo['sortingFields'] = $sortingString . $sortingOrder;
break;
default:
$sortingInfo = eZContentObjectTreeNode::createSortingSQLStrings($sortBy);
}
// Fixing the attributeTargetSQL
switch ($sortBy[0]) {
case 'keyword':
$sortingInfo['attributeTargetSQL'] = '';
break;
case 'name':
$sortingInfo['attributeTargetSQL'] = ', ezcontentobject.name';
break;
case 'attribute':
case 'class_name':
break;
default:
$sortingInfo['attributeTargetSQL'] .= ', ' . strtok($sortingInfo["sortingFields"], " ");
}
$sqlTarget .= $sortingInfo['attributeTargetSQL'];
} else {
$sortingInfo['sortingFields'] = 'ezkeyword.keyword ASC';
}
//Adding DISTINCT to avoid duplicates,
//check if DISTINCT keyword was added before providing clauses for sorting.
if (!$includeDuplicates && substr($sqlTarget, 0, 9) != 'DISTINCT ') {
$sqlTarget = 'DISTINCT ' . $sqlTarget;
}
$sqlOwnerString = is_numeric($owner) ? "AND ezcontentobject.owner_id = '{$owner}'" : '';
$parentNodeIDString = '';
if (is_numeric($parentNodeID)) {
$notEqParentString = '';
// If the node(s) doesn't exist we return null.
if (!eZContentObjectTreeNode::createPathConditionAndNotEqParentSQLStrings($parentNodeIDString, $notEqParentString, $parentNodeID, $depth)) {
return null;
}
}
$sqlClassIDString = '';
if (is_array($classIDArray) and count($classIDArray)) {
$sqlClassIDString = 'AND ' . $db->generateSQLINStatement($classIDArray, 'ezkeyword.class_id', false, false, 'int') . ' ';
}
// composing sql for matching tag word, it could be strict equiality or LIKE clause
// dependent of $strictMatching parameter.
$sqlMatching = "ezkeyword.keyword LIKE '{$alphabet}%'";
if ($strictMatching) {
$sqlMatching = "ezkeyword.keyword = '{$alphabet}'";
}
$query = "SELECT {$sqlTarget}\n FROM ezkeyword\n INNER JOIN ezkeyword_attribute_link ON (ezkeyword_attribute_link.keyword_id = ezkeyword.id)\n INNER JOIN ezcontentobject_attribute ON (ezcontentobject_attribute.id = ezkeyword_attribute_link.objectattribute_id)\n INNER JOIN ezcontentobject ON (ezcontentobject_attribute.version = ezcontentobject.current_version AND ezcontentobject_attribute.contentobject_id = ezcontentobject.id)\n INNER JOIN ezcontentobject_tree ON (ezcontentobject_tree.contentobject_id = ezcontentobject.id)\n INNER JOIN ezcontentclass ON (ezcontentclass.id = ezcontentobject.contentclass_id)\n {$sortingInfo['attributeFromSQL']}\n {$sqlPermissionChecking['from']}\n WHERE\n {$parentNodeIDString}\n {$sqlMatching}\n {$showInvisibleNodesCond}\n {$sqlPermissionChecking['where']}\n {$sqlClassIDString}\n {$sqlOwnerString}\n AND ezcontentclass.version = 0\n AND ezcontentobject.status = " . eZContentObject::STATUS_PUBLISHED . "\n AND ezcontentobject_tree.main_node_id = ezcontentobject_tree.node_id\n ORDER BY {$sortingInfo['sortingFields']}";
//.........这里部分代码省略.........
示例7: fetchKeyword
static public function fetchKeyword( $alphabet,
$classid,
$offset,
$limit,
$owner = false,
$sortBy = array(),
$parentNodeID = false,
$includeDuplicates = true,
$strictMatching = false )
{
$classIDArray = array();
if ( is_numeric( $classid ) )
{
$classIDArray = array( $classid );
}
else if ( is_array( $classid ) )
{
$classIDArray = $classid;
}
$showInvisibleNodesCond = eZContentObjectTreeNode::createShowInvisibleSQLString( true, false );
$limitation = false;
$limitationList = eZContentObjectTreeNode::getLimitationList( $limitation );
$sqlPermissionChecking = eZContentObjectTreeNode::createPermissionCheckingSQL( $limitationList );
$db_params = array();
$db_params['offset'] = $offset;
$db_params['limit'] = $limit;
$keywordNodeArray = array();
$lastKeyword = '';
$db = eZDB::instance();
//in SELECT clause below we will use a full keyword value
//or just a part of ezkeyword.keyword matched to $alphabet respective to $includeDuplicates parameter.
//In the case $includeDuplicates = ture we need only a part
//of ezkeyword.keyword to be fetched in field to allow DISTINCT to remove rows with the same node id's
$sqlKeyword = 'ezkeyword.keyword';
if ( !$includeDuplicates )
{
$sqlKeyword = $db->subString('ezkeyword.keyword', 1, strlen( $alphabet ) ) . ' AS keyword ';
}
$alphabet = $db->escapeString( $alphabet );
$sortingInfo = array();
$sortingInfo['attributeFromSQL'] = ', ezcontentobject_attribute a1';
$sortingInfo['attributeWhereSQL'] = '';
$sqlTarget = $sqlKeyword.',ezcontentobject_tree.node_id';
if ( is_array( $sortBy ) && count ( $sortBy ) > 0 )
{
switch ( $sortBy[0] )
{
case 'keyword':
case 'name':
{
$sortingString = '';
if ( $sortBy[0] == 'name' )
{
$sortingString = 'ezcontentobject.name';
$sortingInfo['attributeTargetSQL'] = ', ' . $sortingString;
}
elseif ( $sortBy[0] == 'keyword' )
{
if ( $includeDuplicates )
$sortingString = 'ezkeyword.keyword';
else
$sortingString = 'keyword';
$sortingInfo['attributeTargetSQL'] = '';
}
$sortOrder = true; // true is ascending
if ( isset( $sortBy[1] ) )
$sortOrder = $sortBy[1];
$sortingOrder = $sortOrder ? ' ASC' : ' DESC';
$sortingInfo['sortingFields'] = $sortingString . $sortingOrder;
} break;
default:
{
$sortingInfo = eZContentObjectTreeNode::createSortingSQLStrings( $sortBy );
if ( $sortBy[0] == 'attribute' )
{
// if sort_by is 'attribute' we should add ezcontentobject_name to "FromSQL" and link to ezcontentobject
$sortingInfo['attributeFromSQL'] .= ', ezcontentobject_name, ezcontentobject_attribute a1';
$sortingInfo['attributeWhereSQL'] .= ' ezcontentobject.id = ezcontentobject_name.contentobject_id AND';
$sqlTarget = 'DISTINCT ezcontentobject_tree.node_id, '.$sqlKeyword;
}
else // for unique declaration
{
$sortByArray = explode( ' ', $sortingInfo['sortingFields'] );
$sortingInfo['attributeTargetSQL'] .= ', ' . $sortByArray[0];
$sortingInfo['attributeFromSQL'] .= ', ezcontentobject_attribute a1';
}
} break;
}
//.........这里部分代码省略.........
示例8: calendar
static function calendar($params = false, $nodeID = 0)
{
if (!is_numeric($nodeID) and !is_array($nodeID)) {
return array();
}
if ($params === false) {
$params = array('Depth' => false, 'Offset' => false, 'Limit' => false, 'AttributeFilter' => false, 'ExtendedAttributeFilter' => false, 'ClassFilterType' => false, 'ClassFilterArray' => false, 'GroupBy' => false);
}
$offset = isset($params['Offset']) && is_numeric($params['Offset']) ? $params['Offset'] : false;
$limit = isset($params['Limit']) && is_numeric($params['Limit']) ? $params['Limit'] : false;
$depth = isset($params['Depth']) && is_numeric($params['Depth']) ? $params['Depth'] : false;
$depthOperator = isset($params['DepthOperator']) ? $params['DepthOperator'] : false;
$groupBy = isset($params['GroupBy']) ? $params['GroupBy'] : false;
$mainNodeOnly = isset($params['MainNodeOnly']) ? $params['MainNodeOnly'] : false;
$ignoreVisibility = isset($params['IgnoreVisibility']) ? $params['IgnoreVisibility'] : false;
if (!isset($params['ClassFilterType'])) {
$params['ClassFilterType'] = false;
}
$classCondition = eZContentObjectTreeNode::createClassFilteringSQLString($params['ClassFilterType'], $params['ClassFilterArray']);
$attributeFilter = eZContentObjectTreeNode::createAttributeFilterSQLStrings($params['AttributeFilter'], $sortingInfo);
$extendedAttributeFilter = eZContentObjectTreeNode::createExtendedAttributeFilterSQLStrings($params['ExtendedAttributeFilter']);
$mainNodeOnlyCond = eZContentObjectTreeNode::createMainNodeConditionSQLString($mainNodeOnly);
$pathStringCond = '';
$notEqParentString = '';
eZContentObjectTreeNode::createPathConditionAndNotEqParentSQLStrings($pathStringCond, $notEqParentString, $nodeID, $depth, $depthOperator);
$groupBySelectText = '';
$groupBySQL = $extendedAttributeFilter['group_by'];
if (!$groupBySQL) {
eZContentObjectTreeNode::createGroupBySQLStrings($groupBySelectText, $groupBySQL, $groupBy);
} else {
if ($groupBy) {
eZDebug::writeError("Cannot use group_by parameter together with extended attribute filter which sets group_by!", __METHOD__);
}
}
$limitation = isset($params['Limitation']) && is_array($params['Limitation']) ? $params['Limitation'] : false;
$limitationList = eZContentObjectTreeNode::getLimitationList($limitation);
$sqlPermissionChecking = eZContentObjectTreeNode::createPermissionCheckingSQL($limitationList);
// Determine whether we should show invisible nodes.
$showInvisibleNodesCond = eZContentObjectTreeNode::createShowInvisibleSQLString(!$ignoreVisibility);
$query = "SELECT DISTINCT\n ezcontentobject.published as published\n {$groupBySelectText}\n FROM\n ezcontentobject_tree\n INNER JOIN ezcontentobject ON (ezcontentobject.id = ezcontentobject_tree.contentobject_id)\n INNER JOIN ezcontentclass ON (ezcontentclass.id = ezcontentobject.contentclass_id)\n INNER JOIN ezcontentobject_name ON (\n ezcontentobject_name.contentobject_id = ezcontentobject_tree.contentobject_id AND\n ezcontentobject_name.content_version = ezcontentobject_tree.contentobject_version\n )\n\n {$attributeFilter['from']}\n {$extendedAttributeFilter['tables']}\n {$sqlPermissionChecking['from']}\n WHERE\n {$pathStringCond}\n {$extendedAttributeFilter['joins']}\n {$attributeFilter['where']}\n ezcontentclass.version = 0 AND\n {$notEqParentString}\n {$mainNodeOnlyCond}\n {$classCondition}\n " . eZContentLanguage::sqlFilter('ezcontentobject_name', 'ezcontentobject') . "\n {$showInvisibleNodesCond}\n {$sqlPermissionChecking['where']}\n {$groupBySQL}";
$db = eZDB::instance();
$server = count($sqlPermissionChecking['temp_tables']) > 0 ? eZDBInterface::SERVER_SLAVE : false;
if (!$offset && !$limit) {
$nodeListArray = $db->arrayQuery($query, array(), $server);
} else {
$nodeListArray = $db->arrayQuery($query, array('offset' => $offset, 'limit' => $limit), $server);
}
// cleanup temp tables
$db->dropTempTableList($sqlPermissionChecking['temp_tables']);
return $nodeListArray;
}
示例9: modify
function modify($tpl, $operatorName, $operatorParameters, &$rootNamespace, &$currentNamespace, &$operatorValue, &$namedParameters)
{
switch ($operatorName) {
case 'eztagcloud':
$tags = array();
$tagCloud = array();
$parentNodeID = 0;
$classIdentifier = '';
$classIdentifierSQL = '';
$pathString = '';
$parentNodeIDSQL = '';
$dbParams = array();
$params = $namedParameters['params'];
$orderBySql = 'ORDER BY ezkeyword.keyword ASC';
if (isset($params['class_identifier'])) {
$classIdentifier = $params['class_identifier'];
}
if (isset($params['parent_node_id'])) {
$parentNodeID = $params['parent_node_id'];
}
if (isset($params['limit'])) {
$dbParams['limit'] = $params['limit'];
}
if (isset($params['offset'])) {
$dbParams['offset'] = $params['offset'];
}
if (isset($params['sort_by']) && is_array($params['sort_by']) && count($params['sort_by'])) {
$orderBySql = 'ORDER BY ';
$orderArr = is_string($params['sort_by'][0]) ? array($params['sort_by']) : $params['sort_by'];
foreach ($orderArr as $key => $order) {
if ($key !== 0) {
$orderBySql .= ', ';
}
$direction = isset($order[1]) ? $order[1] : false;
switch ($order[0]) {
case 'keyword':
$orderBySql .= 'ezkeyword.keyword ' . ($direction ? 'ASC' : 'DESC');
break;
case 'count':
$orderBySql .= 'keyword_count ' . ($direction ? 'ASC' : 'DESC');
break;
}
}
}
$db = eZDB::instance();
if ($classIdentifier) {
$classID = eZContentObjectTreeNode::classIDByIdentifier($classIdentifier);
$classIdentifierSQL = "AND ezcontentobject.contentclass_id = '" . $classID . "'";
}
if ($parentNodeID) {
$node = eZContentObjectTreeNode::fetch($parentNodeID);
if ($node) {
$pathString = "AND ezcontentobject_tree.path_string like '" . $node->attribute('path_string') . "%'";
}
$parentNodeIDSQL = 'AND ezcontentobject_tree.node_id != ' . (int) $parentNodeID;
}
$showInvisibleNodesCond = eZContentObjectTreeNode::createShowInvisibleSQLString(true, false);
$limitation = false;
$limitationList = eZContentObjectTreeNode::getLimitationList($limitation);
$sqlPermissionChecking = eZContentObjectTreeNode::createPermissionCheckingSQL($limitationList);
$languageFilter = 'AND ' . eZContentLanguage::languagesSQLFilter('ezcontentobject');
$languageFilter .= 'AND ' . eZContentLanguage::languagesSQLFilter('ezcontentobject_attribute', 'language_id');
$rs = $db->arrayQuery("SELECT ezkeyword.keyword, count(ezkeyword.keyword) AS keyword_count\n FROM ezkeyword_attribute_link\n LEFT JOIN ezcontentobject_attribute\n ON ezkeyword_attribute_link.objectattribute_id = ezcontentobject_attribute.id\n LEFT JOIN ezcontentobject\n ON ezcontentobject_attribute.contentobject_id = ezcontentobject.id\n LEFT JOIN ezcontentobject_tree\n ON ezcontentobject_attribute.contentobject_id = ezcontentobject_tree.contentobject_id\n LEFT JOIN ezkeyword\n ON ezkeyword.id = ezkeyword_attribute_link.keyword_id\n {$sqlPermissionChecking['from']}\n WHERE\n ezcontentobject.status = " . eZContentObject::STATUS_PUBLISHED . "\n AND ezcontentobject_attribute.version = ezcontentobject.current_version\n AND ezcontentobject_tree.main_node_id = ezcontentobject_tree.node_id\n {$pathString}\n {$parentNodeIDSQL}\n {$classIdentifierSQL}\n {$showInvisibleNodesCond}\n {$sqlPermissionChecking['where']}\n {$languageFilter}\n GROUP BY ezkeyword.id, ezkeyword.keyword\n {$orderBySql}", $dbParams);
foreach ($rs as $row) {
$tags[$row['keyword']] = $row['keyword_count'];
}
// To be able to combine count sorting with keyword sorting
// without being limited by sql LIMIT result clipping
if (isset($params['post_sort_by'])) {
if ($params['post_sort_by'] === 'keyword') {
ksort($tags, SORT_LOCALE_STRING);
} else {
if ($params['post_sort_by'] === 'keyword_reverse') {
krsort($tags, SORT_LOCALE_STRING);
} else {
if ($params['post_sort_by'] === 'count') {
asort($tags, SORT_NUMERIC);
} else {
if ($params['post_sort_by'] === 'count_reverse') {
arsort($tags, SORT_NUMERIC);
}
}
}
}
}
$maxFontSize = 200;
$minFontSize = 100;
$maxCount = 0;
$minCount = 0;
if (count($tags) != 0) {
$maxCount = max(array_values($tags));
$minCount = min(array_values($tags));
}
$spread = $maxCount - $minCount;
if ($spread == 0) {
$spread = 1;
}
$step = ($maxFontSize - $minFontSize) / $spread;
foreach ($tags as $key => $value) {
$size = $minFontSize + ($value - $minCount) * $step;
//.........这里部分代码省略.........
示例10: fetchNodeByRating
//.........这里部分代码省略.........
}
if (isset($params['offset'])) {
$offset = (int) $params['offset'];
}
if ($includeNotRated) {
$ratingFromSql = 'LEFT JOIN ezstarrating
ON ezstarrating.contentobject_id = ezcontentobject.id';
$ratingWhereSql = '';
} else {
$ratingFromSql = ', ezstarrating';
$ratingWhereSql = 'ezstarrating.contentobject_id = ezcontentobject.id AND';
}
if (isset($params['sort_by']) && is_array($params['sort_by'])) {
$orderBySql = 'ORDER BY ';
$orderArr = is_string($params['sort_by'][0]) ? array($params['sort_by']) : $params['sort_by'];
foreach ($orderArr as $key => $order) {
$orderBySqlPart = false;
$direction = isset($order[1]) ? $order[1] : false;
switch ($order[0]) {
case 'rating':
$orderBySqlPart = 'rating ' . ($direction ? 'ASC' : 'DESC');
break;
case 'rating_count':
$orderBySqlPart = 'rating_count ' . ($direction ? 'ASC' : 'DESC');
break;
case 'object_count':
$selectSql .= 'COUNT( ezcontentobject.id ) as object_count,';
$orderBySqlPart = 'object_count ' . ($direction ? 'ASC' : 'DESC');
break;
case 'published':
$orderBySqlPart = 'ezcontentobject.published ' . ($direction ? 'ASC' : 'DESC');
break;
case 'modified':
$orderBySqlPart = 'ezcontentobject.modified ' . ($direction ? 'ASC' : 'DESC');
break;
case 'view_count':
// notice: will only fetch nodes that HAVE a entry in the ezview_counter table!!!
$selectSql .= 'ezview_counter.count as view_count,';
$fromSql .= ', ezview_counter';
$whereSql[] = 'ezcontentobject_tree.node_id = ezview_counter.node_id';
$orderBySqlPart = 'view_count ' . ($direction ? 'ASC' : 'DESC');
break;
default:
if (isset($params['extended_attribute_filter'])) {
$orderBySqlPart = $order[0] . ' ' . ($direction ? 'ASC' : 'DESC');
} else {
eZDebug::writeError("Unsuported sort type '{$order['0']}', for fetch_by_starrating().", __METHOD__);
}
break;
}
if ($orderBySqlPart) {
if ($key !== 0) {
$orderBySql .= ',';
}
$orderBySql .= $orderBySqlPart;
}
}
}
$whereSql = $whereSql ? implode($whereSql, ' AND ') . ' AND ' : '';
$extendedAttributeFilter = eZContentObjectTreeNode::createExtendedAttributeFilterSQLStrings($params['extended_attribute_filter']);
$limitation = isset($params['limitation']) && is_array($params['limitation']) ? $params['limitation'] : false;
$limitationList = eZContentObjectTreeNode::getLimitationList($limitation);
$sqlPermissionChecking = eZContentObjectTreeNode::createPermissionCheckingSQL($limitationList);
$languageFilter = ' AND ' . eZContentLanguage::languagesSQLFilter('ezcontentobject');
$useVersionName = true;
$versionNameTables = eZContentObjectTreeNode::createVersionNameTablesSQLString($useVersionName);
$versionNameTargets = eZContentObjectTreeNode::createVersionNameTargetsSQLString($useVersionName);
$versionNameJoins = eZContentObjectTreeNode::createVersionNameJoinsSQLString($useVersionName, false);
$mainNodeOnlyCond = eZContentObjectTreeNode::createMainNodeConditionSQLString($mainNodeOnly);
$showInvisibleNodesCond = eZContentObjectTreeNode::createShowInvisibleSQLString(!$ignoreVisibility);
$db = eZDB::instance();
$sql = "SELECT\n {$selectSql}\n AVG( ezstarrating.rating_average ) as rating,\n SUM( ezstarrating.rating_count ) as rating_count,\n ezcontentclass.serialized_name_list as class_serialized_name_list,\n ezcontentclass.identifier as class_identifier,\n ezcontentclass.is_container as is_container\n {$versionNameTargets}\n {$extendedAttributeFilter['columns']}\n FROM\n ezcontentobject_tree,\n ezcontentobject_tree owner_tree,\n ezcontentclass\n {$fromSql}\n {$versionNameTables}\n {$extendedAttributeFilter['tables']}\n {$sqlPermissionChecking['from']}\n ,ezcontentobject\n {$ratingFromSql}\n WHERE\n {$extendedAttributeFilter['joins']}\n {$ratingWhereSql}\n ezcontentobject.id = ezcontentobject_tree.contentobject_id AND\n ezcontentobject.owner_id = owner_tree.contentobject_id AND\n owner_tree.node_id = owner_tree.main_node_id AND\n ezcontentclass.version=0 AND\n ezcontentclass.id = ezcontentobject.contentclass_id AND\n {$mainNodeOnlyCond}\n {$classCondition}\n {$whereSql}\n\t {$versionNameJoins}\n\t {$showInvisibleNodesCond}\n\t {$sqlPermissionChecking['where']}\n\t {$languageFilter}\n {$groupBySql}\n {$orderBySql}";
$server = isset($sqlPermissionChecking['temp_tables'][0]) ? eZDBInterface::SERVER_SLAVE : false;
if ($offset !== false || $limit !== false) {
$rows = $db->arrayQuery($sql, array('offset' => $offset, 'limit' => $limit), $server);
} else {
$rows = $db->arrayQuery($sql, null, $server);
}
$db->dropTempTableList($sqlPermissionChecking['temp_tables']);
unset($db);
if (isset($rows[0]) && is_array($rows)) {
if ($asObject) {
$ret = ezsrRatingObjectTreeNode::makeObjectsArray($rows);
if ($loadDataMap) {
eZContentObject::fillNodeListAttributes($ret);
}
} else {
$ret = $rows;
}
} else {
if ($rows === false) {
eZDebug::writeError('The ezstarrating table seems to be missing,
contact your administrator', __METHOD__);
$ret = array();
} else {
$ret = array();
}
}
return $ret;
}
示例11: modify
function modify($tpl, $operatorName, $operatorParameters, &$rootNamespace, &$currentNamespace, &$operatorValue, &$namedParameters)
{
switch ($operatorName) {
case 'eztagcloud':
/*
$tags = array();
$tagCloud = array();
$parentNodeID = 0;
$classID = '';
$classIdentifier = '';
$classIdentifierSQL = '';
$pathString = '';
$parentNodeIDSQL = '';
if ( isset( $namedParameters['params']['class_identifier'] ) )
$classIdentifier = $namedParameters['params']['class_identifier'];
if ( isset( $namedParameters['params']['parent_node_id'] ) )
$parentNodeID = $namedParameters['params']['parent_node_id'];
if ( isset( $namedParameters['params']['limit'] ) )
$tagCloudLimit = $namedParameters['params']['limit'];
else
$tagCloudLimit = 25;
include_once( 'lib/ezdb/classes/ezdb.php' );
$db = eZDB::instance();
if( $classIdentifier )
{
$classID = eZContentObjectTreeNode::classIDByIdentifier( $classIdentifier );
$classIdentifierSQL = "AND ezcontentobject.contentclass_id = $classID";
}
if( $parentNodeID )
{
$node = eZContentObjectTreeNode::fetch( $parentNodeID );
if ( $node )
$pathString = "AND ezcontentobject_tree.path_string like '" . $node->attribute( 'path_string' ) . "%'";
$parentNodeIDSQL = "AND ezcontentobject_tree.node_id != " . (int)$parentNodeID;
}
$showInvisibleNodesCond = eZContentObjectTreeNode::createShowInvisibleSQLString( true, false );
$limitation = false;
$limitationList = eZContentObjectTreeNode::getLimitationList( $limitation );
$sqlPermissionChecking = eZContentObjectTreeNode::createPermissionCheckingSQL( $limitationList );
$versionNameJoins = " AND ezcontentobject_tree.contentobject_id = ezcontentobject_name.contentobject_id AND
ezcontentobject_tree.contentobject_version = ezcontentobject_name.content_version AND ";
$languageFilter = " AND " . eZContentLanguage::languagesSQLFilter( 'ezcontentobject' );
$versionNameJoins .= eZContentLanguage::sqlFilter( 'ezcontentobject_name', 'ezcontentobject' );
$rs = $db->arrayQuery( "SELECT DISTINCT ezkeyword.keyword
FROM ezkeyword,
ezkeyword_attribute_link,
ezcontentobject,
ezcontentobject_name,
ezcontentobject_attribute,
ezcontentobject_tree
$sqlPermissionChecking[from]
WHERE ezkeyword.id = ezkeyword_attribute_link.keyword_id
AND ezkeyword_attribute_link.objectattribute_id = ezcontentobject_attribute.id
AND ezcontentobject_attribute.contentobject_id = ezcontentobject_tree.contentobject_id
AND ezcontentobject.status = '".eZContentObject::STATUS_PUBLISHED."'
AND ezcontentobject_attribute.version = ezcontentobject.current_version
AND ezcontentobject_tree.main_node_id = ezcontentobject_tree.node_id
$pathString
$parentNodeIDSQL
$classIdentifierSQL
$showInvisibleNodesCond
$sqlPermissionChecking[where]
$languageFilter
$versionNameJoins
ORDER BY ezkeyword.keyword ASC" );
include_once ('lib/ezutils/classes/ezfunctionhandler.php');
foreach( $rs as $row )
{
$tags[$row['keyword']] = eZFunctionHandler::execute( 'content', 'keyword_count', array( 'alphabet' => $row['keyword'],
'strict_matching' => true,
'classid' => $classID ) );
}
$maxFontSize = 180;
$minFontSize = 90;
$maxCount = 0;
$minCount = 0;
if( count( $tags ) != 0 )
{
$maxCount = max( array_values( $tags ) );
$minCount = min( array_values($tags ) );
}
$spread = $maxCount - $minCount;
if ( $spread == 0 )
$spread = 1;
//.........这里部分代码省略.........
示例12: trashList
static function trashList( $params = false, $asCount = false )
{
if ( $params === false )
{
$params = array( 'Offset' => false,
'Limit' => false,
'SortBy' => false,
'AttributeFilter' => false,
);
}
$offset = ( isset( $params['Offset'] ) && is_numeric( $params['Offset'] ) ) ? $params['Offset'] : false;
$limit = ( isset( $params['Limit'] ) && is_numeric( $params['Limit'] ) ) ? $params['Limit'] : false;
$asObject = ( isset( $params['AsObject'] ) ) ? $params['AsObject'] : true;
$objectNameFilter = ( isset( $params['ObjectNameFilter'] ) ) ? $params['ObjectNameFilter'] : false;
$sortBy = ( isset( $params['SortBy'] ) && is_array( $params['SortBy'] ) ) ? $params['SortBy'] : array( array( 'name' ) );
if ( $asCount )
{
$sortingInfo = eZContentObjectTreeNode::createSortingSQLStrings( false );
}
else
{
$sortingInfo = eZContentObjectTreeNode::createSortingSQLStrings( $sortBy, 'ezcot' );
}
$attributeFilter = eZContentObjectTreeNode::createAttributeFilterSQLStrings( $params['AttributeFilter'], $sortingInfo );
if ( $attributeFilter === false )
{
return null;
}
$useVersionName = true;
$versionNameTables = eZContentObjectTreeNode::createVersionNameTablesSQLString ( $useVersionName );
$versionNameTargets = eZContentObjectTreeNode::createVersionNameTargetsSQLString( $useVersionName );
$versionNameJoins = eZContentObjectTreeNode::createVersionNameJoinsSQLString ( $useVersionName, false, false, false, 'ezcot' );
$languageFilter = ' AND ' . eZContentLanguage::languagesSQLFilter( 'ezcontentobject' );
$objectNameFilterSQL = eZContentObjectTreeNode::createObjectNameFilterConditionSQLString( $objectNameFilter );
$limitation = ( isset( $params['Limitation'] ) && is_array( $params['Limitation'] ) ) ? $params['Limitation']: false;
$limitationList = eZContentObjectTreeNode::getLimitationList( $limitation );
$sqlPermissionChecking = eZContentObjectTreeNode::createPermissionCheckingSQL( $limitationList, 'ezcontentobject_trash', 'ezcot' );
if ( $asCount )
{
$query = "SELECT count(*) as count ";
}
else
{
$query = "SELECT
ezcontentobject.*,
ezcot.*,
ezcontentclass.serialized_name_list as class_serialized_name_list,
ezcontentclass.identifier as class_identifier
$versionNameTargets
$sortingInfo[attributeTargetSQL] ";
}
$query .= "FROM
ezcontentobject_trash ezcot,
ezcontentobject,
ezcontentclass
$versionNameTables
$sortingInfo[attributeFromSQL]
$attributeFilter[from]
$sqlPermissionChecking[from]
WHERE
ezcontentclass.version=0 AND
ezcot.contentobject_id = ezcontentobject.id AND
ezcontentclass.id = ezcontentobject.contentclass_id AND
$sortingInfo[attributeWhereSQL]
$attributeFilter[where]
$versionNameJoins
$sqlPermissionChecking[where]
$objectNameFilterSQL
$languageFilter
";
if ( !$asCount && $sortingInfo['sortingFields'] && strlen( $sortingInfo['sortingFields'] ) > 5 )
$query .= " ORDER BY $sortingInfo[sortingFields]";
$db = eZDB::instance();
if ( !$offset && !$limit )
$trashRowsArray = $db->arrayQuery( $query );
else
$trashRowsArray = $db->arrayQuery( $query, array( 'offset' => $offset,
'limit' => $limit ) );
// cleanup temp tables
$db->dropTempTableList( $sqlPermissionChecking['temp_tables'] );
if ( $asCount )
{
return $trashRowsArray[0]['count'];
}
else if ( $asObject )
{
$retTrashNodes = array();
foreach ( array_keys( $trashRowsArray ) as $key )
{
//.........这里部分代码省略.........
示例13: calendar
static function calendar( $params = false, $nodeID = 0 )
{
if ( !is_numeric( $nodeID ) and !is_array( $nodeID ) )
{
return array();
}
if ( $params === false )
{
$params = array( 'Depth' => false,
'Offset' => false,
'Limit' => false,
'AttributeFilter' => false,
'ExtendedAttributeFilter' => false,
'ClassFilterType' => false,
'ClassFilterArray' => false,
'GroupBy' => false );
}
$offset = ( isset( $params['Offset'] ) && is_numeric( $params['Offset'] ) ) ? $params['Offset'] : false;
$limit = ( isset( $params['Limit'] ) && is_numeric( $params['Limit'] ) ) ? $params['Limit'] : false;
$depth = ( isset( $params['Depth'] ) && is_numeric( $params['Depth'] ) ) ? $params['Depth'] : false;
$depthOperator = ( isset( $params['DepthOperator'] ) ) ? $params['DepthOperator'] : false;
$groupBy = ( isset( $params['GroupBy'] ) ) ? $params['GroupBy'] : false;
$mainNodeOnly = ( isset( $params['MainNodeOnly'] ) ) ? $params['MainNodeOnly'] : false;
$ignoreVisibility = ( isset( $params['IgnoreVisibility'] ) ) ? $params['IgnoreVisibility'] : false;
if ( !isset( $params['ClassFilterType'] ) )
$params['ClassFilterType'] = false;
$classCondition = eZContentObjectTreeNode::createClassFilteringSQLString( $params['ClassFilterType'], $params['ClassFilterArray'] );
$attributeFilter = eZContentObjectTreeNode::createAttributeFilterSQLStrings( $params['AttributeFilter'], $sortingInfo );
$extendedAttributeFilter = eZContentObjectTreeNode::createExtendedAttributeFilterSQLStrings( $params['ExtendedAttributeFilter'] );
$mainNodeOnlyCond = eZContentObjectTreeNode::createMainNodeConditionSQLString( $mainNodeOnly );
$pathStringCond = '';
$notEqParentString = '';
eZContentObjectTreeNode::createPathConditionAndNotEqParentSQLStrings( $pathStringCond, $notEqParentString, $nodeID, $depth, $depthOperator );
$groupBySelectText = '';
$groupBySQL = $extendedAttributeFilter['group_by'];
if ( !$groupBySQL )
{
eZContentObjectTreeNode::createGroupBySQLStrings( $groupBySelectText, $groupBySQL, $groupBy );
}
else if ( $groupBy )
{
eZDebug::writeError( "Cannot use group_by parameter together with extended attribute filter which sets group_by!", __METHOD__ );
}
$useVersionName = true;
$versionNameTables = eZContentObjectTreeNode::createVersionNameTablesSQLString( $useVersionName );
$versionNameJoins = eZContentObjectTreeNode::createVersionNameJoinsSQLString( $useVersionName, false );
$limitation = ( isset( $params['Limitation'] ) && is_array( $params['Limitation'] ) ) ? $params['Limitation']: false;
$limitationList = eZContentObjectTreeNode::getLimitationList( $limitation );
$sqlPermissionChecking = eZContentObjectTreeNode::createPermissionCheckingSQL( $limitationList );
// Determine whether we should show invisible nodes.
$showInvisibleNodesCond = eZContentObjectTreeNode::createShowInvisibleSQLString( !$ignoreVisibility );
$query = "SELECT DISTINCT
ezcontentobject.published as published
$groupBySelectText
FROM
ezcontentobject_tree,
ezcontentobject,ezcontentclass
$versionNameTables
$attributeFilter[from]
$extendedAttributeFilter[tables]
$sqlPermissionChecking[from]
WHERE
$pathStringCond
$extendedAttributeFilter[joins]
$attributeFilter[where]
ezcontentclass.version=0
AND
$notEqParentString
$mainNodeOnlyCond
ezcontentobject_tree.contentobject_id = ezcontentobject.id AND
ezcontentclass.id = ezcontentobject.contentclass_id AND
$classCondition
$versionNameJoins
$showInvisibleNodesCond
$sqlPermissionChecking[where]
$groupBySQL";
$db = eZDB::instance();
$server = count( $sqlPermissionChecking['temp_tables'] ) > 0 ? eZDBInterface::SERVER_SLAVE : false;
if ( !$offset && !$limit )
{
$nodeListArray = $db->arrayQuery( $query, array(), $server );
}
else
{
$nodeListArray = $db->arrayQuery( $query, array( 'offset' => $offset,
'limit' => $limit ),
$server );
//.........这里部分代码省略.........
示例14: search
//.........这里部分代码省略.........
}
$doSubTreeSearch = true;
}
$i++;
}
if ($doSubTreeSearch == true) {
$subTreeNodeSQL = "( " . $subTreeNodeSQL;
// $subTreeTable = ", ezcontentobject_tree ";
$subTreeTable = '';
$subTreeNodeSQL .= " ) ";
$nodeQuery = "SELECT node_id, path_string FROM ezcontentobject_tree WHERE node_id IN {$subTreeNodeSQL}";
// Build SQL subtre search query
$subTreeSQL = " ( ";
$nodeArray = $db->arrayQuery($nodeQuery);
$i = 0;
foreach ($nodeArray as $node) {
$pathString = $node['path_string'];
$subTreeSQL .= " ezcontentobject_tree.path_string like '{$pathString}%' ";
if ($i < count($nodeArray) - 1) {
$subTreeSQL .= " OR ";
}
$i++;
}
$subTreeSQL .= " ) AND ";
$this->GeneralFilter['subTreeTable'] = $subTreeTable;
$this->GeneralFilter['subTreeSQL'] = $subTreeSQL;
}
}
$limitation = false;
if (isset($params['Limitation'])) {
$limitation = $params['Limitation'];
}
$limitationList = eZContentObjectTreeNode::getLimitationList($limitation);
$sqlPermissionChecking = eZContentObjectTreeNode::createPermissionCheckingSQL($limitationList);
$this->GeneralFilter['sqlPermissionChecking'] = $sqlPermissionChecking;
$versionNameJoins = " AND " . eZContentLanguage::sqlFilter('ezcontentobject_name', 'ezcontentobject');
/// Only support AND search at this time
// build fulltext search SQL part
$searchWordArray = $this->splitString($fullText);
$searchWordCount = count($searchWordArray);
$fullTextSQL = "";
$stopWordArray = array();
$ini = eZINI::instance();
$tmpTableCount = 0;
$i = 0;
foreach ($searchTypes['and'] as $searchType) {
$methodName = $this->constructMethodName($searchType);
$intermediateResult = $this->callMethod($methodName, array($searchType));
if ($intermediateResult == false) {
// cleanup temp tables
$db->dropTempTableList($sqlPermissionChecking['temp_tables']);
return array("SearchResult" => array(), "SearchCount" => 0, "StopWordArray" => array());
}
}
// Do not execute search if site.ini:[SearchSettings]->AllowEmptySearch is enabled, but no conditions are set.
if (!$searchDateQuery && !$sectionQuery && !$classQuery && !$classAttributeQuery && !$searchPartsArray && !$subTreeSQL) {
// cleanup temp tables
$db->dropTempTableList($sqlPermissionChecking['temp_tables']);
return array("SearchResult" => array(), "SearchCount" => 0, "StopWordArray" => array());
}
$i = $this->TempTablesCount;
// Loop every word and insert result in temporary table
// Determine whether we should search invisible nodes.
$showInvisibleNodesCond = eZContentObjectTreeNode::createShowInvisibleSQLString(!$ignoreVisibility);
foreach ($searchPartsArray as $searchPart) {
$stopWordThresholdValue = 100;
示例15: tagCloud
/**
* Returns the tag cloud for specified parameters using eZ Publish database
*
* @param array $params
*
* @return array
*/
private function tagCloud($params)
{
$parentNodeID = 0;
$classIdentifier = '';
$classIdentifierSQL = '';
$pathString = '';
$parentNodeIDSQL = '';
$dbParams = array();
$orderBySql = 'ORDER BY eztags.keyword ASC';
if (isset($params['class_identifier'])) {
$classIdentifier = $params['class_identifier'];
}
if (isset($params['parent_node_id'])) {
$parentNodeID = $params['parent_node_id'];
}
if (isset($params['limit'])) {
$dbParams['limit'] = $params['limit'];
}
if (isset($params['offset'])) {
$dbParams['offset'] = $params['offset'];
}
if (isset($params['sort_by']) && is_array($params['sort_by']) && !empty($params['sort_by'])) {
$orderBySql = 'ORDER BY ';
$orderArr = is_string($params['sort_by'][0]) ? array($params['sort_by']) : $params['sort_by'];
foreach ($orderArr as $key => $order) {
if ($key !== 0) {
$orderBySql .= ', ';
}
$direction = isset($order[1]) ? $order[1] : false;
switch ($order[0]) {
case 'keyword':
$orderBySql .= 'eztags.keyword ' . ($direction ? 'ASC' : 'DESC');
break;
case 'count':
$orderBySql .= 'keyword_count ' . ($direction ? 'ASC' : 'DESC');
break;
}
}
}
$db = eZDB::instance();
if ($classIdentifier) {
$classID = eZContentObjectTreeNode::classIDByIdentifier($classIdentifier);
$classIdentifierSQL = "AND ezcontentobject.contentclass_id = '" . $classID . "'";
}
if ($parentNodeID) {
$node = eZContentObjectTreeNode::fetch($parentNodeID);
if ($node) {
$pathString = "AND ezcontentobject_tree.path_string like '" . $node->attribute('path_string') . "%'";
}
$parentNodeIDSQL = "AND ezcontentobject_tree.node_id != " . (int) $parentNodeID;
}
$showInvisibleNodesCond = eZContentObjectTreeNode::createShowInvisibleSQLString(true, false);
$limitation = false;
$limitationList = eZContentObjectTreeNode::getLimitationList($limitation);
$sqlPermissionChecking = eZContentObjectTreeNode::createPermissionCheckingSQL($limitationList);
$languageFilter = 'AND ' . eZContentLanguage::languagesSQLFilter('ezcontentobject');
$languageFilter .= 'AND ' . eZContentLanguage::languagesSQLFilter('ezcontentobject_attribute', 'language_id');
$rs = $db->arrayQuery("SELECT eztags.id, eztags.keyword, COUNT(DISTINCT ezcontentobject.id) AS keyword_count\n FROM eztags_attribute_link\n LEFT JOIN ezcontentobject_attribute\n ON eztags_attribute_link.objectattribute_id = ezcontentobject_attribute.id\n AND eztags_attribute_link.objectattribute_version = ezcontentobject_attribute.version\n LEFT JOIN ezcontentobject\n ON ezcontentobject_attribute.contentobject_id = ezcontentobject.id\n LEFT JOIN ezcontentobject_tree\n ON ezcontentobject_attribute.contentobject_id = ezcontentobject_tree.contentobject_id\n LEFT JOIN eztags\n ON eztags.id = eztags_attribute_link.keyword_id\n LEFT JOIN eztags_keyword\n ON eztags.id = eztags_keyword.keyword_id\n {$sqlPermissionChecking['from']}\n WHERE " . eZContentLanguage::languagesSQLFilter('eztags') . "\n AND " . eZContentLanguage::sqlFilter('eztags_keyword', 'eztags') . "\n AND ezcontentobject.status = " . eZContentObject::STATUS_PUBLISHED . "\n AND ezcontentobject_attribute.version = ezcontentobject.current_version\n AND ezcontentobject_tree.main_node_id = ezcontentobject_tree.node_id\n {$pathString}\n {$parentNodeIDSQL}\n {$classIdentifierSQL}\n {$showInvisibleNodesCond}\n {$sqlPermissionChecking['where']}\n {$languageFilter}\n GROUP BY eztags.id, eztags.keyword\n {$orderBySql}", $dbParams);
$tagsCountList = array();
foreach ($rs as $row) {
$tagsCountList[$row['id']] = $row['keyword_count'];
}
/** @var eZTagsObject[] $tagObjects */
$tagObjects = eZTagsObject::fetchList(array('id' => array(array_keys($tagsCountList))));
if (!is_array($tagObjects) || empty($tagObjects)) {
return array();
}
$tagSortArray = array();
$tagKeywords = array();
$tagCounts = array();
foreach ($tagObjects as $tag) {
$tagKeyword = $tag->attribute('keyword');
$tagCount = $tagsCountList[$tag->attribute('id')];
$tagSortArray[] = array('keyword' => $tagKeyword, 'count' => $tagCount, 'tag' => $tag);
$tagKeywords[] = $tagKeyword;
$tagCounts[] = $tagCount;
}
if (isset($params['post_sort_by'])) {
if ($params['post_sort_by'] === 'keyword') {
array_multisort($tagKeywords, SORT_ASC, SORT_LOCALE_STRING, $tagSortArray);
} else {
if ($params['post_sort_by'] === 'keyword_reverse') {
array_multisort($tagKeywords, SORT_DESC, SORT_LOCALE_STRING, $tagSortArray);
} else {
if ($params['post_sort_by'] === 'count') {
array_multisort($tagCounts, SORT_ASC, SORT_NUMERIC, $tagSortArray);
} else {
if ($params['post_sort_by'] === 'count_reverse') {
array_multisort($tagCounts, SORT_DESC, SORT_NUMERIC, $tagSortArray);
}
}
}
}
//.........这里部分代码省略.........