/** * copy一份布局并返回布局的信息 */ public function get_layout_preview() { if (!$this->input['layout_id']) { $this->errorOutput('LAYOUT OR TEMPLATE ID IS EMPTY'); } $layout_id = intval($this->input['layout_id']); $template_id = intval($this->input['template_id']); //copy一份此布局里的单元 $sql = "SELECT * FROM " . DB_PREFIX . "layout_cell WHERE layout_id = " . $layout_id; $q = $this->db->query($sql); $new_cell_ids = array(); while ($row = $this->db->fetch_array($q)) { $new_cell_name = date('YmdHis') . hg_generate_user_salt(6); $find[] = $row['cell_name']; $replace[] = $new_cell_name; $row['cell_name'] = $new_cell_name; $row['cell_code'] = str_replace($row['cell_name'], $new_cell_name, $row['cell_code']); $row['original_id'] = $row['id']; $row['param_asso'] = addslashes($row['param_asso']); unset($row['id'], $row['layout_id']); //unset掉layout_id防止更新操作不成功对原始布局产生有影响 $new_cell_ids[] = $row['id'] = $this->db->insert_data($row, 'layout_cell'); $row['param_asso'] = unserialize(stripslashes($row['param_asso'])); $layout_cell[] = $row; } //布局详细信息 $condition = ' AND id = ' . $layout_id; $layout_info = $this->layout->detail($condition); $layout_info['content'] = html_entity_decode($layout_info['content']); $layout_info['css'] = html_entity_decode($layout_info['css']); //重新生成一份布局 $layout_info['content'] = str_replace($find, $replace, $layout_info['content']); $layout_info['original_id'] = $layout_info['id']; unset($layout_info['id']); $layout_info['id'] = $this->db->insert_data($layout_info, 'layout'); if ($new_cell_ids) { $this->db->update_data('layout_id=' . $layout_info['id'], 'layout_cell', ' id IN(' . implode(',', $new_cell_ids) . ')'); } $layout_info['content'] = str_replace($find, $replace, $layout_info['content']); //布局命名空间和头部处理 $layout_info = $this->layout->layout_namespace_and_header_process($layout_info); $ret = array(); //处理布局中单元的信息、生成html $return_cell = isset($this->input['return_cell']) ? $this->input['return_cell'] : true; if ($return_cell) { if (!class_exists('Magic')) { include CUR_CONF_PATH . 'lib/magic.class.php'; } $objMagic = new Magic(); foreach ($layout_cell as $k => $v) { $layout_cell[$k] = $objMagic->cellProcess($v); } $ret['cells'] = $layout_cell; $ret = array_merge($ret, $layout_info); } $this->addItem($ret); $this->output(); }
public function cellPreview() { $intCellId = intval($this->input['intCellId']); $arData = $this->input['arData']; if (!$intCellId) { $this->errorOutput('NO CELLID'); } if (!class_exists('cell')) { include CUR_CONF_PATH . 'lib/cell.class.php'; } $objCell = new cell(); $arCellInfo = $objCell->detail(' AND id = ' . $intCellId); if (!class_exists('Magic')) { include CUR_CONF_PATH . 'lib/magic.class.php'; } $objMagic = new Magic(); $arCellInfo = $objMagic->cellProcess($arCellInfo, 'false', $arData); $this->addItem($arCellInfo); $this->output(); }
public function cellDataUpdate() { $intCellId = intval($this->input['intCellId']); $intContentId = $this->input['intContentId']; if (!$intCellId || !$intContentId) { $this->errorOutput('NO ID'); } if (!empty($this->input['arIndexPic'])) { $this->input['arIndexPic'] = array('host' => $this->input['arIndexPic']['host'], 'dir' => $this->input['arIndexPic']['dir'], 'filepath' => $this->input['arIndexPic']['filepath'], 'filename' => $this->input['arIndexPic']['filename']); } $arData = array('title' => $this->input['strTitle'], 'brief' => $this->input['strBrief'], 'content_url' => $this->input['strContentUrl'], 'indexpic' => $this->input['arIndexPic'] ? serialize($this->input['arIndexPic']) : ''); if (!class_exists('cell')) { include CUR_CONF_PATH . 'lib/cell.class.php'; } $objCell = new cell(); $arContent = $objCell->detail(' AND cell_id = ' . $intCellId . ' AND content_id = ' . $intContentId, 'cell_data'); if (empty($arContent)) { $arData['cell_id'] = $intCellId; $arData['content_id'] = $intContentId; $this->db->insert_data($arData, 'cell_data'); } else { $this->db->update_data($arData, 'cell_data', 'cell_id = ' . $intCellId . ' AND content_id = ' . $intContentId); } $arCellInfo = $objCell->detail(' AND id = ' . $intCellId); //删除单元内容缓存 $objCell->delete_cell_data_cache($intCellId); //重新处理该单元信息 if (!class_exists('Magic')) { include CUR_CONF_PATH . 'lib/magic.class.php'; } $objMagic = new Magic(); $arCellInfo = $objMagic->cellProcess($arCellInfo, true); $this->addItem($arCellInfo); $this->output(); }