Zurück   WordPress Deutschland Forum > Support > Plugins und Widgets > Plugin-Entwicklung
Registrieren Hilfe Benutzerliste Suchen Heutige Beiträge Alle Foren als gelesen markieren Threads ohne Antworten


Antwort
 
Themen-Optionen Ansicht
Alt 24.04.2008, 15:40   #11 (permalink)
Alphawolf
WPD-Moderator
 
Registriert seit: 31.05.2005
Ort: Gera
Beiträge: 1.835
Zitat:
Zitat von squizeer Beitrag anzeigen
Ich habe gerade die Update-Funktion aus der update.php 1:1 ins Plugin kopiert. Für den redundanten Code gibt es zwar 3 Jahre Programmier-Hölle, aber es funktioniert
Ach, die Jungs vom CakePHP-Projekt scheinen auch fleißig Teile von Ruby on Rails zu übernehmen, und leben auch noch auf der Erde.

Und ich denke nicht, dass es derzeit Beschränkungen gibt. Aber da könntest du entweder mal nachfrragen, oder warten bis die API dokumentiert ist..

edit. Ich würde höchstens den 'User-Agent', den dein Plugin dann an api.wordpress.org sendet, abändern, damit man sieht, dass der Zugriff von deinem Plugin kommt.

Kann man das Plugin irgendwoher bekommen?
__________________
Erweiterungen

Geändert von Alphawolf (24.04.2008 um 15:53 Uhr).
Alphawolf ist offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiWong this Post!
Mit Zitat antworten
Alt 24.04.2008, 16:19   #12 (permalink)
squizeer
PostRank: 1
 
Registriert seit: 04.09.2006
Beiträge: 30
Zitat:
Zitat von Alphawolf Beitrag anzeigen
Kann man das Plugin irgendwoher bekommen?
Kann man Teste aber gerade noch ein bisschen. Habe es schon im Plugin Verzeichnis angemeldet und warte noch auf Freigabe.
squizeer ist offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiWong this Post!
Mit Zitat antworten
Alt 24.04.2008, 16:24   #13 (permalink)
Alphawolf
WPD-Moderator
 
Registriert seit: 31.05.2005
Ort: Gera
Beiträge: 1.835
Zitat:
Zitat von squizeer Beitrag anzeigen
Kann man Teste aber gerade noch ein bisschen. Habe es schon im Plugin Verzeichnis angemeldet und warte noch auf Freigabe.
Ah, okay. Wenn du noch einen Tester suchst, meld dich (aber nur wenn ich das Rezensionsexemplar behalten darf. ).
__________________
Erweiterungen
Alphawolf ist offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiWong this Post!
Mit Zitat antworten
Alt 25.04.2008, 13:47   #14 (permalink)
squizeer
PostRank: 1
 
Registriert seit: 04.09.2006
Beiträge: 30
Irgendwie will der Cron nicht laufen. Beim ersten Start macht er einmal was, aber danach kommt nichts mehr. Hatte für Testzwecke einfach mal an den Anfang von checkPluginUpdates() einen E-Mail-Versand gesetzt und darberhinaus div. Plugins auf niedrigere Versionen runter gestellt.

Zwei Anmerkungen:
- Die Update-Plugins Funktion ist noch nicht anonymisiert
- Die Empfänger E-Mail-Adresse wird über die Konstante RECIPIENT am Anfang gesetzt.
Hier mal der komplette Code. Vielleicht hat jemand noch eine Idee

