/**
  * Загружает файл в поле
  */
 public function upload($id, $field, $content)
 {
     if (!$this->isImage($field)) {
         return false;
     }
     $pi = pathinfo($content);
     //		\helpers\Debug::prePrintR($content);
     $filename = $pi['filename'];
     $ext = $pi['extension'];
     $f3 = \Base::instance();
     $path = '../tmp/uploads/' . session_id() . '/' . $content;
     //$path = $dir . '/' . $content;
     $imageCorrector = \helpers\ImageCorrector::getInstance();
     $imageCorrector->correct($path);
     // --------------------------------------------
     $dir = $imageCorrector->makeDir([$this->tableMeta->get('table'), 'fields', ceil($id / 100), $id]);
     if ($dir) {
         $res = copy($path, $dir . $field . '.' . $ext);
     } else {
         if ($f3->get('DEBUG') > 0) {
             \helpers\Msg::error($dir);
         }
         $res = false;
     }
     return $res;
 }
Beispiel #2
0
 public function alertDelete()
 {
     $this->setAJAXLayout();
     if (!\helpers\Msg::delete()) {
         $this->fw->error(404);
     }
 }
Beispiel #3
0
 private function __construct($cfgname)
 {
     if (file_exists($this->getPath($cfgname))) {
         $this->Init($cfgname);
     } else {
         \helpers\Msg::error('config file ' . $cfgname . ' not found');
     }
 }
Beispiel #4
0
 public function resetCache()
 {
     if (\Cache::instance()->reset()) {
         \helpers\Msg::success('cache.reset.ok');
     } else {
         \helpers\Msg::success('cache.reset.error');
     }
 }
Beispiel #5
0
 static function init()
 {
     $f3 = \Base::instance();
     if (!$f3->exists('SESSION.messages') || $f3->exists('SESSION.clear_messages') && $f3->get('SESSION.clear_messages') == true) {
         \helpers\Msg::clear();
         $f3->set('SESSION.clear_messages', false);
     }
     if (!$f3->exists('MESSAGES') || $f3->exists('SESSION.clear_messages') && $f3->get('SESSION.clear_messages') == true) {
         \helpers\Msg::clear('MESSAGES');
     }
 }
Beispiel #6
0
 static function RuMonthName($n = 0)
 {
     if (\Base::instance()->get('DEBUG') == 3) {
         \helpers\Msg::warning('\\helpers\\Tools::RuMonthName deprecated. Use \\helpers\\Date::MonthName');
     }
     $n = (int) $n;
     //echo MyPrintR($n);
     if ($n > 0 && $n < 13) {
         $names = array(1 => 'января', 2 => 'февраля', 3 => 'марта', 4 => 'апреля', 5 => 'мая', 6 => 'июня', 7 => 'июля', 8 => 'августа', 9 => 'сентября', 10 => 'октября', 11 => 'ноября', 12 => 'декабря');
         return $names[$n];
     }
     return '';
 }
Beispiel #7
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 #8
0
 public function update()
 {
     $this->table = $this->fw->get('PARAMS.table');
     $this->model = \models\Comment::getInstance($this->table);
     if (is_null($this->model->getTable())) {
         $this->fw->error(404);
     } else {
         $this->setAJAXLayout();
         if ($this->model->update(array('id' => $this->fw->get('POST.id'), $this->fw->get('POST.field') => $this->fw->get('POST.value')))) {
             if ($this->fw->get('POST.field') != 'moderation') {
                 \helpers\Msg::success('saved');
             }
         } else {
             \helpers\Msg::error('error');
             $this->fw->error(406);
         }
     }
 }
Beispiel #9
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;
     }
 }
Beispiel #10
0
 private function isValid($post, $oneField = false)
 {
     $isValid = true;
     foreach ($post as $name => $val) {
         switch (trim($name)) {
             case 'title':
                 if (strlen($val) < 2) {
                     \helpers\Msg::error('profile.title.too_short');
                     $isValid = false;
                     break 2;
                 }
                 break;
             case 'af_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;
         }
     }
     return $isValid;
 }
 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;
 }
