本文整理汇总了PHP中DataObjectSet::removeDuplicates方法的典型用法代码示例。如果您正苦于以下问题:PHP DataObjectSet::removeDuplicates方法的具体用法?PHP DataObjectSet::removeDuplicates怎么用?PHP DataObjectSet::removeDuplicates使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DataObjectSet
的用法示例。
在下文中一共展示了DataObjectSet::removeDuplicates方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: ProductsShowable
/**
* Recursively create a set of {@link Product} pages
* that belong to this ProductGroup as a child, related
* Product, or through one of this ProductGroup's nested
* ProductGroup pages.
*
* @param string $extraFilter Additional SQL filters to apply to the Product retrieval
* @param array $permissions
* @return DataObjectSet
*/
function ProductsShowable($extraFilter = '', $permissions = array("Show All Products"))
{
$filter = "`ShowInMenus` = 1";
if ($extraFilter) {
$filter .= " AND {$extraFilter}";
}
$products = new DataObjectSet();
$childProducts = DataObject::get('Product', "`ParentID` = {$this->ID} AND {$filter}");
$relatedProducts = $this->getManyManyComponents('Products', $filter);
if ($childProducts) {
$products->merge($childProducts);
}
if ($relatedProducts) {
$products->merge($relatedProducts);
}
if (in_array($this->ChildGroupsPermission, $permissions)) {
if ($childGroups = $this->ChildGroups()) {
foreach ($childGroups as $childGroup) {
$products->merge($childGroup->ProductsShowable($extraFilter, $permissions));
}
}
}
$products->removeDuplicates();
return $products;
}
示例2: AllGroupPermissions
/**
* Collate permissions for this and all parent folders.
*
* @return DataObjectSet
*/
function AllGroupPermissions()
{
$groupSet = new DataObjectSet();
$groups = $this->owner->GroupPermissions();
foreach ($groups as $group) {
$groupSet->push($group);
}
if ($this->owner->ParentID) {
$groupSet->merge($this->owner->InheritedGroupPermissions());
}
$groupSet->removeDuplicates();
return $groupSet;
}
开发者ID:hamishcampbell,项目名称:silverstripe-securefiles,代码行数:18,代码来源:SecureFileGroupPermissionDecorator.php
示例3: AllMemberPermissions
/**
* Collate permissions for this and all parent folders.
*
* @return DataObjectSet
*/
function AllMemberPermissions()
{
$memberSet = new DataObjectSet();
$members = $this->owner->MemberPermissions();
foreach ($members as $member) {
$memberSet->push($member);
}
if ($this->owner->ParentID) {
$memberSet->merge($this->owner->InheritedMemberPermissions());
}
$memberSet->removeDuplicates();
return $memberSet;
}
开发者ID:hamishcampbell,项目名称:silverstripe-securefiles,代码行数:18,代码来源:SecureFileMemberPermissionDecorator.php
示例4: refresh
/**
* Refreshes the file list. If passed an array of IDs in the request,
* it augments the list with those files.
*
* @param SS_HTTPRequest
* @return SSViewer
*/
public function refresh(SS_HTTPRequest $r)
{
if ($r->requestVar('ids')) {
$ids = array_unique($r->requestVar('ids'));
$files = new DataObjectSet();
$implodestring = implode(',', $ids);
$implodestring = preg_replace("/^[,]/", "", $implodestring);
if ($set = DataObject::get("File", "`ID` IN ({$implodestring})")) {
foreach ($set as $file) {
$this->processFile($file);
$files->push($file);
}
$files->merge($this->Files());
$files->removeDuplicates();
} else {
die("File {$id} doesn't exist");
}
} else {
$files = $this->Files();
}
return $this->customise(array('Files' => $files))->renderWith($this->AttachedFilesTemplate);
}
示例5: getOrphanedPages
/**
* Gets all orphans from "Stage" and "Live" stages.
*
* @param string $class
* @param string $filter
* @param string $sort
* @param string $join
* @param int|array $limit
* @return DataObjectSet
*/
function getOrphanedPages($class = 'SiteTree', $filter = '', $sort = null, $join = null, $limit = null)
{
$filter .= $filter ? ' AND ' : '';
$filter .= sprintf("\"%s\".\"ParentID\" != 0 AND \"Parents\".\"ID\" IS NULL", $class);
$orphans = new DataObjectSet();
foreach (array('Stage', 'Live') as $stage) {
$joinByStage = $join;
$table = $class;
$table .= $stage == 'Live' ? '_Live' : '';
$joinByStage .= sprintf("LEFT JOIN \"%s\" AS \"Parents\" ON \"%s\".\"ParentID\" = \"Parents\".\"ID\"", $table, $table);
$stageOrphans = Versioned::get_by_stage($class, $stage, $filter, $sort, $joinByStage, $limit);
$orphans->merge($stageOrphans);
}
$orphans->removeDuplicates();
return $orphans;
}
示例6: testRemoveDuplicates
function testRemoveDuplicates()
{
// Note that PageComment and DataObjectSetTest_TeamComment are both descendants of DataObject, and don't
// share an inheritance relationship below that.
$pageComments = DataObject::get('DataObjectSetTest_TeamComment');
$teamComments = DataObject::get('DataObjectSetTest_TeamComment');
/* Test default functionality (remove by ID). We'd expect to loose all our
* team comments as they have the same IDs as the first three page comments */
$allComments = new DataObjectSet();
$allComments->merge($pageComments);
$allComments->merge($teamComments);
$this->assertEquals($allComments->Count(), 6);
$allComments->removeDuplicates();
$this->assertEquals($allComments->Count(), 3, 'Standard functionality is to remove duplicate base class/IDs');
/* Now test removing duplicates based on a common field. In this case we shall
* use 'Name', so we can get all the unique commentators */
$comment = new DataObjectSetTest_TeamComment();
$comment->Name = "Bob";
$allComments->push($comment);
$this->assertEquals($allComments->Count(), 4);
$allComments->removeDuplicates('Name');
$this->assertEquals($allComments->Count(), 3, 'There are 3 uniquely named commentators');
// Ensure that duplicates are removed where the base data class is the same.
$mixedSet = new DataObjectSet();
$mixedSet->push(new SiteTree(array('ID' => 1)));
$mixedSet->push(new Page(array('ID' => 1)));
// dup: same base class and ID
$mixedSet->push(new Page(array('ID' => 1)));
// dup: more than one dup of the same object
$mixedSet->push(new Page(array('ID' => 2)));
// not dup: same type again, but different
$mixedSet->push(new SiteTree(array('ID' => 1)));
// dup: another dup, not consequetive.
$mixedSet->removeDuplicates('ID');
$this->assertEquals($mixedSet->Count(), 2, 'There are 3 unique data objects in a very mixed set');
}
示例7: getContextNav
function getContextNav() {
if($this->ID > 0) {
$pages = new DataObjectSet();
$pages->push($this->Parent());
$pages->merge($this->getPagesBySibling());
$pages->merge($this->getPagesByKeyword());
$pages->merge($this->getPagesByBlogTags());
$pages->merge($this->getPagesByReferer());
$pages->removeDuplicates();
$currentPage = $pages->find('ID', $this->ID);
if($currentPage) $pages->remove($currentPage);
return $pages;
} else {
return false;
}
}
示例8: getStickyTopics
/**
* Return the Sticky Threads
* @return DataObjectSet
*/
function getStickyTopics($include_global = true)
{
$standard = DataObject::get("ForumThread", "\"ForumThread\".\"ForumID\" = {$this->ID} AND \"ForumThread\".\"IsSticky\" = 1", "MAX(\"PostList\".\"Created\") DESC", "INNER JOIN \"Post\" AS \"PostList\" ON \"PostList\".\"ThreadID\" = \"ForumThread\".\"ID\"");
if (!$standard || !$standard->count()) {
$standard = new DataObjectSet();
}
if ($include_global) {
// We have to join posts through their forums to their holders, and then restrict the holders to just the parent of this forum.
$global = DataObject::get("ForumThread", "\"ForumThread\".\"IsGlobalSticky\" = 1", "MAX(\"PostList\".\"Created\") DESC", "INNER JOIN \"Post\" AS \"PostList\" ON \"PostList\".\"ThreadID\" = \"ForumThread\".\"ID\"");
if (!$global || !$global->count()) {
$global = new DataObjectSet();
}
$standard->merge($global);
$standard->removeDuplicates();
}
if ($standard->count()) {
$standard->sort('PostList.Created');
}
return $standard;
}
示例9: get_by_publisher
public static function get_by_publisher($class, $publisher, $status = null)
{
// To ensure 2.3 and 2.4 compatibility
$bt = defined('DB::USE_ANSI_SQL') ? "\"" : "`";
if ($status) {
$statusStr = "'" . implode("','", $status) . "'";
}
$classes = (array) ClassInfo::subclassesFor($class);
$classesSQL = implode("','", $classes);
// build filter
$filter = "{$bt}WorkflowRequest{$bt}.{$bt}ClassName{$bt} IN ('{$classesSQL}') ";
if ($status) {
$filter .= "AND {$bt}WorkflowRequest{$bt}.{$bt}Status{$bt} IN (" . $statusStr . ")";
}
$onDraft = Versioned::get_by_stage("SiteTree", "Stage", $filter, "{$bt}SiteTree{$bt}.{$bt}LastEdited{$bt} DESC", "LEFT JOIN {$bt}WorkflowRequest{$bt} ON {$bt}WorkflowRequest{$bt}.{$bt}PageID{$bt} = {$bt}SiteTree{$bt}.{$bt}ID{$bt} ");
$onLive = Versioned::get_by_stage("SiteTree", "Live", $filter, "{$bt}SiteTree_Live{$bt}.{$bt}LastEdited{$bt} DESC", "LEFT JOIN {$bt}WorkflowRequest{$bt} ON {$bt}WorkflowRequest{$bt}.{$bt}PageID{$bt} = {$bt}SiteTree_Live{$bt}.{$bt}ID{$bt} ");
$return = new DataObjectSet();
$return->merge($onDraft);
$return->merge($onLive);
$return->removeDuplicates();
$canPublish = SiteTree::batch_permission_check($return->column('ID'), $publisher->ID, 'CanPublishType', 'SiteTree_PublisherGroups', 'canPublish');
foreach ($return as $page) {
if (!isset($canPublish[$page->ID]) || !$canPublish[$page->ID]) {
$return->remove($page);
}
}
return $return;
}