Beispiel #1
0
 public function validateUserInput()
 {
     parent::validateUserInput();
     if (Str::nullOrEmpty($this->blogId)) {
         $this->addError("generic.error.missingRequiredField", array("field" => "blogId"));
     }
 }
Beispiel #2
0
 public function validateUserInput()
 {
     if (Str::nullOrEmpty($this->name)) {
         $this->addError("generic.error.missingRequiredField", array('field' => 'name'), 'name');
     }
     if (Str::nullOrEmpty($this->contents)) {
         $this->addError("generic.error.missingRequiredField", array('field' => 'contents'), 'contents');
     }
     if (Str::nullOrEmpty($this->blogId)) {
         $this->addError("generic.error.missingRequiredField", array('field' => 'blogId'));
     }
     // check captcha
     if (!Str::nullOrEmpty($this->captchaChallenge)) {
         $resp = ReCaptcha::recaptcha_check_answer(self::CAPTCHA_PRIVATE_KEY, $_SERVER["REMOTE_ADDR"], $this->captchaChallenge, $this->captchaResponse);
         if ($resp->is_valid) {
             // DAY is in milliseconds, convert to seconds and multiply by 14 for 2 weeks
             $expireTime = time() + GlobalConstants::DAY / 10 * 14;
             setcookie(self::CAPTCHA_COOKIE_NAME, true, $expireTime, '/');
         } else {
             $this->addError($resp->error);
         }
     } elseif (!isset($_COOKIE[self::CAPTCHA_COOKIE_NAME])) {
         $this->addError("Captcha does not appear to be functioning properly, please contact site administrator.");
     }
 }
Beispiel #3
0
 public function validateUserInput()
 {
     if (Str::nullOrEmpty($this->commentId)) {
         $this->addError("generic.error.missingRequiredField", array('field' => 'commentId'));
     }
     if (!isAdmin()) {
         $this->addError("generic.error.insufficientPermissions");
     }
 }
Beispiel #4
0
 protected function validateUserInput()
 {
     if (Str::nullOrEmpty($this->email)) {
         $this->addError("generic.error.missingRequiredField", array('field' => 'email'), 'email');
     }
     if (Str::nullOrEmpty($this->password)) {
         $this->addError("generic.error.missingRequiredField", array('field' => 'password'), 'password');
     }
 }
Beispiel #5
0
 public function validateUserInput()
 {
     if (Str::nullOrEmpty($this->postTitle)) {
         $this->addError("generic.error.missingRequiredField", array("field" => "postTitle"));
     }
     if (Str::nullOrEmpty($this->contents)) {
         $this->addError("generic.error.missingRequiredField", array("field" => "contents"));
     }
 }
Beispiel #6
0
 public function validateUserInput()
 {
     if (!$this->isLoggedIn()) {
         $this->addError("generic.error.notLoggedIn");
     }
     if (Str::nullOrEmpty($this->email)) {
         $this->addError("generic.error.missingRequiredField", array('field' => 'email'), 'email');
     }
     if ($this->password != $this->passwordConfirm) {
         $this->addError("editAccount.error.passwordMismatch");
     }
 }
Beispiel #7
0
 function testNullOrEmpty()
 {
     $null = null;
     $empty = "";
     $whiteSpace = "    ";
     $notEmpty = "    a    ";
     $zero = array();
     $result = new Result("");
     $this->assertTrue(Str::nullOrEmpty($null));
     $this->assertTrue(Str::nullOrEmpty($this->notInitialized));
     $this->assertTrue(Str::nullOrEmpty($empty));
     $this->assertTrue(Str::nullOrEmpty($zero));
     $this->assertFalse(Str::nullOrEmpty($whiteSpace, true));
     $this->assertFalse(Str::nullOrEmpty($notEmpty, true));
     $this->assertFalse(Str::nullOrEmpty($result, true));
 }
