function GetTagDisplayName($tagname) { $TagDisplayName; switch (strtolower($tagname)) { case "img": $TagDisplayName = GetString("Image"); break; case "object": $TagDisplayName = GetString("ActiveXObject"); break; case "inserttable": $TagDisplayName = GetString($tagname); break; default: $TagDisplayName = $tagname; break; } return $TagDisplayName; }
<meta http-equiv="Page-Exit" content="blendTrans(Duration=0.1)" /> <link href="../Themes/<?php echo $Theme; ?> /dialog.css" type="text/css" rel="stylesheet" /> <!--[if IE]> <link href="../Style/IE.css" type="text/css" rel="stylesheet" /> <![endif]--> <title><?php echo GetString("NewTemplate"); ?> </title> </head> <body bgcolor="white"> <form id="Form1"> <CE:EDITOR id="OuterEditor" AutoConfigure="Full"
"></div> </div> </td> </tr> <tr class="split"> <td colspan="2"></td> </tr> <tr> <td class="label"><?php echo $Module->getLanguage('postWrite/title'); ?> </td> <td class="input"> <div class="inputBlock"> <input type="text" name="title" class="inputControl"<?php echo $post !== null ? ' value="' . GetString($post->title, 'input') . '"' : ''; ?> required> <div class="helpBlock" data-default="<?php echo $Module->getLanguage('youtube/help/title/default'); ?> " data-error="<?php echo $Module->getLanguage('youtube/help/title/error'); ?> "></div> </div> </td> </tr> <tr class="split"> <td colspan="2"></td> </tr>
</a> </td> </tr> <tr> <td> <a href="###" class="codebutton" onclick="codeCleaner('span');"> <img src="../Images/spanend.gif" title="<?php echo GetString("CleanupSpan"); ?> " style="border:0;vertical-align:middle;" /> <?php echo GetString("CleanupSpan"); ?> </a> </td> </tr> </table> <br> <div id="container-bottom"> <input type="button" value="<?php echo GetString("Cancel"); ?> " class="formbutton" onclick="Close()" ID="Button1" NAME="Button1"> </div> </div> </body> <script type="text/javascript" src="../Scripts/Dialog/DialogFoot.js"></script> <script type="text/javascript" src="../Scripts/Dialog/Dialog_Clean.js"></script> </html>
<?php error_reporting(E_ALL ^ E_NOTICE); include_once "Include_Security.php"; $FrameSrc = "Tag.Frame.php"; if ($_SERVER["QUERY_STRING"] != "") { $FrameSrc = $FrameSrc . "?" . $_SERVER["QUERY_STRING"]; } ?> <html> <head> <title><?php echo GetString("Properties"); ?> </title> </head> <script> window.changed=false; top.returnValue=false; </script> <body style="margin:0px;padding:0px;border-width:0px;overflow:hidden;" scroll="no"> <iframe id='frame' frameborder='0' style='width:100%;height:100%;' src='<?php echo $FrameSrc; ?> '></iframe> </body> </html>
<div id="outer"><div id="div_demo"><?php echo GetString("DemoText"); ?> </div></div> <script type="text/javascript"> function UpdateState() { div_demo.style.cssText=element.style.cssText; } function SyncToView() { } function SyncTo(element) {
<fieldset><legend><?php echo GetString("Src"); ?> </legend> <input type="text" id="inp_src" style="width:320px" /><button id="btnbrowse"><?php echo GetString("Browse"); ?> </button> </fieldset> <fieldset style="height:180px;width:270px;overflow:hidden;"><legend><?php echo GetString("Demo"); ?> </legend> <img id="img_demo" src="" alt="" /> </fieldset> <script type="text/javascript" src="../Scripts/Dialog/Dialog_Tag_Media.js"></script>
function ParseManifest($cc, $manifest) { LogInfo("Processing manifest info...."); $xml = $this->GetManifest($cc, $manifest); $baseUrl = $xml->xpath("/ns:manifest/ns:baseURL"); if (isset($baseUrl[0])) { $baseUrl = GetString($baseUrl[0]); if (substr($baseUrl, -1) != "/") { $baseUrl .= "/"; } } else { $baseUrl = ""; } $url = $xml->xpath("/ns:manifest/ns:media[@*]"); if (isset($url[0]['href'])) { foreach ($url as $manifest) { $bitrate = (int) $manifest['bitrate']; $entry =& $manifests[$bitrate]; $entry['bitrate'] = $bitrate; $href = GetString($manifest['href']); if (substr($href, 0, 1) == "/") { $href = substr($href, 1); } $entry['url'] = NormalizePath($baseUrl . $href); $entry['xml'] = $this->GetManifest($cc, $entry['url']); } } else { $manifests[0]['bitrate'] = 0; $manifests[0]['url'] = $manifest; $manifests[0]['xml'] = $xml; } foreach ($manifests as $manifest) { $xml = $manifest['xml']; // Extract baseUrl from manifest url $baseUrl = $xml->xpath("/ns:manifest/ns:baseURL"); if (isset($baseUrl[0])) { $baseUrl = GetString($baseUrl[0]); if (substr($baseUrl, -1) == "/") { $baseUrl = substr($baseUrl, 0, -1); } } else { $baseUrl = $manifest['url']; if (strpos($baseUrl, '?') !== false) { $baseUrl = substr($baseUrl, 0, strpos($baseUrl, '?')); } $baseUrl = substr($baseUrl, 0, strrpos($baseUrl, '/')); } if (!isHttpUrl($baseUrl)) { LogError("Provided manifest is not a valid HDS manifest"); } $streams = $xml->xpath("/ns:manifest/ns:media"); foreach ($streams as $stream) { $array = array(); foreach ($stream->attributes() as $k => $v) { $array[strtolower($k)] = GetString($v); } $array['metadata'] = GetString($stream->{'metadata'}); $stream = $array; $bitrate = isset($stream['bitrate']) ? (int) $stream['bitrate'] : $manifest['bitrate']; $streamId = isset($stream[strtolower('streamId')]) ? $stream[strtolower('streamId')] : ""; $mediaEntry =& $this->media[$bitrate]; $mediaEntry['baseUrl'] = $baseUrl; if (substr($stream['url'], 0, 1) == "/") { $mediaEntry['url'] = substr($stream['url'], 1); } else { $mediaEntry['url'] = $stream['url']; } if (isset($stream[strtolower('bootstrapInfoId')])) { $bootstrap = $xml->xpath("/ns:manifest/ns:bootstrapInfo[@id='" . $stream[strtolower('bootstrapInfoId')] . "']"); } else { $bootstrap = $xml->xpath("/ns:manifest/ns:bootstrapInfo"); } if (isset($bootstrap[0]['url'])) { $bootstrapUrl = GetString($bootstrap[0]['url']); if (!isHttpUrl($bootstrapUrl)) { $bootstrapUrl = $mediaEntry['baseUrl'] . "/{$bootstrapUrl}"; } $mediaEntry['bootstrapUrl'] = NormalizePath($bootstrapUrl); if ($cc->get($mediaEntry['bootstrapUrl']) != 200) { LogError("Failed to get bootstrap info"); } $mediaEntry['bootstrap'] = $cc->response; } else { $mediaEntry['bootstrap'] = base64_decode(GetString($bootstrap[0])); } if (isset($stream['metadata'])) { $mediaEntry['metadata'] = base64_decode($stream['metadata']); } else { $mediaEntry['metadata'] = ""; } } } // Available qualities $bitrates = array(); if (!count($this->media)) { LogError("No media entry found"); } krsort($this->media, SORT_NUMERIC); LogDebug("Manifest Entries:\n"); LogDebug(sprintf(" %-8s%s", "Bitrate", "URL")); for ($i = 0; $i < count($this->media); $i++) { $key = KeyName($this->media, $i); $bitrates[] = $key; LogDebug(sprintf(" %-8d%s", $key, $this->media[$key]['url'])); } LogDebug(""); LogInfo("Quality Selection:\n Available: " . implode(' ', $bitrates)); // Quality selection if (is_numeric($this->quality) and isset($this->media[$this->quality])) { $key = $this->quality; $this->media = $this->media[$key]; } else { $this->quality = strtolower($this->quality); switch ($this->quality) { case "low": $this->quality = 2; break; case "medium": $this->quality = 1; break; default: $this->quality = 0; } while ($this->quality >= 0) { $key = KeyName($this->media, $this->quality); if ($key !== NULL) { $this->media = $this->media[$key]; break; } else { $this->quality -= 1; } } } LogInfo(" Selected : " . $key); $this->baseUrl = $this->media['baseUrl']; if (isset($this->media['bootstrapUrl'])) { $this->bootstrapUrl = $this->media['bootstrapUrl']; } $bootstrapInfo = $this->media['bootstrap']; ReadBoxHeader($bootstrapInfo, $pos, $boxType, $boxSize); if ($boxType == "abst") { $this->ParseBootstrapBox($bootstrapInfo, $pos); } else { LogError("Failed to parse bootstrap info"); } }
:</td> <td> <textarea id="inp_tooltip" rows="3" cols="20" style="width:320px"></textarea> </td> </tr> </table> </fieldset> <script type="text/javascript" > var Caption = "<?php echo GetString("Caption"); ?> "; var Delete = "<?php echo GetString("Delete"); ?> "; var Insert = "<?php echo GetString("Insert"); ?> "; var Edit = "<?php echo GetString("Edit"); ?> "; var ValidID = "<?php echo GetString("ValidID"); ?> "; </script> <script type="text/javascript" src="../Scripts/Dialog/Dialog_Tag_Table.js"></script>
function doProcess($action) { $results = new stdClass(); $values = new stdClass(); if ($action == 'getCategory') { $parent = Request('parent'); $depth = Request('depth'); if ($parent) { $values->categorys = $this->db()->select($this->table->category)->where('parent', $parent)->orderBy('sort', 'asc')->get(); } elseif ($depth) { $values->categorys = $this->db()->select($this->table->category)->where('depth', $depth)->orderBy('sort', 'asc')->get(); } if ($parent == 0) { $results->parent = null; } else { $results->parent = $this->db()->select($this->table->category)->where('idx', $parent)->getOne(); } $results->success = true; $results->categorys = $values->categorys; } if ($action == 'sellerItem') { $lists = $this->db()->select($this->table->item)->where('midx', $this->IM->getModule('member')->getLogged()); $total = $lists->copy()->count(); $lists = $lists->get(); for ($i = 0, $loop = count($lists); $i < $loop; $i++) { $lists[$i]->image = $this->IM->getModule('attachment')->getAttachmentUrl($lists[$i]->image_default); } $results->success = true; $results->total = $total; $results->lists = $lists; } if ($action == 'sellerItemAddModal') { $results->success = true; $results->modalHtml = $this->getSellerItemAddModal(); } if ($action == 'sellerItemImage') { $meta = json_decode($_SERVER['HTTP_IMAGE_META']); $fileBytes = file_get_contents("php://input"); $tempFileName = $this->IM->getModule('attachment')->getTempPath(true) . '/' . md5($fileBytes) . '.' . rand(100000, 999999); file_put_contents($tempFileName, $fileBytes); if ($this->IM->getModule('attachment')->createThumbnail($tempFileName, $tempFileName, 600, 600, false, 'jpg') == true) { if ($meta->imageType == 'addition' || empty($meta->imageIdx) == true || Decoder($meta->imageIdx) == false) { $imageIdx = $this->IM->getModule('attachment')->fileSave($meta->imageType . '.jpg', $tempFileName, 'shop', $meta->imageType); } else { $imageIdx = $this->IM->getModule('attachment')->fileReplace($post->logo, $meta->imageType . '.jpg', $tempFileName); } $results->success = true; $results->imageIdx = Encoder($imageIdx); $results->imageType = $meta->imageType; $results->imageUrl = $this->IM->getModule('attachment')->getAttachmentUrl($imageIdx, $meta->imageType == 'default' ? 'view' : 'thumbnail'); } } if ($action == 'sellerItemPost') { // print_r($_REQUEST); $errors = array(); $values->idx = Request('idx'); $values->title = Request('title') ? Request('title') : ($errors['title'] = $this->getLanguage('seller/item/post/help/title/error')); $values->detail = Request('detail'); $values->seller = Request('seller') ? Request('seller') : ($errors['seller'] = $this->getLanguage('seller/item/post/help/seller/error')); $values->homepage = Request('homepage') ? preg_match('/^http/', Request('homepage')) == true ? Request('homepage') : 'http://' . Request('homepage') : ''; $values->category1 = Request('category1') ? Request('category1') : ($errors['category1'] = $this->getLanguage('seller/item/post/help/category/error')); $values->category2 = Request('category2') ? Request('category2') : 0; $values->category3 = Request('category3') ? Request('category3') : 0; $values->brand = Request('brand'); $values->maker = Request('maker'); $values->model = Request('model'); $values->price = preg_match('/^[1-9]+[0-9]*/', Request('price')) == true ? Request('price') : ($errors['price'] = $this->getLanguage('seller/item/post/help/price/error')); $values->allow_youth = Request('allow_youth'); $values->image_default = Request('image_default') && Decoder(Request('image_default')) !== false ? Decoder(Request('image_default')) : ($errors['image_default'] = $this->getLanguage('seller/item/post/help/image/error')); $values->image_addition = Request('image_addition') ? json_decode(Request('image_addition')) : array(); $values->content = Request('content') ? Request('content') : ($values->errors['content'] = $this->getLanguage('seller/item/post/help/content/error')); $values->attachments = is_array(Request('attachments')) == true ? Request('attachments') : array(); for ($i = 0, $loop = count($values->attachments); $i < $loop; $i++) { $values->attachments[$i] = Decoder($values->attachments[$i]); } $values->content = $this->encodeContent($values->content, $values->attachments); for ($i = 0, $loop = count($values->image_addition); $i < $loop; $i++) { $values->image_addition[$i] = Decoder($values->image_addition[$i]); } $values->option_enable = Request('option_enable') == 'TRUE' ? true : false; if ($values->option_enable == true) { $values->options = json_decode(Request('options')); if (count($values->options->names) == 0 || count($values->options->selects) == 0) { $errors['options'] = $this->getLanguage('seller/item/post/help/options/error'); } for ($i = 0, $loop = count($values->options->selects); $i < $loop; $i++) { if (is_numeric($values->options->selects[$i]->ea) == false || is_numeric($values->options->selects[$i]->price) == false) { $errors['options'] = $this->getLanguage('seller/item/post/help/options/numberOnly'); break; } } } else { $values->ea = strlen(Request('ea')) > 0 ? Request('ea') : -1; $values->options = new stdClass(); $values->options->names = ''; $values->options->selects = array(); } if ($this->IM->getModule('member')->isLogged() == false) { $results->success = false; $results->message = $this->getLanguage('error/notLogged'); } elseif (count($errors) == 0) { $insert = array(); $insert['title'] = $values->title; $insert['detail'] = $values->detail; $insert['seller'] = $values->seller; $insert['homepage'] = $values->homepage; $insert['category1'] = $values->category1; $insert['category2'] = $values->category2; $insert['category3'] = $values->category3; $insert['brand'] = $values->brand; $insert['maker'] = $values->maker; $insert['model'] = $values->model; $insert['price'] = $values->price; $insert['allow_youth'] = $values->allow_youth; $insert['content'] = $values->content; $insert['search'] = GetString($values->content, 'index'); $insert['image_default'] = $values->image_default; $insert['options'] = json_encode($values->options->names, JSON_UNESCAPED_UNICODE); if ($values->idx == null) { $insert['midx'] = $this->IM->getModule('member')->getLogged(); $insert['reg_date'] = time(); $values->idx = $this->db()->insert($this->table->item, $insert)->execute(); $results->success = true; } if ($results->success == true) { for ($i = 0, $loop = count($values->attachments); $i < $loop; $i++) { if ($this->db()->select($this->table->attachment)->where('idx', $values->attachments[$i])->count() == 0) { $this->db()->insert($this->table->attachment, array('idx' => $values->attachments[$i], 'type' => 'ITEMDETAIL', 'parent' => $values->idx))->execute(); } } for ($i = 0, $loop = count($values->image_addition); $i < $loop; $i++) { if ($this->db()->select($this->table->attachment)->where('idx', $values->image_addition[$i])->count() == 0) { $this->db()->insert($this->table->attachment, array('idx' => $values->image_addition[$i], 'type' => 'ITEM', 'parent' => $values->idx))->execute(); } } $this->db()->delete($this->table->item_option)->where('idx', $values->idx)->execute(); if ($values->option_enable == true) { for ($i = 0, $loop = count($values->options->selects); $i < $loop; $i++) { $option = array(); $option['idx'] = $values->idx; $option['option1'] = $values->options->selects[$i]->option1; $option['option2'] = $values->options->selects[$i]->option2 == null ? '' : $values->options->selects[$i]->option2; $option['option3'] = $values->options->selects[$i]->option3 == null ? '' : $values->options->selects[$i]->option3; $option['price'] = $values->options->selects[$i]->price; $option['ea'] = $values->options->selects[$i]->ea; $option['sort'] = $i; $this->db()->insert($this->table->item_option, $option)->execute(); } } } } else { $results->success = false; $results->errors = $errors; $results->message = $this->getLanguage('error/required'); } } if ($action == 'sellerPromotion') { $date = Request('date') ? strtotime(Request('date')) : strtotime(date('Y-m-d')); $timeInterval = $this->Module->getConfig('promotionTimeInterval') ? $this->Module->getConfig('promotionTimeInterval') : 30; $startDate = $date - 60 * 60 * 24 * 3; $endDate = $date + 60 * 60 * 24 * 4; $registeredLists = array(); $promotions = $this->db()->select($this->table->promotion)->where('start_date', $startDate, '>=')->where('start_date', $endDate, '<')->get(); for ($i = 0, $loop = count($promotions); $i < $loop; $i++) { if (empty($registeredLists[$promotions[$i]->start_date]) == true) { $registeredLists[$promotions[$i]->start_date] = array(); } $registeredLists[$promotions[$i]->start_date][] = $promotions[$i]->midx; } $midx = $this->IM->getModule('member')->getLogged(); $lists = array(); for ($i = 0; $i < 1440; $i = $i + $timeInterval) { $list = array(); $list['start_time'] = $startDate + $i * 60; $list['start_date'] = date('Y-m-d', $startDate + $i * 60); for ($j = 1; $j <= 7; $j++) { $time = $startDate + $i * 60 + 86400 * ($j - 1); $list['day' . $j . '_time'] = $time; $list['day' . $j . '_date'] = date('Y-m-d', $time); if (isset($registeredLists[$time]) == true && count($registeredLists[$time]) > 0) { $list['day' . $j] = count($registeredLists[$time]) >= $this->Module->getConfig('promotionTimeItemLimit') ? 'FULL' : 'EMPTY'; $registeredMidx = array_count_values($registeredLists[$time]); $list['day' . $j] .= '@'; $list['day' . $j] .= isset($registeredMidx[$midx]) == true ? $registeredMidx[$midx] : 0; } else { $list['day' . $j] = 'EMPTY@0'; } } $lists[] = $list; } $results->success = true; $results->total = count($lists); $results->lists = $lists; } if ($action == 'sellerPromotionAddModal') { $item = $this->db()->select($this->table->item)->where('midx', $this->IM->getModule('member')->getLogged())->where('status', 'ACTIVE')->count(); if ($item == 0) { $results->success = false; $results->message = $this->getLanguage('error/itemNotFound'); } else { $date = Request('date'); if ($date < time()) { $results->success = false; $results->message = $this->getLanguage('error/pastTime'); } else { $results->success = true; $results->modalHtml = $this->getSellerPromotionAddModal($date); } } } if ($action == 'sellerPromotionPost') { $errors = array(); $values->date = Request('date'); $values->item = Request('item'); $values->min = Request('min'); $values->max = Request('max'); $values->ea = preg_match('/^[1-9]+[0-9]*$/', Request('ea')) == true ? Request('ea') : ($errors['ea'] = $this->getLanguage('seller/promotion/post/help/ea/error')); $timeInterval = $this->Module->getConfig('promotionTimeInterval') ? $this->Module->getConfig('promotionTimeInterval') : 30; $price = $this->Module->getConfig('promotionPrice'); if ($values->date < time() || $values->date % ($timeInterval * 60) != 0) { $errors['date'] = $this->getLanguage('seller/promotion/post/help/date/error'); } $check = $this->db()->select($this->table->promotion)->where('start_date', $values->date)->count(); if ($check >= $this->Module->getConfig('promotionTimeItemLimit')) { $errors['date'] = $this->getLanguage('seller/promotion/post/help/date/duplicated'); } $check = $this->db()->select($this->table->item)->where('idx', $values->item)->where('midx', $this->IM->getModule('member')->getLogged())->where('status', 'ACTIVE')->get(); if ($check == null) { $errors['item'] = $this->getLanguage('seller/promotion/post/help/item/error'); } if ($this->IM->getModule('member')->isLogged() == false) { $results->success = false; $results->message = $this->getLanguage('error/notFound'); } elseif ($this->IM->getModule('member')->getMember()->point < $price) { $results->success = false; $results->message = $this->getLanguage('error/notEnoughPoint'); } elseif (count($errors) == 0) { $insert = array(); $insert['midx'] = $this->IM->getModule('member')->getLogged(); $insert['item'] = $values->item; $insert['start_date'] = $values->date; $insert['end_date'] = $values->date + 60 * $timeInterval; $insert['min'] = $values->min; $insert['max'] = $values->max; $insert['ea'] = $values->ea; $insert['reg_date'] = time(); $values->idx = $this->db()->insert($this->table->promotion, $insert)->execute(); $this->IM->getModule('member')->sendPoint(null, $price * -1, 'shop', 'promotion', array('idx' => $values->idx)); // $this->IM->getModule('member')->addActivity(null,$values->dataroom->post_exp,'dataroom','post',array('idx'=>$values->idx)); $results->success = true; } else { $results->success = false; $results->errors = $errors; if (isset($errors['date']) == true) { $results->message = $errors['date']; } else { $results->message = $this->getLanguage('error/required'); } } } $this->IM->fireEvent('afterDoProcess', 'shop', $action, $values, $results); return $results; }
function doProcess($action) { $results = new stdClass(); $values = new stdClass(); if ($action == 'listUrl') { $menu = Request('menu'); $page = Request('page'); $page = $this->IM->getPages($menu, $page); $oKeyword = Request('oKeyword'); $oLabel = Request('oLabel'); $oSort = Request('oSort'); $keyword = Request('keyword'); $label = Request('label'); $sort = Request('sort'); $keyword = Request('keyword'); $p = Request('p') ? Request('p') : 1; $queryString = 'menu=' . $page->menu . '&page=' . $page->page . '&keyword=' . $keyword . '&label=' . $label . '&sort=' . $sort . '&p=' . $p; if ($oKeyword != $keyword || $oLabel != $label || $oSort != $sort) { $p = 1; } $default = array(); if ($sort == 'idx') { $default['sort'] = ''; } if (isset($page->context->config->label) == true && $page->context->config->label == $label) { $default['label'] = ''; } $url = $this->IM->getUrl($page->menu, $page->page, 'list', $p) . $this->IM->getQueryString($default, $queryString); $results->success = true; $results->url = $url; } if ($action == 'postWrite') { $values->errors = array(); $values->qid = Request('qid'); $values->qna = $this->getQna($values->qid); $values->menu = Request('menu'); $values->page = Request('page'); $values->title = Request('title') ? Request('title') : ($values->errors['title'] = $this->getLanguage('postWrite/help/title/error')); $values->content = Request('content') ? Request('content') : ($values->errors['content'] = $this->getLanguage('postWrite/help/content/error')); if (strlen(Request('point')) > 0 && Request('point') != '0') { $values->point = preg_match('/^[1-9]+[0-9]*$/', Request('point')) == true ? Request('point') : ($values->errors['point'] = $this->getLanguage('postWrite/help/point/error')); } else { $values->point = 0; } $values->attachments = is_array(Request('attachments')) == true ? Request('attachments') : array(); for ($i = 0, $loop = count($values->attachments); $i < $loop; $i++) { $values->attachments[$i] = Decoder($values->attachments[$i]); } $values->content = $this->encodeContent($values->content, $values->attachments); if ($values->qna->use_label != 'NONE') { $values->labels = is_array(Request('labels')) == true ? Request('labels') : array(); if ($values->qna->use_label == 'FORCE' && count($values->labels) == 0) { $values->errors['labels'] = $this->getLanguage('postWrite/help/labels/error'); } } else { $values->labels = array(); } $this->IM->fireEvent('beforeDoProcess', 'qna', $action, $values, null); if ($this->IM->getModule('member')->isLogged() == false) { $results->success = false; $results->message = $this->getLanguage('error/notLogged'); } else { if ($values->point > $this->IM->getModule('member')->getMember()->point) { $values->errors['point'] = $this->getLanguage('error/notEnoughPoint'); } if (empty($values->errors) == true) { $results->success = true; $mHash = new Hash(); $insert = array(); $insert['qid'] = $values->qid; $insert['type'] = 'QUESTION'; $insert['midx'] = $this->IM->getModule('member')->getLogged(); $insert['title'] = $values->title; $insert['content'] = $values->content; $insert['search'] = GetString($values->content, 'index'); $insert['point'] = $values->point; if ($this->checkPermission('write') == false) { $results->success = false; $results->message = $this->getLanguage('error/forbidden'); } else { $results->success == true; $reg_date = time(); $insert['reg_date'] = $reg_date; $insert['last_answer'] = $reg_date; $insert['ip'] = $_SERVER['REMOTE_ADDR']; $values->idx = $this->db()->insert($this->table->post, $insert)->execute(); $this->db()->update($this->table->post, array('parent' => $values->idx))->where('idx', $values->idx)->execute(); $this->IM->getModule('member')->sendPoint(null, $values->point, 'qna', 'give', array('idx' => $values->idx)); $this->IM->getModule('member')->sendPoint(null, $values->qna->post_point, 'qna', 'post', array('idx' => $values->idx)); $this->IM->getModule('member')->addActivity(null, $values->qna->post_exp, 'qna', 'post', array('idx' => $values->idx)); } if ($results->success == true) { for ($i = 0, $loop = count($values->attachments); $i < $loop; $i++) { if ($this->db()->select($this->table->attachment)->where('idx', $values->attachments[$i])->count() == 0) { $this->db()->insert($this->table->attachment, array('idx' => $values->attachments[$i], 'qid' => $values->qid, 'type' => 'POST', 'parent' => $values->idx))->execute(); } $this->IM->getModule('attachment')->filePublish($values->attachments[$i]); } if (count($values->labels) > 0) { for ($i = 0, $loop = count($values->labels); $i < $loop; $i++) { if ($this->db()->select($this->table->post_label)->where('idx', $values->idx)->where('label', $values->labels[$i])->count() == 0) { $this->db()->insert($this->table->post_label, array('idx' => $values->idx, 'label' => $values->labels[$i], 'reg_date' => $reg_date))->execute(); $lastPost = $this->db()->select($this->table->post_label)->where('label', $values->labels[$i])->orderBy('reg_date', 'desc')->get(); $postnum = count($lastPost); $lastPostTime = $postnum > 0 ? $lastPost[0]->reg_date : 0; $this->db()->update($this->table->label, array('postnum' => $postnum, 'last_post' => $lastPostTime))->where('idx', $values->labels[$i])->execute(); } } } $lastPost = $this->db()->select($this->table->post)->where('qid', $values->qid)->where('type', 'QUESTION')->orderBy('reg_date', 'desc')->get(); $postnum = count($lastPost); $lastPostTime = $postnum > 0 ? $lastPost[0]->reg_date : 0; $this->db()->update($this->table->qna, array('postnum' => $postnum, 'last_post' => $lastPostTime))->where('qid', $values->qid)->execute(); $this->IM->setArticle('qna', $values->qid, 'post', $values->idx, time()); $page = $this->IM->getPages($values->menu, $values->page); if ($page->context->config == null) { $results->redirect = $this->IM->getUrl($values->menu, $values->page, 'view', $values->idx); } elseif (in_array($page->context->config->label, $values->labels) == true) { $results->redirect = $this->IM->getUrl($values->menu, $values->page, 'view', $values->idx); } else { $redirectPage = $this->getPostPage($values->idx); $results->redirect = $this->IM->getUrl($redirectPage->menu, $redirectPage->page, 'view', $values->idx); } } } else { $results->success = false; $results->message = $this->getLanguage('error/required'); $results->errors = $values->errors; } } } if ($action == 'getAnswer') { $values->parent = Request('parent'); $values->answers = array(); $lists = $this->db()->select($this->table->post)->where('parent', $values->parent)->where('type', 'ANSWER')->orderBy('vote', 'desc')->get(); for ($i = 0, $loop = count($lists); $i < $loop; $i++) { $values->answers[$i] = array('idx' => $lists[$i]->idx, 'vote' => $lists[$i]->vote, 'html' => $this->getAnswerItem($lists[$i])); } $results->success = true; $results->parent = $values->parent; $results->answerCount = number_format($loop); $results->answers = $values->answers; } if ($action == 'answerWrite') { $values->errors = array(); $values->parent = Request('parent'); $values->post = $this->getPost($values->parent); $values->qna = $this->getQna($values->post->qid); $values->content = Request('content') ? Request('content') : ($values->errors['content'] = $this->getLanguage('postWrite/help/content/error')); $values->attachments = is_array(Request('attachments')) == true ? Request('attachments') : array(); for ($i = 0, $loop = count($values->attachments); $i < $loop; $i++) { $values->attachments[$i] = Decoder($values->attachments[$i]); } $values->content = $this->encodeContent($values->content, $values->attachments); if ($this->IM->getModule('member')->isLogged() == false) { $results->success = false; $results->message = $this->getLanguage('error/notLogged'); } elseif ($values->post->midx == $this->IM->getModule('member')->getLogged()) { $results->success = false; $results->message = $this->getLanguage('error/mypost'); } else { if (empty($values->errors) == true) { $mHash = new Hash(); $insert = array(); $insert['qid'] = $values->post->qid; $insert['type'] = 'ANSWER'; $insert['parent'] = $values->parent; $insert['midx'] = $this->IM->getModule('member')->getLogged(); $insert['title'] = $values->post->title; $insert['content'] = $values->content; $insert['search'] = GetString($values->content, 'index'); $insert['reg_date'] = time(); $insert['ip'] = $_SERVER['REMOTE_ADDR']; if ($this->checkPermission('answer') == false) { $results->success = false; $results->message = $this->getLanguage('error/forbidden'); } else { $results->success = true; $values->idx = $this->db()->insert($this->table->post, $insert)->execute(); $this->IM->getModule('member')->sendPoint(null, $values->qna->answer_point, 'qna', 'answer', array('idx' => $values->idx)); $this->IM->getModule('member')->addActivity(null, $values->qna->answer_exp, 'qna', 'answer', array('idx' => $values->idx)); $this->IM->getModule('push')->sendPush($values->post->midx, 'qna', 'answer', $values->parent, array('from' => $this->IM->getModule('member')->getLogged())); } if ($results->success == true) { for ($i = 0, $loop = count($values->attachments); $i < $loop; $i++) { if ($this->db()->select($this->table->attachment)->where('idx', $values->attachments[$i])->count() == 0) { $this->db()->insert($this->table->attachment, array('idx' => $values->attachments[$i], 'qid' => $values->post->qid, 'type' => 'POST', 'parent' => $values->idx))->execute(); } $this->IM->getModule('attachment')->filePublish($values->attachments[$i]); } $lastAnswer = $this->db()->select($this->table->post)->where('parent', $values->parent)->where('type', 'ANSWER')->orderBy('reg_date', 'desc')->get(); $answernum = count($lastAnswer); $lastAnswerTime = $answernum > 0 ? $lastAnswer[0]->reg_date : $values->post->reg_date; $this->db()->update($this->table->post, array('answer' => $answernum, 'last_answer' => $lastAnswerTime))->where('idx', $values->parent)->execute(); $this->IM->setArticle('qna', $values->post->qid, 'post', $values->idx, time()); $results->message = $this->getLanguage('answerWrite/success'); $results->idx = $values->idx; $results->parent = $values->parent; } } elseif (count($values->errors) > 0) { $results->success = false; $results->message = $this->getLanguage('error/required'); $results->errors = $values->errors; } } } if ($action == 'answerSelect') { $values->idx = Request('idx'); $values->confirm = Request('confirm'); $values->answer = $this->getPost($values->idx); if ($values->answer == null || $values->answer->type != 'ANSWER') { $results->success = false; $results->message = $this->getLanguage('error/notFound'); } else { $values->post = $this->getPost($values->answer->parent); if ($this->checkPermission('select') == false && $values->post->midx != $this->getModule('member')->getLogged()) { $results->success = false; $results->message = $this->getLanguage('error/forbidden'); } elseif ($values->post->is_select == 'TRUE') { $results->success = false; $results->message = $this->getLanguage('error/hasSelect'); } else { $results->success = true; if ($values->confirm == 'TRUE') { $values->qna = $this->getQna($values->post->qid); $this->db()->update($this->table->post, array('is_select' => 'TRUE'))->where('idx', $values->idx)->execute(); $this->db()->update($this->table->post, array('is_select' => 'TRUE'))->where('idx', $values->post->idx)->execute(); $this->IM->getModule('member')->sendPoint(null, ceil($values->qna->select_point / 2), 'qna', 'select', array('idx' => $values->idx)); $this->IM->getModule('member')->sendPoint($values->answer->midx, $values->qna->select_point + $values->post->point, 'qna', 'selected', array('idx' => $values->idx)); $this->IM->getModule('member')->addActivity(null, ceil($values->qna->select_exp / 2), 'qna', 'select', array('idx' => $values->idx)); $this->IM->getModule('member')->addActivity($values->answer->midx, $values->qna->select_exp, 'qna', 'selected', array('idx' => $values->idx)); $this->IM->getModule('push')->sendPush($values->answer->midx, 'qna', 'selected', $values->idx, array('from' => $this->IM->getModule('member')->getLogged())); } else { $results->modalHtml = $this->getSelect($values->idx); } } } } if ($action == 'getMent') { $values->parent = Request('parent'); $values->ments = array(); $lists = $this->db()->select($this->table->ment)->where('parent', $values->parent)->orderBy('idx', 'asc')->get(); for ($i = 0, $loop = count($lists); $i < $loop; $i++) { $values->ments[$i] = array('idx' => $lists[$i]->idx, 'html' => $this->getMentItem($lists[$i])); } $results->success = true; $results->parent = $values->parent; $results->mentCount = number_format($loop); $results->ments = $values->ments; } if ($action == 'mentWrite') { $values->errors = array(); $values->parent = Request('parent'); $values->answer = $this->getPost($values->parent); $values->question = $this->getPost($values->answer->parent); $values->qna = $this->getQna($values->question->qid); $values->content = Request('content') ? Request('content') : ($values->errors['content'] = $this->getLanguage('postWrite/help/content/error')); $values->attachments = is_array(Request('attachments')) == true ? Request('attachments') : array(); for ($i = 0, $loop = count($values->attachments); $i < $loop; $i++) { $values->attachments[$i] = Decoder($values->attachments[$i]); } $values->content = $this->encodeContent($values->content, $values->attachments); if ($this->IM->getModule('member')->isLogged() == false) { $results->success = false; $results->message = $this->getLanguage('error/notLogged'); } elseif ($values->question->midx != $this->IM->getModule('member')->getLogged() && $values->answer->midx != $this->IM->getModule('member')->getLogged()) { $results->success = false; $results->message = $this->getLanguage('error/forbidden'); } else { if (empty($values->errors) == true) { $mHash = new Hash(); $insert = array(); $insert['qid'] = $values->qna->qid; $insert['parent'] = $values->parent; $insert['midx'] = $this->IM->getModule('member')->getLogged(); $insert['content'] = $values->content; $insert['reg_date'] = time(); $insert['is_secret'] = Request('is_secret') == 'TRUE' ? 'TRUE' : 'FALSE'; $insert['ip'] = $_SERVER['REMOTE_ADDR']; $results->success = true; $values->idx = $this->db()->insert($this->table->ment, $insert)->execute(); $this->IM->getModule('member')->addActivity(null, 5, 'qna', 'ment', array('idx' => $values->idx)); if ($values->question->midx == $this->IM->getModule('member')->getLogged()) { $this->IM->getModule('push')->sendPush($values->answer->midx, 'qna', 'ment', $values->parent, array('from' => $this->IM->getModule('member')->getLogged())); } else { $this->IM->getModule('push')->sendPush($values->question->midx, 'qna', 'ment', $values->parent, array('from' => $this->IM->getModule('member')->getLogged())); } if ($results->success == true) { for ($i = 0, $loop = count($values->attachments); $i < $loop; $i++) { if ($this->db()->select($this->table->attachment)->where('idx', $values->attachments[$i])->count() == 0) { $this->db()->insert($this->table->attachment, array('idx' => $values->attachments[$i], 'qid' => $values->qna->qid, 'type' => 'MENT', 'parent' => $values->idx))->execute(); } $this->IM->getModule('attachment')->filePublish($values->attachments[$i]); } // $this->IM->setArticle('qna',$values->post->qid,'post',$values->idx,time()); $results->message = $this->getLanguage('answerWrite/success'); $results->idx = $values->idx; $results->parent = $values->parent; } } elseif (count($values->errors) > 0) { $results->success = false; $results->message = $this->getLanguage('error/required'); $results->errors = $values->errors; } } } if ($action == 'vote') { $values->idx = Request('idx'); $values->vote = in_array(Request('vote'), array('good', 'bad')) == true ? Request('vote') : 'good'; if ($this->IM->getModule('member')->isLogged() == false) { $results->success = false; $results->message = $this->getLanguage('error/notLogged'); } else { $values->post = $this->getPost($values->idx); if ($values->post == null) { $results->success = false; $results->message = $this->getLanguage('error/notFound'); } elseif ($values->post->midx == $this->IM->getModule('member')->getLogged()) { $results->success = false; $results->message = $this->getLanguage('vote/mypost'); } else { $values->qna = $this->getQna($values->post->qid); $check = $this->db()->select($this->table->history)->where('parent', $values->idx)->where('midx', $this->IM->getModule('member')->getLogged())->getOne(); if ($check == null) { if ($values->vote == 'good') { $this->db()->update($this->table->post, array('vote' => $this->db()->inc()))->where('idx', $values->idx)->execute(); } else { $this->db()->update($this->table->post, array('vote' => $this->db()->dec()))->where('idx', $values->idx)->execute(); } $this->db()->insert($this->table->history, array('parent' => $values->idx, 'midx' => $this->IM->getModule('member')->getLogged(), 'result' => strtoupper($values->vote), 'reg_date' => time()))->execute(); $results->success = true; $results->message = $this->getLanguage('vote/' . $values->vote); $results->liveUpdate = 'liveUpdateQnaVote' . $values->idx; $results->liveValue = number_format($values->vote == 'good' ? $values->post->vote + 1 : $values->post->vote - 1); $this->IM->getModule('member')->sendPoint(null, $values->qna->vote_point, 'qna', strtolower($values->post->type) . '_' . $values->vote, array('idx' => $values->idx)); $this->IM->getModule('member')->addActivity(null, $values->qna->vote_exp, 'qna', strtolower($values->post->type) . '_' . $values->vote, array('idx' => $values->idx)); $this->IM->getModule('push')->sendPush($values->post->midx, 'qna', strtolower($values->post->type) . '_' . $values->vote, $values->post->idx, array('from' => $this->IM->getModule('member')->getLogged())); } else { $results->success = false; $results->message = $this->getLanguage('vote/duplicated'); $results->result = $check->result; } } } } $this->IM->fireEvent('afterDoProcess', 'qna', $action, $values, $results); return $results; }
public function ParsePlayer($fileName) { $data = file_get_contents($fileName); if (!$fileName) { return false; } $this->Id = $this->GetId($data)[1]; $this->SteamId = $this->GetSteamId($data); $this->SteamName = utf8_encode(GetString($data, 'PlayerName')); if (empty(trim(GetString($data, 'PlayerCharacterName')))) { $this->CharacterName = "Survivor"; } else { $this->CharacterName = GetString($data, 'PlayerCharacterName'); } $this->TribeId = GetInt($data, 'TribeID')[1]; if (strlen((string) $this->TribeId) < 2) { $this->TribeId = false; } $this->Level = GetUInt16($data, 'CharacterStatusComponent_Extra_CharacterLevel') + 1; $this->FileCreated = date('m/d/y g:ia', filectime($fileName)); $this->FileUpdated = date('m/d/y g:ia', filemtime($fileName)); $this->Online = false; return $this; }
<tr> <td colspan="2"><button class="codebutton" onclick="Move(-1);" id="btnMoveDownItem"><?php echo GetString("MoveDown"); ?> </button> </td> </tr> </table> </td> </tr> <tr> <td><select size="6" id="list_options" style="width:130px" onchange="document.getElementById('list_options2').selectedIndex = this.selectedIndex;Select(this);FireUIChanged();"></select></td> <td><select size="6" id="list_options2" style="width:130px" onchange="document.getElementById('list_options').selectedIndex = this.selectedIndex;Select(this);FireUIChanged();"></select></td> </tr> <tr> <td><?php echo GetString("Color"); ?> : <input autocomplete="off" size="7" type="text" id="inp_item_forecolor" /> <img alt="" id="inp_item_forecolor_Preview" src="../Images/colorpicker.gif" style="margin-bottom:-2px"/> </td> <td><?php echo GetString("BackColor"); ?> : <input autocomplete="off" size="7" type="text" id="inp_item_backcolor" /> <img alt="" id="inp_item_backcolor_Preview" src="../Images/colorpicker.gif" style="margin-bottom:-2px"/> </td> </tr> </table> </fieldset> <script type="text/javascript" src="../Scripts/Dialog/Dialog_Tag_Select.js"></script>
echo GetString("Height"); ?> :</td> <td><input type="text" id="inp_cell_height" style="width:60px" /></td> </tr> <!-- //TODO: add more cell useful properties here --> <tr> <td colspan="2" align="center"> <input type="button" id="btn_cell_editcell" value="<?php echo GetString("EditHtml"); ?> " /></td> </tr> </table> <br /> </td> <td> <div style="border:1px solid gray;padding:1px;OVERFLOW: auto; HEIGHT: 215px; HEIGHT: 215px; ">
<table border="0" cellpadding="4" cellspacing="0" class="normal"> <tr> <td> <table border="0" cellpadding="2" cellspacing="0" class="normal"> <tr> <td valign="middle" style="width:60"><?php echo GetString("Horizontal"); ?> :</td> <td> <input type="text" size="2" value="5" onkeypress="return CancelEventIfNotDigit()" style="WIDTH:80px" id="HSpace" /> </td> </tr> <tr> <td valign="middle"><?php echo GetString("Vertical"); ?> :</td> <td> <input type="text" size="2" name="VSpace" onkeypress="return CancelEventIfNotDigit()" style="WIDTH:80px" id="VSpace" /> </td> </tr> </table> </td> </tr> </table> </fieldset> </td> <td style="white-space:nowrap; width:5" > </td> <td valign="top"> <div id="outer" style="width:230px; height:251px">
<input class="formbutton" type="button" value=" <?php echo GetString("Cancel"); ?> " onclick="do_Close()" id="Button2" /> </div> </body> <script type="text/javascript"> var query_string = "?<?php echo $_SERVER["QUERY_STRING"]; ?> "; var AddLinktoImageMap = "<?php echo GetString("AddLinktoImageMap"); ?> "; </script> <script type="text/javascript" src="../Scripts/Dialog/DialogFoot.js"></script> <script type="text/javascript" src="../Scripts/Dialog/Dialog_ImageMap.js"></script> </html>
<td style="width:3"> </td> <td style='vertical-align:middle' class="normal"><?php echo GetString("Shade"); ?> :</td> <td style='vertical-align:middle'> <select id="shade"> <option value="shade" selected="selected">Shade</option> <option value="noshade">No shade</option> </select> </td> </tr> <tr> <td style='vertical-align:middle' class="normal"><?php echo GetString("Size"); ?> :</td> <td style='vertical-align:middle' colspan="4"> <select id="sel_size" style="width:67px"> <option selected="selected" value="1">1 px</option> <option value="2">2 px</option> <option value="3">3 px</option> <option value="4">4 px</option> <option value="5">5 px</option> <option value="6">6 px</option> <option value="7">7 px</option> <option value="8">8 px</option> <option value="9">9 px</option> <option value="10">10 px</option> </select>
function getShow($data) { ob_start(); echo '<form id="ModuleDonationShowForm" onsubmit="return Donation.confirm(this);">' . PHP_EOL; echo '<input type="hidden" name="idx" value="' . $data->idx . '">' . PHP_EOL; $title = '후원내역 처리하기'; $content = ''; $content .= '<div class="label">입금방법</div>' . PHP_EOL; $content .= '<div class="inputBlock">' . PHP_EOL; $content .= ' <input type="hidden" name="intype" value="' . $data->intype . '">' . PHP_EOL; $content .= ' <div class="selectControl" data-field="intype">' . PHP_EOL; $content .= ' <button type="button">입금하신 계좌를 선택하여 주십시오. <span class="arrow"></span></button>' . PHP_EOL; $content .= ' <ul></ul>' . PHP_EOL; $content .= ' </div>' . PHP_EOL; $content .= '</div>' . PHP_EOL; $content .= '<div class="blankSpace"></div>' . PHP_EOL; $content .= '<div class="row">' . PHP_EOL; $content .= ' <div class="col-xs-6">' . PHP_EOL; $content .= ' <div class="label">입금자명</div>' . PHP_EOL; $content .= ' <div class="inputBlock">' . PHP_EOL; $content .= ' <input type="text" name="name" class="inputControl" value="' . GetString($data->name, 'inputbox') . '">' . PHP_EOL; $content .= ' </div>' . PHP_EOL; $content .= ' </div>' . PHP_EOL; $content .= ' <div class="col-xs-6">' . PHP_EOL; $content .= ' <div class="label">입금날짜</div>' . PHP_EOL; $content .= ' <div class="inputBlock">' . PHP_EOL; $content .= ' <input type="text" name="reg_date" class="inputControl" value="' . $data->reg_date . '">' . PHP_EOL; $content .= ' </div>' . PHP_EOL; $content .= ' </div>' . PHP_EOL; $content .= '</div>' . PHP_EOL; $content .= '<div class="blankSpace"></div>' . PHP_EOL; $content .= '<div class="label">입금금액</div>' . PHP_EOL; $content .= '<div class="inputBlock">' . PHP_EOL; $content .= ' <input type="text" name="price" class="inputControl" data-type="number" value="' . number_format($data->price) . '">' . PHP_EOL; $content .= '</div>' . PHP_EOL; $content .= '<div class="blankSpace"></div>' . PHP_EOL; $content .= '<div class="label">상태</div>' . PHP_EOL; $content .= '<div class="inputBlock">' . PHP_EOL; $content .= ' <input type="hidden" name="status" value="' . $data->status . '">' . PHP_EOL; $content .= ' <div class="selectControl" data-field="status">' . PHP_EOL; $content .= ' <button type="button"></button>' . PHP_EOL; $content .= ' <ul><li data-value="TRUE">처리완료</li><li data-value="FALSE">확인불가</li><li data-value="WAIT">대기중</li></ul>' . PHP_EOL; $content .= ' </div>' . PHP_EOL; $content .= '</div>' . PHP_EOL; $content .= '<div class="blankSpace"></div>' . PHP_EOL; $content .= '<div class="row">' . PHP_EOL; $content .= ' <div class="col-xs-6">' . PHP_EOL; $content .= ' <div class="label">혜택포인트</div>' . PHP_EOL; $content .= ' <div class="inputBlock">' . PHP_EOL; $content .= ' <input type="text" name="gift_point" class="inputControl" data-type="number" value="' . number_format($data->status == 'WAIT' ? $data->price : $data->gift_point) . '">' . PHP_EOL; $content .= ' </div>' . PHP_EOL; $content .= ' </div>' . PHP_EOL; $content .= ' <div class="col-xs-6">' . PHP_EOL; $content .= ' <div class="label">혜택경험치</div>' . PHP_EOL; $content .= ' <div class="inputBlock">' . PHP_EOL; $content .= ' <input type="text" name="gift_exp" class="inputControl" data-type="number" value="' . number_format($data->status == 'WAIT' ? floor($data->price * 0.02) : $data->gift_exp) . '">' . PHP_EOL; $content .= ' </div>' . PHP_EOL; $content .= ' </div>' . PHP_EOL; $content .= '</div>' . PHP_EOL; $IM = $this->IM; $Module = $this; include $this->Module->getPath() . '/views/modal.php'; echo '</form>' . PHP_EOL; echo '<script>Donation.showInit();</script>'; $context = ob_get_contents(); ob_end_clean(); return $context; }
<tr> <td><?php echo GetString("EncodingType"); ?> :</td> <td><input type="text" id="inp_encode" style="width:200px" /></td> </tr> <tr> <td><?php echo GetString("Target"); ?> :</td> <td> <select id="sel_target" name="sel_target"> <option value=""></option> <option value="_blank">_blank</option> <option value="_self">_self</option> <option value="_top">_top</option>
/** * http://developer.valvesoftware.com/wiki/Source_RCON_Protocol * * @param string $ip * @param string $port * @param string $rcon * @param string $string1 * @param string $string2 * @return array $data */ function Source_Rcon($ip, $port, $rcon, $string1, $string2 = NULL) { $reqid = mt_rand(0, 255); $reqtype = 3; # add the zero /* $rcon .= "\x00"; $string1 .= "\x00"; $string2 .= "\x00"; */ if (!($server_connection = fsockopen("udp://" . $ip, $port))) { return false; } socket_set_blocking($server_connection, 1); # Time out after 5 seconds socket_set_timeout($server_connection, 5); # First we need to auth # Auth packet creation $command = pack('VV', $reqid, $reqtype) . $rcon . $string2; $cmdlen = strlen($command); $command = pack('V', $cmdlen) . $command; # Request Auth fwrite($server_connection, $command, strlen($command)); # Get the thingy packet that currently has no use $data = Get_A_Packet($server_connection); # Get auth packet $data = Get_A_Packet($server_connection); $datastart = 0; $recsize = GetInt32($data, $datastart); $recid = GetInt32($data, $datastart); $rectype = GetInt32($data, $datastart); $recstring1 = GetString($data, $datastart); $recstring2 = GetString($data, $datastart); # If we don't get what we expect, we must have failed? if ($rectype != 2) { fclose($server_connection); return false; } # If the packet ID's dont match, auth failed if ($recid != $reqid) { fclose($server_connection); return false; } # Prepare new command $reqid = mt_rand(0, 255); $reqtype = 2; $command = pack('VV', $reqid, $reqtype) . $string1 . $string2; $cmdlen = strlen($command); $command = pack('V', $cmdlen) . $command; # Send new command fwrite($server_connection, $command, strlen($command)); $data = ''; # i will increment every loop # t will only increment when a packet was received. # should something break, it should.. in theory, kill itself # but hopefully something will have killed it earlier $i = 0; $t = 1; #while ($i <= $t) #{ #$i++; $packet = ''; #if ($packet = Get_A_Packet($server_connection)) $packet = Get_A_Packet($server_connection); #{ # $t++; #} $datastart = 0; $recsize = GetInt32($packet, $datastart); $recid = GetInt32($packet, $datastart); if ($recid == $reqid) { # I wonder how long it will be till this gets triggered # Maybe? Never? Fear the bugs in the protocol! # Header packet $rectype = GetInt32($packet, $datastart); $data .= GetString($packet, $datastart); $recstring2 = GetString($packet, $datastart); } else { $data .= $packet; } #} # Make sure socket is closed fclose($server_connection); return $data; }
function doProcess($action) { $results = new stdClass(); $values = new stdClass(); if ($action == 'listUrl') { $menu = Request('menu'); $page = Request('page'); $page = $this->IM->getPages($menu, $page); $oKey = Request('oKey'); $oKeyword = Request('oKeyword'); $oCategory = Request('oCategory'); $oSort = Request('oSort'); $keyword = Request('keyword'); $category = Request('category'); $sort = Request('sort'); $key = Request('key'); $keyword = Request('keyword'); $p = Request('p') ? Request('p') : 1; $queryString = 'menu=' . $page->menu . '&page=' . $page->page . '&keyword=' . $keyword . '&category=' . $category . '&sort=' . $sort . '&p=' . $p; if ($oKeyword != $keyword || $oCategory != $category || $oSort != $sort) { $p = 1; } $default = array(); if (strlen($keyword) == 0) { $default['keyword'] = ''; } if ($sort == 'update') { $default['sort'] = ''; } if (isset($page->context->config->category) == true && $page->context->config->category == $category) { $default['category'] = ''; } $url = $this->IM->getUrl($page->menu, $page->page, 'list', $p) . $this->IM->getQueryString($default, $queryString); $results->success = true; $results->url = $url; } if ($action == 'postWrite') { $values->errors = array(); $values->idx = Request('idx'); $values->did = Request('did'); $values->menu = Request('menu'); $values->page = Request('page'); $values->category = Request('category'); $values->homepage = Request('homepage'); $values->license = Request('license') ? Request('license') : ($values->errors['license'] = $this->getLanguage('postWrite/help/license/error')); $values->price = Request('price') ? preg_match('/[1-9]+[0-9]*/', Request('price')) == true ? Request('price') : ($values->errors['price'] = $this->getLanguage('postWrite/help/price/error')) : 0; $values->title = Request('title') ? Request('title') : ($values->errors['title'] = $this->getLanguage('postWrite/help/title/error')); $values->content = Request('content') ? Request('content') : ($values->errors['content'] = $this->getLanguage('postWrite/help/content/error')); $values->attachments = is_array(Request('attachments')) == true ? Request('attachments') : array(); for ($i = 0, $loop = count($values->attachments); $i < $loop; $i++) { $values->attachments[$i] = Decoder($values->attachments[$i]); } $values->content = $this->encodeContent($values->content, $values->attachments); $values->dataroom = $this->getDataroom($values->did); if ($values->dataroom->use_category == 'USED') { if ($values->category == null || preg_match('/^[1-9]+[0-9]*$/', $values->category) == false) { $values->errors['category'] = $this->getLanguage('postWrite/help/category/error'); } } else { $values->category = 0; } if (isset($_FILES['logo']['tmp_name']) == true && $_FILES['logo']['tmp_name']) { $checkImage = getimagesize($_FILES['logo']['tmp_name']); if (in_array($checkImage[2], array(1, 2, 3)) == false) { $values->errors['logo'] = $this->getLanguage('postWrite/help/logo/error'); } } if ($this->IM->getModule('member')->isLogged() == false) { $results->success = false; $results->message = $this->getLanguage('error/notLogged'); } elseif (empty($values->errors) == true) { $results->success = true; $mHash = new Hash(); $insert = array(); $insert['did'] = $values->did; $insert['category'] = $values->category; $insert['midx'] = $this->IM->getModule('member')->getLogged(); $insert['title'] = $values->title; $insert['content'] = $values->content; $insert['search'] = GetString($values->content, 'index'); $insert['homepage'] = $values->homepage; $insert['license'] = $values->license; $insert['price'] = $values->price; if ($values->idx == null) { $post = null; if ($this->checkPermission('write') == false) { $results->success = false; $results->message = $this->getLanguage('error/forbidden'); } else { $oCategory = null; $reg_date = time(); $insert['reg_date'] = $reg_date; $insert['last_update'] = 0; $insert['ip'] = $_SERVER['REMOTE_ADDR']; $values->idx = $this->db()->insert($this->table->post, $insert)->execute(); } $this->IM->setArticle('dataroom', $values->did, 'post', $values->idx, 0); $this->IM->getModule('member')->sendPoint(null, $values->dataroom->post_point, 'dataroom', 'post', array('idx' => $values->idx)); $this->IM->getModule('member')->addActivity(null, $values->dataroom->post_exp, 'dataroom', 'post', array('idx' => $values->idx)); } else { $post = $this->getPost($values->idx); $oCategory = $post->category; $reg_date = $post->reg_date; if ($this->checkPermission('modify') == false && $post->midx != $this->IM->getModule('member')->getLogged()) { $results->success = false; $results->message = $this->getLanguage('error/forbidden'); } if ($results->success == true) { $this->db()->update($this->table->post, $insert)->where('idx', $post->idx)->execute(); $this->IM->setArticle('dataroom', $values->did, 'post', $values->idx, $post->last_update); if ($post->midx != $this->IM->getModule('member')->getLogged()) { $this->IM->getModule('push')->sendPush($post->midx, 'dataroom', 'post_modify', $values->idx, array('from' => $this->IM->getModule('member')->getLogged())); } $this->IM->getModule('member')->addActivity(null, 0, 'dataroom', 'post_modify', array('idx' => $values->idx)); } } if ($results->success == true) { if (isset($_FILES['logo']['tmp_name']) == true && $_FILES['logo']['tmp_name']) { $fileName = $_FILES['logo']['name']; $tempFileName = $this->IM->getModule('attachment')->getTempPath(true) . '/' . md5_file($_FILES['logo']['tmp_name']); if ($this->IM->getModule('attachment')->createThumbnail($_FILES['logo']['tmp_name'], $tempFileName, 500, 0, true) == true) { if ($post == null || $post->logo == 0) { $logoIdx = $this->IM->getModule('attachment')->fileSave($fileName, $tempFileName, 'dataroom', 'logo'); } else { $logoIdx = $this->IM->getModule('attachment')->fileReplace($post->logo, $fileName, $tempFileName); } $this->db()->update($this->table->post, array('logo' => $logoIdx))->where('idx', $values->idx)->execute(); $this->IM->getModule('attachment')->filePublish($logoIdx); } } for ($i = 0, $loop = count($values->attachments); $i < $loop; $i++) { if ($this->db()->select($this->table->attachment)->where('idx', $values->attachments[$i])->count() == 0) { $this->db()->insert($this->table->attachment, array('idx' => $values->attachments[$i], 'did' => $values->did, 'type' => 'POST', 'parent' => $values->idx))->execute(); } $this->IM->getModule('attachment')->filePublish($values->attachments[$i]); } if ($oCategory != 0 && $oCategory != $values->category) { $lastPost = $this->db()->select($this->table->post)->where('category', $oCategory)->orderBy('last_update', 'desc')->get(); $postnum = count($lastPost); $lastPostTime = $postnum > 0 ? $lastPost[0]->last_update : 0; $this->db()->update($this->table->category, array('postnum' => $postnum, 'last_post' => $lastPostTime))->where('idx', $oCategory)->execute(); } if ($values->category != 0 && $oCategory != $values->category) { $lastPost = $this->db()->select($this->table->post)->where('category', $values->category)->orderBy('last_update', 'desc')->get(); $postnum = count($lastPost); $lastPostTime = $postnum > 0 ? $lastPost[0]->last_update : 0; $this->db()->update($this->table->category, array('postnum' => $postnum, 'last_post' => $lastPostTime))->where('idx', $values->category)->execute(); } $postnum = $this->db()->select($this->table->post)->where('did', $values->did)->count(); $this->db()->update($this->table->dataroom, array('postnum' => $postnum))->where('did', $values->did)->execute(); $page = $this->IM->getPages($values->menu, $values->page); if ($page->context->config == null) { $results->redirect = $this->IM->getUrl($values->menu, $values->page, $post == null ? 'version' : 'view', $values->idx); } elseif ($page->context->config->category == $values->category) { $results->redirect = $this->IM->getUrl($values->menu, $values->page, $post == null ? 'version' : 'view', $values->idx); } else { $redirectPage = $this->getPostPage($values->idx); $results->redirect = $this->IM->getUrl($redirectPage->menu, $redirectPage->page, $post == null ? 'version' : 'view', $values->idx); } } } else { $results->success = false; $results->message = $this->getLanguage('error/required'); $results->errors = $values->errors; } } if ($action == 'postDelete') { $values->idx = Request('idx'); $post = $this->getPost($values->idx); if ($post == null) { $results->success = false; $results->message = $this->getLanguage('error/notFound'); } elseif ($this->checkPermission('post_delete') == true || $post->midx == $this->IM->getModule('member')->getLogged()) { $results->success = true; $results->modalHtml = $this->getDelete('post', $values->idx); } else { $results->success = false; $results->message = $this->getLanguage('error/forbidden'); } } if ($action == 'versionWrite') { $values->errors = array(); $values->idx = Request('idx'); $values->parent = Request('parent'); $values->did = Request('did'); $values->menu = Request('menu'); $values->page = Request('page'); $values->version = preg_match('/^[0-9]+\\.[0-9]+(\\.[0-9]+)?$/', Request('version')) == true ? Request('version') : ($values->errors['version'] = $this->getLanguage('versionWrite/help/history/error')); $values->history = Request('history') ? Request('history') : ($values->errors['history'] = $this->getLanguage('versionWrite/help/history/error')); $values->dataroom = $this->getDataroom($values->did); $values->post = $this->getPost($values->parent); if (version_compare($values->post->last_version, $values->version, '>=') == true) { $values->errors['version'] = $this->getLanguage('versionWrite/help/version/lowVersion'); } if (isset($_FILES['file']['tmp_name']) == true && $_FILES['file']['tmp_name']) { if ($this->IM->getModule('attachment')->getFileMime($_FILES['file']['tmp_name']) != 'application/zip') { $errors['file'] = $this->getLanguage('versionWrite/help/file/notzip'); } } if (empty($values->errors) == true) { $results->success = true; $mHash = new Hash(); $insert = array(); $insert['did'] = $values->did; $insert['parent'] = $values->parent; $insert['version'] = $values->version; $insert['history'] = $values->history; if ($values->idx == null) { if ($this->checkPermission('write') == false && $values->post->midx != $this->IM->getModule('member')->getLogged()) { $results->success = false; $results->message = $this->getLanguage('error/forbidden'); } else { $reg_date = time(); $insert['reg_date'] = $reg_date; $values->idx = $this->db()->insert($this->table->post_version, $insert)->execute(); $results->redirect = $this->IM->getUrl($values->menu, $values->page, 'view', $values->parent); } // Action Register } else { $oCategory = $post->category; $reg_date = $post->reg_date; if ($this->checkPermission('post_modify') == false && ($post->midx != 0 && $post->midx != $this->IM->getModule('member')->getLogged())) { $results->success = false; $results->message = $this->getLanguage('error/forbidden'); } elseif ($post->midx == 0) { if ($mHash->password_validate($values->password, $post->password) == false) { $results->success = false; $results->errors = array('password' => $this->getLanguage('error/incorrectPassword')); $results->message = $this->getLanguage('error/incorrectPassword'); } } if ($results->success == true) { if ($this->IM->getModule('member')->isLogged() == false) { $insert['name'] = $values->name; $insert['password'] = $values->password ? $mHash->password_hash($values->password) : ''; $insert['email'] = $values->email; $insert['ip'] = $_SERVER['REMOTE_ADDR']; } $this->db()->update($this->table->post, $insert)->where('idx', $post->idx)->execute(); } $insert['reg_date'] = $post['reg_date']; } if ($results->success == true) { if (isset($_FILES['file']['tmp_name']) == true && $_FILES['file']['tmp_name']) { $fileName = $_FILES['file']['name']; $fileIdx = $this->IM->getModule('attachment')->fileSave($fileName, $_FILES['file']['tmp_name'], 'dataroom', 'file'); $this->db()->update($this->table->post_version, array('file' => $fileIdx))->where('idx', $values->idx)->execute(); } $lastVersion = $this->db()->select($this->table->post_version)->where('parent', $values->parent)->orderBy('reg_date', 'desc')->getOne(); $this->db()->update($this->table->post, array('last_version' => $lastVersion->version, 'last_update' => $lastVersion->reg_date))->where('idx', $values->parent)->execute(); if ($values->post->category != 0) { $this->db()->update($this->table->category, array('last_post' => $lastVersion->reg_date))->where('idx', $values->post->category)->execute(); } $lastPost = $this->db()->select($this->table->post)->where('did', $values->did)->orderBy('last_update', 'desc')->getOne(); $this->db()->update($this->table->dataroom, array('last_post' => $lastPost->last_update))->where('did', $values->did)->execute(); $this->IM->setArticle('dataroom', $values->did, 'post', $values->post->idx, time()); $page = $this->IM->getPages($values->menu, $values->page); $results->redirect = $this->IM->getUrl($values->menu, $values->page, 'view', $values->parent); } } else { $results->success = false; $results->message = $this->getLanguage('error/required'); $results->errors = $values->errors; } } if ($action == 'getQna') { $values->get = Request('get'); if ($values->get == 'page') { $values->parent = Request('parent'); $values->post = $this->getPost($values->parent); $values->dataroom = $this->getDataroom($values->post->did); $values->qnalimit = $values->dataroom->qnalimit; $values->page = Request('page'); $values->qnas = $this->getQnaPage($values->parent, $values->page, $values->qnalimit); if ($values->page > 1 && count($values->qnas) == 0) { while ($values->page > 1) { $values->page = $values->page - 1; $values->qnas = $this->getMentPage($values->parent, $values->page, $values->qnalimit); if (count($values->qnas) > 0) { break; } } } if (count($values->qnas) > 0) { $results->page = $values->page; } } elseif ($values->get == 'idx') { $values->idx = Request('idx'); $qna = $this->db()->select($this->table->question)->where('idx', $values->idx)->getOne(); $values->dataroom = $this->getDataroom($qna->did); $values->qnalimit = $values->dataroom->qnalimit; $values->parent = $qna->parent; if ($qna != null) { $values->post = $this->getPost($values->parent); $prevCount = $this->db()->select($this->table->question)->where('parent', $qna->parent)->where('idx', $qna->idx, '>')->count(); $values->page = floor($prevCount / $values->qnalimit) + 1; $values->qnas = $this->getQnaPage($values->parent, $values->page, $values->qnalimit); $results->page = $values->page; } else { $results->page = null; $results->mentHtml = '<div class="empty">' . $this->getLanguage('qnaList/empty') . '</div>'; } } if (count($values->qnas) == 0) { $results->page = null; $results->qnaHtml = '<div class="empty">' . $this->getLanguage('qnaList/empty') . '</div>'; } else { $results->qnaHtml = ''; for ($i = 0, $loop = count($values->qnas); $i < $loop; $i++) { $results->qnaHtml .= $this->getQnaItem($values->qnas[$i]); } } $results->success = true; $results->parent = $values->parent; if ($results->page != null) { $results->qnaCount = number_format($values->post->qna); } $results->pagination = $this->getQnaPagination($results->parent, $results->page); } if ($action == 'getQnaView') { $values->idx = Request('idx'); $results->success = true; $results->idx = $values->idx; $results->qnaHtml = $this->getQnaView($values->idx); } if ($action == 'getQnaWrite') { $values->parent = Request('parent') ? Request('parent') : null; $values->post = $this->getPost($values->parent); if ($this->IM->getModule('member')->isLogged() == false) { $results->success = false; $results->message = $this->getLanguage('error/notLogged'); } elseif ($this->checkPermission('qna_write') == false) { $results->success = false; $results->message = $this->getLanguage('error/forbidden'); } elseif ($values->post->midx == $this->IM->getModule('member')->getLogged()) { $results->success = false; $results->message = $this->getLanguage('error/mypost'); } else { $results->success = true; $results->parent = $values->parent; $results->qnaHtml = $this->getQnaWrite($values->parent); } } if ($action == 'qnaWrite') { $values->errors = array(); $values->parent = Request('parent'); $values->post = $this->getPost($values->parent); $values->dataroom = $this->getDataroom($values->post->did); $values->did = $values->dataroom->did; $values->title = Request('title') ? Request('title') : ($values->errors['title'] = $this->getLanguage('postWrite/help/title/error')); $values->content = Request('content') ? Request('content') : ($values->errors['content'] = $this->getLanguage('postWrite/help/content/error')); $values->attachments = is_array(Request('attachments')) == true ? Request('attachments') : array(); for ($i = 0, $loop = count($values->attachments); $i < $loop; $i++) { $values->attachments[$i] = Decoder($values->attachments[$i]); } $values->content = $this->encodeContent($values->content, $values->attachments); if (empty($values->errors) == true) { $results->success = true; $mHash = new Hash(); $insert = array(); $insert['did'] = $values->did; $insert['parent'] = $values->parent; $insert['title'] = $values->title; $insert['content'] = $values->content; $insert['search'] = GetString($values->content, 'index'); if ($this->IM->getModule('member')->isLogged() == false) { $results->success = false; $results->message = $this->getLanguage('error/notLogged'); } elseif ($this->checkPermission('qna_write') == false) { $results->success = false; $results->message = $this->getLanguage('error/forbidden'); } elseif ($values->post->midx == $this->IM->getModule('member')->getLogged()) { $results->success = false; $results->message = $this->getLanguage('error/mypost'); } else { $insert['reg_date'] = time(); $insert['midx'] = $this->IM->getModule('member')->getLogged(); $insert['ip'] = $_SERVER['REMOTE_ADDR']; $values->idx = $this->db()->insert($this->table->question, $insert)->execute(); } if ($results->success == true) { for ($i = 0, $loop = count($values->attachments); $i < $loop; $i++) { if ($this->db()->select($this->table->attachment)->where('idx', $values->attachments[$i])->count() == 0) { $this->db()->insert($this->table->attachment, array('idx' => $values->attachments[$i], 'did' => $values->did, 'type' => 'QUESTION', 'parent' => $values->idx))->execute(); } } $qnanum = $this->db()->select($this->table->question)->where('parent', $values->parent)->count(); $this->db()->update($this->table->post, array('qna' => $qnanum))->where('idx', $values->parent)->execute(); $this->IM->getModule('push')->sendPush($values->post->midx, 'dataroom', 'question', $values->post->idx, array('from' => $this->IM->getModule('member')->getLogged(), 'idx' => $values->idx)); $results->idx = $values->idx; } } else { $results->success = false; $results->message = $this->getLanguage('error/required'); $results->errors = $values->errors; } } if ($action == 'qnaAnswer') { $values->errors = array(); $values->parent = Request('parent'); $values->question = $this->db()->select($this->table->question)->where('idx', $values->parent)->getOne(); $values->post = $this->getPost($values->question->parent); $values->dataroom = $this->getDataroom($values->post->did); $values->did = $values->dataroom->did; $values->content = Request('content') ? Request('content') : ($values->errors['content'] = $this->getLanguage('postWrite/help/content/error')); $values->attachments = is_array(Request('attachments')) == true ? Request('attachments') : array(); for ($i = 0, $loop = count($values->attachments); $i < $loop; $i++) { $values->attachments[$i] = Decoder($values->attachments[$i]); } $values->content = $this->encodeContent($values->content, $values->attachments); if (empty($values->errors) == true) { $results->success = true; $mHash = new Hash(); $insert = array(); $insert['did'] = $values->did; $insert['parent'] = $values->parent; $insert['content'] = $values->content; if ($this->IM->getModule('member')->isLogged() == false) { $results->success = false; $results->message = $this->getLanguage('error/notLogged'); } elseif ($this->checkPermission('qna_answer') == false && $values->post->midx != $this->IM->getModule('member')->getLogged()) { $results->success = false; $results->message = $this->getLanguage('error/forbidden'); } elseif ($values->question->midx == $this->IM->getModule('member')->getLogged()) { $results->success = false; $results->message = $this->getLanguage('error/myquestion'); } else { $insert['reg_date'] = time(); $insert['midx'] = $this->IM->getModule('member')->getLogged(); $insert['ip'] = $_SERVER['REMOTE_ADDR']; $values->idx = $this->db()->insert($this->table->answer, $insert)->execute(); } if ($results->success == true) { for ($i = 0, $loop = count($values->attachments); $i < $loop; $i++) { if ($this->db()->select($this->table->attachment)->where('idx', $values->attachments[$i])->count() == 0) { $this->db()->insert($this->table->attachment, array('idx' => $values->attachments[$i], 'did' => $values->did, 'type' => 'ANSWER', 'parent' => $values->idx))->execute(); } } $this->db()->update($this->table->question, array('has_answer' => 'TRUE'))->where('idx', $values->parent)->execute(); $this->IM->getModule('push')->sendPush($values->question->midx, 'dataroom', 'answer', $values->question->idx, array('from' => $this->IM->getModule('member')->getLogged(), 'idx' => $values->idx)); $results->idx = $values->idx; $results->parent = $values->parent; } } else { $results->success = false; $results->message = $this->getLanguage('error/required'); $results->errors = $values->errors; } } if ($action == 'getMent') { $values->get = Request('get'); if ($values->get == 'page') { $values->parent = Request('parent'); $values->post = $this->getPost($values->parent); $values->dataroom = $this->getDataroom($values->post->did); $values->mentlimit = $values->dataroom->mentlimit; $values->page = Request('page'); $values->ments = $this->getMentPage($values->parent, $values->page, $values->mentlimit); if ($values->page > 1 && count($values->ments) == 0) { while ($values->page > 1) { $values->page = $values->page - 1; $values->ments = $this->getMentPage($values->parent, $values->page, $values->mentlimit); if (count($values->ments) > 0) { break; } } } if (count($values->ments) == 0) { $results->page = null; $results->mentHtml = '<div class="empty">' . $this->getLanguage('mentList/empty') . '</div>'; } else { $results->page = $values->page; } } elseif ($values->get == 'idx') { $values->idx = Request('idx'); $ment = $this->getMent($values->idx); $values->parent = $ment->parent; if ($ment != null) { $values->page = $this->getMentPosition($values->idx); $values->post = $this->getPost($values->parent); $values->dataroom = $this->getDataroom($values->post->did); $values->mentlimit = $values->dataroom->mentlimit; $values->ments = $this->getMentPage($values->parent, $values->page, $values->mentlimit); $results->page = $values->page; } else { $results->page = null; $results->mentHtml = '<div class="empty">' . $this->getLanguage('mentList/empty') . '</div>'; } } $results->success = true; $results->parent = $values->parent; $results->mentCount = number_format($values->post->ment); $results->idxs = array(); $results->ments = array(); if (empty($values->mentHtml) == false) { $results->mentHtml = $values->mentHtml; } if ($results->page !== null) { for ($i = 0, $loop = count($values->ments); $i < $loop; $i++) { $results->ments[$i] = array('idx' => $values->ments[$i]->idx, 'modify_date' => $values->ments[$i]->modify_date, 'html' => $this->getMentItem($values->ments[$i])); $results->idxs[$i] = $values->ments[$i]->idx; } } $results->pagination = $this->getMentPagination($results->parent, $results->page); } if ($action == 'getMentDepth') { $idx = Request('idx'); $parent = $this->getMent($idx); if ($parent == null || $parent->is_delete == 'TRUE') { $results->success = false; $results->message = $this->getLanguage('error/notFound'); } elseif ($parent->depth >= 10) { $results->success = false; $results->message = $this->getLanguage('mentWrite/overdepth'); } else { $results->success = true; $results->depth = $parent->depth; $results->parent = $parent->parent; $results->source = $idx; } } if ($action == 'mentWrite') { $values->errors = array(); $values->idx = Request('idx'); $values->source = Request('source'); $values->parent = Request('parent'); $values->post = $this->getPost($values->parent); $values->dataroom = $this->getDataroom($values->post->did); $values->content = Request('content') ? Request('content') : ($values->errors['content'] = $this->getLanguage('postWrite/help/content/error')); $values->attachments = is_array(Request('attachments')) == true ? Request('attachments') : array(); for ($i = 0, $loop = count($values->attachments); $i < $loop; $i++) { $values->attachments[$i] = Decoder($values->attachments[$i]); } if ($values->source) { $sourceData = $this->getMent($values->source); if ($sourceData == null) { $results->success = false; $results->message = $this->getLanguage('mentWrite/deleteSource'); } } $values->content = $this->encodeContent($values->content, $values->attachments); if ($this->IM->getModule('member')->isLogged() == false) { $results->success = false; $results->message = $this->getLanguage('error/notLogged'); } elseif ($this->checkPermission('ment_write') == false) { $results->success = false; $results->message = $this->getLanguage('error/forbidden'); } elseif (empty($values->errors) == true) { $mHash = new Hash(); $insert = array(); $insert['did'] = $values->post->did; $insert['parent'] = $values->parent; $insert['midx'] = $this->IM->getModule('member')->getLogged(); $insert['content'] = $values->content; $insert['search'] = GetString($values->content, 'index'); if ($values->idx == null) { $insert['reg_date'] = time(); $insert['ip'] = $_SERVER['REMOTE_ADDR']; $values->idx = $this->db()->insert($this->table->ment, $insert)->execute(); if ($values->source) { $sourceData = $this->getMent($values->source); $head = $sourceData->head; $depth = $sourceData->depth + 1; $source = $sourceData->idx; if ($depth > 1) { $depthData = $this->db()->select($this->table->ment_depth)->where('head', $sourceData->head)->where('arrange', $sourceData->arrange, '>')->where('depth', $sourceData->depth, '<=')->orderBy('arrange', 'asc')->getOne(); if ($depthData == null) { $arrange = $values->idx; } else { $arrange = $depthData->arrange; $this->db()->update($this->table->ment_depth, array('arrange' => $this->db()->inc()))->where('head', $sourceData->head)->where('arrange', $arrange, '>=')->execute(); } } else { $arrange = $values->idx; } } else { $head = $values->idx; $arrange = $values->idx; $depth = 0; $source = 0; } $this->db()->insert($this->table->ment_depth, array('idx' => $values->idx, 'parent' => $values->parent, 'head' => $head, 'arrange' => $arrange, 'depth' => $depth, 'source' => $source))->execute(); if ($values->post->midx != $this->IM->getModule('member')->getLogged()) { $this->IM->getModule('push')->sendPush($values->post->midx, 'dataroom', 'ment', $values->post->idx, array('from' => $this->IM->getModule('member')->getLogged())); } $this->IM->getModule('member')->sendPoint(null, $values->dataroom->ment_point, 'dataroom', 'ment', array('idx' => $values->idx)); $this->IM->getModule('member')->addActivity(null, $values->dataroom->ment_exp, 'dataroom', 'ment', array('idx' => $values->idx)); if ($source != 0 && $sourceData->midx != 0 && $sourceData->midx != $this->IM->getModule('member')->getLogged()) { $this->IM->getModule('push')->sendPush($sourceData->midx, 'dataroom', 'replyment', $values->post->idx, array('idx' => $values->idx, 'from' => $this->IM->getModule('member')->getLogged())); } $results->success = true; } else { $ment = $this->getMent($values->idx); $values->dataroom = $this->getDataroom($ment->did); if ($this->checkPermission('ment_modify') == false && ($ment->midx != 0 && $ment->midx != $this->IM->getModule('member')->getLogged())) { $results->success = false; $results->message = $this->getLanguage('error/forbidden'); } elseif ($ment->midx == 0) { if ($mHash->password_validate($values->password, $ment->password) == false) { $results->success = false; $results->errors = array('password' => $this->getLanguage('error/incorrectPassword')); $results->message = $this->getLanguage('error/incorrectPassword'); } } if ($results->success == true) { if ($this->IM->getModule('member')->isLogged() == false) { $insert['name'] = $values->name; $insert['password'] = $values->password ? $mHash->password_hash($values->password) : ''; $insert['email'] = $values->email; $insert['ip'] = $_SERVER['REMOTE_ADDR']; } $insert['modify_date'] = time(); $this->db()->update($this->table->ment, $insert)->where('idx', $ment->idx)->execute(); if ($ment->midx != $this->IM->getModule('member')->getLogged()) { $this->IM->getModule('push')->sendPush($ment->midx, 'dataroom', 'ment_modify', $values->idx, array('from' => $this->IM->getModule('member')->getLogged())); } $this->IM->getModule('member')->addActivity(null, $values->dataroom->ment_exp, 'dataroom', 'ment_modify', array('idx' => $values->idx)); } $results->success = true; } if ($results->success == true) { for ($i = 0, $loop = count($values->attachments); $i < $loop; $i++) { if ($this->db()->select($this->table->attachment)->where('idx', $values->attachments[$i])->count() == 0) { $this->db()->insert($this->table->attachment, array('idx' => $values->attachments[$i], 'did' => $values->post->did, 'type' => 'MENT', 'parent' => $values->idx))->execute(); } } $mentnum = $this->db()->select($this->table->ment)->where('parent', $values->parent)->where('is_delete', 'FALSE')->count(); $this->db()->update($this->table->post, array('ment' => $mentnum))->where('idx', $values->parent)->execute(); $this->IM->setArticle('dataroom', $values->dataroom->did, 'ment', $values->idx, time()); $results->message = $this->getLanguage('mentWrite/success'); $results->idx = $values->idx; $results->parent = $values->parent; $results->page = $this->getMentPosition($values->idx); } } elseif (count($values->errors) > 0) { $results->success = false; $results->message = $this->getLanguage('error/required'); $results->errors = $values->errors; } } if ($action == 'mentModify') { $values->idx = Request('idx'); $values->password = Request('password'); $ment = $this->getMent($values->idx); if ($ment == null) { $results->success = false; $results->message = $this->getLanguage('error/notFound'); } elseif ($this->checkPermission('ment_modify') == true || $ment->midx == $this->IM->getModule('member')->getLogged()) { $results->success = true; } else { $results->success = false; $results->message = $this->getLanguage('error/forbidden'); } if ($results->success == true) { $ment->content = $this->getArticleContent($ment->content); $attachments = $this->db()->select($this->table->attachment)->where('parent', $ment->idx)->where('type', 'MENT')->get(); for ($i = 0, $loop = count($attachments); $i < $loop; $i++) { $attachments[$i] = $attachments[$i]->idx; } $ment->attachment = Encoder(json_encode($attachments)); $results->data = $ment; } } if ($action == 'mentDelete') { $values->idx = Request('idx'); $ment = $this->getMent($values->idx); if ($ment == null) { $results->success = false; $results->message = $this->getLanguage('error/notFound'); } elseif ($this->checkPermission('ment_delete') == true || $ment->midx == $this->IM->getModule('member')->getLogged()) { $results->success = true; $results->modalHtml = $this->getDelete('ment', $values->idx); } else { $results->success = false; $results->message = $this->getLanguage('error/forbidden'); } } if ($action == 'downloadConfirm') { $values->idx = Request('idx'); $values->version = Request('version'); $values->confirm = Request('confirm'); $values->post = $this->getPost($values->idx); $results->success = true; if ($this->IM->getModule('member')->isLogged() == false) { $results->success = false; $results->message = $this->getLanguage('error/notLogged'); } elseif ($this->checkPermission('download') == false && $values->post->midx != $this->IM->getModule('member')->getLogged()) { $results->success = false; $results->message = $this->getLanguage('error/forbidden'); } if ($results->success == true) { if ($values->version == 'latest') { $values->post_version = $this->db()->select($this->table->post_version)->where('parent', $values->idx)->orderBy('reg_date', 'desc')->getOne(); } else { $values->post_version = $this->db()->select($this->table->post_version)->where('parent', $values->idx)->where('version', $values->version)->getOne(); } if ($values->post_version == null) { $results->success = false; $results->message = $this->getLanguage('error/notFound'); } elseif ($values->post->midx == $this->IM->getModule('member')->getLogged()) { $results->success = true; $results->downloadUrl = $this->IM->getProcessUrl('dataroom', 'download', array('idx' => $values->idx, 'version' => $values->post_version->version)); } else { $values->purchase = $this->db()->select($this->table->purchase)->where('parent', $values->idx)->where('midx', $this->IM->getModule('member')->getLogged())->getOne(); if ($values->purchase == null) { if ($values->confirm == 'TRUE') { $price = $values->post->price; if ($price == 0 || $this->IM->getModule('member')->sendPoint(null, $price * -1, 'dataroom', 'purchase', array('idx' => $values->idx)) == true) { $this->db()->insert($this->table->purchase, array('parent' => $values->idx, 'midx' => $this->IM->getModule('member')->getLogged(), 'price' => $price, 'reg_date' => time()))->execute(); if ($price > 0) { $this->IM->getModule('member')->sendPoint($values->post->midx, round($price * 0.7), 'dataroom', 'sale', array('idx' => $values->idx), true); } $results->success = true; $results->downloadUrl = $this->IM->getProcessUrl('dataroom', 'download', array('idx' => $values->idx, 'version' => $values->post_version->version)); $this->IM->getModule('member')->addActivity(null, 0, 'dataroom', 'purchase', array('idx' => $values->idx)); } else { $results->success = false; $results->message = $this->getLanguage('error/notEnoughPoint'); } } else { $results->success = true; $results->modalHtml = $this->getDownload($values->idx, $values->post_version->version); } } else { $results->success = true; $results->downloadUrl = $this->IM->getProcessUrl('dataroom', 'download', array('idx' => $values->idx, 'version' => $values->post_version->version)); } } } } if ($action == 'download') { $values->idx = Request('idx'); $values->version = Request('version'); $values->post = $this->getPost($values->idx); if ($this->checkPermission('download') == false && $values->post->midx != $this->IM->getModule('member')->getLogged()) { header("HTTP/1.1 403 Forbidden"); exit; } $values->post_version = $this->db()->select($this->table->post_version)->where('parent', $values->idx)->where('version', $values->version)->getOne(); if ($values->post_version == null) { header("HTTP/1.1 404 Not Found"); } elseif ($values->post->midx == $this->IM->getModule('member')->getLogged()) { $this->IM->getModule('attachment')->fileDownload($values->post_version->file, false); } else { $values->purchase = $this->db()->select($this->table->purchase)->where('parent', $values->idx)->where('midx', $this->IM->getModule('member')->getLogged())->getOne(); if ($values->purchase == null) { header("HTTP/1.1 403 Forbidden"); } else { $this->db()->update($this->table->post, array('download' => $this->db()->inc()))->where('idx', $values->idx)->execute(); $this->IM->getModule('attachment')->fileDownload($values->post_version->file); } } exit; } if ($action == 'vote') { $values->type = in_array(Request('type'), array('post', 'ment')) == true ? Request('type') : 'post'; $values->idx = Request('idx'); $values->vote = in_array(Request('vote'), array('good', 'bad')) == true ? Request('vote') : 'good'; if ($this->IM->getModule('member')->isLogged() == false) { $results->success = false; $results->message = $this->getLanguage('error/notLogged'); } else { $article = $this->db()->select($this->table->{$values->type})->where('idx', $values->idx)->getOne(); if ($article == null) { $results->success = false; $results->message = $this->getLanguage('error/notFound'); } elseif ($article->midx == $this->IM->getModule('member')->getLogged()) { $results->success = false; $results->message = $this->getLanguage('vote/mypost'); } else { $check = $this->db()->select($this->table->history)->where('parent', $values->idx)->where('action', 'VOTE')->where('midx', $this->IM->getModule('member')->getLogged())->getOne(); if ($check == null) { $this->db()->update($this->table->{$values->type}, array($values->vote => $this->db()->inc()))->where('idx', $values->idx)->execute(); $this->db()->insert($this->table->history, array('parent' => $values->idx, 'action' => 'VOTE', 'midx' => $this->IM->getModule('member')->getLogged(), 'result' => strtoupper($values->vote), 'reg_date' => time()))->execute(); $results->success = true; $results->message = $this->getLanguage('vote/' . $values->vote); $results->liveUpdate = 'liveUpdateDataroom' . ucfirst($values->type) . ucfirst($values->vote) . $values->idx; $results->liveValue = number_format($values->vote + 1); } else { $results->success = false; $results->message = $this->getLanguage('vote/duplicated'); $results->result = $check->result; } } } } if ($action == 'delete') { $values->idx = Request('idx'); $values->type = Request('type'); if ($values->type == 'post') { $post = $this->getPost($values->idx); if ($post == null) { $results->success = false; $results->message = $this->getLanguage('error/notFound'); } elseif ($this->checkPermission('post_delete') == true || $post->midx == $this->IM->getModule('member')->getLogged()) { $results->success = true; } else { $results->success = false; $results->message = $this->getLanguage('error/forbidden'); } if ($results->success == true) { $this->db()->update($this->table->post, array('is_delete' => 'TRUE', 'FALSE'))->where('idx', $values->idx)->execute(); } $results->success = true; } elseif ($values->type == 'ment') { $ment = $this->getMent($values->idx); $post = $this->getPost($ment->parent); if ($ment == null) { $results->success = false; $results->message = $this->getLanguage('error/notFound'); } elseif ($this->checkPermission('ment_delete') == true || $ment->midx == $this->IM->getModule('member')->getLogged()) { $results->success = true; } else { $results->success = false; $results->message = $this->getLanguage('error/forbidden'); } if ($results->success == true) { if ($this->checkMentTree($values->idx) == false) { $this->db()->delete($this->table->ment)->where('idx', $values->idx)->execute(); $this->db()->delete($this->table->ment_depth)->where('idx', $values->idx)->execute(); if ($ment->source != 0) { $source = $this->getMent($ment->source); while ($source->is_delete == 'TRUE') { if ($this->checkMentTree($source->idx) == false) { $this->db()->delete($this->table->ment)->where('idx', $source->idx)->execute(); $this->db()->delete($this->table->ment_depth)->where('idx', $source->idx)->execute(); if ($source->source != 0) { $source = $this->getMent($source->source); } else { break; } } else { break; } } } $results->position = null; } else { $results->position = $values->idx; $this->db()->update($this->table->ment, array('is_delete' => 'TRUE', 'modify_date' => time(), 'content' => '', 'search' => ''))->where('idx', $ment->idx)->execute(); } $attachments = $this->db()->select($this->table->attachment)->where('parent', $ment->idx)->where('type', 'MENT')->get(); for ($i = 0, $loop = count($attachments); $i < $loop; $i++) { $attachments[$i] = $attachments[$i]->idx; } $this->IM->getModule('attachment')->fileDelete($attachments); $lastMent = $this->db()->select($this->table->ment)->where('parent', $ment->parent)->where('is_delete', 'FALSE')->orderBy('reg_date', 'desc')->get(); if (count($lastMent) == 0) { $this->db()->update($this->table->post, array('ment' => 0, 'last_ment' => $post->reg_date))->where('idx', $ment->parent)->execute(); $results->parent = $ment->parent; } else { if ($results->position == null) { $position = $this->db()->select($this->table->ment_depth)->where('parent', $ment->parent)->where('head', $ment->head, '<=')->where('arrange', $ment->arrange, '<')->orderBy('head', 'asc')->orderBy('arrange', 'asc')->get(); $lastPosition = array_pop($position); $results->position = $lastPosition->idx; } $this->db()->update($this->table->post, array('ment' => count($lastMent), 'last_ment' => $lastMent[0]->reg_date))->where('idx', $ment->parent)->execute(); } $this->IM->deleteArticle('dataroom', 'ment', $values->idx); $results->message = $this->getLanguage('mentDelete/success'); } } elseif ($values->type == 'answer') { $answer = $this->db()->select($this->table->answer)->where('idx', $values->idx)->getOne(); if ($answer == null) { $results->success = false; $results->message = $this->getLanguage('error/notFound'); } elseif ($this->checkPermission('answer_delete') == true || $answer->midx == $this->IM->getModule('member')->getLogged()) { $results->success = true; } else { $results->success = false; $results->message = $this->getLanguage('error/forbidden'); } if ($results->success == true) { $this->db()->delete($this->table->answer)->where('idx', $values->idx)->execute(); $attachments = $this->db()->select($this->table->attachment)->where('parent', $answer->idx)->where('type', 'ANSWER')->get(); for ($i = 0, $loop = count($attachments); $i < $loop; $i++) { $attachments[$i] = $attachments[$i]->idx; } $this->IM->getModule('attachment')->fileDelete($attachments); $this->db()->update($this->table->question, array('has_answer' => 'FALSE'))->where('idx', $answer->parent)->execute(); $results->parent = $answer->parent; $results->message = $this->getLanguage('answerDelete/success'); } } $results->type = $values->type; } $this->IM->fireEvent('afterDoProcess', 'dataroom', $action, $values, $results); return $results; }
<td colspan="3"> <textarea id="inp_title" rows="2" cols="20" style="width:260px"></textarea> </td> </tr> <tr> <td align="right"></td> <td colspan="3"> <input type="checkbox" id="inp_checked" onclick="ToggleAnchors();" /><?php echo GetString("SelectAnchor"); ?> <br /> <select size="5" name="allanchors" style="width: 255" id="allanchors" onchange="selectAnchor(this.value);"></select> </td> </tr> </table> </fieldset> <script type="text/javascript" src="../Scripts/Dialog/Dialog_Tag_A.js"></script>
function ParseManifest($cc, $parentManifest) { LogInfo("Processing manifest info...."); $xml = $this->GetManifest($cc, $parentManifest); // Extract baseUrl from manifest url $baseUrl = $xml->xpath("/ns:manifest/ns:baseURL"); if (isset($baseUrl[0])) { $baseUrl = GetString($baseUrl[0]); } else { $baseUrl = $parentManifest; if (strpos($baseUrl, '?') !== false) { $baseUrl = substr($baseUrl, 0, strpos($baseUrl, '?')); } $baseUrl = substr($baseUrl, 0, strrpos($baseUrl, '/')); } $url = $xml->xpath("/ns:manifest/ns:media[@*]"); if (isset($url[0]['href'])) { $count = 1; foreach ($url as $childManifest) { if (isset($childManifest['bitrate'])) { $bitrate = floor(GetString($childManifest['bitrate'])); } else { $bitrate = $count++; } $entry =& $childManifests[$bitrate]; $entry['bitrate'] = $bitrate; $entry['url'] = AbsoluteUrl($baseUrl, GetString($childManifest['href'])); $entry['xml'] = $this->GetManifest($cc, $entry['url']); } unset($entry, $childManifest); } else { $childManifests[0]['bitrate'] = 0; $childManifests[0]['url'] = $parentManifest; $childManifests[0]['xml'] = $xml; } $count = 1; foreach ($childManifests as $childManifest) { $xml = $childManifest['xml']; // Extract baseUrl from manifest url $baseUrl = $xml->xpath("/ns:manifest/ns:baseURL"); if (isset($baseUrl[0])) { $baseUrl = GetString($baseUrl[0]); } else { $baseUrl = $childManifest['url']; if (strpos($baseUrl, '?') !== false) { $baseUrl = substr($baseUrl, 0, strpos($baseUrl, '?')); } $baseUrl = substr($baseUrl, 0, strrpos($baseUrl, '/')); } $streams = $xml->xpath("/ns:manifest/ns:media"); foreach ($streams as $stream) { $array = array(); foreach ($stream->attributes() as $k => $v) { $array[strtolower($k)] = GetString($v); } $array['metadata'] = GetString($stream->{'metadata'}); $stream = $array; if (isset($stream['bitrate'])) { $bitrate = floor($stream['bitrate']); } else { if ($childManifest['bitrate'] > 0) { $bitrate = $childManifest['bitrate']; } else { $bitrate = $count++; } } while (isset($this->media[$bitrate])) { $bitrate++; } $streamId = isset($stream[strtolower('streamId')]) ? $stream[strtolower('streamId')] : ""; $mediaEntry =& $this->media[$bitrate]; $mediaEntry['baseUrl'] = $baseUrl; $mediaEntry['url'] = $stream['url']; if (isRtmpUrl($mediaEntry['baseUrl']) or isRtmpUrl($mediaEntry['url'])) { LogError("Provided manifest is not a valid HDS manifest"); } // Use embedded auth information when available $idx = strpos($mediaEntry['url'], '?'); if ($idx !== false) { $mediaEntry['queryString'] = substr($mediaEntry['url'], $idx); $mediaEntry['url'] = substr($mediaEntry['url'], 0, $idx); if (strlen($this->auth) != 0 and strcmp($this->auth, $mediaEntry['queryString']) != 0) { LogDebug("Manifest overrides 'auth': " . $mediaEntry['queryString']); } } else { $mediaEntry['queryString'] = $this->auth; } if (isset($stream[strtolower('bootstrapInfoId')])) { $bootstrap = $xml->xpath("/ns:manifest/ns:bootstrapInfo[@id='" . $stream[strtolower('bootstrapInfoId')] . "']"); } else { $bootstrap = $xml->xpath("/ns:manifest/ns:bootstrapInfo"); } if (isset($bootstrap[0]['url'])) { $mediaEntry['bootstrapUrl'] = AbsoluteUrl($mediaEntry['baseUrl'], GetString($bootstrap[0]['url'])); if (strpos($mediaEntry['bootstrapUrl'], '?') === false) { $mediaEntry['bootstrapUrl'] .= $this->auth; } } else { $mediaEntry['bootstrap'] = base64_decode(GetString($bootstrap[0])); } if (isset($stream['metadata'])) { $mediaEntry['metadata'] = base64_decode($stream['metadata']); } else { $mediaEntry['metadata'] = ""; } } unset($mediaEntry, $childManifest); } // Available qualities $bitrates = array(); if (!count($this->media)) { LogError("No media entry found"); } krsort($this->media, SORT_NUMERIC); LogDebug("Manifest Entries:\n"); LogDebug(sprintf(" %-8s%s", "Bitrate", "URL")); for ($i = 0; $i < count($this->media); $i++) { $key = KeyName($this->media, $i); $bitrates[] = $key; LogDebug(sprintf(" %-8d%s", $key, $this->media[$key]['url'])); } LogDebug(""); LogInfo("Quality Selection:\n Available: " . implode(' ', $bitrates)); // Quality selection if (is_numeric($this->quality) and isset($this->media[$this->quality])) { $key = $this->quality; $this->media = $this->media[$key]; } else { $this->quality = strtolower($this->quality); switch ($this->quality) { case "low": $this->quality = 2; break; case "medium": $this->quality = 1; break; default: $this->quality = 0; } while ($this->quality >= 0) { $key = KeyName($this->media, $this->quality); if ($key !== NULL) { $this->media = $this->media[$key]; break; } else { $this->quality -= 1; } } } LogInfo(" Selected : " . $key); // Parse initial bootstrap info $this->baseUrl = $this->media['baseUrl']; if (isset($this->media['bootstrapUrl'])) { $this->bootstrapUrl = $this->media['bootstrapUrl']; $this->UpdateBootstrapInfo($cc, $this->bootstrapUrl); } else { $bootstrapInfo = $this->media['bootstrap']; ReadBoxHeader($bootstrapInfo, $pos, $boxType, $boxSize); if ($boxType == "abst") { $this->ParseBootstrapBox($bootstrapInfo, $pos); } else { LogError("Failed to parse bootstrap info"); } } }
inp_height.value = height; } } else { if(img.height < defaultheight) { alert("<?php echo GetString("ImagetooSmall"); ?> "); inp_width.value = img.width; inp_height.value = img.height; } else { inp_height.value = defaultheight;
</tr> <tr> <td><?php echo GetString("TabIndex"); ?> :</td> <td><input type="text" id="inp_index" size="5" value="" maxlength="5" onkeypress="return CancelEventIfNotDigit()" /> </td> </tr> <tr> <td> </td> <td><input type="checkbox" id="inp_Disabled" /><label for="inp_Disabled"><?php echo GetString("Disabled"); ?> </label> </td> </tr> <tr> <td> </td> <td><input type="checkbox" id="inp_Readonly" /><label for="inp_Readonly"><?php echo GetString("Readonly"); ?> </label> </td> </tr> </table> </fieldset> <script type="text/javascript" src="../Scripts/Dialog/Dialog_Tag_Textarea.js"></script>
" /> <input type="button" style="width:75px; height:22px; margin-top:7px" class="formbutton" onclick="ReplaceTxt();" value="<?php echo GetString("Replace"); ?> " /> <input type="button" style="width:75px; height:22px; margin-top:7px" class="formbutton" onclick="ReplaceAllTxt();" value="<?php echo GetString("Replace All"); ?> "/> <input type="button" style="width:75px; height:22px; margin-top:7px" class="formbutton" onclick="top.close();" value="<?php echo GetString("Cancel"); ?> "/> </td> </tr> </table> </body> <script> var WordNotFound = "<?php echo GetString("WordNotFound"); ?> "; var WordReplaced = "<?php echo GetString("WordReplaced"); ?> "; </script> <script type="text/javascript" src="../Scripts/Dialog/DialogFoot.js"></script> <script type="text/javascript" src="../Scripts/Dialog/Dialog_Find.js"></script> </html>
var tempPath = browse_Frame.location; tempPath = tempPath + "&action=createfolder&foldername="+dir; browse_Frame.location = tempPath; } } else { var dir=prompt("<?php echo GetString("SpecifyNewFolderName"); ?> ","") if(dir) { var tempPath = browse_Frame.location; tempPath = tempPath + "&action=createfolder&foldername="+dir; browse_Frame.location = tempPath; }
}); }); </script> </div> <div class="writeColumn"> <table class="writeTable"> <tr> <td class="label"><?php echo $Module->getLanguage('class_title'); ?> </td> <td class="input"> <div class="inputBlock"> <input type="text" name="title" class="inputControl"<?php echo $class !== null ? ' value="' . GetString($class->title, 'input') . '"' : ''; ?> required> <div class="helpBlock" data-default="<?php echo $Module->getLanguage('create/help/title/default'); ?> " data-error="<?php echo $Module->getLanguage('create/help/title/error'); ?> "></div> </div> </td> </tr> <tr class="split"> <td colspan="2"></td> </tr>
<option value="row">row</option> <option value="col">col</option> <option value="rowgroup">rowgroup</option> <option value="colgroup">colgroup</option> </select> </td> </tr> <tr> <td><?php echo GetString("Title"); ?> :</td> <td colspan="4"><textarea id="inp_tooltip" rows="6" cols="53"></textarea></td> </tr> </table> </fieldset> <script type="text/javascript" src="../Scripts/Dialog/Dialog_Tag_Td.js"></script>
function doProcess($action) { $results = new stdClass(); $values = new stdClass(); if ($action == 'listUrl') { $menu = Request('menu'); $page = Request('page'); $page = $this->IM->getPages($menu, $page); $oKey = Request('oKey'); $oKeyword = Request('oKeyword'); $oLabel = Request('oLabel'); $oSort = Request('oSort'); $oDirection = Request('oDirection'); $key = Request('key'); $keyword = Request('keyword'); $label = Request('label'); $sort = Request('sort'); $direction = Request('direction'); $key = Request('key'); $keyword = Request('keyword'); $p = Request('p') ? Request('p') : 1; $queryString = 'menu=' . $page->menu . '&page=' . $page->page . '&key=' . $key . '&keyword=' . $keyword . '&label=' . $label . '&sort=' . $sort . '&direction=' . $direction . '&p=' . $p; if ($oKey != $key || $oKeyword != $keyword || $oLabel != $label || $oSort != $sort || $oDirection != $direction) { $p = 1; } $default = array(); if (strlen($keyword) == 0) { $default['key'] = ''; $default['keyword'] = ''; } if ($sort == 'idx' && $direction == 'desc') { $default['sort'] = $default['direction'] = ''; } if (isset($page->context->config->label) == true && $page->context->config->label == $label) { $default['label'] = ''; } if (isset($page->context->config->category) == true && $page->context->config->category == $category) { $default['category'] = ''; } $url = $this->IM->getUrl($page->menu, $page->page, 'list', $p) . $this->IM->getQueryString($default, $queryString); $results->success = true; $results->url = $url; } if ($action == 'create') { $values->errors = array(); $values->idx = Request('idx'); $values->lid = Request('lid'); $values->menu = Request('menu'); $values->page = Request('page'); $values->title = Request('title') ? Request('title') : ($values->errors['title'] = $this->getLanguage('create/help/title/error')); $values->content = Request('content') ? Request('content') : ($values->errors['content'] = $this->getLanguage('create/help/content/error')); $values->type = Request('type') ? Request('type') : ($values->errors['type'] = $this->getLanguage('create/help/type/error')); $values->attend = Request('attend') ? Request('attend') : ($values->errors['attend'] = $this->getLanguage('create/help/attend/error')); $values->lms = $this->getLms($values->lid); if ($values->lms->use_label != 'NONE') { $values->labels = is_array(Request('labels')) == true ? Request('labels') : array(); if ($values->lms->use_label == 'FORCE' && count($values->labels) == 0) { $values->errors['labels'] = $this->getLanguage('create/help/labels/error'); } } else { $values->labels = array(); } if ($this->IM->getModule('member')->isLogged() == false) { $results->success = false; $results->message = $this->getLanguage('error/notLogged'); } elseif (empty($values->errors) == true) { $results->success = true; $mHash = new Hash(); $insert = array(); $insert['lid'] = $values->lid; $insert['title'] = $values->title; $insert['content'] = $values->content; if ($values->idx == null) { $class = null; $reg_date = time(); $insert['midx'] = $this->IM->getModule('member')->getLogged(); $insert['reg_date'] = $reg_date; $insert['last_subject'] = $reg_date; $insert['ip'] = $_SERVER['REMOTE_ADDR']; $values->idx = $this->db()->insert($this->table->class, $insert)->execute(); // $this->IM->getModule('member')->sendPoint(null,$values->forum->post_point,'forum','post',array('idx'=>$values->idx)); // $this->IM->getModule('member')->addActivity(null,$values->forum->post_exp,'forum','post',array('idx'=>$values->idx)); } else { $class = $this->getClass($values->idx); $reg_date = $class->last_subject; if ($this->checkPermission('class_modify') == false && $class->midx != $this->IM->getModule('member')->getLogged()) { $results->success = false; $results->message = $this->getLanguage('error/forbidden'); } if ($results->success == true) { $this->db()->update($this->table->class, $insert)->where('idx', $class->idx)->execute(); /* if ($post->midx != $this->IM->getModule('member')->getLogged()) { $this->IM->getModule('push')->sendPush($post->midx,'forum','post_modify',$values->idx,array('from'=>$this->IM->getModule('member')->getLogged())); } $this->IM->getModule('member')->addActivity(null,0,'forum','post_modify',array('idx'=>$values->idx)); */ } } if ($results->success == true) { $cover = Request('cover'); if ($cover && preg_match('/^data:image/', $cover) == true) { $temp = explode(',', $cover); $type = array_shift($temp); $fileType = 'jpg'; if (preg_match('/^data:image\\/(.*?);/', $type, $match) == true) { $fileType = $match[1]; } $imageData = base64_decode(implode(',', $temp)); $tempFileName = $this->IM->getModule('attachment')->getTempPath(true) . '/' . md5($imageData); file_put_contents($tempFileName, $imageData); if ($this->IM->getModule('attachment')->createThumbnail($tempFileName, $tempFileName, 420, 560, false) == true) { if ($class == null || $class->cover == 0) { $coverIdx = $this->IM->getModule('attachment')->fileSave('cover.' . $fileType, $tempFileName, 'lms', 'cover'); } else { $coverIdx = $this->IM->getModule('attachment')->fileReplace($class->cover, 'cover.' . $fileType, $tempFileName); } $this->db()->update($this->table->class, array('cover' => $coverIdx))->where('idx', $values->idx)->execute(); } } $labels = $this->db()->select($this->table->class_label)->where('idx', $values->idx)->get(); for ($i = 0, $loop = count($labels); $i < $loop; $i++) { if (in_array($labels[$i]->label, $values->labels) == false) { $this->db()->delete($this->table->class_label)->where('idx', $values->idx)->where('label', $labels[$i]->label)->execute(); $lastClass = $this->db()->select($this->table->class_label)->where('label', $labels[$i]->label)->orderBy('reg_date', 'desc')->get(); $classnum = count($lastClass); $lastClassTime = $classnum > 0 ? $lastClass[0]->reg_date : 0; $this->db()->update($this->table->label, array('classnum' => $classnum, 'last_class' => $lastClassTime))->where('idx', $labels[$i]->label)->execute(); } } if (count($values->labels) > 0) { for ($i = 0, $loop = count($values->labels); $i < $loop; $i++) { if ($this->db()->select($this->table->class_label)->where('idx', $values->idx)->where('label', $values->labels[$i])->count() == 0) { $this->db()->insert($this->table->class_label, array('idx' => $values->idx, 'label' => $values->labels[$i], 'reg_date' => $reg_date))->execute(); $lastClass = $this->db()->select($this->table->class_label)->where('label', $values->labels[$i])->orderBy('reg_date', 'desc')->get(); $classnum = count($lastClass); $lastClassTime = $classnum > 0 ? $lastClass[0]->reg_date : 0; $this->db()->update($this->table->label, array('classnum' => $classnum, 'last_class' => $lastClassTime))->where('idx', $values->labels[$i])->execute(); } } } $lastClass = $this->db()->select($this->table->class)->where('lid', $values->lid)->orderBy('last_subject', 'desc')->get(); $classnum = count($lastClass); $lastClassTime = $classnum > 0 ? $lastClass[0]->last_subject : 0; $this->db()->update($this->table->lms, array('classnum' => $classnum, 'last_class' => $lastClassTime))->where('lid', $values->lid)->execute(); $page = $this->IM->getPages($values->menu, $values->page); if ($page->context->config == null) { $results->redirect = $this->IM->getUrl($values->menu, $values->page, 'class', $values->idx); } elseif (in_array($page->context->config->label, $values->labels) == true) { $results->redirect = $this->IM->getUrl($values->menu, $values->page, 'class', $values->idx); } else { $redirectPage = $this->getPostPage($values->idx); $results->redirect = $this->IM->getUrl($redirectPage->menu, $redirectPage->page, 'class', $values->idx); } } } else { $results->success = false; $results->message = $this->getLanguage('error/required'); $results->errors = $values->errors; } } if ($action == 'postSubject') { $values->type = Request('type'); $values->parent = Request('parent'); $class = $this->getClass($values->parent); if ($values->type == 'add' || $values->type == 'modify') { if ($class == null) { $results->success = false; $results->message = $this->getLanguage('error/notFound'); } elseif ($this->IM->getModule('member')->isLogged() == false) { $results->success = false; $results->message = $this->getLanguage('error/notLogged'); } elseif ($this->checkPermission('add_subject') == true || $class->midx == $this->IM->getModule('member')->getLogged()) { $results->success = true; $results->modalHtml = $this->getPostSubjectModal($values->parent); } else { $results->success = false; $results->message = $this->getLanguage('error/forbidden'); } } else { $values->errors = array(); $values->title = Request('title') ? Request('title') : ($values->errors['title'] = $this->getLanguage('addSubject/help/title/error')); if ($class == null) { $results->success = false; $results->message = $this->getLanguage('error/notFound'); } elseif ($this->IM->getModule('member')->isLogged() == false) { $results->success = false; $results->message = $this->getLanguage('error/notLogged'); } elseif (count($values->errors) == 0) { $results->success = true; $sort = $this->db()->select($this->table->subject)->where('parent', $values->parent)->orderBy('sort', 'desc')->getOne(); $sort = $sort == null ? 0 : $sort->sort + 1; $this->db()->insert($this->table->subject, array('lid' => $class->lid, 'parent' => $values->parent, 'midx' => $this->IM->getModule('member')->getLogged(), 'title' => $values->title, 'reg_date' => time(), 'sort' => $sort))->execute(); $lastSubject = $this->db()->select($this->table->subject)->where('parent', $values->parent)->orderBy('reg_date', 'desc')->get(); $subject = count($lastSubject); $lastSubjectTime = $subject > 0 ? $lastSubject[0]->reg_date : 0; $this->db()->update($this->table->class, array('last_subject' => $lastSubjectTime, 'subject' => $subject))->where('idx', $values->parent)->execute(); } else { $results->success = false; $results->message = $this->getLanguage('error/required'); $results->errors = $values->errors; } } } if ($action == 'getConfig') { $values->type = Request('type'); $values->idx = Request('idx'); if ($values->type == 'post') { $post = $this->getPost($values->idx); $class = $this->getClass($post->class); } else { $subject = $this->getSubject($values->idx); $class = $this->getClass($subject->parent); } if ($class->midx == $this->IM->getModule('member')->getLogged()) { $results->success = true; if ($values->type == 'post') { $results->posts = array(); $posts = $this->db()->select($this->table->post)->where('parent', $post->parent)->orderBy('sort', 'asc')->get(); for ($i = 0, $loop = count($posts); $i < $loop; $i++) { if ($posts[$i]->idx == $values->idx) { continue; } $results->posts[] = array('idx' => $posts[$i]->idx, 'title' => $posts[$i]->title); } } $results->subjects = array(); $subjects = $this->db()->select($this->table->subject)->where('parent', $class->idx)->orderBy('sort', 'asc')->get(); for ($i = 0, $loop = count($subjects); $i < $loop; $i++) { if ($values->type == 'post' && $post->parent == $subjects[$i]->idx) { continue; } $results->subjects[] = array('idx' => $subjects[$i]->idx, 'title' => $subjects[$i]->title); } } else { $results->success = false; $results->message = $this->getLanguage('error/forbidden'); } } if ($action == 'getPostContext') { $values->idx = Request('idx'); $values->post = $this->getPost($values->idx); $values->attend = $this->getAttend($values->post->class); if ($values->post != null) { $results->success = true; $results->context = json_decode($values->post->context); if ($values->attend->mode == "P") { $trackings = $this->db()->select($this->table->tracking)->where('pidx', $values->idx)->get(); $results->tracking = new stdClass(); $results->tracking->last_position = 0; $results->tracking->tracking = array(); for ($i = 0; $i < $results->context->time; $i++) { $results->tracking->tracking[$i] = 0; } foreach ($trackings as $tracking) { for ($i = 0; $i < $results->context->time; $i++) { $count = base_convert(substr($tracking->tracking, $i, 1), 32, 10); $results->tracking->tracking[$i] += $count; } } } else { $results->tracking = $this->db()->select($this->table->tracking)->where('midx', $this->IM->getModule('member')->getLogged())->where('pidx', $values->idx)->getOne(); if ($results->tracking == null) { $results->tracking = new stdClass(); $results->tracking->last_position = 0; $results->tracking->type = $values->post->type; if ($values->post->type == 'youtube' || $values->post->type == 'video') { $results->tracking->tracking = 'T' . str_pad('', $results->context->time, '0'); } } else { if ($values->post->type == 'youtube' || $values->post->type == 'video') { $results->tracking->tracking = 'T' . $results->tracking->tracking; } } } } else { $results->success = false; $results->message = $this->getLanguage('error/notFound'); } } if ($action == 'tracking') { $values->pidx = Request('pidx'); $values->post = $this->getPost($values->pidx); $values->midx = $this->IM->getModule('member')->getLogged(); $values->last_position = Request('last_position'); if ($values->post->type == 'youtube') { $context = json_decode($values->post->context); $values->tracking = substr(Request('tracking'), 1); if (strlen($values->tracking) != $context->time) { $values->tracking = str_pad(substr($values->tracking, 0, $context->time), $context->time, STR_PAD_RIGHT); } $values->percent = round(($context->time - substr_count($values->tracking, '0')) / $context->time * 100); } if ($this->db()->select($this->table->tracking)->where('midx', $values->midx)->where('pidx', $values->pidx)->count() == 0) { $this->db()->insert($this->table->tracking, array('midx' => $values->midx, 'pidx' => $values->pidx, 'tracking' => $values->tracking, 'percent' => $values->percent, 'last_position' => $values->last_position, 'reg_date' => time(), 'update_date' => time()))->execute(); } else { $this->db()->update($this->table->tracking, array('tracking' => $values->tracking, 'percent' => $values->percent, 'last_position' => $values->last_position, 'update_date' => time()))->where('midx', $values->midx)->where('pidx', $values->pidx)->execute(); } $results->success = true; } if ($action == 'addItem') { $values->parent = Request('parent'); $subject = $this->getSubject($values->parent); if ($subject == null) { $results->success = false; $results->message = $this->getLanguage('error/notFound'); } elseif ($this->IM->getModule('member')->isLogged() == false) { $results->success = false; $results->message = $this->getLanguage('error/notLogged'); } elseif ($this->checkPermission('add_item') == true || $subject->midx == $this->IM->getModule('member')->getLogged()) { $results->success = true; $results->modalHtml = $this->getAddItemModal($values->parent); } else { $results->success = false; $results->message = $this->getLanguage('error/forbidden'); } } if ($action == 'postWrite') { $values->errors = array(); $values->lid = Request('lid'); $values->idx = Request('idx'); $values->parent = Request('parent'); $values->subject = $this->getSubject($values->parent); $values->lms = $this->getLms($values->lid); $values->type = Request('type'); $values->menu = Request('menu'); $values->page = Request('page'); $values->title = Request('title') ? Request('title') : ($values->errors['title'] = $this->getLanguage('postWrite/help/title/error')); $values->content = Request('content') ? Request('content') : ($values->errors['content'] = $this->getLanguage('postWrite/help/content/error')); $values->context = new stdClass(); $values->progress_check = Request('progress_check') ? 'TRUE' : 'FALSE'; $values->attachments = is_array(Request('attachments')) == true ? Request('attachments') : array(); for ($i = 0, $loop = count($values->attachments); $i < $loop; $i++) { $values->attachments[$i] = Decoder($values->attachments[$i]); } $values->content = $this->encodeContent($values->content, $values->attachments); if ($values->type == 'youtube') { $values->context->id = Request('id') ? Request('id') : ($values->errors['url'] = $this->getLanguage('youtube/help/url/error')); $values->context->thumbnail = Request('thumbnail'); $values->context->afk_check = Request('afk_check') ? true : false; if ($values->context->afk_check == true) { $values->context->afk_check_time = preg_match('/^[1-9]+[0-9]*$/', Request('afk_check_time')) == true && Request('afk_check_time') >= 60 ? Request('afk_check_time') : ($values->errors['afk_check_time'] = $this->getLanguage('youtube/help/afk_check_time/error')); } else { $values->context->afk_check_time = 0; } if (preg_match('/^PT(([0-9]+)H)?(([0-9]+)M)?(([0-9]+)S)?$/', Request('time'), $time) == true) { $values->context->time = $time[2] * 3600 + $time[4] * 60 + $time[6]; } else { $values->context->time = -1; } $values->context->caption = Request('caption') == "true"; } if ($values->type == 'video') { $values->context->id = Request('id') ? Request('id') : ($values->errors['file'] = $this->getLanguage('video/help/file/error')); $values->context->privacy = Request('privacy'); $values->context->afk_check = Request('afk_check') ? true : false; if ($values->context->afk_check == true) { $values->context->afk_check_time = preg_match('/^[1-9]+[0-9]*$/', Request('afk_check_time')) == true && Request('afk_check_time') >= 60 ? Request('afk_check_time') : ($values->errors['afk_check_time'] = $this->getLanguage('youtube/help/afk_check_time/error')); } else { $values->context->afk_check_time = 0; } } $values->context = json_encode($values->context); if ($this->IM->getModule('member')->isLogged() == false) { $results->success = false; $results->message = $this->getLanguage('error/notLogged'); } elseif (empty($values->errors) == true) { $results->success = true; $mHash = new Hash(); $insert = array(); $insert['lid'] = $values->lid; $insert['class'] = $values->subject->parent; $insert['parent'] = $values->parent; $insert['type'] = $values->type; $insert['title'] = $values->title; $insert['content'] = $values->content; $insert['search'] = GetString($values->content, 'index'); $insert['context'] = $values->context; $insert['progress_check'] = $values->progress_check; $insert['reg_date'] = time(); if ($values->idx == null) { $post = null; $sort = $this->db()->select($this->table->post)->where('parent', $values->parent)->orderBy('sort', 'desc')->getOne(); $sort = $sort == null ? 0 : $sort->sort + 1; $insert['sort'] = $sort; $insert['midx'] = $this->IM->getModule('member')->getLogged(); $values->idx = $this->db()->insert($this->table->post, $insert)->execute(); // $this->IM->getModule('member')->sendPoint(null,$values->forum->post_point,'forum','post',array('idx'=>$values->idx)); // $this->IM->getModule('member')->addActivity(null,$values->forum->post_exp,'forum','post',array('idx'=>$values->idx)); } else { $post = $this->getPost($values->idx); $reg_date = $post->last_ment; if ($this->checkPermission('post_modify') == false && $post->midx != $this->IM->getModule('member')->getLogged()) { $results->success = false; $results->message = $this->getLanguage('error/forbidden'); } if ($results->success == true) { $this->db()->update($this->table->post, $insert)->where('idx', $post->idx)->execute(); if ($post->midx != $this->IM->getModule('member')->getLogged()) { $this->IM->getModule('push')->sendPush($post->midx, 'forum', 'post_modify', $values->idx, array('from' => $this->IM->getModule('member')->getLogged())); } $this->IM->getModule('member')->addActivity(null, 0, 'forum', 'post_modify', array('idx' => $values->idx)); } } if ($results->success == true) { for ($i = 0, $loop = count($values->attachments); $i < $loop; $i++) { if ($this->db()->select($this->table->attachment)->where('idx', $values->attachments[$i])->count() == 0) { $this->db()->insert($this->table->attachment, array('idx' => $values->attachments[$i], 'lid' => $values->lid, 'type' => 'POST', 'parent' => $values->idx))->execute(); } } $results->redirect = $this->IM->getUrl($values->menu, $values->page, 'class', $values->subject->parent); } } else { $results->success = false; $results->message = $this->getLanguage('error/required'); $results->errors = $values->errors; } } if ($action == 'postView') { $values->idx = Request('idx'); $values->post = $this->getPost($values->idx); $attend = $this->getAttend($values->post->class); if ($this->IM->getModule('member')->isLogged() == false) { $results->success = false; $results->message = $this->getLanguage('error/notLogged'); } else { if ($attend == null) { $results->success = true; $results->modalHtml = $this->getAttendClassModal($values->post->class, $values->idx); } else { if ($attend->status == 'ACTIVE') { $page = $this->getClassPage($values->post->class); $results->success = true; $results->redirect = $this->IM->getUrl($page->menu, $page->page, 'view', $values->idx); } else { $results->success = false; // To Do : Message } } } } if ($action == 'postModify') { $values->idx = Request('idx'); $post = $this->getPost($values->idx); if ($post == null) { $results->success = false; $results->message = $this->getLanguage('error/notFound'); } elseif ($this->checkPermission('post_modify') == true || $post->midx == $this->IM->getModule('member')->getLogged()) { $results->success = true; $results->permission = true; } else { $results->success = false; $results->message = $this->getLanguage('error/forbidden'); } } if ($action == 'postDelete') { $values->idx = Request('idx'); $post = $this->getPost($values->idx); if ($post == null) { $results->success = false; $results->message = $this->getLanguage('error/notFound'); } elseif ($this->checkPermission('post_delete') == true || $post->midx == $this->IM->getModule('member')->getLogged()) { $results->success = true; $results->modalHtml = $this->getDelete('post', $values->idx); } else { $results->success = false; $results->message = $this->getLanguage('error/forbidden'); } } if ($action == 'attendClass') { $values->idx = Request('idx'); $values->class = $this->getClass($values->idx); $values->post = Request('post'); $attend = $this->getAttend($values->class->idx); if ($this->IM->getModule('member')->isLogged() == false) { $results->success = false; $results->message = $this->getLanguage('error/notLogged'); } else { if ($attend == null) { $results->success = true; $status = 'ACTIVE'; $this->db()->insert($this->table->attend, array('midx' => $this->IM->getModule('member')->getLogged(), 'class' => $values->class->idx, 'reg_date' => time(), 'status' => $status))->execute(); $student = $this->db()->select($this->table->attend)->where('class', $values->class->idx)->where('status', 'ACTIVE')->count(); $this->db()->update($this->table->class, array('student' => $student))->where('idx', $values->class->idx)->execute(); if ($values->post != null) { $results->post = $values->post; } else { $page = $this->getClassPage($values->idx); $results->redirect = $this->IM->getUrl($page->menu, $page->page, 'class', $values->idx); } } else { if ($attend->mode == 'P') { $results->success = false; $results->message = $this->getLanguage('error/attendMyClass'); } else { $results->success = false; // $results->message = $this->getLanguage('error/attendMyClass'); } } } } if ($action == 'mentWrite') { $values->errors = array(); $values->idx = Request('idx'); $values->fromidx = Request('fromidx') ? Request('fromidx') : 0; $values->parent = Request('parent'); $values->post = $this->getPost($values->parent); $values->lms = $this->getLms($values->post->lid); $values->content = Request('content') ? Request('content') : ($values->errors['content'] = $this->getLanguage('mentWrite/help/content/error')); $values->position = is_numeric(Request('position')) == true ? Request('position') : 0; $results->success = true; if ($this->IM->getModule('member')->isLogged() == false) { $results->success = false; $results->message = $this->getLanguage('error/notLogged'); } elseif ($results->success == true && empty($values->errors) == true) { $mHash = new Hash(); $insert = array(); $insert['lid'] = $values->post->lid; $insert['parent'] = $values->parent; $insert['fromidx'] = $values->fromidx; $insert['midx'] = $this->IM->getModule('member')->getLogged(); $insert['content'] = $values->content; $insert['position'] = $values->position; if ($values->idx == null) { $insert['reg_date'] = time(); $insert['ip'] = $_SERVER['REMOTE_ADDR']; $values->idx = $this->db()->insert($this->table->ment, $insert)->execute(); if ($values->post->midx != $this->IM->getModule('member')->getLogged()) { // $this->IM->getModule('push')->sendPush($values->post->midx,'forum','ment',$values->post->idx,array('idx'=>$values->idx,'from'=>$this->IM->getModule('member')->getLogged())); } // if ($source != 0 && $sourceData->midx != $this->IM->getModule('member')->getLogged()) { // $this->IM->getModule('push')->sendPush($sourceData->midx,'forum','replyment',$values->post->idx,array('idx'=>$values->idx,'from'=>$this->IM->getModule('member')->getLogged())); // } // $this->IM->getModule('member')->sendPoint(null,$values->forum->ment_point,'forum','ment',array('idx'=>$values->idx)); // $this->IM->getModule('member')->addActivity(null,$values->forum->ment_exp,'forum','ment',array('idx'=>$values->idx)); } else { /* $ment = $this->getMent($values->idx); if ($this->checkPermission('ment_modify') == false && ($ment->midx != 0 && $ment->midx != $this->IM->getModule('member')->getLogged())) { $results->success = false; $results->message = $this->getLanguage('error/forbidden'); } elseif ($ment->midx == 0) { if ($mHash->password_validate($values->password,$ment->password) == false) { $results->success = false; $results->errors = array('password'=>$this->getLanguage('error/incorrectPassword')); $results->message = $this->getLanguage('error/incorrectPassword'); } } if ($results->success == true) { if ($this->IM->getModule('member')->isLogged() == false) { $insert['name'] = $values->name; $insert['password'] = $values->password ? $mHash->password_hash($values->password) : ''; $insert['email'] = $values->email; $insert['ip'] = $_SERVER['REMOTE_ADDR']; } $insert['modify_date'] = time(); $this->db()->update($this->table->ment,$insert)->where('idx',$ment->idx)->execute(); if ($ment->midx != $this->IM->getModule('member')->getLogged()) { $this->IM->getModule('push')->sendPush($ment->midx,'forum','ment_modify',$values->idx,array('from'=>$this->IM->getModule('member')->getLogged())); } $this->IM->getModule('member')->addActivity(null,0,'forum','ment',array('idx'=>$values->idx)); } */ } if ($results->success == true) { $lastMent = $this->db()->select($this->table->ment)->where('parent', $values->parent)->where('is_delete', 'FALSE')->orderBy('reg_date', 'desc')->get(); $mentnum = count($lastMent); $lastMentTime = $mentnum > 0 ? $lastMent[0]->reg_date : $values->post->reg_date; $this->db()->update($this->table->post, array('ment' => $mentnum, 'last_ment' => $lastMentTime))->where('idx', $values->parent)->execute(); // $this->IM->setArticle('forum',$values->post->lid,'post',$values->parent,time()); // $this->IM->setArticle('forum',$values->post->lid,'ment',$values->idx,time()); $results->message = $this->getLanguage('mentWrite/success'); $results->idx = $values->idx; $results->parent = $values->parent; } } elseif (count($values->errors) > 0) { $results->success = false; $results->message = $this->getLanguage('error/required'); $results->errors = $values->errors; } } if ($action == 'mentModify') { $values->idx = Request('idx'); $ment = $this->getMent($values->idx); if ($ment == null) { $results->success = false; $results->message = $this->getLanguage('error/notFound'); } elseif ($this->checkPermission('ment_modify') == true || $ment->midx == $this->IM->getModule('member')->getLogged()) { $results->success = true; } else { $results->success = false; $results->message = $this->getLanguage('error/forbidden'); } if ($results->success == true) { $ment->content = $this->getArticleContent($ment->content); $attachments = $this->db()->select($this->table->attachment)->where('parent', $ment->idx)->where('type', 'MENT')->get(); for ($i = 0, $loop = count($attachments); $i < $loop; $i++) { $attachments[$i] = $attachments[$i]->idx; } $ment->attachment = Encoder(json_encode($attachments)); $results->data = $ment; } } if ($action == 'vote') { $values->idx = Request('idx'); $values->vote = in_array(Request('vote'), array('good', 'bad')) == true ? Request('vote') : 'good'; if ($this->IM->getModule('member')->isLogged() == false) { $results->success = false; $results->message = $this->getLanguage('error/notLogged'); } else { $values->post = $this->getPost($values->idx); if ($values->post == null) { $results->success = false; $results->message = $this->getLanguage('error/notFound'); } elseif ($values->post->midx == $this->IM->getModule('member')->getLogged()) { $results->success = false; $results->message = $this->getLanguage('vote/mypost'); } else { $values->forum = $this->getLms($values->post->lid); $check = $this->db()->select($this->table->history)->where('parent', $values->idx)->where('action', 'VOTE')->where('midx', $this->IM->getModule('member')->getLogged())->getOne(); if ($check == null) { if ($values->vote == 'good') { $this->db()->update($this->table->post, array('vote' => $this->db()->inc()))->where('idx', $values->idx)->execute(); } else { $this->db()->update($this->table->post, array('vote' => $this->db()->dec()))->where('idx', $values->idx)->execute(); } $this->db()->insert($this->table->history, array('type' => 'POST', 'parent' => $values->idx, 'action' => 'VOTE', 'midx' => $this->IM->getModule('member')->getLogged(), 'result' => strtoupper($values->vote), 'reg_date' => time()))->execute(); $results->success = true; $results->message = $this->getLanguage('vote/' . $values->vote); $results->liveUpdate = 'liveUpdateLmsVote' . $values->idx; $results->liveValue = number_format($values->vote == 'good' ? $values->post->vote + 1 : $values->post->vote - 1); $this->IM->getModule('member')->sendPoint(null, $values->forum->vote_point, 'forum', 'post_' . $values->vote, array('idx' => $values->idx)); $this->IM->getModule('member')->addActivity(null, $values->forum->vote_exp, 'forum', 'post_' . $values->vote, array('idx' => $values->idx)); $this->IM->getModule('push')->sendPush($values->post->midx, 'forum', 'post_' . $values->vote, $values->post->idx, array('from' => $this->IM->getModule('member')->getLogged())); } else { $results->success = false; $results->message = $this->getLanguage('vote/duplicated'); $results->result = $check->result; } } } } if ($action == 'getMent') { $values->parent = Request('parent'); $ments = $this->db()->select($this->table->ment)->where('parent', $values->parent)->get(); for ($i = 0, $loop = count($ments); $i < $loop; $i++) { $member = $this->IM->getModule('member')->getMember($ments[$i]->midx); $ments[$i]->nickname = $member->nickname; $ments[$i]->photo = $member->photo; } $results->success = true; $results->ments = $ments; } if ($action == 'getMentStatus') { $values->parent = Request('parent'); $status = array(); for ($i = 0; $i < 20; $i++) { $status[$i] = array('total' => 0); } $ments = $this->db()->select($this->table->ment)->where('parent', $values->parent)->get(); for ($i = 0, $loop = count($ments); $i < $loop; $i++) { $position = floor($ments[$i]->position / 5); $position = $position == 20 ? 19 : $position; $status[$position]['total']++; if (isset($status[$position][$ments[$i]->type]) == true) { $status[$position][$ments[$i]->type]++; } else { $status[$position][$ments[$i]->type] = 1; } } $results->success = true; $results->status = $status; } if ($action == 'mentDelete') { $values->idx = Request('idx'); $ment = $this->getMent($values->idx); if ($ment == null) { $results->success = false; $results->message = $this->getLanguage('error/notFound'); } elseif ($this->checkPermission('ment_delete') == true || $ment->midx == $this->IM->getModule('member')->getLogged()) { $results->success = true; $results->modalHtml = $this->getDelete('ment', $values->idx); } else { $results->success = false; $results->message = $this->getLanguage('error/forbidden'); } } if ($action == 'delete') { $values->idx = Request('idx'); $values->type = Request('type'); if ($values->type == 'post') { $post = $this->getPost($values->idx); $values->forum = $this->getLms($post->lid); if ($post == null) { $results->success = false; $results->message = $this->getLanguage('error/notFound'); } elseif ($this->checkPermission('post_delete') == true || $post->midx == $this->IM->getModule('member')->getLogged()) { $results->success = true; } else { $results->success = false; $results->message = $this->getLanguage('error/forbidden'); } if ($results->success == true) { $this->db()->delete($this->table->post)->where('idx', $post->idx)->execute(); $attachments = $this->db()->select($this->table->attachment)->where('parent', $post->idx)->where('type', 'POST')->get(); for ($i = 0, $loop = count($attachments); $i < $loop; $i++) { $attachments[$i] = $attachments[$i]->idx; } $this->IM->getModule('attachment')->fileDelete($attachments); $ments = $this->db()->select($this->table->ment)->where('parent', $post->idx)->get(); for ($i = 0, $loop = count($ments); $i < $loop; $i++) { $this->db()->delete($this->table->ment)->where('idx', $ments[$i]->idx)->execute(); $this->db()->delete($this->table->ment_depth)->where('idx', $ments[$i]->idx)->execute(); $attachments = $this->db()->select($this->table->attachment)->where('parent', $ments[$i]->idx)->where('type', 'MENT')->get(); for ($j = 0, $loopj = count($attachments); $j < $loopj; $j++) { $attachments[$j] = $attachments[$j]->idx; } $this->IM->getModule('attachment')->fileDelete($attachments); } $labels = $this->db()->select($this->table->class_label)->where('idx', $post->idx)->get(); for ($i = 0, $loop = count($labels); $i < $loop; $i++) { $this->db()->delete($this->table->class_label)->where('idx', $values->idx)->where('label', $labels[$i]->label)->execute(); $lastPost = $this->db()->select($this->table->class_label)->where('label', $labels[$i]->label)->orderBy('reg_date', 'desc')->get(); $postnum = count($lastPost); $lastPostTime = $postnum > 0 ? $lastPost[0]->reg_date : 0; $this->db()->update($this->table->label, array('postnum' => $postnum, 'last_post' => $lastPostTime))->where('idx', $labels[$i]->label)->execute(); } $this->IM->getModule('member')->sendPoint($post->midx, $values->forum->ment_point * -1, 'forum', 'post_delete', array('title' => $post->title), true); if ($post->midx == $this->IM->getModule('member')->getLogged()) { $this->IM->getModule('member')->addActivity($post->midx, 0, 'forum', 'post_delete', array('title' => $post->title)); } else { $this->IM->getModule('push')->sendPush($post->midx, 'forum', 'post_delete', $values->idx, array('title' => $post->title)); } $this->IM->deleteArticle('forum', 'post', $values->idx); } } elseif ($values->type == 'ment') { $ment = $this->getMent($values->idx); $post = $this->getPost($ment->parent); $values->forum = $this->getLms($post->lid); if ($ment == null) { $results->success = false; $results->message = $this->getLanguage('error/notFound'); } elseif ($this->checkPermission('ment_delete') == true || $ment->midx == $this->IM->getModule('member')->getLogged()) { $results->success = true; } else { $results->success = false; $results->message = $this->getLanguage('error/forbidden'); } if ($results->success == true) { if ($this->checkMentTree($values->idx) == false) { $this->db()->delete($this->table->ment)->where('idx', $values->idx)->execute(); $this->db()->delete($this->table->ment_depth)->where('idx', $values->idx)->execute(); if ($ment->source != 0) { $source = $this->getMent($ment->source); while ($source->is_delete == 'TRUE') { if ($this->checkMentTree($source->idx) == false) { $this->db()->delete($this->table->ment)->where('idx', $source->idx)->execute(); $this->db()->delete($this->table->ment_depth)->where('idx', $source->idx)->execute(); if ($source->source != 0) { $source = $this->getMent($source->source); } else { break; } } else { break; } } } $results->position = null; } else { $results->position = $values->idx; $this->db()->update($this->table->ment, array('is_delete' => 'TRUE', 'modify_date' => time(), 'content' => '', 'search' => ''))->where('idx', $ment->idx)->execute(); } $attachments = $this->db()->select($this->table->attachment)->where('parent', $ment->idx)->where('type', 'MENT')->get(); for ($i = 0, $loop = count($attachments); $i < $loop; $i++) { $attachments[$i] = $attachments[$i]->idx; } $this->IM->getModule('attachment')->fileDelete($attachments); $lastMent = $this->db()->select($this->table->ment)->where('parent', $ment->parent)->where('is_delete', 'FALSE')->orderBy('reg_date', 'desc')->get(); if (count($lastMent) == 0) { $this->db()->update($this->table->post, array('ment' => 0, 'last_ment' => $post->reg_date))->where('idx', $ment->parent)->execute(); $results->parent = $ment->parent; } else { if ($results->position == null) { $position = $this->db()->select($this->table->ment_depth)->where('parent', $ment->parent)->where('head', $ment->head, '<=')->where('arrange', $ment->arrange, '<')->orderBy('head', 'asc')->orderBy('arrange', 'asc')->get(); $lastPosition = array_pop($position); $results->position = $lastPosition->idx; } $this->db()->update($this->table->post, array('ment' => count($lastMent), 'last_ment' => $lastMent[0]->reg_date))->where('idx', $ment->parent)->execute(); } $results->message = $this->getLanguage('mentDelete/success'); $this->IM->getModule('member')->sendPoint($ment->midx, $values->forum->ment_point * -1, 'forum', 'ment_delete', array('title' => $post->title), true); if ($ment->midx == $this->IM->getModule('member')->getLogged()) { $this->IM->getModule('member')->addActivity($ment->midx, 0, 'forum', 'ment_delete', array('title' => $post->title)); } else { $this->IM->getModule('push')->sendPush($ment->midx, 'forum', 'ment_delete', $values->idx, array('title' => $post->title)); } $this->IM->deleteArticle('forum', 'ment', $values->idx); } } $results->type = $values->type; } $this->IM->fireEvent('afterDoProcess', 'forum', $action, $values, $results); return $results; }