Exemple #1
0
 public function addLanguage()
 {
     ipRequest()->mustBePost();
     $data = ipRequest()->getPost();
     if (empty($data['code'])) {
         throw new \Ip\Exception('Missing required parameter');
     }
     $code = $data['code'];
     $abbreviation = strtoupper($code);
     $url = $code;
     $languages = ipContent()->getLanguages();
     foreach ($languages as $language) {
         if ($language->getCode() == $code) {
             return new \Ip\Response\Json(array('error' => 1, 'errorMessage' => __('This language already exist.', 'Ip-admin', false)));
         }
     }
     $languages = Fixture::languageList();
     $directionality = Service::TEXT_DIRECTION_LTR;
     if (!empty($languages[$code])) {
         $language = $languages[$code];
         $title = $language['nativeName'];
         if (!empty($language['directionality']) && $language['directionality'] == 'rtl') {
             $directionality = Service::TEXT_DIRECTION_RTL;
         }
     } else {
         $title = $code;
     }
     Service::addLanguage($title, $abbreviation, $code, $url, 1, $directionality);
     return new \Ip\Response\Json(array());
 }
 public function setWidgetWidth()
 {
     $id = ipRequest()->getRequest('widgetId', false);
     $width = ipRequest()->getRequest('width', 50);
     ipStorage()->set('FloatImageWidth', 'widget_' . $id, $width);
     return new \Ip\Response\Json(array('status' => 'success'));
 }
 public function save()
 {
     //$form = Helper::createForm($wget='');
     $form = Helper::createForm();
     $postData = ipRequest()->getPost();
     $errors = $form->validate($postData);
     if ($errors) {
         // Validation error
         $status = array('status' => 'error', 'errors' => $errors);
         return new \Ip\Response\Json($status);
     } else {
         // Success
         Model::save(ipRequest()->getPost('language_id'), ipRequest()->getPost('zone_name'), ipRequest()->getPost('user_id'), ipRequest()->getPost('name'), ipRequest()->getPost('email'), ipRequest()->getPost('link'), ipRequest()->getPost('text'), ipRequest()->getPost('ip'), ipRequest()->getPost('approved'), ipRequest()->getPost('session_id'), ipRequest()->getPost('verification_code'), ipRequest()->getPost('active'));
         //get page where this widget sits :)
         $postData = ipRequest()->getPost();
         $vcode = $postData['verification_code'];
         $fullWidgetRecord = \Ip\Internal\Content\Model::getWidgetRecord($postData['wgetId']);
         $pageTitle = '';
         if (isset($fullWidgetRecord['revisionId'])) {
             $revision = \Ip\Internal\Revision::getRevision($fullWidgetRecord['revisionId']);
             if (!empty($revision['pageId'])) {
                 $pageTitle = ipPage($revision['pageId'])->getTitle();
             }
         }
         $stamp = date(__('m/d/Y', 'Comments')) . __(', at ', 'Comments') . date('H:i:s');
         //sending email notification
         Helper::sendMailNotification(trim(ipRequest()->getPost('zone_name')), trim(ipRequest()->getPost('name')), $stamp, trim(ipRequest()->getPost('text')), trim(ipRequest()->getPost('email')), trim($pageTitle), trim($vcode));
         //$actionUrl = ipActionUrl(array('sa' => 'FormExample.showSuccessMessage'));
         //$status = array('redirectUrl' => $actionUrl);
         $status = array('status' => 'ok');
         //success
         return new \Ip\Response\Json($status);
     }
 }