Beispiel #12
0
 public function uploaderPost()
 {
     $node = $this->model->get($this->fw->get('POST.node_id'));
     if ($node) {
         if ($this->checkAccess(\models\ACL::ACTION_UPDATE, $node->user_id)) {
             $this->fw->set('node_id', intval($this->fw->get('POST.node_id')));
             $upload_handler = new \UploadHandler(array('script_url' => '/account/' . $this->table . '/edit/' . $this->fw->get('POST.node_id') . '/uploader', 'upload_dir' => '../tmp/uploads/', 'user_dirs' => true, 'download_via_php' => 1));
         } else {
             \helpers\Msg::error('node.denied');
             $this->fw->error(401);
         }
     } else {
         $this->fw->error(404);
     }
 }
Beispiel #13
0
 function isValidNodeItem($post)
 {
     $fw = \Base::instance();
     //		\helpers\Debug::prePrintR($this->validItems);
     if (is_array($post) && count($post) > 0) {
         $isValidNodeItem = true;
         foreach ($post as $fName => $fValue) {
             switch (trim($fName)) {
                 case 'type':
                     if (!in_array($post['type'], $this->validItems)) {
                         \helpers\Msg::error('node.item.not_valid', $post['type']);
                         $isValidNodeItem = false;
                         break 2;
                     }
                     break;
             }
         }
     } else {
         $isValidNodeItem = false;
     }
     return $isValidNodeItem ? $post : false;
 }
 public function zvonok()
 {
     parent::show();
     $f3->set('html.head_title', 'Заказ обратного звонка');
     if (!$f3->devoid('POST')) {
         $f3->set('html.page_title', 'Заказ обратного звонка');
         if ($this->isValidRequest($f3->get('POST'))) {
             $f3->set('html.page_title', 'Спасибо за обращение! Ожидайте звонка.');
             $f3->scrub($_POST);
             // Отправляем запрос на почту
             $f3->copy('POST', 'msg');
             $msg = \Template::instance()->render('fsled.ru/blocks/zvonok/mail.html');
             $subj = $f3->get('i18n.mailrequest.new') . ' ' . $f3->get('SITE_URL');
             if (\helpers\Tools::mail($f3->get('email.admin'), $subj, $msg, $f3->get('email.noreply'))) {
                 \helpers\Msg::success('mailrequest.ok');
                 $f3->set('content', $msg);
                 return;
             }
         }
         \helpers\Msg::success('mailrequest.error');
     }
     $this->addForm();
 }
 function deletePlace()
 {
     if (!$this->checkAccess(\models\ACL::ACTION_DELETE)) {
         \helpers\Msg::warning('delete_no_rights');
         $this->fw->error(401);
         return;
     }
     $this->setAJAXLayout();
     if ($this->isModerator() || $this->isAdmin()) {
         if ($this->manager->deletePlace($this->fw->get('PARAMS.name'))) {
             $this->manager->saveConfig();
             \helpers\Msg::success('htmlstaticblock.place.success');
         } else {
             \helpers\Msg::error('htmlstaticblock.place.error');
         }
     } else {
         \helpers\Msg::error('htmlstaticblock.place.error');
     }
     $this->manager->saveConfig($this->fw, 'delete', 'Place');
     $this->printPlacesList();
 }
Beispiel #16
0
 /**
  * Удаляет правило
  */
 public function delete($id)
 {
     $rule = $this->load($id);
     if ($rule->dry()) {
         return false;
     }
     if ($rule->active == 0) {
         $rule->erase();
         return true;
     } else {
         \helpers\Msg::error('node.not_deletable');
     }
     return false;
 }
 protected function isValidPostData($post)
 {
     if (is_array($post) && count($post) > 0) {
         $isValid = true;
         foreach ($post as $fName => $fValue) {
             switch (trim($fName)) {
                 case 'name':
                     if (empty($fValue)) {
                         \helpers\Msg::error('htmlstaticblock.empty');
                         $isValid = false;
                         break 2;
                     } elseif (!preg_match('/^[a-z][a-z_1-9]*$/', strtolower($fValue))) {
                         \helpers\Msg::error('htmlstaticblock.not_correct');
                         $isValid = false;
                         break 2;
                     } elseif (!$this->isUniqueBlockName($fValue)) {
                         \helpers\Msg::error('htmlstaticblock.not_unique');
                         $isValid = false;
                         break 2;
                     }
                     break;
             }
         }
     } else {
         $isValid = false;
     }
     return $isValid ? $post : false;
 }
