protected static function putTestContent() { QC::executeSQL('SET FOREIGN_KEY_CHECKS = 0'); QC::executeSQL('DROP TABLE IF EXISTS products'); QC::executeSQL('DROP TABLE IF EXISTS brands'); QC::executeSQL('DROP TABLE IF EXISTS brands_translate'); $storagePath = __DIR__ . '/storage/'; $mo = ModelOperator::getInstance($storagePath); $mo->generateBasicStructure('Product'); $mo->generateBasicStructure('Brand'); ModelStructure::getInstanceForModel('Product')->addColumn('id_brand', array('type' => 'int(11) unsigned'))->addRelation('brand')->saveStructure(); ModelStructure::getInstanceForModel('Brand')->addRelation('products')->addAbility('translate', array('columns' => array('title')))->saveStructure(); $mo->generateAllModelClasses(); require_once $storagePath . 'bases/BaseProduct.php'; require_once $storagePath . 'bases/BaseBrand.php'; require_once $storagePath . 'classes/Product.php'; require_once $storagePath . 'classes/Brand.php'; ModelOperator::getAbilityInstanceForModel('Brand', 'Translate')->cleanup(); $mo->updateDBForAllModels(); }
private function _preDelete() { $abilities = $this->_structure->getAbilities(); if (empty($abilities)) { $abilities = array(); } foreach ($abilities as $abilityName => $abilityInfo) { ModelOperator::getAbilityInstanceForModel($this->_name, $abilityName)->preDelete($this); } $this->preDelete(); }
public function setupAddedAbilities() { if (empty($this->_addedAbilities)) { return $this; } foreach ($this->_addedAbilities as $abilityName) { $instance = ModelOperator::getAbilityInstanceForModel($this->_modelName, $abilityName); $instance->setup(); } $this->_addedAbilities = array(); return $this; }
private function _postLoad() { $abilities = $this->_structure->getAbilities(); if (empty($abilities)) { $abilities = array(); } foreach ($abilities as $abilityName => $abilityInfo) { ModelOperator::getAbilityInstanceForModel($this->_modelClass, $abilityName)->postLoad($this); } $relations = $this->_structure->getRelations(); if (empty($relations)) { $relations = array(); } foreach ($relations as $relationName => $relationInfo) { if (!empty($relationInfo['autoload'])) { $this->loadRelated($relationName); } } $this->postLoad(); }