<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
// сохраняем запись в текстовый файл
function export_page($data)
{
$result['result'] = false;
$CI = & get_instance();
$CI->db->select('page.*, page_type.*');
$CI->db->from('page');
$CI->db->where_in('page.page_id', $data['page_id']);
$CI->db->join('page_type', 'page_type.page_type_id = page.page_type_id', 'left');
$CI->db->group_by('page.page_id');
$r = $CI->db->get();
$pages = $r->result_array();
if ($pages and count($pages) === 1)
{
$page = $pages[0];
// здесь нужно получить рубрики записи и все её мета
$CI->db->select('page_id, category.category_id, category.category_name, category.category_slug, category.category_desc, category.category_id_parent');
$CI->db->where_in('page_id', $data['page_id']);
$CI->db->from('cat2obj');
$CI->db->join('category', 'cat2obj.category_id = category.category_id');
if ($query = $CI->db->get())
$cat = $query->result_array();
else
$cat = array();
// переместим все в массив
$page_cat = array();
$page_cat_detail = array();
foreach ($cat as $key=>$val)
{
$page_cat[] = $val['category_id'];
$page_cat_detail[$val['category_id']] = array('category_name' => $val['category_name'], 'category_slug' => $val['category_slug'], 'category_desc' => $val['category_desc'], 'category_id_parent' => $val['category_id_parent'], 'category_id' => $val['category_id']);
}
$page['page_categories'] = $page_cat;
$page['page_categories_detail'] = $page_cat_detail;
// все метки
$CI->db->select('SQL_BUFFER_RESULT `meta_id_obj`, `meta_key`, `meta_value`', false);
$CI->db->where( array ( 'meta_table' => 'page' ) );
$CI->db->where_in('meta_id_obj', $data['page_id']);
if ($query = $CI->db->get('meta'))
$meta = $query->result_array();
else
$meta = array();
// переместим все в массив
$page_meta = array();
foreach ($meta as $key=>$val)
{
$page_meta[$val['meta_key']][] = $val['meta_value'];
}
// метки отдельно
if (isset($page_meta['tags']))
{
$page['page_tags'] = $page_meta['tags'];
unset($page_meta['tags']);
}
else
{
$page['page_tags'] = array();
}
$page['page_meta'] = $page_meta;
// все данные получены
$out = 'TITLE: ' . $page['page_title'] . NR;
if ($all_cat = $page['page_categories_detail'])
{
$cats = '';
foreach ($all_cat as $cat)
{
$cats .= $cat['category_name'] . "\t";
}
$cats = str_replace("\t", ' / ', trim($cats));
$out .= 'CAT+: ' . $cats . NR;
}
// TAG
if ($page['page_tags'])
{
$tags = implode("\t", $page['page_tags']);
$tags = str_replace("\t", ', ', trim($tags));
$out .= 'TAG: ' . $tags . NR;
}
// комментарии к странице
require_once( getinfo('common_dir') . 'comments.php' );
$page['comments'] = mso_get_comments($data['page_id']);
$out .= 'SLUG: ' . $page['page_slug'] . NR;
$out .= 'DATE: ' . $page['page_date_publish'] . NR;
if ($page['page_type_name'] != 'blog')
$out .= 'TYPE: ' . $page['page_type_name'] . NR;
if ($page['page_status'] != 'publish')
$out .= 'STATUS: ' . $page['page_status'] . NR;
if ($page['page_menu_order'])
$out .= 'MENU_ORDER: ' . $page['page_menu_order'] . NR;
if ($page['page_password'])
$out .= 'PASSWORD: ' . $page['page_password'] . NR;
if ($page['page_menu_order'] === 0)
$out .= 'COMMENT_ALLOW: 1' . NR;
if ($page['page_feed_allow'] === 0)
$out .= 'FEED_ALLOW: 1' . NR;
// все мета выведем в виде META-ключ: значение
// [parser_content] => Array
// (
// [0] => Default
// )
// _pr($page['page_meta']);
ksort($page['page_meta']);
foreach($page['page_meta'] as $k => $v)
{
if (!isset($v[0])) continue;
if (!empty($v) and !empty($v[0]))
{
// дефолтный парсер не указываем — нет смысла
if ($k === 'parser_content' and $v[0] === 'Default') continue;
$u = str_replace("\n", '__NR__', trim($v[0]));
$out .= 'META-' . $k . ': ' . $u . NR;
}
}
// $out .= 'ID_AUTHOR: ' . $page['page_id_autor'] . NR; // не используется
// добавим все связанные файлы в _pages
$pages_dir = getinfo('uploads_dir') . '_pages/' . $data['page_id'] . '/';
$pages_url = '[[R_1]]_pages/' . $data['page_id'] . '/';
$CI->load->helper('directory');
$dirs = directory_map($pages_dir, 2); // только в текущем каталоге
if ($dirs)
{
$out .= NR;
foreach ($dirs as $file)
{
if (is_array($file)) continue; // каталог — это массив
$out .= $pages_url . $file . NR;
}
}
$out .= '---' . NR;
// нужно ли делать эту замену???
$page['page_content'] = str_replace("<br>", "\n", $page['page_content']);
$out .= $page['page_content'] . NR;
$out = str_replace(getinfo('uploads_url') . '_pages/' . $data['page_id'] . '/', '[[PAGE_FILES]]', $out);
$out = str_replace(getinfo('uploads_url'), '[[UPLOADS_URL]]', $out);
$out = str_replace(getinfo('siteurl'), '[[SITE_URL]]', $out);
// спецзамены
$out = str_replace('[[R_1]]', getinfo('uploads_url'), $out);
if ($page['comments'])
{
$out .= NR . '---COMMENTS-START---' . NR;
foreach ($page['comments'] as $key => $com)
{
$out .= 'comment_author: ' . $com['comments_author_name'] . NR;
$out .= 'comment_author_IP: ' . $com['comments_author_ip'] . NR;
$out .= 'comment_date: ' . $com['comments_date'] . NR;
$out .= 'comment_content: ' . str_replace("\n", '__NR__', trim($com['comments_content'])) . NR;
$out .= '---' . NR;
}
$out .= '---COMMENTS-END---' . NR;
$out = str_replace("\n---\n---COMMENTS-END---", "\n---COMMENTS-END---", $out);
}
// pr($page);
// pr($out, 1);
$result['result'] = true; // false для теста
$result['description'] = t('AutoPost');
$result['out'] = $out;
$result['fn'] = $page['page_id'] . '-' . $page['page_slug'] . '.txt';
return $result;
}
return $result;
}
// function _my_meta($page, $key, $meta, $def = false)
// {
// if (isset($page['page_meta'][$meta][0]) and $m = $page['page_meta'][$meta][0])
// {
// if ($def !== false and $def === $m)
// return '';
// else
// return $key . ': ' . $m . NR;
// }
// else
// return '';
// }
# end of file