Exemplo n.º 1
0
 function showIndex()
 {
     $request = fvRequest::getInstance();
     $sort['field'] = $request->getRequestParameter('field');
     $sort['dir'] = $request->getRequestParameter('direct');
     $search = $request->getRequestParameter('search');
     $query = NULL;
     if ($search['_clear'] == 1) {
         $search = array();
         $search['_clear'] = 1;
     }
     if ($search['email']) {
         $query = 'email like "%' . str_replace('"', "'", $search['email']) . '%"';
     }
     if (!$sort['field']) {
         $sort['field'] = "ctime";
         $sort['dir'] = "asc";
     }
     $pager = new fvPager(FeedbackManager::getInstance());
     $this->__assign('List', $pager->paginate($query, $sort['field'] . " " . $sort['dir']));
     $this->__assign("module", $this->moduleName);
     $this->__assign("sort", $sort);
     $this->__assign("search", count($search));
     return $this->__display('index.tpl');
 }
Exemplo n.º 2
0
 function executeSave()
 {
     $data = $this->getRequest()->getRequestParameter("m", "array", array());
     $captcha = $this->getRequest()->getRequestParameter("captcha", "array", array());
     $lang = fvLang::getInstance();
     try {
         $ex = FeedbackManager::getInstance()->cloneRootInstance();
         $ex->updateFromRequest($data);
         if (!$ex->isValid($ex)) {
             /*$fields = "\"".implode("\", \"", array_keys($ex->getValidationResult()) )."\"";*/
             throw new EUserMessageError($lang->feedback_valid_error, $ex);
         }
         if (!fvCaptcha::getInstance()->check($captcha['fileName'], $captcha['text'])) {
             throw new EUserMessageError($lang->feedback_invalid_captcha);
         }
         if (!$ex->save()) {
             throw new EUserMessageError($lang->form_save_error, $ex);
         }
     } catch (EUserMessageError $exc) {
         $fieldsArr = array();
         foreach ((array) $exc->getValidationResult() as $field => $val) {
             $fieldsArr[] = "\"" . $lang->__get("form_label_{$field}") . "\"";
         }
         $fields = implode(", ", $fieldsArr);
         $errMessage = preg_replace("#%fields%#si", $fields, $exc->getMessage());
         fvResponce::getInstance()->setHeader('exception', json_encode($errMessage));
         $captcha = fvCaptcha::getInstance()->generate();
         fvResponce::getInstance()->setHeader('captcha', json_encode($captcha->render()));
         fvResponce::getInstance()->setHeader('validation', json_encode($exc->getValidationResult()));
         return self::$FV_AJAX_CALL;
     }
     fvResponce::getInstance()->setHeader('message', json_encode($lang->feedback_success));
     return self::$FV_AJAX_CALL;
 }
Exemplo n.º 3
0
 /**
  * Public function that creates a single instance
  */
 public static function getInstance()
 {
     if (!isset(self::$_instance)) {
         self::$_instance = new self();
     }
     return self::$_instance;
 }
Exemplo n.º 4
0
 protected function processImpl(PostArrayAdapter $adapter, $button)
 {
     $FEEDBACK = FeedbackManager::inst();
     /*
      * Тема
      */
     $theme = $adapter->str(FORM_PARAM_THEME);
     $error = UserInputValidator::validateShortText($theme);
     if ($error) {
         return array(FORM_PARAM_THEME => $error);
     }
     $theme = UserInputTools::safeShortText($theme);
     /*
      * Комментарий
      */
     $text = $adapter->str(FORM_PARAM_COMMENT);
     $error = UserInputValidator::validateLongText($text);
     if ($error) {
         return array(FORM_PARAM_COMMENT => $error);
     }
     $text = UserInputTools::safeLongText($text);
     /*
      * АВТОРИЗОВАН - пользуемся стандартным механизмом добавления сообщения в тред.
      * Кодом треда, при этом, является сам пользователь.
      */
     if (AuthManager::isAuthorized()) {
         $msg = $FEEDBACK->saveMessage(PsUser::inst()->getId(), null, $text, $theme, PsUser::inst());
         return new AjaxSuccess($FEEDBACK->buildLeaf($msg));
     }
     /*
      * НЕ АВТОРИЗОВАН - сохраняем сообщение в таблицу анонимных пользователей.
      */
     if (!AuthManager::isAuthorized()) {
         /*
          * Имя пользователя
          */
         $name = $adapter->str(FORM_PARAM_NAME);
         $error = UserInputValidator::validateShortText($name);
         if ($error) {
             return array(FORM_PARAM_NAME => $error);
         }
         $name = UserInputTools::safeShortText($name);
         /*
          * Контакты
          */
         $contacts = $adapter->str(FORM_PARAM_REG_CONTACTS);
         if ($contacts) {
             $error = UserInputValidator::validateShortText($contacts, false);
             if ($error) {
                 return array(FORM_PARAM_REG_CONTACTS => $error);
             }
             $contacts = UserInputTools::safeShortText($contacts);
         }
         $FEEDBACK->saveAnonimousFeedback($name, $contacts, $theme, $text);
         return new AjaxSuccess();
     }
 }
