function preference($args) { // Preference methods automatically refer only to preferences // belonging to the current user. $method = $_SERVER['REQUEST_METHOD']; switch ($method) { case 'GET': $name = getUserGetVar('name'); if ($name) { $preferenceDao = new PreferenceDAO(); $preference =& $preferenceDao->getPreference($name); if (null == $preference) { header('HTTP/1.1 404 Not Found'); echo '<h1>404 Not Found</h1><p>No such preference</p>'; } else { header('Content-type: text/plain'); echo $preference->getPreferenceName() . ':' . $preference->getPreferenceValue(); } } else { $preferenceDao = new PreferenceDAO(); $preferences =& $preferenceDao->getPreferences(); header('Content-type: text/plain'); $first = true; foreach ($preferences as $pref) { if (!$first) { echo "\n"; } else { $first = false; } echo $pref->getPreferenceName() . ':' . $pref->getPreferenceValue(); } } break; case 'POST': $name = getUserGetVar('name'); $value = getUserPostVar('value'); if (null == $name || null == $value) { header('HTTP/1.1 400 Bad Request'); echo "<h1>400 Bad Request</h1><p>Must specify name and vaule parameters</p>"; } else { if ('annotations.show' == $name || 'annotations.show-user' == $name || 'annotations.note-edit-mode' == $name) { $preference = new Preference(); $preference->setPreferenceName($name); $preference->setPreferenceValue($value); $preferenceDao = new PreferenceDAO(); if (null == $preferenceDao->getPreference($name)) { $preferenceDao->insertPreference($preference); } else { $preferenceDao->updatePreference($preference); } header('HTTP/1.1 204 Preference Set'); } else { header('HTTP/1.1 404 Invalid Preference'); echo "<h1>404 Invalid Preference</h1><p>The preference name you specificed is not valid.</p>"; } } break; } }