static function handleFileUpload() { $app = App::$instance; if (isset($_FILES['Filedata']) && isset($_FILES['Filedata']["name"]) && !$_FILES['Filedata']["error"] && is_file($_FILES['Filedata']["tmp_name"])) { $originalFilename = strtolower($_FILES['Filedata']["name"]); $pathinfo = pathinfo($originalFilename); $fileExtension = isset($pathinfo['extension']) ? $pathinfo['extension'] : ''; $tempFilename = md5('fileupload' . uniqid()) . (isset($fileExtension[0]) ? '.' . $fileExtension : ''); $filename = $app->data->getFilename('.temp/bearcms/files/' . $tempFilename); $pathinfo = pathinfo($filename); if (isset($pathinfo['dirname'])) { if (!is_dir($pathinfo['dirname'])) { mkdir($pathinfo['dirname'], 0777, true); } } move_uploaded_file($_FILES['Filedata']["tmp_name"], $filename); if (is_file($filename)) { $response = Server::call('fileupload', array('tempFilename' => $tempFilename, 'requestData' => json_encode($_GET))); if (isset($response['result'])) { return new App\Response\JSON($response['result']); } else { return new App\Response\TemporaryUnavailable(); } } } $response = new App\Response(); $response->headers['contentType'] = 'Content-Type: text/json; charset=UTF-8'; $response->headers['serviceUnavailable'] = (isset($_SERVER['SERVER_PROTOCOL']) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.1') . ' 400 Bad Request'; return $response; }
/** * Login a user without email and password validation. This methods must be enabled on the CMS server. * * @param string $userID * @throws \InvalidArgumentException */ public function login($userID) { if (!is_string($userID)) { throw new \InvalidArgumentException(''); } \BearCMS\Internal\Server::call('login', ['userID' => $userID], true); }
} if (is_array($elementsEditorData) && isset($elementsEditorData['result']) && is_array($elementsEditorData['result']) && isset($elementsEditorData['result']['content'])) { $domDocument = new HTML5DOMDocument(); $domDocument->loadHTML($content); $domDocument->insertHTML($elementsEditorData['result']['content']); $content = $domDocument->saveHTML(); } else { $response = new App\Response\TemporaryUnavailable(); } } // It's needed even when there is no editable zone on the current page (editing a blog post for instance) $domDocument = new HTML5DOMDocument(); $domDocument->loadHTML($content); $domDocument->insertHTML('<html><body><script src="' . htmlentities($context->assets->getUrl('assets/HTML5DOMDocument.min.js')) . '"></script></body></html>'); $content = $domDocument->saveHTML(); $content = Server::updateAssetsUrls($content, false); if (strpos($content, '{body}') !== false) { $content = str_replace('{body}', '<component src="data:base64,' . base64_encode($response->content) . '"/>', $content); } elseif (strpos($content, '{jsonEncodedBody}') !== false) { $content = str_replace('{jsonEncodedBody}', json_encode($app->components->process($response->content)), $content); } $response->content = $app->components->process($content); } else { $response = new App\Response\TemporaryUnavailable(); } }, ['priority' => 1000]); if (Options::hasServer() && (Options::hasFeature('USERS') || Options::hasFeature('USERS_LOGIN_*'))) { $app->hooks->add('responseCreated', function () { Cookies::update(); }, ['priority' => 1001]); }
static function elementsEditor($data, $response) { if (!empty(ElementsHelper::$editorData)) { $requestArguments = []; $requestArguments['data'] = json_encode(ElementsHelper::$editorData); $requestArguments['jsMode'] = 1; $elementsEditorData = Server::call('elementseditor', $requestArguments, true); if (is_array($elementsEditorData) && isset($elementsEditorData['result'], $elementsEditorData['result']['content'])) { $response['body'] = json_encode(Server::mergeAjaxResponses(json_decode($response['body'], true), json_decode($elementsEditorData['result']['content'], true))); } else { throw new \Exception(''); } } }