$profile['value_id'], 'source' => $profile['source']]; } // store db values in cache self::$cache[$idx] = $result; return $result; } /** * Adds favorite value to DB. * * @param string $idx identifier of favorite value group * @param int $favid value id * @param string $favobj source object * * @return bool did SQL INSERT succeeded */ public static function add($idx, $favid, $favobj = null) { if (self::exists($idx, $favid, $favobj)) { return true; } // add to cache only if cache is created if (isset(self::$cache[$idx])) { self::$cache[$idx][] = [ 'value' => $favid, 'source' => $favobj ]; } $values = [ 'profileid' => get_dbid('profiles', 'profileid'), 'userid' => CWebUser::$data['userid'], 'idx' => zbx_dbstr($idx), 'value_id' => zbx_dbstr($favid), 'value_str' =>zbx_dbstr(''), 'type' => PROFILE_TYPE_ID ]; if (!is_null($favobj)) { $values['source'] = zbx_dbstr($favobj); } return DBexecute( 'INSERT INTO profiles ('.implode(', ', array_keys($values)).')'. ' VALUES ('.implode(', ', $values).')' ); } /** * Removes favorite from DB. Clears cache by $idx. * * @param string $idx identifier of favorite value group * @param int $favid value id * @param string $favobj source object * * @return boolean did SQL DELETE succeeded */ public static function remove($idx, $favid = 0, $favobj = null) { // empty cache, we know that all $idx values will be removed in DELETE if ($favid == 0 && $favobj === null) { self::$cache[$idx] = []; } // remove from cache, cache will be rebuilt upon get() else { self::$cache[$idx] = null; } return DBexecute( 'DELETE FROM profiles'. ' WHERE userid='.CWebUser::$data['userid']. ' AND idx='.zbx_dbstr($idx). ($favid > 0 ? ' AND value_id='.zbx_dbstr($favid) : ''). (is_null($favobj) ? '' : ' AND source='.zbx_dbstr($favobj)) ); } /** * Checks whether favorite value exists. * * @param string $idx identifier of favorite value group * @param int $favid value id * @param string $favobj source object * * @return boolean */ public static function exists($idx, $favid, $favobj = null) { $favorites = self::get($idx); foreach ($favorites as $favorite) { if (idcmp($favid, $favorite['value']) && $favorite['source'] == $favobj) { return true; } } return false; } }