コード例 #1
0
 public static function registerUser()
 {
     $sql = sql::factory();
     $sql->setTable('community_user');
     $sql->getPosts(['username' => 'string', 'password' => 'string', 'email' => 'string']);
     $validator = new validator();
     $email = $sql->getPost('email');
     $username = $sql->getPost('username');
     $password = $sql->getPost('password');
     $validUsername = $validator->costum($username, function () {
         preg_match('/\\w{4,}/', $username, $match);
         return $match[0] == $username;
     });
     if (!$validUsername) {
         return 'Username darf nur aus Buchstaben Zahlen und Unterstrich bestehen und muss mindestens 4 Zeichen lang sein.';
     }
     if ($sql->num('SELECT id FROM ' . sql::table('community_user') . ' WHERE `username`= "' . $sql->escape($username) . '"')) {
         return 'Benutzername schon vorhanden';
     }
     if (!$validator->email($email)) {
         return 'Bitte geben Sie eine E-Mail Adresse an';
     }
     $salt = userLogin::generateSalt();
     $sql->addDatePost('registerdate', 'now');
     $sql->addPost('salt', $salt);
     extension::get('COMMUNITY_USER_REGISTER', $sql);
     $password = userLogin::hash($password, $salt);
     $sql->addPost('password', $password);
     $sql->save();
     //Mail send
     return true;
 }
コード例 #2
0
ファイル: template.php プロジェクト: pasternt/dynaoCMS
 public function installSlots($update = false)
 {
     $slots = sql::factory();
     $slots->setTable('slots');
     $modul = sql::factory();
     $modul->setTable('module');
     foreach ($this->get('slots', []) as $name => $slot) {
         $slotExists = $slots->num('SELECT id FROM ' . sql::table('slots') . ' WHERE `name` = "' . $name . '" AND `template` = "' . $this->name . '"');
         if (!$update && $slotExists) {
             continue;
         }
         $modul->addPost('name', $name);
         $modul->addPost('input', $slot['input']);
         $modul->addPost('output', $slot['output']);
         if (!$slotExists) {
             $modul->save();
             $modul_id = $modul->insertId();
         } else {
             $modul->setWhere('name="' . $name . '"');
             $modul->update();
             $modul->result('SELECT id FROM ' . sql::table('module') . ' WHERE name = "' . $name . '"');
             $modul_id = $modul->get('id');
         }
         $slots->addPost('name', $name);
         $slots->addPost('description', $slot['description']);
         $slots->addPost('template', $this->name);
         $slots->addPost('modul', $modul_id);
         if (!$slotExists) {
             $slots->save();
         } else {
             $slots->setWhere('name="' . $name . '" AND template="' . $this->name . '"');
             $slots->update();
         }
     }
 }
コード例 #3
0
ファイル: user.php プロジェクト: pasternt/dynaoCMS
 public function __construct($id)
 {
     $sql = sql::factory();
     $sql->query('SELECT * FROM ' . sql::table('user') . ' WHERE id=' . $id)->result();
     $this->entrys = $sql->result;
     $this->entrys['perms'] = explode('|', $this->get('perms'));
 }
