public function getListJson($controller, $contents) { sfContext::getInstance()->getConfiguration()->loadHelpers(array('Helper', 'Tag', 'Escaping', 'opUtil')); $result = array(); foreach ($contents as $content) { $data = array('number' => $content->number, 'level' => $content->level, 'member_url' => $controller->genUrl('@obj_member_profile?id=' . $content->member_id), 'member_name' => $content->Member->name, 'command' => $content->command, 'body' => $content->body, 'created_at' => $content->created_at); foreach ($data as &$d) { $d = sfOutputEscaper::escape(sfConfig::get('sf_escaping_method'), $d); $d = OpenPNE_KtaiEmoji::convertEmoji($d); } $data['body'] = op_auto_link_text(op_decoration(nl2br($data['body']))); $result[] = $data; } return json_encode($result); }
/** * Executes this filter. * * @param sfFilterChain $filterChain A sfFilterChain instance */ public function execute($filterChain) { $filterChain->execute(); $response = $this->getContext()->getResponse(); $request = $this->getContext()->getRequest(); $content = $response->getContent(); if (!$request->isMobile()) { list($list, $content) = opToolkit::replacePatternsToMarker($content); } $content = OpenPNE_KtaiEmoji::convertEmoji($content); if (!$request->isMobile()) { $content = str_replace(array_keys($list), array_values($list), $content); } $response->setContent($content); }
/** * rewrite * * @param string $body * @return string */ public function rewrite($body, $contentType, $isAutoConvert = false) { $patterns = array(); $replacements = array(); if ($isAutoConvert) { $patterns[] = "/<\\?xml(.*)encoding=[\"'].*[\"']/iU"; $replacements[] = '<?xml${1}encoding="shift-jis"'; $patterns[] = "/<meta(.*)content=[\"'](.*);\\s*charset=(.*)(;.*)?[\"'](.*)>/iU"; $replacements[] = '<meta${1}content="${2}; charset=shift-jis${4}"${5}>'; } $partials = array($this->action->getPartial('global/partsPageTitle', array('title' => $this->action->application->getTitle())), $this->action->getPartial('application/renderFooter', array('application' => $this->action->application))); if ($this->action->getRequest()->getMobile()->isDoCoMo() && opConfig::get('font_size')) { $pattern_start_tag = '/(<td.*?>)/'; $replacement_start_tag = '$1<font size="2">'; $pattern_end_tag = '</td>'; $replacement_end_tag = '</font></td>'; $partials = preg_replace($pattern_start_tag, $replacement_start_tag, $partials); $partials = str_replace($pattern_end_tag, $replacement_end_tag, $partials); foreach ($partials as &$partial) { $partial = '<font size="2">' . $partial . '</font>'; } } if (!$isAutoConvert && 'UTF-8' !== $this->getEncoding($body, $contentType)) { foreach ($partials as &$partial) { $partial = mb_convert_encoding($partial, $this->getEncoding($body, $contentType), 'UTF-8'); } } $patterns[] = "/<body.*>/iU"; $replacements[] = '${0}' . $partials[0]; $patterns[] = "/<\\/body>/i"; $replacements[] = $partials[1] . '${0}'; $urlPatterns = array("/<(a)(.*)href=[\"']([a-zA-Z]+):([a-zA-Z]+)(?:\\?(.*))?[\"'](.*)>/iU", "/<(form)(.*)action=[\"']([a-zA-Z]+):([a-zA-Z]+)(?:\\?(.*))?[\"'](.*)>/iU"); $body = preg_replace_callback($urlPatterns, array($this, 'rewriteUrl'), $body); if ($isAutoConvert) { // for Emoji if ($this->action->getRequest()->getMobile()->isEZweb()) { $body = preg_replace_callback('/\\xEE[\\xB1-\\xB3\\xB5-\\xB6\\xBD-\\xBF][\\x80-\\xBF]|\\xEF[\\x81-\\x83][\\x80-\\xBF]/', array($this, 'convertEZwebEmoji'), $body); } elseif ($this->action->getRequest()->getMobile()->isSoftBank()) { $body = preg_replace_callback('/\\xEE[\\x80-\\x81\\x84-\\x85\\x88-\\x89\\x8C-\\x8D\\x90-\\x91\\x94][\\x80-\\xBF]/', array($this, 'convertSoftBankEmoji'), $body); } return OpenPNE_KtaiEmoji::convertEmoji(mb_convert_encoding(preg_replace($patterns, $replacements, $body), 'SJIS-win', 'UTF-8')); } return preg_replace($patterns, $replacements, $body); }