public function actionUpdateSchemaByModelClassName($className) { $messageLogger = new MessageLogger(); RedBeanModelsToTablesAdapter::generateTablesFromModelClassNames(array($className), $messageLogger); echo "<pre>"; print_r($messageLogger->printMessages(true)); echo "</pre>"; }
public static function getByE($e) { assert('is_string($e)'); assert('$e != ""'); $bean = ZurmoRedBean::findOne('e', "e = '{$e}'"); assert('$bean === false || $bean instanceof RedBean_OODBBean'); if ($bean === false) { // we need this because C uses dynamic default values from it and we need this table to be available. RedBeanModelsToTablesAdapter::generateTablesFromModelClassNames(array('E'), new MessageLogger()); $model = new E(); $model->e = $e; $saved = $model->save(); if (!$saved) { throw new FailedToSaveModelException(); } return $model; } else { $model = static::makeModel($bean); } return $model; }
/** * @depends testGenerateTablesFromModelClassNamesForModelClassWithNoOwnMetadataAndCannotHaveBean */ public function testGenerateTablesFromModelClassNamesForModelClassWithNoOwnMetadataAndCanHaveBean() { $modelClassName = array('OwnedSecurableItem'); RedBeanModelsToTablesAdapter::generateTablesFromModelClassNames($modelClassName, static::$messageLogger); $processedTables = CreateOrUpdateExistingTableFromSchemaDefinitionArrayUtil::resolveProcessedTables(); $this->assertNotEmpty($processedTables); $this->assertCount(1, $processedTables); $this->assertEquals('ownedsecurableitem', $processedTables[0]); // trying again to ensure its only done once, not twice. $modelClassName = array('OwnedSecurableItem'); RedBeanModelsToTablesAdapter::generateTablesFromModelClassNames($modelClassName, static::$messageLogger); $processedTables = CreateOrUpdateExistingTableFromSchemaDefinitionArrayUtil::resolveProcessedTables(); $this->assertNotEmpty($processedTables); $this->assertCount(1, $processedTables); $this->assertEquals('ownedsecurableitem', $processedTables[0]); }
public static function buildDependentTestModels($messageLogger) { RedBeanModelsToTablesAdapter::generateTablesFromModelClassNames(static::$dependentTestModelClassNames, $messageLogger); static::buildReadPermissionsOptimizationTableForTestModels(); }
public static function autoBuildDatabase(&$messageLogger, $autoBuildTestModels = false) { ZurmoDatabaseCompatibilityUtil::createStoredFunctionsAndProcedures(); ZurmoDatabaseCompatibilityUtil::createActualPermissionsCacheTable(); ZurmoDatabaseCompatibilityUtil::createNamedSecurableActualPermissionsCacheTable(); ZurmoDatabaseCompatibilityUtil::createActualRightsCacheTable(); $messageLogger->addInfoMessage(Zurmo::t('InstallModule', 'Searching for models')); $rootModels = PathUtil::getAllCanHaveBeanModelClassNames(); $messageLogger->addInfoMessage(Zurmo::t('InstallModule', 'Models catalog built.')); RedBeanModelsToTablesAdapter::generateTablesFromModelClassNames($rootModels, $messageLogger); ReadPermissionsSubscriptionUtil::buildTables(); if ($autoBuildTestModels) { TestSuite::buildDependentTestModels($messageLogger); } }
public function testDateAttributeIsSanitizedCorrectly() { $super = $this->logoutCurrentUserLoginNewUserAndGetByUsername('super'); $metadata = User::getMetadata(); if (!in_array('birthday', $metadata['User']['members'])) { $metadata['User']['members'][] = 'birthday'; } if (!in_array(array('birthday', 'type', 'type' => 'date'), $metadata['User']['rules'])) { $metadata['User']['rules'][] = array('birthday', 'type', 'type' => 'date'); $metadata['User']['elements']['birthday'] = 'Date'; } unset($metadata['Person']); User::setMetadata($metadata); $messageLogger = new MessageLogger(); RedBeanModelsToTablesAdapter::generateTablesFromModelClassNames(array('User'), $messageLogger); UserTestHelper::createBasicUser('dateUser'); $dateUser = User::getByUsername('dateuser'); $this->setGetArray(array('id' => $dateUser->id)); $this->setPostArray(array('User' => array('birthday' => '12/05/2000'))); $this->runControllerWithRedirectExceptionAndGetContent('users/default/edit'); $dateUser = User::getById($dateUser->id); $this->assertEquals('2000-12-05', $dateUser->birthday); }
public function resolveDatabaseSchemaForModel($modelClassName) { assert('is_string($modelClassName) && $modelClassName != ""'); Yii::app()->gameHelper->muteScoringModelsOnSave(); $messageLogger = new MessageLogger(); RedBeanModelsToTablesAdapter::generateTablesFromModelClassNames(array($modelClassName), $messageLogger); Yii::app()->gameHelper->unmuteScoringModelsOnSave(); if ($messageLogger->isErrorMessagePresent()) { throw new FailedDatabaseSchemaChangeException($messageLogger->printMessages(true, true)); } }