/**
  * 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);
 }