255, ], ]; } /** * @inheritdoc */ public function attributeLabels() { return [ 'id' => Yii::t('app', 'id'), 'table_name' => Yii::t('app', 'table_name'), 'table_id' => Yii::t('app', 'table_id'), 'value' => Yii::t('app', 'value'), 'field_name' => Yii::t('app', 'field_name'), 'language' => Yii::t('app', 'language'), ]; } public static function getData($id, $model, $type) { $data = ArrayHelper::toArray(self::find() ->where([ 'table_id' => $id, 'table_name' => $model, 'field_type' => $type, ]) ->all()); $result = [ ]; for($i = 0; $i < count($data); $i++) { $result[ $data[ $i ][ 'parent_key' ] ][ $data[ $i ][ 'field_name' ] ] = $data[ $i ][ 'value' ]; } return $result; } /** * @param array $post - array with field data * @param int $table_id - row id in model table * @param string $table_name - madel table name * @param int $language - language id */ public static function saveFieldData($post, $table_id, $table_name, $language) { self::deleteAll([ 'table_id' => $table_id, 'table_name' => $table_name, 'language' => $language, 'field_type' => array_keys($post), ]); if($post) { /* * $k - field group name * $field - array of group variations */ foreach($post as $k => $field) { /** * $parent_key - group variation index * $row - array of indexed rows */ foreach($field as $parent_key => $row) { /** * $key - row sorting index * $value - array, where key - subfield name, value - subfield value */ foreach($row as $key => $value) { if(!empty($value[array_keys($value)[0]])) { $field_model = new Fields(); $field_model->field_name = array_keys($value)[ 0 ]; $field_model->value = $value[ array_keys($value)[ 0 ] ]; $field_model->table_name = $table_name; $field_model->table_id = $table_id; $field_model->field_type = $k; $field_model->language = 'ru'; $field_model->parent_key = $parent_key; $field_model->key = $key; $field_model->save(); } } } } } } /** * @param $post - array with field data * @param $table_id - row id in model table * @param $table_name - madel table name * @param $language - language id */ public static function saveFieldVideoData($post, $table_id, $table_name, $language) { self::deleteAll([ 'table_id' => $table_id, 'table_name' => $table_name, 'language' => $language, 'field_type' => array_keys($post), ]); if($post) { foreach($post as $k => $field) { foreach($field as $parent_key => $row) { foreach($row as $key => $value) { preg_match('/src=\"(.[^"]*)\"/', $value[ array_keys($value)[ 0 ] ], $video_url); if(isset( $video_url[ 1 ] ) && !empty( $video_url[ 1 ] )) { $field_model = new Fields(); $field_model->field_name = array_keys($value)[ 0 ]; $field_model->value = $video_url[ 1 ] . '?showinfo=0&autoplay=0'; $field_model->table_name = $table_name; $field_model->table_id = $table_id; $field_model->field_type = $k; $field_model->language = 'ru'; $field_model->parent_key = $parent_key; $field_model->key = $key; $field_model->save(); } } } } } } }