Exemple #4
0
 /**
  * @param $info
  * @return array|null
  * @throws \Ip\Exception
  */
 public static function ipRouteAction_150($info)
 {
     $requestFile = ipFile('') . $info['relativeUri'];
     $fileDir = ipFile('file/');
     if (ipRequest()->getRelativePath() != $info['relativeUri']) {
         return null;
         //language specific url.
     }
     if (mb_strpos($requestFile, $fileDir) !== 0) {
         return null;
     }
     $reflection = mb_substr($requestFile, mb_strlen($fileDir));
     $reflection = urldecode($reflection);
     $reflectionModel = ReflectionModel::instance();
     $reflectionRecord = $reflectionModel->getReflectionByReflection($reflection);
     if ($reflectionRecord) {
         $reflectionModel->createReflection($reflectionRecord['original'], $reflectionRecord['reflection'], json_decode($reflectionRecord['options'], true));
         if (is_file(ipFile('file/' . $reflection))) {
             //supply file route
             $result['page'] = null;
             $result['plugin'] = 'Repository';
             $result['controller'] = 'PublicController';
             $result['action'] = 'download';
             return $result;
         }
     }
 }
Exemple #5
0
 public static function ipBlockContent($content, $data)
 {
     if ($data['blockName'] == "main") {
         $pagePassword = Service::pagePassword();
         $pageId = Model::getPageId();
         if ($pagePassword && !ipAdminId()) {
             if (isset($_SESSION['pagePassword']) && is_array($_SESSION['pagePassword']) && in_array($pageId, $_SESSION['pagePassword'])) {
                 return $content;
             }
             $data['form'] = Helper::createForm();
             $postPassword = ipRequest()->getPost('pagePassword');
             if ($postPassword && $postPassword == $pagePassword) {
                 if (isset($_SESSION['pagePassword']) && is_array($_SESSION['pagePassword'])) {
                     $_SESSION['pagePassword'][] = $pageId;
                 } else {
                     $_SESSION['pagePassword'] = array();
                     $_SESSION['pagePassword'][] = $pageId;
                 }
                 return $content;
             } elseif ($postPassword) {
                 $data['error'] = __('Incorrect password', 'PagePassword', false);
             }
             return ipView('view/password.php', $data)->render();
         }
     }
     return $content;
 }
Exemple #6
0
 /**
  * GRID config
  */
 public static function grid()
 {
     $gridConfig = array('title' => 'Masonry Grid Items', 'table' => Config::TABLE_NAME, 'sortField' => 'itemOrder', 'createPosition' => 'top', 'createFilter' => function ($data) {
         $data['widgetId'] = ipRequest()->getQuery('widgetId');
         return $data;
     }, 'fields' => array(array('label' => 'Title', 'field' => 'title', 'validators' => array('Required')), array('label' => 'Image', 'field' => 'image', 'type' => 'RepositoryFile', 'preview' => __CLASS__ . '::imageView', 'fileLimit' => 1, 'validators' => array('Required')), array('label' => 'Description', 'field' => 'description', 'type' => 'RichText', 'preview' => false), array('label' => 'Url', 'field' => 'url', 'type' => 'Url', 'preview' => false), array('label' => 'Visible', 'field' => 'isVisible', 'type' => 'Checkbox', 'defaultValue' => 1)));
     return $gridConfig;
 }
Exemple #7
0
 /**
  * GRID config
  */
 public static function grid()
 {
     $gridConfig = array('title' => 'Slide Show', 'table' => Config::TABLE_NAME, 'deleteWarning' => 'Are you sure?', 'sortField' => 'slideshowOrder', 'createPosition' => 'top', 'createFilter' => function ($data) {
         $data['widgetId'] = ipRequest()->getQuery('widgetId');
         return $data;
     }, 'pageSize' => 20, 'fields' => array(array('label' => 'Title', 'field' => 'title', 'validators' => array('Required')), array('label' => 'Text', 'field' => 'text'), array('label' => 'Url', 'field' => 'url'), array('type' => 'RepositoryFile', 'label' => 'Image', 'showInList' => true, 'field' => 'image', 'preview' => 'Plugin\\SlideShow\\Model::showImage'), array('type' => 'Checkbox', 'label' => 'Visible', 'field' => 'isVisible', 'checked' => 1, 'defaultValue' => 1)));
     return $gridConfig;
 }
 /**
  * @param \Ip\Response $response
  * @return mixed
  */
 public static function ipSendResponse($response)
 {
     if (ipGetOption('MaintenanceMode.enabled') == 1 && ipAdminId() === false) {
         if (substr(ipRequest()->getRelativePath(), 0, 5) != 'admin') {
             return new \Ip\Response(ipGetOption('MaintenanceMode.content'));
         }
     }
     return $response;
 }