Beispiel #18
0
 function deleteField($table, $name)
 {
     if (empty($name) || empty($table)) {
         \helpers\Msg::error('empty_post');
         \helpers\Msg::error('tables.fields.not_deleted');
         return false;
     }
     if (!$this->tablesManager->isValidTableName($table)) {
         \helpers\Msg::warning('tables.wrong_name', $table);
         \helpers\Msg::error('tables.fields.not_deleted');
         return false;
     }
     $fields = $this->getAdditionalFieldsNames($table);
     if (!in_array('af_' . $name, $fields)) {
         \helpers\Msg::warning('tables.fields.not_found');
         \helpers\Msg::error('tables.fields.not_deleted');
         return false;
     }
     $q = "ALTER TABLE `{$table}` DROP `af_{$name}` ";
     if ($this->db->exec($q) !== false) {
         $this->metaWriter->updateFieldList($table);
         \helpers\Msg::success('tables.fields.deleted');
         CacheQuery::getInstance()->reset();
         return true;
     } else {
         if ($this->debugState) {
             \helpers\Msg::warning($this->db->log());
         }
         \helpers\Msg::error('db_error');
     }
     return false;
 }
Beispiel #19
0
 public function settings()
 {
     if ($this->checkAccess(\models\ACL::ACTION_UPDATE)) {
         $this->setAJAXLayout();
         if ($this->fw->exists('POST.table') && $this->fw->exists('POST.setting')) {
             if (\models\meta\Meta::getInstance()->switchSetting($this->fw->get('POST.table'), $this->fw->get('POST.setting'))) {
                 \helpers\Msg::error('saved');
                 \Cache::instance()->reset();
                 echo "1";
                 return;
             } else {
                 \helpers\Msg::error('error');
                 \helpers\Msg::error('switches_error');
             }
         }
     } else {
         // Нет прав на редактирования этого нода
         \helpers\Msg::warning('update_no_rights');
         $this->fw->error(401);
     }
     \Cache::instance()->reset();
     echo "0";
 }
Beispiel #20
0
 /**
  * Удаляет объект из БД
  * @param type $this->fw
  */
 public function delete()
 {
     $one = $this->model->get($this->fw->get('POST.id'));
     if ($this->checkAccess(\models\ACL::ACTION_DELETE)) {
         if (!$this->model->delete($one->id)) {
             $this->fw->error(403);
         } else {
             $this->listAjax();
         }
     } else {
         \helpers\Msg::error('node.denied');
         $this->fw->error(401);
     }
 }
Beispiel #21
0
 function googleCheck()
 {
     $openid = new Web\OpenID();
     if ($openid->verified()) {
         // TODO: проверить наличие связанного аккаунта в базе, если его нет - добавить в базу, авторизовать и направить на страницу аккаунта
         var_dump($openid);
         $this->fw->set('content', $openid->get('ext1.value.email') . '<a href="/logout">' . $this->fw->get('i18n.user.logout.label') . '</a>');
     } else {
         \helpers\Msg::error('user.openidautherror', null, true);
         $this->loginForm();
     }
 }
Beispiel #22
0
 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 #23
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;
 }
 function updateSingleRelation($node, $post)
 {
     $changed = false;
     $single_relations = $this->tableMeta->getParents();
     foreach ($single_relations as $k => $v) {
         $field = 'fko_' . $v['table'];
         if (isset($post[$field])) {
             if (!$this->checkForeignKey($v['table'], $post[$field])) {
                 \helpers\Msg::error('need_to_define_fko', $v['table'], 1);
                 return false;
             }
             $node->{$field} = $post[$field];
             $changed = true;
         }
     }
     return $changed;
 }
