Current Path : /var/www/html/clients/nsmk.e-nk.ru/application/maxsite/admin/plugins/admin_page/ |
Current File : /var/www/html/clients/nsmk.e-nk.ru/application/maxsite/admin/plugins/admin_page/edit.php |
<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); mso_cur_dir_lang('admin'); ?> <h1>Редактирование страницы</h1> <p><a href="<?= $MSO->config['site_admin_url'] . 'page' ?>">Вернуться к списку страниц</a> <?php $id = mso_segment(3); // номер страницы по сегменту url // проверим, чтобы это было число //$id1 = (int) $id; //if ( (string) $id != (string) $id1 ) $id = false; // ошибочный id if (!is_numeric($id)) $id = false; // не число else $id = (int) $id; //echo ' | <a href="' . mso_get_permalink_page($id) . '">Посмотреть запись</a> (<a target="_blank" href="' . mso_get_permalink_page($id) . '">в новом окне</a>)</p>'; if ($id) // есть корректный сегмент { $CI = & get_instance(); # проверим текущего юзера и его разрешение на правку чужих страниц # если admin_page_edit=1, то есть разрешено редактировать в принципе (уже проверили раньше!), # то смотрим admin_page_edit_other. Если стоит 1, то все разрешено # если false, значит смотрим автора страницы и если он не равен юзеру, рубим доступ if ( !mso_check_allow('admin_page_edit_other') ) { # echo 'запрещено редактировать чужие страницы'; $current_users_id = getinfo('session'); $current_users_id = $current_users_id['users_id']; # получаем данные страницы $CI->db->select('page_id'); $CI->db->from('page'); $CI->db->where(array('page_id'=>$id, 'page_id_autor'=>$current_users_id)); $query = $CI->db->get(); if ($query->num_rows() == 0) // не автор { echo '<div class="error">' . t('Вам не разрешено редактировать чужие записи!', 'admin') . '</div>'; return; } } require_once( getinfo('common_dir') . 'category.php' ); // функции рубрик require_once( getinfo('common_dir') . 'meta.php' ); // функции meta - для меток //////////////////////////////////////////////////////////////////////////////// // этот код почти полностью повторяет код из new.php // разница только в том, что указан id if ( $post = mso_check_post(array('f_session_id', 'f_submit', 'f_content')) ) { mso_checkreferer(); //pr($_POST); // pr($post['f_content'], true); // $f_content = mso_text_to_html($post['f_content']); $f_content = $post['f_content']; if ( mso_hook_present('content_replace_chr10_br') ) { // если нужно задать свое начально форматирование, задайте хук content_replace_chr10_br $f_content = mso_hook('content_replace_chr10_br', $f_content); } else { $f_content = trim($f_content); $f_content = str_replace(chr(10), "<br>", $f_content); $f_content = str_replace(chr(13), "", $f_content); } // pr($f_content, true); // глюк FireFox исправлем замену абсолютного пути src на абсолютный $f_content = str_replace('src="../../', 'src="' . $MSO->config['site_url'], $f_content); $f_content = str_replace('src="../', 'src="' . $MSO->config['site_url'], $f_content); // $f_content = str_replace('src="../../application/', 'src="' . $MSO->config['application_url'], $f_content); // $f_content = str_replace('src="../application/', 'src="' . $MSO->config['application_url'], $f_content); $f_header = mso_text_to_html($post['f_header']); // $f_tags = $post['f_tags']; if ( isset($post['f_tags']) and $post['f_tags'] ) $f_tags = $post['f_tags'] ; else $f_tags = ''; if ( isset($post['f_menu_order'])) $page_menu_order = (int) $post['f_menu_order'] ; else $page_menu_order = ''; // pr(mso_explode($f_tags, false, false)); if ( isset($post['f_slug']) and $post['f_slug'] ) $f_slug = $post['f_slug'] ; else $f_slug = mso_slug($f_header); if ( isset($post['f_password']) and $post['f_password']) $f_password = $post['f_password'] ; else $f_password = ''; if ( isset($post['f_cat']) ) $f_cat = $post['f_cat'] ; else $f_cat = array(); // все мета $f_options = ''; if ( isset($post['f_options']) ) { foreach ($post['f_options'] as $key=>$val) { $f_options .= $key . '##VALUE##' . trim($val) . '##METAFIELD##'; } } if ( isset($post['f_status']) ) $f_status = $post['f_status'][0]; else $f_status = 'publish'; if ( isset($post['f_page_type']) ) $f_page_type = $post['f_page_type'][0]; else $f_page_type = '1'; if ( isset($post['f_page_parent']) and $post['f_page_parent'] ) $f_page_parent = (int) $post['f_page_parent']; else $f_page_parent = '0'; $f_date_change = isset($post['f_date_change']) ? '1' : '0'; // сменить дату? if ( // проверяем есть ли дата $f_date_change and isset($post['f_date_y']) and isset($post['f_date_m']) and isset($post['f_date_d']) and isset($post['f_time_h']) and isset($post['f_time_m']) and isset($post['f_time_s']) and $post['f_date_y'] > -1 and $post['f_date_y'] < 3000 and $post['f_date_m'] > -1 and $post['f_date_m'] < 13 and $post['f_date_d'] > -1 and $post['f_date_d'] < 32 and $post['f_time_h'] > -1 and $post['f_time_h'] < 25 and $post['f_time_m'] > -1 and $post['f_time_m'] < 61 and $post['f_time_s'] > -1 and $post['f_time_s'] < 61) { $page_date_publish_y = (int) $post['f_date_y']; $page_date_publish_m = (int) $post['f_date_m']; $page_date_publish_d = (int) $post['f_date_d']; $page_date_publish_h = (int) $post['f_time_h']; $page_date_publish_n = (int) $post['f_time_m']; $page_date_publish_s = (int) $post['f_time_s']; $page_date_publish = date('Y-m-d H:i:s', mktime($page_date_publish_h, $page_date_publish_n, $page_date_publish_s, $page_date_publish_m, $page_date_publish_d, $page_date_publish_y) ); } else $page_date_publish = false; // тут нужно будет изменить логику // если автор указан, то нужно проверять есть разрешение на указание другого // если есть разрешение, то все нормуль // если нет, то автор остается текущим if (isset($post['f_user_id'])) $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[] $f_id = mso_array_get_key($post['f_submit']); // подготавливаем данные для xmlrpc $data = array( 'user_login' => $MSO->data['session']['users_login'], 'password' => $MSO->data['session']['users_password'], 'page_id' => $f_id, '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_date_publish' => $page_date_publish, 'page_menu_order' => $page_menu_order, ); // pr($data); // pr($post); //pr($f_tags); //pr(mso_explode($f_tags, false, false)); // pr(mso_xmlrpc_this($data)); // выполняем запрос и получаем результат // $result = mso_xmlrpc_send('EditPage', mso_xmlrpc_this($data)); require_once( getinfo('common_dir') . 'functions-edit.php' ); // функции редактирования $result = mso_edit_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]) . '">' . t('Посмотреть запись', 'admin') . '</a> | (<a target="_blank" href="' . mso_get_permalink_page($result['result'][0]) . '">' . t('в новом окне', 'admin') . '</a>)'; // . ' | <a href="' . $MSO->config['site_admin_url'] . 'page_edit/' . $result['result'][0] . '">Изменить</a>'; } else $url = ''; echo '<div class="update">' . t('Страница обновлена!', 'admin') . ' ' . $url . '</div>'; // . $result['description']; # mso_flush_cache(); // сбросим кэш перенес в mso_edit_page # пулучаем данные страниц $CI->db->select('*'); $CI->db->from('page'); $CI->db->where(array('page_id'=>$id)); $query = $CI->db->get(); if ($query->num_rows() > 0) { foreach ($query->result_array() as $row) { // pr($row); $f_content = $row['page_content']; $f_header = $row['page_title']; $f_slug = $row['page_slug']; $f_status = $row['page_status']; $f_page_type = $row['page_type_id']; $f_password = $row['page_password']; $f_comment_allow = $row['page_comment_allow']; $f_ping_allow = $row['page_ping_allow']; $f_feed_allow = $row['page_feed_allow']; $f_page_parent = $row['page_id_parent']; $f_user_id = $row['page_id_autor']; $page_date_publish = $row['page_date_publish']; $page_menu_order = $row['page_menu_order']; } $f_cat = mso_get_cat_page($id); // рубрики в виде массива $f_tags = implode(', ', mso_get_tags_page($id)); // метки страницы в виде массива } // еще дата опубликования // и дата удаления } else echo '<div class="error">' . t('Ошибка обновления', 'admin') . '</div>'; } else { echo ' | <a href="' . mso_get_permalink_page($id) . '">' . t('Посмотреть запись', 'admin') . '</a> (<a target="_blank" href="' . mso_get_permalink_page($id) . '">' . t('в новом окне', 'admin') . '</a>)</p>'; // получаем данные записи $CI->db->select('*'); $CI->db->from('page'); $CI->db->where(array('page_id'=>$id)); $query = $CI->db->get(); if ($query->num_rows() > 0) { foreach ($query->result_array() as $row) { // pr($row); $f_content = $row['page_content']; $f_header = $row['page_title']; $f_slug = $row['page_slug']; $f_status = $row['page_status']; $f_page_type = $row['page_type_id']; $f_password = $row['page_password']; $f_comment_allow = $row['page_comment_allow']; $f_ping_allow = $row['page_ping_allow']; $f_feed_allow = $row['page_feed_allow']; $f_page_parent = $row['page_id_parent']; $f_user_id = $row['page_id_autor']; $page_date_publish = $row['page_date_publish']; $page_menu_order = $row['page_menu_order']; } $f_cat = mso_get_cat_page($id); // рубрики в виде массива $f_tags = implode(', ', mso_get_tags_page($id)); // метки страницы в виде массива } else { echo '<div class="error">' . t('Ошибочная страница (нет такой страницы)', 'admin') . '</div>'; return; } } // получим все опции редактора $editor_options = mso_get_option('editor_options', 'admin', array()); $f_header = htmlspecialchars($f_header); $f_tags = htmlspecialchars($f_tags); $f_all_tags = ''; // все метки // $all_tags_page = mso_get_all_tags_page(); // это массив if (function_exists('tagclouds_widget_custom')) { $f_all_tags = ' <script type="text/javascript"> function addTag(t) { var elem = document.getElementById("f_tags"); e = elem.value; if ( e != "" ) { elem.value = e + ", " + t; } else { elem.value = t; }; } function shtags(sh) { var elem1 = document.getElementById("f_all_tags_max_num"); var elem2 = document.getElementById("f_all_tags_all"); if (sh == 1) { elem1.style.display = "none"; elem2.style.display = "block"; } else { elem1.style.display = "block"; elem2.style.display = "none"; } } </script>' . NR; // только первые 20 $f_all_tags .= tagclouds_widget_custom(array( 'max_num' => isset($editor_options['tags_count']) ? $editor_options['tags_count'] : 20, 'max_size' => '180', 'sort' => isset($editor_options['tags_sort']) ? $editor_options['tags_sort'] : 0, 'block_start' => '<p id="f_all_tags_max_num"><br>', 'block_end' => ' <a title="' . t('Показать все метки', 'admin') . '" href="#" onClick="shtags(1); return false;">>>></a></p>', 'format' => '<span style="font-size: %SIZE%%"><a href="#" onClick="addTag(\'%TAG%\'); return false;">%TAG%</a><sub style="font-size: 7pt;">%COUNT%</sub></span>' )); // все метки $f_all_tags .= tagclouds_widget_custom(array( 'max_num' => 9999, 'max_size' => '180', 'sort' => isset($editor_options['tags_sort']) ? $editor_options['tags_sort'] : 0, 'block_start' => '<p id="f_all_tags_all" style="display: none;"><br>', 'block_end' => ' <a title="' . t('Показать только самые популярные метки', 'admin') . '" href="#" onClick="shtags(2); return false;"><<<</a></p>', 'format' => '<span style="font-size: %SIZE%%"><a href="#" onClick="addTag(\'%TAG%\'); return false;">%TAG%</a><sub style="font-size: 7pt;">%COUNT%</sub></span>' )); } $fses = mso_form_session('f_session_id'); // сессия // получаем все типы страниц $all_post_types = ''; $query = $CI->db->get('page_type'); foreach ($query->result_array() as $row) { if ($f_page_type == $row['page_type_id']) $che = 'checked="checked"'; else $che = ''; $all_post_types .= '<p><label><input name="f_page_type[]" type="radio" ' . $che . ' value="' . $row['page_type_id'] . '"> ' . $row['page_type_name'] . '</label></p>'; } // получаем все рубрики чекбоксы $all_cat = mso_cat_ul('<label><input name="f_cat[]" type="checkbox" %CHECKED% value="%ID%" title="id = %ID%"> %NAME%</label>', true, $f_cat, array()); if ($f_comment_allow) $f_comment_allow = 'checked="checked"'; else $f_comment_allow = ''; if ($f_feed_allow) $f_feed_allow = 'checked="checked"'; else $f_feed_allow = ''; // не используется if ($f_ping_allow) $f_ping_allow = 'checked="checked"'; else $f_ping_allow = ''; # получаем список юзеров $CI->db->select('users_id, users_login, users_nik'); $CI->db->from('users'); $query = $CI->db->get(); $all_users = array(); // если есть данные, то выводим if ($query->num_rows() > 0) { foreach ($query->result_array() as $row) $all_users[$row['users_id']] = $row['users_login'] . ' (' . $row['users_nik'] . ')'; } $CI->load->helper('form'); $all_users = form_dropdown('f_user_id', $all_users, $f_user_id, ' style="width: 99%;" '); $f_status_draft = $f_status_private = $f_status_publish = ''; if ($f_status == 'draft') $f_status_draft = 'checked'; elseif ($f_status == 'private') $f_status_private = 'checked'; else $f_status_publish = 'checked'; // ($f_status == 'publish') $name_submit = 'f_submit[' . $id . ']'; // дата публикации // $f_date_change = 'checked="checked"'; $f_date_change = ''; // сменить дату не нужно - будет время автоматом поставлено текущее // $date_time = date('Y-m-d H:i:s'); $date_cur = strtotime($page_date_publish); $date_time = t('Сохранено:', 'admin') . ' ' . $page_date_publish; $date_time .= '<br>' . t('На блоге как:', 'admin') . ' ' . mso_date_convert('Y-m-d H:i:s', $page_date_publish); $date_time .= '<br>' . t('Тек. время:', 'admin') . ' ' . date('Y-m-d H:i:s'); // $date_time = t('Сохранено:', 'admin') . ' ' . $page_date_publish; // $date_time .= '<br>' . t('Сейчас:', 'admin') . ' ' . mso_date_convert('Y-m-d H:i:s', date('Y-m-d H:i:s')); // $page_date_publish; $date_cur_y = date('Y', $date_cur); $date_cur_m = date('m', $date_cur); $date_cur_d = date('d', $date_cur); $tyme_cur_h = date('H', $date_cur); $tyme_cur_m = date('i', $date_cur); $tyme_cur_s = date('s', $date_cur); $date_all_y = array(); for ($i=2005; $i<2021; $i++) $date_all_y[$i] = $i; $date_all_m = array(); for ($i=1; $i<13; $i++) $date_all_m[$i] = $i; $date_all_d = array(); for ($i=1; $i<32; $i++) $date_all_d[$i] = $i; $date_y = form_dropdown('f_date_y', $date_all_y, $date_cur_y, ' style="margin-top: 5px; width: 60px;" '); $date_m = form_dropdown('f_date_m', $date_all_m, $date_cur_m, ' style="margin-top: 5px; width: 60px;" '); $date_d = form_dropdown('f_date_d', $date_all_d, $date_cur_d, ' style="margin-top: 5px; width: 60px;" '); $time_all_h = array(); for ($i=0; $i<24; $i++) $time_all_h[$i] = $i; $time_all_m = array(); for ($i=0; $i<60; $i++) $time_all_m[$i] = $i; $time_all_s = $time_all_m; $time_h = form_dropdown('f_time_h', $time_all_h, $tyme_cur_h, ' style="margin-top: 5px; width: 60px;" '); $time_m = form_dropdown('f_time_m', $time_all_m, $tyme_cur_m, ' style="margin-top: 5px; width: 60px;" '); $time_s = form_dropdown('f_time_s', $time_all_s, $tyme_cur_s, ' style="margin-top: 5px; width: 60px;" '); // получаем все страницы, для того чтобы отобразить их в паренте $CI->db->select('page_id, page_title'); $CI->db->where('page_status', 'publish'); $CI->db->where('page_id !=', $id); $CI->db->order_by('page_date_publish', 'desc'); $query = $CI->db->get('page'); $all_pages = NR . '<select name="f_page_parent" style="margin-top: 5px; width: 99%;" >' . NR; $all_pages .= NR . '<option value="0">' . t('Нет', 'admin') . '</option>'; if ($query->num_rows() > 0) { foreach ($query->result_array() as $row) { if ($row['page_id'] == $f_page_parent) $sel = ' selected="selected"'; else $sel = ''; $all_pages .= NR . '<option ' . $sel . 'value="' . $row['page_id'] . '">' . $row['page_id'] . ' - ' . $row['page_title'] . '</option>'; } } $all_pages .= NR . '</select>' . NR; # мета большие,вынесена в отдельный файл # из неё получается $all_meta = '<p>Нет</p>'; require($MSO->config['admin_plugins_dir'] . 'admin_page/all_meta.php'); $f_return = ''; # форма вынесена в отдельный файл, поскольку она одна и таже для new и edit # из неё получается $do и $posle require($MSO->config['admin_plugins_dir'] . 'admin_page/form.php'); $f_content = htmlspecialchars($f_content); $ad_config = array( 'action'=> '', 'content' => $f_content, 'do' => $do, 'posle' => $posle, ); # отображаем редактор # есть ли хук на редактор: если да, то получаем эту функцию # если нет, то отображаем стандартный editor_jw if (mso_hook_present('editor_custom')) mso_hook('editor_custom', $ad_config); else editor_jw($ad_config);; //editor_jw($ad_config); //////////////////////////////////////////////////////////////////////////////// } else { echo '<div class="error">' . t('Ошибочный запрос', 'admin') . '</div>'; // id - ошибочный } ?>