23 พฤษภาคม 2555, 12:51:34
ยินดีต้อนรับผู้เยี่ยมชม
  • noavata
  • ยินดีต้อนรับคุณ, ผู้เยี่ยมชม กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน
    เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น
Page Rank

ทำเว็บไซต์ | แต่งบอร์ด | ออกแบบ | SMF | Joomla | Drupal | WordPress | JQuery | CMS | ECommerce | Tel. +668-08577477

ส่งหัวข้อนี้พิมพ์ หน้า: 1 2 3 Next
icon message ผู้เขียน หัวข้อ: SimplePortal ระบบหน้าแรกของ SMF  (อ่าน 5063 ครั้ง)
0 สมาชิก และ 1 ผู้เยี่ยมชม กำลังดูหัวข้อนี้
*
*


!Personal

Germany   ชาย ผู้เริ่มต้นกระทู้นี้ ออฟไลน์544566157 DexMore DexMore DexMore
เว็บไซต์
icon message
general เมื่อ: 27 มกราคม 2554, 15:36:46
  • ชื่อ: SimplePortal
  • ผู้เขียน: SimplePortal Team
  • นำเสนอโดย: DexMoreGroup
  • ประเภท: Portals
  • รองรับ: SMF 1.1.xx, 2.0.xx
  • ปรับปรุงล่าสุด: 5 ธันวาคม 2553
  • ต้นฉบับ: SimplePortal

รายละเอียด
      สร้างระบบหน้าแรกให้กับ SMF เพื่อนำเสนอข่าวสารหรือเนื้อหาอื่นไว้เป็นหน้าแรกก่อนเข้าถึงบอร์ด mod นี้นับว่าสมบูรณ์มากๆ มีทีมงานที่พัฒนาอยู่ตลอดเวลา ซึ่งเป็นการช่วยให้ผู้ที่ทำบอร์ด SMF ได้มีหน้าแรกอย่างง่ายๆ ความสามารถก็หลากหลายมาดูกันครับว่า mod นี้ทำอะไรได้บ้าง
  • ติดตั้งแล้วสามารถใช้งาน หรือไม่ใช้งานก็ได้
  • เลือกการใช้งานได้ 3 ลักษณะ คือ 1. กำหนดเป็นไซต์หลัก 2. กำหนดเป็นหน้าแรก 3. รวมเข้ากันกับบอร์ด
  • เลือกใช้ธีมได้อย่างอิสระ
  • กำหนดชนิดของบล๊อกได้หลากหลาย
  • กำหนดการจัดการได้เฉพาะกลุ่ม
  • มีกล่องสนทนาไว้ใช้งาน สมารถสร้างได้ไม่จำกัด และสามารถกำหนดให้ปรากฏที่ใดก็ได้
  • สร้างหน้าเพิ่มเติมได้อย่างไม่จำกัด
  • ความสามารถอื่นๆ อีกหลากหลาย ต้องลองใช้เองครับ

ตัวอย่าง


สำหรับ SMF 1.1.xx

แก้ไขไฟล์:

file $boarddir/index.php

ค้นหา -->>
โค๊ด: [Select]
require_once($sourcedir . '/Security.php');

แก้เป็น -->>
โค๊ด: [Select]
require_once($sourcedir . '/Security.php');
require_once($sourcedir . '/Subs-Portal.php');

ค้นหา -->>
โค๊ด: [Select]
// Is the forum in maintenance mode? (doesn't apply to administrators.)
if (!empty($maintenance) && !allowedTo('admin_forum'))

แก้เป็น -->>
โค๊ด: [Select]
// Load SimplePortal.
sportal_init();

// Is the forum in maintenance mode? (doesn't apply to administrators.)
if (!empty($maintenance) && !allowedTo('admin_forum'))

ค้นหา -->>
โค๊ด: [Select]
'findmember' => array('Subs-Auth.php', 'JSMembers'),

แก้เป็น -->>
โค๊ด: [Select]
'findmember' => array('Subs-Auth.php', 'JSMembers'),
'forum' => array('BoardIndex.php', 'BoardIndex'),
'portal' => array('PortalMain.php', 'sportal_main'),
'manageportal' => array('PortalAdminMain.php', 'sportal_admin_main'),

ค้นหา -->>
โค๊ด: [Select]
// Action and board are both empty... BoardIndex!

แก้เป็น -->>
โค๊ด: [Select]
// Go catch it boy! Catch it!
$sp_action = sportal_catch_action();
if ($sp_action)
return $sp_action;

// Action and board are both empty... BoardIndex