Exemple #9
0
 public function __construct($config, $request)
 {
     $this->request = $request;
     $this->config = new Config($config);
     $hash = ipRequest()->getRequest('gridHash', '');
     $this->statusVariables = Status::parse($hash);
     $this->subgridConfig = $this->config->subgridConfig($this->statusVariables);
     $this->actions = $this->getActions();
 }
Exemple #10
0
 public function grid()
 {
     $worker = new \Ip\Internal\Grid\Worker($this->config());
     $result = $worker->handleMethod(ipRequest());
     if (is_array($result) && !empty($result['error']) && !empty($result['errors'])) {
         return new \Ip\Response\Json($result);
     }
     return new \Ip\Response\JsonRpc($result);
 }
 /**
  * Check widget's posted data and return data to be stored or errors to be displayed
  */
 public function grid()
 {
     $widgetId = ipRequest()->getQuery('widgetId');
     ipAddCss('assets/masonryManagement.css');
     $config = Config::grid();
     if (!empty($widgetId)) {
         $config['filter'] = ' `widgetId` = ' . (int) $widgetId;
         $config['gatewayData'] = array('widgetId' => $widgetId);
     }
     return ipGridController($config);
 }
Exemple #12
0
 public static function ipBeforeController()
 {
     if (ipIsManagementState()) {
         $plugin = explode('.', ipRequest()->getQuery('aa'));
         if ($plugin[0] == 'Pages') {
             ipAddCss('assets/php.css');
             ipAddCss('assets/codeEditorField.css');
             ipAddJs('assets/src-noconflict/ace.js');
             ipAddJs('assets/initCodeEditorField.js');
         }
     }
 }
Exemple #13
0
 public function preview()
 {
     $id = ipRequest()->getQuery('id');
     if (!$id) {
         throw new \Ip\Exception('Email not found');
     }
     $email = Db::getEmail($id);
     $viewData = array('email' => $email);
     $content = ipView('view/preview.php', $viewData);
     $response = new \Ip\Response($content);
     return $response;
 }
Exemple #14
0
 public static function ipAdminLoginPrevent($data)
 {
     if (empty($data['username'])) {
         return 'Missing login data';
         //in theory should never happen
     }
     $ip = ipRequest()->getServer('REMOTE_ADDR');
     $antiBruteForce = SecurityModel::instance();
     $failedLogins = $antiBruteForce->failedLoginCount($data['username'], $ip);
     if ($failedLogins > ipGetOption('Admin.allowFailedLogins', 20)) {
         return __('You have exceeded failed login attempts.', 'Ip-admin', false);
     }
     return null;
 }
Exemple #15
0
 public function match($path, $request = null)
 {
     if (!$request) {
         $request = ipRequest();
     }
     $result = $this->auraRouter->match($path, $request->getServer());
     if (!$result) {
         return array();
     }
     $result = $result->params;
     if (is_callable($result['action'])) {
         return $result;
     }
     return $result;
 }
Exemple #16
0
 public function removeAdminIsAutogeneratedAjax()
 {
     ipRequest()->mustBePost();
     // Removing temporary data
     ipStorage()->remove('Ip', 'adminIsAutogenerated');
     // If user wants to change credentials, redirecting to Administrators list
     if (ipRequest()->getPost('action') == 'change') {
         // todo: redirect and automatically select user and open popup
         $redirect = ipActionUrl(array('aa' => 'Administrators.index')) . "#/hash=&administrator=" . \Ip\Internal\Admin\Backend::userId();
         \Ip\Internal\System\Model::sendUsageStatistics(array('action' => 'Install.adminChange'));
         return \Ip\Response\JsonRpc::result(array('redirect' => $redirect));
     }
     \Ip\Internal\System\Model::sendUsageStatistics(array('action' => 'Install.adminKeep'));
     return \Ip\Response\JsonRpc::result(array('close' => 1));
 }
