Archiv

Archiv für die Kategorie ‘Web Development’

Skype 5.0 Beta – Erste Bilder

Heureka! Skype 5.0 ist da.
Zwar momentan noch Beta, aber es wird nicht lange dauern, bis die Release kommt.
Sogar Videogesprche mit bis zu 5 Teilnehmern sind möglich.
Aber leider gibt es einen faden Beigeschmack:

Zitat Golem :

In der fertigen Version von Skype 5.0 wird die Gruppen-Videotelefonat-Funktion voraussichtlich nur gegen Bezahlung nutzbar sein. Weitere Premium-Funktionen sollen dieses Jahr noch folgen, heißt es von Skype, ohne irgendein Detail zu nennen.

Aber ich hab hier mal die ersten Bilder von Skype 5.0 Beta. Zwar gibt es bis dato nur den englischen Installer, updatet man jedoch seine alte deutsche Skype Version, so bleiben die Sprachdateien erhalten.

Ein kleines Pluginsystem in PHP – Teil1

2. April 2010 3 Kommentare

Artikel wurde neu geschrieben und ist hier erreichbar.

OUTDATED: Dieser Text ist veraltet und wird in der Woche vom 16.01.2012 bis zum 22.01.2012 ersetzt.

In den folgenden 3 Teilen werd ich euch zeigen, wie Ihr euch relativ einfach ein PHP Pluginsystem schreibt.
Der hier veröffentliche Quellcode kann unter der Creative Commons 3.0 by-sa mit Namensnennung von “Alexander Grüßung” und Verlinkung auf www.gvisions.de (zB. in den Credits (nicht nur als Kommentar!)) genutzt und veröffentlicht werden.

Teil 1: Vorüberlegung & die Klasse

Nun, wenn man so überlegt, was muss ein Pluginsystem alles mitbringen, damit man mit diesem ordentlich arbeiten kann?

Ich finde ein Pluginsystem sollte leicht zu verstehen sein, modular aufbauend sein und Ressourcen schonen.

Auf die Architektur der Ordner in eurem Projekt gehe ich jetzt nicht ein, da diese für die Pluginklasse, welche ich geschrieben habe nicht relevant ist.
Aber als Information gebe ich hier mal meine Ordnerstruktur preis:

/ – root Verzeichnis des Projektes
/core – hier liegen die ganzen Klassen
/application/plugins – wie der name schon sagt

 

Die anderen Ordner sind irrelevant.
In dem Ordner Plugins bekommt jedes Plugin noch einen Unterordner, die Schwierigkeit besteht darin, das die Pluginentwickler Ihre Plugins unterschiedlich benennen.
Vorerst lasse ich dies aber außer Betracht und widme mich in Teil 3 nochmal dem ganzen.

Kommen wir nun zur Pluginklasse ansich:


<del><!--?php /* gPlugin class to manage plugins (c) Alexander Gruessung 2010 */ class gPlugin { public  $pluginName = ''; public  $pluginClass = ''; public  $sql = ''; public  $content = ''; function __construct($pluginName) { $this--->pluginName = $pluginName;</del>
<del> if ($this->isRegist()==false OR $this->isActive()==false) {</del>
<del> $this->pluginName = 'PluginNotFound';</del>
<del> }</del>
<del> require_once('application/plugins/'.$this->pluginName.'/'.$this->pluginName.'.php');</del>
<del> $this->pluginClass = new $this->pluginName();</del>
<del> }</del>
<del> /*</del>
<del> * public function getContent</del>
<del> * @name getContent</del>
<del> * @version 1.0</del>
<del> * @author Alexander Gruessung</del>
<del> * @parameters pluginname</del>
<del> */</del>
<del> public function getContent() {</del>
<del> $plugin = new $this->pluginName();</del>
<del> $this->content = $plugin->run();</del>
<del> return $this->content;</del>

<del> }</del>

<del> public function getTitel() {</del>
<del> return $this->pluginClass->getTitel();</del>
<del> }</del>

<del> private function isRegist() {</del>
<del> $plugin = $this->pluginName;</del>
<del> $sql = new db();</del>
<del> $sql->query("SELECT * FROM ".prafix."_plugins WHERE `filename` = '".$this->pluginName."'");</del>
<del> $num = $sql->num_rows();</del>
<del> if ($num!="") {</del>
<del> return true;</del>
<del> } else {</del>
<del> return false;</del>
<del> }</del>
<del> }</del>

<del> public function isActive() {</del>
<del> $sql = new db();</del>
<del> $plugin = mysql_real_escape_string($this->pluginName);</del>
<del> $sql->query("SELECT * FROM ".prafix."_plugins WHERE `filename` = '".$plugin."' AND `activate` = 'true'");</del>
<del> $row = $sql->fetch();</del>
<del> $num = $sql->num_rows();</del>
<del> if ($num=="" OR $row->activate=="false") {</del>
<del> return false;</del>
<del> } else {</del>
<del> return true;</del>
<del> }</del>
<del> }</del>

<del>}</del>

Die Klasse ist somit komplett.
Erklärungen, so denke ich, muss ich nicht viele geben.>
Kurz zur Datenbankstruktur:

id (int, primary) | name (varchar 500 [für beschreibung]) | filename (varchar 200 [dateiname des plugins]) | activate (varchar 4 [true oder false])

Die Verwaltung der Plugins ist also relativ einfach.
Jetzt mal ein beispielplugin:

<!--?php class HelloWorld {  public function __constructor() {  }  public function getTitel() {  return "Hello World";  } //hier eventuell Dateien includieren und/doder Funktionen einbinden.  public function run() {   $html = "Hello World";   return $html;  } } ?-->

Wie man also sieht, gibt die Funktion run() in meinem Fall den HTML Quelltext zurück.
Natürlich kann man Pluginintern noch mit Templates arbeiten. Das ist garkein problem und sollte auch für PHP Laien realisierbar sein.
Stichwort: preg_replace, preg_match und so weiter…

Aufgerufen werden Plugins folgendermaßen:

</pre>
&nbsp;

<!--?php $plugin = new gPlugin('HelloWorld');  //die Klasse deklaireren $pluginTitel = $plugin--->getTitel();</del></span>
<span style="color: #000000;"><del>$pluginContent = $plugin->getContent();
?>

 

Nun kann man mit diesen Variablen machen, was man will:)

Im nächsten Teil werde ich auf eine Installationsroutine eingehen.

Sicherheitslücke wurde gefixt – WBB3 , SkypeProfilfeld

11. Januar 2010 Keine Kommentare

Nachdem OverSave, ein Teammember von www.forenhost.net, eine Lücke in der Forensoftware Burning Board 3 von Woltlab entdeckt hat, ist ein großes Aufgebot durch alle Foren gegangen. Mit dieser Lücke ist es möglich schädlichen Javascript Code in ein best. Profilfeld einzuschleußen. Wie werde ich hier nicht erklären!

Forenhost.net wurde beschuldigt diese Lücke absichtlich gegen die WCom ausgenutz zu haben. Das ist nicht korrekt, aber zurück zum Thema.

Wie 4 Your Clan nun als erste berichtet hat Woltlab reagiert  “und einen Bugfix heraus gegeben der den “Instant Messenger Support 1.1.1auf1.1.1pl1aktualisiert und den Fehler behebt.” (Quelle: www.4your-clan.de )

Rss Feed Tweeter button Facebook button Technorati button Delicious button Flickr button Youtube button