Example #1
0
 /**
  * Sets new metadata.
  * @param $metadata An array of metadata.
  * @param $user The current user.
  */
 public static function setMetadata($className, array $metadata, User $user = null)
 {
     assert('is_string($className) && $className != ""');
     if ($user instanceof User && isset($metadata['perUser'])) {
         try {
             $perUserMetadata = PerUserMetadata::getByClassNameAndUser($className, $user);
         } catch (NotFoundException $e) {
             $perUserMetadata = new PerUserMetadata();
             $perUserMetadata->className = $className;
             $perUserMetadata->user = $user;
         }
         $perUserMetadata->serializedMetadata = serialize($metadata['perUser']);
         $saved = $perUserMetadata->save();
         assert('$saved');
     }
     if (isset($metadata['global'])) {
         try {
             $globalMetadata = GlobalMetadata::getByClassName($className);
         } catch (NotFoundException $e) {
             $globalMetadata = new GlobalMetadata();
             $globalMetadata->className = $className;
         }
         $globalMetadata->serializedMetadata = serialize($metadata['global']);
         $saved = $globalMetadata->save();
         assert('$saved');
     }
 }
 /**
  * Check if default metadata are changed
  * @param string $className
  * @return boolean
  */
 public static function isClassMetadataSavedInDatabase($className)
 {
     try {
         $globalMetadata = GlobalMetadata::getByClassName($className);
         $isClassMetadataSavedInDatabase = true;
     } catch (NotFoundException $e) {
         $isClassMetadataSavedInDatabase = false;
     }
     return $isClassMetadataSavedInDatabase;
 }
 public function testGlobalMetadata()
 {
     $globalMetadata = new GlobalMetadata();
     $globalMetadata->className = 'Whatever';
     $globalMetadata->serializedMetadata = serialize(array('stuff', 1));
     $this->assertTrue($globalMetadata->save());
     unset($globalMetadata);
     $globalMetadata = GlobalMetadata::getByClassName('Whatever');
     $this->assertEquals('a:2:{i:0;s:5:"stuff";i:1;i:1;}', $globalMetadata->serializedMetadata);
 }
 public function actionReadMetadata($className)
 {
     if (!Group::isUserASuperAdministrator(Yii::app()->user->userModel)) {
         throw new NotSupportedException();
     }
     if (GlobalMetadata::isClassMetadataSavedInDatabase($className)) {
         echo 'The metadata is saved in the database ' . "<BR>";
     } else {
         echo 'The metadata is not saved in the database ' . "<BR>";
     }
     echo "<pre>";
     print_r($className::getMetadata());
     echo "</pre>";
 }
Example #5
0
 /**
  * Sets metadata for the model.
  * @see getDefaultMetadata()
  * @returns An array of metadata.
  */
 public static function setMetadata(array $metadata)
 {
     if (YII_DEBUG) {
         self::assertMetadataIsValid($metadata);
     }
     $className = get_called_class();
     foreach (array_reverse(RuntimeUtil::getClassHierarchy($className, static::$lastClassInBeanHeirarchy)) as $modelClassName) {
         if ($modelClassName::getCanHaveBean()) {
             if ($modelClassName::canSaveMetadata()) {
                 if (isset($metadata[$modelClassName])) {
                     try {
                         $globalMetadata = GlobalMetadata::getByClassName($modelClassName);
                     } catch (NotFoundException $e) {
                         $globalMetadata = new GlobalMetadata();
                         $globalMetadata->className = $modelClassName;
                     }
                     $globalMetadata->serializedMetadata = serialize($metadata[$modelClassName]);
                     $saved = $globalMetadata->save();
                     // TODO: decide how to deal with this properly if it fails.
                     //       ie: throw or return false, or something other than
                     //           this naughty assert.
                     assert('$saved');
                 }
             }
         }
     }
     self::forgetBeanModel(get_called_class());
     RedBeanModelsCache::forgetAllByModelType(get_called_class());
     GeneralCache::forgetEntry(get_called_class() . 'Metadata');
 }
Example #6
0
 public static function setMetadata(array $metadata)
 {
     if (YII_DEBUG) {
         self::assertMetadataIsValid($metadata);
     }
     // Save the mixed in Person metadata.
     if (isset($metadata['Person'])) {
         $modelClassName = 'Person';
         try {
             $globalMetadata = GlobalMetadata::getByClassName($modelClassName);
         } catch (NotFoundException $e) {
             $globalMetadata = new GlobalMetadata();
             $globalMetadata->className = $modelClassName;
         }
         $globalMetadata->serializedMetadata = serialize($metadata[$modelClassName]);
         $saved = $globalMetadata->save();
         assert('$saved');
     }
     if (isset($metadata['User'])) {
         parent::setMetadata($metadata);
     }
     GeneralCache::forgetEntry(get_called_class() . 'Metadata');
 }