Exemplo n.º 5
0
function smarty_block_feed($params, $content, Smarty_Internal_Template &$smarty)
{
    if (!$content) {
        return;
    }
    $text = trim($content);
    $text = $text == '.' ? null : $text;
    $blank = !isEmptyInArray('blank', $params);
    $http = !isEmptyInArray('http', $params);
    return FeedbackManager::inst()->writeToUsHref($text, $blank, $http);
}
 public function testFormRenderer()
 {
     $testresult = true;
     $message = "";
     $fm = new FeedbackManager();
     ob_start();
     $fm->renderFeedbackForm();
     $output = ob_get_clean();
     if (strpos($output, "name='email'") === false && $testresult == true) {
         list($testresult, $message) = array(false, "Email field is not present");
     }
     if (strpos($output, "name='username'") === false && $testresult == true) {
         list($testresult, $message) = array(false, "Username field not present");
     }
     if (strpos($output, "name='subject'") === false && $testresult == true) {
         list($testresult, $message) = array(false, "Subject field not present");
     }
     if (strpos($output, "name='message'") === false && $testresult == true) {
         list($testresult, $message) = array(false, "Message field not present");
     }
     $this->assertTrue($testresult, $message);
 }
Exemplo n.º 7
0
 protected function executeImpl(ArrayAdapter $params)
 {
     $id = $params->int('id');
     //feedId or userId - в зависимости от action
     $action = $params->str('action');
     $res = 'OK';
     switch ($action) {
         case 'delete':
             AdminFeedbackBean::inst()->deleteAnonimMsg($id);
             break;
         case 'load':
             //id = userId
             $res = FeedbackManager::inst()->buildDiscussion(false, $id, false);
             break;
         default:
             raise_error("Unknown action: {$action}");
     }
     return new AjaxSuccess($res);
 }
Exemplo n.º 8
0
 /**
  * Структура сайта (навигация и т.д.)
  * 
  * @return NavigationItem
  */
 private function getStructureImpl()
 {
     $MAP = NavigationItem::byPageCode(BASE_PAGE_MAP);
     $INDEX = NavigationItem::byPageCode(BASE_PAGE_INDEX, 'О проекте');
     $INDEX->addChild(NavigationItem::byPageCode(PAGE_OFFICE));
     $INDEX->addChild(NavigationItem::byPageCode(PAGE_REGISTRATION));
     $INDEX->addChild(NavigationItem::byPageCode(PAGE_PASS_REMIND));
     $MAGAZINE = NavigationItem::byPostsProcessor(MagManager::inst(), 'Все выпуски');
     $BLOG = NavigationItem::byRubricProcessor(BlogManager::inst(), 'Все заметки', 'Все заметки раздела');
     $TRAININGS = NavigationItem::byRubricProcessor(TrainManager::inst(), 'Все занятия', 'Все занятия в разделе');
     $TRAININGS->addChild(NavigationItem::byPageCode(PAGE_LESSON_HOW_TO));
     $FEEDBACK = NavigationItem::byPageCode(BASE_PAGE_FEEDBACK, 'Об авторе');
     $FEEDBACK->addChild(NavigationItem::byHref(FeedbackManager::inst()->writeToUsHref())->setNoBg());
     $FEEDBACK->addChild(NavigationItem::byPageCode(PAGE_HELPUS));
     //Окончательная структура
     $MAP->addChild($INDEX);
     $MAP->addChild($MAGAZINE);
     $MAP->addChild($BLOG);
     $MAP->addChild($TRAININGS);
     $MAP->addChild($FEEDBACK);
     return $MAP;
 }
Exemplo n.º 9
0
 protected function processRequest(ArrayAdapter $params)
 {
     $smarty['discussion'] = FeedbackManager::inst()->buildDiscussion(false, AuthManager::getUserId(), true);
     return new IdentPageFilling($smarty);
 }
Exemplo n.º 10
0
 public function title()
 {
     $cnt = AdminUserBean::inst()->getClientsCount();
     $unreaded = FeedbackManager::inst()->getNotConfirmemMsgsCnt();
     return "Пользователи ({$cnt}" . ($unreaded > 0 ? "/{$unreaded}" : '') . ')';
 }
