Beispiel #1
0
 /**
  * Находит и устанавливает все страницы от корневой до текущей по маршруту
  * @return boolean
  */
 protected function setStruct()
 {
     if (empty($this->struct_path)) {
         $this->setStructPath();
     }
     $this->struct_pages = $this->struct_model->getTreeNodes($this->struct_path);
     if (empty($this->struct_pages)) {
         if ($this->fw->get('DEBUG') > 0) {
             \helpers\Msg::info('no_htmlpage', $this->struct_path);
         }
         return false;
     }
     $this->struct_page = $this->struct_pages[count($this->struct_pages) - 1];
     return true;
 }
Beispiel #2
0
 /**
  * Создаёт таблицу для хранения элементов типа контента
  * @param type $table
  * @return boolean
  */
 public function createItemsTable($table)
 {
     if (Meta::getInstance()->exists($table)) {
         $items_table = $table . '__items';
         if (!$this->tableExists($items_table)) {
             $q = $this->getCreateItemTableQuery($table);
             if ($this->db->exec($q) !== false) {
                 //$this->metaWriter->setHasItems($table,true);
                 \helpers\Msg::success('tables.created');
                 return TRUE;
             }
         } else {
             return TRUE;
             //     \helpers\Msg::info('tables.already_exists', array($items_table, $title));
         }
     } else {
         \helpers\Msg::info('tables.content_doesnt_exist', array($table, $title));
         return false;
     }
 }
 public function create($table)
 {
     $tableMeta = $this->metaWriter->get($table);
     if (!$tableMeta) {
         \helpers\Msg::info('tables.wrong_name', $table);
         \helpers\Msg::error('tables.not_created', 'comments_' . $table);
         return false;
     }
     if ($tableMeta->isCommentable()) {
         \helpers\Msg::info('tables.already_exists', 'comments_' . $table);
         \helpers\Msg::error('tables.not_created', 'comments_' . $table);
         return false;
     }
     $q = $this->getCreateTableQuery($table);
     if ($this->db->exec($q) !== false) {
         $this->metaWriter->updateSettings($table);
         \helpers\Msg::success('tables.created');
         return true;
     }
     $this->db->log();
     \helpers\Msg::error('tables.not_created', 'comments_' . $table);
     return false;
 }
 /**
  * Форма для входа на сайт
  * если пользователь авторизован, перенаправляется в аккаунт
  * и выводится сообщение, что необходимо выйти, пережде чем авторизоваться
  * под другим логином
  */
 public function loginForm()
 {
     $this->clear_messages_after = true;
     if (!$this->isAuthorized()) {
         $this->fw->set('COOKIE.sent', true);
         if (\helpers\Msg::hasErrors()) {
             $this->setCaptcha();
         } else {
             $this->fw->clear('SESSION.captcha');
         }
         $this->fw->set('html.inc', 'user/login.html');
     } else {
         \helpers\Msg::info('user.need_to_logout');
         $this->fw->reroute('/' . $this->groups[0]['uri']);
     }
 }
Beispiel #5
0
 /**
  * Массовое добавление нодов
  * @param int $user_id
  * @param array $post
  */
 public function createBulk($user_id)
 {
     $post = \Base::instance()->get('POST');
     if (!empty($post['bulkadd'])) {
         \helpers\Msg::info('bulk_add');
         $lines = explode("\n", $post['bulkadd']);
         //			\helpers\Debug::prePrintR($lines);			return;
         $id = null;
         foreach ($lines as $v) {
             $v = trim($v);
             if (!empty($v)) {
                 $data = ['title' => $v];
                 if (isset($post['pid'])) {
                     $data['pid'] = $post['pid'];
                 }
                 $id = $this->create($user_id, $data);
                 if (is_null($id)) {
                     \helpers\Msg::error('not_added');
                 }
             }
         }
         return $id;
     } else {
         return false;
     }
 }