Beispiel #25
0
 /**
  * Возвращает значение поля для пользователя с заданным ID
  */
 public function value()
 {
     $one = $this->user_model->get($this->fw->get('GET.id'));
     $rel = \models\ACL::getInstance()->getRelation($this->user_id, $one['id']);
     if (\models\ACL::getInstance()->check($this->user_group_id, '_user', $rel, \models\ACL::ACTION_READ)) {
         $this->setAJAXLayout();
         $field = $this->fw->get('PARAMS.field');
         $this->fw->set('content', isset($one->{$field}) ? $one->{$field} : '');
         $this->fw->set('inc', 'components/value.html');
     } else {
         \helpers\Msg::error('read_no_rights');
         $this->fw->error(401);
     }
 }
Beispiel #26
0
 /**
  * Удаляет группу. При этом все пользователи переходят в группу по умолчанию
  */
 public function delete($id)
 {
     $group = $this->load($id);
     if ($group->dry()) {
         return false;
     }
     if ($this->moveAllUsers($id)) {
         $group = $this->load($id);
         if ($group->dry()) {
             return false;
         }
         $group->erase();
         return true;
     } else {
         \helpers\Msg::error('node.not_deletable');
     }
     return false;
 }
 /**
  * Creates relation one-to-many
  * @param type $node_table 
  * @param type $cat_table
  * @param type $comment
  * @return boolean True if it's ok
  */
 function createSingle($node, $cat, $comment = '')
 {
     $f3 = \Base::instance();
     $f3->scrub($comment);
     $field = 'fko_' . $cat;
     if (!$this->hasSingle($node, $cat)) {
         $q = "ALTER TABLE `{$node}` " . "ADD `{$field}` INT(11) NOT NULL  COMMENT '{$comment}', " . "ADD INDEX (`{$field}`), " . "ADD FOREIGN KEY (`{$field}`) REFERENCES `{$cat}`(`id`) ON DELETE RESTRICT ON UPDATE RESTRICT;";
         if ($f3->get('db')->exec($q) !== false) {
             $this->metaWriter->updateRelationList($node);
             \helpers\Msg::success('relation.created');
             \Cache::instance()->reset();
             return true;
         } else {
             \helpers\Msg::error($f3->get('db')->log());
             \helpers\Msg::error('relation.not_created');
             return false;
         }
     } else {
         \helpers\Msg::error('relation.not_created');
         \helpers\Msg::warning('relation.already_exists', [$field, $comment]);
         return false;
     }
 }
Beispiel #28
0
 private function isValid($post)
 {
     $f3 = \Base::instance();
     if (is_array($post) && count($post) > 0) {
         $isValid = true;
         foreach ($post as $fName => $fValue) {
             switch (trim($fName)) {
                 case 'moderation':
                     if (!in_array($post['moderation'], ['waiting', 'approved', 'rejected', 'spam'])) {
                         \helpers\Msg::error('comment.moderation.not_valid');
                         $isValid = false;
                         break 2;
                     }
                     break;
                 case 'text':
                     if (empty($fValue)) {
                         \helpers\Msg::error('comment.text.empty');
                         $isValid = false;
                         break 2;
                     }
                     break;
             }
         }
     } else {
         $isValid = false;
     }
     return $isValid ? $post : false;
 }
