function smarty_function_render_block($params, &$smarty) { if (!empty($params['block_id'])) { $block_id = $params['block_id']; $snapping_id = !empty($params['snapping_id']) ? $params['snapping_id'] : 0; if (!empty($params['dispatch'])) { $dispatch = $params['dispatch']; } else { $dispatch = !empty($_REQUEST['dispatch']) ? $_REQUEST['dispatch'] : 'index.index'; } $area = !empty($params['area']) ? $params['area'] : AREA; if (!empty($params['dynamic_object'])) { $dynamic_object = $params['dynamic_object']; } elseif (!empty($_REQUEST['dynamic_object']) && $area != 'C') { $dynamic_object = $_REQUEST['dynamic_object']; } else { $dynamic_object_scheme = SchemesManager::getDynamicObject($dispatch, $area); if (!empty($dynamic_object_scheme) && !empty($_REQUEST[$dynamic_object_scheme['key']])) { $dynamic_object['object_type'] = $dynamic_object_scheme['object_type']; $dynamic_object['object_id'] = $_REQUEST[$dynamic_object_scheme['key']]; } else { $dynamic_object = array(); } } $block = Block::instance()->getById($block_id, $snapping_id, $dynamic_object, DESCR_SL); return RenderManager::renderBlock($block); } }
/** * Updates object data in live content editing mode. * * @param string $params Params to be updated; array with keys name, value, lang_code, and need_render * @return bool */ function fn_live_editor_update_object($params) { $updated = false; /** * Performs actions before updating a live editor object * * @param array $params Params to be updated; array with keys name, value, lang_code, and need_render * @param bool $updated The "already updated" flag */ fn_set_hook('live_editor_update_object_pre', $params, $updated); if ($updated) { return true; } if (strpos($params['name'], ':')) { list($object, $field, $id) = explode(':', $params['name'], 3); $schema = fn_get_schema('customization', 'live_editor_objects'); if (!empty($schema[$object])) { $rule = $schema[$object]; if (!empty($rule['function'])) { $vars = $params + compact('object', 'field', 'id', 'rule'); $args = fn_live_editor_prepare_callback_args($rule['args'], $vars); call_user_func_array($rule['function'], $args); } if (!empty($rule['table'])) { $table = $rule['table']; $condition = array('id' => db_quote("?p = ?s", $rule['id_field'], $id)); if (!empty($rule['lang_code'])) { $condition['lang_code'] = db_quote("lang_code = ?s", $params['lang_code']); } /** * Prepares data for the live editor object update request * * @param array $params Params * @param array $rule Rule * @param array $condition Conditions * @param str $table Table name */ fn_set_hook('live_editor_update_object_table', $params, $rule, $condition, $table); db_query("UPDATE ?:{$table} SET ?u WHERE ?p", array($rule['value_field'] => $params['value']), implode(' AND ', $condition)); $updated = true; } if (!empty($params['need_render'])) { // Block if ($object == 'block' && $field == 'content') { $block = Block::instance()->getById($id); Tygh::$app['view']->assign('no_wrap', true); $content = RenderManager::renderBlock($block); if ($ajax = Tygh::$app['ajax']) { $ajax->assign('rendered_name', $params['name']); $ajax->assign('rendered_content', $content); } } } } } /** * Performs actions after updating a live editor object * * @param array $params Params * @param bool $updated The "already updated" flag */ fn_set_hook('live_editor_update_object_post', $params, $updated); return $updated; }