00001 <?php
00002
00016
00017
00018
00019 class UserSettingsDAO extends DAO {
00027 function &getSetting($userId, $name, $journalId = null) {
00028
00029 if ($journalId == null) {
00030 $result = &$this->retrieve(
00031 'SELECT setting_value, setting_type FROM user_settings WHERE user_id = ? AND setting_name = ? AND journal_id = 0', array($userId, $name)
00032 );
00033 } else {
00034 $result = &$this->retrieve(
00035 'SELECT setting_value, setting_type FROM user_settings WHERE user_id = ? AND setting_name = ? AND journal_id = ?', array($userId, $name, $journalId)
00036 );
00037 }
00038
00039 if ($result->RecordCount() != 0) {
00040 $row = &$result->getRowAssoc(false);
00041 $returner = $this->convertFromDB($row['setting_value'], $row['setting_type']);
00042 } else {
00043 $returner = null;
00044 }
00045
00046 return $returner;
00047
00048 }
00049
00058 function &getUsersBySetting($name, $value, $type = null, $journalId = null) {
00059 $userDao = &DAORegistry::getDAO('UserDAO');
00060
00061 $value = $this->convertToDB($value, $type);
00062 if ($journalId == null) {
00063 $result = &$this->retrieve(
00064 'SELECT u.* FROM users u, user_settings s WHERE u.user_id = s.user_id AND s.setting_name = ? AND s.setting_value = ? AND s.journal_id = 0',
00065 array($name, $value)
00066 );
00067 } else {
00068 $result = &$this->retrieve(
00069 'SELECT u.* FROM users u, user_settings s WHERE u.user_id = s.user_id AND s.setting_name = ? AND s.setting_value = ? AND s.journal_id = ?',
00070 array($name, $value, $journalId)
00071 );
00072 }
00073
00074 $returner = &new DAOResultFactory($result, $userDao, '_returnUserFromRow');
00075 return $returner;
00076 }
00077
00084 function &getSettingsByJournal($userId, $journalId = null) {
00085
00086 $userSettings = array();
00087
00088 if ($journalId == null) {
00089 $result = &$this->retrieve(
00090 'SELECT setting_name, setting_value, setting_type FROM user_settings WHERE user_id = ? AND journal_id = 0', $userId
00091 );
00092 } else {
00093 $result = &$this->retrieve(
00094 'SELECT setting_name, setting_value, setting_type FROM user_settings WHERE user_id = ? and journal_id = ?', array($userId, $journalId)
00095 );
00096 }
00097
00098 if ($result->RecordCount() == 0) {
00099 $returner = null;
00100 $result->Close();
00101 return $returner;
00102
00103 } else {
00104 while (!$result->EOF) {
00105 $row = &$result->getRowAssoc(false);
00106 $value = $this->convertFromDB($row['setting_value'], $row['setting_type']);
00107 $userSettings[$row['setting_name']] = $value;
00108 $result->MoveNext();
00109 }
00110 $result->close();
00111 unset($result);
00112
00113 return $userSettings;
00114 }
00115 }
00116
00125 function updateSetting($userId, $name, $value, $type = null, $journalId = null) {
00126 if ($journalId == null) {
00127 $result = $this->retrieve(
00128 'SELECT COUNT(*) FROM user_settings WHERE user_id = ? AND setting_name = ? AND journal_id = 0', array($userId, $name)
00129 );
00130 } else {
00131 $result = $this->retrieve(
00132 'SELECT COUNT(*) FROM user_settings WHERE user_id = ? AND setting_name = ? AND journal_id = ?', array($userId, $name, $journalId)
00133 );
00134 }
00135
00136 $value = $this->convertToDB($value, $type);
00137 if ($result->fields[0] == 0) {
00138 $returner = $this->update(
00139 'INSERT INTO user_settings
00140 (user_id, setting_name, journal_id, setting_value, setting_type)
00141 VALUES
00142 (?, ?, ?, ?, ?)',
00143 array($userId, $name, $journalId ? $journalId : 0, $value, $type)
00144 );
00145 } else {
00146 if ($journalId == null) {
00147 $returner = $this->update(
00148 'UPDATE user_settings SET
00149 setting_value = ?,
00150 setting_type = ?
00151 WHERE user_id = ? AND setting_name = ? AND journal_id = 0',
00152 array($value, $type, $userId, $name)
00153 );
00154 } else {
00155 $returner = $this->update(
00156 'UPDATE user_settings SET
00157 setting_value = ?,
00158 setting_type = ?
00159 WHERE user_id = ? AND setting_name = ? AND journal_id = ?',
00160 array($value, $type, $userId, $name, $journalId)
00161 );
00162 }
00163 }
00164
00165 $result->Close();
00166 unset($result);
00167
00168 return $returner;
00169 }
00170
00177 function deleteSetting($userId, $name, $journalId = null) {
00178 if ($journalId == null) {
00179 return $this->update(
00180 'DELETE FROM user_settings WHERE user_id = ? AND setting_name = ? AND journal_id = 0',
00181 array($userId, $name)
00182 );
00183 } else {
00184 return $this->update(
00185 'DELETE FROM user_settings WHERE user_id = ? AND setting_name = ? AND journal_id = ?',
00186 array($userId, $name, $journalId)
00187 );
00188 }
00189 }
00190
00195 function deleteSettings($userId) {
00196 return $this->update(
00197 'DELETE FROM user_settings WHERE user_id = ?', $userId
00198 );
00199 }
00200 }
00201
00202 ?>