Beispiel #6
0
 private function isValid($post, $oneField = false)
 {
     $f3 = \Base::instance();
     $audit = \Audit::instance();
     if (isset($post['email']) && isset($post['password']) || $oneField) {
         $isValid = true;
         foreach ($post as $name => $val) {
             switch (trim($name)) {
                 case 'email':
                     if (empty($val)) {
                         \helpers\Msg::error('user.email.required');
                         $isValid = false;
                         break 2;
                     }
                     if (!$audit->email($val, false)) {
                         \helpers\Msg::error('user.email.incorrect');
                         $isValid = false;
                         break 2;
                     }
                     if ($this->exists($val)) {
                         \helpers\Msg::error('user.email.registered_before');
                         \helpers\Msg::info('user.need_to_login');
                         $isValid = false;
                         break 2;
                     }
                     break;
                 case 'password':
                     if (strlen($val) < 6) {
                         \helpers\Msg::error('user.password.too_short');
                         $isValid = false;
                         break 2;
                     }
                     break;
                     //					case 'skype' :
                     //						if (!empty($val) && !preg_match('/^[a-z][a-z0-9\.,\-_]{5,31}$/i', $val)) {
                     //							\helpers\Msg::error('user.skype.incorrect');
                     //							$isValid = false;
                     //							break 2;
                     //						}
                     //						break;
                 //					case 'skype' :
                 //						if (!empty($val) && !preg_match('/^[a-z][a-z0-9\.,\-_]{5,31}$/i', $val)) {
                 //							\helpers\Msg::error('user.skype.incorrect');
                 //							$isValid = false;
                 //							break 2;
                 //						}
                 //						break;
                 case 'ref':
                     $val = (int) $val;
                     if ($val == 0) {
                         break 2;
                     } else {
                         //								\helpers\Debug::prePrintR($val);
                         $user = $this->getOne($val);
                         //								\helpers\Debug::prePrintR($user);
                         if ($user->id != $val) {
                             \helpers\Msg::error('user.ref.incorrect');
                             $isValid = false;
                             break 2;
                         }
                     }
                     break;
             }
         }
     } else {
         if (!isset($post['email'])) {
             \helpers\Msg::error('user.email.required');
         }
         if (!isset($post['password'])) {
             \helpers\Msg::error('user.password.required');
         }
         $isValid = false;
     }
     return $isValid;
 }
 public function deleteTable($table)
 {
     if ($this->isValidTableName($table)) {
         if ($this->tableExists($table)) {
             $q = 'DROP TABLE ' . $table;
             if ($this->db->exec($q) !== false) {
                 $this->metaWriter->remove($table);
                 \helpers\Msg::success('tables.removed');
                 return TRUE;
             }
         } else {
             \helpers\Msg::info('tables.does_not_exists', array($table));
         }
     } else {
         \helpers\Msg::info('tables.wrong_name', $table);
     }
     $this->db->log();
     \helpers\Msg::error('tables.not_removed', array($table));
     return FALSE;
 }
Beispiel #8
0
 /**
  * Находит и устанавливает все ноды по части маршрута
  * @return boolean
  */
 private function setNodesByPath()
 {
     $model = $this->getNodeModel();
     $this->struct_path = $this->fw->get('frontend_base.' . $this->table);
     $this->setStruct();
     $path = str_replace(array($this->struct_path . '/', $this->struct_path), '', $this->fw->get('PATH'));
     $this->tree_nodes = $model->getTreeNodes($path);
     if (empty($this->tree_nodes)) {
         if ($this->DEBUG > 0) {
             \helpers\Msg::info('no_htmlpage', $this->fw->get('PATH'));
         }
         return false;
     }
     $this->tree_node = $this->tree_nodes[count($this->tree_nodes) - 1];
     if ($this->tree_node['published']) {
         // Если опубликованв
         return true;
     } else {
         return false;
     }
 }