Beispiel #8
0
 /**
  * Format a message using message formatting rules, the provided
  * arguments and the provided locale.
  *
  * The locale influences numeric formatting, time formatting and monetary
  * formatting. Note that this has been disabled until test servers are at
  * least PHP 5.3.
  *
  * @param string $string String to format.
  * @param array $arguments Arguments used to format or substitute into
  * message.
  * @param class $locale Overriding locale object.
  *
  * @return string Formatted string.
  */
 public static function get($string, array $arguments = array(), $locale = null)
 {
     global $UBAR_GLOB;
     try {
         // array of directives to ignore because no matching argument found
         $ignoreList = array();
         // while you find something that looks like a directive, try to process it
         while (preg_match(self::REPLACE_REGEX, $string, $match)) {
             // get the key which should match an argument
             $key = trim($match[1]);
             // value from arguments matching key
             $value = NULL;
             // directive instructions - math, choice, number formatting, etc
             $instructions = NULL;
             // key not found in arguments
             if (!array_key_exists($key, $arguments)) {
                 // replace unrecognized directive with marker so the while loop doesn't get caught on it again<br />
                 // TODO: determine if better way to handle this
                 // TODO: log if in dev mode
                 self::ignore($match[0], $ignoreList, $string);
                 continue;
             } else {
                 $value = $arguments[$key];
             }
             // get instruction portion of directive - may be empty
             if (isset($match[2])) {
                 $instructions = trim(substr($match[2], 1));
             }
             // if empty, just replace value
             if (Str::nullOrEmpty($instructions)) {
                 $string = str_replace($match[0], $value, $string);
                 // else, process the instructions using the provided value
             } else {
                 $processedValue = self::processValue($value, $instructions, $locale);
                 if (!is_null($processedValue)) {
                     $string = str_replace($match[0], $processedValue, $string);
                     // if the value could not be processed, add to the ignore list
                 } else {
                     self::ignore($match[0], $ignoreList, $string);
                 }
             }
         }
         // if any replace markers for directives with bad keys, put them back now
         foreach ($ignoreList as $key => $value) {
             // NOTE: since expression language creates parse errors in xhtml and may otherwise impact markup, escaping characters in string.
             $string = str_replace($key, htmlspecialchars($value), $string);
         }
         // return string now that all directives with associated arguments are replaced
         // TODO: in dev mode, check that there weren't any missed directives because no argument found to match
     } catch (Exception $e) {
         // TODO: determine what expected errors can be caught and handle appropriately
         // something unknown went wrong, make xthml safe since the expression language format will cause xml parse errors
         if ($UBAR_GLOB['DEV_MODE']) {
             throw $e;
         }
         $string = htmlspecialchars($string);
     }
     return $string;
 }
