Lohnt es sich das Projekt anzugehen? 59
-
Ja (50) 85%
-
Nein (9) 15%
Beschreibung
Ich weiß gar nicht wo bzw. wie ich anfangen soll. Habe heute die Idee gehabt, warum nicht RetroTools v2?
RetroTools war 2010 relativ beliebt und eine gute Downloadbase. Manche werden es noch kennen, andere wiederrum
nicht. Der Vorteil an dieser Downloadbase ist, dass die User auch etwas zu tun haben. Mit einem User-Panel in dem
es möglich ist Nachrichten zu verschicken, Punkte durch Up- und Downloads zu bekommen und in einer Shoutbox zu
"chatten". Jedenfalls war der Code sehr schlecht und auch die Lücken waren zahlreich. Dadurch, dass ich wirklich
überrascht war, wie beliebt meine CMS doch war, ist es mir nun gelungen an den Gedanken anzuknüpfen die CMS
komplett neu zu scripten.
Neue Ideen? Was soll besonders werden?
Ich glaube es brauch nicht einmal so große neue Ideen oder Besonderheiten. Es gibt nicht viele Downloadbase CMS' und
deshalb wird auch dieses erfolgreich. Durch meine größeren PHP Kenntnisse (u.a. Smarty, OOP & MySQLi) ist es möglich
eine wirklich gute CMS aufzubauen. Eine vollstände Retro CMS spukte auch schon in meinem Kopf, aber das wäre zu viel
Arbeit für eine einzige Person.
Needings
Was ich brauche?
Eventuell einen weiteren Entwickler und vielleicht eine Person für die Instandhaltung der Seite.
In was wird geschrieben?
Habe in den letzten Jahren meine Sprachen schon wirklich aufgefrischt. Also wird geschrieben in folgenden Sprachen:
- PHP => OOP + Smarty
- CSS / HTML (das Design wird durch Smarty relativ dynamisch, sodass ihr die Templates ganz einfach selbst schreiben könnt)
- MySQLi (Nachfolger von MySQL)
- jQuery (bzw. JavaScript. Die Effekte haben mich fasziniert und deshalb habe ich jQuery schon großteils gelernt)
- Ajax (Vor allem für Dynamischen Aufruf von PHP-Scripts)
Und was soll der Thread?
Mit diesem Thread will ich vorerst ein Feedback, ob ihr begeistert seid oder ob ihr, ganz im Gegenteil, völlig
gegen ein solches Projekt seid.
Also durch die Umfrage frage ich euch: Soll ich es angehen oder eher nicht?
Wie gesagt: Viele werden mich oder die RetroTools CMS kennen und vor allem von denen erwarte ich ein Feedback
und hoffentlich ein positives. Eins kann ich euch versprechen: Der Code wird besser
Wen es interessiert, hier schoneinmal die User-Klasse. Nur um meinen Code-Stil etc. vorzustellen:
Spoiler anzeigen
<?php
/**
*
* @author Yannici
* @copyright Yannici
*
* @since 10.05.2012
*/
/**
* User-Klasse
*/
class User {
/**
*
* @var integer
*/
private $id;
/**
* Username
*
* @var string
*/
private $username;
/**
* Passwort [MD5]
*
* @var string ENCRYPTED
*/
private $password;
/**
* E-Mail
*
* @var string
*/
private $email;
/**
* Punkte
*
* @var integer
*/
private $points;
/**
* Uploads
*
* @var integer
*/
private $uploads;
/**
* Rang
*
* @var enum
*/
private $rang;
/**
* Ränge
*
* @consts integer
*
* @const ADMINISTRATOR
* @const MODERATOR
* @const USER
*/
const USER = 0;
const MODERATOR = 1;
const ADMIN = 2;
/**
* Lädt einen User in das Objekt
*
* @param param integer
*
* @return loaded boolean
*/
public function getUser($param) {
global $cDB;
if(is_int($param) {
$query = "SELECT * FROM `users` WHERE `id` = '" . $param . "'";
} elseif(is_string($param)) {
$query = "SELECT * FROM `users` WHERE `id` = '" . $param . "'";
}
$num = $cDB->num($query);
if($num > 0) {
$data = $cDB->fetch($query);
$this->id = $data['id'];
$this->username = $data['username'];
$this->password = $data['password'];
$this->email = $data['email'];
$this->points = $data['points'];
$this->uploads = $data['uploads'];
$this->rang = $data['rang'];
return true
}
return false;
}
/**
* Gibt die ID zurück
*
* @return id integer
*/
public function getID() {
return $this->id;
}
/**
* Gibt den Usernamen zurück
*
* @return username string
*/
public function getUsername() {
return $this->username;
}
/**
* Setzt den Usernamen
*
*/
public function setUsername($value) {
if(!is_string($value)) {
$msg = "Der Username muss eine korrekte Zeichenkette sein!";
return $msg;
}
if(empty($value)) {
$msg = "Der Username darf nicht leer sein!";
return $msg;
}
if(strlen($value) < 4) {
$msg = "Der Username muss länger als 3 Zeichen sein!";
return $msg;
}
$this->username = $value;
return true
}
/**
* Gibt das Passwort im MD5-Format zurück
*
* @return password string
*/
public function getPassword() {
return $this->password;
}
/**
* Gibt die E-Mail des Users zurück
*
* @return email string
*/
public function getMail() {
return $this->email;
}
/**
* Setzt die E-Mail Adresse
*
*/
public function setMail($value) {
if(empty($value)) {
$msg = "Die Mail darf nicht leer sein!";
return $msg;
}
if(!is_string($value)) {
$msg = "Die Mail muss eine korrekte Zeichenkette sein!";
return $msg;
}
if(self::checkMail($value)) {
$msg = "Gebe eine korrekte Mail-Adresse an!";
return $msg;
}
$this->email = $value;
return true;
}
/**
* Prüft, ob die Mail korrekt ist
*
* @param mail string
*
* @return check boolean
*/
public static function checkMail($email) {
return preg_match("/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-.]+\.([a-zA-Z]{2,4})$/", $email);
}
/**
* Gibt die Punkte des Users zurück
*
* @return points integer
*/
public function getPoints() {
return $this->getPoints;
}
/**
* Gibt die Anzahl der Uploads zurück
*
* @return uploads integer
*/
public function getUploads() {
return $this->uploads;
}
/**
* Gibt den Rang des Users zurück
*
* @return rang enum
*/
public function getRang() {
return $this->rang;
}
/**
* Setzt die E-Mail Adresse
*
*/
public function setRang($value) {
if(empty($value)) {
$msg = "Der Rang darf nicht leer sein!";
return $msg;
}
if(!is_int($value)) {
$msg = "Der Rang muss eine Zahl sein! Oder der Enum der Konstanten in der User-Klasse.";
return $msg;
}
if($value != self::ADMIN AND $value != self::MODERATOR AND $value != self::USER) {
$msg = "Diese Rang gibt es nicht!";
return $msg;
}
$this->rang = $value;
return true;
}
/**
* Prüft, ob der User Administrator ist
*
* @return isAdmin boolean
*/
public function isAdmin() {
$this->rang == self::ADMIN ? return true : return false;
}
/**
* Prüft, ob ein angegebener User ein Administrator ist
*
* @param id userid
*
* @return isAdmin boolean
*/
public static function userIsAdmin($id) {
global $cDB;
$user = $cDB->fetch("SELECT `rang` FROM `users` WHERE `id` = '" . $id . "'");
$user['rang'] == self::ADMIN ? return true : return false;
}
/**
* Prüft, ob der User Moderator ist
*
* @return isMod boolean
*/
public function isMod() {
$this->rang == self::MODERATOR ? return true : return false;
}
/**
* Prüft, ob ein angegebener User ein Moderator ist
*
* @param id userid
*
* @return isMod boolean
*/
public static function sUserIsMod($id) {
global $cDB;
$user = $cDB->fetch("SELECT `rang` FROM `users` WHERE `id` = '" . $id . "'");
$user['rang'] == self::MODERATOR ? return true : return false;
}
/**
* Userdaten eines Users bekommen, zum direkten Weiterleiten ans Template
*
* @param id integer
*
* @return data array
*/
public static function sGetUserDataForTemplate($id) {
global $cDB;
$data = array();
$query = $cDB->query("SELECT * FROM `users` WHERE `id` = '" . $id . "'");
while($row = $cDB->fetch($query)) {
$data[] = $row;
}
return $data;
}
/**
* Userdaten eines Users bekommen
*
* @param id integer
*
* @return data array
*/
public static function sGetUserData($id) {
global $cDB;
$data = $cDB->fetch("SELECT * FROM `users` WHERE `id` = '" . $id . "'");
return $data;
}
/**
* Gibt den Usernamen anhand einer ID zurück
*
* @param id integer
*
* @return user string
*/
public static function sGetUsernameById($id) {
global $cDB;
$user = $cDB->fetch("SELECT `username` FROM `users` WHERE `id` = '" . $id . "'");
return $user['username'];
}
/**
* Speichert den User und deren Daten
*
* @return done boolean
*/
public function save() {
global $cDB;
$prepare = $cDB->mysqli->prepare("UPDATE `users` SET `email` = ?, `username` = ?, `password` = ?, `points` = ?, `uploads` = ?, `rang` = ? WHERE `id` = ?");
$prepare->bind_param('sssiiii', $this->email, $this->username, $this->password, $this->points, $this->uploads, $this->rang, $this->id);
$prepare->execute();
$affected = $prepare->affected_rows;
$prepare->close();
$affected > 0 ? return true : return false;
}
}
?>
Alles anzeigen
####################################################################################
HIER SIND DIE ERSTEN SCREENSHOTS!
STARTSEITE /HOME:
Klick!
ADMIN-PANEL NEWS ÜBERSICHT:
Klick!
ADMIN-PANEL NEWS SCHREIBEN:
Klick!
so far
Yannici