Files
grzanieplus.pl/plugins/stWebApiPlugin/lib/stWebApi.class.php
2025-03-12 17:06:23 +01:00

119 lines
4.0 KiB
PHP

<?php
/**
* SOTESHOP/stWebApiPlugin
*
* Ten plik należy do aplikacji stWebApiPlugin opartej na licencji (Open License SOTE) Otwarta Licencja SOTE.
* Nie zmieniaj tego pliku, jeśli chcesz korzystać z automatycznych aktualizacji oprogramowania.
* Jeśli chcesz wprowadzać swoje modyfikacje do programu, zapoznaj się z dokumentacją, jak zmieniać
* oprogramowanie bez zmiany kodu bazowego http://www.sote.pl/modifications
*
* @package stWebApiPlugin
* @subpackage libs
* @copyright SOTE (www.sote.pl)
* @license http://www.sote.pl/license/open (Open License SOTE) Otwarta Licencja SOTE
* @version $Id: stWebApi.class.php 12182 2011-04-13 10:27:21Z piotr $
* @author Michal Prochowski <michal.prochowski@sote.pl>
*/
/**
* Klasa stWebApi
*
* @package stWebApiPlugin
*/
class stWebApi
{
/**
* Sprawdzanie zablokowania API
*
* @return true/false - zablokowane/odblokowane
*/
public static function isEnabled()
{
$webapiConfig = stConfig::getInstance(sfContext::getInstance(), 'stWebApiBackend');
return $webapiConfig->get('webapi_on');
}
public static function getLogin($hash = '', $perm)
{
$c = new Criteria();
$c->add(WebApiSessionPeer::HASH, $hash);
$webapiConfig = stConfig::getInstance(sfContext::getInstance(), 'stWebApiBackend');
$timeLimit = $webapiConfig->get('session_time');
$updatedAt = time() - $timeLimit;
// $c->add(WebApiSessionPeer::UPDATED_AT, $updatedAt, Criteria::GREATER_THAN);
$session = WebApiSessionPeer::doSelectOne($c);
if (!$session || strtotime($session->getUpdatedAt()) < $updatedAt)
{
throw new SoapFault("255", sfContext::getInstance()->getI18n()->__("Proszę się zalogować", '', 'stWebApiBackend'));
}
else
{
if (!$session->getSfGuardUser()->hasPermission($perm) && $perm != '')
{
if ($perm == 'webapi_read') throw new SoapFault("255", sfContext::getInstance()->getI18n()->__("Użytkownik nie ma praw odczytu.", '', 'stWebApiBackend'));
if ($perm == 'webapi_write') throw new SoapFault("255", sfContext::getInstance()->getI18n()->__("Użytkownik nie ma praw zapisu.", '', 'stWebApiBackend'));
}
$session->setActive(1);
$session->setUpdatedAt(time());
$session->save();
sfContext::getInstance()->getUser()->signIn($session->getSfGuardUser());
}
}
public static function formatData($data, $type = 'string')
{
$result = null;
switch ($type)
{
case "string":
$data = htmlspecialchars_decode($data);
$data = preg_replace(
'/[\x00-\x08\x10\x0B\x0C\x0E-\x19\x7F]' .
'|[\x00-\x7F][\x80-\xBF]+' .
'|([\xC0\xC1]|[\xF0-\xFF])[\x80-\xBF]*' .
'|[\xC2-\xDF]((?![\x80-\xBF])|[\x80-\xBF]{2,})' .
'|[\xE0-\xEF](([\x80-\xBF](?![\x80-\xBF]))|(?![\x80-\xBF]{2})|[\x80-\xBF]{3,})/S',
'',
$data
);
//reject overly long 3 byte sequences and UTF-16 surrogates and replace with ?
$data = preg_replace('/\xE0[\x80-\x9F][\x80-\xBF]' .
'|\xED[\xA0-\xBF][\x80-\xBF]/S', '', $data);
$data = iconv("utf-8", "utf-8//ignore", $data);
$result = $data;
break;
case "boolean":
$result = boolval($data);
break;
case "integer":
$result = intval($data);
break;
case "double":
$result = floatval($data);
break;
case "dateTime":
$result = !empty($data) ? date_format(date_create($data), DATE_ATOM) : null;
break;
default:
$result = (string)$data;
break;
}
return $result;
}
}