Weder noch, ich musste nochmal von vorne anfangen, also alles löschen. Der Code war nicht gut durchdacht.
Jetzt hab ichs mit ooP probiert und es klappt besser, jedoch habe ich noch keine nennenswerten Fortschritte gemacht, die dem alten Code überlegen sind.
Beiträge von Paxor
-
-
-
Ich habe noch nie ein komplettes CMS programmiert, ich brauche doch erstmal ein grundgerüßt für die Ideenschmiede.
OOP kommt zum schluss -
Ihr wolltet doch unfertige Codes haben. Also beschwert euch nicht
-
Spoiler anzeigen
PHP: Index-php
Alles anzeigen<?php session_start(); error_reporting(3); define("PAGE",$_GET["page"]); $CMS = true; include "core/messages.php"; include "core/config.php"; include "core/plugins.php"; include "core/layouts.php"; include "core/pages.php"; // lädt Pluginsystem include('core/classes/plugins.class.php'); plugins::start('apps'); syncPagesAndPlugins(); if(Conf("maintenance") == "true") { define("MAINT", true); } else { define("MAINT", false); } if(MAINT) { generatePage('maintenance', 'Umbaupause', ' Derzeit wird die Seite aktualisiert und verbessert, daher hast du im Moment nicht die Möglichkeit die Seite zu besuchen.<br> Tut mir leid, bitte schaue später noch einmal vorbei. Bis dahin, <br><br> <center><div id="unterschrift"><img src="img/unterschrift.png"></div></center>'); } else { if(!isset($_GET["page"])) { if(isset($_GET["admin"])) { } else { $startseite = $url."/index.php?page=1"; header("Location: ".$startseite); } } else { $pageid = mysqli_real_escape_string($db, $_GET["page"]); $getPage = mysqli_query($db, "SELECT * FROM pages WHERE id = '".$pageid."'"); $gpage = mysqli_fetch_assoc($getPage); $title = $gpage["name"]; if(mysqli_num_rows($getPage) != 0) { if($gpage["login"] == "true" && !isset($_SESSION["USERNAME"])) { generatePage('locked', 'Login erforderlich', '<center><div class="info">Du musst angemeldet sein, um diese Seite sehen zu dürfen</div></center>'); } else { if($gpage["activate"] == "false") { generatePage('locked', 'Seite gesperrt', '<center><div class="warning">Die von dir aufgerufene Seite ist zurzeit gesperrt. Bitte schaue später noch einmal vorbei</div></center>'); } else { if($gpage["type"] == "app") { $getPlugin = mysqli_query($db, "SELECT * FROM plugins WHERE com_id = '".$gpage["app_com_id"]."'"); $plugin = mysqli_fetch_assoc($getPlugin); if($plugin["activate"] == "true" && $plugin["fp_page"] != "") { if(file_exists("apps/".$plugin["com_id"]."/".$plugin["fp_page"])) { $file = file_get_contents("apps/".$plugin["com_id"]."/".$plugin["fp_page"]); $newContent = $file; generatePage("text", $gpage["name"], $newContent); // include "apps/".$plugin["com_id"]."/".$plugin["fp_page"]; } else { include "pages/404-plugin.php"; } } else { generatePage('locked', 'Plugin deaktiviert', '<center><div class="info">Das Plugin zu dieser Seite wurde daktiviert!</div></center>'); } } if($gpage["type"] == "system") { if(file_exists("pages/".$gpage["filepath"].".php")) { include "pages/".$gpage["filepath"].".php"; } else { include "pages/404.php"; } } if($gpage["type"] == "content") { generatePage("local", $gpage["name"], $gpage["content"]); } } } } else { include "pages/404.php"; } } } ?>
Spoiler anzeigen
PHP: plugins.class.php
Alles anzeigen<?php /** * RS - PluginSystem * * @author: PlaYsTylE (Retrotown.ws) * @licence: GPL * @version: 0.2 */ class plugins { private static $plugins = array(); public static function start($folder) { global $db; if(file_exists($folder)) { // Scannt den Ordner $pluginFiles = scandir($folder); // Startet alle gefundenen Dateien foreach($pluginFiles as $name) { $pluginInfos = pathinfo($folder.$name); // Lädt Dateiinfos $get = mysqli_query($db, "SELECT * FROM plugins WHERE com_id = '".$name."' AND activate = 'true'") or die(mysql_error()); $plugin = mysqli_fetch_assoc($get); // Lädt das Plugin if(mysqli_num_rows($get) != 0) { self::load($folder."/".$name."/".$plugin["com_id"].".php", $plugin["name"]); } // Code kann hier gerne erweitert werden } return true; } else { return false; echo 'FEHLER ! DER PLUGIN ORDNER KONNTE NICHT GEFUNDEN WERDEN!'; die(); } /* $get = mysql_query("SELECT * FROM plugins") or die(mysql_error()); while($plugin = mysql_fetch_assoc($get)) $result_list[] = $plugin; foreach($result_list as $plugin) { $pluginFolder = $folder."/".$plugin["com_id"]; if(file_exists($pluginFolder)) { echo 'App Ordner: '.$folder.'<br>Plugin com id: '.$plugin["com_id"].'<br>Pluginname: '.$plugin["name"]; self::load($folder."/".$plugin["com_id"]."/".$plugin["com_id"].".php", $plugin["name"]); return true; } else { return false; echo 'FEHLER ! DAS PLUGIN '.$plugin["name"].' KONNTE NICHT GEFUNDEN WERDEN!'; die(); } */ } /*************************************************************************/ public static function load($file, $pluginName) { if(file_exists($file)) { include($file); $plugin = new $pluginName; $hooks = get_class_methods($plugin); foreach($hooks as $hookName) { if($hookName{0} != '_') { self::$plugins[$hookName][] = $pluginName; } } // Fertig return $plugin; } else { msgError("Folgendes Plugin ist fehlerhaft installiert<br>".$file); } } /*************************************************************************/ public static function call($hook, $params=false) { // überprüft, ob die Hook existiert if(count(self::$plugins[$hook]) != 0) { foreach(self::$plugins[$hook] as $name) { if(!is_array($params)) { call_user_func(array($name, $hook)); } else { call_user_func_array(array($name, $hook), $params); } } } } } function pluginList() { global $db; $query = mysqli_query($db, "SELECT * FROM plugins ORDER BY id;") or die(mysql_error()); $AppsNum = mysqli_num_rows($query); $AppsTd=""; while ($AppsArray = mysqli_fetch_assoc($query)) { $color ="red"; if ($AppsArray->activate=="1" || $AppsArray->activate=="true") { $color = "lightgreen"; } $AppsTd .= '<tr style="background-color:'.$color.';"><td style="width:20%;">'.$AppsArray->name.'</td><td "width:5%;">'.$AppsArray->version.'</td><td "width:45%;">'.$AppsArray->desc.'</td><td "width:35%;"><a href="plugin_verwalten.php?appid='.$AppsArray->id.'">Administrieren</a></td></tr>'; } echo 'Installierte Erweiterungen:<br><div class="cel" style="height:auto;"> <table style="width:100%;"><tr style="border: 1px black solid;"><td>Name</td><td>Version</td><td>Beschreibung</td><td>Optionen</td></tr> '.$AppsTd.'</table></div><br /><br />'; }
Spoiler anzeigen
Code: pages.php
Alles anzeigenDiese Funktion ist noch lange nicht fertig. Sozusagen ein Mittel zum Zweck function generatePage($type, $title, $text) { global $pageid; global $db; $getPages = mysqli_query($db, "SELECT * FROM pages WHERE id = '".$pageid."' LIMIT 1") or die(mysql_error()); $page = mysqli_fetch_assoc($getPages); $getLayout = mysqli_query($db, "SELECT * FROM layouts WHERE activate = 'true' AND id = '".$page["layout_id"]."' LIMIT 1") or die(mysql_error()); $isLayout = mysqli_num_rows($getLayout); $layout = mysqli_fetch_assoc($getLayout); $layoutpath = "core/layouts/".$layout["foldername"]; $csspath = $layoutpath."/css/style.css"; if($isLayout == "0") { echo "Das Layout zu dieser Seite konnte nicht geladen werden"; } else { $headerFile = "core/layouts/".$layout["foldername"]."/header.php"; $pageFile = "core/layouts/".$layout["foldername"]."/page.php"; $footerFile = "core/layouts/".$layout["foldername"]."/footer.php"; if($type == "db") { $content = parse_text($page["content"]); $layouttitle = $page["name"]; } if($type == "local") { $content = parse_text($text); $layouttitle = $title; } if($type == "maintenance") { $headerFile = "core/layouts/".$layout["foldername"]."/maint_header.php"; $pageFile = "core/layouts/".$layout["foldername"]."/maint_page.php"; $footerFile = "core/layouts/".$layout["foldername"]."/maint_footer.php"; $layouttitle = $title; $content = parse_text($text); } if($type == "locked") { $layouttitle = $title; $locked = true; $content = parse_text($text); } if(file_exists($headerFile) && file_exists($footerFile) && file_exists($pageFile)) { if(file_exists($csspath)) { $letters = array('%layoutpath%', '%lp%', '%css%'); $replace = array($layoutpath, $layoutpath, $csspath); $cssfile = file_get_contents($csspath); $css = str_replace($letters, $replace, $cssfile); } else { echo 'CSS-Datei konnte nicht geladen werden'; } $layouttitle = $page["name"]; $content = $text; include $headerFile; include $pageFile; include $footerFile; } else { echo 'Das Layout ist nicht vollständig und wird somit nicht geladen!'; } } }
Das ist im Prinzip das derzeitige CMS. Fehlt halt nur das Backend, dürfte aber in spätestens einer Woche fertig sein
-
Das Themesystem ist fertig. Anfangs hat das Pluginsystem dazwischengefunkt aber jetzt geht alles einwandfrei.
Mache mich ab Morgen an das Backend -
Hi Leute, ich arbeite gerade an einem CMS (RtThread) und bräuchte für das Backend ein Layout im Habbostyle und dachte ihr hättet da vielleicht etwas.
Freue mich über jedes Layout -
Okay, dann mache ich Montag weiter. Snippets würde ich echt gerne posten, aber dank der Idee mit den Themes muss ich gerade sehr viel umschreiben.
-
RsCMS - Das CMS
Hey Leute, ich habe mich hier mal angemeldet und gesehen, dass ziemlich Bedarf an Fansites oder ähnlichen Portalen herrscht.
Ich habe es mir also zur Aufgabe gemacht ein smartes CMS in PHP für euch zu programmieren.
Seit ca. einer Woche arbeite ich daran und ich mache beachtliche Fortschritte. Was ich bisher erreicht habe:- Ein überschaubares MYSQL Usersystem mit Rängen und "points", welche man braucht um im Rang aufzusteigen. Zu Anfang der Registration wird ein Aktivierungslink an die angegebene Email-Adresse geschickt. So wird sichergestellt, dass sie existiert.
- Ein Seitensystem mit HTML Ausgabe. Sprich, man speichert den HTML-Code in der Datenbank und auf der Seite wird dieser ausgegeben. Ähnlich wie bei Wordpress
- Diese Seiten werden natürlich mit PHP in der Navigtion aufgelistet, falls visible auf true gesetzt ist. Desweiteren kann man bei den Seiten einstellen, dass man angemeldet sein muss um sie zu sehen und dass sie gesperrt sind.
- Ein Pluginsystem mit Hook-Script. Die Hooks werden im CMS nach Fertigstellung im CMS verteilt und entwickelte Plugins können an den Hooks etwas ausgeben. Danke hierbei an Playstyle. Der hat dieses Script hier im Forum gepostet. Habe es ein wenig weiterentwickelt. Funktioniert super - Ich habe vor bereits ein paar Plugins zu entwickeln wie: Forum, Preisliste, Gallerie ö.ä.
- Themesystem. Ich werde alle Themes, die es bei Habboemotion gibt, für das CMS konfigurieren. Wie der Titel schon sagt - es war nie einfacher ne Fansite zu erstellen. Also falls ihr noch welche habt, könnt ihr sie mir gerne geben. Außerdem ist es dank simpler Anleitung total easy alle anderen weltweit existierenden HTML-Templates für das CMS zu konfigurieren.Ist eine Sache von 120 Sekunden
Ich kam zwischenzeitlich auch mal auf den Gedanken, dass es niemand haben wollen könnte.
Deshalb mache ich jetzt nicht weiter, bis sich hier jemand gemeldet hat :wacko:Ich denke, sollte ich die nächste Woche weitermachen, ich dieses Jahr eine erste stabile Version releasen werde.
Ich spiele auch mit dem Gedanken über Habbo hinauszugehen und es evtl zu verkaufen. Was meint ihr?
Euer Paxor.
Höö wer ist paxor?
-
Armageddon
-
-
Könnte mir jemand eventuell dieses Badge hier umpixeln? Statt dem "H" in der Mitte soll da ein "F" hin.
Wäre sehr nett, Vergütung: Ein Gefällt mir.