- Feeds and Search modules are working again

- renamed some files
- cleaned up some functions and removed duplicated code
- many bug fixes and minor enhancements
parent c652c0ab
......@@ -8,7 +8,7 @@
namespace ACP3;
class CMS {
class Application {
/**
* Führt alle nötigen Schritte aus, um die Seite anzuzeigen
......
......@@ -16,7 +16,7 @@ namespace ACP3\Core;
* @package ACP3
* @subpackage Core
*/
class ACL
abstract class ACL
{
/**
* Array mit den jeweiligen Rollen zugewiesenen Berechtigungen
......
......@@ -16,7 +16,7 @@ namespace ACP3\Core;
* @package ACP3
* @subpackage Core
*/
class Cache
abstract class Cache
{
/**
*
......
......@@ -17,7 +17,7 @@ use \ACP3\Core\Cache;
* @package ACP3
* @subpackage Core
*/
class Config
abstract class Config
{
/**
* Gibt die Systemeinstellungen aus
......
......@@ -283,7 +283,7 @@ class Date {
* @param string $current_value
* @return array
*/
public function getTimeZones($current_value = '')
public static function getTimeZones($current_value = '')
{
$timeZones = array(
'Africa' => \DateTimeZone::listIdentifiers(\DateTimeZone::AFRICA),
......
......@@ -10,7 +10,7 @@
namespace ACP3\Core;
class Functions {
abstract class Functions {
/**
* Ermittelt die Dateigröße gemäß IEC 60027-2
......
......@@ -17,7 +17,7 @@ namespace ACP3\Core;
* @package ACP3
* @subpackage Core
*/
class Modules {
abstract class Modules {
/**
* Überpüft, ob ein Modul überhaupt existiert,
......
......@@ -16,7 +16,7 @@ namespace ACP3\Core;
* @package ACP3
* @subpackage Core
*/
class SEO
abstract class SEO
{
/**
* Caching Variable für die URI-Aliases
......
......@@ -32,6 +32,8 @@ class URI
*/
public $query = '';
const PATTERN = '=^acp/=';
/**
* Zerlegt u.a. die übergebenen Parameter in der URI in ihre Bestandteile
*/
......@@ -90,7 +92,7 @@ class URI
$this->query = substr(str_replace(PHP_SELF, '', htmlentities($_SERVER['PHP_SELF'], ENT_QUOTES)), 1);
$this->query.= !preg_match('/\/$/', $this->query) ? '/' : '';
if (preg_match('/^(acp\/)/', $this->query)) {
if (preg_match(self::PATTERN, $this->query)) {
// Definieren, dass man sich im Administrationsbereich befindet
define('IN_ADM', true);
// "acp/" entfernen
......@@ -257,16 +259,16 @@ class URI
{
$path = $path . (!preg_match('/\/$/', $path) ? '/' : '');
if (!preg_match('/^acp\//', $path)) {
if (CONFIG_SEO_ALIASES === true && !preg_match(self::PATTERN, $path)) {
if (count(preg_split('=/=', $path, -1, PREG_SPLIT_NO_EMPTY)) === 1)
$path.= 'list/';
// Überprüfen, ob Alias vorhanden ist und diesen als URI verwenden
if ((bool) (bool) CONFIG_SEO_ALIASES === true && $alias === 1) {
if ($alias === 1) {
$alias = SEO::getUriAlias($path);
$path = $alias . (!preg_match('/\/$/', $alias) ? '/' : '');
}
}
$prefix = (bool) CONFIG_SEO_MOD_REWRITE === false || preg_match('/^acp\//', $path) || defined('IN_UPDATER') === true ? PHP_SELF . '/' : ROOT_DIR;
$prefix = (bool) CONFIG_SEO_MOD_REWRITE === false || preg_match(self::PATTERN, $path) ? PHP_SELF . '/' : ROOT_DIR;
return $prefix . $path;
}
}
\ No newline at end of file
<?php
/**
* Validate
*
......@@ -16,8 +17,8 @@ namespace ACP3\Core;
* @package ACP3
* @subpackage Core
*/
class Validate
{
abstract class Validate {
/**
* Überprüft, ob die übergebenen Privilegien existieren und
* plausible Werte enthalten
......@@ -26,8 +27,7 @@ class Validate
* Array mit den IDs der zu überprüfenden Privilegien mit ihren Berechtigungen
* @return boolean
*/
public static function aclPrivilegesExist(array $privileges)
{
public static function aclPrivilegesExist(array $privileges) {
$all_privs = ACP3_ACL::getAllPrivileges();
$c_all_privs = count($all_privs);
for ($i = 0; $i < $c_all_privs; ++$i) {
......@@ -41,6 +41,7 @@ class Validate
}
return $valid;
}
/**
* Überprüft, ob die selektierten Rollen existieren
*
......@@ -48,8 +49,7 @@ class Validate
* Die zu überprüfenden Rollen
* @return boolean
*/
public static function aclRolesExist(array $roles)
{
public static function aclRolesExist(array $roles) {
$all_roles = ACP3_ACL::getAllRoles();
$good = array();
foreach ($all_roles as $row) {
......@@ -62,6 +62,7 @@ class Validate
}
return true;
}
/**
* Überprüft einen Geburtstag auf seine Gültigkeit
*
......@@ -69,8 +70,7 @@ class Validate
* Das zu überprüfende Datum
* @return boolean
*/
public static function birthday($var)
{
public static function birthday($var) {
$regex = '/^(\d{4})-(\d{2})-(\d{2})$/';
$matches = array();
if (preg_match($regex, $var, $matches)) {
......@@ -80,16 +80,17 @@ class Validate
}
return false;
}
/**
* Überpürft, ob das eingegebene Captcha mit dem generierten übereinstimmt
*
* @param string $input
* @return boolean
*/
public static function captcha($input)
{
public static function captcha($input) {
return preg_match('/^[a-zA-Z0-9]+$/', $input) && isset($_SESSION['captcha']) && strtolower($input) === strtolower($_SESSION['captcha']) ? true : false;
}
/**
* Überprüft, ob alle Daten ein sinnvolles Datum ergeben
*
......@@ -99,8 +100,7 @@ class Validate
* Enddatum
* @return boolean
*/
public static function date($start, $end = null)
{
public static function date($start, $end = null) {
$matches_start = $matches_end = array();
$regex = '/^(\d{4})-(\d{2})-(\d{2})( ([01][0-9]|2[0-3])(:([0-5][0-9])){1,2}){0,1}$/';
if (preg_match($regex, $start, $matches_start)) {
......@@ -120,10 +120,11 @@ class Validate
}
return false;
}
public static function deleteEntries($entries)
{
public static function deleteEntries($entries) {
return (bool) preg_match('/^((\d+)\|)*(\d+)$/', $entries);
}
/**
* Überprüft, ob eine Standardkonforme E-Mail-Adresse übergeben wurde
*
......@@ -133,8 +134,7 @@ class Validate
* Zu überprüfende E-Mail-Adresse
* @return boolean
*/
public static function email($var)
{
public static function email($var) {
if (function_exists('filter_var')) {
return (bool) filter_var($var, FILTER_VALIDATE_EMAIL);
} else {
......@@ -142,14 +142,14 @@ class Validate
return (bool) preg_match($pattern, $var);
}
}
/**
* Überprüft, ob die zusätzlich zu ladenden Stylesheets überhaupt existieren
*
* @param string $var
* @return boolean
*/
public static function extraCSS($var)
{
public static function extraCSS($var) {
if ((bool) preg_match('=/=', $var) === false) {
$var_ary = explode(',', $var);
foreach ($var_ary as $stylesheet) {
......@@ -162,14 +162,14 @@ class Validate
}
return false;
}
/**
* Überprüft, ob die zusätzlich zu ladenden JavaScript Dateien überhaupt existieren
*
* @param string $var
* @return boolean
*/
public static function extraJS($var)
{
public static function extraJS($var) {
if ((bool) preg_match('=/=', $var) === false) {
$var_ary = explode(',', $var);
foreach ($var_ary as $js) {
......@@ -182,19 +182,20 @@ class Validate
}
return false;
}
/**
* Validiert das Formtoken auf seine Gültigkeit
*
* @return boolean
*/
public static function formToken()
{
public static function formToken() {
if (isset($_POST[\ACP3\Core\Session::XSRF_TOKEN_NAME]) && isset($_SESSION[\ACP3\Core\Session::XSRF_TOKEN_NAME][Registry::get('URI')->query]) &&
$_POST[\ACP3\Core\Session::XSRF_TOKEN_NAME] === $_SESSION[\ACP3\Core\Session::XSRF_TOKEN_NAME][Registry::get('URI')->query]) {
return true;
}
return false;
}
/**
* Bestimmung des Geschlechts
* 1 = Keine Angabe
......@@ -205,50 +206,50 @@ class Validate
* Die zu überprüfende Variable
* @return boolean
*/
public static function gender($var)
{
public static function gender($var) {
return $var == 1 || $var == 2 || $var == 3 ? true : false;
}
/**
* Überprüft, ob eine gültige ICQ-Nummer eingegeben wurde
*
* @param integer $var
* @return boolean
*/
public static function icq($var)
{
public static function icq($var) {
return (bool) preg_match('/^(\d{6,9})$/', $var);
}
/**
* Überprüft, ob die übergebene URI dem Format des ACP3 entspricht
*
* @param mixed $var
* @return boolean
*/
public static function isInternalURI($var)
{
public static function isInternalURI($var) {
return (bool) preg_match('/^([a-z\d_\-]+\/){2,}$/', $var);
}
/**
* Überprüft, ob ein gültiger MD5-Hash übergeben wurde
*
* @param string $string
* @return boolean
*/
public static function isMD5($string)
{
public static function isMD5($string) {
return is_string($string) === true && preg_match('/^[a-f\d]+$/', $string) && strlen($string) === 32 ? true : false;
}
/**
* Überprüft eine Variable, ob diese nur aus Ziffern besteht
*
* @param mixed $var
* @return boolean
*/
public static function isNumber($var)
{
public static function isNumber($var) {
return (bool) preg_match('/^(\d+)$/', $var);
}
/**
* Überprüfen, ob es ein unterstütztes Bildformat ist
*
......@@ -256,8 +257,7 @@ class Validate
* Zu überprüfendes Bild
* @return boolean
*/
public static function isPicture($file, $width = '', $height = '', $filesize = '')
{
public static function isPicture($file, $width = '', $height = '', $filesize = '') {
$info = getimagesize($file);
$isPicture = $info[2] >= 1 && $info[2] <= 3 ? true : false;
......@@ -275,6 +275,7 @@ class Validate
}
return false;
}
/**
* Überprüft, ob der eingegebene URI-Alias sicher ist, d.h. es dürfen nur
* die Kleinbuchstaben von a-z, Zahlen, der Bindestrich und das Slash eingegeben werden
......@@ -282,10 +283,10 @@ class Validate
* @param string $var
* @return boolean
*/
public static function isUriSafe($var)
{
public static function isUriSafe($var) {
return (bool) preg_match('/^([a-z]{1}[a-z\d\-]*(\/[a-z\d\-]+)*)$/', $var);
}
/**
* Gibt in Abhängigkeit des Parameters $mimetype entweder
* den gefundenen MIMETYPE aus oder ob der gefundene MIMETYPE
......@@ -313,6 +314,7 @@ class Validate
}
}
}
/**
* Überprüft, ob eine gültige Zeitzone gewählt wurde
*
......@@ -320,8 +322,7 @@ class Validate
* Die zu überprüfende Variable
* @return boolean
*/
public static function timeZone($var)
{
public static function timeZone($var) {
$bool = true;
try {
new \DateTimeZone($var);
......@@ -330,6 +331,7 @@ class Validate
}
return $bool;
}
/**
* Überprüft, ob ein URI-Alias bereits existiert
*
......@@ -337,13 +339,12 @@ class Validate
* @param string $path
* @return boolean
*/
public static function uriAliasExists($alias, $path = '')
{
public static function uriAliasExists($alias, $path = '') {
if (self::isUriSafe($alias)) {
if (is_dir(MODULES_DIR . $alias) === true) {
return true;
} else {
$path.= !preg_match('=/$=', $path) ? '/' : '';
$path.=!preg_match('=/$=', $path) ? '/' : '';
if ($path !== '/' && self::isInternalURI($path) === true) {
return Registry::get('Db')->fetchColumn('SELECT COUNT(*) FROM ' . DB_PRE . 'seo WHERE alias = ? AND uri != ?', array($alias, $path)) > 0 ? true : false;
} elseif (Registry::get('Db')->fetchColumn('SELECT COUNT(*) FROM ' . DB_PRE . 'seo WHERE alias = ?', array($alias)) > 0) {
......@@ -353,4 +354,5 @@ class Validate
}
return false;
}
}
\ No newline at end of file
......@@ -36,7 +36,7 @@ class FeedGenerator extends AbstractRenderer {
$this->renderer->setTitle($this->config['feed_title']);
$this->renderer->setLink($link);
if ($this->config['feed_type'] !== 'ATOM') {
$this->renderer->setDescription(Registry::getClass('Lang')->t($this->config['module'], $this->config['module']));
$this->renderer->setDescription(\ACP3\Core\Registry::get('Lang')->t($this->config['module'], $this->config['module']));
} else {
$this->renderer->setChannelElement('updated', date(DATE_ATOM , time()));
$this->renderer->setChannelElement('author', array('name' => $this->config['feed_title']));
......
<?php
/**
* XML Parser
*
......@@ -16,8 +17,15 @@ namespace ACP3\Core;
* @package ACP3
* @subpackage Core
*/
class XML
{
abstract class XML {
/**
* Cache für bereits ausgelesene XML-Dateien
*
* @var array
*/
private static $info = array();
/**
* Parst die angeforderte XML Datei
*
......@@ -25,12 +33,9 @@ class XML
* @param string $xpath
* @return mixed
*/
public static function parseXmlFile($path, $xpath)
{
static $info = array();
if (!empty($info[$path][$xpath])) {
return $info[$path][$xpath];
public static function parseXmlFile($path, $xpath) {
if (!empty(self::$info[$path][$xpath])) {
return self::$info[$path][$xpath];
} elseif (is_file($path) === true) {
$xml = simplexml_load_file($path);
$data = $xml->xpath($xpath);
......@@ -41,28 +46,29 @@ class XML
if ($value->attributes()) {
foreach ($value->attributes() as $attr_key => $attr_val) {
if ($key === 'version' && $attr_key === 'core' && (string) $attr_val === 'true') {
$info[$path][$xpath]['version'] = CONFIG_VERSION;
self::$info[$path][$xpath]['version'] = CONFIG_VERSION;
} else {
$info[$path][$xpath][(string) $key][(string) $attr_key] = (string) $attr_val;
self::$info[$path][$xpath][(string) $key][(string) $attr_key] = (string) $attr_val;
}
}
} elseif (isset($info[$path][$xpath][(string) $key]) && is_array($info[$path][$xpath][(string) $key])) {
$info[$path][$xpath][(string) $key][] = (string) $value;
} elseif (isset($info[$path][$xpath][(string) $key])) {
$tmp = $info[$path][$xpath][(string) $key];
$info[$path][$xpath][(string) $key] = array();
$info[$path][$xpath][(string) $key][] = $tmp;
$info[$path][$xpath][(string) $key][] = (string) $value;
} elseif (isset(self::$info[$path][$xpath][(string) $key]) && is_array(self::$info[$path][$xpath][(string) $key])) {
self::$info[$path][$xpath][(string) $key][] = (string) $value;
} elseif (isset(self::$info[$path][$xpath][(string) $key])) {
$tmp = self::$info[$path][$xpath][(string) $key];
self::$info[$path][$xpath][(string) $key] = array();
self::$info[$path][$xpath][(string) $key][] = $tmp;
self::$info[$path][$xpath][(string) $key][] = (string) $value;
} else {
$info[$path][$xpath][(string) $key] = (string) $value;
self::$info[$path][$xpath][(string) $key] = (string) $value;
}
}
}
return $info[$path][$xpath];
return self::$info[$path][$xpath];
}
}
return array();
}
/**
* Schreibt Änderungen in die angegebene XML Datei
*
......@@ -71,8 +77,7 @@ class XML
* @param array $data
* @return boolean
*/
public static function writeToXml($path, $xpath, $data)
{
public static function writeToXml($path, $xpath, $data) {
if (is_file($path) === true && is_writable($path) === true && is_array($data) === true) {
$xml = new DOMDocument();
$xml->load($path);
......@@ -104,4 +109,5 @@ class XML
}
return false;
}
}
\ No newline at end of file
......@@ -8,7 +8,7 @@
namespace ACP3\Installer;
class Installer {
class Application {
/**
* Führt alle nötigen Schritte aus, um die Seite anzuzeigen
......
......@@ -9,7 +9,7 @@ use ACP3\Core;
* @author Tino Goratsch
* @package ACP3 Installer
*/
class Functions {
abstract class Functions {
/**
* Gibt eine Box mit den aufgetretenen Fehlern aus
......@@ -53,50 +53,6 @@ class Functions {
return $result;
}
/**
* Generiert ein gesalzenes Passwort
*
* @param string $salt
* @param string $plaintext
* @param string $algorithm
* @return string
*/
public static function generateSaltedPassword($salt, $plaintext, $algorithm = 'sha1') {
return hash($algorithm, $salt . hash($algorithm, $plaintext));
}
/**
* Liefert ein Array mit allen Zeitzonen dieser Welt aus
*
* @param string $current_value
* @return array
*/
public static function getTimeZones($current_value = '') {
$timeZones = array(
'Africa' => \DateTimeZone::listIdentifiers(\DateTimeZone::AFRICA),
'America' => \DateTimeZone::listIdentifiers(\DateTimeZone::AMERICA),
'Antarctica' => \DateTimeZone::listIdentifiers(\DateTimeZone::ANTARCTICA),
'Arctic' => \DateTimeZone::listIdentifiers(\DateTimeZone::ARCTIC),
'Asia' => \DateTimeZone::listIdentifiers(\DateTimeZone::ASIA),
'Atlantic' => \DateTimeZone::listIdentifiers(\DateTimeZone::ATLANTIC),
'Australia' => \DateTimeZone::listIdentifiers(\DateTimeZone::AUSTRALIA),
'Europe' => \DateTimeZone::listIdentifiers(\DateTimeZone::EUROPE),
'Indian' => \DateTimeZone::listIdentifiers(\DateTimeZone::INDIAN),
'Pacitic' => \DateTimeZone::listIdentifiers(\DateTimeZone::PACIFIC),
'UTC' => \DateTimeZone::listIdentifiers(\DateTimeZone::UTC),
);
foreach ($timeZones as $key => $values) {
$i = 0;
foreach ($values as $row) {
unset($timeZones[$key][$i]);
$timeZones[$key][$row]['selected'] = Core\Functions::selectEntry('date_time_zone', $row, $current_value);
++$i;
}
}
return $timeZones;
}
/**
* Führt die Installationsanweisungen des jeweiligen Moduls durch
*
......@@ -110,7 +66,7 @@ class Functions {
$path = MODULES_DIR . $module . '/' . $module . 'Installer.php';
if (is_file($path) === true) {
$className = Core\ModuleInstaller::buildClassName($module);
$install = new $className(\ACP3\Installer\Installer::$injector);
$install = new $className();
if ($install instanceof \ACP3\Core\ModuleInstaller) {
$bool = $install->install();
}
......@@ -145,30 +101,11 @@ class Functions {
return $languages;
}
/**
* Liefert ein Array zur Ausgabe als Dropdown-Menü
* für die Anzahl der anzuzeigenden Datensätze je Seite
*
* @param integer $current_value
* @param integer $steps
* @param integer $max_value
* @return array
*/
public static function recordsPerPage($current_value, $steps = 5, $max_value = 50) {
// Einträge pro Seite
$records = array();
for ($i = 0, $j = $steps; $j <= $max_value; $i++, $j+= $steps) {
$records[$i]['value'] = $j;
$records[$i]['selected'] = Core\Functions::selectEntry('entries', $j, $current_value);
}
return $records;
}
/**
* Setzt die Ressourcen-Tabelle auf die Standardwerte zurück
*/
public static function resetResources($mode = 1) {
\ACP3\Installer\Installer::$injector['Db']->executeUpdate('TRUNCATE TABLE ' . DB_PRE . 'acl_resources');
\ACP3\Core\Registry::get('Db')->executeUpdate('TRUNCATE TABLE ' . DB_PRE . 'acl_resources');
// Moduldaten in die ACL schreiben
$modules = scandir(MODULES_DIR);
......@@ -176,33 +113,12 @@ class Functions {
$path = MODULES_DIR . $module . '/' . $module . 'Installer.php';
if ($module !== '.' && $module !== '..' && is_file($path) === true) {
$className = \ACP3\Core\ModuleInstaller::buildClassName($module);
$install = new $className(\ACP3\Installer\Installer::$injector);
$install = new $className();
$install->addResources($mode);
}
}
}
/**
* Generiert einen Zufallsstring beliebiger Länge
*
* @param integer $str_length
* Länge des zufälligen Strings
* @return string
*/
public static function salt($str_length) {
$salt = '';
$chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
$c_chars = strlen($chars) - 1;
while (strlen($salt) < $str_length) {
$char = $chars[mt_rand(0, $c_chars)];
// Zeichen nur hinzufügen, wenn sich dieses nicht bereits im Salz befindet
if (strpos($salt, $char) === false) {
$salt.= $char;
}
}
return $salt;
}
/**
* Führt die Updateanweisungen eines Moduls aus
*
......@@ -257,24 +173,4 @@ class Functions {
}
return false;
}
/**
* Erstellt/Verändert die Konfigurationsdateien für die Module
*
* @param string $module
* @param array $data
* @return boolean
*/
public static function writeSettingsToDb($module, $data)
{
$bool = false;
$mod_id = Core\Registry::get('Db')->fetchColumn('SELECT id FROM ' . DB_PRE . 'modules WHERE name = ?', array($module));
if (!empty($mod_id)) {
foreach ($data as $key => $value) {
$bool = Core\Registry::get('Db')->executeUpdate('UPDATE ' . DB_PRE . 'settings SET value = ? WHERE module_id = ? AND name = ?', array($value, (int) $mod_id, $key));
}
}
return $bool !== false ? true : false;
}
}
\ No newline at end of file
......@@ -107,7 +107,7 @@ class Install extends \ACP3\Installer\Core\InstallerModuleController {
'driver' => 'pdo_mysql',
'charset' => 'utf8'
);
\ACP3\Installer\Installer::$injector['Db'] = \Doctrine\DBAL\DriverManager::getConnection($connectionParams, $config);
\ACP3\Core\Registry::set('Db', \Doctrine\DBAL\DriverManager::getConnection($connectionParams, $config));
define('DB_PRE', $_POST['db_pre']);
$bool = false;
......@@ -137,12 +137,12 @@ class Install extends \ACP3\Installer\Core\InstallerModuleController {
// Admin-User, Menüpunkte, News, etc. in die DB schreiben
if ($bool === true) {
$salt = Core\Functions::salt(12);
$salt = \ACP3\Core\Functions::salt(12);
$current_date = gmdate('Y-m-d H:i:s');
$news_mod_id = \ACP3\Core\Registry::get('Db')->fetchColumn('SELECT id FROM ' . DB_PRE . 'modules WHERE name = ?', array('news'));
$queries = array(
"INSERT INTO `{pre}users` VALUES ('', 1, " . \ACP3\Core\Registry::get('Db')->quote($_POST["user_name"]) . ", '" . Core\Functions::generateSaltedPassword($salt, $_POST["user_pwd"]) . ":" . $salt . "', 0, '', '1', '', 0, '" . $_POST["mail"] . "', 0, '', '', '', '', '', '', '', '', 0, 0, " . \ACP3\Core\Registry::get('Db')->quote($_POST["date_format_long"]) . ", " . \ACP3\Core\Registry::get('Db')->quote($_POST["date_format_short"]) . ", '" . $_POST["date_time_zone"] . "', '" . LANG . "', '20', '');",
"INSERT INTO `{pre}users` VALUES ('', 1, " . \ACP3\Core\Registry::get('Db')->quote($_POST["user_name"]) . ", '" . \ACP3\Core\Functions::generateSaltedPassword($salt, $_POST["user_pwd"]) . ":" . $salt . "', 0, '', '1', '', 0, '" . $_POST["mail"] . "', 0, '', '', '', '', '', '', '', '', 0, 0, " . \ACP3\Core\Registry::get('Db')->quote($_POST["date_format_long"]) . ", " . \ACP3\Core\Registry::get('Db')->quote($_POST["date_format_short"]) . ", '" . $_POST["date_time_zone"] . "', '" . LANG . "', '20', '');",
'INSERT INTO `{pre}categories` VALUES (\'\', \'' . \ACP3\Core\Registry::get('Lang')->t('category_name') . '\', \'\', \'' . \ACP3\Core\Registry::get('Lang')->t('category_description') . '\', \'' . $news_mod_id . '\');',
'INSERT INTO `{pre}news` VALUES (\'\', \'' . $current_date . '\', \'' . $current_date . '\', \'' . \ACP3\Core\Registry::get('Lang')->t('news_headline') . '\', \'' . \ACP3\Core\Registry::get('Lang')->t('news_text') . '\', \'1\', \'1\', \'1\', \'\', \'\', \'\', \'\');',
'INSERT INTO `{pre}menu_items` VALUES (\'\', 1, 1, 1, 0, 1, 4, 1, \'' . \ACP3\Core\Registry::get('Lang')->t('pages_news') . '\', \'news\', 1);',
......@@ -192,10 +192,10 @@ class Install extends \ACP3\Installer\Core\InstallerModuleController {
'version' => CONFIG_VERSION,
'wysiwyg' => 'CKEditor'