-
Число публикаций
26 -
Регистрация
-
Последнее посещение
Недавние посетители профиля
4 533 просмотра профиля
Достижения cybermad
-
нет ничего сложного: просто залейте файл из архива в каталог mkportal/blocks/ и активируйте через админку портала там, где вам нужно (слева или справа на портале)
-
Дублирование новостей и статей сайта в категории форума
cybermad ответил на тему форума автора [Artx5] в Программирование
Как вариант прочтите здесь или здесь. -
Почему подталкивание??????? т.е если MKP работает в связке с ИПБ, то мне не стоит здесь публиковать решения для портала? Если бы я подталкивал к регистрации, то не публиковал бы 100% инструкцию для установки, а опубликовал бы, скажем, процентов 95, а остальное можно было бы скачать или дочитать у нас. Этого нет. В первую очередь хочу поделиться тем, что у меня получается с другими!
-
Результат работы.
-
Инструкция по установке мода автоматического создания тем-анонсов и те
cybermad создал тему форума в 2.2.x и 2.3.x
Модификация позволяет добавить в 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г. -
Сам спросил - сам нашел ответ Здесь сказано, что апи инициализируем так: а самом апишнике присутствует следующая подсказка: В первой цитате отсутствует почему то код: $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 и все заработало. Спасибо всем, кто помогал! Удачи!
-
@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' => '*', в чем загвоздка???
-
Хочется, чтобы все было взаимно. Ок. Вопрос закрыт.
-
Что-то на хамство это смахивает, а не на поддержку. ТЫкайте кому-то другому. P.S. 2Sannis: благодарю Вас за Ваши ответы и направления в какую сторону копать.
-
Это ясно но каким образом выполнить программным способом обновление кэша, не используя средства IPB?
-
Вопрос закрыт. Ок.
-
[censored]
-
Пишу примочку к существующей системе публикации статей в 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. Если таким образом создать тему в пустом форуме, то сверху форума идет надпись, что тем не обнаружено, а ниже идет моя размещенная тема Все проблемы пропадают после выполнения синхронизации форумов. В чем загвоздка???
-
Определение статуса онлайн пользователя
cybermad ответил на тему форума автора cybermad в Программирование
Сделал так: $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 минут тоже срабатывает. Также выводится стиль отображения группы для пользователя (подсветка светом). Демо работы блока можно посмотреть здесь (слева второй блок) -
Определение статуса онлайн пользователя
cybermad ответил на тему форума автора cybermad в Программирование
Модераторам: удалите, пожалуйста этот пост, как потерявший актуальность.