if((isset($_GET['roomwide_search_type']) and in_array(CS_MATERIAL_TYPE, $_GET['roomwide_search_type'])) or !isset($_GET['roomwide_search_type'])){ foreach($context_array as $context){ $rubric_manager = $environment->getManager(CS_MATERIAL_TYPE); $rubric_manager->setContextLimit($context); if(!empty($_GET['search'])){ $rubric_manager->setSearchLimit($_GET['search']); } $rubric_manager->showNoNotActivatedEntries(); $rubric_manager->select(); $item_list = $rubric_manager->get(); $complete_list->addList($item_list); } } $complete_list->sortby('modification_date'); $complete_list->reverse(); $count = $complete_list->getCount(); $number_of_pages = 0; if($count % $interval == 0){ $number_of_pages = ($count / $interval)-1; } else { $number_of_pages = (($count - ($count % $interval)) / $interval); } if($number_of_pages == -1){ $number_of_pages++; } $result_page = $_GET['page']; if($result_page > $number_of_pages){
// get all rooms echo "Lade Rauminformationen..."; nl(); nl(); $roomManager = $environment->getRoomManager(); $roomManager->setContextLimit($oldPortalId); $roomManager->select(); $roomList = $roomManager->get(); // determine rooms to move $moveList = new cs_list(); $moveIdArray = array(); $roomListItem = $roomList->getFirst(); while ($roomListItem) { if (in_array($roomListItem->getItemID(), $csvContent)) { // ensure community rooms are listed before project rooms if ($roomListItem->isCommunityRoom()) { $moveList->reverse(); $moveList->add($roomListItem); $moveList->reverse(); } else { $moveList->add($roomListItem); } $moveIdArray[] = $roomListItem->getItemID(); } $roomListItem = $roomList->getNext(); } $numRoomsMoved = $moveList->getCount(); // check for rooms, that were unable to find
public function actionQuery() { $return = array("items" => array()); $start = $this->_data["options"]["start"]; $numEntries = $this->_data["options"]["numEntries"]; $itemManager = $this->_environment->getItemManager(); $currentUser = $this->_environment->getCurrentUserItem(); // collection room ids $room_id_array = array(); $grouproom_list = $currentUser->getUserRelatedGroupList(); if (isset($grouproom_list) and $grouproom_list->isNotEmpty()) { $grouproom_list->reverse(); $grouproom_item = $grouproom_list->getFirst(); while ($grouproom_item) { $project_room_id = $grouproom_item->getLinkedProjectItemID(); if (in_array($project_room_id, $room_id_array)) { $room_id_array_temp = array(); foreach ($room_id_array as $value) { $room_id_array_temp[] = $value; if ($value == $project_room_id) { $room_id_array_temp[] = $grouproom_item->getItemID(); } } $room_id_array = $room_id_array_temp; } $grouproom_item = $grouproom_list->getNext(); } } $project_list = $currentUser->getUserRelatedProjectList(); if (isset($project_list) and $project_list->isNotEmpty()) { $project_item = $project_list->getFirst(); while ($project_item) { $room_id_array[] = $project_item->getItemID(); $project_item = $project_list->getNext(); } } $community_list = $currentUser->getUserRelatedCommunityList(); if (isset($community_list) and $community_list->isNotEmpty()) { $community_item = $community_list->getFirst(); while ($community_item) { $room_id_array[] = $community_item->getItemID(); $community_item = $community_list->getNext(); } } $room_id_array_without_privateroom = $room_id_array; $itemManager->setOrderLimit(true); if (isset($room_id_array_without_privateroom) && !empty($room_id_array_without_privateroom)) { $new_entry_array = $itemManager->getAllNewPrivateRoomEntriesOfRoomList($room_id_array_without_privateroom); $new_entry_list = $itemManager->getPrivateRoomHomeItemList($new_entry_array); } else { $new_entry_list = new cs_list(); } // sort list $new_entry_list->sortby("modification_date"); $new_entry_list->reverse(); // prepare return $entry = $new_entry_list->getFirst(); $count = 0; while ($entry) { if ($count >= $start && $count < $start + $numEntries) { $type = $entry->getItemType(); if ($type == CS_LABEL_TYPE) { $labelManager = $this->_environment->getLabelManager(); $entry = $labelManager->getItem($entry->getItemID()); $type = $entry->getLabelType(); } else { $manager = $this->_environment->getManager($type); $entry = $manager->getItem($entry->getItemID()); } if (isset($entry) and !empty($entry)) { // skip portfolio if ($entry->getType() !== CS_PORTFOLIO_TYPE) { $moddate = $entry->getModificationDate(); if (mb_strstr($moddate, '9999-00-00')) { $mod_date = "'"; } else { if ($entry->getCreationDate() != $entry->getModificationDate()) { $mod_date = $this->_environment->getTranslationObject()->getDateInLang($entry->getModificationDate()); } else { $mod_date = $this->_environment->getTranslationObject()->getDateInLang($entry->getCreationDate()); } } if ($type === CS_MATERIAL_TYPE) { $versionId = $entry->getVersionID(); } else { $versionId = null; } $return["items"][] = array("itemId" => $entry->getItemID(), "contextId" => $entry->getContextID(), "module" => Type2Module($type), "title" => $entry->getTitle(), "image" => $this->getUtils()->getLogoInformationForType($type), "fileCount" => $entry->getFileList()->getCount(), "modificationDate" => $mod_date, "creator" => $entry->getCreatorItem()->getFullName(), "versionId" => $versionId); } } } if (isset($entry) && !empty($entry) && $entry->getType() !== CS_PORTFOLIO_TYPE) { $count++; } $entry = $new_entry_list->getNext(); } $return["total"] = $count; $this->setSuccessfullDataReturn($return); echo $this->_return; }
public function actionQuery() { $return = array("items" => array()); $start = $this->_data["options"]["start"]; $numEntries = $this->_data["options"]["numEntries"]; $query = $this->_data["query"]; if (isset($this->_data["options"]["filter"])) { $filter = $this->_data["options"]["filter"]; } else { $filter = array(); } $currentUserItem = $this->_environment->getCurrentUserItem(); $privateRoomItem = $currentUserItem->getOwnRoom(); // collect data of interest $roomIdArray = array(); $roomNameArray = array(); $rubricArray = array(); if (!empty($filter)) { foreach ($filter["rooms"] as $filterRoom) { if ($filterRoom["active"]) { $roomIdArray[] = $filterRoom["id"]; $roomNameArray[$filterRoom["id"]] = $filterRoom["title"]; } } } else { // project and group rooms $projectRoomList = $currentUserItem->getUserRelatedProjectList(); $projectRoomItem = $projectRoomList->getFirst(); while ($projectRoomItem) { $roomIdArray[] = $projectRoomItem->getItemID(); $roomNameArray[$projectRoomItem->getItemID()] = $projectRoomItem->getTitle(); $projectRoomItem = $projectRoomList->getNext(); } // community rooms $communityRoomList = $currentUserItem->getUserRelatedCommunityList(); $communityRoomItem = $communityRoomList->getFirst(); while ($communityRoomItem) { $roomIdArray[] = $communityRoomItem->getItemID(); $roomNameArray[$communityRoomItem->getItemID()] = $communityRoomItem->getTitle(); $communityRoomItem = $communityRoomList->getNext(); } // private room //$roomIdArray[] = $privateRoomItem->getItemID(); //$roomNameArray[$privateRoomItem->getItemID()] = $privateRoomItem->getTitle(); } // determe the rubrics to search in if (!empty($filter)) { foreach ($filter["rubrics"] as $filterRubric) { if ($filterRubric["active"] && in_array($filterRubric["type"], array(CS_DISCUSSION_TYPE, CS_DATE_TYPE, CS_TODO_TYPE))) { $rubricArray[] = $filterRubric["type"]; } } } else { $rubricArray[] = CS_DISCUSSION_TYPE; $rubricArray[] = CS_DATE_TYPE; $rubricArray[] = CS_TODO_TYPE; } /* * only three rubrics are handled in the following foreach loop * maybe these are the only managers that are able to handle context arrays??? * however, setting context array limits in other managers seems not to work */ // get search results from all relevant managers $searchResults = new cs_list(); foreach ($rubricArray as $rubric) { $manager = $this->_environment->getManager($rubric); $manager->setContextArrayLimit($roomIdArray); if ($rubric == CS_DATE_TYPE) { $manager->setWithoutDateModeLimit(); } if (!empty($query)) { $manager->setSearchLimit($query); } $manager->showNoNotActivatedEntries(); $manager->select(); $searchResults->addList($manager->get()); } // redefine rubric array if (!empty($filter)) { $rubricArray = array(); foreach ($filter["rubrics"] as $filterRubric) { if ($filterRubric["active"] && in_array($filterRubric["type"], array(CS_MATERIAL_TYPE, CS_ANNOUNCEMENT_TYPE, CS_TOPIC_TYPE))) { $rubricArray[] = $filterRubric["type"]; } } } else { $rubricArray = array(CS_MATERIAL_TYPE, CS_ANNOUNCEMENT_TYPE, CS_TOPIC_TYPE); } // materials foreach ($roomIdArray as $roomId) { foreach ($rubricArray as $rubric) { $rubricManager = $this->_environment->getManager($rubric); $rubricManager->setContextLimit($roomId); if (!empty($query)) { $rubricManager->setSearchLimit($query); } $rubricManager->showNoNotActivatedEntries(); $rubricManager->select(); $searchResults->addList($rubricManager->get()); } } // announcements foreach ($roomIdArray as $roomId) { $annoucementManager = $this->_environment->getManager(CS_ANNOUNCEMENT_TYPE); $annoucementManager->setContextLimit($roomId); } // sort list $searchResults->sortby("modification_date"); $searchResults->reverse(); // prepare return $entry = $searchResults->getFirst(); $count = 0; while ($entry) { if ($count >= $start && $count < $start + $numEntries) { $type = $entry->getItemType(); if ($type == CS_LABEL_TYPE) { $labelManager = $this->_environment->getLabelManager(); $entry = $labelManager->getItem($entry->getItemID()); $type = $entry->getLabelType(); } else { $manager = $this->_environment->getManager($type); $entry = $manager->getItem($entry->getItemID()); } if (isset($entry) and !empty($entry)) { // skip portfolio if ($entry->getType() !== CS_PORTFOLIO_TYPE) { $moddate = $entry->getModificationDate(); if ($entry->getCreationDate() != $entry->getModificationDate() && !strstr($moddate, '9999-00-00')) { $mod_date = $this->_environment->getTranslationObject()->getDateInLang($entry->getModificationDate()); } else { $mod_date = $this->_environment->getTranslationObject()->getDateInLang($entry->getCreationDate()); } if ($type === CS_MATERIAL_TYPE) { $versionId = $entry->getVersionID(); } else { $versionId = null; } $return["items"][] = array("itemId" => $entry->getItemID(), "contextId" => $entry->getContextID(), "module" => Type2Module($type), "title" => $entry->getTitle(), "image" => $this->getUtils()->getLogoInformationForType($type), "fileCount" => $entry->getFileList()->getCount(), "modificationDate" => $mod_date, "creator" => $entry->getCreatorItem()->getFullName(), "versionId" => $versionId, "roomName" => $roomNameArray[$entry->getContextID()]); } } } if (isset($entry) && !empty($entry) && $entry->getType() !== CS_PORTFOLIO_TYPE) { $count++; } $entry = $searchResults->getNext(); } $return["total"] = $count; $this->setSuccessfullDataReturn($return); echo $this->_return; }