interface für con_properties
interface für con_properties
gibts eigentlich schon sowas ? ich bräuchte sowas um x-beliebige werte zu definieren... und dann weiter zu verwenden.
die standard parameter für con_userprop sind etwas zu klein für mich...
wenn nicht wäre es nicht schlecht noch ein paar felder bei der con_properties mit rein zu ziehen...
die standard parameter für con_userprop sind etwas zu klein für mich...
wenn nicht wäre es nicht schlecht noch ein paar felder bei der con_properties mit rein zu ziehen...
*** make your own tools (wishlist :: thx)
yep perfekt, genau das hab ich gebraucht
werd das gleich mal testen...
gui bau ich mir selbst...
werd das gleich mal testen...
gui bau ich mir selbst...
*** make your own tools (wishlist :: thx)
hab mir das gerade in ne ältere version eingebaut...
jetzt hab ich ne blöde frage...
ich verwende momentan sowas wie
das funktioniert auch wunderbar...
jedoch wenn ich auf die idee komme
$properties->create("idcat", 27, "visual", "image", "images/tool2.gif");
zu verwenden wird in der db erneut ein eintrag mit neuer id vorgenommen...
ist das so beabsichtigt ? beim abfragen erhalte ich jedoch nur einen wert zurück... ähm...
oder ist create nur als interne funktion zu sehen... ?
aber da ist noch ne kleine sache...
die klasse braucht noch ne methode den eintrag komplett zu löschen...
-> deleteValue
es ist zwar delete vorhanden aber dazu müsste man die idproperty kennen, die die klasse leider nicht liefert...
jetzt hab ich ne blöde frage...
ich verwende momentan sowas wie
Code: Alles auswählen
<?php
cInclude ("classes", "class.properties.php");
$properties = new PropertyCollection();
$properties->setValue("idcat", 27, "visual", "image", "images/tool2.gif");
echo $properties->getValue("idcat", 27, "visual", "image");
?>
jedoch wenn ich auf die idee komme
$properties->create("idcat", 27, "visual", "image", "images/tool2.gif");
zu verwenden wird in der db erneut ein eintrag mit neuer id vorgenommen...
ist das so beabsichtigt ? beim abfragen erhalte ich jedoch nur einen wert zurück... ähm...
oder ist create nur als interne funktion zu sehen... ?
aber da ist noch ne kleine sache...
die klasse braucht noch ne methode den eintrag komplett zu löschen...
-> deleteValue
es ist zwar delete vorhanden aber dazu müsste man die idproperty kennen, die die klasse leider nicht liefert...
*** make your own tools (wishlist :: thx)
ähm nun ja da ich diese möglichkeit brauche hab ich jetzt folgendes in der class ergänzt...
sollte stimmen... zumindestens funktioniert es bei mir...
da ergibt sich jetzt noch ne frage
bei setValue wird nicht kontrolliert ob $this->client gesetzt ist... ist das ein bug oder beabsichtigt.... ?
und damit das ganze noch etwas intressanter ist sollte es ebenso möglich sein den wert $client komplett zu ignorieren...
eventuell mittels eines unset (nur hab ich keine ahnung ob das innerhalb der klasse funktioniert)
sollte stimmen... zumindestens funktioniert es bei mir...
Code: Alles auswählen
/*
* Delete a property item.
*
* Example:
*
* $properties->deleteValue("idcat", 27, "visual", "image");
*
* @param itemtype mixed Type of the item (example: idcat)
* @param itemid mixed ID of the item (example: 31)
* @param type mixed Type of the data to store (arbitary data)
* @param name mixed Entry name
*/
function deleteValue ($itemtype, $itemid, $type, $name)
{
if (isset($this->client))
{
$this->select("idclient = '".$this->client."' AND itemtype = '$itemtype' AND itemid = '$itemid' AND type = '$type' AND name = '$name'");
} else {
$this->select("itemtype = '$itemtype' AND itemid = '$itemid' AND type = '$type' AND name = '$name'");
}
if ($item = $this->next())
{
$this->delete($item->get("idproperty"));
}
}
bei setValue wird nicht kontrolliert ob $this->client gesetzt ist... ist das ein bug oder beabsichtigt.... ?
und damit das ganze noch etwas intressanter ist sollte es ebenso möglich sein den wert $client komplett zu ignorieren...
eventuell mittels eines unset (nur hab ich keine ahnung ob das innerhalb der klasse funktioniert)
*** make your own tools (wishlist :: thx)
und da hab ich gleich noch ne blöde frage...
sollte die con_art_spec nicht ebenfalls via con_properties abgewickelt werden ?
sollte die con_art_spec nicht ebenfalls via con_properties abgewickelt werden ?
*** make your own tools (wishlist :: thx)
wenn du sie anders setzt, steht nicht mehr 1 drinnen...
zb
zb
Code: Alles auswählen
<?php
$properties = new PropertyCollection();
$properties->setValue("idcat", 27, "visual", "image", "images/tool2.gif");
echo $properties->getValue("idcat", 27, "visual", "image");
?>
*** make your own tools (wishlist :: thx)
wieso mandantenid ? du hast nach der itemid gefragt... im neusten csv gibts in der klasse auch die möglichkeit die mandanten id zu ändern, aber nicht um sie zu ignorieren...HerrB hat geschrieben:*grins*, ach?
Dann gehe ich jetzt mal davon aus, dass bei Mandanteneinstellungen da immer eine 1 steht - wobei ich dann immer noch nicht so ganz verstanden habe, wozu es itemid gibt und ich diese ID auch noch bei getValue wissen muss (kein optionaler Wert)...
etwas unflexibel ist das ganze schon da man immer nur dezitiert einen wert auslesen kann...
nur so als beispiel:
ich definiere mehrere properties die für ne bestimmte idcat gelten sollen...
$properties->setValue("idcat", 1, "color", "light", "#EEEEEE");
$properties->setValue("idcat", 1, "color", "dark", "#CCCCCC");
ich könnte dann einfach über ein modul abfragen ob irgendwelche werte für genau diese kategorie gesetzt wurden....
$dark = $properties->getValue("idcat", $idcat, "color", "dark");
$light = $properties->getValue("idcat", $idcat, "color", "dark");
ist kein wert für diese kategorie definiert wäre $dark oder $light false...
die werte würden dann nur geliefert werden wenn ich in idcat = 1 bin...
da kann man wirklich viele schöne sachen damit machen