Exemplo n.º 11
0
 private function __construct()
 {
     PsProfiler::inst(__CLASS__)->start(__FUNCTION__);
     $managers = array(MagManager::inst(), BlogManager::inst(), TrainManager::inst());
     foreach ($managers as $manager) {
         //Соберём типы постов
         $this->postTypes[] = $manager->getPostType();
         if ($manager instanceof RubricsProcessor) {
             $this->rubricsProcessors[$manager->getPostType()] = $manager;
             $this->foldings[] = $manager->getRubricsFolding();
         }
         if ($manager instanceof PostsProcessor) {
             $this->postsProcessors[$manager->getPostType()] = $manager;
             $this->foldings[] = $manager->getFolding();
         }
         if ($manager instanceof CommentsProcessor) {
             $this->commentProcessors[$manager->getPostType()] = $manager;
             $this->discussionControllers[$manager->getDiscussionController()->getDiscussionUnique()] = $manager->getDiscussionController();
         }
         if ($manager instanceof PagePreloadListener) {
             $this->pagePreloadListeners[] = $manager;
         }
         if ($manager instanceof NewsProvider) {
             $this->newsProviders[$manager->getNewsEventType()] = $manager;
         }
     }
     //Контроллеры дискуссий
     $this->discussionControllers[FeedbackManager::inst()->getDiscussionUnique()] = FeedbackManager::inst();
     //Фолдинги
     $this->foldings[] = PopupPagesManager::inst();
     $this->foldings[] = PluginsManager::inst();
     $this->foldings[] = IdentPagesManager::inst();
     $this->foldings[] = TimeLineManager::inst();
     $this->foldings[] = TemplateMessages::inst();
     $this->foldings[] = UserPointsManager::inst();
     $this->foldings[] = StockManager::inst();
     $this->foldings[] = HelpManager::inst();
     $this->foldings[] = EmailManager::inst();
     $this->foldings[] = PSForm::inst();
     $this->foldings[] = DialogManager::inst();
     //Библиотеки
     $this->foldings[] = PoetsManager::inst();
     $this->foldings[] = ScientistsManager::inst();
     //Админские страницы
     $this->foldings[] = APagesResources::inst();
     //Базовые страницы
     $this->foldings[] = BasicPagesManager::inst();
     //Построитель страниц
     $this->foldings[] = PageBuilder::inst();
     //Управление списком предпросмотра постов
     $this->foldings[] = ShowcasesCtrlManager::inst();
     //Элементы в правой панели навигации
     $this->foldings[] = ClientBoxManager::inst();
     /*
      * Выделим различные подклассы фолдингов
      */
     foreach ($this->foldings as $folding) {
         //Фолдинги библиотек
         if ($folding instanceof LibResources) {
             $this->libs[] = $folding;
         }
         //Фолдинги обработчиков постов
         if ($folding instanceof PostFoldedResources) {
             $this->postProcessorFoldings[] = $folding;
         }
         //Фолдинги для баблов
         if ($folding instanceof BubbledFolding) {
             $this->bubbles[] = $folding;
         }
         //Фолдинги, предоставляющие панели
         if ($folding instanceof PanelFolding) {
             $this->panels[] = $folding;
         }
         //Фолдинги, финализирующие контент страницы
         if ($folding instanceof PageFinalizerFolding) {
             $this->pageFinaliseFoldings[] = $folding;
         }
         //Индексированный список фолдингов
         $this->folding2unique[$folding->getUnique()] = $folding;
         //Префиксы smarty к фолдингам
         $this->folding2smartyPrefix[$folding->getSmartyPrefix()] = $folding;
         //Префиксы классов к фолдингам
         if ($folding->getClassPrefix()) {
             $this->folding2classPrefix[$folding->getClassPrefix()] = $folding;
         }
     }
     PsProfiler::inst(__CLASS__)->stop();
 }
Exemplo n.º 12
0
 /**
  * Tag handler for feedback list.
  *
  * @param array $tag_params
  * @param array $children
  */
 public function tag_FeedbackList($tag_params, $children)
 {
     $manager = FeedbackManager::getInstance();
     $user_manager = UserManager::getInstance();
     $conditions = array();
     // load template
     $template = $this->loadTemplate($tag_params, 'list_item.xml');
     // get items from the database
     $items = $manager->getItems($manager->getFieldNames(), $conditions);
     // parse template
     if (count($items) > 0) {
         foreach ($items as $item) {
             $timestamp = strtotime($item->timestamp);
             $date = date($this->getLanguageConstant('format_date_short'), $timestamp);
             $time = date($this->getLanguageConstant('format_time_short'), $timestamp);
             $user = $user_manager->getSingleItem(array('fullname'), array('id' => $item->user));
             $user_name = $item->user;
             if (is_object($user)) {
                 $user_name = $user->fullname;
             }
             $params = array('id' => $item->id, 'user' => $item->user, 'user_name' => $user_name, 'timestamp' => $item->timestamp, 'time' => $time, 'date' => $date, 'message' => $item->message, 'url' => $item->url, 'status' => $item->status, 'item_change' => url_MakeHyperlink($this->getLanguageConstant('change'), window_Open('feedback_change', 430, $this->getLanguageConstant('title_feedback_change'), false, false, url_Make('transfer_control', 'backend_module', array('module', $this->name), array('backend_action', 'feedback_change'), array('id', $item->id)))), 'item_delete' => url_MakeHyperlink($this->getLanguageConstant('delete'), window_Open('feedback_delete', 400, $this->getLanguageConstant('title_feedback_delete'), false, false, url_Make('transfer_control', 'backend_module', array('module', $this->name), array('backend_action', 'feedback_delete'), array('id', $item->id)))));
             $template->setLocalParams($params);
             $template->restoreXML();
             $template->parse();
         }
     }
 }
Exemplo n.º 13
0
 public function send($templateData = null)
 {
     FeedbackManager::inst()->saveTemplatedMessage($this->receiver->getId(), null, $this->templateId, $templateData, $this->author);
 }