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

153 lines
5.2 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: stModuleWebApi.class.php 10117 2011-01-11 11:26:42Z piotr $
* @author Michal Prochowski <michal.prochowski@sote.pl>
*/
/**
* Klasa stProducerWebApi
*
* @package stWebApiPlugin
* @subpackage libs
*/
class stWebApiBackendWebApi extends autoStWebApiBackendWebApi
{
/**
* Dodawanie danych
*
* @param object $object obiekt z parametrami
* @return object okiekt z numer id dodanych danych
* @throws WEBAPI_ADD_ERROR WEBAPI_REQUIRE_ERROR
* @todo dodać waliadacje danych
*/
public function doLogin( $object )
{
if (isset($object->_culture)) { $this->__setCulture($object->_culture);}
$this->TestAndValidatedoLoginFields( $object );
$item = new WebApiSession( );
if ( $item )
{
$c = new Criteria();
$c->add(sfGuardGroupPeer::NAME, 'admin');
$adminGroup = sfGuardGroupPeer::doSelectOne($c);
$c = new Criteria();
$c->add(sfGuardUserPeer::USERNAME,$object->username);
$c->addJoin(sfGuardUserGroupPeer::USER_ID,sfGuardUserPeer::ID);
$c->add(sfGuardUserGroupPeer::GROUP_ID, $adminGroup->getId());
$user = sfGuardUserPeer::doSelectOne($c);
if ($user && $user->checkPassword($object->password)) {
$con = Propel::getConnection();
// $c1 = new Criteria();
// $c1->add(WebApiSessionPeer::SF_GUARD_USER_ID, $user->getID());
// $c2 = new Criteria();
// $c2->add(WebApiSessionPeer::ACTIVE, 0);
// BasePeer::doUpdate($c1, $c2, $con);
$webapiConfig = stConfig::getInstance(sfContext::getInstance(), 'stWebApiBackend');
$loginHistory = $webapiConfig->get('login_history');
if ($loginHistory == true)
{
$timeLimit = $webapiConfig->get('session_time');
$updatedAt = date("Y-m-d H:i:s", time() - $timeLimit);
$c = new Criteria();
$c->add(WebApiSessionPeer::UPDATED_AT, $updatedAt, Criteria::LESS_THAN);
WebApiSessionPeer::doDelete($c);
}
try {
$item->setSfGuardUser($user);
$item->setHash(md5(microtime()));
$item->setActive(1);
$item->save( );
} catch ( Exception $e ) {
throw new SoapFault( "2", sprintf(WEBAPI_ADD_ERROR,$e->getMessage()));
}
// Zwracanie danych
$object = new StdClass( );
$this->getFieldsFordoLogin( $object, $item );
return $object;
}
throw new SoapFault("3", "Złe hasło lub nazwa użtykownika");
} else {
throw new SoapFault( "1", sprintf(WEBAPI_ADD_ERROR, "") );
}
}
/**
* Pobieranie danych
*
* @param object $object obiekt z parametrami
* @return object okiekt z danymi
* @throws WEBAPI_INCORRECT_ID WEBAPI_REQUIRE_ERROR
*/
public function noop( $object )
{
if (isset($object->_culture)) { $this->__setCulture($object->_culture);}
stWebApi::getLogin($object->hash, 'webapi_read');
$this->TestAndValidatenoopFields( $object );
$webapiConfig = stConfig::getInstance(sfContext::getInstance(), 'stWebApiBackend');
$timeLimit = $webapiConfig->get('session_time');
$object = new StdClass( );
$object->time = date(DATE_ATOM, time()+$timeLimit);
$object->duration = $timeLimit;
return $object;
}
/**
* Funkcja zwraca parametr echo
*
* @param stdClass $object
* @return stdClass
*/
public function test($object)
{
if (isset($object->_culture)) { $this->__setCulture($object->_culture);}
if(!isset($object->echo))
{
throw new SoapFault('1', 'Należy podać wymagany parametr echo.');
}
return $object;
}
public function getVersion($object) {
$packageInfo = sfYaml::load(sfConfig::get('sf_root_dir').'/packages/stWebApiPlugin/package.yml');
$object = new StdClass();
$object->version = $packageInfo['package']['version'];
return $object;
}
public function clearCache($object) {
stWebApi::getLogin($object->_session_hash, 'webapi_write');
stFunctionCache::clearAll();
stPartialCache::clearAll();
stFastCacheManager::clearCache();
$object->status = 1;
return $object;
}
}