/** * Index method * * @return \Cake\Network\Response|null */ public function index() { $releases = $this->Releases->find('all')->all(); $collection = new Collection($releases); $attribute_names = array_unique($collection->extract('attribute_name')->toArray()); $idps = array_unique($collection->extract('idp')->toArray()); $releasesByIdp = $collection->groupBy('idp')->toArray(); foreach ($idps as $idp) { foreach ($attribute_names as $attribute) { $releasesByIdPbyAttribute = $collection->match(['idp' => $idp, 'attribute_name' => $attribute]); $temp_result = $releasesByIdPbyAttribute->countBy(function ($result) { return strtolower($result->validated) == 'fail' ? 'fail' : 'pass'; }); $results[$idp][$attribute] = $temp_result->toArray(); } } # My attributes $persistentid_array = preg_split('/!/', $this->request->env('persistent-id')); $persistentid = end($persistentid_array); $myAttributesTemp = $this->Releases->find()->andWhere(['idp' => $this->request->env('Shib-Identity-Provider'), 'persistentid' => $persistentid])->all(); $myAttributesCollection = new Collection($myAttributesTemp); $myAttributes = $myAttributesCollection->groupBy('attribute_name')->toArray(); $this->set(compact('myAttributes')); $this->set('_serialize', ['myAttributes']); $this->set(compact('results')); $this->set('_serialize', ['results']); $this->set(compact('idps')); $this->set('_serialize', ['idps']); $this->set(compact('attribute_names')); $this->set('_serialize', ['attribute_names']); }
/** * Tests match * * @return void */ public function testMatch() { $this->assertFalse(defined('HHVM_VERSION'), 'Broken on HHVM'); $items = [['id' => 1, 'name' => 'foo', 'thing' => ['parent_id' => 10]], ['id' => 2, 'name' => 'bar', 'thing' => ['parent_id' => 11]], ['id' => 3, 'name' => 'baz', 'thing' => ['parent_id' => 10]]]; $collection = new Collection($items); $matched = $collection->match(['thing.parent_id' => 10, 'name' => 'baz']); $this->assertEquals([2 => $items[2]], $matched->toArray()); $matched = $collection->match(['thing.parent_id' => 10]); $this->assertEquals([0 => $items[0], 2 => $items[2]], $matched->toArray()); $matched = $collection->match(['thing.parent_id' => 500]); $this->assertEquals([], $matched->toArray()); $matched = $collection->match(['parent_id' => 10, 'name' => 'baz']); $this->assertEquals([], $matched->toArray()); }