Exemple #17
0
 public static function download()
 {
     $requestFile = ipFile('') . ipRequest()->getRelativePath();
     $fileDir = ipFile('file/');
     if (mb_strpos($requestFile, $fileDir) !== 0) {
         return null;
     }
     $file = mb_substr($requestFile, mb_strlen($fileDir));
     $file = urldecode($file);
     if (empty($file)) {
         throw new \Ip\Exception('Required parameter is missing');
     }
     $absoluteSource = realpath(ipFile('file/' . $file));
     if (!$absoluteSource || !is_file($absoluteSource)) {
         throw new \Ip\Exception\Repository\Transform("File doesn't exist", array('filename' => $absoluteSource));
     }
     if (strpos($absoluteSource, realpath(ipFile('file/'))) !== 0 || strpos($absoluteSource, realpath(ipFile('file/secure'))) === 0) {
         throw new \Exception("Requested file (" . $file . ") is outside of public dir");
     }
     $mime = \Ip\Internal\File\Functions::getMimeType($absoluteSource);
     $fsize = filesize($absoluteSource);
     // set headers
     header("Pragma: public");
     header("Expires: 0");
     header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
     header("Cache-Control: public");
     header('Content-type: ' . $mime);
     header("Content-Transfer-Encoding: binary");
     header("Content-Length: " . $fsize);
     // download
     // @readfile($file_path);
     $file = @fopen($absoluteSource, "rb");
     if ($file) {
         while (!feof($file)) {
             print fread($file, 1024 * 8);
             flush();
             if (connection_status() != 0) {
                 @fclose($file);
                 die;
             }
         }
         @fclose($file);
     }
     //TODO provide method to stop any output by ImpressPages
     ipDb()->disconnect();
     exit;
 }
Exemple #18
0
 /**
  * Upload file to temporary folder
  */
 public function upload()
 {
     ipRequest()->mustBePost();
     $post = ipRequest()->getPost();
     if (isset($post['secureFolder']) && $post['secureFolder']) {
         //upload to secure publicly not accessible folder.
         if (!ipGetOption('Config.allowAnonymousUploads', 1)) {
             throw new \Exception('Anonymous uploads are not enabled. You can enable them by turning on "anonymous uploads" configuration value in admin.');
         } else {
             //do nothing. Anonymous uploads are allowed to secure folder
         }
         $secureFolder = true;
     } else {
         $secureFolder = false;
         $this->backendOnly();
         if (!ipAdminPermission('Repository upload')) {
             throw new \Ip\Exception('Permission denied');
         }
     }
     $uploadModel = UploadModel::instance();
     try {
         $uploadModel->handlePlupload($secureFolder);
     } catch (\Ip\Exception\Repository\Upload\ForbiddenFileExtension $e) {
         // Return JSON-RPC response
         $message = __('Forbidden file type.', 'Ip-admin');
         ipLog()->info('Repository.invalidUploadedFileExtension: ' . $e->getMessage(), array('plugin' => 'Repository'));
         // TODO JSONRPC
         $answer = array('jsonrpc' => '2.0', 'error' => array('code' => $e->getCode(), 'message' => $message, 'id' => 'id'));
         return new \Ip\Response\Json($answer);
     } catch (\Ip\Exception\Repository\Upload $e) {
         ipLog()->error('Repository.fileUploadError', array('plugin' => 'Repository', 'exception' => $e));
         $message = __('Can\'t store uploaded file. Please check server configuration.', 'Ip-admin');
         // TODO JSONRPC
         $answer = array('jsonrpc' => '2.0', 'error' => array('code' => $e->getCode(), 'message' => $message, 'id' => 'id'));
         return new \Ip\Response\Json($answer);
     }
     $fileName = $uploadModel->getUploadedFileName();
     $file = $uploadModel->getUploadedFile();
     $targetDir = $uploadModel->getTargetDir();
     // Return JSON-RPC response
     $answerArray = array("jsonrpc" => "2.0", "result" => null, "id" => "id", "fileName" => $fileName);
     if (!$secureFolder) {
         $answerArray['dir'] = $targetDir;
         $answerArray['file'] = $file;
     }
     return new \Ip\Response\Json($answerArray);
 }
 public function post($widgetId, $data)
 {
     $postData = ipRequest()->getPost();
     $form = $this->createForm($widgetId, $data);
     $errors = $form->validate($postData);
     if (empty($data['success'])) {
         $data['success'] = __('Thank You', 'Ip');
     }
     $successHtml = ipView('helperView/success.php', array('success' => $data['success']))->render();
     if ($errors) {
         $data = array('status' => 'error', 'errors' => $errors);
     } else {
         $this->sendEmail($form, $postData, $data);
         $data = array('status' => 'success', 'replaceHtml' => $successHtml);
     }
     return new \Ip\Response\Json($data);
 }
