$f_user_id = (int) $post['f_user_id']; } else { $f_user_id = $MSO->data['session']['users_id']; } $f_comment_allow = isset($post['f_comment_allow']) ? '1' : '0'; $f_ping_allow = isset($post['f_ping_allow']) ? '1' : '0'; $f_feed_allow = isset($post['f_feed_allow']) ? '1' : '0'; // получаем номер опции id из fo_edit_submit[] // подготавливаем данные $data = array('user_login' => $MSO->data['session']['users_login'], 'password' => $MSO->data['session']['users_password'], 'page_title' => $f_header, 'page_content' => $f_content, 'page_type_id' => $f_page_type, 'page_id_cat' => implode(',', $f_cat), 'page_id_parent' => $f_page_parent, 'page_id_autor' => $f_user_id, 'page_status' => $f_status, 'page_slug' => $f_slug, 'page_password' => $f_password, 'page_comment_allow' => $f_comment_allow, 'page_ping_allow' => $f_ping_allow, 'page_feed_allow' => $f_feed_allow, 'page_tags' => $f_tags, 'page_meta_options' => $f_options, 'page_menu_order' => $page_menu_order); if ($page_date_publish) { $data['page_date_publish'] = $page_date_publish; } require_once getinfo('common_dir') . 'functions-edit.php'; // функции редактирования $result = mso_new_page($data); // pr($result); if (isset($result['result']) and $result['result']) { if (isset($result['result'][0])) { $url = '<a href="' . mso_get_permalink_page($result['result'][0]) . '" target="_blank">' . t('Посмотреть запись') . '</a> | ' . '<a href="' . $MSO->config['site_admin_url'] . 'page_edit/' . $result['result'][0] . '">' . t('Изменить') . '</a>'; } else { $url = ''; } echo '<div class="update">' . t('Запись добавлена!') . ' ' . $url . '</div>'; // . $result['description']; if ($url and isset($post['f_return'])) { mso_redirect($MSO->config['site_admin_url'] . 'page_edit/' . $result['result'][0], true); } # остальное на дефолт $f_content = ''; $f_header = '';
function add_new_page($fn, $UP_DIR) { global $MSO; $data = file_get_contents($fn); if ($data and preg_match('!(.*?)\\n(---)(.*)!is', $data, $conf)) { // только если есть шапка и текст if (isset($conf[1]) and isset($conf[3])) { $top = trim($conf[1]); $text = trim($conf[3]); $comments = array(); // комментарии, если есть // в тексте может быть секция ---COMMENTS-START--- ---COMMENTS-END--- if (preg_match('!(.*?)\\n(---COMMENTS-START---)(.*)\\n(---COMMENTS-END---)!is', $text, $t2)) { if (isset($t2[4])) { $text = trim($t2[1]); $comments = trim($t2[3]); // комментарии в свою очередь разбиваются --- $comments = array_map('trim', explode('---', $comments)); } } $conf = _parse_key_val($top); // _log($conf, 'conf'); // обязательные поля только TITLE if (!isset($conf['TITLE'])) { return; } // формируем данные для постинга // дополнительные мета-данные // вначале формируем общий массив, после выгоняем его в ##METAFIELD## $page_meta_options = array(); $page_meta_options['title'] = isset($conf['META-TITLE']) ? $conf['META-TITLE'] : ''; $page_meta_options['description'] = isset($conf['META-DESCRIPTION']) ? $conf['META-DESCRIPTION'] : ''; $page_meta_options['keywords'] = isset($conf['META-KEYWORDS']) ? $conf['META-KEYWORDS'] : ''; $page_meta_options['image_for_page'] = isset($conf['META-IMAGE_FOR_PAGE']) ? $conf['META-IMAGE_FOR_PAGE'] : ''; $page_meta_options['image_for_page_out'] = isset($conf['META-IMAGE_FOR_PAGE_OUT']) ? $conf['META-IMAGE_FOR_PAGE_OUT'] : ''; $page_meta_options['page_template'] = isset($conf['META-PAGE_TEMPLATE']) ? $conf['META-PAGE_TEMPLATE'] : ''; $page_meta_options['page_css_profiles'] = isset($conf['META-PAGE_CSS_PROFILES']) ? $conf['META-PAGE_CSS_PROFILES'] : ''; $page_meta_options['info-top-custom'] = isset($conf['META-INFO-TOP-CUSTOM']) ? $conf['META-INFO-TOP-CUSTOM'] : ''; $page_meta_options['parser_content'] = isset($conf['META-PARSER_CONTENT']) ? $conf['META-PARSER_CONTENT'] : 'Default'; // прогоняем текст через парсер $parser = $page_meta_options['parser_content']; // парсер $parser_all = mso_hook('parser_register'); // все зарегистрированные парсеры // если парсеры не зарегистрированы, то ничего не делаем if (isset($parser_all[$parser]['content_post_edit'])) { $func = $parser_all[$parser]['content_post_edit']; // функцию, которую нужно выполнить if (function_exists($func)) { $text = $func($text); } // прогоняем текст через парсер } $meta_options = ''; foreach ($page_meta_options as $key => $val) { $meta_options .= $key . '##VALUE##' . trim($val) . '##METAFIELD##'; } // TYPE: blog — тип записи — делаем запрос к существующим типам // поскольку тип нужно будет преобразовать в его id $CI =& get_instance(); $query = $CI->db->get('page_type'); $res = $query->result_array(); $page_type = array(); foreach ($res as $key => $row) { $page_type[$row['page_type_name']] = $row['page_type_id']; } $type = isset($conf['TYPE']) ? $conf['TYPE'] : 'blog'; if (isset($page_type[$type])) { $page_type_id = $page_type[$type]; } else { $page_type_id = $page_type['blog']; } // получаем все рубрики, смотрим верно ли они указаны // если нет, то рубрику не ставим // на выходе массив id реальных рубрик $CI->db->select('category_id, category_name, category_slug'); $CI->db->where('category_type', 'page'); $query = $CI->db->get('category'); $all_cats = $query->result_array(); $cat = array(); // рубрики указываются CAT_ID или CAT_SLUG или CAT if (isset($conf['CAT_ID'])) { if ($c1 = mso_explode($conf['CAT_ID'])) { // перебираем и ищем их в $all_cats // если есть добавляем номера в общий $cat foreach ($c1 as $id) { foreach ($all_cats as $catX) { if ($catX['category_id'] == $id) { $cat[] = $id; } } } } } elseif (isset($conf['CAT_SLUG'])) { if ($c1 = mso_explode(strtolower($conf['CAT_SLUG']), false)) { foreach ($c1 as $slug) { foreach ($all_cats as $catX) { if ($catX['category_slug'] == $slug) { $cat[] = $catX['category_id']; } } } } } elseif (isset($conf['CAT'])) { // указанные рубрики разделются / $c1 = explode('/', trim(mb_strtolower($conf['CAT']))); $c1 = array_map('trim', $c1); $c1 = array_map('trim', $c1); $c1 = array_unique($c1); if ($c1) { foreach ($c1 as $name) { foreach ($all_cats as $catX) { if (mb_strtolower($catX['category_name']) == $name) { $cat[] = $catX['category_id']; } } } } } // _log($cat, 'cat'); // _log($all_cats, 'all_cats'); $data = array('page_title' => $conf['TITLE'], 'page_content' => $text, 'page_type_id' => $page_type_id, 'page_meta_options' => $meta_options, 'page_date_publish' => isset($conf['DATE']) ? $conf['DATE'] : date('Y-m-d H:i:s')); if (isset($conf['STATUS'])) { $data['page_status'] = $conf['STATUS']; } if (isset($conf['MENU_ORDER'])) { $data['page_menu_order'] = (int) $conf['MENU_ORDER']; } if (isset($conf['COMMENT_ALLOW'])) { $data['page_comment_allow'] = $conf['COMMENT_ALLOW']; } if (isset($conf['PASSWORD'])) { $data['page_password'] = $conf['PASSWORD']; } if (isset($conf['FEED_ALLOW'])) { $data['page_feed_allow'] = (int) $conf['FEED_ALLOW']; } if (isset($conf['ID_AUTHOR'])) { $data['page_id_autor'] = (int) $conf['ID_AUTHOR']; } if (isset($conf['SLUG'])) { $data['page_slug'] = $conf['SLUG']; } if (isset($conf['TAG'])) { $data['page_tags'] = $conf['TAG']; } if ($cat) { $data['page_id_cat'] = implode(',', $cat); } // _log($data, 'mso_new_page'); // функции редактирования require_once getinfo('common_dir') . 'functions-edit.php'; $result = mso_new_page($data); // _log(); // _log($result, 'result'); $page_id = 0; if (isset($result['result'][0])) { $page_id = $result['result'][0]; echo $result['description'] . ' (' . str_replace($UP_DIR, '', $fn) . '): ID = ' . $page_id; } else { echo $result['description'] . ' (' . str_replace($UP_DIR, '', $fn) . ')'; } // добавляем комментарии if ($page_id and $comments) { foreach ($comments as $comment) { $com = _parse_key_val($comment); if (isset($com['comment_content'])) { $comment_content = trim(str_replace("__NR__", "\n", $com['comment_content'])); $com_data = array('comments_page_id' => $page_id, 'comments_content' => $comment_content, 'comments_date' => isset($com['comment_date']) ? $com['comment_date'] : date('Y-m-d H:i:s'), 'comments_author_ip' => isset($com['comment_author_IP']) ? $com['comment_author_IP'] : '1.1.1.1', 'comments_approved' => 1, 'comments_author_name' => isset($com['comment_author']) ? $com['comment_author'] : 'Аноним'); $CI->db->insert('comments', $com_data); } } } } else { echo 'Неверный фрормат файла (' . str_replace($UP_DIR, '', $fn) . ')'; } } else { echo 'Неверный фрормат файла (' . str_replace($UP_DIR, '', $fn) . ')'; } }
function mso_remote_f_newpost($post) { if (!isset($post['remote_page_title']) or !$post['remote_page_title']) { return 'ERROR: missing arguments (remote_page_title)'; } if (!isset($post['remote_page_content']) or !$post['remote_page_content']) { return 'ERROR: missing arguments (remote_page_content)'; } if (!isset($post['remote_page_id_autor']) or !$post['remote_page_id_autor']) { return 'ERROR: missing arguments (remote_page_id_autor)'; } // if (!isset($post['remote_page_cat_ids']) or !$post['remote_page_cat_ids']) return 'ERROR: missing arguments (remote_page_cat_ids)'; // if (!isset($post['remote_page_tags']) or !$post['remote_page_tags']) return 'ERROR: missing arguments (remote_page_tags)'; // if (!isset($post['remote_page_slug']) or !$post['remote_page_slug']) return 'ERROR: missing arguments (remote_page_slug)'; // if (!isset($post['remote_page_date_publish']) or !$post['remote_page_date_publish']) return 'ERROR: missing arguments (remote_page_date_publish)'; // if (!isset($post['remote_page_type_id']) or !$post['remote_page_type_id']) return 'ERROR: missing arguments ()'; // if (!isset($post['remote_page_status']) or !$post['remote_page_status']) return 'ERROR: missing arguments (remote_page_status)'; // if (!isset($post['remote_page_password']) or !$post['remote_page_password']) return 'ERROR: missing arguments (remote_page_password)'; // if (!isset($post['remote_page_id_parent']) or !$post['remote_page_id_parent']) return 'ERROR: missing arguments (remote_page_id_parent)'; // if (!isset($post['remote_page_meta_options']) or !$post['remote_page_meta_options']) return 'ERROR: missing arguments (remote_page_meta_options)'; $f_comment_allow = isset($post['remote_page_comment_allow']) ? '1' : '0'; $f_ping_allow = isset($post['remote_page_ping_allow']) ? '1' : '0'; $f_feed_allow = isset($post['remote_page_feed_allow']) ? '1' : '0'; $f_date_change = isset($post['remote_page_date_change']) ? '1' : '0'; // сменить дату? if ($f_date_change and isset($post['remote_page_date_publish']) and $post['remote_page_date_publish']) { $f_date_publish = $post['remote_page_date_publish']; } else { $f_date_publish = false; } $data = array('page_title' => $post['remote_page_title'], 'page_content' => $post['remote_page_content'], 'page_comment_allow' => $f_comment_allow, 'page_ping_allow' => $f_ping_allow, 'page_feed_allow' => $f_feed_allow, 'user_login' => $post['remote_users_login'], 'password' => $post['remote_users_password'], 'page_id_autor' => $post['remote_page_id_autor']); if ($f_date_publish) { $data['page_date_publish'] = $f_date_publish; } if (isset($post['remote_page_slug'])) { $data['page_slug'] = $post['remote_page_slug']; } if (isset($post['remote_page_tags'])) { $data['page_tags'] = $post['remote_page_tags']; } if (isset($post['remote_page_type_id'])) { $data['page_type_id'] = $post['remote_page_type_id']; } if (isset($post['remote_page_status'])) { $data['page_status'] = $post['remote_page_status']; } if (isset($post['remote_page_password'])) { $data['page_password'] = $post['remote_page_password']; } if (isset($post['remote_page_id_parent'])) { $data['page_id_parent'] = $post['remote_page_id_parent']; } if (isset($post['remote_page_meta_options'])) { $data['page_meta_options'] = $post['remote_page_meta_options']; } if (isset($post['remote_page_id_cat'])) { $data['page_id_cat'] = $post['remote_page_id_cat']; } //return pr($data, false, false); require_once getinfo('common_dir') . 'functions-edit.php'; // функции редактирования $result = mso_new_page($data); if (isset($result['result']) and $result['result']) { mso_flush_cache(); // сбросим кэш $out = 'OK: ' . $result['description'] . '#' . $result['result'][0] . '#' . $result['result'][1] . '#' . $result['result'][2]; // status // return pr($result['result'], false, false); return $out; } else { $out = 'ERROR: ' . $result['description']; return $out; } }
function mso_remote_f_newpost($post) { if ($post = mso_check_post(array('page_title', 'page_content', 'page_cat_ids', 'page_tags', 'page_slug', 'page_date_publish', 'page_type_id', 'page_status', 'page_password', 'page_id_parent', 'page_meta_options'))) { $f_comment_allow = isset($post['page_comment_allow']) ? '1' : '0'; $f_ping_allow = isset($post['page_ping_allow']) ? '1' : '0'; $f_feed_allow = isset($post['page_feed_allow']) ? '1' : '0'; $data = array('page_title' => $post['page_title'], 'page_content' => $post['page_content'], 'page_cat_ids' => $post['page_cat_ids'], 'page_tags' => $post['page_tags'], 'page_slug' => $post['page_slug'], 'page_comment_allow' => $f_comment_allow, 'page_ping_allow' => $f_ping_allow, 'page_feed_allow' => $f_feed_allow, 'page_date_publish' => $post['page_date_publish'], 'page_type_id' => $post['page_type_id'], 'page_status' => $post['page_status'], 'page_password' => $post['page_password'], 'page_id_parent' => $post['page_id_parent'], 'page_meta_options' => $post['page_meta_options'], 'page_id_autor' => getinfo('users_id')); require_once getinfo('common_dir') . 'functions-edit.php'; // функции редактирования $result = mso_new_page($data); if (isset($result['result']) and $result['result']) { mso_flush_cache(); // сбросим кэш $out = 'OK: ' . $result['description']; return $out; } else { $out = 'ERROR: ' . $result['description']; return $out; } } else { $out = 'ERROR: ' . 'missing arguments'; return $out; } }