Example #1
0
 /**
  * sends redirect response - overwrite parent::sendResponse()
  */
 public function sendResponse()
 {
     if (!$this->getRedirectUrl()) {
         throw new \InvalidArgumentException('Redirect url must be set!');
     }
     parent::sendResponse();
 }
Example #2
0
 public static function instance($className, $args = array())
 {
     global $root;
     settype($className, 'string');
     settype($args, 'array');
     $fileName = str_replace('_', DIRECTORY_SEPARATOR, $className);
     if (!is_readable("{$root}/bin/{$fileName}.php")) {
         return false;
     }
     include_once "{$root}/bin/{$fileName}.php";
     if (!class_exists($className, false)) {
         return false;
     }
     $reflection = new ReflectionClass($className);
     if ($reflection->getParentClass()->getName() != 'WebBase') {
         return false;
     }
     if (null === self::$match) {
         self::$match = $className;
     }
     $controller = call_user_func(array(&$reflection, 'newInstance'), $args);
     if ($controller->type && !empty($controller->type) && Response::canSendHeaders()) {
         Response::setHeader('Content-Type', $controller->type, true);
     }
     if (Request::isPost() && method_exists($controller, 'submit')) {
         $controller->submit();
     }
     if (Response::canSendHeaders()) {
         Response::sendResponse();
     }
     if (method_exists($controller, 'dispatch')) {
         $controller->dispatch();
     }
     return true;
 }
Example #3
0
 /**
  * Returms markup for user preference ui
  *
  * @return string
  */
 public function getUserPreferenceUI()
 {
     $this->smarty->assign('EDITOR_THEME_LIST', Utils::getAceEditorThemes());
     $this->smarty->assign('PREF_EDITOR_THEME', UserPreferencesController::get(PreferenceKeys::CODE_EDITOR_THEME));
     $this->smarty->assign('PREF_PAGINATOR_VALUE', UserPreferencesController::get(PreferenceKeys::PAGINATOR_LIMIT));
     $this->smarty->assign('PREF_SHOW_INVISIBLE', UserPreferencesController::get(PreferenceKeys::CODE_EDITOR_SHOW_INVISIBLE));
     $content = $this->render('USERPREF', true);
     Response::sendResponse(Constants::SUCCESS_RESPONSE, '', $content);
 }
 public function run(Resource $resource)
 {
     $uriParams = $resource->getParams();
     $formParams = RequestManager::getAllParams();
     if (strtolower($uriParams[Constants::INPUT_PARAM_ACTION]) === 'save') {
         if ($this->saveUserPreference($formParams)) {
             Response::sendResponse(Constants::SUCCESS_RESPONSE, Messages::SUCCESS_UPDATE);
         } else {
             Response::sendResponse(Constants::SUCCESS_RESPONSE, Messages::ERROR_OPERATION_FAILED);
         }
     }
 }