Exemple #20
0
 public static function ipBeforeController()
 {
     if (ipIsManagementState() || ipRoute()->isAdmin() || ipRequest()->getQuery('ipDesignPreview')) {
         ipAddJs('Ip/Internal/Core/assets/js/jquery-ui/jquery-ui.js');
         ipAddJs('Ip/Internal/Repository/assets/ipRepository.js');
         ipAddJs('Ip/Internal/Repository/assets/ipRepositoryUploader.js');
         ipAddJs('Ip/Internal/Repository/assets/ipRepositoryAll.js');
         ipAddJs('Ip/Internal/Repository/assets/ipRepositoryBuy.js');
         ipAddJs('Ip/Internal/System/assets/market.js');
         ipAddJs('Ip/Internal/Core/assets/js/easyXDM/easyXDM.min.js');
         $marketUrl = ipConfig()->get('imageMarketUrl', 'http://market.impresspages.org/images-v1/');
         $popupData = array('marketUrl' => $marketUrl, 'allowUpload' => ipAdminPermission('Repository upload'), 'allowRepository' => ipAdminPermission('Repository'));
         ipAddJsVariable('ipRepositoryHtml', ipView('view/popup.php', $popupData)->render());
         ipAddJsVariable('ipRepositoryTranslate_confirm_delete', __('Are you sure you want to delete selected files?', 'Ip-admin'));
         ipAddJsVariable('ipRepositoryTranslate_delete_warning', __('Some of the selected files are still used somewhere on your website. Do you still want to remove them? ', 'Ip-admin'));
     }
 }
 public function checkSourceFile()
 {
     ipRequest()->mustBePost();
     $post = ipRequest()->getPost();
     if (!isset($post['sourceFile'])) {
         $data = array('status' => 'error', 'errors' => __('Could not check file.', 'DataTableWidget-admin'));
         return new \Ip\Response\Json($data);
     }
     $dataSource = new DataSource($post['sourceFile']);
     $errors = $dataSource->validate();
     if (empty($errors)) {
         $data = array('status' => 'success');
     } else {
         $data = array('status' => 'error', 'errors' => $errors);
     }
     return new \Ip\Response\Json($data);
 }