Beispiel #29
0
 /**
  * Переносит нод от одного родителя к другому
  */
 public function move()
 {
     if ($this->fw->get('use_app_routes')) {
         $alias = 'app_backend_content';
     } else {
         $alias = 'backend_content';
     }
     if ($this->checkAccess(\models\ACl::ACTION_UPDATE, $this->owner_id)) {
         if ($this->model->update($this->fw->get('POST'))) {
             if ($this->fw->exists('POST.return') && $this->fw->get('POST.return') == 'on' && $this->fw->exists('POST.return_pid', $retpid)) {
                 $this->fw->reroute($this->fw->alias($alias, 'table=' . $this->table) . '/?pid=' . $retpid);
             } else {
                 $this->fw->reroute($this->fw->alias($alias, 'table=' . $this->table) . '/?pid=' . $this->fw->get('POST.pid'));
             }
         } else {
             $node = $this->model->get($this->fw->get('POST.id'));
             if ($node) {
                 $this->fw->reroute($this->fw->alias($alias, 'table=' . $this->table) . '/?pid=' . $node['pid']);
             } else {
                 $this->fw->reroute($this->fw->alias($alias, 'table=' . $this->table));
             }
         }
     } else {
         \helpers\Msg::error('update_no_rights');
         $this->fw->error(401);
     }
 }
Beispiel #30
0
 /**
  * Проверяет корректность исходных данных для create и update
  * устанавливает дополнительные необходимые значения
  * При наличии ошибок, создаёт сообщения.
  * @param array $post
  * @return array|boolean
  */
 private function isValid($post)
 {
     if (is_array($post) && count($post) > 0) {
         $isValid = true;
         foreach ($post as $name => $val) {
             switch (trim($name)) {
                 case 'title':
                     if (strlen($post['title']) < 1) {
                         \helpers\Msg::error('no_title');
                         $isValid = false;
                         break 2;
                     }
                     break;
                 case 'deleted':
                     if ($post['deleted'] != 0) {
                         $post['deleted'] = 1;
                     }
                     break;
                 case 'slug':
                     if (empty($val)) {
                         // slug пуст
                         // Если не указан ID родителя или он не равен 0.
                         if (!isset($post['pid']) || $post['pid'] != 0) {
                             if (isset($post['id']) && $this->is_tree) {
                                 // Если редактируем элмент и это древовидный тип контента
                                 $this->mapper->load(array('id=?', $post['id']));
                                 if ($this->mapper->pid != 0) {
                                     // Если он не в корне - ошибка
                                     // Если правим не корневой элемент
                                     \helpers\Msg::error('slug.empty');
                                     $isValid = false;
                                 } elseif ($this->mapper->pid == 0) {
                                     // Если в корне, надо проверить кол-во корневых
                                     $cnt = $this->mapper->count('pid=0');
                                     if ($cnt > 1) {
                                         // Если в корне более обного объекта, slug не может быть пустым
                                         \helpers\Msg::error('slug.empty');
                                         $isValid = false;
                                     }
                                 }
                             } else {
                                 \helpers\Msg::error('slug.empty');
                                 $isValid = false;
                             }
                         }
                         break 2;
                     } elseif (!\helpers\Tools::isCorrectSlug($val)) {
                         \helpers\Msg::error('slug.incorrect');
                         $isValid = false;
                         break 2;
                     } elseif (!$this->isUniqueSlug($val, $post)) {
                         \helpers\Msg::error('slug.not_unique');
                         $isValid = false;
                         break 2;
                     }
                     break;
                 case 'priority':
                     $post['priority'] = (int) $val;
                     break;
                 case 'pid':
                     if ($this->is_tree) {
                         if (isset($post['id'])) {
                             // Если есть id, значит пытаемся сменить родителя
                             $this->mapper->load(array('id=?', $post['id']));
                             if (!$this->mapper->dry() && !$this->isUniqueSlug($this->mapper->slug, $post)) {
                                 \helpers\Msg::error('slug.not_unique_cannot_move');
                                 $isValid = false;
                                 break 2;
                             }
                         } elseif ($val != 0) {
                             // Проверяем существование объекта, который указан родительским
                             $this->mapper->load(array('id=?', $val));
                             if ($this->mapper->dry()) {
                                 \helpers\Msg::error('parent_not_found');
                                 $isValid = false;
                                 break 2;
                             }
                         }
                     }
                     break;
             }
         }
     } else {
         $isValid = false;
     }
     return $isValid ? $post : false;
 }