Example #5
0
 /**
  * Upload file on system
  * 
  * @param array $formParams
  */
 public function uploadFile(array $formParams)
 {
     $category = $formParams['category_id'];
     $language = $formParams['language_id'];
     if (!empty($_FILES)) {
         if ($_FILES[self::FILE_UPLOAD_FILED_NAME]["error"] > 0) {
             Logger::getLogger()->LogFatal('File upload failed, Errors found in $FILES array');
             Response::sendResponse(Constants::FAILURE_RESPONSE, Messages::ERROR_SOMETHING_WENT_WRONG);
         } else {
             $originalFileName = $_FILES[self::FILE_UPLOAD_FILED_NAME]["name"];
             $nameParts = explode(".", $originalFileName);
             $extension = end($nameParts);
             if (in_array($extension, $this->allowedExts)) {
                 $newFileName = Utils::getStoredFileName($originalFileName);
                 $uploadFileDir = Configuration::get(Configuration::CODE_BASE_DIR) . $language . '/' . $category;
                 if ($this->checkAndCreateDir($uploadFileDir)) {
                     $uploadFileLocation = $uploadFileDir . '/' . $newFileName;
                     if (!move_uploaded_file($_FILES[self::FILE_UPLOAD_FILED_NAME]["tmp_name"], $uploadFileLocation)) {
                         Logger::getLogger()->LogFatal("File upload failed while trying move_uploaded_file()");
                         Response::sendResponse(Constants::FAILURE_RESPONSE, Messages::ERROR_SOMETHING_WENT_WRONG);
                     } else {
                         $authUserData = Session::get(Session::SESS_USER_DETAILS);
                         $authUserId = $authUserData[Users_DBTable::USER_ID];
                         $formParams['actual_file_name'] = $originalFileName;
                         $formParams['stored_file_name'] = $newFileName;
                         $formParams['created_by'] = $authUserId;
                         if ($this->getModel()->insertProgramDescription($formParams)) {
                             Response::sendResponse(Constants::SUCCESS_RESPONSE, Messages::SUCCESS_UPDATE);
                         } else {
                             Response::sendResponse(Constants::FAILURE_RESPONSE, Messages::ERROR_OPERATION_FAILED);
                         }
                     }
                 } else {
                     Logger::getLogger()->LogError("Directory < {$uploadFileDir} > Doesn't Exist or Not Writable");
                     Response::sendResponse(Constants::FAILURE_RESPONSE, Messages::ERROR_OPERATION_FAILED);
                 }
             } else {
                 Logger::getLogger()->LogError(Messages::UPLOAD_INVALID_FILE_TYPE);
                 Response::sendResponse(Constants::FAILURE_RESPONSE, Messages::UPLOAD_INVALID_FILE_TYPE);
             }
         }
     }
 }
 private static function startDispatch()
 {
     $buffering = !IN_CLI && self::$outputBuffer;
     if ($buffering) {
         ob_start();
     }
     try {
         self::dispatch();
         $controllerPath = self::$request->getControllerPath();
         $actionFile = self::$request->getActionFile();
     } catch (Exception $e) {
         if (IN_CLI) {
             throw $e;
             return;
         }
         $controllerPath = 'error';
         self::$request->setUserParam('exception', $e);
         $controller = new ErrorController();
         if ($e instanceof PageNotFoundException) {
             $actionFile = 'page-not-found';
             self::$response->setHttpResponseCode(404);
             $controller->pageNotFoundAction();
         } else {
             $actionFile = 'internal-error';
             self::$response->setHttpResponseCode(500);
             $controller->internalErrorAction();
         }
     }
     if (self::$shouldRender && !self::$response->isRedirect()) {
         self::$view->render($controllerPath, $actionFile);
     }
     if ($buffering && !self::$response->isRedirect()) {
         self::$response->setBody(ob_get_clean());
     }
     self::$response->sendResponse();
 }
Example #7
0
 public function submitCode($formParams)
 {
     $controller = new EditorController();
     $loggedInUser = Session::get(Session::SESS_USER_DETAILS);
     $loggedInUserId = $loggedInUser[Users_DBTable::USER_ID];
     $storedFileName = Utils::getStoredFileName($formParams[ProgramDetails_DBTable::ACTUAL_FILE_NAME]);
     $lang = $formParams[ProgramDetails_DBTable::FK_LANGUAGE_ID];
     $cate = $formParams[ProgramDetails_DBTable::FK_CATEGORY_ID];
     $fileDir = Configuration::get(Configuration::CODE_BASE_DIR) . $lang . "/" . $cate;
     $fileContents = $formParams['editorContents'];
     $currentDatetime = Utils::getCurrentDatetime();
     if ($controller->saveFileOnDisk($fileDir, $storedFileName, $fileContents)) {
         $attribs = array('', $formParams[ProgramDetails_DBTable::TITLE], $formParams[ProgramDetails_DBTable::FK_LANGUAGE_ID], $formParams[ProgramDetails_DBTable::FK_CATEGORY_ID], $formParams[ProgramDetails_DBTable::ACTUAL_FILE_NAME], $storedFileName, $formParams[ProgramDetails_DBTable::LEVEL], $formParams[ProgramDetails_DBTable::DESCRIPTION], $formParams[ProgramDetails_DBTable::IS_VERIFIED], $currentDatetime, $currentDatetime, $loggedInUser[Users_DBTable::USER_ID], 0);
         $query = "INSERT INTO " . ProgramDetails_DBTable::DB_TABLE_NAME . " VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?);";
         if (DBManager::executeQuery($query, $attribs, false)) {
             $detailArray = array('isUpdate' => EditorController::IS_UPDATE_VALUE, 'programId' => $this->getLastInsertedRecord($loggedInUserId, $currentDatetime, $storedFileName));
             Response::sendResponse(Constants::SUCCESS_RESPONSE, Messages::SUCCESS_CODE_SUBMITTED, $detailArray);
         } else {
             Response::sendResponse(Constants::FAILURE_RESPONSE, Messages::ERROR_CODE_SUBMISSION_FAILED);
         }
     } else {
         Response::sendResponse(Constants::FAILURE_RESPONSE, Messages::ERROR_CODE_SUBMISSION_FAILED);
     }
 }
