[CON-392] Zeitsteuerung in Release: 4.8.12

idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Re: Zeitsteuerung in Release: 4.8.12

Beitrag von idea-tec » Mo 9. Aug 2010, 19:04

Na alla gut ;-) ... ich kümmer mich die Woche mal drum
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)

idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Re: Zeitsteuerung in Release: 4.8.12

Beitrag von idea-tec » Fr 13. Aug 2010, 13:50

So ... ich beschäftige mich gerade mal eben damit. Ich hab Lachanfälle!!!
Allerdings ist es nicht wirklich witzig, sondern eher zum Weinen, was man da zu sehen bekommt:

Code: Alles auswählen

$sql = "SELECT idartlang, idart, time_move_cat, time_target_cat, time_online_move FROM ".$cfg["tab"]["art_lang"]." WHERE NOW() > dateend AND dateend != '0000-00-00 00:00:00' AND timemgmt = 1";
$db->query($sql);
while ($db->next_record()) {    
    if ($db->f("time_move_cat") == "1") {
Ich würde das Feld time_move_cat im select ja schon direkt auf den Wert 1 abfragen, dann braucht man keine extra abfrage und vor allem hat man nicht hunderte, tausende von ergebnissen im Zugriff. Ich mein, gäbe es dann wenigstens noch einen else-Zweig, würde ich es ja verstehen, aber da ist nur dieses if *weggröhl*

Die Selects der eigentlichen Zeitsteuerung sind noch viel geiler!!! Mädels/Jungs, mein Sohn ist 13 und macht das bereits besser ... Boah ist das gruselig!!!

Fazit:
Ich mach einen Fred in den Feature-Requests auf, in dem ich kurz die genau Funktion definiere und zur Diskussion stelle.
Gerne kann man mich auch anrufen, wenn man das gerne mal besprochen hätte.
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)

idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Re: Zeitsteuerung in Release: 4.8.12

Beitrag von idea-tec » So 15. Aug 2010, 19:22

So ... ich hab mir mal was durch den Kopf gehen lassen.
Zunächst ist es eine Zusammenfassung der beiden Funktionen:
- conFlagOnOffline()
- conMoveArticles
aus der Datei functions.con, beginnend in Zeile 1621

Code: Alles auswählen

/**
 * Edit all articles with time management function
 *
 * @param none
 *
 * @author Karsten Klopmann <kk@idea-tec.de>
 * @copyright idea-tec GmbH 2010
 */
function conTimeMgmtKK() {
    global $cfg;
    $db = new DB_Contenido;
    $db2 = new DB_Contenido;
    $Now = date("Y-m-d h:i:s");

    //-- Der Select wird dem Umstand gerecht, dass es in der Zeitsteuerung möglich ist ein Startdatum einzugeben, das NACH dem Enddatum liegt!!!
    $sql = 'SELECT * FROM '.$cfg["tab"]["art_lang"].' where timemgmt = 1 and (datestart<dateend || dateend="0000-00-00 00:00:00")';
    $db->query($sql);
    while ($db->next_record()) {
        $timemgmt_select = 'update '.$cfg["tab"]["art_lang"].' set ';

        // zunächst schauen wir wie es basierend auf den jeweiligen Datumsangaben um den Online-Status steht
        if ($db->f("datestart")<=$Now && $db->f("datestart")!="0000-00-00 00:00:00" && $db->f("online")==0) {
            $timemgmt_select .= 'online=1, ';
            if ($db->f("dateend")=="0000-00-00 00:00:00") { $timemgmt_select .= 'timemgmt=0 '; }
        } else if ($db->f("dateend")<=$Now && $db->f("dateend")!="0000-00-00 00:00:00" && $db->f("online")==1 && $db->f("time_move_cat")==0) { $timemgmt_select .= 'online=0, timemgmt=0 '; }
        else if ($db->f("dateend")<=$Now && $db->f("dateend")!="0000-00-00 00:00:00" && $db->f("online")==1 && $db->f("time_move_cat")==1 && $db->f("time_online_move")==0) { $timemgmt_select .= 'online=0, timemgmt=0 '; }

        $timemgmt_select .= 'WHERE idartlang="'.Contenido_Security::toInteger($db->f("idartlang")).'"';
        $db2->query($timemgmt_select);
        
        //-- Übernahme der Funktion aus conMoveArticles
        if ($db->f("time_move_cat")==1) {
            $sql = "UPDATE ".$cfg["tab"]["cat_art"]." SET idcat = '" . Contenido_Security::toInteger($db->f("time_target_cat")) . "', createcode = '1' WHERE idart = '" . Contenido_Security::toInteger($db->f("idart")) . "'";
            $db2->query($sql);

            // execute CEC hook
            $record = CEC_Hook::execute('Contenido.Article.conMoveArticles_Loop', $db->Record);
       }
    }
}
Getestet habe ich es nicht, hatte keine Zeit dazu.

Zum Testen die Funktion in die Datei /contenido/includes/functions.con.php einfügen, danach in der Datei /contenido/cronjobs/move_articles.php folgendes eintragen:

Code: Alles auswählen

	conTimeMgmtKK();
/*
	conFlagOnOffline();

	conMoveArticles();
*/
ACHTUNG ... eine Beachtung des Startartikels ist derzeit noch nicht eingebaut.
Es handelt sich lediglich um die Zusammenführung und Vereinfachung von 2 im Core vorhandenen Funktionen bei Korrektur unsinniger DB-Zugriffe und möglicher FEHLeingaben (=> Enddatum VOR Startdatum!!!)

Kritik, Haue und Lob ... alles erlaubt, haut drauf ;-)
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)

demonheart
Beiträge: 21
Registriert: Fr 14. Apr 2006, 13:50
Wohnort: Norderstedt
Kontaktdaten:

Re: Zeitsteuerung in Release: 4.8.12

Beitrag von demonheart » Do 14. Apr 2011, 12:46

Hallo,

hat sich hier bereits was getan? Der letzte Beitrag hierzu ist nun schon fast ein 1 Jahr her... - würde diese Funktion auch benötigen!

bilal.arslan_4fb
Beiträge: 35
Registriert: Do 23. Aug 2007, 08:36
Kontaktdaten:

Re: [CON-392] Zeitsteuerung in Release: 4.8.12

Beitrag von bilal.arslan_4fb » Mi 18. Mai 2011, 15:16

Wird bearbeitet, ist im JIRA aufgenommen.

idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Re: [CON-392] Zeitsteuerung in Release: 4.8.12

Beitrag von idea-tec » Mi 18. Mai 2011, 20:17

Mich springt die ToDo auch wöchentlich an ;-)
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)

Gesperrt