Пример #1
0
 /**
  * Returns the conditionals just for Neo block types.
  *
  * @return array
  */
 public function getConditionals()
 {
     craft()->neo->requirePlugin('reasons');
     // TODO Reduce database impact
     $blockTypeConditionals = [];
     $sources = [];
     $neoBlockTypeRecords = Neo_BlockTypeRecord::model()->findAll();
     if ($neoBlockTypeRecords) {
         foreach ($neoBlockTypeRecords as $neoBlockTypeRecord) {
             $neoBlockType = Neo_BlockTypeModel::populateModel($neoBlockTypeRecord);
             $sources[$neoBlockType->id] = $neoBlockType->fieldLayoutId;
         }
     }
     $conditionals = [];
     $conditionalsRecords = Reasons_ConditionalsRecord::model()->findAll();
     if ($conditionalsRecords) {
         foreach ($conditionalsRecords as $conditionalsRecord) {
             $conditionalsModel = Reasons_ConditionalsModel::populateModel($conditionalsRecord);
             if ($conditionalsModel->conditionals && $conditionalsModel->conditionals != '') {
                 $conditionals[$conditionalsModel->fieldLayoutId] = $conditionalsModel->conditionals;
             }
         }
     }
     foreach ($sources as $blockTypeId => $fieldLayoutId) {
         if (isset($conditionals[$fieldLayoutId])) {
             $blockTypeConditionals[$blockTypeId] = $conditionals[$fieldLayoutId];
         }
     }
     return $blockTypeConditionals;
 }
Пример #2
0
 /**
  * Finds and returns the block type record from a block type model.
  * If the block type is just newly created, a fresh record will be returned.
  *
  * @param Neo_BlockTypeModel $blockType
  * @return Neo_BlockTypeRecord
  * @throws Exception
  */
 private function _getBlockTypeRecord(Neo_BlockTypeModel $blockType)
 {
     if (!$blockType->isNew()) {
         $blockTypeId = $blockType->id;
         if (!isset($this->_blockTypeRecordsById) || !array_key_exists($blockTypeId, $this->_blockTypeRecordsById)) {
             $this->_blockTypeRecordsById[$blockTypeId] = Neo_BlockTypeRecord::model()->findById($blockTypeId);
             if (!$this->_blockTypeRecordsById[$blockTypeId]) {
                 throw new Exception(Craft::t('No block type exists with the ID “{id}”.', ['id' => $blockTypeId]));
             }
         }
         return $this->_blockTypeRecordsById[$blockTypeId];
     }
     return new Neo_BlockTypeRecord();
 }