Exemple #22
0
 public function generateHtml($revisionId, $widgetId, $data, $skin)
 {
     if (empty($data['serialized'])) {
         $data['serialized'] = '';
     } else {
         parse_str($data['serialized'], $data);
         $data['currentLink'] = $revisionId;
     }
     if (empty($data['data']['blog']['place'])) {
         if (!empty($revisionId)) {
             $revision = \Ip\Internal\Revision::getRevision($revisionId);
             $pageId = $revision['pageId'];
         } else {
             $pageId = $data['data']['blog']['pageId'];
         }
     } else {
         $pageId = $data['data']['blog']['place'];
     }
     $data['sourcePageId'] = $pageId;
     //pagination
     if (!empty($data['data']['blog']['pagination']['limit'])) {
         $limit = $data['data']['blog']['pagination']['limit'];
     } else {
         $limit = 10;
     }
     if (!($page = ipRequest()->getQuery('page'))) {
         $page = 1;
     }
     if (!empty($data['data']['blog']['parent'])) {
         $parentCat = true;
     } else {
         $parentCat = false;
     }
     if (!empty($data['data']['blog']['image']['enable'])) {
         $data['imageOptions'] = array('type' => 'center', 'width' => $data['data']['blog']['image']['width'], 'height' => $data['data']['blog']['image']['height'], 'quality' => 80, 'forced' => false);
     }
     if (!empty($data['data']['blog']['options'])) {
         $options = $data['data']['blog']['options'];
     } else {
         $options = array('introlimit' => ipGetOption('AsdBlog.introLimit'), 'allowedtags' => ipGetOption('AsdBlog.allowedTags'), 'blockname' => ipGetOption('AsdBlog.blockName'));
     }
     $data['data']['pages'] = Model::getPages($pageId, $parentCat, array('limit' => $limit, 'page' => $page), $options);
     return parent::generateHtml($revisionId, $widgetId, $data, $skin);
 }
Exemple #23
0
 public static function ipBeforeController()
 {
     //show admin submenu if needed
     if (ipRoute()->isAdmin()) {
         ipAddJs('Ip/Internal/Core/assets/js/jquery-ui/jquery-ui.js');
         ipAddCss('Ip/Internal/Core/assets/js/jquery-ui/jquery-ui.css');
         $submenu = Submenu::getSubmenuItems();
         $submenu = ipFilter('ipAdminSubmenu', $submenu);
         if ($submenu) {
             ipResponse()->setLayoutVariable('submenu', $submenu);
         }
     }
     // Show admin toolbar if admin is logged in:
     if (ipAdminId() && !ipRequest()->getRequest('pa') || ipRequest()->getRequest('aa') && ipAdminId()) {
         if (!ipRequest()->getQuery('ipDesignPreview') && !ipRequest()->getQuery('disableAdminNavbar')) {
             ipAddJs('Ip/Internal/Admin/assets/admin.js');
             ipAddJsVariable('ipAdminNavbar', static::getAdminNavbarHtml());
         }
     }
     // Show popup with autogenerated user information if needed
     $adminIsAutogenerated = ipStorage()->get('Ip', 'adminIsAutogenerated');
     if ($adminIsAutogenerated) {
         $adminId = \Ip\Internal\Admin\Backend::userId();
         $admin = \Ip\Internal\Administrators\Model::getById($adminId);
         ipAddJs('Ip/Internal/Admin/assets/adminIsAutogenerated.js');
         $data = array('adminUsername' => $admin['username'], 'adminPassword' => ipStorage()->get('Ip', 'adminIsAutogenerated'), 'adminEmail' => $admin['email']);
         ipAddJsVariable('ipAdminIsAutogenerated', ipView('view/adminIsAutoGenerated.php', $data)->render());
     }
     if (ipContent()->getCurrentPage()) {
         // initialize management
         if (ipIsManagementState()) {
             if (!ipRequest()->getQuery('ipDesignPreview') && !ipRequest()->getQuery('disableManagement')) {
                 \Ip\Internal\Content\Helper::initManagement();
             }
         }
         //show page content
         $response = ipResponse();
         $response->setDescription(\Ip\ServiceLocator::content()->getDescription());
         $response->setKeywords(ipContent()->getKeywords());
         $response->setTitle(ipContent()->getTitle());
     }
 }
 /**
  * Check widget's posted data and return data to be stored or errors to be displayed
  */
 public function checkForm()
 {
     $data = ipRequest()->getPost();
     $form = $this->managementForm();
     $data = $form->filterValues($data);
     //filter post data to remove any non form specific items
     $errors = $form->validate($data);
     //http://www.impresspages.org/docs/form-validation-in-php-3
     if ($errors) {
         //error
         $data = array('status' => 'error', 'errors' => $errors);
     } else {
         //success
         unset($data['aa']);
         unset($data['securityToken']);
         unset($data['antispam']);
         $data = array('status' => 'ok', 'data' => $data);
     }
     return new \Ip\Response\Json($data);
 }
