/** * 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; }