Funktion compareConVersion für Contenido

Hier mal eine kleine Funktion die ich mir geschrieben habe um in Modulen oder Plugins versionsabhängig agieren zu können. Sehr hilfreich wenn man zum Beispiel mit jquery arbeitet, das je nach Contenido-Version unterschiedlich behandelt und eingebunden wird.


Die Funktion vergleicht eine gegebene Versionsnummer oder einen Teil davon mit der aktuellen Version die im $cfg-Array von Contenido steht.
Der optionale Parameter $checkEqual verändert den Rückgabewert bei genau gleicher Version von false (standard) auf -1 ($checkEqual = true).

/**
 * compare Contenido Version with given Versionnumber
 *
 * @param string $version
 * version number or part of it to check against
 *
 * @param bool $checkEqual
 * if true return -1 if equal else false
 *
 * @return int
 * returns true for higher, false for lesser/equal
 * and false if no version in cfg-array
 *
 * @author Ortwin Pinke <info@dceonline.de>
 *
 * @copyright DCEOnline <www.dceonline.de>
 */
function compareConVersion($version, $checkEqual = false) {
 global $cfg;
 $act_version = $cfg['version'];
 if(empty($act_version)) return false; // no version in cfg return false

 // explode version numbers
 $version = explode(".", $version);
 $act_version = explode(".", $act_version);
 // compare first digit
 if($version[0]>$act_version[0]) return true;
 if($version[0]<$act_version[0]) return false;
 // if eq first digit, compare second digit
 if($version[0]==$act_version[0]) {
 if(empty($version[1])) return ($checkEqual)?-1:false;
 if($version[1]>$act_version[1]) return true;
 if($version[1]<$act_version[1]) return false;
 // if eq second digit, compare third digit
 if($version[1]==$act_version[1]) {
 if(empty($version[2])) return ($checkEqual)?-1:false;
 if($version[2]>$act_version[2]) return true;
 if($version[2]<$act_version[2]) return false;
 if($version[2]==$act_version[2]) return ($checkEqual)?-1:false;
 }
 }
}

Beispiele für den Aufruf (4.8.8 sei die installierte Version)

  • compareConVersion(„4.8.7“); liefert true, Version ist höher
  • compareConVersion(„4.8.11“); liefert false, Version ist niedriger
  • compareConVersion(„4.8“); liefert false, Version ist gleich
  • compareConVersion(„4.8“, true); liefert -1, Version ist gleich

Und hier auch noch ein kleines Anwendungsbeispiel in einem Modul, bei dem bei einer zu kleinen Version eine Meldung im Backend ausgegeben wird.

if(compareConVersion("4.8.7")) {
 if($contenido && $edit) echo mi18n("This Modul needs a higher Version of Contenido.";
} else {
// your moduloutput here
}