Exemple #25
0
 public function prepareForUpdate()
 {
     new \Ip\Internal\Update\UpdateException('');
     //autoload Update exception; As all core files will be deleted soon.
     new \Ip\Response\Json(array());
     //autoload Json; As all core files will be deleted soon.
     $downloadUrl = ipRequest()->getPost('downloadUrl');
     $md5 = ipRequest()->getPost('md5');
     $fs = new Helper\FileSystem();
     $fs->rm(ipFile('file/tmp/update/extracted/'));
     $this->downloadArchive($downloadUrl, $md5, ipFile('file/tmp/' . 'update/ImpressPages.zip'));
     $this->extractArchive(ipFile('file/tmp/update/ImpressPages.zip'), ipFile('file/tmp/update/extracted/'));
     $backupDir = ipFile('file/tmp/' . date('Y-m-d H.i.s'));
     $fs->rm($backupDir);
     $fs->createWritableDir($backupDir);
     $fs->cpContent(ipFile('Ip/'), $backupDir);
     $fs->makeWritable(ipFile('Ip/'));
     $fs->clean(ipFile('Ip/'));
     $fs->cpContent(ipFile('file/tmp/update/extracted/Ip/'), ipFile('Ip/'));
 }
Exemple #26
0
 public function createWidget()
 {
     ipRequest()->mustBePost();
     if (!isset($_POST['widgetName']) || !isset($_POST['position']) || !isset($_POST['block']) || !isset($_POST['revisionId']) || !isset($_POST['languageId'])) {
         return $this->_errorAnswer('Missing POST variable');
     }
     $widgetName = $_POST['widgetName'];
     $position = $_POST['position'];
     $blockName = $_POST['block'];
     $revisionId = isset($_POST['revisionId']) ? $_POST['revisionId'] : 0;
     $languageId = isset($_POST['languageId']) ? $_POST['languageId'] : 0;
     if ($revisionId) {
         //check revision consistency
         $revisionRecord = \Ip\Internal\Revision::getRevision($revisionId);
         if (!$revisionRecord) {
             throw new \Ip\Exception\Content("Can't find required revision " . esc($revisionId));
         }
         $pageId = $revisionRecord['pageId'];
         $page = new \Ip\Page($pageId);
         if ($page === false) {
             return $this->_errorAnswer('Page not found #' . $pageId);
         }
     }
     $widgetObject = Model::getWidgetObject($widgetName, true);
     if ($widgetObject === false) {
         return $this->_errorAnswer('Unknown widget "' . $widgetName . '"');
     }
     try {
         $widgetId = Service::createWidget($widgetName, null, null, $revisionId, $languageId, $blockName, $position, true);
         if ($widgetName == 'Columns' && $revisionId == 0) {
             $widgetRecord = Model::getWidgetRecord($widgetId);
             $data = array_merge($widgetRecord['data'], array('static' => true));
             Model::updateWidget($widgetId, array('data' => $data));
         }
         $widgetHtml = Model::generateWidgetPreview($widgetId, 1);
     } catch (\Ip\Exception\Content $e) {
         return $this->_errorAnswer($e);
     }
     $data = array('status' => 'success', 'action' => '_createWidgetResponse', 'widgetHtml' => $widgetHtml, 'position' => $position, 'widgetId' => $widgetId, 'block' => $blockName);
     return new \Ip\Response\Json($data);
 }
