<?php
/**
* mySonar GUI - Version 1.0
* mySonar (reachable under mySonar.de) is a platform for Location Based Mobile Networking.
* Users can find friends, flirts, partys and places arround by uses their mobile devices.
* The application has several components. One of the components is the graphical user interface
* to access a XML Web Service layer, the services, kernel and database behind. This source file
* belongs to that component.
*
* Copyright (C) 2008 mySonar GbR, Markus Heussen
*
* This program is free software; you can redistribute it and/or modify it under the terms of the
* GNU General Public License as published by the Free Software Foundation; only GPLv2.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with this program;
* if not, see <http://www.gnu.org/licenses/>.
*/
defined("ACCESS") or die("Direct access to this resource is not allowed.");
session_start();
class Model {
var $Client;
var $MySonar;
public function __construct($MySonar) {
$this->MySonar = $MySonar;
ini_set("soap.wsdl_cache_enabled", $this->MySonar->getProperty("wsdlcache"));
try {
$this->Client = new SoapClient($this->MySonar->getProperty("wsdl"), array("encoding" => $this->MySonar->getProperty("encoding")));
} catch (Exception $e) {
echo "Es ist ein fataler Fehler aufgetreten.";
}
}
public function goto($URL) {
header("Location: ".$URL);
}
public function getMobileDevice($HttpUserAgent) {
$Security = new Security();
$Security->APIKey = ($_SESSION["APIKey"]!="" ? $_SESSION["APIKey"]:$this->MySonar->getProperty("apikey"));
$Metadata = new Metadata();
$Metadata->HttpUserAgent = $HttpUserAgent;
// request
$getMobileDevice = new getMobileDevice();
$getMobileDevice->Request->Security = $Security;
$getMobileDevice->Request->Metadata = $Metadata;
// call
try {
$getMobileDeviceResponse = $this->Client->getMobileDevice($getMobileDevice);
$MobileDeviceID = $getMobileDeviceResponse->Response->Metadata->MobileDeviceID;
return ($MobileDeviceID!="" ? $MobileDeviceID:null);
} catch (Exception $fault) {
return null;
}
}
public function login($username, $password) {
$Security = new Security();
$Security->APIKey = ($_SESSION["APIKey"]!="" ? $_SESSION["APIKey"]:$this->MySonar->getProperty("apikey"));
$Security->Username = $username;
$Security->Password = $password;
// request
$login = new login();
$login->Request->Security = $Security;
// call
try {
$loginResponse = $this->Client->login($login);
$_SESSION["Security"] = $loginResponse->Response->Security;
$_SESSION["User"] = $loginResponse->Response->User;
$_SESSION["Location"] = $loginResponse->Response->Location;
$_SESSION["Picture"] = $loginResponse->Response->Picture;
$_SESSION["SonarPreferences"] = $loginResponse->Response->SonarPreferences;
return true;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function getNewPassword($Username, $MobilePhoneNumber, $Birth) {
$Security = new Security();
$Security->APIKey = ($_SESSION["APIKey"]!="" ? $_SESSION["APIKey"]:$this->MySonar->getProperty("apikey"));
// request
$getNewPassword = new getNewPassword();
$getNewPassword->Request->Security = $Security;
$getNewPassword->Request->User->Username = $Username;
$getNewPassword->Request->User->MobilePhoneNumber = $MobilePhoneNumber;
$getNewPassword->Request->User->Birth = $Birth;
// call
try {
$getNewPasswordResponse = $this->Client->getNewPassword($getNewPassword);
return true;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function logout() {
// request
$logout = new logout();
$logout->Request->Security = $_SESSION["Security"];
$APIKey = $_SESSION["Security"]->APIKey; // dont loose the apikey because it may be one of a partner (and not the default)
$WirelessDevice = $_SESSION["WirelessDevice"]; // dont loose the apikey because it may be one of a partner (and not the default)
try {
$logoutResponse = $this->Client->logout($logout);
session_destroy();
unset($this->Client);
session_start();
$_SESSION["APIKey"] = $APIKey; // set api key because it may be one of a partner different to the default api key of mysonar.de
$_SESSION["WirelessDevice"] = $WirelessDevice; // set api key because it may be one of a partner different to the default api key of mysonar.de
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function createUser($User, $Code=null) {
$Security = new Security();
$Security->APIKey = $this->MySonar->getProperty("apikey");
$Security->Username = $User->Username;
$Security->Password = $User->Password;
$Coupon = new Coupon();
$Coupon->Type = "SONAR"; // $onar notes to be registered
$Coupon->Code = $Code;
if ($User->Birth!="") $User->Birth = substr($_GET["Birth"],4)."-".substr($_GET["Birth"],2,2)."-".substr($_GET["Birth"],0,2);
// request
$createUser = new createUser();
$createUser->Request->Security = $Security;
$createUser->Request->User = $User;
$createUser->Request->Coupon = $Coupon;
try {
$createUserResponse = $this->Client->createUser($createUser);
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function sendPing($query, $start, $limit, $profile="DEFAULT") {
$Options = new Options();
$Options->Profile = $profile;
$Options->StartIndex = $start;
$Options->Limit = $limit;
// request
$sendPing = new sendPing();
$sendPing->Request->Security = $_SESSION["Security"];
$sendPing->Request->Options = $Options;
if ($profile=="DEFAULT") {
$sendPing->Request->Location->Address = $query;
$sendPing->Request->Location->CountryCode = "DE";
} else $sendPing->Request->Query = $query;
try {
$sendPingResponse = $this->Client->sendPing($sendPing);
$Options = $sendPingResponse->Response->Options;
$_SESSION["Location"] = $sendPingResponse->Response->Location;
$list = $sendPingResponse->Response->Object;
if (is_object($list)) { $list = array($list); }
$resultset = array("Options" => $Options, "Objects" => $list);
return $resultset;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function getMap($locations, $lid, $zoom, $start, $limit, $address, $type="DEFAULT") {
$l = explode(",", $locations, 50);
$list = array();
$i=0;
while ($i<=(count($l)-1)) {
$Location = new Location();
$Location->ID = $l[$i];
$list[$i] = new Object();
$list[$i]->Location = $Location;
$i++;
}
$Map = new Map();
if ($zoom) $Map->Zoom = $zoom;
if ($lid>0) $Map->Focus = $lid;
$Map->Type = $type;
$getMap = new getMap();
$getMap->Request->Security = $_SESSION["Security"];
$getMap->Request->Map = $Map;
$getMap->Request->Object = $list;
try {
$getMapResponse = $this->Client->getMap($getMap);
$Map = $getMapResponse->Response->Map;
$Objects = $getMapResponse->Response->Object;
$Image = base64_decode($Map->Image);
switch ($Map->MimeType) {
case "image/jpeg": $suffix = ".jpg"; break;
case "image/gif": $suffix = ".gif"; break;
case "image/png": $suffix = ".png"; break;
case "image/x-png": $suffix = ".png"; break;
}
$Filename = $Map->Filename;
$handle = fopen($this->MySonar->getProperty("tempdir").$Filename, "w");
$bytes = fwrite($handle, $Image);
fclose($handle);
return array($Map, $Objects);
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function getProfile($user = null, $thumb = true) {
$result = array();
$username = ($user!=null ? $user:$_SESSION["User"]->Username);
$getProfile = new getProfile();
$getProfile->Request->Security = $_SESSION["Security"];
$getProfile->Request->User->Username = $username;
try {
$getProfileResponse = $this->Client->getProfile($getProfile);
$User = $getProfileResponse->Response->User;
$Location = $getProfileResponse->Response->Location;
$result[0] = $User;
$Pictures = $getProfileResponse->Response->Picture;
if ($Pictures!=null) {
if (is_object($Pictures)) $Pictures = array($Pictures);
foreach ($Pictures as $Picture) {
if ($Picture->Data!=null && $Picture->Thumbnail==$thumb) {
$Image = base64_decode($Picture->Data);
$handle = fopen($this->MySonar->getProperty("tempdir").$Picture->Filename, "w");
$bytes = fwrite($handle, $Image);
fclose($handle);
}
}
$result[1] = $Pictures;
} else $result[1] = null;
$result[2] = $Location;
return $result; // index 0 = User, index 1 = Pictures (small and thumbnail)
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function getSonarPreferences() {
$getSonarPreferences = new getSonarPreferences();
$getSonarPreferences->Request->Security = $_SESSION["Security"];
try {
$getSonarPreferencesResponse = $this->Client->getSonarPreferences($getSonarPreferences);
$SonarPreferences = $getSonarPreferencesResponse->Response->SonarPreferences;
return $SonarPreferences;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function confirmUser($code) {
$confirmUser = new confirmUser();
$confirmUser->Request->Security = $_SESSION["Security"];
$confirmUser->Request->Security->Password = $code;
try {
$confirmUserResponse = $this->Client->confirmUser($confirmUser);
$_SESSION["User"] = $confirmUserResponse->Response->User;
return $_SESSION["User"];
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function updateSonarPreferences($preferences) {
$updateSonarPreferences = new updateSonarPreferences();
$updateSonarPreferences->Request->Security = $_SESSION["Security"];
$updateSonarPreferences->Request->SonarPreferences = $preferences;
try {
$updateSonarPreferencesResponse = $this->Client->updateSonarPreferences($updateSonarPreferences);
$SonarPreferences = $updateSonarPreferencesResponse->Response->SonarPreferences;
$_SESSION["SonarPreferences"] = $SonarPreferences;
return $SonarPreferences;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function getPicture($thumbnail = false) {
try {
$getPicture = new getPicture();
$getPicture->Request->Security = $_SESSION["Security"];
$getPictureResponse = $this->Client->getPicture($getPicture);
$Pictures = $getPictureResponse->Response->Picture;
if (is_object($Pictures)) $Pictures = array($Pictures);
foreach ($Pictures as $Picture) {
if ($Picture->Thumbnail==$thumbnail) {
$filename = $this->MySonar->getProperty("tempdir").$Picture->Filename;
$handle = fopen($filename, "w");
$bytes = fwrite($handle, base64_decode($Picture->Data));
fclose($handle);
return $Picture;
}
}
return $Pictures[0]; // return first picture
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function setPicture($file) {
$SonarErrors = new SonarErrors();
if (!$file["Data"]) $SonarErrors->addError(906, "No image found.");
else {
set_time_limit(0); // deactivate timeout because of slow upload by mobile
switch($file["Data"]["error"]) {
case 1 : $SonarErrors->addError(901, "Image size to large for server."); break; // max. php.ini
case 2 : $SonarErrors->addError(902, "Image size to large for programm."); break; // max. 250 kb
case 3 : $SonarErrors->addError(903, "File only partly loaded."); break;
case 4 : $SonarErrors->addError(904, "Could not load file"); break;
case 6 : $SonarErrors->addError(900, "Internal client error."); break; // tmp directory missing on server
case 7 : $SonarErrors->addError(900, "Internal client error."); break; // could not save file to harddisc
case 8 : $SonarErrors->addError(905, "Loading cancelled."); break; // uploading interrupted
}
if ($file["Data"]["type"]!="image/jpeg" &&
$file["Data"]["type"]!="image/jp2" &&
$file["Data"]["type"]!="image/jpx" &&
$file["Data"]["type"]!="image/pjpeg" &&
$file["Data"]["type"]!="image/jpg" &&
$file["Data"]["type"]!="image/gif" &&
$file["Data"]["type"]!="image/png" &&
$file["Data"]["type"]!="image/x-png") $SonarErrors->addError(907, "File type not supported: ".$file["Data"]["type"]);
}
if ($SonarErrors->hasErrors()) return $SonarErrors;
else {
switch ($file["Data"]["type"]) {
case "image/jp2": $suffix = ".jpg"; break;
case "image/jpx": $suffix = ".jpg"; break;
case "image/pjpeg": $suffix = ".jpg"; break;
case "image/jpeg": $suffix = ".jpg"; break;
case "image/jpg": $suffix = ".jpg"; break;
case "image/gif": $suffix = ".gif"; break;
case "image/png": $suffix = ".png"; break;
case "image/x-png": $suffix = ".png"; break;
default: $suffix = ".pic"; break;
}
$filename = $_SESSION["Security"]->Token."_".time().$suffix;
// move file to client-tmp folder
if (move_uploaded_file($file["Data"]["tmp_name"], $this->MySonar->getProperty("uploaddir").$filename)) {
// get file
$handle = fopen($this->MySonar->getProperty("uploaddir").$filename, 'rb');
$size = filesize($this->MySonar->getProperty("uploaddir").$filename);
$buffer = fread($handle, $size);
fclose($handle);
$ImageData = base64_encode($buffer);
// create picture
$Picture = new Picture();
$Picture->Data = $ImageData;
$Picture->MimeType = $file["Data"]["type"];
// call sonar server
$setPicture = new setPicture();
$setPicture->Request->Security = $_SESSION["Security"];
$setPicture->Request->Picture = $Picture;
unlink($this->MySonar->getProperty("uploaddir").$filename);
try {
$setPictureResponse = $this->Client->setPicture($setPicture);
$Pictures = $setPictureResponse->Response->Picture;
$_SESSION["Picture"] = $Pictures;
return $Pictures; // returns two pictures (index 0 = small image, index 1 = thumbnail)
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
} else return $this->getSonarErrors(900, "Internal Client error.");
}
}
public function deletePicture() {
// request
$deletePicture = new deletePicture();
$deletePicture->Request->Security = $_SESSION["Security"];
try {
$deletePictureResponse = $this->Client->deletePicture($deletePicture);
$_SESSION["Picture"] = null;
return true;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function updateUser($user, $option) {
switch ($option) {
case "Birth": if ($user->Birth=="") return $this->getSonarErrors(421); break;
}
$updateUser = new updateUser();
$updateUser->Request->Security = $_SESSION["Security"];
$updateUser->Request->User = $user;
try {
$updateUserResponse = $this->Client->updateUser($updateUser);
$User = $updateUserResponse->Response->User;
$_SESSION["User"] = $User;
return $User;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function getStatistics() {
$getStatistics = new getStatistics();
$getStatistics->Request->Security = $_SESSION["Security"];
try {
$getStatisticsResponse = $this->Client->getStatistics($getStatistics);
$Statistics = $getStatisticsResponse->Response->Statistics;
return $Statistics;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function getTab($Options) {
$getTab = new getTab();
$getTab->Request->Security = $_SESSION["Security"];
$getTab->Request->Options = $Options;
try {
$getTabResponse = $this->Client->getTab($getTab);
$Statistics = $getTabResponse->Response->Statistics;
$Modules = $getTabResponse->Response->Module;
return array($Statistics, $Modules);
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function getLastLocations() {
// request
$getLastLocations = new getLastLocations();
$getLastLocations->Request->Security = $_SESSION["Security"];
try {
$getLastLocationsResponse = $this->Client->getLastLocations($getLastLocations);
return $getLastLocationsResponse->Response->Location;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function setLocation($address) {
// request
$setLocation = new setLocation();
$setLocation->Request->Security = $_SESSION["Security"];
$setLocation->Request->Location->Address = $address;
$setLocation->Request->Location->CountryCode = "DE";
try {
$setLocationResponse = $this->Client->setLocation($setLocation);
$_SESSION["Location"] = $setLocationResponse->Response->Location;
return $_SESSION["Location"];
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function sendMessage($Message) {
$sendMessage = new sendMessage();
$sendMessage->Request->Security = $_SESSION["Security"];
$sendMessage->Request->Message = $Message;
try {
$sendMessageResponse = $this->Client->sendMessage($sendMessage);
return $sendMessageResponse->Response->Message;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function getInbox() {
$getInbox = new getInbox();
$getInbox->Request->Security = $_SESSION["Security"];
try {
$getInboxResponse = $this->Client->getInbox($getInbox);
return $getInboxResponse->Response->Message;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function getOutbox() {
$getOutbox = new getOutbox();
$getOutbox->Request->Security = $_SESSION["Security"];
try {
$getOutboxResponse = $this->Client->getOutbox($getOutbox);
return $getOutboxResponse->Response->Message;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function getMessage($id) {
$getMessage = new getMessage();
$getMessage->Request->Security = $_SESSION["Security"];
$getMessage->Request->Message->ID = $id;
try {
$getMessageResponse = $this->Client->getMessage($getMessage);
return $getMessageResponse->Response->Message;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function deleteMessage($ID) {
$deleteMessage = new deleteMessage();
$deleteMessage->Request->Security = $_SESSION["Security"];
$deleteMessage->Request->Message->ID = $ID;
try {
$deleteMessageResponse = $this->Client->deleteMessage($deleteMessage);
return true;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function setPointOfInterest($Object) {
$setPointOfInterest = new setPointOfInterest();
$setPointOfInterest->Request->Security = $_SESSION["Security"];
$setPointOfInterest->Request->Object = $Object;
try {
$setPointOfInterestResponse = $this->Client->setPointOfInterest($setPointOfInterest);
return $setPointOfInterestResponse->Response->Object;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function createGroup($Group) {
$createGroup = new createGroup();
$createGroup->Request->Security = $_SESSION["Security"];
$createGroup->Request->Group = $Group;
try {
$createGroupResponse = $this->Client->createGroup($createGroup);
return $createGroupResponse->Response->Group;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function setArticle($Article) {
$setArticle = new setArticle();
$setArticle->Request->Security = $_SESSION["Security"];
$setArticle->Request->Article = $Article;
try {
$setArticleResponse = $this->Client->setArticle($setArticle);
$Article = $setArticleResponse->Response->Article;
$Group = $setArticleResponse->Response->Group;
return array($Article,$Group);
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function setTopic($Article) {
$setTopic = new setTopic();
$setTopic->Request->Security = $_SESSION["Security"];
$setTopic->Request->Article = $Article;
try {
$setTopicResponse = $this->Client->setTopic($setTopic);
$Article = $setTopicResponse->Response->Article;
$Group = $setTopicResponse->Response->Group;
return array($Article,$Group);
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function updateTopic($Article) {
$updateTopic = new updateTopic();
$updateTopic->Request->Security = $_SESSION["Security"];
$updateTopic->Request->Article = $Article;
try {
$updateTopicResponse = $this->Client->updateTopic($updateTopic);
$Article = $updateTopicResponse->Response->Article;
$Group = $updateTopicResponse->Response->Group;
return array($Article,$Group);
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function updateArticle($Article) {
$updateArticle = new updateArticle();
$updateArticle->Request->Security = $_SESSION["Security"];
$updateArticle->Request->Article = $Article;
try {
$updateArticleResponse = $this->Client->updateArticle($updateArticle);
$Article = $updateArticleResponse->Response->Article;
$Group = $updateArticleResponse->Response->Group;
return array($Article,$Group);
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function updatePointOfInterest($Object) {
$updatePointOfInterest = new updatePointOfInterest();
$updatePointOfInterest->Request->Security = $_SESSION["Security"];
$updatePointOfInterest->Request->Object = $Object;
try {
$updatePointOfInterestResponse = $this->Client->updatePointOfInterest($updatePointOfInterest);
return $updatePointOfInterestResponse->Response->Object;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function getTermsAndConditions() {
$Security = new Security();
$Security->APIKey = $this->MySonar->getProperty("apikey");
$getTermsAndConditions = new getTermsAndConditions();
$getTermsAndConditions->Request->Security = $Security;
try {
$getTermsAndConditionsResponse = $this->Client->getTermsAndConditions($getTermsAndConditions);
return $getTermsAndConditionsResponse->Response->Terms;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function checkInvitationCode($mobilephonenumber, $invitationcode) {
$Security = new Security();
$Security->APIKey = $this->MySonar->getProperty("apikey");
$Security->Token = $invitationcode;
$User = new User();
$User->MobilePhoneNumber = $mobilephonenumber;
$checkInvitationCode = new checkInvitationCode();
$checkInvitationCode->Request->Security = $Security;
$checkInvitationCode->Request->User = $User;
try {
$checkInvitationCodeResponse = $this->Client->checkInvitationCode($checkInvitationCode);
$User = $checkInvitationCodeResponse->Response->User;
return $User;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function getFriends($Username="") {
$getFriends = new getFriends();
$getFriends->Request->Security = $_SESSION["Security"];
if ($Username!="") $getFriends->Request->Object->User->Username = $Username;
try {
$getFriendsResponse = $this->Client->getFriends($getFriends);
return $getFriendsResponse->Response->Object;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function getFlirts() {
$getFlirts = new getFlirts();
$getFlirts->Request->Security = $_SESSION["Security"];
try {
$getFlirtsResponse = $this->Client->getFlirts($getFlirts);
return $getFlirtsResponse->Response->Object;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function getBalance() {
$getBalance = new getBalance();
$getBalance->Request->Security = $_SESSION["Security"];
try {
$getBalanceResponse = $this->Client->getBalance($getBalance);
return $getBalanceResponse->Response->Account;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function pay($Transaction) {
$pay = new pay();
$pay->Request->Security = $_SESSION["Security"];
$pay->Request->Transaction = $Transaction;
try {
$payResponse = $this->Client->pay($pay);
$resultset = array($payResponse->Response->Account, $payResponse->Response->Transaction);
return $resultset;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function activateCoupon($Coupon) {
$activateCoupon = new activateCoupon();
$activateCoupon->Request->Security = $_SESSION["Security"];
$activateCoupon->Request->Coupon = $Coupon;
try {
$activateCouponResponse = $this->Client->activateCoupon($activateCoupon);
return $activateCouponResponse->Response->Coupon;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function getCoupon($Coupon) {
$getCoupon = new getCoupon();
$getCoupon->Request->Security = $_SESSION["Security"];
$getCoupon->Request->Coupon = $Coupon;
try {
$getCouponResponse = $this->Client->getCoupon($getCoupon);
return $getCouponResponse->Response->Coupon;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function getFriendshipRequests() {
$getFriendshipRequests = new getFriendshipRequests();
$getFriendshipRequests->Request->Security = $_SESSION["Security"];
try {
$getFriendshipRequestsResponse = $this->Client->getFriendshipRequests($getFriendshipRequests);
return $getFriendshipRequestsResponse->Response->User;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function changePassword($Password) {
$changePassword = new changePassword();
$changePassword->Request->Security = $_SESSION["Security"];
$changePassword->Request->Security->Password = $Password;
try {
$changePasswordResponse = $this->Client->changePassword($changePassword);
return true;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function getPendingPOIs() {
$getPendingPOIs = new getPendingPOIs();
$getPendingPOIs->Request->Security = $_SESSION["Security"];
try {
$getPendingPOIsResponse = $this->Client->getPendingPOIs($getPendingPOIs);
return $getPendingPOIsResponse->Response->Object;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function setInvitation($User, $Message) {
$setInvitation = new setInvitation();
$setInvitation->Request->Security = $_SESSION["Security"];
$setInvitation->Request->User = $User;
$setInvitation->Request->Message = $Message;
try {
$setInvitationResponse = $this->Client->setInvitation($setInvitation);
return true;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function getGroupByAPIKey() {
$getGroupByAPIKey = new getGroupByAPIKey();
$getGroupByAPIKey->Request->Security->APIKey = $this->MySonar->getProperty("apikey");
try {
$getGroupByAPIKeyResponse = $this->Client->getGroupByAPIKey($getGroupByAPIKey);
return $getGroupByAPIKeyResponse->Response->Security->Group;
} catch (Exception $fault) {
return null;
}
}
public function getPointOfInterest($ID) {
$getPointOfInterest = new getPointOfInterest();
$getPointOfInterest->Request->Security = $_SESSION["Security"];
$getPointOfInterest->Request->Object->ID = $ID;
try {
$getPointOfInterestResponse = $this->Client->getPointOfInterest($getPointOfInterest);
$Object = $getPointOfInterestResponse->Response->Object;
return $Object;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function getGroup($Options, $Group) {
$getGroup = new getGroup();
$getGroup->Request->Security = $_SESSION["Security"];
$getGroup->Request->Options = $Options;
$getGroup->Request->Group = $Group;
try {
$getGroupResponse = $this->Client->getGroup($getGroup);
$Options = $getGroupResponse->Response->Options;
$Group = $getGroupResponse->Response->Group;
return array($Options, $Group);
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function joinGroup($Group) {
$joinGroup = new joinGroup();
$joinGroup->Request->Security = $_SESSION["Security"];
$joinGroup->Request->Options = $Options;
$joinGroup->Request->Group = $Group;
try {
$joinGroupResponse = $this->Client->joinGroup($joinGroup);
$Group = $joinGroupResponse->Response->Group;
return $Group;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function leaveGroup($Group) {
$leaveGroup = new leaveGroup();
$leaveGroup->Request->Security = $_SESSION["Security"];
$leaveGroup->Request->Group = $Group;
try {
$leaveGroupResponse = $this->Client->leaveGroup($leaveGroup);
$Group = $leaveGroupResponse->Response->Group;
return $Group;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function getArticle($Article) {
$getArticle = new getArticle();
$getArticle->Request->Security = $_SESSION["Security"];
$getArticle->Request->Article = $Article;
try {
$getArticleResponse = $this->Client->getArticle($getArticle);
$Article = $getArticleResponse->Response->Article;
$Group = $getArticleResponse->Response->Group;
return array($Article, $Group);
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function deleteArticle($Article) {
$deleteArticle = new deleteArticle();
$deleteArticle->Request->Security = $_SESSION["Security"];
$deleteArticle->Request->Article = $Article;
try {
$deleteArticleResponse = $this->Client->deleteArticle($deleteArticle);
return true;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function deleteTopic($Article) {
$deleteTopic = new deleteTopic();
$deleteTopic->Request->Security = $_SESSION["Security"];
$deleteTopic->Request->Article = $Article;
try {
$deleteTopicResponse = $this->Client->deleteTopic($deleteTopic);
return true;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function deleteGroup($Group) {
$deleteGroup = new deleteGroup();
$deleteGroup->Request->Security = $_SESSION["Security"];
$deleteGroup->Request->Group = $Group;
try {
$deleteGroupResponse = $this->Client->deleteGroup($deleteGroup);
return true;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function getTopic($Article) {
$getTopic = new getTopic();
$getTopic->Request->Security = $_SESSION["Security"];
$getTopic->Request->Article = $Article;
try {
$getTopicResponse = $this->Client->getTopic($getTopic);
$Article = $getTopicResponse->Response->Article;
$Group = $getTopicResponse->Response->Group;
return array($Article, $Group);
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function deletePointOfInterest($ID) {
$deletePointOfInterest = new deletePointOfInterest();
$deletePointOfInterest->Request->Security = $_SESSION["Security"];
$deletePointOfInterest->Request->PointOfInterest->ID = $ID;
try {
$deletePointOfInterestResponse = $this->Client->deletePointOfInterest($deletePointOfInterest);
$PointOfInterest = $deletePointOfInterestResponse->Response->PointOfInterest;
return $PointOfInterest;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function setFriendship($User, $Message) {
$setFriendship = new setFriendship();
$setFriendship->Request->Security = $_SESSION["Security"];
$setFriendship->Request->Object->User = $User;
$setFriendship->Request->Message = $Message;
try {
$setFriendshipResponse = $this->Client->setFriendship($setFriendship);
$Object = $setFriendshipResponse->Response->Object;
return $Object;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function setBestFriend($User) {
$setBestFriend = new setBestFriend();
$setBestFriend->Request->Security = $_SESSION["Security"];
$setBestFriend->Request->User = $User;
try {
$setBestFriendResponse = $this->Client->setBestFriend($setBestFriend);
return true;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function putEyesOn($User) {
$putEyesOn = new putEyesOn();
$putEyesOn->Request->Security = $_SESSION["Security"];
$putEyesOn->Request->User = $User;
try {
$setBestFriendResponse = $this->Client->putEyesOn($putEyesOn);
return true;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function deleteBestFriend($User) {
$deleteBestFriend = new deleteBestFriend();
$deleteBestFriend->Request->Security = $_SESSION["Security"];
$deleteBestFriend->Request->User = $User;
try {
$deleteBestFriendResponse = $this->Client->deleteBestFriend($deleteBestFriend);
return true;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function removeEyesOn($User) {
$removeEyesOn = new removeEyesOn();
$removeEyesOn->Request->Security = $_SESSION["Security"];
$removeEyesOn->Request->User = $User;
try {
$removeEyesOnResponse = $this->Client->removeEyesOn($removeEyesOn);
return true;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function blockEyesOn($User) {
$blockEyesOn = new blockEyesOn();
$blockEyesOn->Request->Security = $_SESSION["Security"];
$blockEyesOn->Request->User = $User;
try {
$blockEyesOnResponse = $this->Client->blockEyesOn($blockEyesOn);
return true;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function deleteFriendship($User) {
$deleteFriendship = new deleteFriendship();
$deleteFriendship->Request->Security = $_SESSION["Security"];
$deleteFriendship->Request->User = $User;
try {
$deleteFriendshipResponse = $this->Client->deleteFriendship($deleteFriendship);
return true;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function confirmFriendship($User) {
$confirmFriendship = new confirmFriendship();
$confirmFriendship->Request->Security = $_SESSION["Security"];
$confirmFriendship->Request->User = $User;
try {
$confirmFriendshipResponse = $this->Client->confirmFriendship($confirmFriendship);
return true;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function deleteCurrentLocation() {
$deleteCurrentLocation = new deleteCurrentLocation();
$deleteCurrentLocation->Request->Security = $_SESSION["Security"];
try {
$deleteCurrentLocationResponse = $this->Client->deleteCurrentLocation($deleteCurrentLocation);
$_SESSION["Location"] = NULL;
return true;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function getStatement($Period, $StartDate=null) {
$getStatement = new getStatement();
$getStatement->Request->Security = $_SESSION["Security"];
$getStatement->Request->Statement->Period = ($Period>0 ? $Period:1);
if ($StartDate!=null) $getStatement->Request->Statement->StartDate = $StartDate;
try {
$getStatementResponse = $this->Client->getStatement($getStatement);
return $getStatementResponse->Response->Statement;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
public function doVote($Vote) {
$doVote = new doVote();
$doVote->Request->Security = $_SESSION["Security"];
$doVote->Request->Vote = $Vote;
try {
$doVoteResponse = $this->Client->doVote($doVote);
return $doVoteResponse->Response->Vote;
} catch (Exception $fault) {
return $this->getSonarErrors($fault);
}
}
// HELPER FUNCTIONS
private function getSonarErrors($fault) {
$message = array();
// server specific
$message[400] = "Daten unvollständig.";
$message[401] = "Du bist nicht angemeldet.";
$message[402] = "Du wurdest abgemeldet, weil du zu lange inaktiv warst.";
$message[403] = "Mitglied konnte nicht gelöscht werden.";
$message[404] = "Mitglied nicht gefunden.";
$message[405] = "Aktivierung fehlgeschlagen.";
$message[406] = "Nickname oder Handynummer schon vorhanden.";
$message[407] = "Aktualisierung fehlgeschlagen.";
$message[408] = "Du kannst dich nicht selbst einladen.";
$message[409] = "Upload gescheitert.";
$message[410] = "Aktueller Standort konnte nicht gelöscht.";
$message[411] = "Standort fehlt.";
$message[412] = "Session ungültig oder abgelaufen.";
$message[414] = "Land nicht unterstützt.";
$message[415] = "Benutzername und/oder Passwort zu kurz (min. 3 Zeichen).";
$message[416] = "Infotext zu lang.";
$message[418] = "Falsche E-Mail Adresse.";
$message[419] = "Falsche Handynummer.";
$message[420] = "Nachricht zu lang.";
$message[421] = "Falsches Geburtsdatum oder Mindestalter unterschritten.";
$message[422] = "Falscher Wert im Feld 'Geschlecht'.";
$message[423] = "Standort fehlt.";
$message[424] = "Falscher Wert im Feld 'SonarRange'.";
$message[425] = "Standort(e) nicht gefunden.";
$message[426] = "Nachricht fehlt.";
$message[427] = "Keine Bilder gefunden.";
$message[428] = "Falscher Wert im Feld 'ObjectType'.";
$message[429] = "Mindestalter unterschritten.";
$message[430] = "Bildtyp wird nicht unterstützt.";
$message[431] = "Unzulässige Änderung.";
$message[432] = "Handynummer und Geburtsdatum sind unbekannt.";
$message[433] = "Keine Objekte gefunden.";
$message[460] = "Fehler bei der Geokodierung. Standort nicht ermittelbar.";
$message[461] = "Fehler bei der Geokodierung. Standort unbekannt.";
$message[462] = "Fehler bei der Geokodierung. Angabe zu ungenau.";
$message[463] = "Fehler bei der Geokodierung. Geokodierung des Standorts unzulässig.";
$message[470] = "Keine Nachrichten.";
$message[471] = "Handynr. oder Code falsch.";
$message[472] = "Einladung nicht verschickt.";
$message[473] = "Absender benötigt.";
$message[474] = "Empfänger benötigt.";
$message[475] = "Typ des Point of Internet nicht unterstützt.";
$message[476] = "Beginn in Vergangenheit.";
$message[477] = "Ende liegt vor dem Beginn.";
$message[478] = "Name und Beschreibung sind Pflicht.";
$message[479] = "Nachricht konnte nicht gelöscht werden.";
$message[480] = "Bitte nur einen Point of Interest setzen.";
$message[481] = "Point of Interest konnte nicht gespeichert werden.";
$message[482] = "Keine Kontakte gefunden.";
$message[483] = "Kontaktanfrage gescheitert.";
$message[484] = "Bestätigung fehlgeschlagen.";
$message[485] = "Keine Kontaktanfrage für dich.";
$message[486] = "Kontakt besteht bereits.";
$message[487] = "Kein bestätigter Kontakt.";
$message[488] = "Nachricht konnte nicht versendet werden.";
$message[489] = "Nicht erlaubt.";
$message[490] = "SMS konnte nicht versendet werden.";
$message[491] = "Maximale Anzahl an besten Freunden erreicht.";
$message[492] = "Nur bestätigte Kontakte können BestFriends werden.";
$message[493] = "Es besteht schon eine beste Freundschaft.";
$message[494] = "Der Empfänger wurde schon mal eingeladen.";
$message[495] = "BEF konnte nicht gelöscht werden.";
$message[496] = "Nee, der User will nicht flirten.";
$message[497] = "Maximale Anzahl an EyesOn erreicht.";
$message[498] = "Da sind deine Augen schon drauf!";
$message[499] = "Point of Interest konnte nicht gefunden werden.";
$message[500] = "Fataler interner Fehler (Server).";
$message[502] = "Freischalt-Code, Passwort oder Nachricht konnte nicht versendet werden.";
$message[503] = "Dienst derzeit nicht verfügbar.";
$message[504] = "Der API-Key ist ungültig.";
$message[600] = "Du kannst nur Augen auf andere schmeißen.";
$message[601] = "Auge konnte nicht entfernt werden.";
$message[602] = "Schon gespeichert.";
$message[603] = "Keine Flirts gefunden.";
$message[604] = "Breite liegt nicht zwischen 100 und 500 Pixel.";
$message[605] = "Höhe liegt nicht zwischen 100 und 500 Pixel.";
$message[606] = "Fehler beim Vermerk (min. 1, max. 50 Zeichen).";
$message[607] = "Der Mindestbetrag liegt bei 1 \$onar.";
$message[608] = "Du hast zu wenig Guthaben.";
$message[609] = "Zeitraum unzulässig (1 bis 30 Tage).";
$message[610] = "Nachrichtentyp nicht unterstützt.";
$message[611] = "Aktivierung nur als Admin möglich.";
$message[612] = "Gespeicherter POI ist von einem anderern Typ.";
$message[613] = "SMS-Text zu lang.";
$message[614] = "SMS-Empfänger muss in deinen Kontakten sein.";
$message[615] = "Nickname zu lang.";
$message[616] = "Geldschein falsch, schon eingezahlt oder abgelaufen.";
$message[617] = "Das geht nur, wenn ihr beide flirten wollt.";
$message[618] = "Du musst zuerst deine Handynr. angeben und aktivieren.";
$message[619] = "Die Handynummer existiert schon.";
$message[620] = "Der Empfänger hat keine Handynummer angegeben.";
$message[621] = "Stichwort fehlt.";
$message[622] = "UID fehlt.";
$message[623] = "PID fehlt.";
$message[624] = "Coupon-Typ nicht unterstützt.";
$message[625] = "Schlüssel für Sichtbarkeit nicht unterstützt.";
$message[626] = "Karte kann nicht angezeigt werden.";
$message[627] = "Du kannst dich nicht selbst blocken.";
$message[628] = "Flirt konnte nicht geblocked werden.";
$message[629] = "Bitte bewerte entweder ein Mitglied oder einen POI.";
$message[630] = "Bewertung muss zwischen 1 (sehr gut) und 5 (mangelhaft) liegen.";
$message[631] = "Du kannst nur einmal bewerten.";
$message[632] = "Statusmeldung zu lang.";
$message[633] = "Gruppenname nicht angegeben oder zu lang (max. 50 Zeichen).";
$message[634] = "Beschreibung nicht angegeben oder zu lang (max. 255 Zeichen).";
$message[635] = "Gruppe konnte nicht angelegt werden. Existiert schon?";
$message[636] = "Gruppe nicht gefunden. Möglicherweise wurde sie gelöscht.";
$message[637] = "Beitrag nicht gefunden.";
$message[638] = "Beitrag konnte nicht gespeichert werden.";
$message[639] = "Du hast keine Schreibrechte in dieser Gruppe.";
$message[640] = "Referenz auf Hauptbeitrag nicht gesetzt.";
$message[641] = "Referenzbeitrag nicht gefunden.";
$message[642] = "Das Thema muss zwischen 1 und 50 Zeichen haben.";
$message[643] = "Der Text muss mindestens 1 Zeichen lang sein.";
$message[644] = "Thema konnte nicht gespeichert werden.";
$message[645] = "ID der Gruppe fehlt oder ist falsch.";
$message[646] = "Du musst erst deine Handynr. angeben und bestätigen.";
$message[647] = "Zugangsdaten konnten nicht per SMS versendet werden.";
$message[648] = "Point of Interest noch nicht freigeschaltet.";
$message[649] = "Unzulässige Kategorie.";
$message[650] = "Keine Themen gefunden.";
$message[651] = "Du bist bereits Mitglied.";
$message[652] = "Du bist kein Mitglied der Gruppe.";
$message[653] = "Als Gruppenadmin kannst du die Gruppe nicht verlassen.";
$message[654] = "Du bist nicht berechtigt.";
$message[655] = "Artikel, Thema oder Gruppe konnte nicht gelöscht werden.";
$message[656] = "Bitte Ort, ggf. mit Str. und Hausnr. eingeben.";
$message[657] = "Artikel oder Thema konnte nicht geändert werden.";
$message[658] = "Operation nicht erlaubt für diese ID.";
$message[659] = "Mindestwert unterschritten oder Betrag nicht durch hundert Teilbar (z. B. richtig 300, falsch 350).";
$message[660] = "Empfängername zu kurz (min. 5 Zeichen).";
$message[661] = "Straß zu kurz (min. 5 Zeichen).";
$message[662] = "PLZ und Ort zu kurz (min. 5 Zahlen und 3 Zeichen).";
$message[663] = "Empfänger nicht erlaubt.";
$message[664] = "Kartentyp ungültig.";
$message[665] = "Nutzungsbedingungen konnten nicht abgerufen werden.";
$message[666] = "Du musst vorher deinen Standort lokalisieren.";
$message[667] = "Du hast den Code bereits eingelöst.";
$message[668] = "Kein mobiles Endgerät.";
$message[669] = "Mehr als ein Gerät gefunden. Bitte User-Agent prüfen.";
// clientspecific error messages
$message[900] = "Fataler interner Fehler (Client).";
$message[901] = "Bild zu groß für Rechner.";
$message[902] = "Bild zu groß für Anwendung.";
$message[903] = "Bild nur teilweise geladen.";
$message[904] = "Upload gescheitert.";
$message[905] = "Upload abgebrochen.";
$message[906] = "Kein Bild gefunden.";
$message[907] = "Unzulässiger Dateityp.";
$code = $fault->faultactor;
if ($code==412 || $code==401 || $code==402) $_SESSION["Security"]=null; //session_destroy(); // server logged out user
// send email
if ($code==500) {
$headers = "From: ".$this->MySonar->getProperty("fatal_error_email_address")."\nReply-To: ".$this->MySonar->getProperty("fatal_error_email_address")."\nContent-Type: text/plain; charset=utf-8\nContent-Transfer-Encoding: 8bit\nMIME-Version: 1.0";
mail($this->MySonar->getProperty("fatal_error_email_address"), "Kritischer Fehler aufgetreten", print_r($fault, true), $headers);
}
if ($message[$code]==null) return new SonarErrors(500, "Unerwarteter Server-Fehler aufgetreten.");
else return new SonarErrors($code, $message[$code]) ;
}
public function getHelp($key, $language = "DE") {
$help = array();
// faq
$help["menu"] = new Help(
"Fragen & Antworten",
'<p>Hier findest du häufig gestellte Fragen. Falls keine passende Antwort dabei ist, findest du sie vielleicht über PC auf unserer Website www.mysonar.de. Oder schreib uns einfach eine <a href="index.php?m=sendMessage&Recipient='.$this->MySonar->getProperty("admin_username").'&Text=Liebes mySonar-Team!">Nachricht</a>.</p>
<p><span class="nav">
<p class="li">· <a href="index.php?m=getHelp&key=q1">Kann man mich beobachten?</a></p>
<p class="li">· <a href="index.php?m=getHelp&key=q2">Ist mySonar wirklich kostenlos?</a></p>
<p class="li">· <a href="index.php?m=getHelp&key=q3">Welchen Handy-Tarif brauch ich?</a></p>
<p class="li">· <a href="index.php?m=getHelp&key=q4">Krieg ich mit Werbung-Spam?</a></p>
<p class="li">· <a href="index.php?m=getHelp&key=q5">Muß ich meine Handynr. angeben?</a></p>
<p class="li">· <a href="index.php?m=getHelp&key=q6">Was sind denn BEFs?</a></p>
<p class="li">· <a href="index.php?m=getHelp&key=q7">Wann kriegen BEFs SMS?</a></p>
<p class="li">· <a href="index.php?m=getHelp&key=q8">Ein Auge auf Flirts werfen?</a></p>
</span></p>'
);
$help["q1"] = new Help(
"Beobachtung möglich?",
'<p>Nein. Dein Handy wird nicht tatsächlich geortet. Du kannst deinen Standort frei wählen und die Genauigkeit selbst festlegen. Außerdem kannst du dich für andere völlig unsichtbar machen.</p>'
);
$help["q2"] = new Help(
"Wirklich kostenlos?",
'<p>Ja. Unsere Mitglieder sind vor allem junge Leute. Da sitzt das Geld manchmal eher knapp. Deshalb ist und bleibt die Nutzung von <span class="my">my</span><span class="sonar">Sonar</span> kostenlos. Natürlich nimmt der Mobilfunkanbieter - genauso wie auch dein jetziger Internet-Provider - Gebühren für die Einwahl ins mobile Internet. Die befinden sich aber derzeit im freien Fall. So teuer wie man immer befürchtet, ist das mobile Web nämlich gar nicht.</p>'
);
$help["q3"] = new Help(
"Richtiger Handy-Tarif?",
'<p>Gute Frage und herzlich willkommen im Tarifdschungel der Mobilfunkanbieter! Seit Ende 2007 haben die Anbieter ihre Preise für die Nutzung des Mobile Internet drastisch gesenkt. Sie bieten jetzt so genannte Flatrates als Zusatztarife an. Mit einem solchen Tarif kannst du <span class="my">my</span><span class="sonar">Sonar</span> beliebig oft und beliebig lange nutzen. Das macht dann am meisten Spaß! Es gibt Internet-Flatrates schon für 9,95 Euro pro Monat. Am besten du informierst dich bei deinem Netzbetreiber. Wichtig: Für <span class="my">my</span><span class="sonar">Sonar</span> brauchst du keinen Datentarif.</p>'
);
$help["q4"] = new Help(
"Werbung-Spamming?",
'<p>Nein. Richtig ist, dass wir uns über Werbung refinanzieren. Aber du erhältst von uns niemals reine Werbebotschaften und schon gar nicht auf dein Handy. Werbung schalten wir immer nur in Verbindung mit einem Nutzen. Wenn dich <span class="my">my</span><span class="sonar">Sonar</span> z. B. informiert, dass deine Freunde in der Nähe sind, dann hängen wir an diese Info eine Werbebotschaft dran. Vielleicht laden euch dann Bistros oder Eiscafes in der Nähe auf eine Erfrischung ein.</p>'
);
$help["q5"] = new Help(
"Handynr. notwendig?",
'<p>Nein. <span class="my">my</span><span class="sonar">Sonar</span> funktioniert auch ohne. Allerdings stehen dir manche Funktionen ohne Handynummer nicht zu Verfügung. So können wir dich z. B. nicht informieren, wenn Freunde oder Flirts in deiner Nähe sind. Außerdem kannst du keine Gratis-SMS an deine Freunde versenden. Es spricht unserer Meinung nach auch nichts dagegen, deine Handynummer anzugeben. Sie bleibt geheim, wir geben sie nicht weiter und du erhälst keine unerwünschten SMS oder Anrufe. Das ist ein Versprechen!</p><p><a href="index.php?m=updateUser&Option=MobilePhoneNumber">Handynummer angeben</a></p>'
);
$help["q6"] = new Help(
"Was sind BEFs?",
'<p>BEF steht für BestFriend. <span class="my">my</span><span class="sonar">Sonar</span> informiert deine besten Freunde, wenn du in ihrer Nähe bist. Du kannst bis zu 5 deiner Freunde zu BestFriends machen.</a></p>'
);
$help["q7"] = new Help(
"Wann kriegen BEFs SMS?",
'<p>Deine BestFriends bekommen eine SMS-Info mit deinem Standort und der Entfernung, wenn...<p>(1) du deinen Standort wechselst und<br/>(2) du eine Suche startest und<br/>(3) deine Freunde gerade off sind und<br/>(4) sie am selben Tag online und<br/>(4) in deiner Nähe waren.</p>Die Nähe bestimmen deine Freunde über ihre Umkreis-Einstellungen selbst. SMS werden aber maximal bis 5km verschickt und natürlich nur, wenn deine Freunde ihre Handynr. angegeben und bestätigt haben.</p>'
);
$help["q8"] = new Help(
"Auge auf Flirts werden?",
'<p>Du kannst ein Auge auf Flirts werfen und wirst per SMS informiert, wenn sie in der Nähe sind. Du erfährst, wie weit dein Flirt von dir entfernt ist. Den genauen Standort siehst du aber nur, wenn dein Flirt das auch zugelassen hat. Die Nähe bestimmst du selbst über deine Umkreis-<a href="index.php?m=getSonarPreferences">Einstellungen</a>. Eine SMS bekommst du nur, wenn du offline bist. Natürlich mußt du vorher deine Handynummer angegeben und bestätigt haben ;-)</p><p><a href="index.php?m=updateUser&Option=MobilePhoneNumber">Handynummer angeben</a></p>'
);
// general questions to mySonar
$help["q901"] = new Help(
"Was sind City Manager?",
'<p>Das sind Leute, die für dich in einer Stadt oder Region unterwegs sind, um neue Kooperationspartner und interessante Locations zu finden. Und da der SMS-Versand ja Kohle kostet, suchen City Manager auch Werbepartner und werden im Gegenzug anteilig am Umsatz von <span class="my">my</span><span class="sonar">Sonar</span> beteiligt.</p>'
);
$help["q902"] = new Help(
"Was sind \$onars?",
'<p>$onar heißt die offizielle Währung in <span class="my">my</span><span class="sonar">Sonar</span>. Wir zahlen dir $onars, wenn du Freunde einlädtst und interessante Locations meldest. Für $onars kannst du dir dann SMS-Nachrichten an Freunde kaufen. Eine SMS kostet 30 $onars.</p>'
);
$help["q903"] = new Help(
"Wasn fürn Geldschein?",
'<p><span class="my">my</span><span class="sonar">Sonar</span> hat eine eigene offizielle Währung, die $onars. Wenn dir jemand einen $onar-Geldschein gegeben hat, dann kannst du seinen Gegenwert auf dein Konto bei <span class="my">my</span><span class="sonar">Sonar</span> gutschreiben lassen. Dazu mußt du einfach nur den aufgedruckten Code angeben und schon kriegst du das Geld. Für $onars kannst du z. B. kostenlose SMS an Freunde senden oder Rabatte von unseren Partnern bekommen.</p>'
);
$help["q904"] = new Help(
'Mit $onars bezahlen',
'<p>Einige Unternehmen akzeptieren $onar-Banknoten als Zahlungsmittel. Du kannst also $onars von deinem Konto abheben und damit vor Ort bezahlen. Hier siehst du eine Liste unserer Partner, die $onars akzeptieren:<p><a href="index.php?m=getPointOfInterest&ID=171">Discothek BaCa, Nettetal</a></p></p>'
);
// fields
$help["MobilePhoneNumber"] = new Help(
"Deine Handynummer",
'<p><span class="my">my</span><span class="sonar">Sonar</span> informiert dich kostenlos per SMS, wenn deine Freunde in der Nähe sind oder sie mit dir zu einer Party gehen möchten.</p><p>Das geht natürlich nur, wenn du uns deine Handynummer gibst. Und mach dir keine Sorgen! Die Nummer bleibt geheim, und du bekommst auch keine unerwüschten SMS (z. B. Werbung oder Spam).</p><p><a href="index.php?m=updateUser&Option=MobilePhoneNumber">Handynummer angeben</a></p>'
);
$help["QueryDEFAULT"] = new Help(
"Suche mit Standort",
'<p>Standardmäßig durchsucht <span class="my">my</span><span class="sonar">Sonar</span> deine Umgebung und findet alle Mitglieder und Plätze (Points Of Interest) in der Nähe. Hierfür brauchen wir deinen aktuellen Aufenthaltsort. Schreib ihn doch einfach z. B. von einem Straßenschild ab. Je genauer deine Angabe, desto genauer ist auch die Suche. Ort, Straße und Hausnummer sind bis wenige Meter genau. Aber es reicht, wenn du die Stadt oft auch einen Stadtteil oder sogar nur eine Straße angibst. Die Angaben kannst du einfach durch Leerzeichen voneinander trennen.</p>'
);
$help["QueryUSER"] = new Help(
"Suche nach Leuten",
'<p>Bei der Suche nach Leuten durchsucht <span class="my">my</span><span class="sonar">Sonar</span> alle Mitglieder-Profile nach deinem Stichwort oder der eingegebenen User-ID (UID) und versucht deine Eingabe zu finden. Wir suchen auch nach Übereinstimmungen in Kurz-Infos von Mitgliedern.</p>'
);
$help["QueryUID"] = new Help(
"Suche mit UID",
'<p>Mitgliederprofile haben in <span class="my">my</span><span class="sonar">Sonar</span> eine eindeutige Nummer, die so genannte UID (User Identifier). Manchmal wird dir jemand eine solche UID mitteilen. Über die UID-Suche kannst du das Profil dann sofort finden.</p>'
);
$help["QueryPID"] = new Help(
"Suche mit PID",
'<p>Point Of Interests haben in <span class="my">my</span><span class="sonar">Sonar</span> eine eindeutige Nummer, die so genannte PID (POI Identifier). Manchmal wird dir jemand eine solche PID mitteilen. Über die PID-Suche kannst du das Profil des Point Of Interests dann sofort finden.</p>'
);
$help["QueryKEY"] = new Help(
"Suche mit Stichwort",
'<p>Bei der Suche mit einem Stichwort durchsucht <span class="my">my</span><span class="sonar">Sonar</span> alle Profile und versucht dein Stichwort zu finden. Hierüber kannst du dann einfach nach Namen von Mitgliedern oder Plätzen (Points Of Interest) oder User- bzw. POI-IDs suchen. Wir suchen auch nach Übereinstimmungen in Kurz-Infos von Mitgliedern und Beschreibungen von Plätzen.</p>'
);
// modules
$help["mod0"] = new Help(
"News aus meinem Netzwerk",
'<p>Damit du immer auf dem Laufenden bleibst, informiert dich <span class="my">my</span><span class="sonar">Sonar</span> über die Aktivitäten deiner Kontakte.</p><p>Folgende Aktivitäten werden aufgelistet:</p><p>· Aufnahme neuer Kontakte<br/>· Statusmeldungen<br/>· neue Profilfotos<br/>· neue Kurzinfos im Profil<br/>· neue Points of Interest (POI)<br/>· neue POI-Bewertungen</p><p>Es werden nur Aktivitäten bzw. Informationen deiner direkten Kontakte angezeigt.</p>'
);
$help["mod1"] = new Help(
"Kontakte meiner Kontakte",
'<p><span class="my">my</span><span class="sonar">Sonar</span> stellt dir Mitglieder vor, die zum Netzwerk deiner Freunde bzw. Kontakte gehören. Hier kannst du sehen, wen du über zwei Ecken kennst bzw. kennen lernen könntest.</p>'
);
$help["mod2"] = new Help(
"Die nächsten Geburtstage",
'<p>So kannst du keinen Geburtstag vergessen!</p><p><span class="my">my</span><span class="sonar">Sonar</span> zeigt dir an, wem du aus deinem Netzwerk als nächstes gratulieren solltest. Schreib ihnen doch eine kurze Message per Mail oder SMS. Oder überweise ihnen ein paar von deinen $onars als Geburtstagsgeschenk.</p><p>Es werden nur die Geburtstage deiner direkten Kontakte angezeigt und selbstverständlich nur dann, wenn deine Kontakte ihr Geburtsdatum hinterlegt haben. Die Liste bezieht sich auf einen Zeitraum von sechs Monaten.</p>'
);
$help["mod6"] = new Help(
"Beiträge aus meinen Gruppen",
'<p>Immer wenn in deinen Gruppen neue Beiträge verfasst werden, findest du sie hier. Die neuesten Beitr&auuml;ge erscheinen oben.</p>'
);
$help["mod3"] = new Help(
"Meine Gruppen",
'<p>Hier listen wir deine Gruppen auf. Gruppen, in denen du erst küzlich beigetreten bist, stehen oben.</p>'
);
$help["mod4"] = new Help(
"Meine Kontakte online",
'<p>Hier siehst du, ob deine Freunde und Bekannte gerade online sind und wann sie sich zuletzt innerhalb von <span class="my">my</span><span class="sonar">Sonar</span> bewegt haben. Wenn sie länger als 15 Minuten inaktiv waren, werden sie automatisch ausgeloggt. Dann verschwinden sie auch aus dieser Übersicht.</p>'
);
$help["mod5"] = new Help(
"Neue Gruppen",
'<p>Hier siehst du die neuen Gruppen, die du selbst oder andere Mitglieder gegründet haben.</p>'
);
$help["mod7"] = new Help(
"Kennst du schon...?",
'<p>Hier stellen wir dir einige Mitglieder vor, die ihr Profil ausgefüllft und ein Foto hinterlegt haben. Die Auswahl erfolgt ansonsten völlig zufällig.</p>'
);
$help["mod8"] = new Help(
"Die letzten Logins",
'<p>Hier zeigen wir dir, wer sich zuletzt am Dienst angemeldet hatte.</p>'
);
$help["imprint"] = new Help(
"Impressum",
'<div class="border"><p>'.$this->MySonar->getProperty("company_slogan").'</p></div>
<p><strong class="highlight">Betreiber</strong><br/>'.$this->MySonar->getProperty("company_name").'<br/>'.$this->MySonar->getProperty("company_street").'<br/>'.$this->MySonar->getProperty("company_location").'</p>
<p>'.$this->MySonar->getProperty("company_phone").'<br/>'.$this->MySonar->getProperty("company_fax").'<br/>'.$this->MySonar->getProperty("company_email").'<br/>'.($_SESSION["Security"] ? '<a href="index.php?m=sendMessage&Recipient='.$this->MySonar->getProperty("admin_username").'">Nachricht schreiben</a>':'').'</p>
<p><strong class="highlight">Geschäftsführer</strong><br/>
'.$this->MySonar->getProperty("ceo_name").'<br/>
Phone '.$this->MySonar->getProperty("ceo_phone").'<br/>
E-Mail '.$this->MySonar->getProperty("ceo_email").'<br/>
'.($_SESSION["Security"] ? '<a href="index.php?m=sendMessage&Recipient='.$this->MySonar->getProperty("ceo_username").'">Nachricht schreiben</a> | <a href="index.php?m=getProfile&Username='.$this->MySonar->getProperty("ceo_username").'">Zum Profil</a>':'').'
</p>
<p><strong class="highlight">Vertriebsleiter</strong><br/>
'.$this->MySonar->getProperty("cso_name").'<br/>
Phone '.$this->MySonar->getProperty("cso_phone").'<br/>
E-Mail '.$this->MySonar->getProperty("cso_email").'<br/>
'.($_SESSION["Security"] ? '<a href="index.php?m=sendMessage&Recipient='.$this->MySonar->getProperty("cso_username").'">Nachricht schreiben</a> | <a href="index.php?m=getProfile&Username='.$this->MySonar->getProperty("cso_username").'">Zum Profil</a>':'').'
</p>
<p><strong class="highlight">Haftung</strong><br/>Trotz sorgfältiger inhaltlicher Kontrolle übernehmen wir keine Haftung für die Inhalte externer Links. Für den Inhalt der verlinkten Seiten sind ausschließlich deren Betreiber verantwortlich.</p>'
);
$help["about"] = new Help(
"Über uns",
'<p>
<span class="my">my</span><span class="sonar">Sonar</span> ist Deutschlands erste standortbezogene Handy-Community mit eigener Währung.
Über <span class="my">my</span><span class="sonar">Sonar</span> lokalisieren Nutzer über ihr Handy Freunde, Flirts, Partys und
Plätze in ihrer Umgebung. Der kostenlose mobile Service läuft auf jedem internetfähigen Handy ohne zusätzliche
Installationen und ist eine innovative Kombination aus Navigationsgerät und Social Network. Mitglieder von <span class="my">my</span><span class="sonar">Sonar</span>
finden Menschen und Plätze in der unmittelbaren Umgebung in einer Navi-typischen kartografischen Darstellung. Wenn sie offline sind,
informiert der Dienst automatisch per Free-SMS, wenn etwas Interessantes in der Nähe passiert. Attraktive Funktionen des
Web 2.0 wie Freundesnetzwerke, Geburtstagserinnerungen und Gruppen runden das Angebot ab. Und das Beste: <span class="my">my</span><span class="sonar">Sonar</span>
belohnt die Meldung von interessanten Locations mit $onar-Dollar, der eigenen Währung. Für $onars können Nutzer kostenlose
SMS an ihre Kontakte versenden und bei <span class="my">my</span><span class="sonar">Sonar</span>-Partnern vor Ort real bezahlen.
</p>
<p>
Die Location Based Mobile Networking-Plattform mySonar.de wird von der mySonar GbR mit Geschäftssitz in Nettetal betrieben.
Geschäftspartnern bietet das Unternehmen eine attraktive Werbeplattform für Location Based Advertising, mit denen sie ihre
Kunden genau dort erreichen, wo sie gerade sind. AuĂerdem können Funktionen und Datenbank von <span class="my">my</span><span class="sonar">Sonar</span>
über White Labeling kostenlos in eigene Angebote integriert werden, um so Zusatzerträge zu erzielen.
</p>'
);
return $help[$key];
}
}
?>