*** make your own tools (wishlist :: thx)
Es gibt bei Administration -> Mandanten in V4.5 die Möglichkeit, Eigenschaften abzulegen (eine super Stelle für die Newsletter-idcatart). Um diese aber über getValue ermitteln zu können, muss ich die itemid wissen, die vom Contenido-Backenend eingetragen wird. Daher der Satz "dann nehme ich mal an, dass bei Mandanteneinstellungen da immer 1 steht" - mit der Mandanten-ID hat das zunächst nix zu tun.
Ich bin deswegen ein wenig überrascht, da mit itemtype = "clientsetting", type = "Irgendwas", name = "IrgendeinName" zumindest Mandanteneinstellungen eindeutig definiert sind (und man - wenn die 1 Annahme stimmt - über das Backend nicht mehrere Mandanten-Eigenschaften mit identischem itemtype, type und name anlegen kann).
Für diesen Fall würde $wert = $properties->getValue("clientsetting", "Irgendwas", "IrgendeinName"); völlig ausreichen.
Was ich übrigens noch in getValue vermisse, ist ein Standardwert, e.g. $light = $properties->getValue("idcat", $idcat, "color", "dark", "#EEEEEE"); - falls der Wert gar nicht definiert ist. Da erspart man sich das if (!$light) ...
(Wenn Du $light = $properties->getValue("idcat", $idcat, "color", "light"); meintest, habe ich das Beispiel verstanden)
Und danke für die Info...
Gruß
HerrB
Ich bin deswegen ein wenig überrascht, da mit itemtype = "clientsetting", type = "Irgendwas", name = "IrgendeinName" zumindest Mandanteneinstellungen eindeutig definiert sind (und man - wenn die 1 Annahme stimmt - über das Backend nicht mehrere Mandanten-Eigenschaften mit identischem itemtype, type und name anlegen kann).
Für diesen Fall würde $wert = $properties->getValue("clientsetting", "Irgendwas", "IrgendeinName"); völlig ausreichen.
Was ich übrigens noch in getValue vermisse, ist ein Standardwert, e.g. $light = $properties->getValue("idcat", $idcat, "color", "dark", "#EEEEEE"); - falls der Wert gar nicht definiert ist. Da erspart man sich das if (!$light) ...
(Wenn Du $light = $properties->getValue("idcat", $idcat, "color", "light"); meintest, habe ich das Beispiel verstanden)
Und danke für die Info...
Gruß
HerrB
ähm ja danke , meine ich...HerrB hat geschrieben:(Wenn Du $light = $properties->getValue("idcat", $idcat, "color", "light"); meintest, habe ich das Beispiel verstanden)

