Пример #1
0
 /** @brief Constructs new instance of facet helper.
  *
  * @param $facet [in] root facet element.
  * @param $query [in] @a AfsQuery which has produced current reply.
  * @param $config [in] helper configuration object.
  */
 public function __construct($facet, AfsQuery $query, AfsHelperConfiguration $config, $feed = null)
 {
     $this->id = $facet->id;
     if (property_exists($facet, 'labels') && !empty($facet->labels)) {
         $this->labels = $facet->labels;
     }
     if (property_exists($facet, 'tags')) {
         $this->tags = $facet->tags;
     }
     $this->layout = $facet->layout;
     $this->type = $facet->type;
     if (property_exists($facet, 'sticky') && 0 == strcmp('true', $facet->sticky)) {
         $this->sticky = true;
     } else {
         $this->sticky = false;
     }
     $facet_manager = $query->get_facet_manager();
     $facet_manager->check_or_add_facet(new AfsFacet($this->id, $this->type, $this->layout));
     $builder = new AfsFacetElementBuilder($facet_manager, $query);
     $this->elements = $builder->create_elements($this->id, $facet, $config, $feed);
 }
Пример #2
0
 public function testFacetElementBuilderAddFilter()
 {
     $input = json_decode('{
         "afs:t": "FacetTree",
         "node": [
             {
                 "key": "false",
                 "labels": [
                     {
                         "label": "BAD"
                     }
                 ],
                 "items": 67
             },
             {
                 "key": "true",
                 "labels": [
                     {
                         "label": "GOOD"
                     }
                 ],
                 "items": 133
             }
         ],
         "layout": "TREE",
         "type": "BOOL",
         "id": "BOOL",
         "labels": [
             {
                 "label": "Boolean facet"
             }
         ]
     }');
     $query = new AfsQuery();
     $query = $query->add_filter('BOOL', 'false');
     $config = new AfsHelperConfiguration();
     $config->set_helper_format(AfsHelperFormat::HELPERS);
     $facet_mgr = $query->get_facet_manager();
     $facet_mgr->add_facet(new AfsFacet('BOOL', AfsFacetType::BOOL_TYPE, AfsFacetLayout::TREE, AfsFacetMode::OR_MODE));
     $builder = new AfsFacetElementBuilder($facet_mgr, $query);
     $elems = $builder->create_elements('BOOL', $input, $config);
     $this->assertEquals(count($elems), 2);
     $elem = reset($elems);
     $this->assertEquals($elem->label, 'BAD');
     $this->assertEquals($elem->count, 67);
     $this->assertTrue($elem->active);
     $this->assertFalse($elem->query->has_filter('BOOL', 'false'));
     $this->assertEquals(count($elem->values), 0);
     next($elems);
     $elem = current($elems);
     $this->assertEquals($elem->label, 'GOOD');
     $this->assertEquals($elem->count, 133);
     $this->assertFalse($elem->active);
     $this->assertTrue($elem->query->has_filter('BOOL', 'true'));
     $this->assertTrue($elem->query->has_filter('BOOL', 'false'));
     $this->assertEquals(count($elem->values), 0);
 }