public function actionUpdateSchemaByModelClassName($className)
 {
     $messageLogger = new MessageLogger();
     RedBeanModelsToTablesAdapter::generateTablesFromModelClassNames(array($className), $messageLogger);
     echo "<pre>";
     print_r($messageLogger->printMessages(true));
     echo "</pre>";
 }
Example #2
0
 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]);
 }
Example #4
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));
     }
 }