Exemplo n.º 1
0
 /**
  * Does the element consider the data to be empty
  * Used in is-empty validation rule
  *
  * @param   array  $data           Data to test against
  * @param   int    $repeatCounter  Repeat group #
  *
  * @return  bool
  */
 public function dataConsideredEmpty($data, $repeatCounter)
 {
     $params = $this->getParams();
     $input = $this->app->input;
     if ($input->get('rowid', '') !== '') {
         if ($input->get('task') == '') {
             return parent::dataConsideredEmpty($data, $repeatCounter);
         }
         $oldDaata = FArrayHelper::getValue($this->getFormModel()->_origData, $repeatCounter);
         if (!is_null($oldDaata)) {
             $name = $this->getFullName(true, false);
             $aOldData = JArrayHelper::fromObject($oldDaata);
             $r = FArrayHelper::getValue($aOldData, $name, '') === '' ? true : false;
             if (!$r) {
                 /* If an original value is found then data not empty - if not found continue to check the $_FILES array to see if one
                  * has been uploaded
                  */
                 return false;
             }
         }
     } else {
         if ($input->get('task') == '') {
             return parent::dataConsideredEmpty($data, $repeatCounter);
         }
     }
     $groupModel = $this->getGroup();
     if ($groupModel->isJoin()) {
         $name = $this->getFullName(true, false);
         $files = $input->files->get($name, array(), 'raw');
         if ($groupModel->canRepeat()) {
             $file = empty($files) ? '' : $files[$repeatCounter]['name'];
         } else {
             $file = JArrayHelper::getValue($files, 'name');
         }
         return $file == '' ? true : false;
     } else {
         $name = $this->getFullName(true, false);
         if ($this->isJoin()) {
             $d = (array) $input->get($name, array(), 'array');
             return !array_key_exists('id', $d);
         } else {
             // Single ajax upload
             if ($params->get('ajax_upload')) {
                 $d = (array) $input->get($name, array(), 'array');
                 if (array_key_exists('id', $d)) {
                     return false;
                 }
             } else {
                 $files = $input->files->get($name, array(), 'raw');
                 $file = JArrayHelper::getValue($files, 'name', '');
                 return $file == '' ? true : false;
             }
         }
     }
     if (empty($file)) {
         $file = $input->get($name);
         // Ajax test - nothing in files
         return $file == '' ? true : false;
     }
     // No files selected?
     return $file['name'] == '' ? true : false;
 }