Code Search for Developers
 
 
  

mod_rewrite.php from ECP (EliteCore Project) at Krugle


Show mod_rewrite.php syntax highlighted

<?php


/**
 * This class rewrites all URL links to something more readable (SEO)
 */
class Rewrite {
	public static function Start() {
		//ini_set('zlib.output_compression', 'Off');
		//ini_set('zlib.output_compression_level', 6);
		ob_start();
	}
	public static function End() {
		global $XCS;
		$contents = ob_get_contents();
		if (!Ajax :: sendNewContent()) {
			try {
				$contents = str_replace('<!--PAGENAME-->', Cache :: getObject('page', 'name'), $contents);
			} catch (NoCacheException $e) {
				// continue
			}
			if (Engine :: getFlag('separate_theme_header') === true && Engine :: file_exists("styles/" . $XCS->getDefaultTheme() . "/header.php"))
				include_once ("styles/" . $XCS->getDefaultTheme() . "/header.php");
		}
		$contents = str_replace('<body>', '<body id="body"><div id="loader"></div>', $contents);
		$contents = str_replace('</body>', file_get_contents('core/footer.html') . '</body>', $contents);
		$contents = str_replace('<div id="author"></div>', '<div id="author">' . file_get_contents('core/author.html') . '</div>', $contents);
		$contents = self :: RewriteURL($contents);
		if (!Ajax :: sendNewContent()) {
			Ajax :: Process();
			if (Debug :: active()) {
				Debug :: printDebug();
			}
			//$contents = String::cleanXHTMLDocument($contents);
		} else {
			$js = Ajax :: getScriptsOnDemand();
			if (sizeof($js)) {
				$val = $js[0];
				$val = str_replace("|", "!!pipe!!", $val);
				$val = str_replace("~", "!!tilde!!", $val);
				$val = utf8_encode($val);
				$contents = "+:TabJS|" . $val . "~" . $contents;
			} else {
				$contents = "+:" . $contents;
			}
		}

		ob_end_clean();

		ob_start();
		echo $contents;
		ob_end_flush();
	}
	/**
	 * This method rewrites all links on current page so it reflects to
	 * mod_rewrite links configured in .htaccess
	 *
	 * @param string $content (x)HTML source
	 * @return string rewritten (x)HTML source
	 */
	public static function RewriteURL($content) {
		global $Config;
		$urlin = array (
			"'(?<!/)index\.php'",
			"'(?<!/)index\.(.+)module=(\w+)(.+)op=read(.+)id=([0-9]+)(\w+)?'e",
			"'(?<!/)index\.(.+)module=(\w+)(.+)op=section(.+)sid=([0-9]+)(\w+)?'e",
			"'(?<!/)index\.(.+)module=(\w+)(.+)op=gameinfo(.+)id=([0-9]+)(\w+)?'e",
			"'(?<!/)index\.(.+)module=(\w+)(.+)op=by_letter(.+)letter=([a-z0-9]+)(\w+)?'e",
			"'(?<!/)index\.(.+)module=(\w+)(.+)op=info(.+)id=([0-9]+)(.+)file=([0-9]+)(\w+)?'e",
			'/href="[\/]*([^#":\(\)]+)"/',
			'/action="[\/]*([^#":\(\)]+)"/',
			'/src="[\/]*([^#":\(\)]+)"/',
			'/background="[\/]*([^#":\(\)]+)"/'
		);

		$urlout = array (
			"index.html",
			"self::outputSEO('\\2','\\5',\"heading\").'.html'",
			"self::outputSEO('\\2','\\5',\"section\")",
			"self::outputSEO('\\2','\\5',\"heading\").'.html'",
			"self::outputSEO('\\2','\\5',\"by_letter\")",
			"self::outputSEO('\\2','\\7-\\5',\"heading\").'.html'",
		"href=\"" . $Config->getPath() . "\\1\"", "action=\"" .
		$Config->getPath() . "\\1\"", "src=\"" .
		$Config->getPath() . "\\1\"", "background=\"" .
		$Config->getPath() . "\\1\"");
		if (!User :: inAdmin())
			$content = preg_replace($urlin, $urlout, $content);
		$content = str_replace("html&amp;", "html?", $content);
		return $content;
	}
	public static function RepairURL($url, $delimiter = "&amp;") {
		return $url;
		$url = str_replace("index.php", "index.html", $url);
		if (!strpos($url, "?") && strpos($url, $delimiter)) {
			$retval = "";
			$repaired = false;
			foreach (str_split($url) as $char) {
				if ($char == $delimiter && $repaired === false) {
					$char = "?";
					$repaired = true;
				}
				$retval .= $char;
			}
			return $retval;
		} else
			return $url;
	}
	/**
	 * Tries to load desired module and execute his SEO method.
	 *
	 * @param string $module Module name
	 * @param string $source Source for replacement
	 * @param string $name SEO Type ID name
	 * @return string rewritten link
	 */
	public static function outputSEO($module, $source, $name) {
		global $XCS, $Config;
		$module = ModulesManager :: loadModule($module);
		if ($name == "module") {
			if (!@ file_exists(String :: TEXT2URL($module->getNick()) . "/"))
				return String :: TEXT2URL($module->getNick()) . "/";
			else
				return $Config->getPath() . "index.html?module=" . $module->getInstance();
		}
		if (isset ($module) && method_exists($module, 'SEO')) {
			$retval = $Config->getPath() . $module->SEO($source, $name);
		} else
			if (isset ($module->object) && $module->object->_getSEO($source, $name) !== false)
				$retval = $Config->getPath() . $module->object->_getSEO($source, $name);
			else
				$retval = "index.php?module=" . $module->getInstance() . "&amp;id=" . $source;
		//$retval = self::RepairURL($retval);
		return $retval;
	}
}