Example #8
0
 public static function run()
 {
     $dotenv = new \Dotenv\Dotenv(TXTROOT);
     $dotenv->load();
     if (isset($_SERVER['HTTP_USER_AGENT']) && stripos($_SERVER['HTTP_USER_AGENT'], 'Slackbot-LinkExpanding') !== false) {
         Response::sendResponse(Response::HTTP_403, ['error' => "No slackbots allowed"]);
         exit;
     }
     if (!getenv('REDIS_URL')) {
         Response::sendResponse(Response::HTTP_500, ['error' => "REDIS_URL environment variable required"]);
         exit;
     }
     if (!Request::isGet() && !Request::isPost()) {
         Response::sendResponse(Response::HTTP_405, ['error' => "Please use a GET or POST"]);
         exit;
     }
     if (getenv('AUTH') && (!isset($_POST['auth']) || !static::compareStrings(getenv('AUTH'), $_POST['auth']))) {
         Response::sendResponse(Response::HTTP_401, ['error' => "'auth' parameter is missing or invalid"]);
         exit;
     }
     //    header('Access-Control-Allow-Origin: ' . $_SERVER['ORIGIN']);
     //    header('Access-Control-Allow-Credentials: true');
     //    Access-Control-Allow-Methods: GET, POST
     // x-frame-options
     $redis = Redis::getRedis(getenv('REDIS_URL'));
     $hash = ltrim(Request::getPath(), '/');
     if ($hash) {
         if ($hash == 'robots.txt') {
             Response::setStatus(Response::HTTP_200);
             Response::setContentType(Response::TEXT);
             Response::setContent("User-agent: *\nDisallow: /");
             Response::send();
             exit;
         }
         if (Request::isPost()) {
             Response::sendResponse(Response::HTTP_405, ['error' => "Cannot post to a hash"]);
             exit;
         }
         if (strlen($hash) > Redis::MAX_KEY_LENGTH || !preg_match('/^[A-Za-z0-9]+$/', $hash)) {
             Response::sendResponse(Response::HTTP_404, ['error' => "Invalid hash"]);
             exit;
         }
         $data = $redis->hGetAll(Redis::PREFIX . $hash);
         if (!$data) {
             Response::sendResponse(Response::HTTP_404, ['error' => "Hash not found"]);
             exit;
         }
         $datum = Datum::createFromArray($data);
         if ($datum->once) {
             $redis->del(Redis::PREFIX . $hash);
         }
         // set proper cache header, esp for read-once
         // actually, PROBABLY NOT A GOOD IDEA, esp for things that are meant to expire. we should do the opposite - dont cache
         // Response::setCacheForeverHeaders();
         Response::sendResponse('datum', ['datum' => $datum]);
         exit;
     }
     if (Request::isGet()) {
         Response::sendResponse('home', ['domain' => 'http' . (Request::isSSL() ? 's' : '') . '://' . Request::getHost()]);
         exit;
     } else {
         $data = isset($_POST['data']) ? $_POST['data'] : file_get_contents("php://input");
         if (!$data) {
             Response::sendResponse(Response::HTTP_400, ['error' => 'No data submitted']);
             exit;
         }
         $datum = new Datum(trim($data), Datum::T_TEXT, Request::isFlagOn('once'));
         $key = substr(static::randId(), 0, Redis::MAX_KEY_LENGTH);
         $ttl = isset($_POST['ttl']) ? max(1, min((int) $_POST['ttl'], Redis::MAX_TTL)) : Redis::MAX_TTL;
         $redis->hMSet(Redis::PREFIX . $key, $datum->toArray());
         $redis->expire(Redis::PREFIX . $key, $ttl);
         $url = 'http' . (Request::isSSL() ? 's' : '') . '://' . Request::getHost() . '/' . $key;
         Response::sendResponse(Response::HTTP_201, ['url' => $url, 'ttl' => $ttl, '_textKey' => 'url']);
         exit;
     }
 }
Example #9
0
 /**
  * Delete program from system for given PID
  * 
  * @param int $pid
  */
 private function deleteSource($pid)
 {
     $isDeleted = false;
     $programController = new ProgramDetailsController();
     if ($programController->deleteProgram($pid)) {
         Response::sendResponse(Constants::SUCCESS_RESPONSE, Messages::SUCCESS_FILE_DELETION);
         $isDeleted = true;
     } else {
         Response::sendResponse(Constants::SUCCESS_RESPONSE, Messages::ERROR_FILE_DELETION);
     }
 }