static function addItem($groupID, $collaborationID, $userID) { $groupLink = eZCollaborationItemGroupLink::create($collaborationID, $groupID, $userID); $db = eZDB::instance(); $db->begin(); $groupLink->store(); $itemStatus = eZCollaborationItemStatus::create($collaborationID, $userID); $itemStatus->store(); $db->commit(); return $groupLink; }
static function updateFields($collaborationID, $userID = false, $fields) { if ($userID === false) { $userID = eZUser::currentUserID(); } eZPersistentObject::updateObjectList(array('definition' => eZCollaborationItemStatus::definition(), 'update_fields' => $fields, 'conditions' => array('collaboration_id' => $collaborationID, 'user_id' => $userID))); $statusObject =& $GLOBALS['eZCollaborationItemStatusCache'][$collaborationID][$userID]; if (isset($statusObject)) { foreach ($fields as $field => $value) { $statusObject->setAttribute($field, $value); } } }
static function fetchListTool($parameters = array(), $asCount) { $parameters = array_merge(array('as_object' => true, 'offset' => false, 'parent_group_id' => false, 'limit' => false, 'is_active' => null, 'is_read' => null, 'status' => false, 'sort_by' => false), $parameters); $asObject = $parameters['as_object']; $offset = $parameters['offset']; $limit = $parameters['limit']; $statusTypes = $parameters['status']; $isRead = $parameters['is_read']; $isActive = $parameters['is_active']; $parentGroupID = $parameters['parent_group_id']; $sortText = ''; if (!$asCount) { $sortCount = 0; $sortList = $parameters['sort_by']; if (is_array($sortList) and count($sortList) > 0) { if (count($sortList) > 1 and !is_array($sortList[0])) { $sortList = array($sortList); } } if ($sortList !== false) { $sortingFields = ''; foreach ($sortList as $sortBy) { if (is_array($sortBy) and count($sortBy) > 0) { if ($sortCount > 0) { $sortingFields .= ', '; } $sortField = $sortBy[0]; switch ($sortField) { case 'created': $sortingFields .= 'ezcollab_item_group_link.created'; break; case 'modified': $sortingFields .= 'ezcollab_item_group_link.modified'; break; default: eZDebug::writeWarning('Unknown sort field: ' . $sortField, __METHOD__); continue; } $sortOrder = true; // true is ascending if (isset($sortBy[1])) { $sortOrder = $sortBy[1]; } $sortingFields .= $sortOrder ? ' ASC' : ' DESC'; ++$sortCount; } } } if ($sortCount == 0) { $sortingFields = ' ezcollab_item_group_link.modified DESC'; } $sortText = "ORDER BY {$sortingFields}"; } $parentGroupText = ''; if ($parentGroupID > 0) { $parentGroupText = "ezcollab_item_group_link.group_id = '{$parentGroupID}' AND"; } $isReadText = ''; if ($isRead !== null) { $isReadValue = $isRead ? 1 : 0; $isReadText = "ezcollab_item_status.is_read = '{$isReadValue}' AND"; } $isActiveText = ''; if ($isActive !== null) { $isActiveValue = $isActive ? 1 : 0; $isActiveText = "ezcollab_item_status.is_active = '{$isActiveValue}' AND"; } $userID = eZUser::currentUserID(); $statusText = ''; if ($statusTypes === false) { $statusTypes = array(self::STATUS_ACTIVE, self::STATUS_INACTIVE); } $statusText = implode(', ', $statusTypes); if ($asCount) { $selectText = 'count( ezcollab_item.id ) as count'; } else { $selectText = 'ezcollab_item.*, ezcollab_item_status.is_read, ezcollab_item_status.is_active, ezcollab_item_status.last_read'; } $sql = "SELECT {$selectText}\n FROM\n ezcollab_item,\n ezcollab_item_status,\n ezcollab_item_group_link\n WHERE ezcollab_item.status IN ( {$statusText} ) AND\n {$isReadText}\n {$isActiveText}\n ezcollab_item.id = ezcollab_item_status.collaboration_id AND\n ezcollab_item.id = ezcollab_item_group_link.collaboration_id AND\n {$parentGroupText}\n ezcollab_item_status.user_id = '{$userID}' AND\n ezcollab_item_group_link.user_id = '{$userID}'\n {$sortText}"; $db = eZDB::instance(); if (!$asCount) { $sqlParameters = array(); if ($offset !== false and $limit !== false) { $sqlParameters['offset'] = $offset; $sqlParameters['limit'] = $limit; } $itemListArray = $db->arrayQuery($sql, $sqlParameters); foreach ($itemListArray as $key => $value) { $itemData =& $itemListArray[$key]; $statusObject = eZCollaborationItemStatus::create($itemData['id'], $userID); $statusObject->setAttribute('is_read', $itemData['is_read']); $statusObject->setAttribute('is_active', $itemData['is_active']); $statusObject->setAttribute('last_read', $itemData['last_read']); $statusObject->updateCache(); } $returnItemList = eZPersistentObject::handleRows($itemListArray, 'eZCollaborationItem', $asObject); eZDebugSetting::writeDebug('collaboration-item-list', $returnItemList); return $returnItemList; } else { $itemCount = $db->arrayQuery($sql); return $itemCount[0]['count']; } }