Seite 2 von 2

Re: Zeitsteuerung in Release: 4.8.12

Verfasst: Mo 9. Aug 2010, 19:04
von idea-tec
Na alla gut ;-) ... ich kümmer mich die Woche mal drum

Re: Zeitsteuerung in Release: 4.8.12

Verfasst: Fr 13. Aug 2010, 13:50
von idea-tec
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.

Re: Zeitsteuerung in Release: 4.8.12

Verfasst: So 15. Aug 2010, 19:22
von idea-tec
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 ;-)

Re: Zeitsteuerung in Release: 4.8.12

Verfasst: Do 14. Apr 2011, 12:46
von demonheart
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!

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

Verfasst: Mi 18. Mai 2011, 15:16
von bilal.arslan_4fb
Wird bearbeitet, ist im JIRA aufgenommen.

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

Verfasst: Mi 18. Mai 2011, 20:17
von idea-tec
Mich springt die ToDo auch wöchentlich an ;-)