コード例 #1
0
 public function updateEntryType($fieldLayoutId)
 {
     $types = craft()->sections->getEntryTypesBySectionId($this->sectionId);
     foreach ($types as $type) {
         $record = EntryTypeRecord::model()->findById($type->id);
         $record->setAttribute('fieldLayoutId', $fieldLayoutId);
         $record->save(false);
     }
 }
コード例 #2
0
 public function getEntryTypeIds()
 {
     if ($entryTypeRecords = EntryTypeRecord::model()->ordered()->findAll()) {
         $entryTypes = EntryTypeModel::populateModels($entryTypeRecords);
         $sectionsWithEntryTypeIds = array();
         foreach ($entryTypes as $entryType) {
             if (!isset($sectionsWithEntryTypeIds[$entryType->sectionId])) {
                 $sectionsWithEntryTypeIds[$entryType->sectionId] = array();
             }
             $sectionsWithEntryTypeIds[$entryType->sectionId][] = $entryType->id;
         }
         return !empty($sectionsWithEntryTypeIds) ? $sectionsWithEntryTypeIds : false;
     }
     return false;
 }
コード例 #3
0
 /**
  * Any migration code in here is wrapped inside of a transaction.
  *
  * @return bool
  */
 public function safeUp()
 {
     /*
      *	Craft 2.5+ required – abort migration if not, making it possible to roll back to 2.3 or 2.4
      *
      */
     if (!version_compare(craft()->getVersion(), '2.5', '>=')) {
         throw new Exception(Craft::t('Reasons 1.0 requires Craft 2.5 or newer and is unable to complete this update. Please restore Reasons to v. 0.2.2 or older, or update your Craft install.'));
         return false;
     }
     $table = 'reasons';
     /*
      *	Add FK fieldLayoutId column
      *
      */
     $this->addColumnAfter($table, 'fieldLayoutId', ColumnType::Int, 'id');
     $this->addForeignKey($table, 'fieldLayoutId', 'fieldlayouts', 'id', 'CASCADE', 'CASCADE');
     /*
      *	Set fieldLayoutId for existing rows
      *
      */
     $entryTypeRecords = EntryTypeRecord::model()->findAll();
     if ($entryTypeRecords) {
         $entryTypes = EntryTypeModel::populateModels($entryTypeRecords);
         foreach ($entryTypes as $entryType) {
             if (!isset($entryType->fieldLayoutId) || !$entryType->fieldLayoutId) {
                 continue;
             }
             $this->update($table, array('fieldLayoutId' => $entryType->fieldLayoutId), 'typeId=:typeId', array(':typeId' => $entryType->id));
         }
     }
     /*
      *	Delete typeId column
      *
      */
     $this->dropForeignKey($table, 'typeId');
     $this->dropColumn($table, 'typeId');
     /*
      *	Delete sectionId column
      *
      */
     $this->dropForeignKey($table, 'sectionId');
     $this->dropColumn($table, 'sectionId');
     return true;
 }
コード例 #4
0
 /**
  * Reorders entry types.
  *
  * @param array $entryTypeIds
  *
  * @throws \Exception
  * @return bool
  */
 public function reorderEntryTypes($entryTypeIds)
 {
     $transaction = craft()->db->getCurrentTransaction() === null ? craft()->db->beginTransaction() : null;
     try {
         foreach ($entryTypeIds as $entryTypeOrder => $entryTypeId) {
             $entryTypeRecord = EntryTypeRecord::model()->findById($entryTypeId);
             $entryTypeRecord->sortOrder = $entryTypeOrder + 1;
             $entryTypeRecord->save();
         }
         if ($transaction !== null) {
             $transaction->commit();
         }
     } catch (\Exception $e) {
         if ($transaction !== null) {
             $transaction->rollback();
         }
         throw $e;
     }
     return true;
 }
コード例 #5
0
 private function _getLayouts()
 {
     $assetSources = craft()->assetSources->getAllSources();
     $categoryGroups = craft()->categories->getAllGroups();
     $globalSets = craft()->globals->getAllSets();
     $entryTypes = EntryTypeModel::populateModels(EntryTypeRecord::model()->ordered()->findAll());
     $tagGroups = craft()->tags->getAllTagGroups();
     //$userFields = FieldLayoutModel::populateModel(FieldLayoutRecord::model()->findByAttributes('type', ElementType::User));
     $sections = craft()->sections->getAllSections();
     $singleSections = array();
     foreach ($sections as $section) {
         $entryType = $section->getEntryTypes()[0];
         $singleSections[$section->id] = (int) $entryType->fieldLayoutId;
     }
     return array('assetSource' => $this->_mapLayouts($assetSources), 'categoryGroup' => $this->_mapLayouts($categoryGroups), 'globalSet' => $this->_mapLayouts($globalSets), 'entryType' => $this->_mapLayouts($entryTypes), 'tagGroup' => $this->_mapLayouts($tagGroups), 'singleSection' => $singleSections);
 }
