コード例 #1
0
ファイル: IndexController.php プロジェクト: joerch/PHProjekt
 /**
  * Saves the new values of the projects dates.
  *
  * OPTIONAL request parameters:
  * <pre>
  *  - array <b>projects</b> Array with projectId,startDate and endDate by comma separated
  * </pre>
  *
  * If there is an error, the save will return a Phprojekt_PublishedException,
  * if not, it returns a string in JSON format with:
  * <pre>
  *  - type    => 'success'.
  *  - message => Success message.
  *  - code    => 0.
  *  - id      => 0.
  * </pre>
  *
  * @throws Phprojekt_PublishedException On error in the action save or wrong parameters.
  *
  * @return void
  */
 public function jsonSaveAction()
 {
     $projects = (array) $this->getRequest()->getParam('projects', array());
     $activeRecord = Phprojekt_Loader::getModel('Project', 'Project');
     $rights = Phprojekt_Loader::getLibraryClass('Phprojekt_Item_Rights');
     $userId = Phprojekt_Auth::getUserId();
     $this->setCurrentProjectId();
     // Error check: no project received
     if (empty($projects)) {
         $label = Phprojekt::getInstance()->translate('Projects');
         $message = Phprojekt::getInstance()->translate('No project info was received');
         throw new Phprojekt_PublishedException($label . ': ' . $message);
     }
     foreach ($projects as $project) {
         list($id, $startDate, $endDate) = explode(",", $project);
         // Check: are the three values available?
         if (empty($id) || empty($startDate) || empty($endDate)) {
             $label = Phprojekt::getInstance()->translate('Projects');
             $message = Phprojekt::getInstance()->translate('Incomplete data received');
             throw new Phprojekt_PublishedException($label . ': ' . $message);
         }
         $id = (int) $id;
         $activeRecord->find($id);
         // Check: project id exists?
         if (empty($activeRecord->id)) {
             $label = Phprojekt::getInstance()->translate('Project');
             $message = Phprojekt::getInstance()->translate('Id not found #') . $id;
             throw new Phprojekt_PublishedException($label . ': ' . $message);
         }
         // Check: dates are valid?
         $validStart = Cleaner::validate('date', $startDate, false);
         $validEnd = Cleaner::validate('date', $endDate, false);
         if (!$validStart || !$validEnd) {
             $label = Phprojekt::getInstance()->translate('Project id #') . $id;
             if (!$validStart) {
                 $message = Phprojekt::getInstance()->translate('Start date invalid');
             } else {
                 $message = Phprojekt::getInstance()->translate('End date invalid');
             }
             throw new Phprojekt_PublishedException($label . ': ' . $message);
         }
         // Check: start date after end date?
         $startDateTemp = strtotime($startDate);
         $endDateTemp = strtotime($endDate);
         if ($startDateTemp > $endDateTemp) {
             $label = Phprojekt::getInstance()->translate('Project id #') . $id;
             $message = Phprojekt::getInstance()->translate('Start date can not be after End date');
             throw new Phprojekt_PublishedException($label . ': ' . $message);
         }
         $activeRecord->startDate = $startDate;
         $activeRecord->endDate = $endDate;
         if ($rights->getItemRight(1, $id, $userId) >= Phprojekt_Acl::WRITE) {
             $activeRecord->parentSave();
         }
     }
     $message = Phprojekt::getInstance()->translate(self::EDIT_MULTIPLE_TRUE_TEXT);
     $return = array('type' => 'success', 'message' => $message, 'code' => 0, 'id' => 0);
     Phprojekt_Converter_Json::echoConvert($return);
 }
コード例 #2
0
ファイル: Validate.php プロジェクト: RainyBlueSky/PHProjekt
 /**
  * Validates a value using the database type of the field.
  *
  * @param Phprojekt_Model_Interface $class   Model object.
  * @param string                    $varname Name of the field.
  * @param mix                       $value   Value to validate.
  *
  * @return boolean True for valid.
  */
 public function validateValue(Phprojekt_Model_Interface $class, $varname, $value)
 {
     $info = $class->info();
     $varForInfo = Phprojekt_ActiveRecord_Abstract::convertVarToSql($varname);
     $valid = true;
     if (isset($info['metadata'][$varForInfo]) && !empty($value)) {
         $type = $info['metadata'][$varForInfo]['DATA_TYPE'];
         switch ($type) {
             case 'int':
                 $valid = Cleaner::validate('integer', $value, false);
                 break;
             case 'float':
                 $valid = Cleaner::validate('float', $value, false);
                 break;
             case 'date':
                 $valid = Cleaner::validate('date', $value, false);
                 break;
             case 'time':
                 // $valid = Cleaner::validate('timestamp', $value, false);
                 break;
             case 'timestamp':
             case 'datetime':
                 $valid = Cleaner::validate('timestamp', $value, false);
                 break;
             default:
                 $valid = Cleaner::validate('string', $value, true);
                 break;
         }
     }
     return $valid !== false;
 }
コード例 #3
0
ファイル: Cage.php プロジェクト: penSecIT/PHProjekt
 /**
  * Validates an item in the wrapped scope for a certain type.
  *
  * @param string  $type     Type against parameter/item should be validated.
  * @param string  $name     Name of parameter / Name of item in scope.
  * @param boolean $empty    Must parameter/item be not null or empty.
  * @param object  $messages Messages generated while validation.
  *
  * @return boolean True for valid.
  */
 public function validate($type, $name, $empty = false, $messages = null)
 {
     $value = isset($this->_scope[$name]) ? $this->_scope[$name] : null;
     return Cleaner::validate($type, $value, $empty, $messages);
 }
コード例 #4
0
 /**
  * Wrapper around Cleaner::validate('timestamp', $value) because the client
  * sends timestamps without seconds. Set emptyOk if null values are
  * permitted.
  */
 private static function _validateTimestamp($value, $emptyOk = false)
 {
     if (preg_match('/\\d{4}-\\d\\d-\\d\\d \\d\\d:\\d\\d/', $value)) {
         return true;
     } else {
         return Cleaner::validate('timestamp', $value, $emptyOk);
     }
 }