bug function conMakeStart

Gesperrt
emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

bug function conMakeStart

Beitrag von emergence » Mo 16. Okt 2006, 15:28

functions.con.php -> function conMakeStart

folgendes sql query ist nicht ganz richtig...

Code: Alles auswählen

			$sql = "UPDATE ".$cfg["tab"]["cat_lang"]." SET startidartlang='0' WHERE idcat='$idcat' AND idlang='$lang'";
ersetzen durch

Code: Alles auswählen

			$sql = "UPDATE ".$cfg["tab"]["cat_lang"]." SET startidartlang='0' WHERE idcat='$idcat' AND idlang='$lang' AND startidartlang='$idartlang'";
sonst kann es passieren das ein anderer startartikel in dieser kategorie plötzlich keiner mehr ist..
*** make your own tools (wishlist :: thx)

emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Mo 16. Okt 2006, 16:31

cool da gibts ja noch was was nicht richtig geht...

einerseits

wird die zeitsteuerung nicht deaktiviert wenn man einen artikel zum startartikel macht...
tritt nur bei $cfg["is_start_compatible"] == false auf..

anderseits
gibts ein

global $is_start;

zu beginn der funktion
sieht etwas seltsam aus -> is_start wird ja bei beim funktionsaufruf mit übergeben...

nimmt man nun das global raus, kann man einen artikel nicht zum startartikel machen -> content - artikel - übersicht ...

hmm... der grund dafür ist in der con_actions - con_makestart
da findet sich

Code: Alles auswählen

conMakeStart ($idcatart, !$is_start);
müsste dann aber

Code: Alles auswählen

conMakeStart ($idcatart, $is_start);
sein...

die ganze funktion mit allen änderungen (con_action änderung dabei nicht vergessen)

Code: Alles auswählen

/**
 * Set a start-article
 *
 * @param int $idcatart Idcatart of the article
 *
 * @return void
 *
 * @author Olaf Niemann <olaf.niemann@4fb-de>
 *		   Jan Lengowski <jan.lengowski@4fb.de>
 *
 * @copyright four for business AG <www.4fb.de>
 */
function conMakeStart($idcatart, $is_start)
{

	global $db, $cfg, $lang;

	if ($cfg["is_start_compatible"] == true)
	{
		$sql = "SELECT idcat, is_start FROM ".$cfg["tab"]["cat_art"]." WHERE idcatart = '$idcatart'";

		$db->query($sql);
		$db->next_record();

		$idcat = $db->f("idcat");

		if ($is_start == 1) {
			$sql = "UPDATE ".$cfg["tab"]["cat_art"]." SET is_start = 0 WHERE idcat = $idcat";
			$db->query($sql);
		}

		$sql = "UPDATE ".$cfg["tab"]["cat_art"]." SET is_start='$is_start' WHERE idcatart = '$idcatart'";
		$db->query($sql);

	} else {

		$sql = "SELECT idcat, idart FROM ".$cfg["tab"]["cat_art"]." WHERE idcatart='$idcatart'";
		$db->query($sql);
		$db->next_record();

		$idart = $db->f("idart");
		$idcat = $db->f("idcat");

		$sql = "SELECT idartlang FROM ".$cfg["tab"]["art_lang"]." WHERE idart='$idart' AND idlang='$lang'";
		$db->query($sql);
		$db->next_record();

		$idartlang = $db->f("idartlang");

		if ($is_start == 1)
		{
			$sql = "UPDATE ".$cfg["tab"]["cat_lang"]." SET startidartlang='$idartlang' WHERE idcat='$idcat' AND idlang='$lang'";
			$db->query($sql);
			// echo $sql;
		} else {
			// INFO: only set when this idartlang is startarticle
			$sql = "UPDATE ".$cfg["tab"]["cat_lang"]." SET startidartlang='0' WHERE idcat='$idcat' AND idlang='$lang' AND startidartlang='$idartlang'";
			$db->query($sql);
			// echo $sql;
		}

	}

	if ( $is_start == 1 ) {

		// deactivate timemanagement if article is a start-article
		$sql = "SELECT idart FROM ".$cfg["tab"]["cat_art"]." WHERE idcatart = $idcatart";

		$db->query($sql);
		$db->next_record();

		$idart = $db->f("idart");

		$sql = "UPDATE ".$cfg["tab"]["art_lang"]." SET timemgmt = 0 WHERE idart = $idart AND idlang = $lang";
		$db->query($sql);

	}

}
*** make your own tools (wishlist :: thx)

#ayshe
Beiträge: 445
Registriert: Do 25. Mär 2004, 10:04
Kontaktdaten:

Beitrag von #ayshe » Di 23. Jan 2007, 15:42

Hallo!

Es geht um Contenido 4.6.8
Kann man irgendwie erreichen, dass auch als Startartikel markierte Artikel per Zeitsteuerung online gestellt werden. Die Zeitsteuerung funzt nämlich nur mit Nicht-Startartikeln. Was aber, wenn ich eine neue Kategorie zu einem bestimmten Zeitpunkt mittels der Zeitsteuerung ihres Startartikels online stellen will, die Kategorie vorher also auch nicht zu sehen sein soll?
Hat jemand eine Lösung?

Viele Grüße,
Ayshe

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Di 23. Jan 2007, 17:19

Zu dieser Frage gibt es schon einen sehr langen Thread inkl. nicht-offiziellem Lösungsansatz. Bitte die Suche verwenden (habe gerade den Link nicht zur Hand).

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Mi 24. Jan 2007, 23:00

Für Checkin vorgesehen.

Mmmmh, conMakeStart ($idcatart, !$is_start); in actions war im CVS schon geändert...

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Di 30. Jan 2007, 20:57

Done.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

Gesperrt