コード例 #6
0
ファイル: ReasonsPlugin.php プロジェクト: andyra/tes
 /**
  * @return array
  */
 protected function getConditionals()
 {
     $r = array();
     $sources = array();
     // Entry types
     $entryTypeRecords = EntryTypeRecord::model()->findAll();
     if ($entryTypeRecords) {
         foreach ($entryTypeRecords as $entryTypeRecord) {
             $entryType = EntryTypeModel::populateModel($entryTypeRecord);
             $sources['entryType:' . $entryType->id] = $entryType->fieldLayoutId;
             $sources['section:' . $entryType->sectionId] = $entryType->fieldLayoutId;
         }
     }
     // Category groups
     $allCategoryGroups = craft()->categories->getAllGroups();
     foreach ($allCategoryGroups as $categoryGroup) {
         $sources['categoryGroup:' . $categoryGroup->id] = $categoryGroup->fieldLayoutId;
     }
     // Tag groups
     $allTagGroups = craft()->tags->getAllTagGroups();
     foreach ($allTagGroups as $tagGroup) {
         $sources['tagGroup:' . $tagGroup->id] = $tagGroup->fieldLayoutId;
     }
     // Asset sources
     $allAssetSources = craft()->assetSources->getAllSources();
     foreach ($allAssetSources as $assetSource) {
         $sources['assetSource:' . $assetSource->id] = $assetSource->fieldLayoutId;
     }
     // Global sets
     $allGlobalSets = craft()->globals->getAllSets();
     foreach ($allGlobalSets as $globalSet) {
         $sources['globalSet:' . $globalSet->id] = $globalSet->fieldLayoutId;
     }
     // Matrix blocks – TODO
     // $matrixBlockTypeRecords = MatrixBlockTypeRecord::model()->findAll();
     // if ($matrixBlockTypeRecords) {
     //     foreach ($matrixBlockTypeRecords as $matrixBlockTypeRecord) {
     //         $matrixBlockType = MatrixBlockTypeModel::populateModel($matrixBlockTypeRecord);
     //         $sources['matrixBlockType:' . $matrixBlockType->id] = $matrixBlockType->fieldLayoutId;
     //     }
     // }
     // Users
     $usersFieldLayout = craft()->fields->getLayoutByType(ElementType::User);
     if ($usersFieldLayout) {
         $sources['users'] = $usersFieldLayout->id;
     }
     // Solspace Calendar
     $solspaceCalendarPlugin = craft()->plugins->getPlugin('calendar');
     if ($solspaceCalendarPlugin && $solspaceCalendarPlugin->getDeveloper() === 'Solspace') {
         $solspaceCalendarFieldLayout = craft()->fields->getLayoutByType('Calendar_Event');
         if ($solspaceCalendarFieldLayout) {
             $sources['solspaceCalendar'] = $solspaceCalendarFieldLayout->id;
         }
     }
     // Commerce – TODO
     // $commercePlugin = craft()->plugins->getPlugin('commerce');
     // if ($commercePlugin && $commercePlugin->getDeveloper() === 'Pixel & Tonic') {
     //     // Product types
     //     $productTypes = craft()->commerce_productTypes->getAllProductTypes();
     //     if ($productTypes) {
     //         foreach ($productTypes as $productType) {
     //             $sources['commerceProductType:'.$productType->id] =
     //         }
     //     }
     // }
     // Get all conditionals
     $conditionals = array();
     $conditionalsRecords = Reasons_ConditionalsRecord::model()->findAll();
     if ($conditionalsRecords) {
         foreach ($conditionalsRecords as $conditionalsRecord) {
             $conditionalsModel = Reasons_ConditionalsModel::populateModel($conditionalsRecord);
             if ($conditionalsModel->conditionals && $conditionalsModel->conditionals != '') {
                 $conditionals['fieldLayout:' . $conditionalsModel->fieldLayoutId] = $conditionalsModel->conditionals;
             }
         }
     }
     // Map conditionals to sources
     foreach ($sources as $sourceId => $fieldLayoutId) {
         if (isset($conditionals['fieldLayout:' . $fieldLayoutId])) {
             $r[$sourceId] = $conditionals['fieldLayout:' . $fieldLayoutId];
         }
     }
     return $r;
 }