public function combinedData() { $cat_out = array(); $cronks_out = array(); $categories = $this->getCategoryModel()->getCategories(); $cronks = $this->getCronks(); foreach ($categories as $category_name => $category) { $tmp = array(); foreach ($cronks as $cronk) { // skipping hidden cronks for the output if ($cronk['hide'] == true) { continue; } if (AppKitArrayUtil::matchAgainstStringList($cronk['categories'], $category_name)) { $tmp[] = $cronk; } } if ($count = count($tmp)) { $cronks_out[$category_name] = array('rows' => $tmp, 'success' => true, 'total' => $count); $cat_out[] = $category; } } $data = array('categories' => $cat_out, 'cronks' => $cronks_out); return $data; }
/** * @group AppKit */ public function testMatchAgainstStringList() { $list = 'item1, item123123, item'; $this->assertTrue(AppKitArrayUtil::matchAgainstStringList($list, 'item1')); $this->assertTrue(AppKitArrayUtil::matchAgainstStringList($list, 'item')); $this->assertFalse(AppKitArrayUtil::matchAgainstStringList($list, 'item12')); }
/** * Get all categories from system * @param boolean $get_all * @param boolean $show_invisible * @return array */ public function getCategories($get_all = false, $show_invisible = false) { static $cronks = null; $isCategoryAdmin = $this->agaviUser->hasCredential('icinga.cronk.category.admin'); if ($cronks === null) { $cronks = $this->getCronkModel()->getCronks($get_all); } if ($show_invisible == true && !$isCategoryAdmin) { $show_invisible = false; } $categories = $this->getXmlCategories(); $categories = (array) $this->getDbCategories($get_all) + $categories; AppKitArrayUtil::subSort($categories, 'title'); AppKitArrayUtil::subSort($categories, 'position'); foreach ($categories as $cid => $category) { $count = 0; /** * This implementation is cached and more fast than * using the CronksData model * @todo More fast, request needs 300-400ms, too slow! */ foreach ($cronks as $cronk) { if (AppKitArrayUtil::matchAgainstStringList($cronk['categories'], $cid)) { $count++; } } $categories[$cid]['count_cronks'] = $count; if (!$category['visible'] && !$show_invisible) { unset($categories[$cid]); } } return $categories; }