/** * Return a query for the requested objects. * @param string $object_type * @return QUERY * @access private */ protected function _object_query_for($object_type) { switch ($object_type) { case History_item_branch: return $this->login->all_branch_query(); case History_item_release: return $this->login->all_release_query(); case History_item_component: return $this->login->all_release_query(); default: return parent::_object_query_for($object_type); } }
/** * Overridable for descendents. * @param PUBLISHER $publisher * @access private */ protected function _publish($publisher) { $history_item_query = $this->login->all_history_item_query(); if ($this->entry_filter || $this->comment_filter) { $filters = array(); /* $entry_types = array (); $entry_type_infos = $this->app->entry_type_infos (); if (sizeof ($entry_type_infos) > 1) { foreach ($entry_type_infos as $type_info) { $entry_types [] = $type_info->id; } } else { $entry_types [] = History_item_entry; } */ /* The code above would work if the individual history items actually used * different types for their history items, which it seems they do not. * The line below works for all applications. */ $entry_types[] = History_item_entry; $entry_types = "'" . implode("', '", $entry_types) . "'"; if (!empty($this->entry_filter)) { $kinds = "'" . implode("', '", $this->entry_filter) . "'"; $filters[] = "act.object_type IN ({$entry_types}) AND act.kind IN ({$kinds})"; } else { $filters[] = "act.object_type IN ({$entry_types})"; } if (!empty($this->comment_filter)) { $kinds = "'" . implode("', '", $this->comment_filter) . "'"; $filters[] = "act.object_type = '" . History_item_comment . "' AND act.kind IN ({$kinds})"; } else { $filters[] = "act.object_type = '" . History_item_comment . "'"; } $filters[] = "act.object_type IN ('" . History_item_folder . "') AND act.kind IN ('Created')"; $history_item_query->restrict_to_one_of($filters); } $publisher->publish_history_items($history_item_query); }