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;
 }