diff --git a/airtime_mvc/application/models/Preference.php b/airtime_mvc/application/models/Preference.php index e4cdd73fb..e8bf5adf5 100644 --- a/airtime_mvc/application/models/Preference.php +++ b/airtime_mvc/application/models/Preference.php @@ -138,7 +138,13 @@ class Application_Model_Preference $st->execute(); } - private static function getValue($key, $isUserValue = false) + /** + * @param string $key the preference key string + * @param bool|false $isUserValue select the preference for the current user + * @param bool|false $forceDefault only look for default (no user ID) values + * @return mixed the preference value + */ + private static function getValue($key, $isUserValue = false, $forceDefault = false) { $cache = new Cache(); @@ -164,6 +170,8 @@ class Application_Model_Preference if ($isUserValue) { $sql .= " AND subjid = :id"; $paramMap[':id'] = $userId; + } else if ($forceDefault) { + $sql .= " AND subjid IS NULL"; } $result = Application_Common_Database::prepareAndExecute($sql, $paramMap, Application_Common_Database::COLUMN); @@ -1482,6 +1490,11 @@ class Application_Model_Preference public static function getWhatsNewDialogViewed() { $val = self::getValue("whats_new_dialog_viewed", true); + if (empty($val)) { + // Check the default (no user ID) value if the user value is empty + // This is so that new stations won't see the popup + $val = self::getValue("whats_new_dialog_viewed", false, true); + } return empty($val) ? false : $val; } diff --git a/airtime_mvc/build/sql/defaultdata.sql b/airtime_mvc/build/sql/defaultdata.sql index 1f0db0e05..a9af73ff3 100644 --- a/airtime_mvc/build/sql/defaultdata.sql +++ b/airtime_mvc/build/sql/defaultdata.sql @@ -19,8 +19,6 @@ INSERT INTO cc_pref("keystr", "valstr") VALUES('stream_bitrate', '24, 32, 48, 64 INSERT INTO cc_pref("keystr", "valstr") VALUES('num_of_streams', '3'); INSERT INTO cc_pref("keystr", "valstr") VALUES('max_bitrate', '320'); INSERT INTO cc_pref("keystr", "valstr") VALUES('plan_level', 'disabled'); --- For now, just needs to be truthy - to be updated later; we should find a better way to implement this... -INSERT INTO cc_pref("keystr", "valstr") VALUES('whats_new_dialog_viewed', 1); INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('output_sound_device', 'false', 'boolean'); INSERT INTO cc_stream_setting ("keyname", "value", "type") VALUES ('output_sound_device_type', 'ALSA', 'string'); @@ -386,8 +384,7 @@ ALTER TABLE cc_pref ALTER COLUMN subjid SET DEFAULT NULL; CREATE UNIQUE INDEX cc_pref_key_idx ON cc_pref (keystr) WHERE subjid IS NULL; ANALYZE cc_pref; -- this validates the new partial index ---end added in 2.5.14 +-- end added in 2.5.14 -INSERT INTO cc_pref (keystr, valstr, subjid) VALUES ('whats_new_dialog_viewed', 'true', '0'); -INSERT INTO cc_pref (keystr, valstr, subjid) VALUES ('whats_new_dialog_viewed', 'true', '1'); -INSERT INTO cc_pref (keystr, valstr, subjid) VALUES ('whats_new_dialog_viewed', 'true', '2'); \ No newline at end of file +-- For now, just needs to be truthy - to be updated later; we should find a better way to implement this... +INSERT INTO cc_pref("keystr", "valstr") VALUES('whats_new_dialog_viewed', 1); \ No newline at end of file