*** make your own tools (wishlist :: thx)
ich hab da noch zwei funktionen geschrieben für die klasse... die ich ganz praktisch finde...
es werden nur die parameter $itemtype, $itemid übergeben...
eine dient nur dazu abzufragen ob werte definiert sind und liefert true oder false
die zweite liefert mir alle werte als array zurück...
EDIT: veraltet
-> http://www.contenido.org/forum/viewtopi ... 1768#81768
es werden nur die parameter $itemtype, $itemid übergeben...
eine dient nur dazu abzufragen ob werte definiert sind und liefert true oder false
die zweite liefert mir alle werte als array zurück...
Code: Alles auswählen
/*
* Checks if values for a given item are available.
*
* @param itemtype mixed Type of the item (example: idcat)
* @param itemid mixed ID of the item (example: 31)
* @return boolen
*/
function isStored ($itemtype, $itemid)
{
if (isset($this->client))
{
$this->select("idclient = '".$this->client."' AND itemtype = '$itemtype' AND itemid = '$itemid'");
} else {
$this->select("itemtype = '$itemtype' AND itemid = '$itemid'");
}
if ($item = $this->next())
{
return true;
}
return $false;
}
/*
* Checks if values for a given item are available.
*
* @param itemtype mixed Type of the item (example: idcat)
* @param itemid mixed ID of the item (example: 31)
* @return array for each given item
*/
function getStored ($itemtype, $itemid)
{
if (isset($this->client))
{
$this->select("idclient = '".$this->client."' AND itemtype = '$itemtype' AND itemid = '$itemid'");
} else {
$this->select("itemtype = '$itemtype' AND itemid = '$itemid'");
}
while ($item = $this->next())
{
$found = true;
$tmparray[] = Array ($item->get("type") , $item->get("name"), $item->get("value"));
}
if ($found) {
return $tmparray;
}
return $false;
}
-> http://www.contenido.org/forum/viewtopi ... 1768#81768
Zuletzt geändert von emergence am Fr 9. Jun 2006, 11:45, insgesamt 1-mal geändert.
*** make your own tools (wishlist :: thx)
Um auf diese Frage zurück zu kommen:
Man muss also die Mandanteneinstellungen mit ermitteln.
Gruß
HerrB
Die Property wird in classes\contenido\class.client.php gesetzt. Dort wird als itemid die Mandanten-ID ($client) gespeichert - sie ist also nicht immer 1... (nur so als Info).Dann gehe ich jetzt mal davon aus, dass bei Mandanteneinstellungen da immer eine 1 steht - wobei ich dann immer noch nicht so ganz verstanden habe, wozu es itemid gibt und ich diese ID auch noch bei getValue wissen muss (kein optionaler Wert)...
Man muss also die Mandanteneinstellungen mit
Code: Alles auswählen
$variable = $properties->getValue("clientsetting", $client, "<Typ>", "<Name>");
Gruß
HerrB
mittlerweile hab ich ein ziemliches probleme mit der klasse
wenn ich mehre eigenschaften auf einmal selektiere, bremst es mir die komplette website aus.
nur um die eigenschaften auszulesen, sagen wir mal die eigenschaften von 3 kategorien auf einmal benötigt das ganze fast 0,5 sekunden...
bei einer seite die ich gerade baue, hab ich das mit der hauptnavigation verbunden...
zum anzeigen der seite benötige ich dann beinahe 4-5 sekunden...
und das ist schlichtweg gesagt einfach nicht akzeptabel.
ohne con_properties wird die seite in 0.1 - 0.3 sekunden generiert...
vielleicht sollten wir der klasse einen cache verpassen
nur so als vorschlag...
wenn ich mehre eigenschaften auf einmal selektiere, bremst es mir die komplette website aus.
nur um die eigenschaften auszulesen, sagen wir mal die eigenschaften von 3 kategorien auf einmal benötigt das ganze fast 0,5 sekunden...
bei einer seite die ich gerade baue, hab ich das mit der hauptnavigation verbunden...
zum anzeigen der seite benötige ich dann beinahe 4-5 sekunden...
und das ist schlichtweg gesagt einfach nicht akzeptabel.
ohne con_properties wird die seite in 0.1 - 0.3 sekunden generiert...
vielleicht sollten wir der klasse einen cache verpassen
nur so als vorschlag...
*** make your own tools (wishlist :: thx)