Exemple #27
0
 public function widgetPost()
 {
     $widgetId = ipRequest()->getPost('widgetId');
     if (!$widgetId) {
         return \Ip\Response\JsonRpc::error('Missing widgetId POST variable');
     }
     $widgetId = $_POST['widgetId'];
     $widgetRecord = Model::getWidgetRecord($widgetId);
     try {
         if (!$widgetRecord) {
             return \Ip\Response\JsonRpc::error("Can't find requested Widget: " . $widgetId, 10);
         }
         $widgetObject = Model::getWidgetObject($widgetRecord['name']);
         if (!$widgetObject) {
             return \Ip\Response\JsonRpc::error("Can't find requested Widget: " . $widgetRecord['name'], 20);
         }
         return $widgetObject->post($widgetId, $widgetRecord['data']);
     } catch (\Ip\Exception\Content $e) {
         return \Ip\Response\JsonRpc::error($e->getMessage());
     }
 }
Exemple #28
0
 public function subscriptionPaymentSelection($key)
 {
     $data = Model::getPaymentData($key);
     $paymentMethods = Model::collectSubscriptionPaymentMethods($data);
     $paymentMethodName = ipRequest()->getPost('paymentMethod');
     if ($paymentMethodName) {
         //redirect to selected payment page
         foreach ($paymentMethods as $paymentMethod) {
             if ($paymentMethod->name() == $paymentMethodName) {
                 $paymentUrl = $paymentMethod->paymentUrl($data['data']);
                 return new \Ip\Response\Json(array('redirect' => $paymentUrl));
             }
         }
     }
     //display all available payment methods
     ipAddJs('assets/paymentSelection.js');
     ipAddCss('assets/payments.css');
     $response = ipView('view/selectPayment.php', array('paymentMethods' => $paymentMethods));
     $response = ipFilter('ipSubscriptionPaymentSelectPageResponse', $response, array('paymentKey' => $key));
     return $response;
 }
 public function subscribeEmail()
 {
     $postData = ipRequest()->getPost();
     $listId = !empty($postData['data']['listId']) ? $postData['data']['listId'] : '';
     $form = Helper::createForm(null, $listId);
     foreach ($postData['data'] as $field => $value) {
         $postData["data[{$field}]"] = $value;
     }
     $errors = $form->validate($postData);
     if ($errors) {
         $status = array('status' => 'error', 'errors' => $errors);
         return new \Ip\Response\Json($status);
     } else {
         $result = Model::call('lists/subscribe', array('id' => $listId, 'email' => array('email' => $postData['data']['email']), 'update_existing' => true, 'replace_interests' => false, 'send_welcome' => false));
         if ($result) {
             $msg = !empty($postData['data']['successMessage']) ? $postData['data']['successMessage'] : __('Email successfully added to mailing list.', 'AsdMailChimp');
             $response = array('replaceHtml' => '<div class="msg-success">' . $msg . '</div>');
         } else {
             $response = array('alert' => __('Error! Please try again.', 'AsdMailChimp'));
         }
         return new \Ip\Response\Json($response);
     }
 }
Exemple #30
0
 /**
  * @param $info
  * @return array|null
  * @throws \Ip\Exception
  */
 public static function ipRouteAction_70($info)
 {
     $result = \Ip\ServiceLocator::router()->match(rtrim($info['relativeUri'], '/'), ipRequest());
     if (!$result) {
         return null;
     }
     if (is_callable($result['action'])) {
         unset($result['plugin'], $result['controller']);
     }
     if (empty($result['page'])) {
         if ($info['relativeUri'] == '') {
             $pageId = ipContent()->getDefaultPageId();
             $page = \Ip\Internal\Pages\Service::getPage($pageId);
         } else {
             $languageCode = ipContent()->getCurrentLanguage()->getCode();
             $page = \Ip\Internal\Pages\Service::getPageByUrl($languageCode, $info['relativeUri']);
         }
         if ($page && (!$page['isSecured'] || !ipAdminId())) {
             $result['page'] = new \Ip\Page($page);
         }
     }
     return $result;
 }