コード例 #4
0
ファイル: module.php プロジェクト: pasternt/dynaoCMS
    public static function getByStructureId($id)
    {
        $return = [];
        $classname = __CLASS__;
        $sql = sql::factory();
        $sql->query('
		SELECT
		  a.*, m.output
		FROM
		  ' . sql::table('structure_area') . ' AS a
		  LEFT JOIN
		    ' . sql::table('module') . ' AS m
			ON
			  m.id = a.modul
		WHERE
		  a.structure_id=' . $id . '
		  AND
		  a.online = 1
		ORDER BY
		  a.sort')->result();
        while ($sql->isNext()) {
            $sql2 = clone $sql;
            $return[] = new $classname($sql2);
            $sql->next();
        }
        return $return;
    }
コード例 #5
0
ファイル: login.php プロジェクト: pasternt/dynaoCMS
 protected static function loginPost()
 {
     $email = type::post('email', 'string');
     $password = type::post('password', 'string');
     // Formular ganz abgesendet?
     if (is_null($email) || is_null($password) || $email == '' || $password == '') {
         echo message::info(lang::get('login_form_notfull'), true);
         return;
     }
     $sql = sql::factory();
     $sql->query('SELECT password, id FROM ' . sql::table('user') . ' WHERE `email` = "' . $sql->escape($email) . '"');
     // Username mit E-Mail vorhanden?
     if (!$sql->num()) {
         echo message::danger(sprintf(lang::get('login_no_user'), $email), true);
         return;
     }
     $sql->result();
     // Password nicht gleich?
     if (!self::checkPassword($password, $sql->get('password'))) {
         echo message::danger(lang::get('login_pwd_false'), true);
         return;
     }
     self::loginSession();
     self::$userID = $sql->get('id');
     $_SESSION['login'] = $sql->get('id') . '||' . self::hash($password);
 }
コード例 #6
0
ファイル: action.php プロジェクト: pasternt/dynaoCMS
 public static function delete($id)
 {
     $sql = sql::factory();
     $sql->query('SELECT `structure_id`, `sort` FROM ' . sql::table('structure_area') . ' WHERE id=' . $id)->result();
     $delete = sql::factory();
     $delete->setTable('structure_area');
     $delete->setWhere('id=' . $id);
     $delete->delete();
     self::saveSortUp($sql->get('structure_id'), $sql->get('sort'));
     return $sql->get('structure_id');
 }
コード例 #7
0
ファイル: media.php プロジェクト: pasterntt/dynao-CMS
 public static function getMediaByExtension($extension)
 {
     $returnArray = [];
     $class = __CLASS__;
     $sql = sql::factory();
     $sql->result('SELECT * FROM ' . sql::table('media') . ' WHERE filename LIKE "%.' . $extension . '"');
     while ($sql->isNext()) {
         $returnArray[] = new $class($sql);
         $sql->next();
     }
     return $returnArray;
 }
コード例 #8
0
ファイル: block.php プロジェクト: pasterntt/dynao-CMS
 public static function saveBlock()
 {
     $id = type::post('id', 'int');
     $sql = sql::factory();
     $sql->setTable('blocks');
     foreach (pageArea::$types as $class) {
         $class = new $class();
         $sql = $class->addSaveValues($sql);
     }
     $sql->setWhere('id=' . $id);
     $sql->update();
 }
コード例 #9
0
ファイル: config.php プロジェクト: pasterntt/dynao-CMS
 public static function getAll()
 {
     if (!count(self::$all)) {
         $sql = sql::factory();
         $sql->query('SELECT name FROM ' . sql::table('addons') . ' WHERE `install` = 1  AND `active` = 1')->result();
         while ($sql->isNext()) {
             self::$all[] = $sql->get('name');
             $sql->next();
         }
     }
     return self::$all;
 }
コード例 #10
0
ファイル: html.php プロジェクト: pasternt/dynaoCMS
 public static function moduleList($active = false)
 {
     if (empty(self::$modulList)) {
         $sql = sql::factory();
         $sql->result('SELECT id, name FROM ' . sql::table('module') . ' ORDER BY `sort`');
         while ($sql->isNext()) {
             $selected = $active && $active == $sql->get('id') ? 'selected="selected"' : '';
             self::$modulList[] = '<option value="' . $sql->get('id') . '" ' . $selected . '>' . $sql->get('name') . '</option>';
             $sql->next();
         }
     }
     return implode(PHP_EOL, self::$modulList);
 }
コード例 #11
0
ファイル: formMediaList.php プロジェクト: pasterntt/dynao-CMS
 protected function getOptions()
 {
     $return = [];
     if (empty($this->value)) {
         return '';
     }
     $sql = sql::factory();
     $sql->result('SELECT * FROM ' . sql::table('media') . ' WHERE id IN (' . implode(',', (array) $this->value) . ')  ORDER BY FIND_IN_SET(id, "' . implode(',', (array) $this->value) . '")');
     while ($sql->isNext()) {
         $return[] = '<option value="' . $sql->get('id') . '">' . $sql->get('filename') . '</option>';
         $sql->next();
     }
     return implode(PHP_EOL, $return);
 }
コード例 #12
0
ファイル: metainfos.php プロジェクト: pasterntt/dynao-CMS
 public static function getMetaInfos($form, $type)
 {
     $sql = sql::factory();
     $sql->query('SELECT * FROM ' . sql::table('metainfos') . ' WHERE `type` = "' . $type . '" ORDER BY `sort`')->result();
     while ($sql->isNext()) {
         $prefix = substr($type, 0, 3) . '_';
         $attributes = $sql->getRow();
         $attributes['name'] = $prefix . $attributes['name'];
         $element = self::getElement($attributes, $form->get($prefix . $sql->get('name')));
         $form->addElement($prefix . $sql->get('name'), $element);
         $sql->next();
     }
     return $form;
 }
コード例 #13
0
ファイル: seo_rewrite.php プロジェクト: pasternt/dynaoCMS
 public static function getParentsName($id)
 {
     $sql = sql::factory();
     $sql->query('SELECT name, id, seo_costum_url, parent_id FROM ' . sql::table('structure') . ' WHERE id = ' . $id)->result();
     if ($sql->get('seo_costum_url')) {
         $name = $sql->get('seo_costum_url');
         $name = str_replace('.html', '', $name);
     } else {
         $name = self::makeSEOName($sql->get('name'), false);
     }
     if ($sql->get('parent_id')) {
         $name = self::getParentsName($sql->get('parent_id')) . '/' . $name;
     }
     return $name;
 }
コード例 #14
0
ファイル: navigation.php プロジェクト: pasterntt/dynao-CMS
 public static function getCategoryById($parentId, $offlinePages = false)
 {
     $extraWhere = '';
     if (!$offlinePages) {
         $extraWhere = ' AND online = 1';
     }
     $class = __CLASS__;
     $sql = sql::factory();
     $return = [];
     $sql->query('SELECT * FROM ' . sql::table('structure') . ' WHERE parent_id = ' . $parentId . $extraWhere . ' ORDER BY sort')->result();
     while ($sql->isNext()) {
         $sql2 = clone $sql;
         $return[] = new $class($sql2);
         $sql->next();
     }
     return $return;
 }
コード例 #15
0
ファイル: seo_sitemap.php プロジェクト: pasterntt/dynao-CMS
 public function setArticles($offlines)
 {
     if ($offlines) {
         $where = '';
     } else {
         $where = ' WHERE online = 1';
     }
     $sql = sql::factory();
     $sql->query('SELECT * FROM ' . sql::table('structure') . $where . ' ORDER BY `sort`')->result();
     while ($sql->isNext()) {
         $prio = $sql->get('id') == dyn::get('start_page') ? 1 : 0.8;
         $updatedAt = new DateTime($sql->get('updatedAt'));
         $freq = self::getChangeFreq($updatedAt);
         self::$articles[] = ['loc' => dyn::get('hp_url') . seo_rewrite::rewriteId($sql->get('id')), 'prio' => $prio, 'freq' => $freq, 'lastmod' => $updatedAt->format('c')];
         $sql->next();
     }
 }
コード例 #16
0
ファイル: export.php プロジェクト: pasterntt/dynao-CMS
 public static function exportTables()
 {
     if (!isset($_POST["export"])) {
         echo message::danger(lang::get('exportSelect'), true);
     } else {
         $result = '';
         foreach ($_POST["export"] as $table => $status) {
             $DB = dyn::get('DB');
             $prefix = strlen($DB['prefix']);
             $result .= 'DROP TABLE IF EXISTS `dynaoimportexporttoll' . $table . '`;';
             $sql = sql::factory();
             $sql->query('SHOW CREATE TABLE ' . $DB['prefix'] . $table)->result();
             $creatTable = "\n\n" . str_replace("CREATE TABLE `" . $DB['prefix'], "CREATE TABLE IF NOT EXISTS `dynaoimportexporttoll", $sql->get("Create Table")) . ";\n\n";
             $result .= preg_replace("/(`.*` int.* DEFAULT) '(.*)'/", '${1} ${2}', $creatTable);
             $sql->query("SELECT * FROM " . $DB['prefix'] . $table)->result();
             while ($sql->isNext()) {
                 $result .= 'INSERT INTO `dynaoimportexporttoll' . $table . '` VALUES(';
                 $i = 1;
                 foreach ($sql->result as $row) {
                     $result .= "'" . $sql->escape(str_replace(";", "`#semikolon#`", $row)) . "'";
                     if (count($sql->result) > $i) {
                         $result .= ",";
                     }
                     $i++;
                 }
                 $result .= ");\n";
                 $sql->next();
             }
         }
         $length = strlen($result);
         header('Content-Description: File Transfer');
         header('Content-Type: application/sql');
         header('Content-Disposition: attachment; filename=backup.sql');
         header('Content-Transfer-Encoding: binary');
         header('Content-Length: ' . $length);
         header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
         header('Expires: 0');
         header('Pragma: public');
         echo $result;
         exit;
     }
 }
コード例 #17
0
ファイル: html.php プロジェクト: pasterntt/dynao-CMS
 public static function moduleList($active = false, $blocks = false)
 {
     if (!$blocks) {
         $where = ' WHERE `blocks` != 1';
         $mlist =& self::$modulList;
     } else {
         $where = '';
         $mlist =& self::$modulListAll;
     }
     if (empty($mlist)) {
         $sql = sql::factory();
         $sql->result('SELECT id, name FROM ' . sql::table('module') . $where . ' ORDER BY `sort`');
         while ($sql->isNext()) {
             $selected = $active && $active == $sql->get('id') ? 'selected="selected"' : '';
             $mlist[] = '<option value="' . $sql->get('id') . '" ' . $selected . '>' . $sql->get('name') . '</option>';
             $sql->next();
         }
     }
     return implode(PHP_EOL, $mlist);
 }
コード例 #18
0
ファイル: seo_robots.php プロジェクト: pasterntt/dynao-CMS
 public function get()
 {
     $return = '';
     // Not indexing
     if (!dyn::get('addons')['seo']['robots']) {
         return 'User-agent: *' . PHP_EOL . 'Disallow: /';
     }
     $sql = sql::factory();
     $sql->query('SELECT id FROM ' . sql::table('structure') . ' WHERE seo_robots = 0');
     while ($sql->isNext()) {
         $return .= 'Disallow: /' . seo_rewrite::rewriteId($sql->get('id')) . PHP_EOL;
         $sql->next();
     }
     if ($return != '') {
         $return = 'User-agent: *' . PHP_EOL . $out . PHP_EOL;
     }
     if ($return == '') {
         return 'User-agent: *' . PHP_EOL . 'Disallow:';
     }
     return $return;
 }
コード例 #19
0
ファイル: template.php プロジェクト: pasterntt/dynao-CMS
 public function installBlocks($update = false)
 {
     $blocks = sql::factory();
     $blocks->setTable('blocks');
     foreach ($this->get('blocks', []) as $name => $block) {
         $blockExists = $blocks->num('SELECT id FROM ' . sql::table('blocks') . ' WHERE `name` = "' . $name . '" AND `template` = "' . $this->name . '"');
         if (!$update && $blockExists) {
             continue;
         }
         $this->installModule($block['module'], $update);
         $blocks->addPost('name', $name);
         $blocks->addPost('description', $block['description']);
         $blocks->addPost('template', $this->name);
         if (!$blockExists) {
             $blocks->save();
         } else {
             $blocks->setWhere('name="' . $name . '" AND template="' . $this->name . '"');
             $blocks->update();
         }
     }
 }
コード例 #20
0
ファイル: form.php プロジェクト: pasterntt/dynao-CMS
 /**
  * Das Formular erstellen
  *
  * @param	string	$table			Die SQL Tabelle
  * @param	string	$where			Die SQL Abfrage
  * @param	string	$action			Ziel URL um die Daten zu bearbeiten
  * @param	string	$method			Die Methode (post|get)
  *
  */
 public function __construct($table, $where, $action, $method = 'post')
 {
     $this->method = $method;
     $this->action = $action;
     $this->sql = sql::factory();
     $this->sql->query('SELECT * FROM ' . sql::table($table) . ' WHERE ' . $where . ' LIMIT 1');
     $this->sql->result();
     if ($this->sql->num() == 1) {
         $this->setMode('edit');
         $this->setWhere($where);
     }
     $this->setTable($table);
     if (dyn::get('backend')) {
         $this->loadBackend();
     }
     $this->addFormAttribute('class', 'form-horizontal');
     $this->addFormAttribute('action', $this->action);
     $this->addFormAttribute('method', $this->method);
     $this->setButtons();
     $this->setSuccessMessage(lang::get('form_saved'));
     $this->addParam('action', $this->mode);
 }
コード例 #21
0
ファイル: mediaUtils.php プロジェクト: pasterntt/dynao-CMS
 public static function getTreeStructure($parentId = 0, $lvl = 0, $spacer = ' &nbsp;', $active = 0)
 {
     $select = '';
     $sql = sql::factory();
     $sql->query('SELECT id, name FROM ' . sql::table('media_cat') . ' WHERE pid = ' . $parentId . ' ORDER BY sort')->result();
     while ($sql->isNext()) {
         $name = $sql->get('name');
         if ($lvl) {
             $name = '- ' . $name;
         }
         if ($spacer != '') {
             for ($i = 1; $i <= $lvl; $i++) {
                 $name = $spacer . $name;
             }
         }
         $selected = $active == $sql->get('id') ? 'selected="selected"' : '';
         $select .= '<option value="' . $sql->get('id') . '" ' . $selected . '>' . $name . '</option>' . PHP_EOL;
         $select .= self::getTreeStructure($sql->get('id'), $lvl + 1, $spacer, $active);
         $sql->next();
     }
     return $select;
 }
コード例 #22
0
ファイル: login.php プロジェクト: pasterntt/dynaoCMS
 protected static function loginPost()
 {
     $email = type::post('email', 'string');
     $password = type::post('password', 'string');
     // Formular ganz abgesendet?
     if (is_null($email) || is_null($password) || $email == '' || $password == '') {
         echo message::info(lang::get('login_form_notfull'), true);
         return;
     }
     $sql = sql::factory();
     $sql->query('SELECT password, salt, id FROM ' . sql::table('user') . ' WHERE `email` = "' . $sql->escape($email) . '"');
     // Username mit E-Mail vorhanden?
     if (!$sql->num()) {
         echo message::danger(sprintf(lang::get('login_no_user'), htmlspecialchars($email)), true);
         return;
     }
     $sql->result();
     // Password nicht gleich?
     if (!self::checkPassword($password, $sql->get('salt'), $sql->get('password'))) {
         echo message::danger(lang::get('login_pwd_false'), true);
         return;
     }
     self::loginSession();
     self::$userID = $sql->get('id');
     $_SESSION['login'] = $sql->get('id');
     // Falls alte Methode (sha1) neuen Salt generieren und salt updaten
     // sha1 deprecated 0.2 Beta
     $salt = $sql->get('salt');
     if (empty($salt)) {
         $salt = self::generateSalt();
         $sql->setTable('user');
         $sql->setWhere('`email` = "' . $email . '"');
         $sql->addPost('salt', $salt);
         $sql->addPost('password', self::hash($password, $salt));
         $sql->update();
     }
 }
コード例 #23
0
 public static function checkLogin()
 {
     $username = type::post('username', 'string', '');
     $password = type::post('password', 'string', '');
     if ($username == '' || $password == '') {
         echo message::info(lang::get('login_form_notfull'), true);
         return;
     }
     $sql = sql::factory();
     $sql->query('SELECT password, salt, id FROM ' . sql::table('community_user') . ' WHERE `username` = "' . $sql->escape($username) . '"');
     if (!$sql->num()) {
         echo message::danger(sprintf(lang::get('login_no_user'), $email), true);
         return;
     }
     $sql->result();
     if (!userLogin::checkPassword($password, $sql->get('salt'), $sql->get('password'))) {
         echo message::danger(lang::get('login_pwd_false'), true);
         return;
     }
     $_SESSION['community-login'] = $sql->get('id');
     self::checkSession();
     // Für spätere Foren-Bridges
     extension::get('COMMUNITY_USER_LOGIN', $password);
 }
コード例 #24
0
ファイル: uninstall.php プロジェクト: pasterntt/dynao-CMS
<?php

$sql = sql::factory();
$sql->query('ALTER TABLE `' . sql::table('structure') . '`
  DROP `seo_title`,
  DROP `seo_keywords`,
  DROP `seo_description`,
  DROP `seo_costum_url`,
  DROP `seo_robots`');
コード例 #25
0
ファイル: misc.php プロジェクト: pasternt/dynaoCMS
 public static function sortStructure($sort, $pid = 0)
 {
     $sql = sql::factory();
     $sql->setTable('structure');
     $i = 1;
     foreach ($sort as $name => $value) {
         $sql->addPost('sort', $i);
         $sql->addPost('parent_id', $pid);
         $sql->setWhere('id=' . $value['id']);
         $sql->update();
         if (isset($value['children']) && count($value['children'])) {
             self::sortStructure($value['children'], $value['id']);
         }
         $i++;
     }
 }
コード例 #26
0
ファイル: sql.php プロジェクト: pasternt/dynaoCMS
 public static function sortTable($table, $sort, $where = '', $select = ['id', 'sort'])
 {
     if ($where) {
         $where = ' WHERE ' . $where;
     }
     $update = sql::factory();
     $update->setTable($table);
     $i = 1;
     $sql = sql::factory();
     $sql->query('SELECT `' . $select[0] . '`, `' . $select[1] . '` FROM ' . self::table($table) . $where . ' ORDER BY `' . $select[1] . '` ASC')->result();
     while ($sql->isNext()) {
         if ($sort == $i) {
             $i++;
         }
         $update->addPost($select[1], $i);
         $update->setWhere($select[0] . '=' . $sql->get($select[0]));
         $update->update();
         $sql->next();
         $i++;
     }
 }
コード例 #27
0
ファイル: install.php プロジェクト: pasternt/dynaoCMS
 public static function insertDemoContent()
 {
     $sql = sql::factory();
     $input = file_get_contents(self::getModulCode('1_input.txt'));
     $output = file_get_contents(self::getModulCode('1_output.txt'));
     $sql->setTable('module');
     $sql->addPost('name', 'Überschrift');
     $sql->addPost('sort', 1);
     $sql->addPost('input', $input);
     $sql->addPost('output', $output);
     $sql->save();
     $input = file_get_contents(self::getModulCode('2_input.txt'));
     $output = file_get_contents(self::getModulCode('2_output.txt'));
     $sql->addPost('name', 'Editor');
     $sql->addPost('sort', 2);
     $sql->addPost('input', $input);
     $sql->addPost('output', $output);
     $sql->save();
     $sql = sql::factory();
     $sql->setTable('structure');
     $sql->addPost('name', 'Home');
     $sql->addPost('template', 'template.php');
     $sql->addPost('sort', 1);
     $sql->addPost('online', 1);
     $sql->save();
     $sql->addPost('name', '404 Error');
     $sql->addPost('sort', 2);
     $sql->addPost('online', 0);
     $sql->save();
     dyn::add('start_page', 1, true);
     dyn::add('error_page', 2, true);
     dyn::save();
 }
コード例 #28
0
ファイル: page.php プロジェクト: pasterntt/dynao-CMS
 public static function isValid($id)
 {
     $sql = sql::factory();
     return (bool) $sql->num('SELECT id FROM ' . sql::table('structure') . ' WHERE id = ' . $id);
 }
コード例 #29
0
ファイル: misc.php プロジェクト: pasterntt/dynao-CMS
 public static function updateTime($id, $created = false)
 {
     $sql = sql::factory();
     $sql->setTable('structure');
     $sql->setWhere('id=' . $id);
     $sql->addDatePost('updatedAt');
     if ($created) {
         $sql->addDatePost('createdAt');
     }
     $sql->update();
 }
コード例 #30
0
ファイル: metainfosPage.php プロジェクト: pasterntt/dynao-CMS
 protected static function delete($tablename, $id)
 {
     $prefix = substr($tablename, 0, 3) . '_';
     $sql = sql::factory();
     $sql->setTable('metainfos')->setWhere('`id`=' . $id)->select('`name`')->result();
     $sql->query('ALTER TABLE ' . $tablename . ' DROP `' . $prefix . $sql->get('name') . '`');
     $sql->delete();
 }