/** * Function: set * Adds or replaces a configuration setting with the given value. * * Parameters: * $setting - The setting name. * $value - The value. * $overwrite - If the setting exists and is the same value, should it be overwritten? */ public function set($setting, $value, $overwrite = true) { if (isset($this->{$setting}) and $this->{$setting} == $value and !$overwrite) { return false; } if (isset($this->file) and file_exists($this->file)) { $contents = str_replace("<?php header(\"Status: 403\"); exit(\"Access denied.\"); ?>\n", "", file_get_contents($this->file)); $this->yaml = YAML::load($contents); } # Add the setting $this->yaml[$setting] = $this->{$setting} = $value; if (class_exists("Trigger")) { Trigger::current()->call("change_setting", $setting, $value, $overwrite); } # Add the PHP protection! $contents = "<?php header(\"Status: 403\"); exit(\"Access denied.\"); ?>\n"; # Generate the new YAML settings $contents .= YAML::dump($this->yaml); if (!@file_put_contents(INCLUDES_DIR . "/config.yaml.php", $contents)) { Flash::warning(_f("Could not set \"<code>%s</code>\" configuration setting because <code>%s</code> is not writable.", array($setting, "/includes/config.yaml.php"))); return false; } else { return true; } }
/** * Return the reward text, ie the reward and the donator * @access public * @return string */ public function reward_text() { if ($this->is_unlocked()) { return _f('Reward : %s, won by %s, given by %s', array($this->reward, $this->winner->target(), $this->creator->target())); } return _f('Reward : %s, given by %s', array($this->reward, $this->creator->target())); }
function CT_Start_Default($target) { importlib("model.blog.attachment"); $context = Model_Context::getInstance(); $blogURL = $context->getProperty('uri.blog'); $blogid = $context->getProperty('blog.id'); $target .= '<ul>'; $target .= '<li><a href="' . $blogURL . '/owner/entry/post">' . _t('새 글을 씁니다') . '</a></li>' . CRLF; $latestEntryId = Setting::getBlogSettingGlobal('LatestEditedEntry_user' . getUserId(), 0); if ($latestEntryId !== 0) { $latestEntry = CT_Start_Default_getEntry($blogid, $latestEntryId); if ($latestEntry != false) { $target .= '<li><a href="' . $blogURL . '/owner/entry/edit/' . $latestEntry['id'] . '">' . _f('최근글(%1) 수정', htmlspecialchars(Utils_Unicode::lessenAsEm($latestEntry['title'], 10))) . '</a></li>'; } } if (Acl::check('group.administrators')) { $target .= '<li><a href="' . $blogURL . '/owner/skin">' . _t('스킨을 변경합니다') . '</a></li>' . CRLF; $target .= '<li><a href="' . $blogURL . '/owner/skin/sidebar">' . _t('사이드바 구성을 변경합니다') . '</a></li>' . CRLF; $target .= '<li><a href="' . $blogURL . '/owner/skin/setting">' . _t('블로그에 표시되는 값들을 변경합니다') . '</a></li>' . CRLF; $target .= '<li><a href="' . $blogURL . '/owner/entry/category">' . _t('카테고리를 변경합니다') . '</a></li>' . CRLF; $target .= '<li><a href="' . $blogURL . '/owner/plugin">' . _t('플러그인을 켜거나 끕니다') . '</a></li>' . CRLF; } if ($context->getProperty('service.reader', false) != false) { $target .= '<li><a href="' . $blogURL . '/owner/network/reader">' . _t('RSS 리더를 봅니다') . '</a></li>' . CRLF; } $target .= '</ul>'; return $target; }
public function test_translatef() { $this->assertEquals('Le champ IP est requis.', SI18n::translatef('%s is required.', array('IP'))); $this->assertEquals('Le champ IP est requis.', _f('%s is required.', array('IP'))); }
function move_to_yaml() { $sql = SQL::current(); if (!($attrs = $sql->select("post_attributes", "*", array("name" => array("unclean_tags", "clean_tags"))))) { return; } function parseTags($tags, $clean) { $tags = explode(",", preg_replace("/\\{\\{([^\\}]+)\\}\\}/", "\\1", $tags)); $clean = explode(",", preg_replace("/\\{\\{([^\\}]+)\\}\\}/", "\\1", $clean)); return array_combine($tags, $clean); } $tags = array(); foreach ($attrs->fetchAll() as $attr) { if ($attr["name"] == "unclean_tags") { $tags[$attr["post_id"]]["unclean"] = $attr["value"]; } else { $tags[$attr["post_id"]]["clean"] = $attr["value"]; } } if (empty($tags)) { return; } foreach ($tags as $post_id => $tags) { $yaml = YAML::dump(parseTags($tags["unclean"], $tags["clean"])); echo _f("Relocating tags for post #%d...", array($post_id), "tags"); echo test($insert = $sql->replace("post_attributes", array("name" => "tags", "value" => $yaml, "post_id" => $post_id)), _f("Backup written to %s.", array("./_tags.bak.txt"))); if (!$insert) { return file_put_contents("./_tags.bak.txt", var_export($tags, true)); } } echo __("Removing old post attributes...", "tags") . test($sql->delete("post_attributes", array("name" => array("unclean_tags", "clean_tags")))); }
function CT_Start_Default($target) { requireModel("blog.attachment"); requireComponent("Eolin.PHP.Core"); requireComponent("Textcube.Function.misc"); global $blogid, $blogURL, $database, $service; $target .= '<ul>'; $target .= '<li><a href="' . $blogURL . '/owner/entry/post">' . _t('새 글을 씁니다') . '</a></li>' . CRLF; $latestEntryId = Setting::getBlogSettingGlobal('LatestEditedEntry_user' . getUserId(), 0); if ($latestEntryId !== 0) { $latestEntry = CT_Start_Default_getEntry($blogid, $latestEntryId); if ($latestEntry != false) { $target .= '<li><a href="' . $blogURL . '/owner/entry/edit/' . $latestEntry['id'] . '">' . _f('최근글(%1) 수정', htmlspecialchars(Utils_Unicode::lessenAsEm($latestEntry['title'], 10))) . '</a></li>'; } } if (Acl::check('group.administrators')) { $target .= '<li><a href="' . $blogURL . '/owner/skin">' . _t('스킨을 변경합니다') . '</a></li>' . CRLF; $target .= '<li><a href="' . $blogURL . '/owner/skin/sidebar">' . _t('사이드바 구성을 변경합니다') . '</a></li>' . CRLF; $target .= '<li><a href="' . $blogURL . '/owner/skin/setting">' . _t('블로그에 표시되는 값들을 변경합니다') . '</a></li>' . CRLF; $target .= '<li><a href="' . $blogURL . '/owner/entry/category">' . _t('카테고리를 변경합니다') . '</a></li>' . CRLF; $target .= '<li><a href="' . $blogURL . '/owner/plugin">' . _t('플러그인을 켜거나 끕니다') . '</a></li>' . CRLF; } if ($service['reader'] != false) { $target .= '<li><a href="' . $blogURL . '/owner/network/reader">' . _t('RSS 리더를 봅니다') . '</a></li>' . CRLF; } $target .= '</ul>'; return $target; }
static function __install() { $digest = MAIN_DIR . DIR . "digest.txt.php"; $output = "<?php header(\"Status: 403\"); exit(\"Access denied.\"); ?>\n" . "MIME-Version: 1.0\r\n" . "Content-Type: multipart/digest; boundary=\"---correspondence---\"\r\n" . "\r\n---correspondence---\r\n"; if (!file_exists($digest) and !@file_put_contents($digest, $output)) { error(__("Error"), _f("The digest file <em>%s</em> could not be created.", fix($digest), "mail_to_file")); } }
function new_file($name, $type = 'console') { $base_exe = EMBEDER_BASE_EXE_PATH . $type . '.exe'; $exe = ".\\{$name}.exe"; check_exe($exe, true); if (!copy(_f(EMBEDER_BASE_EXE_PATH . $type . '.exe'), $exe)) { err("Can't create '{$exe}'"); } echo "'{$exe}' created\n"; }
protected function clean() { try { if ($this->cleaned_data['password'] !== $this->cleaned_data['password_confirmation']) { throw new SValidationError(__('Password confirmation must be identical to password')); } } catch (SValidationError $e) { $this->errors['password_confirmation'] = _f($e->get_message(), $e->get_args()); $this->cleaned_data[$name] = $e->get_cleaned_value(); } }
function load($skinname) { global $service; $this->url = "{$service['path']}/skin/$skinname/"; if(!file_exists(ROOT."/skin/$skinname/skin.html")) { Func::printError(_f('%1 스킨이 존재하지 않습니다.',$skinname),'error','admin'); } else { $this->output = file_get_contents(ROOT."/skin/$skinname/skin.html"); $this->output = str_replace('./', $this->url , $this->output); } }
public function __init() { $this->setField(array("attr" => "title", "type" => "text", "label" => __("Title", "audio"), "optional" => true, "bookmarklet" => "title")); $this->setField(array("attr" => "audio", "type" => "file", "label" => __("Audio File", "audio"), "note" => _f("<small>(Max. file size: %s)</small>", array(ini_get('upload_max_filesize'))))); if (isset($_GET['action']) and $_GET['action'] == "bookmarklet") { $this->setField(array("attr" => "from_url", "type" => "text", "label" => __("From URL?", "audio"), "optional" => true, "no_value" => true)); } $this->setField(array("attr" => "description", "type" => "text_block", "label" => __("Description"), "optional" => true, "preview" => true, "bookmarklet" => "selection")); $this->setFilter("title", array("markup_title", "markup_post_title")); $this->setFilter("description", array("markup_text", "markup_post_text")); $this->respondTo("delete_post", "delete_file"); $this->respondTo("feed_item", "enclose_audio"); $this->respondTo("filter_post", "filter_post"); $this->respondTo("post_options", "add_option"); $this->respondTo("scripts", "add_jplayer_script"); }
/** * Function: check_update * Checks if the a new version of Chyrp is available. */ public static function check_update() { if (!Config::current()->check_updates) { return; } $xml = self::xml(); $curver = CHYRP_VERSION; foreach ($xml->channel->item as $item) { $newver = $item->version; if (version_compare($curver, $newver, ">=")) { $return = false; } else { $return = _f("<p class='message'>Chyrp v%s is available, you have v%s. <a href='?action=update'>Learn More</a></p>", array($newver, $curver)); break; } } return $return; }
function TextcubeBirthday_TextcubeBirthday($target) { global $configVal; requireComponent('Textcube.Function.misc'); $data = Setting::fetchConfigVal($configVal); $month = 3; $day = 13; if (!is_null($data)) { $month = $data['month']; $day = $data['day']; } $dDay = intval((gmmktime(0, 0, 0, $month, $day) - time()) / 86400); if ($dDay < 0) { $dDay = intval((gmmktime(0, 0, 0, $month, $day, gmdate('Y') + 1) - time()) / 86400); } if ($dDay == 0) { $message = '<span class="congratu">' . _t("탄생을 축하합니다!") . '</span>'; } else { $message = "<span>" . _f("앞으로 %1일 남음", $dDay_) . "</span>"; } ob_start(); ?> <div class="listbox"> <h3><?php echo _t("텍스트큐브 생일"); ?> </h3> <div style="text-align:center"><?php echo $month; ?> 월 <?php echo $day; ?> 일: <?php echo $message; ?> </div> </div> <?php $target = ob_get_contents(); ob_end_clean(); return $target; }
function TextcubeBirthday_TextcubeBirthday($target) { $context = Model_Context::getInstance(); $data = $context->getProperty('plugin.config'); $month = 3; $day = 13; if (!is_null($data)) { $month = $data['month']; $day = $data['day']; } $dDay = intval((gmmktime(0, 0, 0, $month, $day) - time()) / 86400); if ($dDay < 0) { $dDay = intval((gmmktime(0, 0, 0, $month, $day, gmdate('Y') + 1) - time()) / 86400); } if ($dDay == 0) { $message = '<span class="congratu">' . _t("탄생을 축하합니다!") . '</span>'; } else { $message = "<span>" . _f("앞으로 %1일 남음", $dDay_) . "</span>"; } ob_start(); ?> <div class="listbox"> <h3><?php echo _t("텍스트큐브 생일"); ?> </h3> <div style="text-align:center"><?php echo $month; ?> 월 <?php echo $day; ?> 일: <?php echo $message; ?> </div> </div> <?php $target = ob_get_contents(); ob_end_clean(); return $target; }
/** * Show detail information about an app * and offer download of it. * * @param string $package * The package name of the app to show information for. * * @throws Exception * If package does not exists. */ public function app($package = NULL) { $sql = <<<EOF SELECT package, title, author, description FROM Apps WHERE package LIKE :package ; EOF; // Get info from DB and show app details. $db = DBApps::getInstance()->db; $sth = $db->prepare($sql); $sth->bindValue(':package', trim($package), SQLITE3_TEXT); $res = $sth->execute(); $row = $res->fetchArray(SQLITE3_ASSOC); $this->_alterRow($row); if (!empty($row)) { $this->view->package = $package = $row['package']; $this->view->title = $row['title']; $this->view->author = $row['author']; $play_url = 'https://play.google.com/store/apps/details?id=' . urlencode($package); $this->view->teaser = $row['teaser'] . _f(' %s[more]%s<br><br><i>This is a short extract from %s<br>%sCopyright notice%s</i>', '<a target="_blank" href="' . q($play_url) . '">', '</a>', '<a target="_blank" href="' . q($play_url) . '">' . q($play_url) . '</a>', '<a href="' . q(url('impressum')) . '#app-teaser">[', ']</a>'); } else { if (package_exists($package)) { $this->view->package = $package; $this->view->title = $package; $this->view->author = _('Unknown'); $this->view->teaser = '<i>' . _f('App-Download.org has no description for this app, however you can still download the app using the %sdownload link%s.' . ' Please visit the %sPlay Store%s for information about this app.', '<a href="' . q(url('download/direct/' . urlencode($package))) . '">', '</a>', '<a target="_blank" href="https://play.google.com/store/apps/details?id=' . q(urlencode($package)) . '">', '</a>') . '</i>'; } else { throw new Exception(_f('Could not find app with package name "%s".', $package)); } } // Build links. $this->view->downloadUrl = url('download/direct/') . urlencode($package); $this->view->playstoreUrl = 'https://play.google.com/store/apps/details?id=' . urlencode($package); $this->view->display('app'); }
</select> <?php $arg1 = ob_get_contents(); ob_end_clean(); ob_start(); ?> <select name="boomDownReactor" id="boomDownReactor"> <option value="hide" <?php if ($config->boomDownReactor == 'hide') { ?>selected="selected"<?php } ?>><?php echo _t('목록에 보이지 않게 합니다');?></option> <option value="delete" <?php if ($config->boomDownReactor == 'delete') { ?>selected="selected"<?php } ?>><?php echo _t('자동으로 삭제합니다');?></option> <option value="none" <?php if ($config->boomDownReactor == 'none') { ?>selected="selected"<?php } ?>><?php echo _t('아무것도 하지 않습니다');?></option> </select> <?php $arg2 = ob_get_contents(); ob_end_clean(); echo _f('반대한 사람이 %1 이상인 글에 대해 %2', $arg1, $arg2); unset($arg1); unset($arg2); ?> </dd> </dl> <br /> <div class="button_wrap"> <a href="#" class="normalbutton" onclick="saveSettings(); return false;"><span class="boldbutton"><?php echo _t('수정완료');?></span></a> </div> </div> </div>
function myPlurk_AddPlurkIcon($target, $mother) { global $blogid, $service, $database, $suri, $blogURL, $pluginURL, $configVal; requireComponent('Textcube.Function.misc'); $data = misc::fetchConfigVal($configVal); $attachResponses = isset($data['attachResponses']) && $data['attachResponses'] == 1 ? true : false; $plurklang = Setting::getBlogSettingGlobal('blogLanguage', ''); $plurkIcon = ""; $responsePlurks = ""; if ($suri['directive'] != "/rss" && $suri['directive'] != "/m" && $suri['directive'] != "/i/entry" && $suri['directive'] != "/atom" && $suri['directive'] != "/sync" && POD::queryCount("SELECT id FROM {$database['prefix']}PlurkEntries WHERE blogid={$blogid} AND id={$mother}") > 0) { $plurk_id = intval(POD::queryCell("SELECT plurkid FROM {$database['prefix']}PlurkEntries WHERE blogid={$blogid} AND id={$mother}")); $plurkLink = "http://www.plurk.com/p/" . base_convert($plurk_id, 10, 36); if (!empty($plurkLink)) { $plurkIcon = '<div id="plurkthis"><img src="' . $pluginURL . '/images/plurkicon.png" border="0" width="16" height="16" alt="Plurk This!" /> PLURK: <a href="' . $plurkLink . '" target="_blank">' . $plurkLink . '</a></div><br />'; } if (!$attachResponses) { return $plurkIcon . $target; } $cache = new PageCache(); $cache->name = 'HC_TCPlurkCache'; if ($cache->load()) { $cache->contents = unserialize($cache->contents); if (array_key_exists($mother, $cache->contents) && Timestamp::getUNIXtime() - $cache->dbContents < 600) { return $plurkIcon . $target . $cache->contents[$mother]; } } require_once "libs/plurk_api.php"; $plurk = new plurk_api(); $plurkNickname = isset($data['plurknickname']) ? $data['plurknickname'] : ""; $plurkPassword = isset($data['plurkpassword']) ? $data['plurkpassword'] : ""; $plurk_api = 'iMCH3JDDda7c4bs0qiOchZcxAx7t8PA7'; if (!$plurk->login($plurk_api, $plurkNickname, $plurkPassword)) { return $plurkIcon . $target; } $responsePlurks = ""; $response = $plurk->get_responses($plurk_id); if ($response->responses_seen > 0) { $qualifiers = array("loves", "likes", "shares", "gives", "hates", "wants", "wishes", "needs", "will", "hopes", "asks", "has", "was", "wonders", "feels", "thinks", "says", "is"); $qualifiers_locale = array('en' => $qualifiers, 'zh-TW' => array("愛", "喜歡", "推", "給", "討厭", "想要", "希望", "需要", "打算", "希望", "問", "已經", "曾經", "好奇", "覺得", "想", "說", "正在"), 'zh-CN' => array("爱", "喜欢", "推", "给", "讨厌", "想要", "希望", "需要", "打算", "希望", "问", "已经", "曾经", "好奇", "觉得", "想", "说", "正在")); $lang = "en"; switch ($plurklang) { case "zh-TW": case "zh-CN": $lang = $plurklang; break; default: $lang = "en"; } $friends = array(); $nick2displayname = array('nickname' => array(), 'displayname' => array()); foreach ($response->friends as $friend) { $friends[$friend->uid]['display_name'] = $friend->display_name; $friends[$friend->uid]['nick_name'] = $friend->nick_name; $friends[$friend->uid]['has_profile_image'] = $friend->has_profile_image == 1 ? true : false; $friends[$friend->uid]['avatar'] = $friend->avatar == null ? "" : $friend->avatar; if (!in_array($friend->nick_name, $nick2displayname['nickname'])) { array_push($nick2displayname['nickname'], $friend->nick_name); array_push($nick2displayname['displayname'], $friend->display_name); } } ob_start(); echo "<div class=\"plurkResponse\" id=\"plurkResponse_{$mother}\">\n"; echo "<h3>" . _f("%1 Responses to this Plurk", $response->responses_seen) . "</h3>\n"; echo "<div class=\"plurkResponseLists\">\n<table cellpadding=\"2\" cellspacing=\"2\" border=\"0\">\n"; foreach ($response->responses as $commentObj) { $comment = (array) $commentObj; $userIcon = $friends[$comment['user_id']]['has_profile_image'] ? "http://avatars.plurk.com/{$comment['user_id']}-medium{$friends[$comment['user_id']]['avatar']}.gif" : ""; $display_name = $friends[$comment['user_id']]['display_name']; $nick_name = $friends[$comment['user_id']]['nick_name']; $qualifier = in_array($comment['qualifier'], $qualifiers) ? $comment['qualifier'] : ""; $qualifierKey = array_keys($qualifiers, $comment['qualifier']); $qualifier_trans = isset($qualifiers_locale[$lang][$qualifierKey[0]]) ? $qualifiers_locale[$lang][$qualifierKey[0]] : ''; if (preg_match_all('/<a href="http:\\/\\/www.plurk.com\\/(.*?)" class="ex_link">(.*?)<\\/a>/ms', $comment['content'], $matches)) { $mlen = count($matches[1]); for ($i = $mlen - 1; $i >= 0; $i--) { if (in_array($matches[1][$i], $nick2displayname['nickname'])) { $replydisplayname = $nick2displayname['displayname'][array_search($matches[1][$i], $nick2displayname['nickname'])]; $comment['content'] = str_replace('<a href="http://www.plurk.com/' . $matches[1][$i] . '" class="ex_link">' . $matches[2][$i] . '</a>', '<a href="http://www.plurk.com/' . $matches[1][$i] . '" class="ex_link">' . $replydisplayname . '</a>', $comment['content']); } } } echo "<tr><td class=\"user_icon\"><a href=\"http://www.plurk.com/{$nick_name}\" target=\"_blank\"><img src=\"{$userIcon}\" border=\"0\" width=\"45\" height=\"45\" alt=\"{$display_name}\" title=\"{$display_name}\" onerror=\"this.src='{$pluginURL}/images/nonusericon.gif'\" /></a></td>\n"; echo "<td class=\"plurkcontent\"><a href=\"http://www.plurk.com/{$nick_name}\" target=\"_blank\">{$display_name}</a> \n"; echo "<span class=\"qualifier_{$qualifier}\">{$qualifier_trans}</span> <span class=\"plurkcomment\">{$comment['content']}</span></td></tr>\n"; } echo "</table>\n</div>\n<p style=\"text-align:right;line-height:1em;\" class=\"plurkResponseMoreButton\">" . _t('MorePlurk...') . "</p>\n"; echo "</div>\n\n"; $responsePlurks = ob_get_contents(); ob_end_clean(); } else { // no response } $cache->contents[$mother] = $responsePlurks; $cache->contents = serialize($cache->contents); $cache->dbContents = Timestamp::getUNIXtime(); $cache->update(); unset($cache); } return $plurkIcon . $target . $responsePlurks; }
static function getHumanReadable($time = null, $from = null) { if (is_null($from)) { $deviation = Timestamp::getUNIXtime() - Timestamp::getUNIXtime($time); } else { $deviation = Timestamp::getUNIXtime($from) - Timestamp::getUNIXtime($time); } if ($deviation > 0) { // Past. if ($deviation < 60) { return _f('%1초 전', $deviation); } else { if ($deviation < 3600) { return _f('%1분 전', intval($deviation / 60)); } else { if ($deviation < 86400) { return _f('%1시간 전', intval($deviation / 3600)); } else { if ($deviation < 604800) { return _f('%1일 전', intval($deviation / 86400)); } else { return _f('%1주 전', intval($deviation / 604800)); } } } } } else { $deviation = abs($deviation); if ($deviation < 60) { return _f('%1초 후', $deviation); } else { if ($deviation < 3600) { return _f('%1분 후', intval($deviation / 60)); } else { if ($deviation < 86400) { return _f('%1시간 후', intval($deviation / 3600)); } else { if ($deviation < 604800) { return _f('%1일 후', intval($deviation / 86400)); } else { return _f('%1주 후', intval($deviation / 604800)); } } } } } }
?> </ul> </div> </div> <hr class="hidden" /> <?php /********** Submenu part. ***********/ if (!defined('__TEXTCUBE_READER_SUBMENU__')) { ?> <div id="layout-body"> <?php } ?> <h2><?php echo isset($blogMenu['title']) ? _f('서브메뉴 : %1', $blogMenu['title']) : _t('서브메뉴'); ?> </h2> <div id="sub-menu-box"> <ul id="sub-menu"> <?php $firstChildClass = ' firstChild'; $submenuURL = null; foreach ($blogContentMenuItem[$blogMenu['topMenu']] as &$contentMenuItem) { $PostIdStr = null; if (strstr($contentMenuItem['menu'], 'adminMenu?name=') !== false) { $pluginMenuValue = explode('/', substr($contentMenuItem['menu'], 15)); $PostIdStr = $pluginMenuValue[0]; if ($blogMenu['contentMenu'] == $contentMenuItem['menu'] || isset($_GET['name']) && 'adminMenu?name=' . $_GET['name'] == $contentMenuItem['menu'] || $contentMenuItem['menu'] == 'trash' && strpos($blogMenu['contentMenu'], 'trash') !== false) { $submenuURL = $pluginMenuValue[0];
function writeConfigFile($settings) { $context = Model_Context::getInstance(); $writer = new OutputWriter(); $database = $context->getAllFromNamespace('database'); $service = $context->getAllFromNamespace('service'); $config = array(); $contents = "<?php" . CRLF . "ini_set('display_errors', 'off');" . CRLF; // Database information. It is not allow to modify. $config['server'] = $database['server']; $config['database'] = $database['database']; $config['username'] = $database['username']; $config['password'] = $database['password']; $config['prefix'] = $database['prefix']; foreach ($config as $item => $value) { $contents .= "\$database['" . $item . "'] = '" . $value . "';" . CRLF; } $config = array(); $config['type'] = $service['type']; $config['domain'] = $service['domain']; $config['path'] = $service['path']; foreach ($config as $item => $value) { $contents .= "\$service['" . $item . "'] = '" . $value . "';" . CRLF; } // Service-specific information. foreach ($settings as $item => $value) { if ($item == 'serviceURL') { $contents .= "\$serviceURL = '" . $value . "';" . CRLF; } else { if ($value === true || $value === false || is_numeric($value)) { if ($value === true) { $value = 'true'; } else { if ($value === false) { $value = 'false'; } } $contents .= "\$service['" . $item . "'] = " . $value . ";" . CRLF; } else { $contents .= "\$service['" . $item . "'] = '" . $value . "';" . CRLF; } } } $contents .= "?>" . CRLF; if (!is_writable(ROOT . "/config.php")) { return _f('파일 쓰기 권한이 없습니다. 웹서버가 %1 파일의 쓰기 권한을 가지고 있는지 확인하세요.', 'config.php'); } $writer->openFile(ROOT . "/config.php"); if ($writer->write($contents) === false) { $writer->close(); return _t('실패했습니다.'); } $writer->close(); return true; }
function checkStep($step, $check = true) { global $root, $path; $error = 0; if ($step == 1) { if ($check) { return true; } } else { if ($step == 2) { if ($check) { if (!empty($_POST['mode'])) { switch ($_POST['mode']) { case 'install': case 'setup': case 'uninstall': return true; } } } ?> <input type="hidden" name="step" value="2" /> <input id="setupMode" type="hidden" name="mode" value="" /> <div id="inner"> <h2><span class="step"><?php echo _f('%1단계', 2); ?> </span> : <?php echo _t('작업 유형을 선택해 주십시오.'); ?> </h2> <div style="text-align:center"> <div style="width:100%; padding:40px 0px 40px 0px"> <div style="margin:20px;"><input type="button" value="<?php echo _t('새로운 텍스트큐브를 설정합니다'); ?> " style="width:100%; height:40px; font-size:14px" onclick="next('install');return false;" /></div> <div style="margin:20px;"><input type="button" value="<?php echo _t('텍스트큐브를 다시 설정합니다'); ?> " style="width:100%; height:40px; font-size:14px" onclick="next('setup');return false;" /></div> <div style="margin:20px;"><input type="button" value="<?php echo _t('텍스트큐브 테이블을 삭제합니다'); ?> " style="width:100%; height:40px; font-size:14px" onclick="next('uninstall');return false;" /></div> </div> </div> </div> <?php } else { if ($step == 3) { if ($check) { switch ($_POST['mode']) { case 'install': case 'setup': if (!empty($_POST['dbServer']) && !empty($_POST['dbName']) && !empty($_POST['dbUser']) && isset($_POST['dbPassword']) && isset($_POST['dbPrefix'])) { $dbTemp = array('server' => $_POST['dbServer'], 'username' => $_POST['dbUser'], 'password' => $_POST['dbPassword'], 'port' => $_POST['dbPort']); if (!empty($_POST['dbName'])) { $dbTemp['database'] = $_POST['dbName']; } global $dbms; $dbms = $_POST['dbms']; if (!POD::bind($dbTemp)) { $error = 1; } else { if (!empty($_POST['dbPrefix']) && !preg_match('/^[a-zA-Z0-9_]+$/', $_POST['dbPrefix'])) { $error = 3; } else { return true; } } } break; case 'uninstall': if (!empty($_POST['dbServer']) && !empty($_POST['dbName']) && !empty($_POST['dbUser']) && isset($_POST['dbPassword']) && !empty($_POST['dbPort'])) { $dbTemp = array('server' => $_POST['dbServer'], 'username' => $_POST['dbUser'], 'password' => $_POST['dbPassword'], 'port' => $_POST['dbPort']); if (!empty($_POST['dbName'])) { $dbTemp['database'] = $_POST['dbName']; } global $dbms; $dbms = $_POST['dbms']; if (!POD::bind($dbTemp)) { $error = 1; } else { return true; } } break; } } ?> <input type="hidden" name="step" value="3" /> <input type="hidden" name="mode" value="<?php echo $_POST['mode']; ?> " /> <script type="text/javascript"> //<![CDATA[ function suggestDefaultPort(db) { switch(db) { case 'MySQLi': default: port = 3306; break; case 'Cubrid': port = 30000; break; case 'PostgreSQL': port = 5432; break; default: port = ''; break; } document.getElementById('dbPort').value = port; document.getElementById('dbms'+db).checked = checked; return true; } //]]> </script> <div id="inner"> <h2><span class="step"><?php echo _f('%1단계', 3); ?> </span> : <?php echo _t('작업 정보를 입력해 주십시오.'); ?> </h2> <div id="userinput"> <table class="inputs"> <tr> <th><?php echo _t('데이터베이스 관리 시스템'); ?> :</th> <td> <?php $dbmsSupport = array(); if (function_exists('mysqli_connect')) { array_push($dbmsSupport, 'MySQLi'); } if (function_exists('pg_connect')) { array_push($dbmsSupport, 'PostgreSQL'); } if (class_exists('SQLite3')) { array_push($dbmsSupport, 'SQLite3'); } if (function_exists('cubrid_connect')) { array_push($dbmsSupport, 'Cubrid'); } foreach ($dbmsSupport as $dbms) { ?> <input type="radio" id="dbms<?php echo $dbms; ?> " name="dbms" value="<?php echo $dbms; ?> " <?php echo isset($_POST['dbms']) && $_POST['dbms'] == $dbms || !isset($_POST['dbms']) && $dbms == $dbmsSupport[0] ? 'checked' : ''; ?> onclick="suggestDefaultPort('<?php echo $dbms; ?> ');return false;" /> <?php echo $dbms; } ?> </td> </tr> <tr> <th><?php echo _t('데이터베이스 서버'); ?> :</th> <td> <input type="text" name="dbServer" value="<?php echo isset($_POST['dbServer']) ? $_POST['dbServer'] : 'localhost'; ?> " class="input<?php echo $check && (empty($_POST['dbServer']) || $error == 1) ? ' input_error' : ''; ?> " /> </td> </tr> <tr> <th><?php echo _t('데이터베이스 포트'); ?> :</th> <td> <input type="text" id="dbPort" name="dbPort" value="<?php echo isset($_POST['dbPort']) ? $_POST['dbPort'] : '3306'; ?> " class="input<?php echo $check && (empty($_POST['dbPort']) || $error == 1) ? ' input_error' : ''; ?> " /> </td> </tr> <tr> <th><?php echo _t('데이터베이스 이름'); ?> :</th> <td> <input type="text" name="dbName" value="<?php echo isset($_POST['dbName']) ? $_POST['dbName'] : NULL; ?> " class="input<?php echo $check && (empty($_POST['dbName']) || $error == 2) ? ' input_error' : ''; ?> " /> </td> </tr> <tr> <th><?php echo _t('데이터베이스 사용자명'); ?> :</th> <td> <input type="text" name="dbUser" value="<?php echo isset($_POST['dbUser']) ? $_POST['dbUser'] : ''; ?> " class="input<?php echo $check && (empty($_POST['dbUser']) || $error) ? ' input_error' : ''; ?> " /> </td> </tr> <tr> <th><?php echo _t('데이터베이스 암호'); ?> :</th> <td> <input type="password" name="dbPassword" value="<?php echo isset($_POST['dbPassword']) ? htmlspecialchars($_POST['dbPassword']) : ''; ?> " class="input<?php echo $check && $error == 1 ? ' input_error' : ''; ?> " /> </td> </tr> <?php switch ($_POST['mode']) { case 'install': case 'setup': ?> <tr> <th><?php echo _t('테이블 식별자'); ?> :</th> <td> <input type="text" name="dbPrefix" value="<?php echo isset($_POST['dbPrefix']) ? $_POST['dbPrefix'] : 'tc_'; ?> " class="input <?php echo $check && $error == 3 ? ' input_error' : ''; ?> " /> </td> </tr> <?php break; case 'uninstall': break; } ?> </table> </div> <div id="content"> <ol> <li><?php echo _t('데이터베이스가 해당 호스트에 먼저 생성되어 있어야 합니다.'); ?> </li> <li><?php echo _t('테이블식별자는 텍스트큐브가 사용하는 테이블이름 앞에 붙는 문자열입니다. 데이터 베이스내에 다른 어플리케이션이 사용하는 테이블이 있을 경우 구별하기 위해 사용합니다'); ?> <?php echo _t('테이블식별자를 입력하지 않을 경우 자동으로 tc_ 를 사용합니다.'); ?> </li> </ol> </div> <div id="warning"><?php if ($error == 1) { echo _t('데이터베이스 서버에 연결할 수 없습니다. 정보를 다시 입력해 주십시오.'); } else { if ($error == 2) { echo _t('데이터베이스를 사용할 수가 없습니다. 정보를 다시 입력해 주십시오.'); } else { if ($error == 3) { echo _t('테이블 식별자가 올바르지 않습니다. 다시 입력해 주십시오.'); } else { if ($error == 6) { echo _t('데이터베이스에 연결할 수 없습니다.'); } else { if ($error == 7) { echo _t('데이터베이스에 접근할 수 없습니다.'); } else { if ($error == 8) { echo _t('새로운 테이블 식별자가 올바르지 않습니다. 다시 입력해 주십시오.'); } else { if ($check) { echo _t('표시된 정보가 부족합니다.'); } else { echo ' '; } } } } } } } ?> </div> <div id="navigation"> <a href="#" onclick="window.history.back()" title="<?php echo _t('이전'); ?> "><img src="./resources/style/setup/image/icon_prev.gif" width="74" height="24" alt="<?php echo _t('이전'); ?> " /></a> <a href="#" onclick="next(); return false;" title="<?php echo _t('다음'); ?> "><img src="./resources/style/setup/image/icon_next.gif" width="74" height="24" alt="<?php echo _t('다음'); ?> " /></a> </div> </div> <?php } else { if ($step == 4 || $step == 33) { if ($check) { if ($_POST['mode'] == 'uninstall') { if (empty($_POST['target'])) { checkStep(2, false); return false; } else { checkStep(205, false); return false; } } if (!empty($_POST['checked']) && $_POST['checked'] == 'yes') { return true; } } if ($_POST['mode'] == 'uninstall') { return checkStep(204, false); } ?> <input type="hidden" name="step" value="4" /> <input type="hidden" name="mode" value="<?php echo $_POST['mode']; ?> " /> <input type="hidden" name="dbms" value="<?php echo isset($_POST['dbms']) ? $_POST['dbms'] : ''; ?> " /> <input type="hidden" name="dbServer" value="<?php echo isset($_POST['dbServer']) ? $_POST['dbServer'] : ''; ?> " /> <input type="hidden" name="dbName" value="<?php echo isset($_POST['dbName']) ? $_POST['dbName'] : ''; ?> " /> <input type="hidden" name="dbPort" value="<?php echo isset($_POST['dbPort']) ? $_POST['dbPort'] : ''; ?> " /> <input type="hidden" name="dbUser" value="<?php echo isset($_POST['dbUser']) ? $_POST['dbUser'] : ''; ?> " /> <input type="hidden" name="dbPassword" value="<?php echo isset($_POST['dbPassword']) ? htmlspecialchars($_POST['dbPassword']) : ''; ?> " /> <input type="hidden" name="dbPrefix" value="<?php echo isset($_POST['dbPrefix']) ? $_POST['dbPrefix'] : ''; ?> " /> <input type="hidden" name="disableRewrite" value="<?php echo isset($_POST['disableRewrite']) ? $_POST['disableRewrite'] : ''; ?> " /> <div id="inner"> <h2><span class="step"><?php echo _f('%1단계', 4); ?> </span> : <?php echo _t('설치 요구 사항을 확인하고 있습니다.'); ?> </h2> <div id="content-box"> <h3><?php echo _t('환경'); ?> </h3> <ul> <li><?php echo _t('하드웨어'); ?> : <?php echo @exec('uname -mp'); ?> </li> <li><?php echo _t('운영체제'); ?> : <?php echo @exec('uname -sir'); ?> </li> <li><?php echo _t('웹서버'); ?> : <?php echo $_SERVER['SERVER_SOFTWARE']; ?> <?php echo isset($_SERVER['SERVER_SIGNATURE']) ? $_SERVER['SERVER_SIGNATURE'] : '(no signature)'; ?> </li> <li><?php echo _t('PHP 버전'); ?> : <?php echo phpversion(); ?> </li> <li><?php echo _t('데이터베이스 종류'); ?> : <?php echo POD::dbms(); ?> </li> <li><?php echo _f('%1 버전', POD::dbms()); ?> : <?php echo POD::version(); ?> </li> </ul> <h3>PHP</h3> <ul> <?php $functions = "\naddslashes\narray_flip\narray_key_exists\narray_pop\narray_push\narray_shift\narray_slice\nbase64_encode\nceil\ncheckdate\nclosedir\ncopy\ncount\ndechex\ndir\nexplode\nfclose\nfeof\nfgets\nfile_exists\nfile_get_contents\nfilesize\nfopen\nfputs\nfread\nfsockopen\nfunction_exists\nfwrite\nget_magic_quotes_gpc\ngetimagesize\ngmdate\ngmmktime\ngmstrftime\nheader\nhtml_entity_decode\nhtmlspecialchars\nimplode\nini_set\nintval\nis_dir\nis_file\nis_null\nis_numeric\nis_writable\nksort\nltrim\nmax\nmd5\nmicrotime\nmin\nmkdir\nmktime\nmove_uploaded_file\nnl2br\nnumber_format\nob_end_clean\nob_get_contents\nob_start\nopendir\nord\nparse_url\npreg_match\npreg_replace\nrand\nrawurlencode\nreaddir\nrmdir\nrtrim\nsession_cache_expire\nsession_destroy\nsession_id\nsession_name\nsession_set_cookie_params\nsession_set_save_handler\nsession_start\nsetcookie\nsizeof\nsprintf\nstr_replace\nstrftime\nstripslashes\nstrlen\nstrncasecmp\nstrncmp\nstrpos\nstrrev\nstrtolower\nstrval\nsubstr\nsubstr_count\nsubstr_replace\ntime\ntrim\nunlink\nurlencode\nxml_get_error_code\nxml_parse\nxml_parser_create\nxml_parser_free\nxml_parser_set_option\nxml_set_character_data_handler\nxml_set_default_handler\nxml_set_element_handler\nxml_set_object\n"; $required = array(); foreach (explode("\n", str_replace("\r", '', trim($functions))) as $function) { if (!function_exists($function)) { array_push($required, $function); } } if (version_compare(PHP_VERSION, '5.4.0') === -1 && (!isset($service['forceinstall']) || $service['forceinstall'] == false)) { $error = 4; ?> <span style="color:red"><?php echo _f('PHP 버전이 낮습니다. 설치를 위해서는 최소한 %1 이상의 버전이 필요합니다.', '5.4.0'); ?> </span> <?php } else { if (count($required) == 0) { ?> <li>OK</li> <?php } else { $error = 4; ?> <span style="color:red"><?php echo _t('함수가 설치되어야 합니다.'); ?> </span> <?php foreach ($required as $function) { ?> <li style="color:red"><?php echo $function; ?> </li> <?php } } } ?> </ul> <h3><?php echo POD::dbms(); ?> </h3> <ul> <?php if (POD::charset() == 'utf8') { echo '<li>Character Set: OK</li>'; } else { echo '<li style="color:navy">Character Set: ', _t('UTF8 미지원 (경고: 한글 지원이 불완전할 수 있습니다.)'), '</li>'; } if (POD::query("CREATE TABLE {$_POST['dbPrefix']}Setup (a INT NOT NULL)")) { POD::query("DROP TABLE {$_POST['dbPrefix']}Setup"); echo '<li>', _t('테이블 생성 권한'), ': OK</li>'; } else { $error = 6; echo '<li style="color:red">', _t('테이블 생성 권한'), ': ', _t('없음'), '</li>'; } ?> </ul> <?php $tables = array(); if ($result = POD::tableList()) { foreach ($result as $table) { if (strncmp($table, $_POST['dbPrefix'], strlen($_POST['dbPrefix']))) { continue; } switch (strtolower(substr($table, strlen($_POST['dbPrefix'])))) { case 'attachments': case 'blogsettings': case 'blogstatistics': case 'categories': case 'comments': case 'commentsnotified': case 'commentsnotifiedqueue': case 'commentsnotifiedsiteinfo': case 'dailystatistics': case 'entries': case 'entriesarchive': case 'feedgrouprelations': case 'feedgroups': case 'feeditems': case 'feedreads': case 'feedsettings': case 'feedstarred': case 'feeds': case 'filters': case 'linkcategories': case 'links': case 'openidusers': case 'pagecachelog': case 'plugins': case 'refererlogs': case 'refererstatistics': case 'reservedwords': case 'servicesetting': case 'sessionvisits': case 'sessions': case 'skinsettings': case 'tagrelations': case 'tags': case 'teamblog': case 'trackbacklogs': case 'trackbacks': case 'usersettings': case 'users': case 'xmlrpcpingsettings': $tables[count($tables)] = $table; break; } } } switch ($_POST['mode']) { case 'install': echo '<h3>', _t('새 데이터베이스 테이블'), '</h3>'; if (count($tables) == 0) { echo '<ul><li>OK</li></ul>'; } else { $error = 7; echo '<ul style="color:red">', _t('테이블이 이미 존재합니다.'); foreach ($tables as $table) { echo '<li>', $table, '</li>'; } echo '</ul>'; } break; case 'setup': echo '<h3>', _t('데이터베이스 테이블 확인'), '</h3>'; if (count($tables) < 40 && count($tables) > 35 || count($tables) == 35 && !in_array('Filters', $tables)) { echo '<ul><li>OK</li></ul>'; } else { $error = 7; echo '<ul style="color:red">', _t('테이블이 존재하지 않습니다.'); foreach ($tables as $table) { echo '<li>', $table, '</li>'; } echo '</ul>'; } } ?> <h3><?php echo _t('파일 시스템 권한'); ?> </h3> <ul> <?php $commands = array(); $filename = $root . '/.htaccess'; if (file_exists($filename)) { if (is_writable($filename)) { if (filesize($filename)) { echo '<li style="color:navy">', _f('설정 파일: OK (경고: "%1" 파일을 덮어 쓰게 됩니다.)', $filename), '</li>'; } else { echo '<li>', _t('웹 설정 파일'), ': OK</li>'; } } else { $error = 8; echo '<li style="color:red">', _t('웹 설정 파일'), ': ', _f('"%1"에 접근할 수 없습니다. 퍼미션을 %2(으)로 수정해 주십시오.', $filename, '0666'), '</li>'; array_push($commands, 'chmod 0666 ' . $filename); } } else { if (is_writable($root)) { echo '<li>', _t('웹 설정 파일'), ': OK</li>'; } else { $error = 9; echo '<li style="color:red">', _t('웹 설정 파일'), ': ', _f('"%1"에 %2 파일을 생성할 수 없습니다. "%1"의 퍼미션을 %3(으)로 수정해 주십시오.', $root, '.htaccess', '0777'), '</li>'; array_push($commands, 'chmod 0777 ' . $root); } } $filename = $root . '/config.php'; if (file_exists($filename)) { if (is_writable($filename)) { if (filesize($filename)) { echo '<li style="color:navy">', _f('설정 파일: OK (경고: "%1" 파일을 덮어 쓰게 됩니다.)', $filename), '</li>'; } else { echo '<li>', _t('설정 파일'), ': OK</li>'; } } else { $error = 10; echo '<li style="color:red">', _t('설정 파일'), ': ', _f('"%1"에 접근할 수 없습니다. 퍼미션을 %2(으)로 수정해 주십시오.', $filename, '0666'), '</li>'; array_push($commands, 'chmod 0666 ' . $filename); } } else { if (is_writable($root)) { echo '<li>', _t('설정 파일'), ': OK</li>'; } else { $error = 11; echo '<li style="color:red">', _t('설정 파일'), ': ', _f('"%1"에 %2 파일을 생성할 수 없습니다. "%1"의 퍼미션을 %3(으)로 수정해 주십시오.', $root, 'config.php', '0777'), '</li>'; array_push($commands, 'chmod 0777 ' . $root); } } $filename = $root . '/user'; if (file_exists($filename)) { if (is_dir($filename) && is_writable($filename)) { echo '<li>', _t('사용자 데이터 디렉토리'), ': OK</li>'; } else { $error = 12; echo '<li style="color:red">', _t('사용자 데이터 디렉토리'), ': ', _f('"%1"에 접근할 수 없습니다. 퍼미션을 %2(으)로 수정해 주십시오.', $filename, '0777'), '</li>'; array_push($commands, 'chmod 0777 ' . $filename); } } else { if (mkdir($filename)) { @chmod($filename, 0777); echo '<li>', _t('사용자 데이터 디렉토리'), ': OK</li>'; } else { $error = 13; echo '<li style="color:red">', _t('사용자 데이터 디렉토리'), ': ', _f('"%1"에 %2 디렉토리를 생성할 수 없습니다. "%1"의 퍼미션을 %3(으)로 수정해 주십시오.', $root, 'user', '0777'), '</li>'; array_push($commands, 'chmod 0777 ' . $root); } } $filename = $root . '/user/attach'; if (file_exists($filename)) { if (is_dir($filename) && is_writable($filename)) { echo '<li>', _t('첨부 디렉토리'), ': OK</li>'; } else { $error = 12; echo '<li style="color:red">', _t('첨부 디렉토리'), ': ', _f('"%1"에 접근할 수 없습니다. 퍼미션을 %2(으)로 수정해 주십시오.', $filename, '0777'), '</li>'; array_push($commands, 'chmod 0777 ' . $filename); } } else { if (mkdir($filename)) { @chmod($filename, 0777); echo '<li>', _t('첨부 디렉토리'), ': OK</li>'; } else { $error = 13; echo '<li style="color:red">', _t('첨부 디렉토리'), ': ', _f('"%1"에 %2 디렉토리를 생성할 수 없습니다. "%1"의 퍼미션을 %3(으)로 수정해 주십시오.', $root, 'attach', '0777'), '</li>'; array_push($commands, 'chmod 0777 ' . $root); } } $filename = $root . '/user/cache'; if (is_dir($filename)) { if (is_writable($filename)) { echo '<li>', _t('캐시 디렉토리'), ': OK</li>'; } else { $error = 12; echo '<li style="color:red">', _t('캐시 디렉토리'), ': ', _f('"%1"에 접근할 수 없습니다. 퍼미션을 %2(으)로 수정해 주십시오.', $filename, '0777'), '</li>'; array_push($commands, 'chmod 0777 ' . $filename); } } else { if (mkdir($filename)) { @chmod($filename, 0777); echo '<li>', _t('캐시 디렉토리'), ': OK</li>'; } else { $error = 13; echo '<li style="color:red">', _t('캐시 디렉토리'), ': ', _f('"%1"에 %2 디렉토리를 생성할 수 없습니다. "%1"의 퍼미션을 %3(으)로 수정해 주십시오.', $root, 'cache', '0777'), '</li>'; array_push($commands, 'chmod 0777 ' . $root); } } /* $filename = $root . '/remote'; if (is_dir($filename)) { if (is_writable($filename)) echo '<li>', _t('원격 설치 디렉토리'), ': OK</li>'; else { $error = 12; echo '<li style="color:red">', _t('원격 설치 디렉토리'), ': ', _f('"%1"에 접근할 수 없습니다. 퍼미션을 %2(으)로 수정해 주십시오.', $filename, '0777'), '</li>'; } } else if (mkdir($filename)) { @chmod($filename, 0777); echo '<li>', _t('원격 설치 디렉토리'), ': OK</li>'; } else { $error = 13; echo '<li style="color:red">', _t('원격 설치 디렉토리'), ': ', _f('"%1"에 %2 디렉토리를 생성할 수 없습니다. "%1"의 퍼미션을 %3(으)로 수정해 주십시오.', $root, 'cache', '0777'), '</li>'; }*/ $filename = $root . '/user/skin/blog/customize'; if (is_dir($filename)) { if (is_writable($filename)) { echo '<li>', _t('스킨 디렉토리'), ': OK</li>'; } else { $error = 14; echo '<li style="color:red">', _t('스킨 디렉토리'), ': ', _f('"%1"에 접근할 수 없습니다. 퍼미션을 %2(으)로 수정해 주십시오.', $filename, '0777'), '</li>'; array_push($commands, 'chmod 0777 ' . $filename); } } else { if (mkdir($filename)) { @chmod($filename, 0777); echo '<li>', _t('스킨 디렉토리'), ': OK</li>'; } else { $error = 15; echo '<li style="color:red">', _t('스킨 디렉토리'), ': ', _f('"%1"에 %2 디렉토리를 생성할 수 없습니다. "%1"의 퍼미션을 %3(으)로 수정해 주십시오.', "{$root}/user/skin/blog", 'customize', '0777'), '</li>'; array_push($commands, 'chmod 0777 ' . "{$root}/user/skin/blog"); } } ?> </ul> <?php if (!empty($commands)) { echo '<span class="instruction">' . _t("퍼미션 수정은 FTP 프로그램을 사용하시거나 다음의 명령을 터미널에 붙여 넣으시면 됩니다.") . "</span>"; echo '<ul class="instruction">'; $commands = array_unique($commands); foreach ($commands as $command) { echo "<li>" . $command . "</li>"; } echo '</ul>'; } if ($step == 33) { $error = 16; if (checkIIS()) { ?> <h3><?php echo _t('IIS Rewrite Module'); ?> </h3> <ul style="color:red"> <li><?php echo _t('현재 IIS에서의 설치는 실험적으로만 지원하고 있으며 별도의 Rewrite 모듈을 사용해야 합니다.') . ' ' . _t('만약 이 페이지를 보고 계시다면 Apache mod_rewrite와 호환되지 않는 Rewrite 모듈을 사용 중이거나 아예 모듈이 없는 경우입니다.'); ?> </li> <li><?php echo _t('IIS 7.0을 사용하시는 경우 공식 URL Rewrite Module을 사용하려면 <a href="http://www.iis.net/extensions/URLRewrite">이곳에서 다운로드</a>받아 설치하시고, 계속 진행·설치 후 생성되는 <b>.htaccess</b> 파일 내용을 그대로 import해주시면 됩니다.'); ?> </li> <li><?php echo _t('IIS 6.0 이전 버전을 사용하시는 경우 Rewrite 모듈을 설치하려면, 오픈스소 무료 모듈을 제공하고 있는 <a href="http://www.codeplex.com/IIRF" target="_blank">Ionics Isapi Rewrite Filter 홈페이지</a>를 방문하여 설치하신 후, 계속 진행·설치 후 생성되는 <b>.htaccess</b> 파일의 내용을 위 모듈의 설정파일(<b>IsapiRewrite4.ini</b>)에 복사하시기 바랍니다.'); ?> </li> </ul> <p> <input type="radio" name="rewriteIIS" value="IISRewrite" id="rewriteIIS_Option1"><label for="rewriteIIS_Option1"><?php echo _t('IIS 7.0용 공식 URL Rewrite 모듈을 사용합니다.'); ?> </label><br /> <input type="radio" name="rewriteIIS" value="ISAPI" id="rewriteIIS_Option2"><label for="rewriteIIS_Option2"><?php echo _t('IIS 6.0 및 그 이전 버전을 위한 오픈소스 Rewrite 모듈을 사용합니다.'); ?> </label> </p> <?php $error = 0; } else { ?> <h3><?php echo _t('Apache Rewrite Engine'); ?> </h3> <ul style="color:red"> <li><?php echo _t('Rewrite를 사용할 수 없습니다.'); ?> <br /><span style="color:black"><?php echo _t('다음 항목을 확인하십시오.'); ?> </span></li> <input type="checkbox" id="disableRewrite" name="disableRewrite" /> <label for="disableRewrite"><?php echo _t('rewrite 모듈을 사용하지 않습니다.') . ' ' . _t('만약 rewrite 모듈 설정을 올바르게 했는데도 모듈 사용 여부의 검사에 문제가 있는 경우 rewrite 모듈을 사용하지 않음을 선택하시고 이 부분을 건너 뛰시기 바랍니다.') . ' ' . _t('지금 설정하지 않아도 설치 이후에 관리 패널의 서비스설정-서버 에서 rewrite 관련 설정을 할 수 있습니다.'); ?> </label> <ol style="color:blue"> <li><?php echo _t('웹서버 설정에 <b>mod_rewrite</b>의 로딩이 포함되어야 합니다.'); ?> <br /> <samp><?php echo _t('예: LoadModule <b>rewrite_module</b> modules/<b>mod_rewrite</b>.so'); ?> </samp> </li> <li><?php echo _t('웹서버 설정의 이 디렉토리에 대한 <em>Options</em> 항목에 <b>FollowSymLinks</b>가 포함되거나 <b>All</b>이어야 합니다.'); ?> <samp><br /><?php echo _t('예: Options <b>FollowSymLinks</b>'); ?> </samp> <samp><br /><?php echo _t('예: Options <b>All</b>'); ?> </samp> </li> <li><?php echo _t('웹서버 설정의 이 디렉토리에 대한 <em>AllowOverride</em> 항목에 <b>FileInfo</b>가 포함되거나 <b>All</b>이어야 합니다.'); ?> <samp><br /><?php echo _t('예: AllowOverride <b>FileInfo</b>'); ?> </samp> <samp><br /><?php echo _t('예: AllowOverride <b>All</b>'); ?> </samp> </li> <li><b><?php echo _t('위 2와 3의 문제는 아래 내용을 웹서버 설정에 포함시켜 해결할 수 있습니다.'); ?> </b> <samp style="color:black"><br /> <Directory "<?php echo $root; ?> "><br /> Options FollowSymLinks<br /> AllowOverride FileInfo<br /> </Directory> </samp> </li> </ul> </ul> <?php } } ?> </div> <div id="navigation"> <a href="#" onclick="window.history.back()" title="<?php echo _t('이전'); ?> "><img src="./resources/style/setup/image/icon_prev.gif" width="74" height="24" alt="<?php echo _t('이전'); ?> " /></a> <a href="#" onclick="next(); return false;" title="<?php echo _t('다음'); ?> "><img src="./resources/style/setup/image/icon_next.gif" width="74" height="24" alt="<?php echo _t('다음'); ?> " /></a> </div> </div> <input type="hidden" name="checked" value="<?php echo $error > 0 ? 'no' : 'yes'; ?> " /> <?php } else { if ($step == 5) { if ($check) { if (!empty($_POST['domain']) && !empty($_POST['type'])) { return true; } } // mod_rewrite routine. if (empty($_POST['disableRewrite']) && empty($_POST['rewriteIIS'])) { $filename = $root . '/.htaccess'; $fp = fopen($filename, 'w+'); if (!$fp) { checkStep($step - 1, false); return false; } fwrite($fp, "RewriteEngine On\nRewriteBase {$path}/\nRewriteRule ^testrewrite\$ setup.php [L]"); fclose($fp); @chmod($filename, 0666); if (testMyself('blog' . substr($_SERVER['HTTP_HOST'], strpos($_SERVER['HTTP_HOST'], '.')), $path . '/testrewrite?test=now', $_SERVER['SERVER_PORT'])) { $rewrite = 3; } else { if (testMyself('blog.' . $_SERVER['HTTP_HOST'], $path . '/testrewrite?test=now', $_SERVER['SERVER_PORT'])) { $rewrite = 2; } else { if (testMyself($_SERVER['HTTP_HOST'], $path . '/testrewrite?test=now', $_SERVER['SERVER_PORT'])) { $rewrite = 1; } else { $rewrite = 0; @unlink($filename); checkStep(33, false); return false; } } } @unlink($filename); } else { if (!empty($_POST['rewriteIIS'])) { switch ($_POST['rewriteIIS']) { case 'ISAPI': $rewrite = -1; break; case 'IISRewrite': default: $rewrite = -2; } } else { $rewrite = 0; } } $domain = $rewrite == 3 ? substr($_SERVER['HTTP_HOST'], strpos($_SERVER['HTTP_HOST'], '.') + 1) : $_SERVER['HTTP_HOST']; $blogProtocol = isset($_SERVER['HTTPS']) ? 'https' : 'http'; $blogDefaultPort = isset($_SERVER['HTTPS']) ? 443 : 80; ?> <input type="hidden" name="step" value="<?php echo $step; ?> " /> <input type="hidden" name="mode" value="<?php echo $_POST['mode']; ?> " /> <input type="hidden" name="dbms" value="<?php echo isset($_POST['dbms']) ? $_POST['dbms'] : ''; ?> " /> <input type="hidden" name="dbServer" value="<?php echo isset($_POST['dbServer']) ? $_POST['dbServer'] : ''; ?> " /> <input type="hidden" name="dbPort" value="<?php echo isset($_POST['dbPort']) ? $_POST['dbPort'] : ''; ?> " /> <input type="hidden" name="dbName" value="<?php echo isset($_POST['dbName']) ? $_POST['dbName'] : ''; ?> " /> <input type="hidden" name="dbUser" value="<?php echo isset($_POST['dbUser']) ? $_POST['dbUser'] : ''; ?> " /> <input type="hidden" name="dbPassword" value="<?php echo isset($_POST['dbPassword']) ? htmlspecialchars($_POST['dbPassword']) : ''; ?> " /> <input type="hidden" name="dbPrefix" value="<?php echo isset($_POST['dbPrefix']) ? $_POST['dbPrefix'] : ''; ?> " /> <input type="hidden" name="checked" value="<?php echo isset($_POST['checked']) ? $_POST['checked'] : ''; ?> " /> <input type="hidden" name="domain" value="<?php echo $domain; ?> " /> <input type="hidden" name="disableRewrite" value="<?php echo isset($_POST['disableRewrite']) ? $_POST['disableRewrite'] : ''; ?> " /> <input type="hidden" name="rewriteMode" value="<?php echo $rewrite <= -1 ? $_POST['rewriteIIS'] : 'mod_rewrite'; ?> " /> <div id="inner"> <h2><span class="step"><?php echo _f('%1단계', $step); ?> </span> : <?php echo _t('사용 가능한 운영 방법은 다음과 같습니다. 선택하여 주십시오.'); ?> </h2> <div id="userinput"> <table class="inputs"> <?php if ($rewrite != 0) { ?> <tr> <th width="120"><strong><?php echo _t('다중 사용자'); ?> : </strong></th> <td> <?php if ($rewrite >= 2) { ?> <label for="type1"><input type="radio" id="type1" name="type" value="domain" checked="checked" onclick="show('typeDomain');" /> <?php echo _t('도메인네임(DNS)으로 블로그 식별'); ?> </label> <br /> <?php } ?> <label for="type2"><input type="radio" id="type2" name="type" value="path"<?php echo $rewrite == 1 || $rewrite == -1 ? ' checked="checked"' : ''; ?> onclick="show('typePath');" /> <?php echo _t('하위 경로(Path)로 블로그 식별'); ?> </label></td> </tr> <?php } ?> <tr> <th style="padding-top:10px"><strong><?php echo _t('단일 사용자'); ?> : </strong></th> <td style="padding-top:10px"> <label for="type3"><input type="radio" id="type3" name="type" value="single" onclick="show('typeSingle');" <?php echo empty($_POST['disableRewrite']) ? '' : 'checked="checked"'; ?> /><?php echo _t('단일 블로그'); ?> </label></td> </tr> <tr> <th style="padding-top:20px"><?php echo _t('블로그 주소 예시'); ?> </th> <td style="padding-top:20px; height:100px"> <ul id="typeDomain"<?php echo $rewrite >= 2 ? '' : ' style="display:none"'; ?> > <li><?php echo $blogProtocol; ?> ://<b>blog1</b>.<?php echo $domain; echo $_SERVER['SERVER_PORT'] == $blogDefaultPort ? '' : ":{$_SERVER['SERVER_PORT']}"; echo $path; ?> /</li> <li><?php echo $blogProtocol; ?> ://<b>blog2</b>.<?php echo $domain; echo $_SERVER['SERVER_PORT'] == $blogDefaultPort ? '' : ":{$_SERVER['SERVER_PORT']}"; echo $path; ?> /</li> </ul> <ul id="typePath"<?php echo $rewrite == 1 ? '' : ' style="display:none"'; ?> > <li><?php echo $blogProtocol; ?> ://<?php echo $domain; echo $_SERVER['SERVER_PORT'] == $blogDefaultPort ? '' : ":{$_SERVER['SERVER_PORT']}"; echo $path; ?> /<b>blog1</b></li> <li><?php echo $blogProtocol; ?> ://<?php echo $domain; echo $_SERVER['SERVER_PORT'] == $blogDefaultPort ? '' : ":{$_SERVER['SERVER_PORT']}"; echo $path; ?> /<b>blog2</b></li> </ul> <ul id="typeSingle" <?php echo empty($_POST['disableRewrite']) ? 'style="display:none"' : ''; ?> > <li><?php echo $blogProtocol; ?> ://<?php echo $domain; echo $_SERVER['SERVER_PORT'] == $blogDefaultPort ? '' : ":{$_SERVER['SERVER_PORT']}"; echo $path; ?> /<?php echo empty($_POST['disableRewrite']) ? '' : 'blog/'; ?> </li> </ul> </td> </tr> </table> </div> <div id="navigation"> <a href="#" onclick="window.history.back()" title="<?php echo _t('이전'); ?> "><img src="./resources/style/setup/image/icon_prev.gif" width="74" height="24" alt="<?php echo _t('이전'); ?> " /></a> <a href="#" onclick="next(); return false;" title="<?php echo _t('다음'); ?> "><img src="./resources/style/setup/image/icon_next.gif" width="74" height="24" alt="<?php echo _t('다음'); ?> " /></a> </div> </div> <?php } else { if ($step == 6) { if ($check) { if (!empty($_POST['email']) && !empty($_POST['password']) && !empty($_POST['password2']) && ($_POST['type'] == 'single' || !empty($_POST['blog'])) && isset($_POST['name'])) { if (!preg_match('/^[^@]+@([-a-zA-Z0-9]+\\.)+[-a-zA-Z0-9]+$/', $_POST['email'])) { $error = 51; } else { if ($_POST['password'] != $_POST['password2']) { $error = 52; } else { if ($_POST['type'] != 'single' && !preg_match('/^[a-zA-Z0-9]+$/', $_POST['blog'])) { $error = 53; } else { if (strlen($_POST['password']) < 6 || strlen($_POST['password2']) < 6) { $error = 54; } else { return true; } } } } } } else { @POD::query('SET CHARACTER SET utf8'); if ($result = @POD::query("SELECT loginid, password, name FROM {$_POST['dbPrefix']}Users WHERE userid = 1")) { @(list($_POST['email'], $_POST['password'], $_POST['name']) = POD::fetch($result, 'row')); $_POST['password2'] = $_POST['password']; POD::free($result); } if ($result = @POD::queryCell("SELECT value FROM {$_POST['dbPrefix']}BlogSettings\n\t\t\t\t\t\tWHERE blogid = 1\n\t\t\t\t\t\t\tAND name = 'name'")) { $_POST['blog'] = $result; } } ?> <input type="hidden" name="step" value="<?php echo $step; ?> " /> <input type="hidden" name="mode" value="<?php echo $_POST['mode']; ?> " /> <input type="hidden" name="dbms" value="<?php echo isset($_POST['dbms']) ? $_POST['dbms'] : ''; ?> " /> <input type="hidden" name="dbServer" value="<?php echo isset($_POST['dbServer']) ? $_POST['dbServer'] : ''; ?> " /> <input type="hidden" name="dbPort" value="<?php echo isset($_POST['dbPort']) ? $_POST['dbPort'] : ''; ?> " /> <input type="hidden" name="dbName" value="<?php echo isset($_POST['dbName']) ? $_POST['dbName'] : ''; ?> " /> <input type="hidden" name="dbUser" value="<?php echo isset($_POST['dbUser']) ? $_POST['dbUser'] : ''; ?> " /> <input type="hidden" name="dbPassword" value="<?php echo isset($_POST['dbPassword']) ? htmlspecialchars($_POST['dbPassword']) : ''; ?> " /> <input type="hidden" name="dbPrefix" value="<?php echo isset($_POST['dbPrefix']) ? $_POST['dbPrefix'] : ''; ?> " /> <input type="hidden" name="checked" value="<?php echo isset($_POST['checked']) ? $_POST['checked'] : ''; ?> " /> <input type="hidden" name="domain" value="<?php echo isset($_POST['domain']) ? $_POST['domain'] : ''; ?> " /> <input type="hidden" name="disableRewrite" value="<?php echo isset($_POST['disableRewrite']) ? $_POST['disableRewrite'] : ''; ?> " /> <input type="hidden" name="rewriteMode" value="<?php echo isset($_POST['rewriteMode']) ? $_POST['rewriteMode'] : ''; ?> " /> <input type="hidden" name="type" value="<?php echo isset($_POST['type']) ? $_POST['type'] : ''; ?> " /> <div id="inner"> <h2><span class="step"><?php echo _f('%1단계', $step); ?> </span> : <?php echo _t('관리자 정보 입력'); ?> </h2> <div id="userinput"> <table class="inputs"> <tr> <th style="width:100px"><?php echo _t('이메일'); ?> : </th> <td> <input type="text" id="email" name="email" value="<?php echo isset($_POST['email']) ? htmlspecialchars($_POST['email']) : ''; ?> " class="input_email"<?php echo $check && (empty($_POST['email']) || $error == 51) ? ' style="border-color:red"' : ''; ?> /> </td> </tr> <tr> <th><?php echo _t('비밀번호'); ?> : </th> <td> <input type="password" name="password" value="<?php echo isset($_POST['password']) ? htmlspecialchars($_POST['password']) : ''; ?> " class="input_password"<?php echo $check && empty($_POST['password']) ? ' style="border-color:red"' : ''; ?> /><br /> <em class="password"><?php echo _t('비밀번호는 최소 6자 이상이어야 합니다.'); ?> </em> </td> </tr> <tr> <th><?php echo _t('비밀번호 확인'); ?> : </th> <td> <input type="password" name="password2" value="<?php echo isset($_POST['password2']) ? htmlspecialchars($_POST['password2']) : ''; ?> " class="input_password"<?php echo $check && empty($_POST['password2']) ? ' style="border-color:red"' : ''; ?> /> </td> </tr> <tr> <th><?php echo _t('블로그 식별자'); ?> : </th> <td> <input type="text" name="blog" value="<?php echo isset($_POST['blog']) ? htmlspecialchars($_POST['blog']) : ''; ?> " class="input_password"<?php echo $check && (empty($_POST['blog']) || $error == 53) ? ' style="border-color:red"' : ''; ?> /> </td> </tr> <tr> <th><?php echo _t('필명'); ?> : </th> <td> <input type="text" name="name" value="<?php echo isset($_POST['name']) ? htmlspecialchars($_POST['name']) : ''; ?> " class="input_password" /> </td> </tr> </table> <div id="warning"><?php if ($error == 51) { echo _t('이메일이 올바르지 않습니다.'); } else { if ($error == 52) { echo _t('비밀번호가 일치하지 않습니다.'); } else { if ($error == 53) { echo _t('블로그 식별자가 올바르지 않습니다.'); } else { if ($error == 54) { echo _t('비밀번호는 최소 6자 이상이어야 합니다.'); } else { if ($check) { echo _t('표시된 정보가 부족합니다.'); } else { echo ' '; } } } } } ?> </div> </div> <div id="navigation"> <a href="#" onclick="window.history.back()" title="<?php echo _t('이전'); ?> "><img src="./resources/style/setup/image/icon_prev.gif" width="74" height="24" alt="<?php echo _t('이전'); ?> " /></a> <a href="#" onclick="next(); return false;" title="<?php echo _t('다음'); ?> "><img src="./resources/style/setup/image/icon_next.gif" width="74" height="24" alt="<?php echo _t('다음'); ?> " /></a> </div> </div> <script type="text/javascript"> //<![CDATA[ document.getElementById('email').focus(); //]]> </script> <?php } else { if ($step == 7) { if ($check) { return true; } ?> <input type="hidden" name="step" value="<?php echo $step; ?> " /> <input type="hidden" name="mode" value="<?php echo $_POST['mode']; ?> " /> <input type="hidden" name="dbms" value="<?php echo isset($_POST['dbms']) ? $_POST['dbms'] : ''; ?> " /> <input type="hidden" name="dbServer" value="<?php echo isset($_POST['dbServer']) ? $_POST['dbServer'] : ''; ?> " /> <input type="hidden" name="dbPort" value="<?php echo isset($_POST['dbPort']) ? $_POST['dbPort'] : ''; ?> " /> <input type="hidden" name="dbName" value="<?php echo isset($_POST['dbName']) ? $_POST['dbName'] : ''; ?> " /> <input type="hidden" name="dbUser" value="<?php echo isset($_POST['dbUser']) ? $_POST['dbUser'] : ''; ?> " /> <input type="hidden" name="dbPassword" value="<?php echo isset($_POST['dbPassword']) ? htmlspecialchars($_POST['dbPassword']) : ''; ?> " /> <input type="hidden" name="dbPrefix" value="<?php echo isset($_POST['dbPrefix']) ? $_POST['dbPrefix'] : ''; ?> " /> <input type="hidden" name="checked" value="<?php echo isset($_POST['checked']) ? $_POST['checked'] : ''; ?> " /> <input type="hidden" name="domain" value="<?php echo isset($_POST['domain']) ? $_POST['domain'] : ''; ?> " /> <input type="hidden" name="disableRewrite" value="<?php echo isset($_POST['disableRewrite']) ? $_POST['disableRewrite'] : false; ?> " /> <input type="hidden" name="rewriteMode" value="<?php echo isset($_POST['rewriteMode']) ? $_POST['rewriteMode'] : ''; ?> " /> <input type="hidden" name="type" value="<?php echo isset($_POST['type']) ? $_POST['type'] : ''; ?> " /> <input type="hidden" name="blog" value="<?php echo isset($_POST['blog']) ? $_POST['blog'] : ''; ?> " /> <div id="inner"> <h2><span class="step"><?php echo _f('%1단계', $step); ?> </span> : <?php echo _t('데이터베이스를 준비하고 있습니다. 잠시만 기다려 주십시오.'); ?> </h2> <div id="content-box" style="text-align:center"> <p></p> </div> </div><!-- inner --> </form> </div><!-- container --> <?php function fail($msg) { flush(); if ($_POST['mode'] == 'install') { } exit; } $loginid = POD::escapeString($_POST['email']); $password = md5($_POST['password']); $name = POD::escapeString($_POST['name']); $blog = POD::escapeString($_POST['blog']); $baseLanguage = POD::escapeString($_POST['Lang']); $baseTimezone = POD::escapeString(substr(_t('default:Asia/Seoul'), 8)); if (POD::dbms() == 'MySQLi') { $charset = 'DEFAULT CHARSET=utf8'; // if (!@POD::query('SET CHARACTER SET utf8')) // $charset = 'TYPE=MyISAM'; // @POD::query('SET SESSION collation_connection = \'utf8_general_ci\''); } else { $charset = ''; } if ($_POST['mode'] == 'install') { $schema = ''; // Compatibility layer load if (file_exists(ROOT . '/resources/setup/compatibility.' . POD::dbms() . '.sql')) { $schema = file_get_contents(ROOT . '/resources/setup/compatibility.' . POD::dbms() . '.sql'); $query = explode(';', trim($schema)); foreach ($query as $sub) { @POD::query($sub); } $schema = ''; $query = array(); } // Loading create schema from sql file. (DBMS specific) if (POD::dbms() == 'MySQLi') { $dbSelector = 'MySQL'; } else { $dbSelector = POD::dbms(); } $schema .= file_get_contents(ROOT . '/resources/setup/initialize.' . $dbSelector . '.sql'); $schema = str_replace('[##_dbPrefix_##]', $_POST['dbPrefix'], $schema); $schema = str_replace('[##_charset_##]', $charset, $schema); $schema .= "\nINSERT INTO {$_POST['dbPrefix']}Users VALUES (1, '{$loginid}', '{$password}', '{$name}', " . Timestamp::getUNIXtime() . ", 0, 0);\nINSERT INTO {$_POST['dbPrefix']}Privileges VALUES (1, 1, 16, " . Timestamp::getUNIXtime() . ", 0);\nINSERT INTO {$_POST['dbPrefix']}ServiceSettings VALUES ('newlineStyle', '1.1');\nINSERT INTO {$_POST['dbPrefix']}ServiceSettings VALUES ('useNewPluginSetting', 1);\nINSERT INTO {$_POST['dbPrefix']}BlogSettings VALUES (1, 'name', '{$blog}');\nINSERT INTO {$_POST['dbPrefix']}BlogSettings VALUES (1, 'language', '{$baseLanguage}');\nINSERT INTO {$_POST['dbPrefix']}BlogSettings VALUES (1, 'blogLanguage', '{$baseLanguage}');\nINSERT INTO {$_POST['dbPrefix']}BlogSettings VALUES (1, 'timezone', '{$baseTimezone}');\nINSERT INTO {$_POST['dbPrefix']}BlogSettings VALUES (1, 'defaultEditor', 'tinyMCE');\nINSERT INTO {$_POST['dbPrefix']}BlogSettings VALUES (1, 'defaultFormatter', 'ttml');\nINSERT INTO {$_POST['dbPrefix']}BlogSettings VALUES (1, 'acceptTrackbacks', 1);\nINSERT INTO {$_POST['dbPrefix']}BlogSettings VALUES (1, 'acceptComments', 1);\nINSERT INTO {$_POST['dbPrefix']}Plugins VALUES (1, 'CL_OpenID', null);\nINSERT INTO {$_POST['dbPrefix']}SkinSettings VALUES (1,'skin','periwinkle');\nINSERT INTO {$_POST['dbPrefix']}FeedSettings (blogid) values(1);\nINSERT INTO {$_POST['dbPrefix']}FeedGroups (blogid) values(1);\nINSERT INTO {$_POST['dbPrefix']}Entries (blogid, userid, id, category, visibility, location, title, slogan, contentformatter, contenteditor, starred, acceptcomment, accepttrackback, created, published, modified, content) VALUES (1, 1, 1, 0, 2, '/', '" . POD::escapeString(_t('환영합니다')) . "', 'welcome', 'ttml', 'tinyMCE', 0, 1, 1, " . Timestamp::getUNIXtime() . ", " . Timestamp::getUNIXtime() . "," . Timestamp::getUNIXtime() . ",'" . POD::escapeString(getDefaultPostContent()) . "')"; $query = explode(';', trim($schema)); foreach ($query as $sub) { if (!empty($sub) && !POD::query($sub, false)) { $tables = getTables('2.0', $_POST['dbPrefix']); foreach ($tables as $table) { if (POD::dbms() == 'Cubrid') { @POD::query("DROP " . $table); } else { @POD::query("DROP TABLE " . $table); } } /* @POD::query( "DROP TABLE {$_POST['dbPrefix']}Attachments, {$_POST['dbPrefix']}BlogSettings, {$_POST['dbPrefix']}BlogStatistics, {$_POST['dbPrefix']}Categories, {$_POST['dbPrefix']}Comments, {$_POST['dbPrefix']}CommentsNotified, {$_POST['dbPrefix']}CommentsNotifiedQueue, {$_POST['dbPrefix']}CommentsNotifiedSiteInfo, {$_POST['dbPrefix']}ContentFilters, {$_POST['dbPrefix']}DailyStatistics, {$_POST['dbPrefix']}Entries, {$_POST['dbPrefix']}EntriesArchive, {$_POST['dbPrefix']}FeedGroupRelations, {$_POST['dbPrefix']}FeedGroups, {$_POST['dbPrefix']}FeedItems, {$_POST['dbPrefix']}FeedReads, {$_POST['dbPrefix']}FeedSettings, {$_POST['dbPrefix']}FeedStarred, {$_POST['dbPrefix']}Feeds, {$_POST['dbPrefix']}Filters, {$_POST['dbPrefix']}Links, {$_POST['dbPrefix']}LinkCategories, {$_POST['dbPrefix']}OpenIDUsers, {$_POST['dbPrefix']}PageCacheLog, {$_POST['dbPrefix']}Plugins, {$_POST['dbPrefix']}Privileges, {$_POST['dbPrefix']}RefererLogs, {$_POST['dbPrefix']}RefererStatistics, {$_POST['dbPrefix']}RemoteResponseLogs, {$_POST['dbPrefix']}RemoteResponses, {$_POST['dbPrefix']}ReservedWords, {$_POST['dbPrefix']}ServiceSettings, {$_POST['dbPrefix']}SessionVisits, {$_POST['dbPrefix']}Sessions, {$_POST['dbPrefix']}SkinSettings, {$_POST['dbPrefix']}TagRelations, {$_POST['dbPrefix']}Tags, {$_POST['dbPrefix']}UserSettings, {$_POST['dbPrefix']}Users, {$_POST['dbPrefix']}XMLRPCPingSettings" );*/ echo '<script type="text/javascript">//<![CDATA[' . CRLF . 'alert("', _t('테이블을 생성하지 못했습니다.'), '")//]]></script>'; $error = 1; break; } } } else { $ctx = Model_Context::getInstance(); $ctx->setProperty('database.prefix', $_POST['dbPrefix']); $pool = DBModel::getInstance(); $pool->reset('Users'); $pool->setAttribute('loginid', $loginid, true); $pool->setAttribute('name', $name, true); $pool->setQualifier('userid', 'equals', 1); $pool->update(); $pool->reset('Users'); $pool->setAttribute('password', $password, true); $pool->setQualifier('userid', 'equals', 1); $pool->setQualifier('password', 'not', $password2, true); $pool->update(); $pool->reset('BlogSettings'); $pool->setAttribute('value', $_POST['blog'], true); $pool->setQualifier('blogid', 'equals', 1); $pool->setQualifier('name', 'equals', 'name', true); $pool->update(); $pool->reset('BlogSettings'); $pool->setAttribute('value', $baseLanguage, true); $pool->setQualifier('blogid', 'equals', 1); $pool->setQualifier('name', 'equals', 'language', true); $pool->update(); $pool->reset('BlogSettings'); $pool->setAttribute('value', $baseTimezone, true); $pool->setQualifier('blogid', 'equals', 1); $pool->setQualifier('name', 'equals', 'timezone', true); $pool->update(); $pool->reset('BlogSettings'); $pool->setAttribute('value', Timestamp::getUNIXtime()); $pool->setQualifier('blogid', 'equals', 1); $pool->setQualifier('name', 'equals', 'created', true); $pool->update(); } if (!$error) { POD::unbind(); echo '<script type="text/javascript">//<![CDATA[' . CRLF . 'next() //]]></script>'; } ?> </body> </html> <?php } else { if ($step == 8) { if ($check) { return true; } $useSSL = Utils_Misc::isSecureProtocol() ? 'true' : 'false'; $filename = $root . '/config.php'; $fp = fopen($filename, 'w+'); // For first entry addition $database = array('server' => $_POST['dbServer'], 'database' => $_POST['dbName'], 'username' => $_POST['dbUser'], 'port' => $_POST['dbPort'], 'password' => $_POST['dbPassword'], 'prefix' => $_POST['dbPrefix']); if ($fp) { fwrite($fp, "<?php\nini_set('display_errors', 'off');\n\$database['server'] = '{$_POST['dbServer']}';\n\$database['dbms'] = '{$_POST['dbms']}';\n\$database['database'] = '{$_POST['dbName']}';\n\$database['port'] = '{$_POST['dbPort']}';\n\$database['username'] = '******'dbUser']}';\n\$database['password'] = '******'dbPassword']}';\n\$database['prefix'] = '{$_POST['dbPrefix']}';\n\$service['type'] = '{$_POST['type']}';\n\$service['domain'] = '{$_POST['domain']}';\n\$service['path'] = '{$path}';\n\$service['skin'] = 'periwinkle';\n\$service['favicon_daily_traffic'] = 10; // 10MB\n\$service['useSSL'] = {$useSSL}; // Force SSL protocol (via https)\n//\$serviceURL = 'http://{$_POST['domain']}{$path}' ; // for path of Skin, plugin and etc.\n//\$service['reader'] = true; // Use Textcube reader. You can set it to false if you do not use Textcube reader, and want to decrease DB load.\n//\$service['debugmode'] = true; // uncomment for debugging, e.g. displaying DB Query or Session info\n//\$service['pagecache'] = false; // uncomment if you want to disable page cache feature.\n//\$service['codecache'] = true; // uncomment if you want to enable code cache feature.\n//\$service['debug_session_dump'] = true; // session info debuging.\n//\$service['debug_rewrite_module'] = true; // rewrite handling module debuging.\n//\$service['session_cookie_path'] = \$service['path']; // for avoiding spoiling other textcube's session id sharing root.\n//\$service['allowBlogVisibilitySetting'] = true; // Allow service users to change blog visibility.\n//\$service['externalresources'] = false; // Loads resources from external storage.\n//\$service['resourcepath'] = 'http://example.com/resource';\t// Specify the full URI of external resource.\n//\$service['autologinTimeout'] = 1209600;\t// Automatic login timeout (sec.)\n//\$service['favicon_daily_traffic'] = 10; // Set favicon traffic limitation. default is 10MB.\n//\$service['skincache'] = true; // Use skin pre-fetching. Textcube will parse static elements (blog name, title…) only when you change skin. Reduces CPU loads.\n//\$service['cookie_prefix'] = ''; // Service cookie prefix. Default cookie prefix is Textcube_[VERSION_NUMBER].\n//\$database['port'] = 3639; // Database port number\n//\$database['dbms'] = 'MySQLi'; // DBMS. (MySQL, MySQLi, PostgreSQL, Cubrid.)\n//\$service['memcached'] = true; // Using memcache to handle session and cache\n//\$memcached['server'] = 'localhost'; // Where memcache server is.\n//\$service['requirelogin'] = false; // Force log-in process to every blogs. (for private blog service)\n//\$service['jqueryURL'] = '';\t\t// Add URL if you want to use external jquery via CDN. e.g.) Microsoft's CDN: http://ajax.aspnetcdn.com/ajax/jQuery/\n//\$service['lodashURL'] = '';\t\t// Add URL if you want to use external lo-dash via CDN. e.g.) CDNJS' CDN: https://cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/\n?>"); fclose($fp); @chmod($filename, 0666); } if (!isset($_POST['disableRewrite']) || !$_POST['disableRewrite']) { $filename = $root . '/.htaccess'; $fp = fopen($filename, 'w+'); switch ($_POST['rewriteMode']) { case 'ISAPI': // Users must copy these rules to IsapiRewrite4.ini $htaccessContent = <<<EOF RewriteRule ^{$path}/(thumbnail)/([0-9]+/.+)\$ {$path}/cache/\$1/\$2 [L,U] RewriteRule ^{$path}/attach/([0-9]+/.+)\$ {$path}/user/attach/\$1 [L,U] RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^{$path}/user+/+(cache)+/+(.+[^/]).(cache|xml|txt|log)\$ - [NC,F,L,U] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^{$path}/([^?]+[^/])\$ {$path}/\$1/ [L,U] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{QUERY_STRING} ^\$ RewriteRule ^{$path}/(.*)\$ {$path}/rewrite.php [L,U] RewriteRule ^{$path}/(.*)\$ {$path}/rewrite.php?%{QUERY_STRING} [L,U] EOF; break; case 'IISRewrite': // Users must import these rules into URL Rewrite module. $htaccessContent = <<<EOF RewriteRule ^{$path}/(thumbnail)/([0-9]+/.+)\$ {$path}/cache/\$1/\$2 [L] RewriteRule ^{$path}/attach/([0-9]+/.+)\$ {$path}/user/attach/\$1 [L] RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^{$path}/user+/+(cache)+/+(.+[^/]).(cache|xml|txt|log)\$ - [NC,F,L] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^{$path}/([^?]+[^/])\$ {$path}/\$1/ [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^{$path}/(.*)\$ {$path}/rewrite.php [L,QSA] EOF; break; case 'mod_rewrite': default: $htaccessContent = <<<EOF #<IfModule mod_url.c> #CheckURL Off #</IfModule> #SetEnv PRELOAD_CONFIG 1 RewriteEngine On RewriteBase {$path}/ RewriteRule ^(thumbnail)/([0-9]+/.+)\$ cache/\$1/\$2 [L] RewriteRule ^attach/([0-9]+/.+)\$ user/attach/\$1 [L] RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^user+/+(cache)+/+(.+[^/]).(cache|xml|txt|log)\$ - [NC,F,L] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^(.+[^/])\$ \$1/ [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)\$ rewrite.php [L,QSA] EOF; } if ($fp) { fwrite($fp, $htaccessContent); fclose($fp); @chmod($filename, 0666); } } $blogProtocol = isset($_SERVER['HTTPS']) ? 'https' : 'http'; $blogDefaultPort = isset($_SERVER['HTTPS']) ? 443 : 80; switch ($_POST['type']) { case 'domain': $blogURL = "{$blogProtocol}://{$_POST['blog']}.{$_POST['domain']}" . ($_SERVER['SERVER_PORT'] != $blogDefaultPort ? ":{$_SERVER['SERVER_PORT']}" : '') . "{$path}" . (empty($_POST['disableRewrite']) ? '' : '/index.php?'); break; case 'path': $blogURL = "{$blogProtocol}://{$_POST['domain']}" . ($_SERVER['SERVER_PORT'] != $blogDefaultPort ? ":{$_SERVER['SERVER_PORT']}" : '') . "{$path}" . (empty($_POST['disableRewrite']) ? '' : '/index.php?') . "/{$_POST['blog']}"; break; case 'single': $blogURL = "{$blogProtocol}://{$_POST['domain']}" . ($_SERVER['SERVER_PORT'] != $blogDefaultPort ? ":{$_SERVER['SERVER_PORT']}" : '') . "{$path}" . (empty($_POST['disableRewrite']) ? '' : '/index.php?'); break; } ?> <div id="inner"> <h2><span class="step"><?php echo _t('설치완료'); ?> </span> : <?php echo _t('텍스트큐브가 성공적으로 설치되었습니다.'); ?> </h2> <div id="content-box"> <p> </p> <ul> <li><?php echo _t('텍스트큐브 주소'); ?> <br /> <a href="<?php echo $blogURL . '/'; ?> "><?php echo $blogURL . '/'; ?> </a><br /> <br /> </li> <li><?php echo _t('텍스트큐브 관리 툴 주소'); ?> <br /> <a href="<?php echo $blogURL . '/'; ?> owner"><?php echo $blogURL . '/'; ?> owner</a></li> </ul> <p> <?php if (checkIIS()) { echo _t('새로 IIS용 Rewrite 모듈을 설치하셨다면 <b>.htaccess 내용을 모듈 설정에 적용</b>해주십시오.<br />'); } ?> <?php echo '<li style="color:red">', _t('보안 관련 안내'), ': ', '<br /><span class="instruction">', _t('보안을 위하여 설치때 필요했던 권한 중 일부를 제거해주세요. FTP 프로그램으로 권한을 수정하시거나 다음의 명령을 터미널에 붙여 넣으시면 됩니다'), '<br />', 'chmod 0755 ' . $root, '</span></li>'; ?> <?php echo _t('텍스트큐브 관리 툴로 로그인 하신 후 필요사항을 수정해 주십시오.'); ?> <br /> <?php echo _t('텍스트큐브를 이용해 주셔서 감사합니다.'); ?> </p> </div> </div> <?php } else { if ($step == 204) { ?> <input type="hidden" name="step" value="4" /> <input type="hidden" name="mode" value="<?php echo $_POST['mode']; ?> " /> <input type="hidden" name="dbms" value="<?php echo isset($_POST['dbms']) ? $_POST['dbms'] : ''; ?> " /> <input type="hidden" name="dbServer" value="<?php echo isset($_POST['dbServer']) ? $_POST['dbServer'] : ''; ?> " /> <input type="hidden" name="dbPort" value="<?php echo isset($_POST['dbPort']) ? $_POST['dbPort'] : ''; ?> " /> <input type="hidden" name="dbName" value="<?php echo isset($_POST['dbName']) ? $_POST['dbName'] : ''; ?> " /> <input type="hidden" name="dbUser" value="<?php echo isset($_POST['dbUser']) ? $_POST['dbUser'] : ''; ?> " /> <input type="hidden" name="dbPassword" value="<?php echo isset($_POST['dbPassword']) ? htmlspecialchars($_POST['dbPassword']) : ''; ?> " /> <div id="inner"> <h2><span class="step"><?php echo _f('%1단계', 4); ?> </span> : <?php echo _t('삭제하고자 하는 테이블을 선택하여 주십시오.'); ?> </h2> <div id="userinput"> <table id="info"> <tr> <th><?php echo _t('식별자'); ?> </th> <th><?php echo _t('버전'); ?> </th> <th><?php echo _t('테이블'); ?> </th> <th></th> </tr> <?php $tables = array(); $ckeckedString = 'checked '; if ($result = POD::tableList()) { foreach ($result as $table) { //$table = $table[0]; $entriesMatched = preg_match('/Entries$/', $table); if ($entriesMatched && checkTables('2.0', $prefix = substr($table, 0, strlen($table) - 7))) { ?> <tr> <th><?php echo $prefix; ?> </th> <th>2.0</th> <td><?php echo implode(', ', getTables('2.0', $prefix)); ?> </td> <th><input type="radio" name="target" value="2.0_<?php echo $prefix; ?> " <?php echo $ckeckedString; ?> /></th> </tr> <?php $ckeckedString = ''; } else { if ($entriesMatched && checkTables('1.9', $prefix = substr($table, 0, strlen($table) - 7))) { ?> <tr> <th><?php echo $prefix; ?> </th> <th>1.9</th> <td><?php echo implode(', ', getTables('1.9', $prefix)); ?> </td> <th><input type="radio" name="target" value="1.9_<?php echo $prefix; ?> " <?php echo $ckeckedString; ?> /></th> </tr> <?php $ckeckedString = ''; } else { if ($entriesMatched && checkTables('1.8', $prefix = substr($table, 0, strlen($table) - 7))) { ?> <tr> <th><?php echo $prefix; ?> </th> <th>1.8</th> <td><?php echo implode(', ', getTables('1.8', $prefix)); ?> </td> <th><input type="radio" name="target" value="1.8_<?php echo $prefix; ?> " <?php echo $ckeckedString; ?> /></th> </tr> <?php $ckeckedString = ''; } else { if ($entriesMatched && checkTables('1.7', $prefix = substr($table, 0, strlen($table) - 7))) { ?> <tr> <th><?php echo $prefix; ?> </th> <th>1.7</th> <td><?php echo implode(', ', getTables('1.7', $prefix)); ?> </td> <th><input type="radio" name="target" value="1.7_<?php echo $prefix; ?> " <?php echo $ckeckedString; ?> /></th> </tr> <?php $ckeckedString = ''; } else { if ($entriesMatched && checkTables('1.6', $prefix = substr($table, 0, strlen($table) - 7))) { ?> <tr> <th><?php echo $prefix; ?> </th> <th>1.6</th> <td><?php echo implode(', ', getTables('1.6', $prefix)); ?> </td> <th><input type="radio" name="target" value="1.6_<?php echo $prefix; ?> " <?php echo $ckeckedString; ?> /></th> </tr> <?php $ckeckedString = ''; } else { if ($entriesMatched && checkTables('1.5', $prefix = substr($table, 0, strlen($table) - 7))) { ?> <tr> <th><?php echo $prefix; ?> </th> <th>1.5</th> <td><?php echo implode(', ', getTables('1.5', $prefix)); ?> </td> <th><input type="radio" name="target" value="1.5_<?php echo $prefix; ?> " <?php echo $ckeckedString; ?> /></th> </tr> <?php $ckeckedString = ''; } else { if ($entriesMatched && checkTables('1.1', $prefix = substr($table, 0, strlen($table) - 7))) { ?> <tr> <th><?php echo $prefix; ?> </th> <th>1.1</th> <td><?php echo implode(', ', getTables('1.1', $prefix)); ?> </td> <th><input type="radio" name="target" value="1.1_<?php echo $prefix; ?> " <?php echo $ckeckedString; ?> /></th> </tr> <?php $ckeckedString = ''; } else { if ($entriesMatched && checkTables('1.0.2', $prefix = substr($table, 0, strlen($table) - 7))) { ?> <tr> <th><?php echo $prefix; ?> </th> <th>1.0.2</th> <td><?php echo implode(', ', getTables('1.0.2', $prefix)); ?> </td> <th><input type="radio" name="target" value="1.0.2_<?php echo $prefix; ?> " <?php echo $ckeckedString; ?> /></th> </tr> <?php $ckeckedString = ''; } else { if ($entriesMatched && checkTables('1.0.0', $prefix = substr($table, 0, strlen($table) - 7))) { ?> <tr> <th><?php echo $prefix; ?> </th> <th>1.0.0</th> <td><?php echo implode(', ', getTables('1.0.0', $prefix)); ?> </td> <th><input type="radio" name="target" value="1.0.0_<?php echo $prefix; ?> " <?php echo $ckeckedString; ?> /></th> </tr> <?php $ckeckedString = ''; } else { if ($entriesMatched && checkTables('1.0.b2', $prefix = substr($table, 0, strlen($table) - 7))) { ?> <tr> <th><?php echo $prefix; ?> </th> <th>1.0 Beta 2</th> <td><?php echo implode(', ', getTables('1.0.b2', $prefix)); ?> </td> <th><input type="radio" name="target" value="1.0.b2_<?php echo $prefix; ?> " <?php echo $ckeckedString; ?> /></th> </tr> <?php $ckeckedString = ''; } else { if (preg_match('/^t3_(.*)_10ofmg$/', $table) && checkTables('0.97', $prefix = substr($table, 3, strlen($table) - 10))) { ?> <tr> <th><?php echo $prefix; ?> </th> <th>0.97 (Classic)</th> <td><?php echo implode(', ', getTables('0.97', $prefix)); ?> </td> <th><input type="radio" name="target" value="0.97_<?php echo $prefix; ?> " <?php echo $ckeckedString; ?> /></th> </tr> <?php $ckeckedString = ''; } else { if (preg_match('/^t3_(.*)_ct1$/', $table) && checkTables('0.96', $prefix = substr($table, 3, strlen($table) - 7))) { ?> <tr> <th><?php echo $prefix; ?> </th> <th>0.96x</th> <td><?php echo implode(', ', getTables('0.96', $prefix)); ?> </td> <th><input type="radio" name="target" value="0.96_<?php echo $prefix; ?> " <?php echo $ckeckedString; ?> /></th> </tr> <?php $ckeckedString = ''; } } } } } } } } } } } } } } ?> </table> </div> <div id="navigation"> <a href="#" onclick="window.history.back()" title="<?php echo _t('이전'); ?> "><img src="./resources/style/setup/image/icon_prev.gif" width="74" height="24" alt="<?php echo _t('이전'); ?> " /></a> <a href="#" onclick="if (confirm('<?php echo _t('삭제하시겠습니까?'); ?> ') && confirm('<?php echo _t('정말 삭제하시겠습니까?'); ?> ')) next(); return false;" title="<?php echo _t('다음'); ?> "><img src="./resources/style/setup/image/icon_next.gif" width="74" height="24" alt="<?php echo _t('다음'); ?> " /></a> </div> </div> <?php } else { if ($step == 205) { ?> <input type="hidden" name="step" value="1" /> <div id="inner"> <h2><span class="step"><?php echo _f('%1단계', 5); ?> </span> : <?php echo _t('선택된 테이블을 삭제하고 있습니다.'); ?> </h2> <div id="userinput"> <table id="info"> <tr> <th><?php echo _t('식별자'); ?> </th> <th><?php echo _t('버전'); ?> </th> <th><?php echo _t('테이블'); ?> </th> </tr> <?php list($version, $prefix) = explode('_', $_POST['target'], 2); $result = false; if (checkTables($version, $prefix)) { ?> <tr> <th><?php echo $prefix; ?> </th> <th><?php echo $version; ?> </th> <td><?php echo implode(', ', getTables($version, $prefix)); ?> </td> </tr> <?php $result = @POD::query('DROP TABLE ' . implode(', ', getTables($version, $prefix))); } ?> </table> <p><?php echo $result ? _t('삭제하였습니다.') : '<span style="color:red">' . _t('삭제하지 못했습니다.') . '</span>'; ?> </p> </div> <div id="navigation"> <a href="#" onclick="window.history.back()" title="<?php echo _t('이전'); ?> "><img src="./resources/style/setup/image/icon_prev.gif" width="74" height="24" alt="<?php echo _t('이전'); ?> " /></a> <a href="#" onclick="next(); return false;" title="<?php echo _t('다음'); ?> "><img src="./resources/style/setup/image/icon_next.gif" width="74" height="24" alt="<?php echo _t('다음'); ?> " /></a> </div> </div> <?php } } } } } } } } } } }
</div> <div id="page-section" class="section"> <div id="page-navigation"> <span id="page-list"> <?php //$paging['url'] = 'document.getElementById('list-form').page.value='; //$paging['prefix'] = ''; //$paging['postfix'] = '; document.getElementById('list-form').submit()'; $pagingTemplate = '[##_paging_rep_##]'; $pagingItemTemplate = '<a [##_paging_rep_link_##]>[##_paging_rep_link_num_##]</a>'; print getPagingView($paging, $pagingTemplate, $pagingItemTemplate, false); ?> </span> <span id="total-count"><?php echo _f('총 %1건', empty($paging['total']) ? "0" : $paging['total']); ?> </span> </div> <div class="page-count"> <?php echo getArrayValue(explode('%1', _t('한 페이지에 글 %1건 표시')), 0); ?> <select name="perPage" onchange="document.getElementById('list-form').page.value=1; document.getElementById('list-form').submit()"> <?php for ($i = 10; $i <= 30; $i += 5) { if ($i == $perPage) { ?> <option value="<?php echo $i;
</a></h3> <div id="power-container" class="container"> <dl id="permalink-line" class="line"<?php if ($isKeyword) { echo ' style="display: none"'; } ?> > <dt><label for="permalink"><?php echo _t('절대 주소'); ?> </label></dt> <dd class="permalink-input"> <samp id="permalink-prefix"><?php echo _f('%1/entry/', link_cut(getBlogURL())); ?> </samp><input type="text" id="permalink" class="input-text" name="permalink" onkeypress="return preventEnter(event);" value="<?php echo htmlspecialchars($entry['slogan']); ?> " /> </dd> <dd> <p>* <?php echo _t('입력하지 않으면 글의 제목이 절대 주소가 됩니다.'); ?> </p> </dd> </dl> <dl id="date-line" class="line"> <dt><span class="label"><?php
$errors[] = __("Password cannot be blank."); } if ($_POST['password_1'] != $_POST['password_2']) { $errors[] = __("Passwords do not match."); } if (empty($_POST['email'])) { $errors[] = __("E-Mail address cannot be blank."); } if (empty($errors)) { if (!$htaccess_has_chyrp) { if (!file_exists(MAIN_DIR . "/.htaccess")) { if (!@file_put_contents(MAIN_DIR . "/.htaccess", $htaccess)) { $errors[] = _f("Could not generate .htaccess file. Clean URLs will not be available unless you create it and put this in it:\n<pre>%s</pre>", array(fix($htaccess))); } } elseif (!@file_put_contents(MAIN_DIR . "/.htaccess", "\n\n" . $htaccess, FILE_APPEND)) { $errors[] = _f("Could not generate .htaccess file. Clean URLs will not be available unless you create it and put this in it:\n<pre>%s</pre>", array(fix($htaccess))); } } $config->set("sql", array()); $config->set("name", $_POST['name']); $config->set("description", $_POST['description']); $config->set("url", $url); $config->set("chyrp_url", $url); $config->set("email", $_POST['email']); $config->set("timezone", $_POST['timezone']); $config->set("locale", "en_US"); $config->set("check_updates", true); $config->set("theme", "firecrest"); $config->set("admin_theme", "default"); $config->set("posts_per_page", 5); $config->set("feed_items", 20);
<?php ob_start(); ?> <select id="feedListRecentFeedList"> <?php for ($i=1; $i <= 20; $i++) { ?> <option value="<?php echo $i;?>" <?php if ($i == $skinConfig->feedListRecentFeedList) {?> selected="selected"<?php } ?>><?php echo $i;?></option> <?php } ?> </select> <?php $arg = ob_get_contents(); ob_end_clean(); echo _f('블로그 의 최근 글을 %1 개 보여줍니다', $arg); ?> </dd> </dl> <div class="skin_setting_tools"> <a href="#" class="normalbutton" onclick="saveSkinSettings(); return false;"><span class="boldbutton"><?php echo _t('수정완료');?></span></a> </div> </div> <div class="clear"></div> </div> <?php } ?>
function PN_Blog_Statistics_Default() { global $database, $blogid, $defaultURL, $blogURL, $pluginURL, $pluginMenuURL, $configVal; requireComponent('Textcube.Model.Statistics'); requireComponent('Textcube.Function.misc'); $data = misc::fetchConfigVal($configVal); if (is_null($data)) { $data['privateChk'] = 2; } $getVisibility = $data['privateChk'] == 2 ? " AND visibility > 0 " : ""; $stats = Statistics::getStatistics($blogid); $getDate = isset($_GET['date']) ? $_GET['date'] : date('Y', strtotime("now")); $getMenu = isset($_GET['menu']) ? $_GET['menu'] : "entry"; $getYear = substr($getDate, 0, 4); $getMonth = substr($getDate, 4); $yearRow = POD::queryAll("SELECT EXTRACT(YEAR FROM FROM_UNIXTIME(published)) period, COUNT(*) count FROM {$database['prefix']}Entries WHERE blogid = {$blogid} AND draft = 0 {$getVisibility} AND category >= 0 GROUP BY period ORDER BY period DESC"); $yearCell = POD::queryCell("SELECT COUNT(*) FROM {$database['prefix']}Entries WHERE blogid = {$blogid} AND draft = 0 {$getVisibility} AND category >= 0 AND EXTRACT(YEAR FROM FROM_UNIXTIME(published)) = '" . date('Y', strtotime("now")) . "'"); $yearAll = POD::queryCell("SELECT COUNT(*) FROM {$database['prefix']}Entries WHERE blogid = {$blogid} AND draft = 0 {$getVisibility} AND category >= 0"); $yearSelect = "<select id=\"yearSelect\" onchange=\"execDate(this);\">\n"; $yearSelect .= "<option value=\"\">" . _t(' - 년 도 -') . "</option>\n"; $selected = $getYear == 9999 ? " selected" : ""; $yearSelect .= "<option value=\"9999\" style=\"font-weight:bold;\" {$selected}>" . _t('#전체') . "({$yearAll})</option>\n"; if (!$yearCell) { $selected = $getYear == date('Y', strtotime("now")) ? " selected" : ""; $yearSelect .= "<option value=\"" . date('Y', strtotime("now")) . "\" {$selected}>" . date('Y', strtotime("now")) . _t('년') . "(0)</option>\n"; } foreach ($yearRow as $items) { $selected = $getYear == $items['period'] ? " selected" : ""; $yearSelect .= "<option value=\"{$items['period']}\" {$selected}>{$items['period']}" . _t('년') . "({$items['count']})</option>\n"; } $yearSelect .= "</select>\n"; $monthSelect = "<select id=\"monthSelect\" onchange=\"execDate(this);\">\n"; $monthSelect .= "<option value=\"\">- " . _t('월') . " -</option>\n"; $monthSelect .= "<option value=\"{$getYear}\" " . (strlen($getDate) == 4 ? " selected" : "") . ">" . _t('#전체') . "</option>\n"; for ($i = 1; $i <= 12; $i++) { $gMonth = strlen($i) == 1 ? "0" . $i : $i; $gValue = $getYear . $gMonth; $selected = $getMonth == $gMonth ? " selected" : ""; $monthSelect .= "<option value=\"{$gValue}\" {$selected}>" . $gMonth . _t('월') . "</option>\n"; } $monthSelect .= "</select>\n"; $noticeRow = POD::queryCell("SELECT COUNT(*) FROM {$database['prefix']}Entries WHERE blogid = {$blogid} AND draft = 0 {$getVisibility} AND category = -2"); //공지 $keywordRow = POD::queryCell("SELECT COUNT(*) FROM {$database['prefix']}Entries WHERE blogid = {$blogid} AND draft = 0 {$getVisibility} AND category = -1"); //키워드 ?> <script type="text/javascript"> //<![CDATA[ function execLoadFunction() { tempDiv = document.createElement("DIV"); tempDiv.style.clear = "both"; document.getElementById("part-statistics-blog").appendChild(tempDiv); } function execDate(selectObject){ if(selectObject.options[selectObject.selectedIndex].value){ location.href="<?php echo $pluginMenuURL; ?> &date="+selectObject.options[selectObject.selectedIndex].value+"&menu=<?php echo $getMenu; ?> "; } } window.addEventListener("load", execLoadFunction, false); //]]> </script> <div id="part-statistics-blog" class="part"> <h2 class="caption"><span class="main-text"><?php echo _t('블로그 통계정보를 보여줍니다'); ?> </span></h2> <div id="statistics-main"> <div id="statistics-counter-inbox"> <div class="title"><h3><?php echo _t('종 합 정 보'); ?> </h3></div> <table width="100%"> <tbody> <tr class="tr"> <td colspan="2"><?php echo _t('년/월별 선택'); ?> <br /> <?php echo $yearSelect; ?> <?php echo $monthSelect; ?> </td> </tr> <tr height="5"><td colspan="2"></td></tr> <tr height="1" bgcolor="#dddddd"><td colspan="2"></td></tr> <tr class="tr"> <td><?php echo _t('오늘 방문자'); ?> </td> <th><?php echo number_format($stats['today']); ?> </th> </tr> <tr class="tr"> <td><?php echo _t('어제 방문자'); ?> </td> <th><?php echo number_format($stats['yesterday']); ?> </th> </tr> <tr class="tr"> <td><?php echo _t('총 방문자'); ?> </td> <th><?php echo number_format($stats['total']); ?> </th> </tr> <tr height="1" bgcolor="#dddddd"><td colspan="2"></td></tr> <tr class="tr"> <td><?php echo _t('글 개수'); ?> </td> <th><?php echo number_format(getEntriesTotalCountDB($blogid)); ?> </th> </tr> <tr class="tr"> <td><?php echo _t('공지 개수'); ?> </td> <th><?php echo number_format($noticeRow); ?> </th> </tr> <tr class="tr"> <td><?php echo _t('키워드 개수'); ?> </td> <th><?php echo number_format($keywordRow); ?> </th> </tr> <tr class="tr"> <td><?php echo _t('댓글 개수'); ?> </td> <th><?php echo number_format(getCommentCountDB($blogid)); ?> </th> </tr> <tr class="tr"> <td><?php echo _t('방명록 개수'); ?> </td> <th><?php echo number_format(getGuestbookCountDB($blogid)); ?> </th> </tr> <tr class="tr"> <td><?php echo _t('트랙백 개수'); ?> </td> <th><?php echo number_format(getTrackbackCountDB($blogid)); ?> </th> </tr> <tr height="10"><td colspan="2"></td></tr> </tbody> </table> <div class="title"><h3><?php echo _t('세 부 메 뉴'); ?> </h3></div> <table width="100%"> <tbody> <tr class="tr"> <td> » <a href="<?php echo $pluginMenuURL; ?> &date=<?php echo $getDate; ?> &menu=entry"><?php echo _get_t(_t('글(포스트) 통계'), 'entry'); ?> </a></td> </tr> <tr class="tr"> <td> » <a href="<?php echo $pluginMenuURL; ?> &date=<?php echo $getDate; ?> &menu=comment"><?php echo _get_t(_t('댓글 통계'), 'comment'); ?> </a></td> </tr> <tr class="tr"> <td> - <a href="<?php echo $pluginMenuURL; ?> &date=<?php echo $getDate; ?> &menu=commenter"><?php echo _get_t(_t('작성자 목록'), 'commenter'); ?> </a></td> </tr> <tr class="tr"> <td> » <a href="<?php echo $pluginMenuURL; ?> &date=<?php echo $getDate; ?> &menu=trackback"><?php echo _get_t(_t('트랙백 통계'), 'trackback'); ?> </a></td> </tr> <tr class="tr"> <td> » <a href="<?php echo $pluginMenuURL; ?> &date=<?php echo $getDate; ?> &menu=guestbook"><?php echo _get_t(_t('방명록 통계'), 'guestbook'); ?> </a></td> </tr> <tr class="tr"> <td> - <a href="<?php echo $pluginMenuURL; ?> &date=<?php echo $getDate; ?> &menu=guestbookcommenter"><?php echo _get_t(_t('작성자 목록'), 'guestbookcommenter'); ?> </a></td> </tr> <tr class="tr"> <td> » <a href="<?php echo $pluginMenuURL; ?> &date=<?php echo $getDate; ?> &menu=tag"><?php echo _get_t(_t('태그 통계'), 'tag'); ?> </a></td> </tr> <tr class="tr"> <td> » <a href="<?php echo $pluginMenuURL; ?> &date=<?php echo $getDate; ?> &menu=visit"><?php echo _get_t(_t('방문자 통계'), 'visit'); ?> </a></td> </tr> <tr class="tr"> <td> » <a href="<?php echo $pluginMenuURL; ?> &date=<?php echo $getDate; ?> &menu=referer"><?php echo _get_t(_t('리퍼러 통계'), 'referer'); ?> </a></td> </tr> </tbody> </table> </div> <div id="statistics-inbox"> <?php //############################## // 글(포스트) 통계 ######### //############################## if ($getMenu == "entry") { if ($getYear == 9999 && !$getMonth) { $getData = array(); $getTags = array(); $getDateTitle = _t('전체 년도별'); $tempData = getStatisticsDB('years', '', $getMenu); foreach ($tempData as $item) { array_push($getData, $item['count']); array_push($getTags, rawurlencode($item['period'] . _t('년'))); } $getData = implode("|", $getData); $getTags = implode("|", $getTags); $getTotal = getStatisticsTotalDB($getDate, $getMenu, 1); ?> <table class="data-inbox" cellspacing="0" cellpadding="0"> <thead> <tr> <th colspan="2"><h3><?php echo $getDateTitle; ?> <?php echo _t('글(포스트) 통계'); ?> (<?php echo number_format(getStatisticsTotalDB($getDate, $getMenu, 0)) . "/" . number_format(getStatisticsTotalDB($getDate, $getMenu, 1)); echo _t('개'); ?> )</h3></th> </tr> </thead> <tbody> <tr> <td> <div class="flash-stic"> <div id="get<?php echo $getMenu; ?> YearStic"> <?php echo open_flash_chart_object(470, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=bar&grpTypeName=&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_bar" : "")); ?> </div> </div> </td> <td> <div class="flash-pizza"> <div id="get<?php echo $getMenu; ?> YearPizza"> <?php echo open_flash_chart_object(265, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=pie&grpLinkType=archiveYear&grpYear=" . $getYear . "&grpTypeName=&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_pie" : "")); ?> </div> </div> </td> </tr> </tbody> </table> <?php } $getData = array(); $getTags = array(); if ($getYear == 9999) { $getDateTitle = !$getMonth ? _t('전체') : _t('전체') . ' ' . $getMonth . _t('월'); } else { $getDateTitle = !$getMonth ? $getYear . _t('년도') : $getYear . _t('년도') . $getMonth . _t('월'); } if (!$getMonth) { $lastCount = 12; $textValue = _t('월'); } else { $lastCount = $getYear == 9999 ? 31 : date('t', mktime(0, 0, 0, $getMonth, 1, $getYear)); $textValue = ""; } for ($i = 1; $i <= $lastCount; $i++) { $tempData = getStatisticsDB($getDate, $i, $getMenu); if ($tempData) { array_push($getData, $tempData['count']); array_push($getTags, rawurlencode($i . $textValue)); } } $getData = implode("|", $getData); $getTags = implode("|", $getTags); $getTotal = getStatisticsTotalDB($getDate, $getMenu, 1); ?> <table class="data-inbox" cellspacing="0" cellpadding="0"> <thead> <tr> <th colspan="2"><h3><?php echo $getDateTitle; ?> <?php echo _t('글(포스트) 통계'); ?> (<?php echo number_format(getStatisticsTotalDB($getDate, $getMenu, 0)) . "/" . number_format(getStatisticsTotalDB($getDate, $getMenu, 1)); echo _t('개'); ?> )</h3></th> </tr> </thead> <tbody> <tr> <td> <div class="flash-stic"> <div id="get<?php echo $getMenu; ?> Stic"> <?php echo open_flash_chart_object(470, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=bar&grpTypeName=&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_bar" : "")); ?> </div> </div> </td> <td align="right"> <div class="flash-pizza"> <div id="get<?php echo $getMenu; ?> Pizza"> <?php echo open_flash_chart_object(265, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=pie&grpLinkType=archiveMonth&grpYear=" . $getYear . "&grpTypeName=&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_pie" : "")); ?> </div> </div> </td> </tr> </tbody> </table> <?php if (!$getMonth) { $getData = array(); $getTags = array(); for ($i = 1; $i <= 4; $i++) { $tempData = getQuartersStatistics($getDate, $i, $getMenu); if ($tempData) { array_push($getData, $tempData); array_push($getTags, rawurlencode($i . "/4 " . _t('분기'))); } } $getData = implode("|", $getData); $getTags = implode("|", $getTags); $getTotal = getStatisticsTotalDB($getDate, $getMenu, 0); ?> <table class="data-inbox" cellspacing="0" cellpadding="0"> <thead> <tr> <th colspan="2"><h3><?php echo $getDateTitle; ?> <?php echo _t('분기별') . _t('글(포스트) 통계'); ?> (<?php echo number_format(getStatisticsTotalDB($getDate, $getMenu, 0)) . "/" . number_format(getStatisticsTotalDB($getDate, $getMenu, 1)); echo _t('개'); ?> )</h3></th> </tr> </thead> <tbody> <tr> <td> <div class="flash-stic"> <div id="get<?php echo $getMenu; ?> QuartersStic"> <?php echo open_flash_chart_object(470, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=bar&grpTypeName=&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_bar" : "")); ?> </div> </div> </td> <td> <div class="flash-pizza"> <div id="get<?php echo $getMenu; ?> QuartersPizza"> <?php echo open_flash_chart_object(265, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=pie&grpLinkType=&grpYear=" . $getYear . "&grpTypeName=&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_pie" : "")); ?> </div> </div> </td> </tr> </tbody> </table> <?php } $getData = array(); $getTags = array(); $tempData = getCategoryStatistics(); $itemCnt = getCategoryStatisticsTotal(0, $getDate); if ($itemCnt) { array_push($getData, $itemCnt); array_push($getTags, $item['id']); } foreach ($tempData as $item) { $itemCnt = getCategoryStatisticsTotal($item['id'], $getDate); if ($itemCnt) { array_push($getData, $itemCnt); array_push($getTags, $item['id']); } } $getData = implode("|", $getData); $getTags = implode("|", $getTags); $getTotal = getStatisticsTotalDB($getDate, $getMenu, 0); ?> <table class="data-inbox" cellspacing="0" cellpadding="0"> <thead> <tr> <th colspan="2"><h3><?php echo $getDateTitle; ?> <?php echo _t('카테고리별') . _t('글(포스트) 통계'); ?> (<?php echo number_format(getStatisticsTotalDB($getDate, $getMenu, 0)) . "/" . number_format(getStatisticsTotalDB($getDate, $getMenu, 1)); echo _t('개'); ?> )</h3></th> </tr> </thead> <tbody> <tr> <td> <div class="flash-stic"> <div id="get<?php echo $getMenu; ?> CategoryStic"> <?php echo open_flash_chart_object(470, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=bar&grpTypeName=category&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_bar" : "")); ?> </div> </div> </td> <td> <div class="flash-pizza"> <div id="get<?php echo $getMenu; ?> CategoryPizza"> <?php echo open_flash_chart_object(265, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=pie&grpLinkType=category&grpYear=" . $getYear . "&grpTypeName=category&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_pie" : "")); ?> </div> </div> </td> </tr> </tbody> </table> <?php $query = "SELECT * FROM {$database['prefix']}Entries_hits"; if (POD::queryRow($query)) { $getData = array(); $getTags = array(); $tempData = getEntryHitsStatistics($getDate); foreach ($tempData as $item) { array_push($getData, $item['hits']); array_push($getTags, $item['id']); } $getData = implode("|", $getData); $getTags = implode("|", $getTags); $getTotal = getStatisticsTotalDB($getDate, $getMenu, 0); ?> <table class="data-inbox" cellspacing="0" cellpadding="0"> <thead> <tr> <th colspan="2"><h3><?php echo $getDateTitle; ?> <?php echo _t('조회수 TOP 10') . _t('글(포스트) 통계'); ?> (<?php echo number_format(getStatisticsTotalDB($getDate, $getMenu, 0)) . "/" . number_format(getStatisticsTotalDB($getDate, $getMenu, 1)); echo _t('개'); ?> )</h3></th> </tr> </thead> <tbody> <tr> <td> <div class="flash-stic"> <div id="get<?php echo $getMenu; ?> HitsStic"> <?php echo open_flash_chart_object(470, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=bar&grpTypeName=hits&grpXLabelType=2&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_bar" : "")); ?> </div> </div> </td> <td> <div class="flash-pizza"> <div id="get<?php echo $getMenu; ?> HitsPizza"> <?php echo open_flash_chart_object(265, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=pie&grpLinkType=entry&grpYear=" . $getYear . "&grpTypeName=hits&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_pie" : "")); ?> </div> </div> </td> </tr> </tbody> </table> <?php } $getData = array(); $getTags = array(); for ($i = 0; $i <= 23; $i++) { $tempData = getTimeStatistics($getDate, $i, $getMenu); if ($tempData) { if ($tempData['period'] == "00") { $tempData['period'] = str_replace("00", "0", $tempData['period']); } else { if (substr($tempData['period'], 0, 1) == "0") { $tempData['period'] = str_replace("0", "", $tempData['period']); } } array_push($getData, $tempData['count']); array_push($getTags, $tempData['period']); } } $getData = implode("|", $getData); $getTags = implode("|", $getTags); $getTotal = getStatisticsTotalDB($getDate, $getMenu, 0); ?> <table class="data-inbox" cellspacing="0" cellpadding="0"> <thead> <tr> <th colspan="2"><h3><?php echo $getDateTitle; ?> <?php echo _t('시간대별') . _t('글(포스트) 통계'); ?> (<?php echo number_format(getStatisticsTotalDB($getDate, $getMenu, 0)) . "/" . number_format(getStatisticsTotalDB($getDate, $getMenu, 1)); echo _t('개'); ?> )</h3></th> </tr> </thead> <tbody> <tr> <td> <div class="flash-stic"> <div id="get<?php echo $getMenu; ?> TimeStic"> <?php echo open_flash_chart_object(470, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=bar&grpTypeName=time&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_bar" : "")); ?> </div> </div> </td> <td> <div class="flash-pizza"> <div id="get<?php echo $getMenu; ?> TimePizza"> <?php echo open_flash_chart_object(265, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=pie&grpLinkType=&grpYear=" . $getYear . "&grpTypeName=time&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_pie" : "")); ?> </div> </div> </td> </tr> </tbody> </table> <hr class="hidden" /> <?php } else { if ($getMenu == "comment") { //############################## // 댓글 통계 ################### //############################## if ($getYear == 9999 && !$getMonth) { $getData = array(); $getTags = array(); $getDateTitle = _t('전체 년도별'); $tempData = getStatisticsDB('years', '', $getMenu); foreach ($tempData as $item) { array_push($getData, $item['count']); array_push($getTags, rawurlencode($item['period'] . _t('년'))); } $getData = implode("|", $getData); $getTags = implode("|", $getTags); $getTotal = getStatisticsTotalDB($getDate, $getMenu, 0); ?> <table class="data-inbox" cellspacing="0" cellpadding="0"> <thead> <tr> <th colspan="2"><h3><?php echo $getDateTitle; ?> <?php echo _t('댓글 통계'); ?> (<?php echo number_format(getStatisticsTotalDB($getDate, $getMenu, 0)) . "/" . number_format(getStatisticsTotalDB($getDate, $getMenu, 1)); echo _t('개'); ?> )</h3></th> </tr> </thead> <tbody> <tr> <td> <div class="flash-stic"> <div id="get<?php echo $getMenu; ?> YearStic"> <?php echo open_flash_chart_object(470, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=bar&grpTypeName=&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_bar" : "")); ?> </div> </div> </td> <td> <div class="flash-pizza"> <div id="get<?php echo $getMenu; ?> YearPizza"> <?php echo open_flash_chart_object(265, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=pie&grpLinkType=&grpYear=" . $getYear . "&grpTypeName=&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_pie" : "")); ?> </div> </div> </td> </tr> </tbody> </table> <?php } $getData = array(); $getTags = array(); if ($getYear == 9999) { $getDateTitle = !$getMonth ? _t('전체') : _t('전체') . ' ' . $getMonth . _t('월'); } else { $getDateTitle = !$getMonth ? $getYear . _t('년도') : $getYear . _t('년도') . $getMonth . _t('월'); } if (!$getMonth) { $lastCount = 12; $textValue = _t('월'); } else { $lastCount = $getYear == 9999 ? 31 : date('t', mktime(0, 0, 0, $getMonth, 1, $getYear)); $textValue = ""; } for ($i = 1; $i <= $lastCount; $i++) { $tempData = getStatisticsDB($getDate, $i, $getMenu); if ($tempData) { array_push($getData, $tempData['count']); array_push($getTags, rawurlencode($i . $textValue)); } } $getData = implode("|", $getData); $getTags = implode("|", $getTags); $getTotal = getStatisticsTotalDB($getDate, $getMenu, 0); ?> <table class="data-inbox" cellspacing="0" cellpadding="0"> <thead> <tr> <th colspan="2"><h3><?php echo $getDateTitle; ?> <?php echo _t('댓글 통계'); ?> (<?php echo number_format(getStatisticsTotalDB($getDate, $getMenu, 0)) . "/" . number_format(getStatisticsTotalDB($getDate, $getMenu, 1)); echo _t('개'); ?> )</h3></th> </tr> </thead> <tbody> <tr> <td> <div class="flash-stic"> <div id="get<?php echo $getMenu; ?> Stic"> <?php echo open_flash_chart_object(470, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=bar&grpTypeName=&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_bar" : "")); ?> </div> </div> </td> <td> <div class="flash-pizza"> <div id="get<?php echo $getMenu; ?> Pizza"> <?php echo open_flash_chart_object(265, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=pie&grpLinkType=&grpYear=" . $getYear . "&grpTypeName=&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_pie" : "")); ?> </div> </div> </td> </tr> </tbody> </table> <?php if (!$getMonth) { $getData = array(); $getTags = array(); for ($i = 1; $i <= 4; $i++) { $tempData = getQuartersStatistics($getYear, $i, $getMenu); if ($tempData) { array_push($getData, $tempData); array_push($getTags, rawurlencode($i . "/4 " . _t('분기'))); } } $getData = implode("|", $getData); $getTags = implode("|", $getTags); $getTotal = getStatisticsTotalDB($getDate, $getMenu, 0); ?> <table class="data-inbox" cellspacing="0" cellpadding="0"> <thead> <tr> <th colspan="2"><h3><?php echo $getDateTitle; ?> <?php echo _t('분기별') . _t('댓글 통계'); ?> (<?php echo number_format(getStatisticsTotalDB($getDate, $getMenu, 0)) . "/" . number_format(getStatisticsTotalDB($getDate, $getMenu, 1)); echo _t('개'); ?> )</h3></th> </tr> </thead> <tbody> <tr> <td> <div class="flash-stic"> <div id="get<?php echo $getMenu; ?> QuartersStic"> <?php echo open_flash_chart_object(470, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=bar&grpTypeName=&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_bar" : "")); ?> </div> </div> </td> <td> <div class="flash-pizza"> <div id="get<?php echo $getMenu; ?> QuartersPizza"> <?php echo open_flash_chart_object(265, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=pie&grpLinkType=&grpYear=" . $getYear . "&grpTypeName=&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_pie" : "")); ?> </div> </div> </td> </tr> </tbody> </table> <?php } $getData = array(); $getTags = array(); $tempData = getCommentEntryMaxCount($getDate); foreach ($tempData as $item) { array_push($getData, $item['comments']); array_push($getTags, $item['id']); } $getData = implode("|", $getData); $getTags = implode("|", $getTags); $getTotal = getStatisticsTotalDB($getDate, $getMenu, 0); ?> <table class="data-inbox" cellspacing="0" cellpadding="0"> <thead> <tr> <th colspan="2"><h3><?php echo $getDateTitle; ?> <?php echo _t('댓글 TOP 10') . _t('글 통계'); ?> (<?php echo number_format(getStatisticsTotalDB($getDate, $getMenu, 0)) . "/" . number_format(getStatisticsTotalDB($getDate, $getMenu, 1)); echo _t('개'); ?> )</h3></th> </tr> </thead> <tbody> <tr> <td> <div class="flash-stic"> <div id="get<?php echo $getMenu; ?> EntryMaxStic"> <?php echo open_flash_chart_object(470, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=bar&grpTypeName=cmmax&grpXLabelType=2&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_bar" : "")); ?> </div> </div> </td> <td> <div class="flash-pizza"> <div id="get<?php echo $getMenu; ?> EntryMaxPizza"> <?php echo open_flash_chart_object(265, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=pie&grpLinkType=entry&grpYear=" . $getYear . "&grpTypeName=cmmax&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_pie" : "")); ?> </div> </div> </td> </tr> </tbody> </table> <?php $getData = array(); $getTags = array(); $tempData = getCommenterMaxCount($getDate, $getMenu); foreach ($tempData as $item) { array_push($getData, $item['namecnt']); array_push($getTags, rawurlencode($item['name'])); } $getData = implode("|", $getData); $getTags = implode("|", $getTags); $getTotal = getStatisticsTotalDB($getDate, $getMenu, 0); ?> <table class="data-inbox" cellspacing="0" cellpadding="0"> <thead> <tr> <th colspan="2"><h3><?php echo $getDateTitle; ?> <?php echo _t('댓글자 TOP 10') . _t('통계'); ?> (<?php echo number_format(getStatisticsTotalDB($getDate, $getMenu, 0)) . "/" . number_format(getStatisticsTotalDB($getDate, $getMenu, 1)); echo _t('개'); ?> )</h3></th> </tr> </thead> <tbody> <tr> <td> <div class="flash-stic"> <div id="get<?php echo $getMenu; ?> erMaxStic"> <?php echo open_flash_chart_object(470, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=bar&grpTypeName=commenter&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_bar" : "")); ?> </div> </div> </td> <td> <div class="flash-pizza"> <div id="get<?php echo $getMenu; ?> erMaxPizza"> <?php echo open_flash_chart_object(265, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=pie&grpLinkType=&grpYear=" . $getYear . "&grpTypeName=&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_pie" : "")); ?> </div> </div> </td> </tr> </tbody> </table> <?php $getData = array(); $getTags = array(); for ($i = 0; $i <= 23; $i++) { $tempData = getTimeStatistics($getDate, $i, $getMenu); if ($tempData) { if ($tempData['period'] == "00") { $tempData['period'] = str_replace("00", "0", $tempData['period']); } else { if (substr($tempData['period'], 0, 1) == "0") { $tempData['period'] = str_replace("0", "", $tempData['period']); } } array_push($getData, $tempData['count']); array_push($getTags, $tempData['period']); } } $getData = implode("|", $getData); $getTags = implode("|", $getTags); $getTotal = getStatisticsTotalDB($getDate, $getMenu, 0); ?> <table class="data-inbox" cellspacing="0" cellpadding="0"> <thead> <tr> <th colspan="2"><h3><?php echo $getDateTitle; ?> <?php echo _t('시간대별') . _t('댓글 통계'); ?> (<?php echo number_format(getStatisticsTotalDB($getDate, $getMenu, 0)) . "/" . number_format(getStatisticsTotalDB($getDate, $getMenu, 1)); echo _t('개'); ?> )</h3></th> </tr> </thead> <tbody> <tr> <td> <div class="flash-stic"> <div id="get<?php echo $getMenu; ?> TimeStic"> <?php echo open_flash_chart_object(470, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=bar&grpTypeName=time&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_bar" : "")); ?> </div> </div> </td> <td> <div class="flash-pizza"> <div id="get<?php echo $getMenu; ?> TimePizza"> <?php echo open_flash_chart_object(265, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=pie&grpLinkType=&grpYear=" . $getYear . "&grpTypeName=time&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_pie" : "")); ?> </div> </div> </td> </tr> </tbody> </table> <hr class="hidden" /> <?php } else { if ($getMenu == "commenter") { //############################## // 댓글 작성자 목록 ############ //############################## if ($getYear == 9999) { $getDateTitle = !$getMonth ? _t('전체') : _t('전체') . ' ' . $getMonth . _t('월'); } else { $getDateTitle = !$getMonth ? $getYear . _t('년도') : $getYear . _t('년도') . $getMonth . _t('월'); } $tempData = getCommenterMaxCount($getDate, $getMenu); $tempAllCount = getCommenterMaxCount(9999, $getMenu); ?> <table class="data-inbox" cellspacing="0" cellpadding="0"> <thead> <tr> <th colspan="2"><h3><?php echo $getDateTitle; ?> <?php echo _t('댓글') . _t('작성자') . _t('목록'); ?> (<?php echo number_format(count($tempData)) . "/" . number_format(count($tempAllCount)); echo _t('명'); ?> )</h3></th> </tr> </thead> <tbody> <tr> <td> <div id="commenterList"> <?php $i = 0; foreach ($tempData as $item) { $guestname = htmlspecialchars(UTF8::lessenAsEm($item['name'], 20)); if (!empty($item['home'])) { $homepage = ereg('^[[:alnum:]]+:', $item['home']) ? htmlspecialchars($item['home']) : "http://" . htmlspecialchars($item['home']); $guestname = "<a href=\"{$homepage}\" onclick=\"window.open(this.href); return false;\">{$guestname}</a>"; } $count = "<span class=\"count\">(" . $item['namecnt'] . ")</span>"; ?> <div class="userlist"><?php echo $guestname; ?> <?php echo $count; ?> </div><?php if ($i % 4 == 3) { echo "<div class=\"clear\"></div>\n"; } $i++; } ?> </div> </td> </tr> </tbody> </table> <hr class="hidden" /> <?php } else { if ($getMenu == "trackback") { //############################## // 역인글 통계 ################# //############################## if ($getYear == 9999 && !$getMonth) { $getData = array(); $getTags = array(); $getDateTitle = _t('전체 년도별'); $tempData = getStatisticsDB('years', '', $getMenu); foreach ($tempData as $item) { array_push($getData, $item['count']); array_push($getTags, rawurlencode($item['period'] . _t('년'))); } $getData = implode("|", $getData); $getTags = implode("|", $getTags); $getTotal = getStatisticsTotalDB($getDate, $getMenu, 0); ?> <table class="data-inbox" cellspacing="0" cellpadding="0"> <thead> <tr> <th colspan="2"><h3><?php echo $getDateTitle; ?> 트랙백 통계(<?php echo number_format(getStatisticsTotalDB($getDate, $getMenu, 0)) . "/" . number_format(getStatisticsTotalDB($getDate, $getMenu, 1)); echo _t('개'); ?> )</h3></th> </tr> </thead> <tbody> <tr> <td> <div class="flash-stic"> <div id="get<?php echo $getMenu; ?> YearStic"> <?php echo open_flash_chart_object(470, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=bar&grpTypeName=&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_bar" : "")); ?> </div> </div> </td> <td> <div class="flash-pizza"> <div id="get<?php echo $getMenu; ?> YearPizza"> <?php echo open_flash_chart_object(265, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=pie&grpLinkType=&grpYear=" . $getYear . "&grpTypeName=&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_pie" : "")); ?> </div> </div> </td> </tr> </tbody> </table> <?php } $getData = array(); $getTags = array(); if ($getYear == 9999) { $getDateTitle = !$getMonth ? _t('전체') : _t('전체') . ' ' . $getMonth . _t('월'); } else { $getDateTitle = !$getMonth ? $getYear . _t('년도') : $getYear . _t('년도') . $getMonth . _t('월'); } if (!$getMonth) { $lastCount = 12; $textValue = _t('월'); } else { $lastCount = $getYear == 9999 ? 31 : date('t', mktime(0, 0, 0, $getMonth, 1, $getYear)); $textValue = ""; } for ($i = 1; $i <= $lastCount; $i++) { $tempData = getStatisticsDB($getDate, $i, $getMenu); if ($tempData) { array_push($getData, $tempData['count']); array_push($getTags, rawurlencode($i . $textValue)); } } $getData = implode("|", $getData); $getTags = implode("|", $getTags); $getTotal = getStatisticsTotalDB($getDate, $getMenu, 0); ?> <table class="data-inbox" cellspacing="0" cellpadding="0"> <thead> <tr> <th colspan="2"><h3><?php echo $getDateTitle; ?> <?php echo _t('트랙백') . _t('통계'); ?> (<?php echo number_format(getStatisticsTotalDB($getDate, $getMenu, 0)) . "/" . number_format(getStatisticsTotalDB($getDate, $getMenu, 1)); echo _t('개'); ?> )</h3></th> </tr> </thead> <tbody> <tr> <td> <div class="flash-stic"> <div id="get<?php echo $getMenu; ?> Stic"> <?php echo open_flash_chart_object(470, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=bar&grpTypeName=&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_bar" : "")); ?> </div> </div> </td> <td> <div class="flash-pizza"> <div id="get<?php echo $getMenu; ?> Pizza"> <?php echo open_flash_chart_object(265, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=pie&grpLinkType=&grpYear=" . $getYear . "&grpTypeName=&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_pie" : "")); ?> </div> </div> </td> </tr> </tbody> </table> <?php if (!$getMonth) { $getData = array(); $getTags = array(); for ($i = 1; $i <= 4; $i++) { $tempData = getQuartersStatistics($getYear, $i, $getMenu); if ($tempData) { array_push($getData, $tempData); array_push($getTags, rawurlencode($i . "/4 " . _t('분기'))); } } $getData = implode("|", $getData); $getTags = implode("|", $getTags); $getTotal = getStatisticsTotalDB($getDate, $getMenu, 0); ?> <table class="data-inbox" cellspacing="0" cellpadding="0"> <thead> <tr> <th colspan="2"><h3><?php echo $getDateTitle; ?> <?php echo _t('분기별') . _t('트랙백') . _t('통계'); ?> (<?php echo number_format(getStatisticsTotalDB($getDate, $getMenu, 0)) . "/" . number_format(getStatisticsTotalDB($getDate, $getMenu, 1)); echo _t('개'); ?> )</h3></th> </tr> </thead> <tbody> <tr> <td> <div class="flash-stic"> <div id="get<?php echo $getMenu; ?> QuartersStic"> <?php echo open_flash_chart_object(470, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=bar&grpTypeName=&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_bar" : "")); ?> </div> </div> </td> <td> <div class="flash-pizza"> <div id="get<?php echo $getMenu; ?> QuartersPizza"> <?php echo open_flash_chart_object(265, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=pie&grpLinkType=&grpYear=" . $getYear . "&grpTypeName=&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_pie" : "")); ?> </div> </div> </td> </tr> </tbody> </table> <?php } $getData = array(); $getTags = array(); $getLink = array(); $tempData = getTrackbackEntryMaxCount($getDate); foreach ($tempData as $item) { array_push($getData, $item['trackbacks']); array_push($getTags, $item['id']); } $getData = implode("|", $getData); $getTags = implode("|", $getTags); $getTotal = getStatisticsTotalDB($getDate, $getMenu, 0); ?> <table class="data-inbox" cellspacing="0" cellpadding="0"> <thead> <tr> <th colspan="2"><h3><?php echo $getDateTitle; ?> <?php echo _t('트랙백') . _t('받은 TOP 10') . _t('글 통계'); ?> (<?php echo number_format(getStatisticsTotalDB($getDate, $getMenu, 0)) . "/" . number_format(getStatisticsTotalDB($getDate, $getMenu, 1)); echo _t('개'); ?> )</h3></th> </tr> </thead> <tbody> <tr> <td> <div class="flash-stic"> <div id="get<?php echo $getMenu; ?> EntryMaxStic"> <?php echo open_flash_chart_object(470, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=bar&grpTypeName=tbmax&grpXLabelType=2&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_bar" : "")); ?> </div> </div> </td> <td> <div class="flash-pizza"> <div id="get<?php echo $getMenu; ?> EntryMaxPizza"> <?php echo open_flash_chart_object(265, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=pie&grpLinkType=entry&grpYear=" . $getYear . "&grpTypeName=tbmax&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_pie" : "")); ?> </div> </div> </td> </tr> </tbody> </table> <?php $getData = array(); $getTags = array(); $tempData = getTrackbackCallEntryMaxCount($getDate); foreach ($tempData as $item) { array_push($getData, $item['trackbacklogs']); array_push($getTags, $item['id']); } $getData = implode("|", $getData); $getTags = implode("|", $getTags); $getTotal = getStatisticsTotalDB($getDate, $getMenu, 0); ?> <table class="data-inbox" cellspacing="0" cellpadding="0"> <thead> <tr> <th colspan="2"><h3><?php echo $getDateTitle; ?> <?php echo _t('트랙백') . _t('보낸 TOP 10') . _t('글 통계'); ?> (<?php echo number_format(getStatisticsTotalDB($getDate, $getMenu, 0)) . "/" . number_format(getStatisticsTotalDB($getDate, $getMenu, 1)); echo _t('개'); ?> )</h3></th> </tr> </thead> <tbody> <tr> <td> <div class="flash-stic"> <div id="get<?php echo $getMenu; ?> CallEntryMaxStic"> <?php echo open_flash_chart_object(470, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=bar&grpTypeName=cmmax&grpXLabelType=2&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_bar" : "")); ?> </div> </div> </td> <td> <div class="flash-pizza"> <div id="get<?php echo $getMenu; ?> CallEntryMaxPizza"> <?php echo open_flash_chart_object(265, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=pie&grpLinkType=entry&grpYear=" . $getYear . "&grpTypeName=cmmax&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_pie" : "")); ?> </div> </div> </td> </tr> </tbody> </table> <?php $getData = array(); $getTags = array(); for ($i = 0; $i <= 23; $i++) { $tempData = getTimeStatistics($getDate, $i, $getMenu); if ($tempData) { if ($tempData['period'] == "00") { $tempData['period'] = str_replace("00", "0", $tempData['period']); } else { if (substr($tempData['period'], 0, 1) == "0") { $tempData['period'] = str_replace("0", "", $tempData['period']); } } array_push($getData, $tempData['count']); array_push($getTags, $tempData['period']); } } $getData = implode("|", $getData); $getTags = implode("|", $getTags); $getTotal = getStatisticsTotalDB($getDate, $getMenu, 0); ?> <table class="data-inbox" cellspacing="0" cellpadding="0"> <thead> <tr> <th colspan="2"><h3><?php echo $getDateTitle; ?> <?php echo _t('시간대별') . _t('트랙백') . _t('통계'); ?> (<?php echo number_format(getStatisticsTotalDB($getDate, $getMenu, 0)) . "/" . number_format(getStatisticsTotalDB($getDate, $getMenu, 1)); echo _t('개'); ?> )</h3></th> </tr> </thead> <tbody> <tr> <td> <div class="flash-stic"> <div id="get<?php echo $getMenu; ?> TimeStic"> <?php echo open_flash_chart_object(470, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=bar&grpTypeName=time&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_bar" : "")); ?> </div> </div> </td> <td> <div class="flash-pizza"> <div id="get<?php echo $getMenu; ?> TimePizza"> <?php echo open_flash_chart_object(265, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=pie&grpLinkType=&grpYear=" . $getYear . "&grpTypeName=time&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_pie" : "")); ?> </div> </div> </td> </tr> </tbody> </table> <hr class="hidden" /> <?php } else { if ($getMenu == "guestbook") { //############################## // 방명록 통계 ################# //############################## if ($getYear == 9999 && !$getMonth) { $getData = array(); $getTags = array(); $getDateTitle = _t('전체 년도별'); $tempData = getStatisticsDB('years', '', $getMenu); foreach ($tempData as $item) { array_push($getData, $item['count']); array_push($getTags, rawurlencode($item['period'] . _t('년'))); } $getData = implode("|", $getData); $getTags = implode("|", $getTags); $getTotal = getStatisticsTotalDB($getDate, $getMenu, 0); ?> <table class="data-inbox" cellspacing="0" cellpadding="0"> <thead> <tr> <th colspan="2"><h3><?php echo $getDateTitle; ?> <?php echo _t('방명록') . _t('통계'); ?> (<?php echo number_format(getStatisticsTotalDB($getDate, $getMenu, 0)) . "/" . number_format(getStatisticsTotalDB($getDate, $getMenu, 1)); echo _t('개'); ?> )</h3></th> </tr> </thead> <tbody> <tr> <td> <div class="flash-stic"> <div id="get<?php echo $getMenu; ?> YearStic"> <?php echo open_flash_chart_object(470, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=bar&grpTypeName=&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_bar" : "")); ?> </div> </div> </td> <td> <div class="flash-pizza"> <div id="get<?php echo $getMenu; ?> YearPizza"> <?php echo open_flash_chart_object(265, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=pie&grpLinkType=&grpYear=" . $getYear . "&grpTypeName=&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_pie" : "")); ?> </div> </div> </td> </tr> </tbody> </table> <?php } $getData = array(); $getTags = array(); if ($getYear == 9999) { $getDateTitle = !$getMonth ? _t('전체') : _t('전체') . ' ' . $getMonth . _t('월'); } else { $getDateTitle = !$getMonth ? $getYear . _t('년도') : $getYear . _t('년도') . $getMonth . _t('월'); } if (!$getMonth) { $lastCount = 12; $textValue = _t('월'); } else { $lastCount = $getYear == 9999 ? 31 : date('t', mktime(0, 0, 0, $getMonth, 1, $getYear)); $textValue = ""; } for ($i = 1; $i <= $lastCount; $i++) { $tempData = getStatisticsDB($getDate, $i, $getMenu); if ($tempData) { array_push($getData, $tempData['count']); array_push($getTags, rawurlencode($i . $textValue)); } } $getData = implode("|", $getData); $getTags = implode("|", $getTags); $getTotal = getStatisticsTotalDB($getDate, $getMenu, 0); ?> <table class="data-inbox" cellspacing="0" cellpadding="0"> <thead> <tr> <th colspan="2"><h3><?php echo $getDateTitle; ?> <?php echo _t('방명록') . _t('통계'); ?> (<?php echo number_format(getStatisticsTotalDB($getDate, $getMenu, 0)) . "/" . number_format(getStatisticsTotalDB($getDate, $getMenu, 1)); echo _t('개'); ?> )</h3></th> </tr> </thead> <tbody> <tr> <td> <div class="flash-stic"> <div id="get<?php echo $getMenu; ?> Stic"> <?php echo open_flash_chart_object(470, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=bar&grpTypeName=&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_bar" : "")); ?> </div> </div> </td> <td> <div class="flash-pizza"> <div id="get<?php echo $getMenu; ?> Pizza"> <?php echo open_flash_chart_object(265, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=pie&grpLinkType=&grpYear=" . $getYear . "&grpTypeName=&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_pie" : "")); ?> </div> </div> </td> </tr> </tbody> </table> <?php if (!$getMonth) { $getData = array(); $getTags = array(); for ($i = 1; $i <= 4; $i++) { $tempData = getQuartersStatistics($getYear, $i, $getMenu); if ($tempData) { array_push($getData, $tempData); array_push($getTags, rawurlencode($i . "/4 " . _t('분기'))); } } $getData = implode("|", $getData); $getTags = implode("|", $getTags); $getTotal = getStatisticsTotalDB($getDate, $getMenu, 0); ?> <table class="data-inbox" cellspacing="0" cellpadding="0"> <thead> <tr> <th colspan="2"><h3><?php echo $getDateTitle; ?> <?php echo _t('분기별') . _t('방명록') . _t('통계'); ?> (<?php echo number_format(getStatisticsTotalDB($getDate, $getMenu, 0)) . "/" . number_format(getStatisticsTotalDB($getDate, $getMenu, 1)); echo _t('개'); ?> )</h3></th> </tr> </thead> <tbody> <tr> <td> <div class="flash-stic"> <div id="get<?php echo $getMenu; ?> QuartersStic"> <?php echo open_flash_chart_object(470, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=bar&grpTypeName=&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_bar" : "")); ?> </div> </div> </td> <td> <div class="flash-pizza"> <div id="get<?php echo $getMenu; ?> QuartersPizza"> <?php echo open_flash_chart_object(265, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=pie&grpLinkType=&grpYear=" . $getYear . "&grpTypeName=&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_pie" : "")); ?> </div> </div> </td> </tr> </tbody> </table> <?php } $getData = array(); $getTags = array(); $tempData = getCommenterMaxCount($getDate, $getMenu); foreach ($tempData as $item) { array_push($getData, $item['namecnt']); array_push($getTags, rawurlencode($item['name'])); } $getData = implode("|", $getData); $getTags = implode("|", $getTags); $getTotal = getStatisticsTotalDB($getDate, $getMenu, 0); ?> <table class="data-inbox" cellspacing="0" cellpadding="0"> <thead> <tr> <th colspan="2"><h3><?php echo $getDateTitle; ?> <?php echo _t('방명록') . _t('댓글자 TOP 10') . _t('통계'); ?> (<?php echo number_format(getStatisticsTotalDB($getDate, $getMenu, 0)) . "/" . number_format(getStatisticsTotalDB($getDate, $getMenu, 1)); echo _t('개'); ?> )</h3></th> </tr> </thead> <tbody> <tr> <td> <div class="flash-stic"> <div id="get<?php echo $getMenu; ?> CommenterMaxStic"> <?php echo open_flash_chart_object(470, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=bar&grpTypeName=commenter&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_bar" : "")); ?> </div> </div> </td> <td> <div class="flash-pizza"> <div id="get<?php echo $getMenu; ?> CommenterMaxPizza"> <?php echo open_flash_chart_object(265, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=pie&grpLinkType=&grpYear=" . $getYear . "&grpTypeName=&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_pie" : "")); ?> </div> </div> </td> </tr> </tbody> </table> <?php $getData = array(); $getTags = array(); for ($i = 0; $i <= 23; $i++) { $tempData = getTimeStatistics($getDate, $i, $getMenu); if ($tempData) { if ($tempData['period'] == "00") { $tempData['period'] = str_replace("00", "0", $tempData['period']); } else { if (substr($tempData['period'], 0, 1) == "0") { $tempData['period'] = str_replace("0", "", $tempData['period']); } } array_push($getData, $tempData['count']); array_push($getTags, $tempData['period']); } } $getData = implode("|", $getData); $getTags = implode("|", $getTags); $getTotal = getStatisticsTotalDB($getDate, $getMenu, 0); ?> <table class="data-inbox" cellspacing="0" cellpadding="0"> <thead> <tr> <th colspan="2"><h3><?php echo $getDateTitle; ?> <?php echo _t('시간대별') . _t('방명록') . _t('통계'); ?> (<?php echo number_format(getStatisticsTotalDB($getDate, $getMenu, 0)) . "/" . number_format(getStatisticsTotalDB($getDate, $getMenu, 1)); echo _t('개'); ?> )</h3></th> </tr> </thead> <tbody> <tr> <td> <div class="flash-stic"> <div id="get<?php echo $getMenu; ?> TimeStic"> <?php echo open_flash_chart_object(470, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=bar&grpTypeName=time&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_bar" : "")); ?> </div> </div> </td> <td> <div class="flash-pizza"> <div id="get<?php echo $getMenu; ?> TimePizza"> <?php echo open_flash_chart_object(265, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=pie&grpLinkType=&grpYear=" . $getYear . "&grpTypeName=time&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_pie" : "")); ?> </div> </div> </td> </tr> </tbody> </table> <hr class="hidden" /> <?php } else { if ($getMenu == "guestbookcommenter") { //############################## // 방명록 작성자 목록 ############ //############################## if ($getYear == 9999) { $getDateTitle = !$getMonth ? _t('전체') : _t('전체') . ' ' . $getMonth . _t('월'); } else { $getDateTitle = !$getMonth ? $getYear . _t('년도') : $getYear . _t('년도') . $getMonth . _t('월'); } $tempData = getCommenterMaxCount($getDate, $getMenu); $tempAllCount = getCommenterMaxCount(9999, $getMenu); ?> <table class="data-inbox" cellspacing="0" cellpadding="0"> <thead> <tr> <th colspan="2"><h3><?php echo $getDateTitle; ?> <?php echo _t('방명록') . _t('작성자') . _t('목록'); ?> (<?php echo number_format(count($tempData)) . "/" . number_format(count($tempAllCount)); ?> 명)</h3></th> </tr> </thead> <tbody> <tr> <td> <div id="commenterList"> <?php $i = 0; foreach ($tempData as $item) { $guestname = htmlspecialchars(UTF8::lessenAsEm($item['name'], 20)); if (!empty($item['home'])) { $homepage = ereg('^[[:alnum:]]+:', $item['home']) ? htmlspecialchars($item['home']) : "http://" . htmlspecialchars($item['home']); $guestname = "<a href=\"{$homepage}\" onclick=\"window.open(this.href); return false;\">{$guestname}</a>"; } $count = "<span class=\"count\">(" . $item['namecnt'] . ")</span>"; ?> <div class="userlist"><?php echo $guestname; ?> <?php echo $count; ?> </div><?php if ($i % 4 == 3) { echo "<div class=\"clear\"></div>\n"; } $i++; } ?> </div> </td> </tr> </tbody> </table> <hr class="hidden" /> <?php } else { if ($getMenu == "tag") { //############################## // 태그 통계 ################### //############################## $getDateTitle = !$getMonth ? $getYear . _t('년도') : $getYear . _t('년도') . $getMonth . _t('월'); $getData = array(); $getTags = array(); $tempData = getTagMaxCount(); foreach ($tempData as $item) { array_push($getData, $item['count']); array_push($getTags, rawurlencode($item['name'])); } $getData = implode("|", $getData); $getTags = implode("|", $getTags); $getTotal = getStatisticsTotalDB($getDate, $getMenu, 1); ?> <table class="data-inbox" cellspacing="0" cellpadding="0"> <thead> <tr> <th colspan="2"><h3><?php echo _t('인기') . _t('태그 TOP 10') . _t('통계'); ?> (<?php echo number_format(getStatisticsTotalDB($getDate, $getMenu, 1)); echo _t('개'); ?> )</h3></th> </tr> </thead> <tbody> <tr> <td> <div class="flash-stic"> <div id="get<?php echo $getMenu; ?> MaxStic"> <?php echo open_flash_chart_object(470, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=bar&grpTypeName=tag&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_bar" : "")); ?> </div> </div> </td> <td> <div class="flash-pizza"> <div id="get<?php echo $getMenu; ?> MaxPizza"> <?php echo open_flash_chart_object(265, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=pie&grpLinkType=tag&grpYear=" . $getYear . "&grpTypeName=&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_pie" : "")); ?> </div> </div> </td> </tr> </tbody> </table> <?php $getData = array(); $getTags = array(); if ($getYear == 9999) { $getDateTitle = !$getMonth ? _t('전체') : _t('전체') . ' ' . $getMonth . _t('월'); } else { $getDateTitle = !$getMonth ? $getYear . _t('년도') : $getYear . _t('년도') . $getMonth . _t('월'); } $tempData = getTagEntryMaxCount($getDate, 1); foreach ($tempData as $item) { array_push($getData, $item['count']); array_push($getTags, $item['id']); } $getData = implode("|", $getData); $getTags = implode("|", $getTags); $getTotal = getStatisticsTotalDB($getDate, $getMenu, 0); ?> <table class="data-inbox" cellspacing="0" cellpadding="0"> <thead> <tr> <th colspan="2"><h3><?php echo $getDateTitle; ?> <?php echo _t('태그') . _t('걸린 TOP 10') . _t('글 통계'); ?> (<?php echo number_format(getTagEntryMaxCount($getDate, 0)) . "/" . number_format(getStatisticsTotalDB($getDate, $getMenu, 1)); echo _t('개'); ?> )</h3></th> </tr> </thead> <tbody> <tr> <td> <div class="flash-stic"> <div id="get<?php echo $getMenu; ?> EntryMaxStic"> <?php echo open_flash_chart_object(470, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=bar&grpTypeName=tagmax&grpXLabelType=2&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_bar" : "")); ?> </div> </div> </td> <td> <div class="flash-pizza"> <div id="get<?php echo $getMenu; ?> EntryMaxPizza"> <?php echo open_flash_chart_object(265, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=pie&grpLinkType=entry&grpYear=" . $getYear . "&grpTypeName=tagmax&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_pie" : "")); ?> </div> </div> </td> </tr> </tbody> </table> <hr class="hidden" /> <?php } else { if ($getMenu == "visit") { //############################## // 방문자 통계 ################# //############################## if ($getYear == 9999 && !$getMonth) { $getData = array(); $getTags = array(); $getDateTitle = _t('전체 년도별'); $tempData = getStatisticsDB('years', '', $getMenu); foreach ($tempData as $item) { array_push($getData, $item['count']); array_push($getTags, rawurlencode($item['period'] . _t('년'))); } $getData = implode("|", $getData); $getTags = implode("|", $getTags); $getTotal = getStatisticsTotalDB($getDate, $getMenu, 0); ?> <table class="data-inbox" cellspacing="0" cellpadding="0"> <thead> <tr> <th colspan="2"><h3><?php echo $getDateTitle; ?> <?php echo _t('방문자') . _t('통계'); ?> (<?php echo number_format(getStatisticsTotalDB($getDate, $getMenu, 0)) . "/" . number_format(getStatisticsTotalDB($getDate, $getMenu, 1)); echo _t('개'); ?> )</h3></th> </tr> </thead> <tbody> <tr> <td> <div class="flash-stic"> <div id="get<?php echo $getMenu; ?> YearStic"> <?php echo open_flash_chart_object(470, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=bar&grpTypeName=&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_bar" : "")); ?> </div> </div> </td> <td> <div class="flash-pizza"> <div id="get<?php echo $getMenu; ?> YearPizza"> <?php echo open_flash_chart_object(265, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=pie&grpLinkType=&grpYear=" . $getYear . "&grpTypeName=&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_pie" : "")); ?> </div> </div> </td> </tr> </tbody> </table> <?php } $getData = array(); $getTags = array(); if ($getYear == 9999) { $getDateTitle = !$getMonth ? _t('전체') : _t('전체') . ' ' . $getMonth . _t('월'); } else { $getDateTitle = !$getMonth ? $getYear . _t('년도') : $getYear . _t('년도') . $getMonth . _t('월'); } if (!$getMonth) { $lastCount = 12; $textValue = _t('월'); } else { $lastCount = $getYear == 9999 ? 31 : date('t', mktime(0, 0, 0, $getMonth, 1, $getYear)); $textValue = ""; } for ($i = 1; $i <= $lastCount; $i++) { $tempData = getStatisticsDB($getDate, $i, $getMenu); if ($tempData) { array_push($getData, $tempData['count']); array_push($getTags, rawurlencode($i . $textValue)); } } $getData = implode("|", $getData); $getTags = implode("|", $getTags); $getTotal = getStatisticsTotalDB($getDate, $getMenu, 0); ?> <table class="data-inbox" cellspacing="0" cellpadding="0"> <thead> <tr> <th colspan="2"><h3><?php echo $getDateTitle; ?> <?php echo _t('방문자') . _t('통계'); ?> (<?php echo number_format(getStatisticsTotalDB($getDate, $getMenu, 0)) . "/" . number_format(getStatisticsTotalDB($getDate, $getMenu, 1)); echo _t('개'); ?> )</h3></th> </tr> </thead> <tbody> <tr> <td> <div class="flash-stic"> <div id="get<?php echo $getMenu; ?> Stic"> <?php echo open_flash_chart_object(470, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=bar&grpTypeName=&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_bar" : "")); ?> </div> </div> </td> <td> <div class="flash-pizza"> <div id="get<?php echo $getMenu; ?> Pizza"> <?php echo open_flash_chart_object(265, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=pie&grpLinkType=&grpYear=" . $getYear . "&grpTypeName=&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_pie" : "")); ?> </div> </div> </td> </tr> </tbody> </table> <?php if (!$getMonth) { $getData = array(); $getTags = array(); for ($i = 1; $i <= 4; $i++) { $tempData = getQuartersStatistics($getYear, $i, $getMenu); if ($tempData) { array_push($getData, $tempData); array_push($getTags, rawurlencode($i . "/4 " . _t('분기'))); } } $getData = implode("|", $getData); $getTags = implode("|", $getTags); $getTotal = getStatisticsTotalDB($getDate, $getMenu, 0); ?> <table class="data-inbox" cellspacing="0" cellpadding="0"> <thead> <tr> <th colspan="2"><h3><?php echo $getDateTitle; ?> <?php echo _t('분기별') . _t('방문자') . _t('통계'); ?> (<?php echo number_format(getStatisticsTotalDB($getDate, $getMenu, 0)) . "/" . number_format(getStatisticsTotalDB($getDate, $getMenu, 1)); echo _t('개'); ?> )</h3></th> </tr> </thead> <tbody> <tr> <td> <div class="flash-stic"> <div id="get<?php echo $getMenu; ?> QuartersStic"> <?php echo open_flash_chart_object(470, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=bar&grpTypeName=&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_bar" : "")); ?> </div> </div> </td> <td> <div class="flash-pizza"> <div id="get<?php echo $getMenu; ?> QuartersPizza"> <?php echo open_flash_chart_object(265, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=pie&grpLinkType=&grpYear=" . $getYear . "&grpTypeName=&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_pie" : "")); ?> </div> </div> </td> </tr> </tbody> </table> <hr class="hidden" /> <hr class="hidden" /> <?php } } else { if ($getMenu == "referer") { //############################## // 리퍼러 통계 ################# //############################## $getData = array(); $getTags = array(); $tempData = getRefererMaxCount(); foreach ($tempData as $item) { array_push($getData, $item['count']); array_push($getTags, rawurlencode($item['host'])); } $getData = implode("|", $getData); $getTags = implode("|", $getTags); $getTotal = getStatisticsTotalDB($getDate, $getMenu, 1); ?> <table class="data-inbox" cellspacing="0" cellpadding="0"> <thead> <tr> <th colspan="2"><h3><?php echo _t('리퍼러') . _t('TOP 10') . _t('통계'); ?> (<?php echo number_format(getStatisticsTotalDB($getDate, $getMenu, 1)); echo _t('개'); ?> )</h3></th> </tr> </thead> <tbody> <tr> <td> <div class="flash-stic"> <div id="get<?php echo $getMenu; ?> MaxStic"> <?php echo open_flash_chart_object(470, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=bar&grpTypeName=refer&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_bar" : "")); ?> </div> </div> </td> <td> <div class="flash-pizza"> <div id="get<?php echo $getMenu; ?> MaxPizza"> <?php echo open_flash_chart_object(265, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=pie&grpLinkType=&grpYear=" . $getYear . "&grpTypeName=&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_pie" : "")); ?> </div> </div> </td> </tr> </tbody> </table> <?php $getData = array(); $getTags = array(); $getDuplicate = array(); $beforCount = ""; $tempData = getRefererKeywordStatistics(); foreach ($tempData as $item) { if ($item['count'] != $beforCount) { $beforCount = $item['count']; } else { array_push($getDuplicate, $item['count']); } } $getDuplicate = array_count_values($getDuplicate); $beforCount = ""; foreach ($tempData as $item) { if ($item['count'] != $beforCount && $item['rank'] < 11) { array_push($getData, $item['count']); $duplicateCount = $getDuplicate[$item['count']] ? _f("(외 %1 개)", $getDuplicate[$item['count']]) : _f("(외 %1 개)", 0); array_push($getTags, rawurlencode(htmlspecialchars(UTF8::lessenAsEm($item['keyword'], 15)) . $duplicateCount)); $beforCount = $item['count']; } } $getData = implode("|", $getData); $getTags = implode("|", $getTags); $getTotal = $tempData[0]['total']; ?> <table class="data-inbox" cellspacing="0" cellpadding="0"> <thead> <tr> <th colspan="2"><h3><?php echo _t('리퍼러') . _t('키워드 TOP 10') . _t('통계'); ?> (<?php echo number_format($tempData[0]['total']); echo _t('개'); ?> ) : <?php echo $tempData[0]['dateStart']; ?> ~ <?php echo $tempData[0]['dateEnd']; ?> </h3></th> </tr> </thead> <tbody> <tr> <td> <div class="flash-stic"> <div id="get<?php echo $getMenu; ?> KeywordMaxStic"> <?php echo open_flash_chart_object(470, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=bar&grpTypeName=referkey&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_bar" : "")); ?> </div> </div> </td> <td> <div class="flash-pizza"> <div id="get<?php echo $getMenu; ?> KeywordMaxPizza"> <?php echo open_flash_chart_object(265, 250, $blogURL . "/plugin/BlogStatisticsProcess/?grpStyle=pie&grpLinkType=&grpYear=" . $getYear . "&grpTypeName=&grpData=" . $getData . "&grpTotal=" . $getTotal . "&grpLabel=" . $getTags . (empty($getData) ? "&grpNoData_pie" : "")); ?> </div> </div> </td> </tr> </tbody> </table> <?php } } } } } } } } } ?> </div> </div> </div> <?php }
?> "> <h2 class="caption"><span class="main-text"><?php echo _t('블로그 표지를 관리합니다'); ?> </span></h2> <?php require ROOT . '/interface/common/owner/skinTab.php'; ?> <div class="main-explain-box"> <p class="explain"><?php echo _t('블로그의 표지 구성을 변경할 수 있습니다.'); ?> <?php echo _f('표지는 블로그 첫 화면 또는 %1/cover 에 표시되는 부분입니다.', $context->getProperty('uri.default')); ?> <?php echo _t('표지에 새로운 요소를 추가/삭제할 수 있으며 패널들을 자유롭게 배치 할 수 있습니다.'); ?> <?php echo $service['type'] == 'path' || $service['type'] == 'domain' ? _t('다중 사용자 모드로 설치된 경우 블로그 관리자는 표지 기능을 이용하여 대표 블로그를 다른 블로그들에 대한 센터 기능을 하도록 구성할 수 있습니다.') : ''; ?> </p> <p class="explain"><?php echo _t('블로그-설정 메뉴에서 블로그 첫 화면을 표지로 사용하도록 변경할 수 있습니다.'); ?> </p> </div> <dl id="direct-link-line" class="line">
static function changeBlog() { global $database, $blogURL, $blog, $service; $blogid = getBlogId(); $blogList = User::getBlogs(); if (count($blogList) == 0) { return; } $changeBlogView = str_repeat(TAB, 6) . "<select id=\"blog-list\" onchange=\"location.href='{$blogURL}/owner/network/teamblog/changeBlog/?blogid='+this.value\">" . CRLF; foreach ($blogList as $info) { $title = Utils_Unicode::lessen(Setting::getBlogSettingGlobal("title", null, $info, true), 30); $title = $title ? $title : _f('%1 님의 블로그', User::getBlogOwnerName($info)); $changeBlogView .= str_repeat(TAB, 7) . '<option value="' . $info . '"'; if ($info == $blogid) { $changeBlogView .= ' selected="selected"'; } $changeBlogView .= '>' . $title . '</option>' . CRLF; } $changeBlogView .= str_repeat(TAB, 6) . '</select>' . CRLF; return $changeBlogView; }
/image/img_css_document_off.gif" alt="" /><?php echo basename($tempFile); ?> </a></li> <?php } $count++; } ?> </ul> <?php if ($styleFilePerms < 6) { ?> <p class="explain"><em class="attention"><span><?php echo _f('%1 파일을 수정하실 수 있는 권한이 없습니다.', $currentStyleFile); ?> </span></em></p> <?php } ?> <div id="style-box"> <textarea id="style" name="s_cache_style_css" cols="60" rows="25" onkeyup="skinStyleSaved=false"><?php echo htmlspecialchars($currentStyleContents); ?> </textarea> </div> <?php if ($styleFilePerms >= 6) { ?> <div class="button-box">
</table> </div> <?php $paging = array('url' => "", 'prefix' => '?page=', 'postfix' => '', 'total' => 0, 'pages' => 0, 'page' => 0); $paging['pages'] = $pages; $paging['page'] = $page; $pagingTemplate = '[##_paging_rep_##]'; $pagingItemTemplate = '<a [##_paging_rep_link_##]>[##_paging_rep_link_num_##]</a>'; ?> <div id="page-navigation"> <span id="page-list"><?php echo Paging::getPagingView($paging, $pagingTemplate, $pagingItemTemplate); ?> </span> <span id="total-count"><?php echo _f('총 %1개의 블로그', $blogcount); ?> </span> </div> <?php require ROOT . '/interface/common/control/footer.php'; ?> <script type="text/javascript"> //<![CDATA[ try { document.getElementById("suggestContainer").innerHTML = ''; var ctlUserSuggestObj = new ctlUserSuggest(document.getElementById("suggestContainer"), false); ctlUserSuggestObj.setValue("<?php echo User::getEmail(1); ?> ");