HEX
Server: LiteSpeed
System: Linux s917.lon1.mysecurecloudhost.com 4.18.0-477.21.1.lve.1.el8.x86_64 #1 SMP Tue Sep 5 23:08:35 UTC 2023 x86_64
User: assibfaf (3034)
PHP: 7.4.33
Disabled: NONE
Upload Files
File: /home/assibfaf/assignmentghostwriter.com/prox-classes/Adapter/EntityMapper.php
<?php
/**
 * @package    Proxim
 * @author     Davison Pro <davisonpro.coder@gmail.com>
 * @copyright  2019 Proxim
 * @version    1.0.0
 * @since      File available since Release 1.0.0
 */

namespace Proxim\Adapter;

use Db;
use Proxim\Database\DbQuery;
use Proxim\Cache\Cache;


class EntityMapper
{
    /**
     * Load ObjectModel.
     *
     * @param $id
     * @param $entity \ObjectModel
     * @param $entity_defs
     * @param $should_cache_objects
     *
     * @throws \ProximDatabaseException
     */
    public function load($id, $entity, $entity_defs, $should_cache_objects)
    {
        // Load object from database if object id is present
        $cache_id = 'objectmodel_' . $entity_defs['classname'] . '_' . $id;
        if (!$should_cache_objects || !Cache::isStored($cache_id)) {
            $sql = new DbQuery();
            $sql->from($entity_defs['table'], 'a');
            $sql->where('a.`' . bqSQL($entity_defs['primary']) . '` =  \'' . pSQL($id) . '\'');

            if ($object_datas = Db::getInstance()->getRow($sql)) {
                $entity->id = $id;
                foreach ($object_datas as $key => $value) {
                    if (isset($key, $entity_defs['fields'])
                        || isset($key, $entity)) {
                        $entity->{$key} = $value;
                    } else {
                        unset($object_datas[$key]);
                    }
                }
                if ($should_cache_objects) {
                    Cache::store($cache_id, $object_datas);
                }
            }
        } else {
            $object_datas = Cache::retrieve($cache_id);
            if ($object_datas) {
                $entity->id = $id;
                foreach ($object_datas as $key => $value) {
                    $entity->{$key} = $value;
                }
            }
        }
    }
}