else if ($this->archive->isAlreadyInstalled()) {
throw new UserInputException($type, 'uniqueAlreadyInstalled');
}
+ else if ($this->archive->getPackageInfo('isApplication') && $this->archive->hasUniqueAbbreviation()) {
+ throw new UserInputException($type, 'noUniqueAbbrevation');
+ }
}
}
foreach ($attributes as $attribute) {
$data[$attribute->name] = $attribute->value;
}
-
+
$this->requirements[$element->nodeValue] = $data;
}
foreach ($attributes as $attribute) {
$data[$attribute->name] = $attribute->value;
}
-
+
$this->optionals[] = $data;
}
return ($row['count'] > 0) ? true : false;
}
+ /**
+ * Returns true if the package is an application and has an unique abbrevation.
+ *
+ * @return boolean
+ */
+ public function hasUniqueAbbreviation() {
+ if (!$this->packageInfo['isApplication']) {
+ return true;
+ }
+
+ $sql = "SELECT COUNT(*)
+ FROM wcf".WCF_N."_package
+ WHERE isApplication = ?
+ AND package LIKE ?";
+ $statement = WCF::getDB()->prepareStatement($sql);
+ $statement->execute(array(
+ 1,
+ '%'.Package::getAbbreviation($this->packageInfo['name'])
+ ));
+
+ return $statement->fetchColumn();
+ }
+
/**
* Returns information about the author of this package archive.
*
<item name="wcf.acp.option.external_link_target_blank"><![CDATA[Externe Links in neuem Fenster öffnen]]></item>
<item name="wcf.acp.option.external_link_target_blank.description"><![CDATA[Setzt das Attribut „target="_blank"“ auf externe Links und weist den Browser dadurch an, einen aufgerufenen Link in einem neuen Browser-Fenster zu öffnen.]]></item>
</category>
-
+
<category name="wcf.acp.package">
<item name="wcf.acp.package.application.installed"><![CDATA[Installierte Anwendungen]]></item>
<item name="wcf.acp.package.application.title"><![CDATA[Anwendungen]]></item>
<item name="wcf.acp.package.dependencies.required.description"><![CDATA[Pakete, die zwingend für den Betrieb dieses Paketes benötigt werden]]></item>
<item name="wcf.acp.package.dependencies.title"><![CDATA[Abhängigkeiten]]></item>
<item name="wcf.acp.package.description"><![CDATA[Beschreibung]]></item>
+ <item name="wcf.acp.package.error.noUniqueAbbrevation"><![CDATA[Es ist bereits eine Anwendung installiert, die die gleiche Abkürzung besitzt.]]></item>
<item name="wcf.acp.package.error.noValidPackage"><![CDATA[Das angegebene Archiv ist kein gültiges Paket.]]></item>
<item name="wcf.acp.package.error.sql.createTable"><![CDATA[Existierende Tabellen überschreiben]]></item>
<item name="wcf.acp.package.error.sql.createTable.description"><![CDATA[Die oben genannten Tabellen existieren bereits und werden beim Fortfahren der Installation überschrieben. Alle Daten dieser Tabellen gehen unwiderruflich verloren.]]></item>
<item name="wcf.acp.option.external_link_target_blank"><![CDATA[Open external links in a new window]]></item>
<item name="wcf.acp.option.external_link_target_blank.description"><![CDATA[Appends the attribute “target="_blank"” to external links, causing the user’s browser to open the link in a new window.]]></item>
</category>
-
+
<category name="wcf.acp.package">
<item name="wcf.acp.package.application.installed"><![CDATA[Installed Applications]]></item>
<item name="wcf.acp.package.application.title"><![CDATA[Applications]]></item>
<item name="wcf.acp.package.dependencies.required.description"><![CDATA[Packages required by this package]]></item>
<item name="wcf.acp.package.dependencies.title"><![CDATA[Dependencies]]></item>
<item name="wcf.acp.package.description"><![CDATA[Description]]></item>
+ <item name="wcf.acp.package.error.noUniqueAbbrevation"><![CDATA[There is already an application installed which has the same abbrevation.]]></item>
<item name="wcf.acp.package.error.noValidPackage"><![CDATA[The uploaded archive is invalid.]]></item>
<item name="wcf.acp.package.error.sql.createTable"><![CDATA[Overwrite Existing Tables]]></item>
<item name="wcf.acp.package.error.sql.createTable.description"><![CDATA[The tables above already exist and will be replaced during the installation. Any contained data will be lost.]]></item>