public function getById($id, $cache = true) { if ($cache == true) { $cacheId = 'SxModule_Pageform_Subscription_getById_' . sha1($id); $cache = Zend_Registry::get('cache'); if (true == ($result = $cache->load($cacheId))) { return $result; } } $db = Zend_Registry::get('db'); $select = $db->select()->from(array('pfsu' => $this->_tablename()), array('*'))->join(array('pf' => 'pageform'), 'pfsu.pfsu_pageform_id = pf.pf_id')->where('pfsu.' . $this->_primary_key() . ' = ?', $id); $result = $db->fetchRow($select); $data = $this->_mapper->toObject(is_array($result) ? $result : array()); $pageformMapper = new SxModule_Pageform_Mapper(); $data->setPageform($pageformMapper->toObject(is_array($result) ? $result : array())); $select_meta = $db->select()->from(array('sum' => 'pageform_subscription_meta'), array('*'))->where('pfsum_subscription_id = ?', (int) $data->getId()); $meta_results = $db->fetchAll($select_meta); $metaMapper = new SxModule_Pageform_Subscription_Meta_Mapper(); foreach ($meta_results as $meta) { if ($data->getId() == $meta['pfsum_subscription_id']) { $mapped = $metaMapper->toObject($meta); $data->addMeta($mapped); } } if ($cache == true) { $cacheTags = array('SxModule_Pageform_Subscription_getById', 'SxModule_Pageform_Subscription', 'SxModule_Pageform_Subscription_Id' . $id); $cache->save($data, $cacheId, $cacheTags); } return $data; }