Event :: registerHandler("onBoot", array (
	"Rewrite",
	"Start"
));
?>



See more files for this project here

ECP (EliteCore Project)

EliteCore Project is a PHP5.1/Javascript/AJAX/XHTML/CSS framework for creating WEB 2.0 applications and services.The basic open-source instalation can be also used as an interactive personal page or BLOG.This project uses the latest features available.

Project homepage: http://sourceforge.net/projects/elitecore
Programming language(s): JavaScript,PHP,XML
License: cpl

  debug/
    content.php
  exceptions/
    ajaxflush.php
    nomodule.php
    undefineddata.php
  interface/
    encryption.php
    form.php
    module_class.php
    session_interface.php
  renderers/
    default.php
  sql/
    mysql.php
    mysqli.php
  themes/
    ECP/
      accept.png
      add.png
      alt_star.gif
      anchor.png
      arrow_refresh.png
      asterisk_orange.png
      asterisk_yellow.png
      attach.png
      back.png
      cog_error.png
      cog_go.png
      comment.png
      comment_add.png
      comment_delete.png
      comment_edit.png
      comments.png
      comments_add.png
      comments_delete.png
      control_play_blue.png
      drive.png
      gnome-fs-directory.png
      gnome-mime-audio.png
      layers.png
      layout.png
      layout_add.png
      layout_content.png
      layout_delete.png
      layout_edit.png
      layout_error.png
      layout_header.png
      layout_link.png
      layout_sidebar.png
      lightbulb.png
      lightbulb_add.png
      lightbulb_delete.png
      lightbulb_off.png
      lightning.png
      lightning_add.png
      lightning_delete.png
      lightning_go.png
      link.png
      link_add.png
      link_break.png
      link_delete.png
      link_edit.png
      link_error.png
      link_go.png
      lock.png
      lock_add.png
      lock_break.png
      lock_delete.png
      lock_edit.png
      lock_go.png
      lock_open.png
      newspaper.png
      newspaper_add.png
      newspaper_delete.png
      newspaper_go.png
      newspaper_link.png
      note.gif
      note.png
      note_add.png
      note_delete.gif
      note_delete.png
      note_edit.png
      note_error.png
      note_go.png
      note_new.gif
      overlays.png
      package.png
      package_add.png
      package_delete.png
      package_go.png
      package_green.png
      package_link.png
      page.gif
      page.png
      page_add.png
      page_attach.png
      page_code.png
      page_copy.png
      page_delete.png
      page_edit.png
      page_error.png
      page_excel.png
      page_find.png
      page_gear.png
      page_go.png
      page_green.png
      page_key.png
      page_lightning.png
      page_link.png
      page_paintbrush.png
      page_paste.png
      page_red.png
      page_refresh.png
      page_save.png
      page_white.png
      pencil.png
      pencil_add.png
      pencil_delete.png
      pencil_go.png
      photo.png
      photo_add.png
      photo_delete.png
      photo_link.png
      photos.png
      picture.png
      picture_add.png
      picture_delete.png
      picture_edit.png
      picture_empty.png
      picture_error.png
      picture_go.png
      picture_key.png
      picture_link.png
      picture_save.png
      pictures.png
      plugin.png
      plugin_add.png
      plugin_delete.png
      plugin_disabled.png
      plugin_edit.png
      plugin_error.png
      plugin_go.png
      plugin_link.png
      report.png
      report_add.png
      report_delete.png
      report_disk.png
      report_edit.png
      report_go.png
      report_key.png
      report_link.png
      report_magnify.png
      report_picture.png
      report_user.png
      report_word.png
      script.png
      script_add.png
      script_code.png
      script_code_red.png
      script_delete.png
      script_edit.png
      script_error.png
      script_gear.png
      script_go.png
      script_key.png
      script_lightning.png
      script_link.png
      script_palette.png
      script_save.png
      star.png
      star_rating.gif
      stop.png
      style.png
      text_align_center.png
      text_align_justify.png
      text_align_left.png
      text_align_right.png
      text_allcaps.png
      text_bold.png
      text_columns.png
      text_dropcaps.png
      text_heading_1.png
      text_heading_2.png
      text_heading_3.png
      text_heading_4.png
      text_heading_5.png
      text_heading_6.png
      text_horizontalrule.png
      text_indent.png
      text_indent_remove.png
      text_italic.png
      text_kerning.png
      text_letter_omega.png
      text_letterspacing.png
      text_linespacing.png
      text_list_bullets.png
      text_list_numbers.png
      text_lowercase.png
      text_padding_bottom.png
      text_padding_left.png
      text_padding_right.png
      text_padding_top.png
      text_replace.png
      text_signature.png
      text_smallcaps.png
      text_strikethrough.png
      text_subscript.png
      text_superscript.png
      text_underline.png
      text_uppercase.png
      textfield.png
      textfield_add.png
      textfield_delete.png
      textfield_key.png
      textfield_rename.png
      tux.png
      vert_star.gif
    ECP.xml
  Icon.php
  Location.php
  Module.php
  ModulesManager.php
  MusicTags.php
  Page.php
  XHTMLParser.php
  XMLForms.php
  ajax.php
  author.html
  cache.php
  config.php
  date.php
  db.php
  debug.php
  ecp-full.php
  ecp-mini.php
  engine.php
  events.php
  filesystem.php
  footer.html
  i18n.php
  mailer.php
  main.css
  mcrypt.php
  mime.php
  mod_rewrite.php
  perspective.php
  rc4.php
  reflection.php
  session_passport.php
  storage.php
  string.php
  template.php
  texy.php
  user.php
  user_cache.php
  wysiwyg_texy.php
  xhtml_form.php
  xtea.php