PHP-Code:
<?php
/*
Plugin Name: Mail On Update
Plugin URI: http://www.svenkubiak.de/mailonupdate
Description: Sends an E-Mail if a newer version of a plugin is available in the wordpress directory
Version: 1.0beta
Author: Sven Kubiak
Author URI: http://www.svenkubiak.de

Copyright 2008 Sven Kubiak

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/
global $wp_version;
define('MOUISWP23'version_compare($wp_version'2.3''>='));
define('RECIPIENT','MAIL AT DOMAIN PUNKT DE');

class 
MailOnUpdate {

    function 
mailonupdate()
    {
        
//do not run if wordpress is too old
        
if (!MOUISWP23)
            return;
            
        
//load loanguage file
        //if (function_exists('load_plugin_textdomain'))
            //load_plugin_textdomain('mou', PLUGINDIR.'/mailonupdate');    
        
        
if (!wp_next_scheduled('scheduledCheckUpdates'))
            
wp_schedule_eventtime(), 'hourly''scheduledCheckUpdates' );
                
        
add_action('scheduledCheckUpdates', array(&$this'checkPluginUpdates'));    
    }

    function 
checkPluginUpdates()
    {
        global 
$wp_version;
        
        if ( !
function_exists('fsockopen') )
            return 
false;

        
$plugins get_plugins();
        
$active  get_option'active_plugins' );
        
$current get_option'update_plugins' );

        
$new_option '';
        
$new_option->last_checked time();

        
$plugin_changed false;
        foreach ( 
$plugins as $file => $p ) {
            
$new_option->checked$file ] = $p['Version'];

            if ( !isset( 
$current->checked$file ] ) ) {
                
$plugin_changed true;
                continue;
            }

            if ( 
strval($current->checked$file ]) !== strval($p['Version']) )
                
$plugin_changed true;
        }
        
        if (
        isset( 
$current->last_checked ) &&
        
3600 > ( time() - $current->last_checked ) &&
        !
$plugin_changed
        
)
        return 
false;

        
$to_send->plugins $plugins;
        
$to_send->active $active;
        
$send serialize$to_send );

        
$request 'plugins=' urlencode$send );
        
$http_request  "POST /plugins/update-check/1.0/ HTTP/1.0\r\n";
        
$http_request .= "Host: api.wordpress.org\r\n";
        
$http_request .= "Content-Type: application/x-www-form-urlencoded; charset=" get_option('blog_charset') . "\r\n";
        
$http_request .= "Content-Length: " strlen($request) . "\r\n";
        
$http_request .= 'User-Agent: WordPress/' $wp_version '; ' get_bloginfo('url') . "\r\n";
        
$http_request .= "\r\n";
        
$http_request .= $request;        

        
$response '';
        if( 
false != ( $fs = @fsockopen'api.wordpress.org'80$errno$errstr3) ) && is_resource($fs) ) {
            
fwrite($fs$http_request);

            while ( !
feof($fs) )
                
$response .= fgets($fs1160); // One TCP-IP packet
            
fclose($fs);
            
$response explode("\r\n\r\n"$response2);
        }

        
$response unserialize$response[1] );

        if ( 
$response )
            
$new_option->response $response;

        
update_option'update_plugins'$new_option );    
        
$current get_option'update_plugins' );

        
$message '';

        foreach ( 
$current->response as $plugin_file => $update_data ) {
            if ( empty(
$update_data->package) ){
                
$message .= __('Name:')." ".$plugins[$plugin]['Name']."\n";
                
$message .= __('Version:')." ".$update_data->new_version."\n";    
                
$message .= "\n\n";
            }
        }

        
$this->sendMailNotification(RECIPIENT,__('New updates available','mou'),$message);
    }
    
    function 
sendMailNotification($recipient$subject$message)
    {
        
//set body
        
$body  __('There are updates available for the following plugins:');
        
$body .= "\n\n".$message;
        
        
//set header
        
$subject '[' get_bloginfo('name') . '] ' $subject;
        
$bloginfo str_replace('"'"'"get_bloginfo('name'));
        
$charset get_settings('blog_charset');
        
$headers  "From: \"{$bloginfo}\" <noreply>\n";
        
$headers .= "MIME-Version: 1.0\n";
        
$headers .= "Content-Type: text/plain; charset=\"{$charset}\"\n";
    
        
//send e-mail
        
wp_mail($recipient$subject$body$headers);
    }    
}
if (
class_exists('MailOnUpate'))
    
$mou = new MailOnUpdate();
?>
__________________
Plugins anyone?

Geändert von squizeer (25.04.2008 um 13:51 Uhr).
squizeer ist offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiWong this Post!
Mit Zitat antworten
Alt 25.04.2008, 14:32   #15 (permalink)
redcat63
PostRank: 7
 
Registriert seit: 31.03.2006
Beiträge: 795
Wenn ich Dein Script richtig verstehe, dann prüfst Du, ob und wenn ja wann das letzte Mal ein update-Check vorgenommen wurde.
Da es beim ersten Mal funktioniert hat:
Kann es sein, dass Du diese Zeit nicht hast verstreichen lassen bzw. vergessen hast, das erstellte File zu löschen bzw. zu manipulieren?
Vielleicht liegt es auch daran, dass eine Variable nicht richtig entleert wurde und deswegen beim 2. Mal Schwierigkeiten macht.
Um das herauszufinden, ob es daran scheitert, übergebe allen Variablen einen leeren String. (Beispiel: $meinevariable=''

Auch wenn das Problem eigentlich gelöst ist:
Warum empfindest Du es als unsauber, wenn Du die Datei per require_once einbindest?
Es hätte nicht nur den Vorteil, dass Du keinen redundanten Code hast, sondern auch künftige Änderungen, die in der Datei update.php von WP vorgenommen wurden, nicht selbst vornehmen musst (Faulheit siegt, gel? )

VG Elke
__________________
http://v-portal.org und http://u-portal.de
redcat63 ist offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiWong this Post!
Mit Zitat antworten
Alt 25.04.2008, 15:06   #16 (permalink)
squizeer
PostRank: 1
 
Registriert seit: 04.09.2006
Beiträge: 30
An Zeit habe ich fast 24 Stunden verstreichen lassen, von daher sollte zumindest einmal die checkUpdatePlugins vom Cron aufgerufen worden sein.

Ich hatte ja direkt an die erste Zeile der Funktion eine zusätzliche Mail-Benachrichtigung eingebaut. D.h., unabhängig von der ganzen Prüfroutine der Updates hätte ich bei stündlicher Cron Ausführung zumindest ein paar E-Mails bekommen müssen. Ich sage jetzt einfach mal, dass mein Blog so frequentiert ist, dass die Crons ungefähr stündlich aufgerufen werden

Das mit dem "unsauber" meinte ich in Bezug auf Admin-Code außerhalb des Admin-Scope. Vielleicht haben sich die WP-Entwickler was dabei gedacht, weiß ich nur nicht
__________________
Plugins anyone?
squizeer ist offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiWong this Post!
Mit Zitat antworten
Alt 26.04.2008, 14:59   #17 (permalink)
Alphawolf
WPD-Moderator
 
Registriert seit: 31.05.2005
Ort: Gera
Beiträge: 1.835
squizeer, schau dir mal das Il Filosofo » WordPress Database Backup Plugin an... das nutzt auch die WP-Cron Klasse und sendet mir zuverlässig die Backups, auch wenn ich nicht im wp-admin bin.

Btw, statt
PHP-Code:
define('RECIPIENT','MAIL AT DOMAIN PUNKT DE'); 
wäre
PHP-Code:
define('RECIPIENT'bloginfo('admin_email') ); 
besser, dann muss man das nicht manuell eintragen, sondern das Script nimmt die angegebene Emailadresse des Admins.
__________________
Erweiterungen
Alphawolf ist offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiWong this Post!
Mit Zitat antworten
Alt 26.04.2008, 15:54   #18 (permalink)
redcat63
PostRank: 7
 
Registriert seit: 31.03.2006
Beiträge: 795
Die Fragen, die sich mir zunächst stellen sind:
1. Wurde überhaupt ein Cron-Job erstellt, der stündlich durchgeführt wird?
2. Gibt es die Funktion scheduledCheckUpdates überhaupt oder heißt sie vielleicht scheduleCheckUpdates (o.ä.).

Vielleicht ist es nicht relevant, aber...
die class heißt MailOnUpdate. Die Funktion darunter hat den selben Namen. Allerdings werden bei ihr keine Großbuchstaben verwendet. Ist das so gewollt?

VG Elke

P.S. Was heißt eigentlich Admin-Scope?
__________________
http://v-portal.org und http://u-portal.de
redcat63 ist offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiWong this Post!
Mit Zitat antworten
Alt 26.04.2008, 15:59   #19 (permalink)
squizeer
PostRank: 1
 
Registriert seit: 04.09.2006
Beiträge: 30
Zitat:
Zitat von redcat63 Beitrag anzeigen
1. Wurde überhaupt ein Cron-Job erstellt, der stündlich durchgeführt wird?
Ja, hab ich in der Datenbank überprüft.

Zitat:
Zitat von redcat63 Beitrag anzeigen
2. Gibt es die Funktion scheduledCheckUpdates überhaupt oder heißt sie vielleicht scheduleCheckUpdates (o.ä.).
Das könnte ich in der tat nochmal genauer überpfüen

Zitat:
Zitat von redcat63 Beitrag anzeigen
Vielleicht ist es nicht relevant, aber...
die class heißt MailOnUpdate. Die Funktion darunter hat den selben Namen. Allerdings werden bei ihr keine Großbuchstaben verwendet. Ist das so gewollt?
Ja, in PHP 4 ist eine Methode mit dem gleichen Namen wie die Klasse der Konstruktoren. In PHP 5 verwendet man __construct().

Zitat:
Zitat von redcat63 Beitrag anzeigen
P.S. Was heißt eigentlich Admin-Scope?
Alles, was im Admin-Bereich angesiedelt ist ... würde ich mal so sagen

@Alphawolf
Die Konstante ist erstmal nur zum testen drin. In der finalen Version hatte ich vor, alle Admins auflisten zu lassen und dann den Nutzer auswählen zu lassen an wenn die Benachrichtigung versendet wird.
__________________
Plugins anyone?
squizeer ist offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiWong this Post!
Mit Zitat antworten
Alt 26.04.2008, 16:17   #20 (permalink)
redcat63
PostRank: 7
 
Registriert seit: 31.03.2006
Beiträge: 795
Wahrscheinlich kennst Du die Seite schon auswendig, aber schau Dir mal das Beispiel genau an.
Dort findest Du u.a. die Funktion
register_activation_hook(__FILE__, 'my_activation');

Außerdem würde ich es statt
PHP-Code:
add_action('scheduledCheckUpdates', array(&$this'checkPluginUpdates')); 
mal mit:
PHP-Code:
add_action('scheduledCheckUpdates''checkPluginUpdates'); 
VG Elke
__________________
http://v-portal.org und http://u-portal.de

Geändert von redcat63 (26.04.2008 um 16:49 Uhr). Grund: geändert, weil ich den Link zur Seite vergessen habe
redcat63 ist offline  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiWong this Post!
Mit Zitat antworten
Antwort


Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge anzufügen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist Aus.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are Aus
Refbacks are Aus


Alle Zeitangaben in WEZ +2. Es ist jetzt 05:07 Uhr.


Sponsoren:

Powered by vBulletin® Version 3.6.8 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.0.0  — ImpressumEin Inpsyde.com Projekt