| Current Path : /var/www/v3.cesa.co.za/src/CoreBundle/Services/ |
| Current File : /var/www/v3.cesa.co.za/src/CoreBundle/Services/KeyValueManager.php |
<?php
namespace App\CoreBundle\Services;
use Symfony\Component\DependencyInjection\ContainerInterface;
use App\CoreBundle\Entity\KeyValue;
/**
* Key Value manager
*
* @author Otto Saayman <otto@igotafrica.com>
* @package IGACoreBundle
* @subpackage Key Value
* @version 0.0.1
*/
final class KeyValueManager {
/**
* Service Container
* @var object
*/
private $container = null;
/**
* Entity manager
* @var object
*/
private $em;
/**
* Class construct
*
* @param ContainerInterface $container
* @param Logger $logger
* @return void
*/
public function __construct(ContainerInterface $container) {
$this->setContainer($container);
$this->setEm($container->get('doctrine')->getManager('default'));
return;
}
/**
* Get Container
*
* @return ContainerInterface $container
*/
public function getContainer() {
return $this->container;
}
/**
* Set Container
*
* @param ContainerInterface $container
* @return void
*/
public function setContainer($container) {
$this->container = $container;
}
/**
* Get Entity Manager
*
* @return string
*/
public function getEm() {
return $this->em;
}
/**
* Set Container
*
* @param string $em
* @return void
*/
public function setEm($em) {
$this->em = $em;
}
/**
* Find a key value object
*
* @param string $id
* @return KeyValue
*/
public function find($id) {
if (strlen($id) <= 0 || $id == '0') {
return;
}
return $this->em->getRepository(KeyValue::class)->find($id);
}
/**
* Find a KeyValue object by parameters
*
* @param array $params
* @return KeyValue
*/
public function findOneBy($params) {
return $this->em->getRepository(KeyValue::class)->findOneBy($params);
}
/**
* Save a key value object
*
* @param KeyValue &$keyValue
* @return void
*/
public function save(KeyValue &$keyValue) {
$this->em->persist($keyValue);
$this->em->flush();
}
/**
* Remove a key value object
*
* @param KeyValue &$keyValue
* @return void
*/
public function remove(KeyValue &$keyValue) {
$this->em->remove($keyValue);
$this->em->flush();
}
public function getKeyValue($keyValueName, $default = '', $isArray = false) {
if ($isArray) {
$default = json_encode($default, true);
}
$return = $this->getContainer()->get('system_setting.manager')->getMemCachedValue($keyValueName, $default);
if (strlen($return) > 0 && $return != '[]') {
if ($isArray) {
$return = json_decode($return, true);
}
return $return;
}
$keyValueObject = $this->findOneBy(array('key_value_name' => $keyValueName));
if (is_object($keyValueObject)) {
$return = $keyValueObject->getKeyValue();
} else {
$return = $default;
}
if ($isArray) {
$return = json_decode($return, true);
}
return $return;
}
public function setKeyValue($keyValueName, $keyValueData, $isArray = false) {
$keyValueObject = $this->findOneBy(array('key_value_name' => $keyValueName));
if (!is_object($keyValueObject)) {
$keyValueObject = new KeyValue();
}
if (is_object($this->getContainer()->get('user_list.manager')->getLoggedInUser())) {
$userListId = $this->getContainer()->get('user_list.manager')->getLoggedInUser()->getId();
} else {
$userListId = '';
}
if ($isArray) {
$keyValueData = json_encode($keyValueData);
}
$keyValueObject->setKeyValueName($keyValueName);
$keyValueObject->setKeyValue($keyValueData);
$keyValueObject->setCreatedBy($userListId);
$this->save($keyValueObject);
$this->getContainer()->get('system_setting.manager')->setMemCachedValue($keyValueName, $keyValueData);
}
public function getKeysByStartValue($keyValueStart) {
return $this->em->getRepository(KeyValue::class)->getKeysByStartValue($keyValueStart);
}
}