Перейти к контенту

cybermad

Пользователи
  • Число публикаций

    26
  • Регистрация

  • Последнее посещение

Недавние посетители профиля

4 533 просмотра профиля

Достижения cybermad

  1. нет ничего сложного: просто залейте файл из архива в каталог mkportal/blocks/ и активируйте через админку портала там, где вам нужно (слева или справа на портале)
  2. Как вариант прочтите здесь или здесь.
  3. Почему подталкивание??????? т.е если MKP работает в связке с ИПБ, то мне не стоит здесь публиковать решения для портала? Если бы я подталкивал к регистрации, то не публиковал бы 100% инструкцию для установки, а опубликовал бы, скажем, процентов 95, а остальное можно было бы скачать или дочитать у нас. Этого нет. В первую очередь хочу поделиться тем, что у меня получается с другими!
  4. Результат работы.
  5. Модификация позволяет добавить в MKPortal функцию создания тем-анонсов и тем поддержки в указанном форуме при: 1. добавлении новости (в целях безопасности только при использовании BBCode-редактора); 2. добавлении нового файла в модуле "Файлы»; 3. добавлении нового обзора/статьи (в целях безопасности только при использовании BBCode-редактора); Модификация работает ТОЛЬКО С ФОРУМАМИ IPB ВЕРСИЙ 2.X Инструкция по установке. 1. Откройте файл mkportal/include/IPB/ipb_driverf.php 1.1. Найдите код: require_once ROOT_PATH . "conf_global.php"; 1.2. Ниже вставьте код: require_once ROOT_PATH . "sources/api/api_topics_and_posts.php"; 1.3. Найдите код: require $MK_PATH."mkportal/include/class_mkportals.php"; 1.4. Выше вставьте: //add by cybermad $ipb = "$mkportals->forum_patch/"; $api = new api_topics_and_posts(); $api->ipsclass =& $ipsclass; $api->path_to_ipb = $ipb; $api->api_init(); //end add 2. Для установки модификации в модуль новостей откройте файл mkportal/modules/news/index.php 2.1 Найдите код: function submit_news() { global $mkportals, $DB, $mklib, $Skin, $editorscript; 2.2. Замените на код: function submit_news() { global $mkportals, $DB, $mklib, $Skin, $editorscript, $MK_BOARD; 2.3. В функции function submit_news() найдите код: $editorscript = 1; $textarepar = "mce_editable=\"true\""; $textarew = "100%"; $bbeditor= ""; 2.4. Ниже добавьте: //add by cybermad post with IPB $fipb = ""; //end add 2.5. В функции function submit_news() найдите код: if ($mklib->mkeditor == "BBCODE") { $editorscript = ""; $textarepar = ""; $textarew = "75%"; $bbeditor= $mklib->get_bbeditor(); 2.6. Ниже добавьте: //add by cybermad post with IPB if($MK_BOARD == "IPB") { $query2 = $DB->query( "SELECT id, name FROM ibf_forums WHERE status = '1' ORDER BY `id`"); while( $forum = $DB->fetch_row($query2) ) { $idforum = $forum['id']; $forum = $forum['name']; $fselect.= "<option value=\"$idforum\">$forum</option>\n"; } $fipb = " {$mklib->lang['ne_forum']} <input type=\"checkbox\" name=\"inaforum\" value=\"1\" /> {$mklib->lang['ne_idforum']} <select name=\"forum\" size=\"1\" class=\"bgselect\"> {$fselect} </select> "; } else { $fipb = ""; } //end add 2.7. В функции function submit_news() найдите код: <td class=\"tdblock\"> {$mklib->lang['ne_category']}: <select name=\"categoria\" size=\"1\" class=\"bgselect\"> {$cselect} </select> </td> </tr> 2.8. Замените на код: <td class=\"tdblock\"> {$mklib->lang['ne_category']}: <select name=\"categoria\" size=\"1\" class=\"bgselect\"> {$cselect} </select> {$fipb} </td> </tr> 2.9. В функции function reg_data() найдите код: global $mkportals, $DB, $std, $print, $mklib, $mklib_board; 2.10. Замените на код: global $mkportals, $DB, $std, $print, $mklib, $mklib_board, $MK_BOARD, $api; 2.11.В функции function reg_data() найдите код: if (!$mkportals->input['categoria']) { $message = "{$mklib->lang['ne_createcat']}"; $mklib->error_page($message); exit; } 2.12. Ниже добавьте: if (!$mkportals->input['categoria']) { $message = "{$mklib->lang['ne_createcat']}"; $mklib->error_page($message); exit; } 2.13. В функции function reg_data() найдите код: if($mkportals->member['g_access_cp']) { $validat = "1"; } 2.14. Ниже добавьте: //add by cybermad for IPB posting if (($MK_BOARD == "IPB") and ($mklib->mkeditor == "BBCODE")) { $query = $DB->query( "SELECT id FROM mkp_news ORDER BY `id`"); while( $row = $DB->fetch_row($query) ) { $idn = $row['id']; $idn++; } $fcategoria= $mkportals->input['forum']; $inaforum = intval($mkportals->input['inaforum']); $message = "{$testo}<br><a href=\"$mklib->siteurl/index.php?ind=news&op=news_show_single&ide=$idn\">{$mklib->lang['ne_source']}</a><br><br>"; if($inaforum==1) { $api->set_author_by_id($idaut); $api->set_post_content($message); $api->set_forum_id($fcategoria); $api->set_topic_title($titolo); $api->set_topic_state('open'); $api->set_topic_invisible(!$validat); $api->set_topic_pinned($pinned); $api->create_new_topic(); $tfid = $api->topic['tid']; $hr = "<br><br><a href=\"$mklib->siteurl/$mkportals->forum_url/index.php?showtopic=$tfid\">{$mklib->lang['ne_fsource']}</a>"; $testo = $mklib->convert_savedb("{$testo} {$hr}"); } } //end add 2.15.Откройте файл mkportal/lang/ваш язык/lang_news.php и найдите код: ?> 2.16.Выше добавьте: //add by cybermad 05.04.2009 $langmk['ne_forum'] = "Добавить тему обсуждения на форум"; $langmk['ne_idforum'] = "в раздел:"; $langmk['ne_source'] = "<b>Источник</b>"; $langmk['ne_fsource'] = "<b>Тема обсуждения на форуме</b>"; $langmk['ne_ferror'] = "Внимание, при написании новости был выбран раздел на форуме для создания темы для обсуждения, но опция создания не была включена. Вернитесь назад и проверьте установленные значения. Если вы хотите продолжить публикацию новости без создания темы для обсуждения, то выберите первое значение в списке разделов на форуме."; После установки модификации в модуль новостей при включенном редакторе BBCode в форме публикации новости появится флажок, разрешающий опубликовать новость на форуме и выпадающий список с названиями форумов, где можно создать тему с анонсом. В теме на форуме присутствует обратная ссылка на источник в портале. В новости присутствует ссылка на тему обсуждения на форуме. !!!Продолжение установки в следующем сообщении!!! 3. Для установки модификации в модуль файлов откройте файл mkportal/modules/downloads/index.php 3.1 Найдите код: function submit_file() { global $mkportals, $DB, $mklib, $Skin, $mklib_board; 3.2. Замените на код: function submit_file() { global $mkportals, $DB, $mklib, $Skin, $mklib_board, $MK_BOARD; 3.3. В функции function submit_file() найдите код: $cselect = $this->row_select_event(); if ($cselect == FALSE) { $message = "{$mklib->lang['dw_nocat']}"; $mklib->error_page($message); exit; } 3.4. Ниже вставьте код: //add by cybermad post with IPB if($MK_BOARD == "IPB") { $query2 = $DB->query( "SELECT id, name FROM ibf_forums WHERE status = '1' ORDER BY `id`"); while( $forum = $DB->fetch_row($query2) ) { $idforum = $forum['id']; $forum = $forum['name']; $fselect.= "$forum\n"; } $fipb = " {$mklib->lang['dw_idforum']} {$fselect} "; } else { $fipb = ""; } //end add 3.5. В функции function submit_file() найдите код: {$mklib->lang['dw_section']} {$cselect} 3.6. Ниже вставьте код: {$mklib->lang['dw_forum']} {$fipb} 3.7. Найдите код: function add_file() { global $mkportals, $DB, $std, $print, $mklib, $Skin, $mklib_board; 3.8. Замените на код: function add_file() { global $mkportals, $DB, $std, $print, $mklib, $Skin, $mklib_board, $api, $MK_BOARD; 3.9. В функции function add_file() найдите код: $evento = intval($mkportals->input['evento']); $titolo = $mkportals->input['titolo']; $screen1 = $mkportals->input['screen1']; $screen2 = $mkportals->input['screen2']; $demo = $mkportals->input['demo']; $descrizione = $mkportals->input['descrizione']; 3.10. Добавьте ниже: //add by cybermad for IPB posting if ($mkportals->input['inaforum']==0 && $mkportals->input['forum']>1) { $message = "{$mklib->lang['dw_ferror']}"; $mklib->error_page($message); exit; } //end add 3.11. В функции function add_file() найдите код: $validat = "1"; $approval = $mklib->config['approval_download']; if ($approval == "2" || $approval == "3") { $validat = 0; } if($mkportals->member['g_access_cp']) { $validat = "1"; } 3.12. Добавьте ниже: //add by cybermad for IPB posting if (($MK_BOARD == "IPB")) { $query = $DB->query( "SELECT id FROM mkp_download ORDER BY `id`"); while( $row = $DB->fetch_row($query) ) { $idn = $row['id']; $idn++; } $fcategoria= $mkportals->input['forum']; $inaforum = intval($mkportals->input['inaforum']); $message = "{$descrizione}siteurl/index.php?ind=downloads&op=entry_view&iden=$idn\">{$mklib->lang['dw_source']}"; if($inaforum==1) { $api->set_author_by_id($mkportals->member['id']); $api->set_post_content($message); $api->set_forum_id($fcategoria); $api->set_topic_title($titolo); $api->set_topic_state('open'); $api->set_topic_invisible(!$validat); $api->create_new_topic(); $tfid = $api->topic['tid']; $hr = "siteurl/$mkportals->forum_url/index.php?showtopic=$tfid\">{$mklib->lang['dw_fsource']}"; $descrizione = $mklib->convert_savedb("{$descrizione} {$hr}"); } } //end add 3.13. Откройте файл mkportal/lang/ваш язык/ lang_download.php и найдите код: ?> 3.14. Выше добавьте: //add by cybermad 05.04.2009 $langmk['dw_forum'] = "Поддержка на форуме"; $langmk['dw_idforum'] = "в разделе:"; $langmk['dw_source'] = "Источник"; $langmk['dw_fsource'] = "Тема поддержки на форуме"; $langmk['dw_ferror'] = "Внимание, при добавлении файла был выбран раздел на форуме для создания темы для обсуждения и поддержки, но опция создания не была включена. Вернитесь назад и проверьте установленные значения. Если вы хотите продолжить публикацию файла без создания темы для обсуждения, то выберите первое значение в списке разделов на форуме."; После установки модификации в модуль файлов в форме публикации файла появится флажок, разрешающий создать тему поддержки на форуме и выпадающий список с названиями форумов, где можно создать тему поддержки. В теме на форуме присутствует обратная ссылка на источник в портале. В описании файла присутствует ссылка на тему поддержки на форуме. ПРОДОЛЖЕНИЕ УСТАНОВКИ В СЛЕДУЮЩЕМ СООБЩЕНИИ 4. Для установки модификации в модуль статей откройте файл mkportal/modules/reviews/index.php 4.1. Найдите код: function submit_file1() { global $mkportals, $DB, $mklib, $Skin, $mklib_board, $editorscript; 4.2. Замените на код: function submit_file1() { global $mkportals, $DB, $mklib, $Skin, $mklib_board, $editorscript, $MK_BOARD; 4.3. В функции function submit_file1() найдите код: $editorscript = 1; $textarepar = "mce_editable=\"true\""; $textarew = "100%"; $bbeditor= ""; 4.4. Ниже добавьте: //add by cybermad post with IPB $fipb = ""; //end add 4.5. В функции function submit_file1() найдите код: if ($mklib->mkeditor == "BBCODE") { $editorscript = ""; $textarepar = ""; $textarew = "75%"; $bbeditor= $mklib->get_bbeditor(); 4.6. Ниже вставьте: //add by cybermad post with IPB if($MK_BOARD == "IPB") { $query2 = $DB->query( "SELECT id, name FROM ibf_forums WHERE status = '1' ORDER BY `id`"); while( $forum = $DB->fetch_row($query2) ) { $idforum = $forum['id']; $forum = $forum['name']; $fselect.= "<option value=\"$idforum\">$forum</option>\n"; } $fipb = " <tr> <td width=\"5%\">{$mklib->lang['re_forum']}</td> <td width=\"95%\"> <input type=\"checkbox\" name=\"inaforum\" value=\"1\" /> {$mklib->lang['re_idforum']} <select name=\"forum\" size=\"1\" class=\"bgselect\"> {$fselect} </select> </td> </tr> "; } else { $fipb = ""; } //end add 4.7. В функции function submit_file1() найдите код: <tr> <td width=\"5%\">{$mklib->lang['re_title']}</td> <td width=\"95%\"> <input type=\"text\" name=\"titolo\" size=\"52\" class=\"bgselect\" /> </td> </tr> 4.8. Ниже вставьте: {$fipb} 4.9. Найдите код: function add_file() { global $mkportals, $DB, $_FILES, $mklib, $mklib_board; 4.10 Замените на код: function add_file() { global $mkportals, $DB, $_FILES, $mklib, $mklib_board, $MK_BOARD, $api; 4.11 В функции function add_file() найдите код: if (!$evento || !$title || !$description) { $message = "{$mklib->lang['re_reqtcd']}"; $mklib->error_page($message); exit; } 4.12 Ниже добавьте: //add by cybermad for IPB posting if ($mkportals->input['inaforum']==0 && $mkportals->input['forum']>1) { $message = "{$mklib->lang['re_ferror']}"; $mklib->error_page($message); exit; } //end add 4.13 Найдите код: $query="INSERT INTO mkp_reviews(id_cat, title, description, field1, field2, field3, field4, field5, field6, field7, image, review, author, idauth, date, validate)VALUES('$evento', '$title', '$description', '$field1', '$field2', '$field3', '$field4', '$field5', '$field6', '$field7', '$image', '$review', '$author', '$idauth', '$cdata', '$validat')"; $DB->query($query); 4.14. Выше вставьте код: //add by cybermad for IPB posting if (($MK_BOARD == "IPB") and ($mklib->mkeditor == "BBCODE")) { $query = $DB->query( "SELECT id FROM mkp_reviews ORDER BY `id`"); while( $row = $DB->fetch_row($query) ) { $idn = $row['id']; $idn++; } $fcategoria= $mkportals->input['forum']; $inaforum = intval($mkportals->input['inaforum']); $message = "{$review}<br><a href=\"$mklib->siteurl/index.php?ind=reviews&op=entry_view&iden=$idn\">{$mklib->lang['re_source']}</a><br><br>"; if($inaforum==1) { $api->set_author_by_id($mkportals->member['id']); $api->set_post_content($message); $api->set_forum_id($fcategoria); $api->set_topic_title($title); $api->set_topic_state('open'); $api->set_topic_invisible(!$validat); $api->create_new_topic(); $tfid = $api->topic['tid']; $hr = "<br><br><a href=\"$mklib->siteurl/$mkportals->forum_url/index.php?showtopic=$tfid\">{$mklib->lang['re_fsource']}</a>"; $review = $mklib->convert_savedb("{$review} {$hr}"); } } //end add 4.15. Откройте файл mkportal/lang/ваш язык/ lang_review.php и найдите код: ?> 4.16. Выше добавьте: //add by cybermad 05.04.2009 $langmk['re_forum'] = "Добавить тему обсуждения на форум"; $langmk['re_idforum'] = "в раздел:"; $langmk['re_source'] = "<b>Источник</b>"; $langmk['re_fsource'] = "<b>Тема обсуждения на форуме</b>"; $langmk['re_ferror'] = "Внимание, при написании статьи был выбран раздел на форуме для создания темы для обсуждения, но опция создания не была включена. Вернитесь назад и проверьте установленные значения. Если вы хотите продолжить статьи без создания темы для обсуждения, то выберите первое значение в списке разделов на форуме."; После установки модификации в модуль статей при включенном редакторе BBCode в форме публикации статьи появится флажок, разрешающий опубликовать статью на форуме и выпадающий список с названиями форумов, где можно создать тему с анонсом. В теме на форуме присутствует обратная ссылка на источник в портале. В статье присутствует ссылка на тему обсуждения на форуме. Удачи в сайтостроительстве! Cybermad Санкт-Петербург. 05 апреля 2009г.
  6. Сам спросил - сам нашел ответ Здесь сказано, что апи инициализируем так: а самом апишнике присутствует следующая подсказка: В первой цитате отсутствует почему то код: $api->ipsclass =& $this->ipsclass; Попробовал сделать инициализацию так: require_once ROOT_PATH . "sources/api/api_topics_and_posts.php"; $ipb = $_SERVER['DOCUMENT_ROOT']."/forum/"; // укажите здесь свой путь к форуму или оставьте этот вариант $api = new api_topics_and_posts(); $api->ipsclass =& $ipsclass; $api->path_to_ipb = $ipb; $api->api_init(); // инициализация функций API и все заработало. Спасибо всем, кто помогал! Удачи!
  7. @Sannis: благодарю @Song: извиняюсь, если ответил грубостью. У вас на форуме тоже нашел полезную инфу. Как создать топик? Создание топика в форуме; все версии IPB - в соответствии с инструкциями делаю так: require_once $_SERVER['DOCUMENT_ROOT']."/board/sources/api/api_topics_and_posts.php"; $ipb = $_SERVER['DOCUMENT_ROOT']."/board/"; // укажите здесь свой путь к форуму или оставьте этот вариант $api = new api_topics_and_posts(); $api->path_to_ipb = $ipb; $api->api_init(); // инициализация функций API $api->set_author_by_id($idaut); // id автора топика $api->set_post_content("post content goes here"); // текст 1-го поста топика $api->set_forum_id($fcategoria); // id форума $api->set_topic_title("title"); // название топика $api->set_topic_description("des"); // описание топика $api->set_topic_state('open'); // состояние топика $api->create_new_topic(); // вызов функции "Создать топик" выбивает вот что: Fatal error: Call to a member function simple_construct() on a non-object in \home\xxx.ru\www\board\sources\ipsclass.php on line 1372 по указанному адресу вижу код: $this->DB->simple_construct( array( 'select' => '*', в чем загвоздка???
  8. Хочется, чтобы все было взаимно. Ок. Вопрос закрыт.
  9. Что-то на хамство это смахивает, а не на поддержку. ТЫкайте кому-то другому. P.S. 2Sannis: благодарю Вас за Ваши ответы и направления в какую сторону копать.
  10. Это ясно но каким образом выполнить программным способом обновление кэша, не используя средства IPB?
  11. cybermad

    CMS Портал для IPB MKPortal

    Вопрос закрыт. Ок.
  12. cybermad

    CMS Портал для IPB MKPortal

    [censored]
  13. Пишу примочку к существующей системе публикации статей в MKPortal. Хочу, чтобы пользователи могли при желании одновременно с публикацией новости (статьи и т.д.) разместить ее и в нужном форуме и в дальнейшем обсуждать. Использую следующий код, загоняющий данные из новостей на форум в БД: //add by cybermad IPB if($inaforum==1) { //add by cybermad $query1 = $DB->query( "SELECT tid FROM ibf_topics ORDER BY `tid`"); while( $trow = $DB->fetch_row($query1)) { $tid = $trow['tid']; } $tid = $tid+1; $query2 = $DB->query( "SELECT pid FROM ibf_posts ORDER BY `pid`"); while( $prow = $DB->fetch_row($query2)) { $pid = $prow['pid']; } $pid = $pid+1; // $query3="INSERT INTO ibf_topics(title, state, posts, starter_id, start_date, last_poster_id, last_post, icon_id, starter_name, last_poster_name, poll_state, views, forum_id, approved, author_mode, pinned, topic_firstpost) VALUES('$titolo', 'open', '0', '$idaut', '$cdata', '$idaut', '$cdata', '0', '$autore', '$autore', '0', '0', '$fcategoria', '1', '1', '0', '$pid')"; $query4="INSERT INTO ibf_posts(author_id, author_name, use_sig, use_emo, post_date, icon_id, post, topic_id, new_topic) VALUES('$idaut', '$autore', '1', '1', '$cdata', '0', '$testo', '$tid', '1')"; $DB->query($query3); $DB->query($query4); $DB->query("UPDATE ibf_forums SET last_post = '$cdata', last_poster_id ='$idaut', last_poster_name='$autore', last_title='$titolo', last_id='$tid' , newest_title= '$titolo', newest_id = '$tid' WHERE id='$fcategoria'"); $DB->close_db(); } // Бяка в том, что данные появляются, как мне и нужно, НО! 1. на главной странице форума последний топик, таким образом созданный, не отображается. 2. Если таким образом создать тему в пустом форуме, то сверху форума идет надпись, что тем не обнаружено, а ниже идет моя размещенная тема Все проблемы пропадают после выполнения синхронизации форумов. В чем загвоздка???
  14. Сделал так: $prefix = "ibf_"; $lonlinelist= $mklib_board->forum_link("onlinelist"); $q=0; $time = (time() - 900); $DB->query("SELECT m.id, m.members_display_name AS name, m.last_activity, m.ip_address, s.member_id, s.running_time, s.member_group, g.suffix, g.prefix FROM ".$prefix."members m LEFT JOIN ".$prefix."sessions s ON (s.member_id= m.id) LEFT JOIN ibf_groups g ON (g.g_id=s.member_group) WHERE m.id <> 0 AND last_activity > UNIX_TIMESTAMP(DATE_FORMAT(SYSDATE(), '%Y-%c-%d 00:00:00')) ORDER BY last_activity DESC"); while( $row = $DB->fetch_row() ) { $idu = $row['id']; $last = date('G:i', $row['last_activity']); $q++; if ( ($row['member_id'] == $row['id']) and ($row['running_time'] > $time)) { $uonline = "{$row['prefix']}{$row['name']}{$row['suffix']}"; $imgonline = "<img src=\"$mklib->images/online.png\" border=\"0\" alt=\"[online]\" />"; } else { $uonline = $row['name']; $imgonline =""; } если пользователь разлогинивается - срабатывает, если пользователь не активен более 15 минут тоже срабатывает. Также выводится стиль отображения группы для пользователя (подсветка светом). Демо работы блока можно посмотреть здесь (слева второй блок)
  15. Модераторам: удалите, пожалуйста этот пост, как потерявший актуальность.
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.