ค้นหา -->>
โค๊ด: [Select]
if (empty($_REQUEST['action']) ||

แก้เป็น -->>
โค๊ด: [Select]
if (empty($_REQUEST['action']) || !($_REQUEST['action'] == 'portal' && isset($_GET['xml'])) &&

ค้นหา -->>
โค๊ด: [Select]
// Get the function and file to include - if it's not there, do the board index.

แก้เป็น -->>
โค๊ด: [Select]
if (!empty($context['disable_sp']))
unset($actionArray['portal'], $actionArray['forum']);

// Get the function and file to include - if it's not there, do the board index.

file $boarddir/SSI.php

ค้นหา -->>
โค๊ด: [Select]
require_once($sourcedir . '/Security.php');

แก้เป็น -->>
โค๊ด: [Select]
require_once($sourcedir . '/Security.php');
require_once($sourcedir . '/Subs-Portal.php');

ค้นหา -->>
โค๊ด: [Select]
loadPermissions();

แก้เป็น -->>
โค๊ด: [Select]
loadPermissions();

// Load some SP stuff.
sportal_init();

file $sourcedir/Admin.php

ค้นหา -->>
โค๊ด: [Select]
'manage_smileys', 'manage_attachments'

แก้เป็น -->>
โค๊ด: [Select]
'manage_smileys', 'manage_attachments', 'sp_admin', 'sp_manage_settings', 'sp_manage_blocks', 'sp_manage_articles', 'sp_manage_pages', 'sp_manage_shoutbox'

file $sourcedir/BoardIndex.php

ค้นหา -->>
โค๊ด: [Select]
'href' => $scripturl . '#' . $row_board['ID_CAT'],

แก้เป็น -->>
โค๊ด: [Select]
'href' => $scripturl . '?action=forum#' . $row_board['ID_CAT'],

file $sourcedir/Display.php

ค้นหา -->>
โค๊ด: [Select]
// Is this topic sticky, or can it even be?

แก้เป็น -->>
โค๊ด: [Select]
// Is this already an article?
$request = db_query("
SELECT ID_MESSAGE
FROM {$db_prefix}sp_articles
WHERE ID_MESSAGE = '$context[topic_first_message]'
LIMIT 1", __FILE__, __LINE__);
list ($context['topic_is_article']) = mysql_fetch_row($request);
mysql_free_result($request);

// Is this topic sticky, or can it even be?

file $sourcedir/Help.php

ค้นหา -->>
โค๊ด: [Select]
// Load the admin help language file and template.
loadLanguage('Help');

แก้เป็น -->>
โค๊ด: [Select]
// Load the admin help language file and template.
loadLanguage('Help');
if (loadLanguage('SPortalHelp', '', false) === false)
loadLanguage('SPortalHelp', 'english');

file $sourcedir/Load.php

ค้นหา -->>
โค๊ด: [Select]
// Verify the ID_THEME... no foul play.

แก้เป็น -->>
โค๊ด: [Select]
global $sp_standalone;

// Maybe we have a portal specific theme?
if (!isset($_GET['action']) && !isset($_GET['board']) && !isset($_GET['topic']) && ($modSettings['sp_portal_mode'] == 1 || !empty($sp_standalone)) && !empty($modSettings['portaltheme']))
$ID_THEME = (int) $modSettings['portaltheme'];

// SMF doesn't seem to be liking -1...
if ($ID_THEME == -1 && !empty($_SESSION['ID_THEME']))
{
unset($_SESSION['ID_THEME']);
$ID_THEME = $modSettings['theme_guests'];
}

// Verify the ID_THEME... no foul play.

ค้นหา -->>
โค๊ด: [Select]
// Wireless mode?  Load up the wireless stuff.

แก้เป็น -->>
โค๊ด: [Select]
// We'll be on the safe side, and load our language here!
if (loadLanguage('SPortal', '', false) === false)
loadLanguage('SPortal', 'english', false);

// Wireless mode?  Load up the wireless stuff.

file $sourcedir/ManagePermissions.php

ค้นหา -->>
โค๊ด: [Select]
'pm' => array(

แก้เป็น -->>
โค๊ด: [Select]
'sp' => array(
'sp_admin' => false,
'sp_manage_settings' => false,
'sp_manage_blocks' => false,
'sp_manage_articles' => false,
'sp_manage_pages' => false,
'sp_manage_shoutbox' => false,
'sp_add_article' => false,
'sp_auto_article_approval' => false,
),
'pm' => array(

file $sourcedir/ManageServer.php

ค้นหา -->>
โค๊ด: [Select]
loadLanguage('Help');

แก้เป็น -->>
โค๊ด: [Select]
loadLanguage('Help');
if (loadLanguage('SPortalHelp', '', false) === false)
loadLanguage('SPortalHelp', 'english');

file $sourcedir/QueryString.php

ค้นหา -->>
โค๊ด: [Select]
// If $scripturl is set to nothing, or the SID is not defined (SSI?) just quit.

แก้เป็น -->>
โค๊ด: [Select]
// It's just a blue dream...
if (function_exists('sp_query_string'))
$buffer = sp_query_string($buffer);

// If $scripturl is set to nothing, or the SID is not defined (SSI?) just quit.

ค้นหา -->>
โค๊ด: [Select]
\?(?:' . SID . ';)((?:board|topic

แก้เป็น -->>
โค๊ด: [Select]
\?(?:' . SID . ';)((?:board|topic|page

ค้นหา -->>
โค๊ด: [Select]
\?((?:board|topic

แก้เป็น -->>
โค๊ด: [Select]
\?((?:board|topic|page

file $sourcedir/Recent.php

ค้นหา -->>
โค๊ด: [Select]
'href' => $scripturl . '#' . $row['ID_CAT'],
'link' => '<a href="' . $scripturl . '#' . $row['ID_CAT'] . '">' . $row['cname'] . '</a>'

แก้เป็น -->>
โค๊ด: [Select]
'href' => $scripturl . '?action=forum#' . $row['ID_CAT'],
'link' => '<a href="' . $scripturl . '?action=forum#' . $row['ID_CAT'] . '">' . $row['cname'] . '</a>'

ค้นหา -->>
โค๊ด: [Select]
'url' => $scripturl . '#' . (int) $_REQUEST['c'],

แก้เป็น -->>
โค๊ด: [Select]
'url' => $scripturl . '?action=forum#' . (int) $_REQUEST['c'],

ค้นหา -->>
โค๊ด: [Select]
'url' => $scripturl . '#' . (int) $_REQUEST['c'][0],

แก้เป็น -->>
โค๊ด: [Select]
'url' => $scripturl . '?action=forum#' . (int) $_REQUEST['c'][0],

file $sourcedir/Subs.php

ค้นหา -->>
โค๊ด: [Select]
function parse_bbc($message, $smileys = true, $cache_id = ''

แก้เป็น -->>
โค๊ด: [Select]
function parse_bbc($message, $smileys = true, $cache_id = '', $parse_tags = false

ค้นหา -->>
โค๊ด: [Select]
static $disabled;

แก้เป็น -->>
โค๊ด: [Select]
static $disabled, $default_disabled, $parse_tag_cache;

ค้นหา -->>
โค๊ด: [Select]
// Shall we take the time to cache this?

แก้เป็น -->>
โค๊ด: [Select]
if ($parse_tags !== array() && is_array($parse_tags))
{
$temp_bbc = $bbc_codes;
$tags_cache_id = implode(',', $parse_tags);

if (!isset($default_disabled))
$default_disabled = isset($disabled) ? $disabled : array();

if (isset($parse_tag_cache[$tags_cache_id]))
list ($bbc_codes, $disabled) = $parse_tag_cache[$tags_cache_id];
else
{
foreach ($bbc_codes as $key_bbc => $bbc)
foreach ($bbc as $key_code => $code)
if (!in_array($code['tag'], $parse_tags))
{
$disabled[$code['tag']] = true;
unset($bbc_codes[$key_bbc][$key_code]);
}

$parse_tag_cache = array($tags_cache_id => array($bbc_codes, $disabled));
}
}
elseif (isset($default_disabled))
$disabled = $default_disabled;

// Shall we take the time to cache this?

ค้นหา -->>
โค๊ด: [Select]
cache_put_data($cache_key, $message, 240);

แก้เป็น -->>
โค๊ด: [Select]
cache_put_data($cache_key, $message, 240);

if (isset($temp_bbc))
{
$bbc_codes = $temp_bbc;
$temp_bbc = null;
}

ค้นหา -->>
โค๊ด: [Select]
'admin_forum', 'manage_boards'

แก้เป็น -->>
โค๊ด: [Select]
'admin_forum', 'manage_boards', 'sp_admin', 'sp_manage_settings', 'sp_manage_blocks', 'sp_manage_articles', 'sp_manage_pages', 'sp_manage_shoutbox'

ค้นหา -->>
โค๊ด: [Select]
// Admin area 'Members'.

แก้เป็น -->>
โค๊ด: [Select]
if (allowedTo(array('sp_admin', 'sp_manage_settings', 'sp_manage_blocks', 'sp_manage_articles', 'sp_manage_pages', 'sp_manage_shoutbox')))
{
if (loadLanguage('SPortalAdmin', '', false) === false)
loadLanguage('SPortalAdmin', 'english', false);

$context['admin_areas']['sportal'] = array(
'title' => $txt['sp-adminCatTitle'],
'areas' => array()
);

if (allowedTo(array('sp_admin', 'sp_manage_settings')))
$context['admin_areas']['sportal']['areas']['portalconfig'] =  '<a href="' . $scripturl . '?action=manageportal;area=portalconfig">' . $txt['sp-adminConfiguration'] . '</a>';

if (allowedTo(array('sp_admin', 'sp_manage_blocks')))
$context['admin_areas']['sportal']['areas']['portalblocks'] =  '<a href="' . $scripturl . '?action=manageportal;area=portalblocks">' . $txt['sp-blocksBlocks'] . '</a>';

if (allowedTo(array('sp_admin', 'sp_manage_articles')))
$context['admin_areas']['sportal']['areas']['portalarticles'] =  '<a href="' . $scripturl . '?action=manageportal;area=portalarticles">' . $txt['sp-adminColumnArticles'] . '</a>';

if (allowedTo(array('sp_admin', 'sp_manage_pages')))
$context['admin_areas']['sportal']['areas']['portalpages'] =  '<a href="' . $scripturl . '?action=manageportal;area=portalpages">' . $txt['sp_admin_pages_title'] . '</a>';

if (allowedTo(array('sp_admin', 'sp_manage_shoutbox')))
$context['admin_areas']['sportal']['areas']['portalshoutbox'] =  '<a href="' . $scripturl . '?action=manageportal;area=portalshoutbox">' . $txt['sp_admin_shoutbox_title'] . '</a>';
}

// Admin area 'Members'.

ค้นหา -->>
โค๊ด: [Select]
$add = preg_match('~^(ftp|http)[s]?://~', $setLocation) == 0 && substr($setLocation, 0, 6) != 'about:';

แก้เป็น -->>
โค๊ด: [Select]
$add = preg_match('~^(ftp|http)[s]?://~', $setLocation) == 0 && substr($setLocation, 0, 6) != 'about:';

// Set the default redirect location as the forum or the portal.
if ((empty($setLocation) || $scripturl == $setLocation) && ($modSettings['sp_portal_mode'] == 1 || $modSettings['sp_portal_mode'] == 3))
{
// Redirect the user to the forum.
if (!empty($modSettings['sp_disableForumRedirect']))
$setLocation = 'action=forum';
// Redirect the user to the SSI.php standalone portal.
elseif ($modSettings['sp_portal_mode'] == 3)
{
$setLocation = $context['portal_url'];
$add = false;
}
}

ค้นหา -->>
โค๊ด: [Select]
\?(?:' . SID . ';)((?:board|topic

แก้เป็น -->>
โค๊ด: [Select]
\?(?:' . SID . ';)((?:board|topic|page

ค้นหา -->>
โค๊ด: [Select]
\?((?:board|topic

แก้เป็น -->>
โค๊ด: [Select]
\?((?:board|topic|page

ค้นหา -->>
โค๊ด: [Select]
// Get some news...

แก้เป็น -->>
โค๊ด: [Select]
static $loaded;
if (!empty($loaded))
return;
$loaded = true;

// Get some news...

file $sourcedir/Who.php

ค้นหา -->>
โค๊ด: [Select]
// Actions that require a specific permission level.

แก้เป็น -->>
โค๊ด: [Select]
if ($modSettings['sp_portal_mode'] == 1)
{
$txt['who_index'] = $txt['sp_who_index'];
$txt['whoall_forum'] = $txt['sp_who_forum'];
}

// Actions that require a specific permission level.

ค้นหา -->>
โค๊ด: [Select]
$board_ids = array();

แก้เป็น -->>
โค๊ด: [Select]
$board_ids = array();
$page_ids = array();

ค้นหา -->>
โค๊ด: [Select]
// It's the board index!!  It must be!

แก้เป็น -->>
โค๊ด: [Select]
elseif (isset($actions['page']))
{
$data[$k] = $txt['who_hidden'];
$page_ids[$actions['page']][$k] = $txt['sp_who_page'];
}
// It's the board index!!  It must be!

ค้นหา -->>
โค๊ด: [Select]
// Load member names for the profile.

แก้เป็น -->>
โค๊ด: [Select]
if (!empty($page_ids))
{
$numeric_ids = array();
$string_ids = array();
$page_where = array();

foreach ($page_ids as $page_id => $dummy)
if (is_numeric($page_id))
$numeric_ids[] = (int) $page_id;
else
$string_ids[] = '\'' . $page_id . '\'';

if (!empty($numeric_ids))
$page_where[] = 'ID_PAGE IN (' . implode(', ', $numeric_ids) . ')';

if (!empty($string_ids))
$page_where[] = 'namespace IN (' . implode(', ', $string_ids) . ')';

$result = db_query("
SELECT ID_PAGE, namespace, title, allowed_groups, permission_type
FROM {$db_prefix}sp_pages
WHERE " . implode(' OR ', $page_where) . "
LIMIT " . count($page_ids), __FILE__, __LINE__);
$page_data = array();
while ($row = mysql_fetch_assoc($result))
{
if (!sp_allowed_to('page', $row['ID_PAGE'], $row['allowed_groups'], $row['permission_type']))
continue;

$page_data[] = array(
'id' => $row['ID_PAGE'],
'namespace' => $row['namespace'],
'title' => $row['title'],
);
}
mysql_free_result($result);

if (!empty($page_data))
{
foreach ($page_data as $page)
{
if (isset($page_ids[$page['id']]))
foreach ($page_ids[$page['id']] as $k => $session_text)
$data[$k] = sprintf($session_text, $page['id'], $page['title']);

if (isset($page_ids[$page['namespace']]))
foreach ($page_ids[$page['namespace']] as $k => $session_text)
$data[$k] = sprintf($session_text, $page['namespace'], $page['title']);
}
}
}

// Load member names for the profile.

file $themedir/index.template.php

ค้นหา -->>
โค๊ด: [Select]
$current_action = 'home';

แก้เป็น -->>
โค๊ด: [Select]
global $modSettings;
$current_action = $modSettings['sp_portal_mode'] == 3 && empty($context['standalone']) && empty($context['disable_sp']) ? 'forum' : 'home';

ค้นหา -->>
โค๊ด: [Select]
'login', 'help', 'pm'

แก้เป็น -->>
โค๊ด: [Select]
'login', 'help', 'pm', 'forum'

ค้นหา -->>
โค๊ด: [Select]
'smileys', 'viewErrorLog', 'viewmembers'

แก้เป็น -->>
โค๊ด: [Select]
'smileys', 'viewErrorLog', 'viewmembers', 'manageportal'

ค้นหา -->>
โค๊ด: [Select]
$current_action = 'search';

แก้เป็น -->>
โค๊ด: [Select]
$current_action = 'search';
if (empty($context['disable_sp']) && (isset($_GET['board']) || isset($_GET['topic']) || in_array($context['current_action'], array('unread', 'unreadreplies', 'recent', 'stats', 'who'))) && in_array($modSettings['sp_portal_mode'], array(1, 3)))
$current_action = 'forum';

โค๊ด: [Select]
// Show the [home] button.
echo ($current_action=='home' || $context['browser']['is_ie4']) ? '<td class="maintab_active_' . $first . '">&nbsp;</td>' : '' , '
<td valign="top" class="maintab_' , $current_action == 'home' ? 'active_back' : 'back' , '">
<a href="', $scripturl, '">' , $txt[103] , '</a>
</td>' , $current_action == 'home' ? '<td class="maintab_active_' . $last . '">&nbsp;</td>' : '';

แก้เป็น -->>
โค๊ด: [Select]
// Show the [home] button.
echo ($current_action=='home' || $context['browser']['is_ie4']) ? '<td class="maintab_active_' . $first . '">&nbsp;</td>' : '' , '
<td valign="top" class="maintab_' , $current_action == 'home' ? 'active_back' : 'back' , '">
<a href="', ($modSettings['sp_portal_mode'] == 3 && empty($context['disable_sp']) ? $modSettings['sp_standalone_url'] : $scripturl), '">' , $txt[103] , '</a>
</td>' , $current_action == 'home' ? '<td class="maintab_active_' . $last . '">&nbsp;</td>' : '';

// Show the [forum] button.
if (empty($context['disable_sp']) && in_array($modSettings['sp_portal_mode'], array(1, 3)))
echo ($current_action=='forum' || $context['browser']['is_ie4']) ? '<td class="maintab_active_' . $first . '">&nbsp;</td>' : '' , '
<td valign="top" class="maintab_' , $current_action == 'forum' ? 'active_back' : 'back' , '">
<a href="', $scripturl . ($modSettings['sp_portal_mode'] == 1 ? '?action=forum' : ''), '">', empty($txt['sp-forum']) ? 'Forum' : $txt['sp-forum'], '</a>
</td>' , $current_action=='forum' ? '<td class="maintab_active_' . $last . '">&nbsp;</td>' : '';

file $themedir/Display.template.php

ค้นหา -->>
โค๊ด: [Select]
// Show the page index... "Pages: [1]".

แก้เป็น -->>
โค๊ด: [Select]
// Make Article Button
if ($context['can_make_article'] && !empty($modSettings['articleactive']))
$normal_buttons['article'] = array('text' => 'sp-' . ($context['topic_is_article'] ? 'remove' : 'add') . '_article', 'image' => 'addarticle.gif', 'lang' => true, 'url' => $scripturl . '?action=portal;sa=' . ($context['topic_is_article'] ? 'remove' : 'add') . 'article;message=' . $context['topic_first_message'] . ';return=' . $context['current_topic'] . '.' . $context['start'] . ';sesc=' . $context['session_id']);

// Show the page index... "Pages: [1]".

ลิงค์หัวข้อ: http://dexmore.com/topic/4411
Windows XP    Firefox 3.5.16   see ip บันทึกการเข้า
ดูรายการสิ่งของสำหรับบอกรักใครสักคน ก็ส่งไปให้เขาเลย!  สำหรับติดหมุดกระทู้ของคุณ!  เพิ่มเวลาที่อยู่ในระบบอีก 12 ชั่วโมง  น้องหมี..เอาไว้กอดนอนแทนกิ๊ก  สำหรับบอกรักใครสักคน ก็ส่งไปให้เขาเลย!  
*
*


!Personal

Germany   ชาย ผู้เริ่มต้นกระทู้นี้ ออฟไลน์544566157 DexMore DexMore DexMore
เว็บไซต์
icon message
general ความคิดเห็นที่ 1 เมื่อ: 27 มกราคม 2554, 15:37:48
ดาวน์โหลด: SimplePortal1.rar


แตกไฟล์แล้วอัพโหลดไปไว้ที่
folder Sources -->> $boarddir
folder Themes  -->> $boarddir
folder languages -->> $themesdir
folder admin -->> $imagesdir
folder sp -->> $imagesdir
file PortalStandalone.php -->> $boarddir
file portal.css -->> $themesdir
file portal_rtl.css -->> $themesdir
file portal.js -->> $themesdir

สร้างไฟล์: install1-1.php เพื่อสร้างฐานข้อมูล ไว้ใน $boarddir (ที่เดียวกับไฟล์ SSI.php) รัน http://www.your_url.xxx/$boarddir/install1-1.php -->> Enter เสร็จแล้วลบทิ้ง
โค๊ด: [Select]
<?php
/**********************************************************************************
* install1-1.php                                                                  *
***********************************************************************************
* SimplePortal                                                                    *
* SMF Modification Project Founded by [SiNaN] (sinan@simplemachines.org)          *
* =============================================================================== *
* Software Version:           SimplePortal 2.3.2                                  *
* Software by:                SimplePortal Team (http://www.simpleportal.net)     *
* Copyright 2008-2009 by:     SimplePortal Team (http://www.simpleportal.net)     *
* Support, News, Updates at:  http://www.simpleportal.net                         *
***********************************************************************************
* This program is free software; you may redistribute it and/or modify it under   *
* the terms of the provided license as published by Simple Machines LLC.          *
*                                                                                 *
* This program is distributed in the hope that it is and will be useful, but      *
* WITHOUT ANY WARRANTIES; without even any implied warranty of MERCHANTABILITY    *
* or FITNESS FOR A PARTICULAR PURPOSE.                                            *
*                                                                                 *
* See the "license.txt" file for details of the Simple Machines license.          *
* The latest version can always be found at http://www.simplemachines.org.        *
**********************************************************************************/

// Handle running this file by using SSI.php
if (file_exists(dirname(__FILE__) . '/SSI.php') && !defined('SMF'))
{
$_GET['debug'] = 'Blue Dream!';
require_once(dirname(__FILE__) . '/SSI.php');
}
// Hmm... no SSI.php and no SMF?
elseif (!defined('SMF'))
die('<b>Error:</b> Cannot install - please verify you put this in the same place as SMF\'s index.php.');

global 
$db_prefix$db_name$modSettings$sourcedir$boarddir$settings$package_cache;

// Load all tables.
$tables = array(
'sp_articles' => array(
'columns' => array(
array(
'name' => 'ID_ARTICLE',
'type' => 'int',
'size' => '10',
'auto' => true,
),
array(
'name' => 'ID_CATEGORY',
'type' => 'int',
'size' => '10',
'default' => 0,
),
array(
'name' => 'ID_MESSAGE',
'type' => 'int',
'size' => '10',
'default' => 0,
),
array(
'name' => 'approved',
'type' => 'tinyint',
'size' => '2',
'default' => 0,
),
),
'indexes' => array(
array(
'type' => 'primary',
'columns' => array('ID_ARTICLE'),
),
),
),
'sp_blocks' => array(
'columns' => array(
array(
'name' => 'ID_BLOCK',
'type' => 'int',
'size' => '10',
'auto' => true,
),
array(
'name' => 'label',
'type' => 'tinytext',
),
array(
'name' => 'type',
'type' => 'text',
),
array(
'name' => 'col',
'type' => 'tinyint',
'size' => '4',
'default' => 0,
),
array(
'name' => 'row',
'type' => 'tinyint',
'size' => '4',
'default' => 0,
),
array(
'name' => 'state',
'type' => 'tinyint',
'size' => '4',
'default' => 1,
),
array(
'name' => 'allowed_groups',
'type' => 'text',
),
array(
'name' => 'force_view',
'type' => 'tinyint',
'size' => '2',
'default' => 0,
),
array(
'name' => 'permission_type',
'type' => 'tinyint',
'size' => '2',
'default' => 0,
),
array(
'name' => 'display',
'type' => 'text',
),
array(
'name' => 'display_custom',
'type' => 'text',
),
array(
'name' => 'style',
'type' => 'text',
),
),
'indexes' => array(
array(
'type' => 'primary',
'columns' => array('ID_BLOCK'),
),
array(
'type' => 'index',
'columns' => array('state'),
),
),
),
'sp_categories' => array(
'columns' => array(
array(
'name' => 'ID_CATEGORY',
'type' => 'int',
'size' => '10',
'auto' => true,
),
array(
'name' => 'name',
'type' => 'tinytext',
),
array(
'name' => 'picture',
'type' => 'tinytext',
),
array(
'name' => 'articles',
'type' => 'tinyint',
'size' => '4',
'default' => 0,
),
array(
'name' => 'publish',
'type' => 'tinyint',
'size' => '1',
'default' => 0,
),
),
'indexes' => array(
array(
'type' => 'primary',
'columns' => array('ID_CATEGORY'),
),
),
),
'sp_functions' => array(
'columns' => array(
array(
'name' => 'ID_FUNCTION',
'type' => 'tinyint',
'size' => '4',
'auto' => true,
),
array(
'name' => 'function_order',
'type' => 'tinyint',
'size' => '4',
),
array(
'name' => 'name',
'type' => 'tinytext',
),
),
'indexes' => array(
array(
'type' => 'primary',
'columns' => array('ID_FUNCTION'),
),
),
),
'sp_pages' => array(
'columns' => array(
array(
'name' => 'ID_PAGE',
'type' => 'int',
'size' => 10,
'auto' => true,
),
array(
'name' => 'namespace',
'type' => 'tinytext',
),
array(
'name' => 'title',
'type' => 'tinytext',
),
array(
'name' => 'body',
'type' => 'text',
),
array(
'name' => 'type',
'type' => 'tinytext',
),
array(
'name' => 'views',
'type' => 'int',
'size' => 10,
'default' => 0,
),
array(
'name' => 'allowed_groups',
'type' => 'text',
),
array(
'name' => 'permission_type',
'type' => 'tinyint',
'size' => '2',
'default' => 0,
),
array(
'name' => 'style',
'type' => 'text',
),
array(
'name' => 'status',
'type' => 'tinyint',
'size' => 4,
'default' => 1,
),
),
'indexes' => array(
array(
'type' => 'primary',
'columns' => array('id_page'),
),
),
),
'sp_parameters' => array(
'columns' => array(
array(
'name' => 'ID_BLOCK',
'type' => 'int',
'size' => '10',
),
array(
'name' => 'variable',
'type' => 'varchar',
'size' => 255,
),
array(
'name' => 'value',
'type' => 'text',
),
),
'indexes' => array(
array(
'type' => 'primary',
'columns' => array('ID_BLOCK''variable'),
),
array(
'type' => 'key',
'columns' => array('variable'),
),
),
),
'sp_shoutboxes' => array(
'columns' => array(
array(
'name' => 'ID_SHOUTBOX',
'type' => 'int',
'size' => 10,
'auto' => true,
),
array(
'name' => 'name',
'type' => 'tinytext',
),
array(
'name' => 'allowed_groups',
'type' => 'text',
),
array(
'name' => 'permission_type',
'type' => 'tinyint',
'size' => '2',
'default' => 0,
),
array(
'name' => 'warning',
'type' => 'text',
),
array(
'name' => 'allowed_bbc',
'type' => 'text',
),
array(
'name' => 'height',
'type' => 'smallint',
'size' => 5,
'default' => 200,
),
array(
'name' => 'num_show',
'type' => 'smallint',
'size' => 5,
'default' => 20,
),
array(
'name' => 'num_max',
'type' => 'mediumint',
'size' => 8,
'default' => 1000,
),
array(
'name' => 'refresh',
'type' => 'tinyint',
'size' => 4,
'default' => 1,
),
array(
'name' => 'reverse',
'type' => 'tinyint',
'size' => 4,
'default' => 0,
),
array(
'name' => 'caching',
'type' => 'tinyint',
'size' => 4,
'default' => 1,
),
array(
'name' => 'status',
'type' => 'tinyint',
'size' => 4,
'default' => 1,
),
array(
'name' => 'num_shouts',
'type' => 'mediumint',
'size' => 8,
'default' => 0,
),
array(
'name' => 'last_update',
'type' => 'int',
'size' => 10,
'default' => 0,
),
),
'indexes' => array(
array(
'type' => 'primary',
'columns' => array('ID_SHOUTBOX'),
),
),
),
'sp_shouts' => array(
'columns' => array(
array(
'name' => 'ID_SHOUT',
'type' => 'mediumint',
'size' => '8',
'auto' => true,
),
array(
'name' => 'ID_SHOUTBOX',
'type' => 'int',
'size' => 10,
'default' => 0,
),
array(
'name' => 'ID_MEMBER',
'type' => 'mediumint',
'size' => '8',
'default' => 0,
),
array(
'name' => 'memberName',
'type' => 'varchar',
'size' => '80',
'default' => 0,
),
array(
'name' => 'log_time',
'type' => 'int',
'size' => '10',
'default' => 0,
),
array(
'name' => 'body',
'type' => 'text',
),
),
'indexes' => array(
array(
'type' => 'primary',
'columns' => array('ID_SHOUT'),
),
),
),
);

$deprecated_fields = array(
'sp_articles' => array(
),
'sp_blocks' => array(
'content',
'parameters',
),
'sp_categories' => array(
),
'sp_functions' => array(
),
'sp_parameters' => array(
),
);

// We always need a fresh functions table.
db_query("
DROP TABLE IF EXISTS {$db_prefix}sp_functions"
__FILE____LINE__);

$current_tables sp_db_list_tables(false'%sp%');
$real_prefix preg_match('~^(`?)(.+?)\\1\\.(.*?)$~'$db_prefix$match) === $match[3] : $db_prefix;
$is_utf8 = !empty($modSettings['global_character_set']) && $modSettings['global_character_set'] === 'UTF-8';
$info '<ul>';

// Loop through each table and do what needed.
foreach ($tables as $table => $data)
{
if (in_array($real_prefix $table$current_tables))
{
$info .= '
<li>"' 
$table '" table exists, updating table structure.
<ul>'
;

if ($is_utf8)
{
db_query("
ALTER TABLE {$db_prefix}{$table}
CONVERT TO CHARACTER SET utf8"
__FILE____LINE__);
}

foreach ($data['columns'] as $column)
{
sp_db_add_column($table$column);

if ($is_utf8 && in_array($column['type'], array('text''tinytext')))
{
db_query("
ALTER TABLE {$db_prefix}{$table}
CHANGE $column[name] $column[name] $column[type] CHARACTER SET utf8"
__FILE____LINE__);
}
}

$info .= '
<li>Table columns updated.</li>'
;

foreach ($data['indexes'] as $index)
sp_db_add_index($table$index);

$info .= '
<li>Table indexes updated.</li>
</ul>
</li>'
;
}
else
{
sp_db_create_table($table$data['columns'], $data['indexes'], array());

if ($is_utf8)
{
db_query("
ALTER TABLE {$db_prefix}{$table}
CONVERT TO CHARACTER SET utf8"
__FILE____LINE__);

foreach ($data['columns'] as $column)
{
if (!in_array($column['type'], array('text''tinytext')))
continue;

db_query("
ALTER TABLE {$db_prefix}{$table}
CHANGE $column[name] $column[name] $column[type] CHARACTER SET utf8 COLLATE utf8_general_ci"
__FILE____LINE__);
}
}

$info .= '<li>"' $table '" table created.</li>';
}
}

sp_db_insert(
'sp_functions',
array(
'ID_FUNCTION',
'function_order',
'name',
),
array(
array(11'sp_userInfo'),
array(22'sp_latestMember'),
array(33'sp_whosOnline'),
array(54'sp_boardStats'),
array(75'sp_topPoster'),
array(356'sp_topStatsMember'),
array(237'sp_recent'),
array(98'sp_topTopics'),
array(89'sp_topBoards'),
array(410'sp_showPoll'),
array(1211'sp_boardNews'),
array(612'sp_quickSearch'),
array(1313'sp_news'),
array(2014'sp_attachmentImage'),
array(2115'sp_attachmentRecent'),
array(2716'sp_calendar'),
array(2417'sp_calendarInformation'),
array(2518'sp_rssFeed'),
array(2819'sp_theme_select'),
array(2920'sp_staff'),
array(3121'sp_articles'),
array(3622'sp_shoutbox'),
array(2623'sp_gallery'),
array(3224'sp_arcade'),
array(3325'sp_shop'),
array(3026'sp_blog'),
array(1998'sp_bbc'),
array(1799'sp_html'),
array(18100'sp_php'),
)
);

$info .= '
<li>"sp_functions" table data inserted.</li>'
;

$request db_query("
SELECT ID_BLOCK
FROM {$db_prefix}sp_blocks
LIMIT 1"
__FILE____LINE__);
list (
$has_block) = mysql_fetch_row($request);
mysql_free_result($request);

if (empty(
$has_block))
{
foreach ($deprecated_fields as $table => $fields)
foreach ($fields as $field)
sp_db_remove_column($table$field);

$welcome_text '<h2 style="text-align: center;">Welcome to SimplePortal!</h2>
<p>SimplePortal is one of several portal mods for Simple Machines Forum (SMF). Although always developing, SimplePortal is produced with the user in mind first. User feedback is the number one method of growth for SimplePortal, and our users are always finding ways for SimplePortal to grow. SimplePortal stays competative with other portal software by adding numerous user-requested features such as articles, block types and the ability to completely customize the portal page.</p>
<p>All this and SimplePortal has remained Simple! SimplePortal is built for simplicity and ease of use; ensuring the average forum administrator can install SimplePortal, configure a few settings, and show off the brand new portal to the users in minutes. Confusing menus, undesired pre-loaded blocks and settings that cannot be found are all avoided as much as possible. Because when it comes down to it, SimplePortal is YOUR portal, and should reflect your taste as much as possible.</p>
<p><strong>Ultimate Simplicity</strong>
<br />
The simplest portal you can ever think of... You only need a few clicks to install it through Package Manager. A few more to create your own blocks and articles. Your portal is ready to go within a couple of minutes, and simple to customise to reflect YOU.</p>
<p><strong>Install Friendly</strong>
<br />
With the ingenius design of install and update packages, SimplePortal is incredibly install and update friendly. You will never need any manual changes even on a heavily modified forum.</p>
<p><strong>Incredible Theme Support</strong>
<br />
The simple but powerful structure of SimplePortal brings you wide-range theme support too. You can use SimplePortal with all SMF themes by just adding a button for it.</p>
<p><strong>Professional Support</strong>
<br />
SimplePortal offers high quality professional support with its own well known support team.</p>'
;

$current_groups = array(-10);

$request db_query("
SELECT ID_GROUP
FROM {$db_prefix}membergroups
WHERE ID_GROUP != 1"
,__FILE____LINE__);
while ($row mysql_fetch_assoc($request))
$current_groups[] = $row['ID_GROUP'];
mysql_free_result($request);

$current_groups implode(','$current_groups);

$default_blocks = array(
'user_info' => array(
'label' => 'User Info',
'type' => 'sp_userInfo',
'col' => 1,
'row' => 1,
'allowed_groups' => $current_groups,
'display' => '',
'display_custom' => '',
'style' => '',
),
'whos_online' => array(
'label' => 'Who&#38;#039;s Online',
'type' => 'sp_whosOnline',
'col' => 1,
'row' => 2,
'allowed_groups' => $current_groups,
'display' => '',
'display_custom' => '',
'style' => '',
),
'board_stats' => array(
'label' => 'Board Stats',
'type' => 'sp_boardStats',
'col' => 1,
'row' => 3,
'allowed_groups' => $current_groups,
'display' => '',
'display_custom' => '',
'style' => '',
),
'theme_select' => array(
'label' => 'Theme Select',
'type' => 'sp_theme_select',
'col' => 1,
'row' => 4,
'allowed_groups' => $current_groups,
'display' => '',
'display_custom' => '',
'style' => '',
),
'search' => array(
'label' => 'Search',
'type' => 'sp_quickSearch',
'col' => 1,
'row' => 5,
'allowed_groups' => $current_groups,
'display' => '',
'display_custom' => '',
'style' => '',
),
'news' => array(
'label' => 'News',
'type' => 'sp_news',
'col' => 2,
'row' => 1,
'allowed_groups' => $current_groups,
'display' => '',
'display_custom' => '',
'style' => 'title_default_class~|title_custom_class~|title_custom_style~|body_default_class~windowbg|body_custom_class~|body_custom_style~|no_title~1|no_body~',
),
'welcome' => array(
'label' => 'Welcome',
'type' => 'sp_html',
'col' => 2,
'row' => 2,
'allowed_groups' => $current_groups,
'display' => '',
'display_custom' => '',
'style' => 'title_default_class~|title_custom_class~|title_custom_style~|body_default_class~windowbg|body_custom_class~|body_custom_style~|no_title~1|no_body~',
),
'board_news' => array(
'label' => 'Board News',
'type' => 'sp_boardNews',
'col' => 2,
'row' => 3,
'allowed_groups' => $current_groups,
'display' => '',
'display_custom' => '',
'style' => '',
),
'recent_topics' => array(
'label' => 'Recent Topics',
'type' => 'sp_recent',
'col' => 3,
'row' => 1,
'allowed_groups' => $current_groups,
'display' => '',
'display_custom' => '',
'style' => '',
),
'top_poster' => array(
'label' => 'Top Poster',
'type' => 'sp_topPoster',
'col' => 4,
'row' => 1,
'allowed_groups' => $current_groups,
'display' => '',
'display_custom' => '',
'style' => '',
),
'recent_posts' => array(
'label' => 'Recent Posts',
'type' => 'sp_recent',
'col' => 4,
'row' => 2,
'allowed_groups' => $current_groups,
'display' => '',
'display_custom' => '',
'style' => '',
),
'staff' => array(
'label' => 'Forum Staff',
'type' => 'sp_staff',
'col' => 4,
'row' => 3,
'allowed_groups' => $current_groups,
'display' => '',
'display_custom' => '',
'style' => '',
),
'calendar' => array(
'label' => 'Calendar',
'type' => 'sp_calendar',
'col' => 4,
'row' => 4,
'allowed_groups' => $current_groups,
'display' => '',
'display_custom' => '',
'style' => '',
),
'top_boards' => array(
'label' => 'Top Boards',
'type' => 'sp_topBoards',
'col' => 4,
'row' => 5,
'allowed_groups' => $current_groups,
'display' => '',
'display_custom' => '',
'style' => '',
),
);

sp_db_insert(
'sp_blocks',
array(
'label',
'type',
'col',
'row',
'allowed_groups',
'display',
'display_custom',
'style',
),
$default_blocks
);

$request db_query("
SELECT MIN(ID_BLOCK) AS id, type
FROM {$db_prefix}sp_blocks
WHERE type IN ('sp_html', 'sp_boardNews', 'sp_calendar', 'sp_recent')
GROUP BY type
LIMIT 4"
,__FILE____LINE__);
while ($row mysql_fetch_assoc($request))
$block_ids[$row['type']] = $row['id'];
mysql_free_result($request);

$default_parameters = array(
array(
'id_block' => $block_ids['sp_html'],
'variable' => 'content',
'value' => htmlspecialchars($welcome_text),
),
array(
'id_block' => $block_ids['sp_boardNews'],
'variable' => 'avatar',
'value' => 1,
),
array(
'id_block' => $block_ids['sp_boardNews'],
'variable' => 'per_page',
'value' => 3,
),
array(
'id_block' => $block_ids['sp_calendar'],
'variable' => 'events',
'value' => 1,
),
array(
'id_block' => $block_ids['sp_calendar'],
'variable' => 'birthdays',
'value' => 1,
),
array(
'id_block' => $block_ids['sp_calendar'],
'variable' => 'holidays',
'value' => 1,
),
array(
'id_block' => $block_ids['sp_calendar'],
'variable' => 'holidays',
'value' => 1,
),
array(
'id_block' => $block_ids['sp_recent'],
'variable' => 'type',
'value' => 1,
),
array(
'id_block' => $block_ids['sp_recent'],
'variable' => 'display',
'value' => 1,
),
);

sp_db_insert(
'sp_parameters',
array(
'ID_BLOCK',
'variable',
'value',
),
$default_parameters,
true
);

$info .= '
<li>Default blocks created.</li>'
;
}
elseif (empty(
$modSettings['sp_version']) || $modSettings['sp_version'] < '2.3')
{
$request db_query("
SELECT ID_BLOCK, type
FROM {$db_prefix}sp_blocks
WHERE type IN ('sp_recentTopics', 'sp_recentPosts')"
,__FILE____LINE__);
$replace_blocks = array();
$add_parameters = array();
while ($row mysql_fetch_assoc($request))
{
$replace_blocks[] = $row['ID_BLOCK'];
$add_parameters[] = array(
'id_block' => $row['ID_BLOCK'],
'variable' => 'display',
'value' => 1,
);
$add_parameters[] = array(
'id_block' => $row['ID_BLOCK'],
'variable' => 'type',
'value' => $row['type'] == 'sp_recentPosts' 1,
);
}
mysql_free_result($request);

if (!empty($replace_blocks) && !empty($add_parameters))
{
db_query("
UPDATE {$db_prefix}sp_blocks
SET type = 'sp_recent'
WHERE ID_BLOCK IN (" 
implode(', '$replace_blocks) . ")"__FILE____LINE__);

sp_db_insert(
'sp_parameters',
array(
'ID_BLOCK',
'variable',
'value',
),
$add_parameters,
true
);
}

if (empty($modSettings['sp_version']) || $modSettings['sp_version'] < '2.2')
{
$block_updates = array(
array(
'old' => 'sp_smfGallery',
'new' => 'sp_gallery'
),
array(
'old' => 'sp_smfArcade',
'new' => 'sp_arcade'
),
array(
'old' => 'sp_smfShop',
'new' => 'sp_shop'
),
array(
'old' => 'sp_mgallery',
'new' => 'sp_gallery'
),
);

foreach ($block_updates as $type)
db_query("
UPDATE {$db_prefix}sp_blocks
SET type = '$type[new]'
WHERE type = '$type[old]'"
__FILE____LINE__);

require_once($sourcedir '/PortalBlocks.php');
$old_parameters = array();

$request db_query("
SELECT ID_BLOCK, type, content, parameters
FROM {$db_prefix}sp_blocks"
,__FILE____LINE__);
while ($row mysql_fetch_assoc($request))
{
if (in_array($row['type'], array('sp_bbc''sp_html''sp_php')))
{
$old_parameters[] = array(
'id_block' => $row['ID_BLOCK'],
'variable' => 'content',
'value' => addslashes($row['content']),
);
}
elseif (function_exists($row['type']))
{
$type_parameters $row['type'](array(), 0true);

if (empty($row['parameters']) || empty($type_parameters))
continue;

$row['parameters'] = explode(','$row['parameters']);

foreach ($type_parameters as $variable => $value)
{
$old current($row['parameters']);
next($row['parameters']);

if (empty($old))
continue;

$old_parameters[] = array(
'id_block' => $row['ID_BLOCK'],
'variable' => $variable,
'value' => $old,
);
}
}
else
continue;
}
mysql_free_result($request);

if (!empty($old_parameters))
{
sp_db_insert(
'sp_parameters',
array(
'ID_BLOCK',
'variable',
'value',
),
$old_parameters,
true
);
}
}

foreach ($deprecated_fields as $table => $fields)
foreach ($fields as $field)
sp_db_remove_column($table$field);

$info .= '
<li>Block types and parameters updated.</li>'
;
}
else
foreach ($deprecated_fields as $table => $fields)
foreach ($fields as $field)
sp_db_remove_column($table$field);

// Let's setup some standard settings.
$defaults = array(
'sp_portal_mode' => 1,
'sp_disableForumRedirect' => 1,
'showleft' => 1,
'showright' => 1,
'leftwidth' => 200,
'rightwidth' => 200,
'sp_enableIntegration' => 1,
'sp_adminIntegrationHide' => 1,
'sp_resize_images' => 1,
);

$updates = array(
'sp_version' => '2.3.2',
'sp_smf_version' => '1',
);

foreach (
$defaults as $index => $value)
if (!isset($modSettings[$index]))
$updates[$index] = $value;

updateSettings($updates);

$info .= '
<li>Default settings inserted.</li>'
;

$info .= '</ul>';

$standalone_file $boarddir '/PortalStandalone.php';
if (isset(
$package_cache[$standalone_file]))
$package_cache[$standalone_file] = str_replace('full/path/to/forum'$boarddir$package_cache[$standalone_file]);
elseif (
file_exists($standalone_file))
{
$current_data file_get_contents($standalone_file);
if (strpos($current_data'full/path/to/forum') !== false)
{
$fp fopen($standalone_file'w+');
fwrite($fpstr_replace('full/path/to/forum'$boarddir$current_data));
fclose($fp);
}
}

// Show them a nice message.
if (SMF == 'SSI')
{
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"'
$context['right_to_left'] ? ' dir="rtl"' '''>
<head>
<meta http-equiv="Content-Type" content="text/html; charset='
$context['character_set'], '" />
<title>SimplePortal &bull; Database Tool</title>
<link rel="stylesheet" type="text/css" href="'
$settings['theme_url'], '/style.css?rc1" />
<meta name="robots" content="noindex" />
<style type="text/css">
body, html
{
height: 100%;
overflow: auto;
padding: 0;
}
body
{
font-size: 14px;
text-align: center;
}
ul
{
padding-left: 3em;
line-height: 1.5em;
}
ul li, li
{
list-style: disc;
}
h1
{
padding-left: 5px;
}
#page
{
width: 600px;
border: 1px solid #000000;
padding: 1px;
margin: 0 auto;
text-align: left;
line-height: 28px;
clear: left;
}
#info
{
padding-left: 20px;
border: 1px solid #DDDDDD;
margin-left: 10px;
margin-right: 10px;
}
#distance
{
float: left;
height: 50%;
margin-top: -300px;
width: 1px;
}
#copy
{
font-size: x-small;
text-align: center;
}
</style>
</head>
<body>
<div id="distance"></div>
<div id="page" class="windowbg2">
<div class="catbg">SimplePortal &bull; Database Tool</div>
<p id="info" class="windowbg">This tool will prepare your database to work with SimplePortal. It will also fix database issues related to SimplePortal, if there are any.</p>
'
$info'
<p id="copy">SimplePortal &copy; 2008-2010</p>
</div>
</body>
</html>'
;
}

function 
sp_db_create_table($table_name$columns$indexes = array(), $no_prefix true)
{
global $db_prefix;

$real_prefix preg_match('~^(`?)(.+?)\\1\\.(.*?)$~'$db_prefix$match) === $match[3] : $db_prefix;

$complete_table_name = !$no_prefix $db_prefix $table_name $table_name;
$full_table_name = !$no_prefix $real_prefix $table_name $table_name;

$tables sp_db_list_tables();
if (in_array($full_table_name$tables))
return true;

$table_query 'CREATE TABLE ' $complete_table_name "\n" .'(';
foreach ($columns as $column)
{
if (!empty($column['auto']))
$default 'auto_increment';
elseif (isset($column['default']) && $column['default'] !== null)
$default 'default \'' $column['default'] . '\'';
else
$default '';

$column['size'] = isset($column['size']) && is_numeric($column['size']) ? $column['size'] : null;
list ($type$size) = array($column['type'], $column['size']);
if ($size !== null)
$type $type '(' $size ')';

$table_query .= "\n\t`" .$column['name'] . '` ' $type ' ' . (!empty($column['null']) ? '' 'NOT NULL') . ' ' $default ',';
}

foreach ($indexes as $index)
{
$columns implode(','$index['columns']);

if (isset($index['type']) && $index['type'] == 'primary')
$table_query .= "\n\t" 'PRIMARY KEY (' implode(','$index['columns']) . '),';
else
{
if (empty($index['name']))
$index['name'] = implode('_'$index['columns']);
$table_query .= "\n\t" . (isset($index['type']) && $index['type'] == 'unique' 'UNIQUE' 'KEY') . ' ' $index['name'] . ' (' $columns '),';
}
}

if (substr($table_query, -1) == ',')
$table_query substr($table_query0, -1);

$table_query .= ') TYPE=MyISAM';

db_query($table_query__FILE____LINE__);
}

function 
sp_db_add_column($table_name$column_info$no_prefix true)
{
global $txt$db_prefix;

if ($no_prefix)
$table_name $db_prefix $table_name;

$columns sp_db_list_columns($table_namefalsefalse);
foreach ($columns as $column)
if ($column == $column_info['name'])
return sp_db_change_column($table_name$column_info['name'], $column_infofalse);

$column_info['size'] = isset($column_info['size']) && is_numeric($column_info['size']) ? $column_info['size'] : null;
list ($type$size) = array($column_info['type'], $column_info['size']);
if ($size !== null)
$type $type '(' $size ')';

$query '
ALTER TABLE ' 
$table_name '
ADD ' 
$column_info['name'] . ' ' $type ' ' . (empty($column_info['null']) ? 'NOT NULL' '') . ' ' .
(!isset($column_info['default']) ? '' 'default \'' $column_info['default'] . '\'') . ' ' .
(empty($column_info['auto']) ? '' 'auto_increment') . ' ';
db_query($query__FILE____LINE__);

return true;
}

function 
sp_db_change_column($table_name$old_column$column_info$no_prefix true)
{
global $db_prefix;

if ($no_prefix)
$table_name $db_prefix $table_name;

$columns sp_db_list_columns($table_nametruefalse);
$old_info null;
foreach ($columns as $column)
if ($column['name'] == $old_column)
$old_info $column;

if ($old_info == null)
return false;

if (!isset($column_info['name']))
$column_info['name'] = $old_column;
if (!isset($column_info['default']))
$column_info['default'] = $old_info['default'];
if (!isset($column_info['null']))
$column_info['null'] = $old_info['null'];
if (!isset($column_info['auto']))
$column_info['auto'] = $old_info['auto'];
if (!isset($column_info['type']))
$column_info['type'] = $old_info['type'];
if (!isset($column_info['size']) || !is_numeric($column_info['size']))
$column_info['size'] = $old_info['size'];

list ($type$size) = array($column_info['type'], $column_info['size']);
if ($size !== null)
$type $type '(' $size ')';

$query '
ALTER TABLE ' 
$table_name '
CHANGE COLUMN ' 
$old_column ' ' $column_info['name'] . ' ' $type ' ' . (empty($column_info['null']) ? 'NOT NULL' '') . ' ' .
(!isset($column_info['default']) || $column_info['default'] === '' '' 'default \'' $column_info['default'] . '\'') . ' ' .
(empty($column_info['auto']) ? '' 'auto_increment') . ' ';
db_query($query__FILE____LINE__);

return true;
}

function 
sp_db_add_index($table_name$index_info$no_prefix true)
{
global $db_prefix;

if ($no_prefix)
$table_name $db_prefix $table_name;

if (empty($index_info['columns']))
return false;
$columns implode(','$index_info['columns']);

if (empty($index_info['name']))
{
if ($index_info['type'] == 'primary')
$index_info['name'] = 'PRIMARY';
else
$index_info['name'] = implode('_'$index_info['columns']);
}
else
$index_info['name'] = $index_info['name'];

$indexes sp_db_list_indexes($table_nametruefalse);
foreach ($indexes as $index)
if ($index['name'] == $index_info['name'] || ($index['is_primary'] && isset($index_info['type']) && $index_info['type'] == 'primary'))
return false;

if (!empty($index_info['type']) && $index_info['type'] == 'primary')
{
$query '
ALTER TABLE ' 
$table_name '
ADD PRIMARY KEY (' 
$columns ')';
}
else
{
$query '
ALTER TABLE ' 
$table_name '
ADD ' 
. (isset($index_info['type']) && $index_info['type'] == 'unique' 'UNIQUE' 'INDEX') . ' ' $index_info['name'] . ' (' $columns ')';
}
db_query($query__FILE____LINE__);

return true;
}

function 
sp_db_remove_column($table_name$column_name$no_prefix true)
{
global $db_prefix;

if ($no_prefix)
$table_name $db_prefix $table_name;
$columns sp_db_list_columns($table_nametruefalse);

foreach ($columns as $column)
if ($column['name'] == $column_name)
{
$query '
ALTER TABLE ' 
$table_name '
DROP COLUMN ' 
$column_name;
db_query($query__FILE____LINE__);

return true;
}

return false;
}

function 
sp_db_remove_index($table_name$index_name$no_prefix true)
{
global $db_prefix;

if ($no_prefix)
$table_name $db_prefix $table_name;
$indexes sp_db_list_indexes($table_nametruefalse);

foreach ($indexes as $index)
{
if (strtolower($index['type']) == 'primary' && $index_name == 'primary')
{
$query '
ALTER TABLE ' 
$table_name '
DROP PRIMARY KEY'
;
db_query($query__FILE____LINE__);


return true;
}
if ($index['name'] == $index_name)
{
$query '
ALTER TABLE ' 
$table_name '
DROP INDEX ' 
$index_name;
db_query($query__FILE____LINE__);

return true;
}
}

return false;
}

function 
sp_db_list_tables($db false$filter false)
{
global $db_name;

$db $db == false $db_name $db;
$db trim($db);
$db $db{0} == '`' strtr($db, array('`' => '')) : $db;
$filter $filter == false '' ' LIKE \'' $filter '\'';

$request db_query("
SHOW TABLES
FROM `{$db_name}`
{$filter}"
__FILE____LINE__);
$tables = array();
while ($row mysql_fetch_assoc($request))
$tables[] = reset($row);
mysql_free_result($request);

return $tables;
}

function 
sp_db_list_columns($table_name$detail false$no_prefix true)
{
global $db_prefix;

if ($no_prefix)
$table_name $db_prefix $table_name;
$table_name substr($table_name01) == '`' $table_name '`' $table_name '`';

$request db_query("
SHOW FIELDS
FROM {$table_name}"
__FILE____LINE__);
$columns = array();
while ($row mysql_fetch_assoc($request))
{
if (!$detail)
{
$columns[] = $row['Field'];
}
else
{
$auto strpos($row['Extra'], 'auto_increment') !== false true false;

if (preg_match('~(.+?)\s*\((\d+)\)~i'$row['Type'], $matches) === 1)
{
$type $matches[1];
$size $matches[2];
}
else
{
$type $row['Type'];
$size null;
}

$columns[$row['Field']] = array(
'name' => $row['Field'],
'null' => $row['Null'] != 'YES' false true,
'default' => isset($row['Default']) ? $row['Default'] : null,
'type' => $type,
'size' => $size,
'auto' => $auto,
);
}
}
mysql_free_result($request);

return $columns;
}

function 
sp_db_list_indexes($table_name$detail false$no_prefix true)
{
global $db_prefix;

if ($no_prefix)
$table_name $db_prefix $table_name;
$table_name substr($table_name01) == '`' $table_name '`' $table_name '`';

$request db_query("
SHOW KEYS
FROM {$table_name}"
__FILE____LINE__);
$indexes = array();
while ($row mysql_fetch_assoc($request))
{
if (!$detail)
$indexes[] = $row['Key_name'];
else
{
if ($row['Key_name'] == 'PRIMARY')
$type 'primary';
elseif (empty($row['Non_unique']))
$type 'unique';
elseif (isset($row['Index_type']) && $row['Index_type'] == 'FULLTEXT')
$type 'fulltext';
else
$type 'index';

if (empty($indexes[$row['Key_name']]))
{
$indexes[$row['Key_name']] = array(
'name' => $row['Key_name'],
'type' => $type,
'columns' => array(),
'is_primary' => $type == 'primary',
);
}

if (!empty($row['Sub_part']))
$indexes[$row['Key_name']]['columns'][] = $row['Column_name'] . '(' $row['Sub_part'] . ')';
else
$indexes[$row['Key_name']]['columns'][] = $row['Column_name'];
}
}
mysql_free_result($request);

return $indexes;
}

function 
sp_db_insert($table_name$fields$values$replace false)
{
global $db_prefix;

$query "
. ($replace "REPLACE" "INSERT") . " INTO {$db_prefix}{$table_name}
(" 
implode(', '$fields) . ")
VALUES "
;

foreach ($values as $value)
{
$query .= "(";

$row = array();
foreach ($value as $field)
$row[] = "'" $field "'";

$query .= implode(', '$row) . "),";
}

if (substr($query, -1) == ',')
$query substr($query0, -1);

db_query($query__FILE____LINE__);
}

?>

การตั้งค่า: ผู้ดูแล


ลิงค์หัวข้อ: http://dexmore.com/topic/4411
Thx by mmmmm
Windows XP    Firefox 3.5.16   see ip บันทึกการเข้า
ดูรายการสิ่งของสำหรับบอกรักใครสักคน ก็ส่งไปให้เขาเลย!  สำหรับติดหมุดกระทู้ของคุณ!  เพิ่มเวลาที่อยู่ในระบบอีก 12 ชั่วโมง  น้องหมี..เอาไว้กอดนอนแทนกิ๊ก  สำหรับบอกรักใครสักคน ก็ส่งไปให้เขาเลย!  
*



Thailand   ชาย ออฟไลน์
icon message
general ความคิดเห็นที่ 2 เมื่อ: 19 กุมภาพันธ์ 2554, 21:59:19
สุดยอดครับขอบคุณคับ

ลิงค์หัวข้อ: http://dexmore.com/topic/4411
Windows XP    Chrome 9.0.597.98   see ip บันทึกการเข้า
โฮสต์ดีๆ บริการด้วยใจ
*



Thailand   ชาย ออฟไลน์ เว็บไซต์
icon message
general ความคิดเห็นที่ 3 เมื่อ: 5 มีนาคม 2554, 14:49:11
แตกไฟล์ ZIp มาแล้ว
ไฟล์นี้ผมไม่มีครับ

file PortalStandalone.php -->> $boarddir

และพอติดตั้งแล้ว เข้าไปปรับแต่งไส้สักพัก ก็ขึ้น Error ตามนี้เลยครับ

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ')' in /home/www/virtual/thaisupercup.com/htdocs/Sources/Recent.php on line 332

ไม่รู้หมายความว่ายังไง



ลิงค์หัวข้อ: http://dexmore.com/topic/4411
Windows XP    Firefox 3.6.10   see ip บันทึกการเข้า
โฮสต์ดีๆ บริการด้วยใจ
*
*


!Personal

Germany   ชาย ผู้เริ่มต้นกระทู้นี้ ออฟไลน์544566157 DexMore DexMore DexMore
เว็บไซต์
icon message
general ความคิดเห็นที่ 4 เมื่อ: 5 มีนาคม 2554, 15:03:18


syntax error หมายถึงไวยากรณ์ของภาษาผิดพลาดครับ ในที่นี้มันบอกว่าผิดที่เครื่องหมายวงเล็บ [ ) ] ตามบรรทัดและไฟล์ที่แจ้งไว้ ถ้าจะแก้ก็ต้องอ่านออกครับ ถ้าอ่านไม่ออกก็รื้อทำใหม่ทั้งหมด

ลิงค์หัวข้อ: http://dexmore.com/topic/4411
Windows XP    Firefox 3.5.17   see ip บันทึกการเข้า
ดูรายการสิ่งของสำหรับบอกรักใครสักคน ก็ส่งไปให้เขาเลย!  สำหรับติดหมุดกระทู้ของคุณ!  เพิ่มเวลาที่อยู่ในระบบอีก 12 ชั่วโมง  น้องหมี..เอาไว้กอดนอนแทนกิ๊ก  สำหรับบอกรักใครสักคน ก็ส่งไปให้เขาเลย!  
*



Thailand   ชาย ออฟไลน์ เว็บไซต์
icon message
general ความคิดเห็นที่ 5 เมื่อ: 5 มีนาคม 2554, 15:53:27
แก้ Error ได้แล้ว Copy แล้วมันเกินมา 1 บรรทัดครับ  ตอนนี้มันไม่แสดงหน้า Portal เข้าไปในเมนูของ Portal มันก็กลับมาหน้าแรกของ Forum ตลอดเลยครับ  และตรงส่วนของเมนูใน Admin ส่วนของ Portal ก็ไม่เป็นภาษาไทยด้วย ต้องไปแก้ที่ไฟล์ไหนครับ

ลิงค์หัวข้อ: http://dexmore.com/topic/4411
Windows XP    Firefox 3.6.10   see ip บันทึกการเข้า
โฮสต์ดีๆ บริการด้วยใจ
*
*


!Personal

Germany   ชาย ผู้เริ่มต้นกระทู้นี้ ออฟไลน์544566157 DexMore DexMore DexMore
เว็บไซต์
icon message
general ความคิดเห็นที่ 6 เมื่อ: 5 มีนาคม 2554, 15:58:02
เมนูนี่ในหน้าหลัก หรือเมนูแอดมินครับที่คลิกแล้วไปหน้าฟอรั่ม

จะให้แสดงภาษาไทยต้องเพิ่มภาษาไทยครับ
http://simpleportal.net/index.php?action=downloads;area=cat2;file=107

ลิงค์หัวข้อ: http://dexmore.com/topic/4411
Windows XP    Firefox 3.5.17   see ip บันทึกการเข้า
ดูรายการสิ่งของสำหรับบอกรักใครสักคน ก็ส่งไปให้เขาเลย!  สำหรับติดหมุดกระทู้ของคุณ!  เพิ่มเวลาที่อยู่ในระบบอีก 12 ชั่วโมง  น้องหมี..เอาไว้กอดนอนแทนกิ๊ก  สำหรับบอกรักใครสักคน ก็ส่งไปให้เขาเลย!  
*



Thailand   ชาย ออฟไลน์ เว็บไซต์
icon message
general ความคิดเห็นที่ 7 เมื่อ: 5 มีนาคม 2554, 15:58:47




ผมโหลดมาจากที่ให้ดาวน์โหลดข้างบน มันไม่มีไฟล์ที่ว่านี้ครับ
ต้องไปโหลดจากที่ไหนมาเพิ่มเติมหรือเปล่าครับ

ลิงค์หัวข้อ: http://dexmore.com/topic/4411
Windows XP    Firefox 3.6.10   see ip บันทึกการเข้า
โฮสต์ดีๆ บริการด้วยใจ
*
*


!Personal

Germany   ชาย ผู้เริ่มต้นกระทู้นี้ ออฟไลน์544566157 DexMore DexMore DexMore
เว็บไซต์
icon message
general ความคิดเห็นที่ 8 เมื่อ: 5 มีนาคม 2554, 16:08:14
โทษทีครับไฟล์มันขาดไป อัพใหม่แล้วครับ ดาวน์โหลดใหม่ได้เลย

ลิงค์หัวข้อ: http://dexmore.com/topic/4411
Windows XP    Firefox 3.5.17   see ip บันทึกการเข้า
ดูรายการสิ่งของสำหรับบอกรักใครสักคน ก็ส่งไปให้เขาเลย!  สำหรับติดหมุดกระทู้ของคุณ!  เพิ่มเวลาที่อยู่ในระบบอีก 12 ชั่วโมง  น้องหมี..เอาไว้กอดนอนแทนกิ๊ก  สำหรับบอกรักใครสักคน ก็ส่งไปให้เขาเลย!  
*



Thailand   ชาย ออฟไลน์ เว็บไซต์
icon message
general ความคิดเห็นที่ 9 เมื่อ: 5 มีนาคม 2554, 16:50:33
โทษทีครับไฟล์มันขาดไป อัพใหม่แล้วครับ ดาวน์โหลดใหม่ได้เลย

ขอรบกวนอีกครั้งนะครับ ผมลองโหลดไฟล์มาใหม่แล้วก็ยังไม่มีเหมือนเดิมครับ ไฟล์ที่ผมโหลดเป็น SimplePortal1.rar นะครับ   ส่วนเรื่องภาษาไทยไม่แสดง ในส่วนของ Admin ครับ   ขอบคุณครับ

ส่วนตำแหน่งการอัพไฟล์ขึ้นไป บางตำแหน่งผมก็ยัง งงๆ ครับ

แตกไฟล์แล้วอัพโหลดไปไว้ที่
folder Sources -->> $boarddir
folder Themes  -->> $boarddir
folder languages -->> $themesdir
folder admin -->> $imagesdir
folder sp -->> $imagesdir
file PortalStandalone.php -->> $boarddir
file portal.css -->> $themesdir
file portal_rtl.css -->> $themesdir
file portal.js -->> $themesdir

ในส่วนของ 

folder languages -->> $themesdir
folder admin -->> $imagesdir

หมายถึงโฟลเดอร์ theme  หรือว่าใน theme ที่จะใช้งานเช่น Default ครับ

ลิงค์หัวข้อ: http://dexmore.com/topic/4411
Windows XP    Firefox 3.6.10   see ip บันทึกการเข้า
โฮสต์ดีๆ บริการด้วยใจ
*
*


!Personal

Germany   ชาย ผู้เริ่มต้นกระทู้นี้ ออฟไลน์544566157 DexMore DexMore DexMore
เว็บไซต์
icon message
general ความคิดเห็นที่ 10 เมื่อ: 5 มีนาคม 2554, 17:54:25
นี่คือไฟล์ที่ผมโหลดมาจากโฮสต์ครับ


$boarddir = โฟลเดอร์หลักของบอร์ด
$themesdir = Themes/default
$imagesdir = Themes/default/images (บาง mod อาจจะต้องใส่ในธีมที่ใช้)

ลิงค์หัวข้อ: http://dexmore.com/topic/4411
Windows XP    Firefox 3.5.17   see ip บันทึกการเข้า
ดูรายการสิ่งของสำหรับบอกรักใครสักคน ก็ส่งไปให้เขาเลย!  สำหรับติดหมุดกระทู้ของคุณ!  เพิ่มเวลาที่อยู่ในระบบอีก 12 ชั่วโมง  น้องหมี..เอาไว้กอดนอนแทนกิ๊ก  สำหรับบอกรักใครสักคน ก็ส่งไปให้เขาเลย!  
*



Thailand   ชาย ออฟไลน์ เว็บไซต์
icon message
general ความคิดเห็นที่ 11 เมื่อ: 6 มีนาคม 2554, 18:16:51
ขอบคุณมากครับ ตอนนี้ไฟล์โหลดมามีครบละ  ติดตั้งเรียบร้อย
ภาษาไทยเรียบร้อย กำลังทดลองปรับแต่งอยู่ครับ

ตรงเมนูด้านบน เมนูหน้าแรกทำไมโผล่มา 2 อันครับ
มีไฟล์ไหนผิดพลาดหรือเปล่าครับ

ลิงค์หัวข้อ: http://dexmore.com/topic/4411
Windows XP    Firefox 3.6.14   see ip บันทึกการเข้า
โฮสต์ดีๆ บริการด้วยใจ
*
*


!Personal

Germany   ชาย ผู้เริ่มต้นกระทู้นี้ ออฟไลน์544566157 DexMore DexMore DexMore
เว็บไซต์
icon message
general ความคิดเห็นที่ 12 เมื่อ: 6 มีนาคม 2554, 18:28:58
แสดงว่าโค้ดส่วนนี้ ในไฟล์ index.template.php
โค๊ด: [Select]
// Show the [home] button.
echo ($current_action=='home' || $context['browser']['is_ie4']) ? '<td class="maintab_active_' . $first . '">&nbsp;</td>' : '' , '
<td valign="top" class="maintab_' , $current_action == 'home' ? 'active_back' : 'back' , '">
<a href="', ($modSettings['sp_portal_mode'] == 3 && empty($context['disable_sp']) ? $modSettings['sp_standalone_url'] : $scripturl), '">' , $txt[103] , '</a>
</td>' , $current_action == 'home' ? '<td class="maintab_active_' . $last . '">&nbsp;</td>' : '';

// Show the [forum] button.
if (empty($context['disable_sp']) && in_array($modSettings['sp_portal_mode'], array(1, 3)))
echo ($current_action=='forum' || $context['browser']['is_ie4']) ? '<td class="maintab_active_' . $first . '">&nbsp;</td>' : '' , '
<td valign="top" class="maintab_' , $current_action == 'forum' ? 'active_back' : 'back' , '">
<a href="', $scripturl . ($modSettings['sp_portal_mode'] == 1 ? '?action=forum' : ''), '">', empty($txt['sp-forum']) ? 'Forum' : $txt['sp-forum'], '</a>
</td>' , $current_action=='forum' ? '<td class="maintab_active_' . $last . '">&nbsp;</td>' : '';

ซ้ำกัน 2 ครั้ง ไล่ดูตรงนี้แหละครับ

ลิงค์หัวข้อ: http://dexmore.com/topic/4411
Windows XP    Firefox 3.5.17   see ip บันทึกการเข้า
ดูรายการสิ่งของสำหรับบอกรักใครสักคน ก็ส่งไปให้เขาเลย!  สำหรับติดหมุดกระทู้ของคุณ!  เพิ่มเวลาที่อยู่ในระบบอีก 12 ชั่วโมง  น้องหมี..เอาไว้กอดนอนแทนกิ๊ก  สำหรับบอกรักใครสักคน ก็ส่งไปให้เขาเลย!  
*



Thailand   ชาย ออฟไลน์ เว็บไซต์
icon message
general ความคิดเห็นที่ 13 เมื่อ: 7 มีนาคม 2554, 10:29:33
ขอบคุณมากครับ  ตอนนี้บอร์ดผมหลังจากที่ติดตั้ง Simpleportal
ไปแล้วก็ไม่ได้ติดตั้งอะไรเพิ่มเติม ได้แต่ปรับแต่งบอร์ดเพิ่มหัวข้อ
และหมวดหมู่ตามปกติ  ตอนนี้เจอปัญหาว่าไม่สามารถเข้าไปในแต่ละ
บอร์ดได้ และอ่านกระทู้ก็ไม่ได้ มันกลับมาอยู่หน้า Main forum ไม่ยอม
เข้ากระทู้ หรือหมวดหมู่เลยครับ 

ลิงค์หัวข้อ: http://dexmore.com/topic/4411
Windows XP    Firefox 3.6.14   see ip บันทึกการเข้า
โฮสต์ดีๆ บริการด้วยใจ
*
*


!Personal

Germany   ชาย ผู้เริ่มต้นกระทู้นี้ ออฟไลน์544566157 DexMore DexMore DexMore
เว็บไซต์
icon message
general ความคิดเห็นที่ 14 เมื่อ: 7 มีนาคม 2554, 10:52:37
ถ้าหากลง SimplePortal อย่างเดียวก็ไล่ดูใหม่ให้แน่ใจว่าไม่ได้แก้ไขผิดพลาดตรงใหนนะครับ เพราะ SimplePortal มันไม่มีปัญหาอะไรเลย หากมีปัญหาก็แสดงว่าเป็นที่การแก้โค้ดของเราแหละครับ

ลิงค์หัวข้อ: http://dexmore.com/topic/4411
Windows XP    Firefox 3.5.17   see ip บันทึกการเข้า
ดูรายการสิ่งของสำหรับบอกรักใครสักคน ก็ส่งไปให้เขาเลย!  สำหรับติดหมุดกระทู้ของคุณ!  เพิ่มเวลาที่อยู่ในระบบอีก 12 ชั่วโมง  น้องหมี..เอาไว้กอดนอนแทนกิ๊ก  สำหรับบอกรักใครสักคน ก็ส่งไปให้เขาเลย!  
ส่งหัวข้อนี้พิมพ์ หน้า: 1 2 3 Next
กระโดดไป:  

Creative Commons License

SMF Thai Translation Powered by SMF © 2006–2012, Simple Machines LLC

WordPress Google เข้าเยี่ยมชมหน้านี้ล่าสุดเมื่อ : 17 พฤษภาคม 2555, 20:22:34

jQuery Plugin Copyright © 2551-2555 Themes Design & Hosting by DexMoreGroup

Sitemap | Thai Simple Machines Forum support SMF Thai

Web Begining | SMF Modifications | SMF Thai Translation Web Begining

Drupal | WordPress | CMS Joomla | jQuery Plugin | Web Graphics CMS Joomla