/** * Gets banner HTML for use in templates * * @deprecated Moving to a separate module * * @return object $bannerobject The generated banner HTML string */ function xoops_getbanner() { global $icmsConfig; $db = icms_db_Factory::instance(); $bresult = $db->query("SELECT * FROM " . $db->prefix('banner') . " ORDER BY RAND()", 1); if ($db->getRowsNum($bresult) > 0) { list($bid, $cid, $imptotal, $impmade, $clicks, $imageurl, $clickurl, $date, $htmlbanner, $htmlcode) = $db->fetchRow($bresult); if ($icmsConfig['my_ip'] != $_SERVER['REMOTE_ADDR']) { $db->queryF(sprintf("UPDATE %s SET impmade = impmade+1 WHERE bid = '%u'", $db->prefix('banner'), (int) $bid)); } /* Check if this impression is the last one and print the banner */ if ($imptotal == $impmade && $imptotal != 0) { $newid = $db->genId($db->prefix('bannerfinish') . '_bid_seq'); $sql = sprintf("INSERT INTO %s (bid, cid, impressions, clicks, datestart, dateend) VALUES ('%u', '%u', '%u', '%u', '%u', '%u')", $db->prefix('bannerfinish'), (int) $newid, (int) $cid, (int) $impmade, (int) $clicks, (int) $date, time()); $db->queryF($sql); $db->queryF(sprintf("DELETE FROM %s WHERE bid = '%u'", $db->prefix('banner'), (int) $bid)); } if ($htmlbanner) { $bannerobject = icms_core_DataFilter::filterHTMLdisplay($htmlcode, 0, 0); } else { $bannerobject = '<div><a href="' . ICMS_URL . '/banners.php?op=click&bid=' . $bid . '" rel="external">'; if (stristr($imageurl, '.swf')) { $bannerobject = $bannerobject . '<object type="application/x-shockwave-flash" data="' . $imageurl . '" width="468" height="60">' . '<param name="movie" value="' . $imageurl . '"></param>' . '<param name="quality" value="high"></param>' . '</object>'; } else { $bannerobject = $bannerobject . '<img src="' . $imageurl . '" alt="" />'; } $bannerobject = $bannerobject . '</a></div>'; } return $bannerobject; } }
/** * returns a specific variable for the object in a proper format * * We had to put this method in the icms_ipf_Object because the XOBJ_DTYPE_ARRAY does not work properly * at least on PHP 5.1. So we have created a new type XOBJ_DTYPE_SIMPLE_ARRAY to handle 1 level array * as a string separated by | * * @access public * @param string $key key of the object's variable to be returned * @param string $format format to use for the output * @return mixed formatted value of the variable */ public function getVar($key, $format = 's') { global $myts; $ret = $this->vars[$key]['value']; switch ($this->vars[$key]['data_type']) { case XOBJ_DTYPE_TXTBOX: switch (strtolower($format)) { case 's': case 'show': // ML Hack by marcan $ret = icms_core_DataFilter::htmlSpecialChars($ret); if (method_exists($myts, 'formatForML')) { return $ts->formatForML($ret); } else { return $ret; } break 1; // End of ML Hack by marcan // End of ML Hack by marcan case 'clean': $ret = icms_html2text($ret); $ret = icms_purifyText($ret); return $ret; break 1; // End of ML Hack by marcan // End of ML Hack by marcan case 'e': case 'edit': return icms_core_DataFilter::htmlSpecialChars($ret); break 1; case 'p': case 'preview': case 'f': case 'formpreview': return icms_core_DataFilter::htmlSpecialChars(icms_core_DataFilter::stripSlashesGPC($ret)); break 1; case 'n': case 'none': default: break 1; } break; case XOBJ_DTYPE_LTIME: switch (strtolower($format)) { case 's': case 'show': case 'p': case 'preview': case 'f': case 'formpreview': $ret = formatTimestamp($ret, _DATESTRING); return $ret; break 1; case 'n': case 'none': case 'e': case 'edit': break 1; default: break 1; } break; case XOBJ_DTYPE_STIME: switch (strtolower($format)) { case 's': case 'show': case 'p': case 'preview': case 'f': case 'formpreview': $ret = formatTimestamp($ret, _SHORTDATESTRING); return $ret; break 1; case 'n': case 'none': case 'e': case 'edit': break 1; default: break 1; } break; case XOBJ_DTYPE_TIME_ONLY: switch (strtolower($format)) { case 's': case 'show': case 'p': case 'preview': case 'f': case 'formpreview': $ret = formatTimestamp($ret, 'G:i'); return $ret; break 1; case 'n': case 'none': case 'e': case 'edit': break 1; default: break 1; } break; case XOBJ_DTYPE_CURRENCY: $decimal_section_original = strstr($ret, '.'); $decimal_section = $decimal_section_original; if ($decimal_section) { if (strlen($decimal_section) == 1) { $decimal_section = '.00'; } elseif (strlen($decimal_section) == 2) { $decimal_section = $decimal_section . '0'; } $ret = str_replace($decimal_section_original, $decimal_section, $ret); } else { $ret = $ret . '.00'; } break; case XOBJ_DTYPE_TXTAREA: switch (strtolower($format)) { case 's': case 'show': $html = !empty($this->vars['dohtml']['value']) ? 1 : 0; $xcode = !isset($this->vars['doxcode']['value']) || $this->vars['doxcode']['value'] == 1 ? 1 : 0; $smiley = !isset($this->vars['dosmiley']['value']) || $this->vars['dosmiley']['value'] == 1 ? 1 : 0; $image = !isset($this->vars['doimage']['value']) || $this->vars['doimage']['value'] == 1 ? 1 : 0; $br = !isset($this->vars['dobr']['value']) || $this->vars['dobr']['value'] == 1 ? 1 : 0; if (defined('XOOPS_EDITOR_IS_HTML')) { $br = false; } if ($html) { if ($br) { // have to use this whilst ever we have a zillion editors in the core return icms_core_DataFilter::filterHTMLdisplay($ret, $xcode, $br); } else { return icms_core_DataFilter::checkVar($ret, 'html', 'output'); } } else { return icms_core_DataFilter::checkVar($ret, 'text', 'output'); } break 1; case 'e': case 'edit': return icms_core_DataFilter::checkVar($ret, 'html', 'edit'); break 1; case 'p': case 'preview': $html = !empty($this->vars['dohtml']['value']) ? 1 : 0; $xcode = !isset($this->vars['doxcode']['value']) || $this->vars['doxcode']['value'] == 1 ? 1 : 0; $smiley = !isset($this->vars['dosmiley']['value']) || $this->vars['dosmiley']['value'] == 1 ? 1 : 0; $image = !isset($this->vars['doimage']['value']) || $this->vars['doimage']['value'] == 1 ? 1 : 0; $br = !isset($this->vars['dobr']['value']) || $this->vars['dobr']['value'] == 1 ? 1 : 0; if ($html) { return icms_core_DataFilter::checkVar($ret, 'html', 'input'); } else { return icms_core_DataFilter::checkVar($ret, 'text', 'input'); } break 1; case 'f': case 'formpreview': return htmlspecialchars(icms_core_DataFilter::stripSlashesGPC($ret), ENT_QUOTES); break 1; case 'n': case 'none': default: break 1; } break; case XOBJ_DTYPE_SIMPLE_ARRAY: $ret =& explode('|', $ret); break; case XOBJ_DTYPE_ARRAY: $ret =& unserialize($ret); break; case XOBJ_DTYPE_SOURCE: switch (strtolower($format)) { case 's': case 'show': break 1; case 'e': case 'edit': return htmlspecialchars($ret, ENT_QUOTES); break 1; case 'p': case 'preview': return icms_core_DataFilter::stripSlashesGPC($ret); break 1; case 'f': case 'formpreview': return htmlspecialchars(icms_core_DataFilter::stripSlashesGPC($ret), ENT_QUOTES); break 1; case 'n': case 'none': default: break 1; } break; default: if ($this->vars[$key]['options'] != '' && $ret != '') { switch (strtolower($format)) { case 's': case 'show': $selected = explode('|', $ret); $options = explode('|', $this->vars[$key]['options']); $i = 1; $ret = array(); foreach ($options as $op) { if (in_array($i, $selected)) { $ret[] = $op; } $i++; } return implode(', ', $ret); case 'e': case 'edit': $ret = explode('|', $ret); break 1; default: break 1; } } break; } return $ret; }
/** * returns a specific variable for the object in a proper format * * @access public * @param string $key key of the object's variable to be returned * @param string $format format to use for the output * @return mixed formatted value of the variable */ public function getVar($key, $format = 's') { $ret = $this->vars[$key]['value']; switch ($this->vars[$key]['data_type']) { case XOBJ_DTYPE_TXTBOX: switch (strtolower($format)) { case 's': case 'show': case 'e': case 'edit': return icms_core_DataFilter::htmlSpecialchars($ret); break 1; case 'p': case 'preview': case 'f': case 'formpreview': return icms_core_DataFilter::htmlSpecialchars(icms_core_DataFilter::stripSlashesGPC($ret)); break 1; case 'n': case 'none': default: break 1; } break; case XOBJ_DTYPE_TXTAREA: switch (strtolower($format)) { case 's': case 'show': $html = !empty($this->vars['dohtml']['value']) ? 1 : 0; $xcode = !isset($this->vars['doxcode']['value']) || $this->vars['doxcode']['value'] == 1 ? 1 : 0; $smiley = !isset($this->vars['dosmiley']['value']) || $this->vars['dosmiley']['value'] == 1 ? 1 : 0; $image = !isset($this->vars['doimage']['value']) || $this->vars['doimage']['value'] == 1 ? 1 : 0; $br = !isset($this->vars['dobr']['value']) || $this->vars['dobr']['value'] == 1 ? 1 : 0; if ($html) { if ($br) { // have to use this whilst ever there's a zillion editors in the core return icms_core_DataFilter::filterHTMLdisplay($ret, $xcode, $br); } else { return icms_core_DataFilter::checkVar($ret, 'html', 'output'); } } else { return icms_core_DataFilter::checkVar($ret, 'text', 'output'); } break 1; case 'e': case 'edit': return icms_core_DataFilter::checkVar($ret, 'html', 'edit'); break 1; case 'p': case 'preview': $html = !empty($this->vars['dohtml']['value']) ? 1 : 0; $xcode = !isset($this->vars['doxcode']['value']) || $this->vars['doxcode']['value'] == 1 ? 1 : 0; $smiley = !isset($this->vars['dosmiley']['value']) || $this->vars['dosmiley']['value'] == 1 ? 1 : 0; $image = !isset($this->vars['doimage']['value']) || $this->vars['doimage']['value'] == 1 ? 1 : 0; $br = !isset($this->vars['dobr']['value']) || $this->vars['dobr']['value'] == 1 ? 1 : 0; if ($html) { return icms_core_DataFilter::checkVar($ret, 'html', 'input'); } else { return icms_core_DataFilter::checkVar($ret, 'text', 'input'); } break 1; case 'f': case 'formpreview': $filtered = strpos($ret, '<!-- input filtered -->'); if ($filtered !== FALSE) { $ret = str_replace('<!-- input filtered -->', '', $ret); $ret = str_replace('<!-- filtered with htmlpurifier -->', '', $ret); } return htmlspecialchars(icms_core_DataFilter::stripSlashesGPC($ret), ENT_QUOTES); break 1; case 'n': case 'none': default: break 1; } break; case XOBJ_DTYPE_ARRAY: $ret =& unserialize($ret); break; case XOBJ_DTYPE_SOURCE: switch (strtolower($format)) { case 's': case 'show': break 1; case 'e': case 'edit': return icms_core_DataFilter::checkVar($ret, 'html', 'edit'); break 1; case 'p': case 'preview': return icms_core_DataFilter::stripSlashesGPC($ret); break 1; case 'f': case 'formpreview': return htmlspecialchars(icms_core_DataFilter::stripSlashesGPC($ret), ENT_QUOTES); break 1; case 'n': case 'none': default: break 1; } break; default: if ($this->vars[$key]['options'] != '' && $ret != '') { switch (strtolower($format)) { case 's': case 'show': $selected = explode('|', $ret); $options = explode('|', $this->vars[$key]['options']); $i = 1; $ret = array(); foreach ($options as $op) { if (in_array($i, $selected)) { $ret[] = $op; } $i++; } return implode(', ', $ret); case 'e': case 'edit': $ret = explode('|', $ret); break 1; default: break 1; } } break; } return $ret; }
/** * Filters textarea form data submitted for preview * * The only difference between this and displayTarea is the need to deal with $_POST input instead of database output * * @param string $text * @param bool $html allow html? * @param bool $smiley allow smileys? * @param bool $xcode allow xoopscode? * @param bool $image allow inline images? * @param bool $br convert linebreaks? * @return string **/ public function previewTarea($text, $html = 0, $smiley = 1, $xcode = 1, $image = 1, $br = 1) { /* @deprecated Use icms_core_DataFilter::checkVar, instead - the events for previewTarea need to be added, first */ //icms_core_Debug::setDeprecated('icms_core_DataFilter::checkVar - type = text or html, $options1 = input', sprintf(_CORE_REMOVE_IN_VERSION, '1.4')); /* trigger all the events tied to the beforePreviewTarea event */ icms::$preload->triggerEvent('beforePreviewTarea', array(&$text, $html, $smiley, $xcode, $image, $br)); $text = icms_core_DataFilter::stripSlashesGPC($text); if ($html = 0) { $text = icms_core_DataFilter::filterTextareaDisplay($text, $smiley, $xcode, $image, $br); } else { $text = icms_core_DataFilter::filterHTMLdisplay($text, $xcode, $br); } /* trigger all the events tied to the afterPreviewTarea event */ icms::$preload->triggerEvent('afterPreviewTarea', array(&$text, $html, $smiley, $xcode, $image, $br)); return $text; }