/** * Загружает файл в поле */ 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; }
private function __construct($cfgname) { if (file_exists($this->getPath($cfgname))) { $this->Init($cfgname); } else { \helpers\Msg::error('config file ' . $cfgname . ' not found'); } }
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); } } }
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; }
public function zapros() { $f3->set('html.head_title', 'Отправка запроса'); // $f3->set('html.page_title', 'Отправка запроса'); $f3->set('html.inc', $f3->get('site.tpl') . '/inside.html'); if (!$f3->devoid('POST')) { if ($this->isValidRequest($f3->get('POST'))) { $f3->scrub($_POST); // Отправляем запрос на почту $f3->copy('POST', 'msg'); // \helpers\Debug::prePrintR($f3->get('msg')); $msg = \Template::instance()->render($f3->get('site.tpl') . '/mail.html'); if (\helpers\Tools::mail($f3->get('email.admin'), $f3->get('i18n.mailrequest.new') . ' ' . $f3->get('SITE_URL'), $msg, $f3->get('msg.email'))) { \helpers\Msg::success('mailrequest.ok'); $f3->set('content', $msg); $f3->set('html.hide_form', true); } else { \helpers\Msg::error('mailrequest.error'); } } } else { $this->addForm(); } }
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); } }
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; }
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(); }
/** * Удаляет правило */ 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; }
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; }
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; }
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(); } }
/** * Переносит нод от одного родителя к другому */ 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); } }
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"; }
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; }
/** * Проверяет корректность исходных данных для 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; }
/** * Возвращает значение поля для пользователя с заданным 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); } }
/** * Удаляет группу. При этом все пользователи переходят в группу по умолчанию */ 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; } }
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; }
/** * Удаляет объект из БД * @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); } }
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; }