コード例 #1
0
 public function isValid($value)
 {
     $valid = true;
     $name_explode = explode("_", $this->name);
     $field_id = $name_explode[1];
     $field = new RM_Fields();
     $gopts = new RM_Options();
     $field->load_from_db($field_id);
     //Sanitize value before use, remove white space, trim extra pipes.
     $fv = explode("|", trim(preg_replace('/\\s+/', '', $field->get_field_value()), '|'));
     $allowed_types = array();
     $multiple = $gopts->get_value_of('allow_multiple_file_uploads');
     if (!$fv || count($fv) === 1 && $fv[0] == "") {
         $allowed_types = explode("|", $gopts->get_value_of('allowed_file_types'));
     } else {
         foreach ($fv as $key => $value) {
             $fv[$key] = strtolower($value);
         }
         $allowed_types = $fv;
     }
     //die;
     if ($multiple == "yes") {
         if (isset($_FILES[$this->name]) && !empty($_FILES[$this->name])) {
             foreach ($_FILES[$this->name]['name'] as $filename) {
                 if ($filename == "") {
                     if (!$this->isRequiredFileField) {
                         return true;
                     } else {
                         $this->message = " %element% " . RM_UI_Strings::get('ERROR_REQUIRED');
                         return false;
                     }
                 } elseif (strpos($filename, '.') === 0) {
                     return false;
                 } elseif (strpos($filename, '.') === false) {
                     return false;
                 } else {
                     $arrx = explode('.', $filename);
                     $ext = $arrx[count($arrx) - 1];
                     if ($ext == "") {
                         return false;
                     }
                     $ext = strtolower($ext);
                     if (!in_array($ext, $allowed_types)) {
                         return false;
                     }
                 }
             }
             return true;
         }
         return true;
     } else {
         if (isset($_FILES[$this->name]) && !empty($_FILES[$this->name])) {
             $filename = $_FILES[$this->name]['name'];
             if ($filename == "") {
                 if (!$this->isRequiredFileField) {
                     return true;
                 } else {
                     $this->message = " %element% " . RM_UI_Strings::get('ERROR_REQUIRED');
                     return false;
                 }
             } elseif (strpos($filename, '.') === 0) {
                 return false;
             } elseif (strpos($filename, '.') === false) {
                 return false;
             } else {
                 $arrx = explode('.', $filename);
                 $ext = $arrx[count($arrx) - 1];
                 if ($ext == "") {
                     return false;
                 }
                 if (!in_array($ext, $allowed_types)) {
                     return false;
                 }
             }
             return true;
         }
         return true;
     }
     return false;
 }