/** * Install the Reviews application. * * @return boolean True on success, or false. */ public function install() { // Check if upload directories exist and if needed create them try { $controllerHelper = new Reviews_Util_Controller($this->serviceManager); $controllerHelper->checkAndCreateAllUploadFolders(); } catch (\Exception $e) { return LogUtil::registerError($e->getMessage()); } // create all tables from according entity definitions try { DoctrineHelper::createSchema($this->entityManager, $this->listEntityClasses()); } catch (\Exception $e) { if (System::isDevelopmentMode()) { return LogUtil::registerError($this->__('Doctrine Exception: ') . $e->getMessage()); } $returnMessage = $this->__f('An error was encountered while creating the tables for the %s extension.', array($this->name)); if (!System::isDevelopmentMode()) { $returnMessage .= ' ' . $this->__('Please enable the development mode by editing the /config/config.php file in order to reveal the error details.'); } return LogUtil::registerError($returnMessage); } // set up all our vars with initial values $this->setVar('enablecategorization', false); $this->setVar('pagesize', 10); $this->setVar('scoreForUsers', false); $this->setVar('addcategorytitletopermalink', false); $categoryRegistryIdsPerEntity = array(); // add default entry for category registry (property named Main) include_once 'modules/Reviews/lib/Reviews/Api/Base/Category.php'; include_once 'modules/Reviews/lib/Reviews/Api/Category.php'; $categoryApi = new Reviews_Api_Category($this->serviceManager); $categoryGlobal = CategoryUtil::getCategoryByPath('/__SYSTEM__/Modules/Global'); $registryData = array(); $registryData['modname'] = $this->name; $registryData['table'] = 'Review'; $registryData['property'] = $categoryApi->getPrimaryProperty(array('ot' => 'Review')); $registryData['category_id'] = $categoryGlobal['id']; $registryData['id'] = false; if (!DBUtil::insertObject($registryData, 'categories_registry')) { LogUtil::registerError($this->__f('Error! Could not create a category registry for the %s entity.', array('review'))); } $categoryRegistryIdsPerEntity['review'] = $registryData['id']; // create the default data $this->createDefaultData($categoryRegistryIdsPerEntity); // register persistent event handlers $this->registerPersistentEventHandlers(); // register hook subscriber bundles HookUtil::registerSubscriberBundles($this->version->getHookSubscriberBundles()); // initialisation successful return true; }