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);
    }
}
Example #2
0
/**
 * 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;
}