Beispiel #9
0
 /**
  * Construct a localized properties instance with the given locale and
  * path. The path is only used as an override and should not be used
  * regularly.
  *
  * @param class $locale Locale to use for properties file lookup and
  * formatting.
  * @param string $path Override to path to properties files.
  */
 public function __construct($locale = NULL, $path = NULL)
 {
     global $UBAR_GLOB;
     // use properties root if exists and no override specified
     if ((!isset($path) || is_null($path)) && isset($UBAR_GLOB['PROPERTIES_PATH'])) {
         $path = $UBAR_GLOB['PROPERTIES_PATH'];
     }
     // verify directory found
     if (!file_exists($path)) {
         throw new Exception("Path \"{$path}\" to properties files does not exist. File: " . __FILE__ . " on line: " . __LINE__);
     }
     // get locale
     if (isset($locale) && !is_null($locale)) {
         // TODO: make it not throw an error if pear package not installed for localization
         // TODO: either use php 5.3 or PEAR i18n
         //$this->locale = Locale::parseLocale($locale);
         $this->locale = $locale;
         //die(print_r($this->locale));
     } else {
         if (isset($UBAR_GLOB['LOCALE'])) {
             // TODO: convert to Locale instance
             $this->locale = $UBAR_GLOB['LOCALE'];
         }
     }
     // TODO: check if valid locale
     // make sure that default properties file exists
     $defaultPath = $path . $UBAR_GLOB['PROPERTIES_ROOT'] . self::PROPERTIES_APPENDER;
     if (!file_exists($defaultPath)) {
         throw new Exception('Default properties file \'' . $defaultPath . '\' does not exist.');
     }
     // if this is the default locale or there was no override, set default as main properties
     if ($this->locale == $UBAR_GLOB['LOCALE_DEFAULT'] || Str::nullOrEmpty($this->locale)) {
         $this->isDefault = true;
         $this->properties = file_get_contents($defaultPath);
         // else, try to get localized properties file
     } else {
         $this->defaultProperties = file_get_contents($defaultPath);
         $localizedPath = $path . $UBAR_GLOB['PROPERTIES_ROOT'] . "_" . $this->locale . self::PROPERTIES_APPENDER;
         // if localized file doesn't exist, set default as primary and log that couldn't find localized property file
         if (!file_exists($localizedPath)) {
             //throw new Exception('Properties file \'' . $propertiesPath . '\' does not exist.');
             // log that couldn't find locale specific properties
             $this->properties = $this->defaultProperties;
             // get localized properties file
         } else {
             $this->properties = file_get_contents($localizedPath);
         }
     }
     // strip comments - this is anything where the first non whitespace is #
     $this->properties = preg_replace(Properties::PROP_COMMENT_REGEX, "", $this->properties);
 }
Beispiel #10
0
 /**
  * Render the result or redirect to the appropriate location.
  *
  * NOTE: This is a public method so that it may be called from tests. It is
  * not recommended that you call it directly elsewhere.
  *
  * NOTE: Currently a type of ERROR without a global result just dumps the
  * errors to screen.
  *
  * @throws Exception If now result defwas found and no default handling
  * could be found.
  *
  * @todo Do error presentation for ERROR type.
  *
  */
 public function showResult()
 {
     global $UBAR_GLOB;
     // no def and not default, look for it in global results
     if ($this->resultDef == null) {
         switch ($this->resultString) {
             case GlobalConstants::JSON:
                 // to render json, action must extend JSONAction
                 echo $this->action->getJSONString();
                 return;
             case GlobalConstants::ERROR:
                 // TODO: build in a default error representation
                 // since no error result found, just dump the errors
                 echo "Unable to find default error representation, overridable by having a global result for ERROR<br />";
                 die(print_r($this->action->getErrors(), true));
                 break;
             default:
                 throw new Exception("No definition found for result string {$resultString} for the action definition {$actionClassName}");
         }
     }
     // guaranteed to have a result def, switch on type
     switch ($this->resultDef->getType()) {
         case GlobalConstants::ACTION_TYPE:
             // make a new request so there is no redeclaration or confusion with request params
             // NOTE: this is less efficient but safer
             // TODO: get possible override for action identifier instead of hardcoding ".action"
             header('Location: ' . $this->resultDef->getTarget() . ".action");
             break;
         case GlobalConstants::PAGE_TYPE:
             // pass in possible overrides for page and template
             $this->renderPage($this->resultDef);
             break;
         case GlobalConstants::FILE_TYPE:
             require_once $UBAR_GLOB['BASE_VIEW_PATH'] . $this->resultDef->getTarget();
             return;
         case GlobalConstants::URL_TYPE:
             if (Str::nullOrEmpty($this->resultDef->getTarget())) {
                 throw new Exception("With a url result type, you must specify a location to redirect to");
             }
             // url types (and possibly others?) may have expressions embedded in target, evaluate
             $target = $this->evaluateResultString($this->resultDef->getTarget());
             header('Location: ' . $target);
             return;
         case GlobalConstants::JSON_TYPE:
             // to render json, action must extend JSONAction
             echo $this->action->getJSONString();
             return;
         default:
             throw new Exception("Unknown result type ," . $this->resultDef->getType());
     }
 }