# feature definition A feature represents a location. It has index _fid_. It has two dimensions: _lagitude_ and _longitude_. It may have an image represented by it's url. This field is called _imgurl_; it may also have a _title_ and/or a _description_. # client to server communication: Client submits a classic html form to server. **note**: In this documentation, php notation is used (`_POST`, `_FILES` and `_COOKIE`), but server may be written in any language. `_POST["password"]` and `_POST["user"] may contain user name and password. If they are set, access is checked. If they is not set, cookies are checked. If neither are present. If access is correct, cookies are set. Alternatively, `_COOKIE["syp_user"]` and `_COOKIE["syp_auth"]` may contain user name and md5 of password. If tables prefix is not *syp_*, cookies name are modifier accordingly. `_POST["request"]` is either: ## auth asks for authentication ## changepass change user password * `_POST ["pass_current"]` must contain current password. This is needed: cookie authentification is not enough. * `_POST ["pass_new"]` must contain new password ## newuser adds a new user * `_POST ["newuser_name"]` must contain user name * `_POST ["newuser_password"]` must contain user password **Only admin can add new users.** ## add adds a new feature * `_POST["lon"]` must contain feature longitude * `_POST["lat"]` must contain feature latitude * `_POST["title"]` may contain feature title * `_POST["description"]` may contain feature description * `_FILES["image_file"]` may contain an uploaded image ## del to delete an existing feature * `_POST["fid"]` must contain feature id ## update to modify an existing feature * `_POST["fid"]` must contain feature id * `_POST["lon"]` must contain feature longitude * `_POST["lat"]` must contain feature latitude * `_POST["title"]` may contain feature title * `_POST["description"]` may contain feature description if `_POST["keep_img"]` is "yes", feature image will not be modified. Otherwise, `_FILES["photo_file"]` is checked for an uploaded file. If `_FILES["photo_file"]` is empty, existing feature image will be deleted. Otherwise, uploaded file will replace current feature image. # server reply to client: Server replies with xml content. In an ideal world, reply would be just xml content. But due to technical issues, syp must wrap xml content in the body of a html document. So for example, instead of sending `` as _text/xml_, syp sends `` as _text/html_ ## error handling: reply is something like `` with _?reason?_ can be either: * `unauthorized`: user is not authorized to execute request, or authentication failed * `server`: an error occured on server side (such as database problem) * `request`: server could not understand request * `toobig`: uploaded file was too big * `notation`: uploaded file was not an image * `nochange`: when trying to update a feature, there is nothing to update (ie: no field of the feature has changed) * `wrongpass`: wrong current password when trying to change password * `newuser_exists`: when trying to add an user which has the same name as an already registered user ## success handling: * `?user_name?`: authentication was successfull. ?user_name? is name of authenticated user. * `?user_name?`: new user addition was successfull. ?user_name? is name of newly added user. * `?user_name?`: password change was successfull. ?user_name? is name user whose password has been changed. * ` ?id? `: deletion was successfull. _?id?_ was property of deleted feature * ` ?id? ?imgurl? ?description? ?heading? ?lon? ?lat? `: addition was successfull. _?id?_, _?imgurl?_, _?description?_, _?heading?_, _?lon?_, _?lat?_ are properties of added feature; * ` ?id? ?imgurl? ?description? ?heading? ?lon? ?lat? `: update was successfull. _?id?_, _?imgurl?_, _?description?_, _?heading?_, _?lon?_, _?lat?_ are properties of updated feature;