* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
class WebFormHelper extends BaseHelper {
+ /**
+ * Instance to the class which provides field values
+ */
+ private $valueInstance = null;
+
/**
* Wether the form tag is opened (keep at false or else your forms will
* never work!)
return $helperInstance;
}
+ /**
+ * Pre-fetches field default values from the given registry key instance into this class
+ *
+ * @param $registryKey
+ * @return void
+ * @throws NullPointerException If an instance from registry is null
+ */
+ public function prefetchFieldValues ($registryKey) {
+ // Get the required instance
+ $this->valueInstance = Registry::getRegistry()->getInstance($registryKey);
+
+ // Is the instance valid?
+ if (is_null($this->valueInstance)) {
+ // Throw an exception
+ throw new NullPointerException($this, self::EXCEPTION_IS_NULL_POINTER);
+ } // END - if
+ }
+
/**
* Add the form tag or close it an already opened form tag
*
if (($this->formOpened === false) && ($formName === false)) {
// Thrown an exception
throw new InvalidFormNameException ($this, self::EXCEPTION_FORM_NAME_INVALID);
- }
+ } // END - if
// Close the form is default
$formContent = "</form>";
if ($this->groupOpened === true) {
// Then automatically close it here
$this->addFormGroup("", "");
- }
+ } // END - if
- // @TODO Add some unique PIN here to bypass problems with some browser and/or extensions
+ /* @TODO Add some unique PIN here to bypass problems with some browser and/or extensions */
// Simply close it
$this->formOpened = false;
}
* Add a text input tag to the form or throw an exception if it is not yet
* opened. The field's name will be set as id.
*
- * @param $fieldName Input field name
- * @param $fieldValue Input default value (default: empty)
+ * @param $fieldName Input field name
+ * @param $fieldValue Input default value (default: empty)
* @return void
* @throws FormClosedException If the form is not yet opened
*/
if ($this->formOpened === false) {
// Throw an exception
throw new FormClosedException (array($this, $fieldName), self::EXCEPTION_CLOSED_FORM);
- }
+ } // END - if
// Generate the content
- $inputContent = sprintf("<input type=\"text\" class=\"textfield\" id=\"%s\" name=\"%s\" value=\"%s\" />",
+ $inputContent = sprintf("<input type=\"text\" class=\"textfield\" id=\"%s_field\" name=\"%s\" value=\"%s\" />",
$fieldName,
$fieldName,
$fieldValue
$this->addContent($inputContent);
}
+ /**
+ * Add a text input tag to the form with pre-loaded default value
+ *
+ * @param $fieldName Input field name
+ * @return void
+ */
+ public function addInputTextFieldWithDefault ($fieldName) {
+ // Get the value from instance
+ $fieldValue = call_user_func_array(array($this->valueInstance, "getField"), array($fieldName));
+ //* DEBUG: */ echo __METHOD__.":".$fieldName."=".$fieldValue."<br />\n";
+
+ // Add the text field
+ $this->addInputTextField($fieldName, $fieldValue);
+ }
+
/**
* Add a password input tag to the form or throw an exception if it is not
* yet opened. The field's name will be set as id.
if ($this->formOpened === false) {
// Throw an exception
throw new FormClosedException (array($this, $fieldName), self::EXCEPTION_CLOSED_FORM);
- }
+ } // END - if
// Generate the content
- $inputContent = sprintf("<input type=\"password\" class=\"password\" id=\"%s\" name=\"%s\" value=\"%s\" />",
+ $inputContent = sprintf("<input type=\"password\" class=\"password\" id=\"%s_field\" name=\"%s\" value=\"%s\" />",
$fieldName,
$fieldName,
$fieldValue
if ($this->formOpened === false) {
// Throw an exception
throw new FormClosedException (array($this, $fieldName), self::EXCEPTION_CLOSED_FORM);
- }
+ } // END - if
// Generate the content
$inputContent = sprintf("<input type=\"hidden\" name=\"%s\" value=\"%s\" />",
if ($this->formOpened === false) {
// Throw an exception
throw new FormClosedException (array($this, $fieldName), self::EXCEPTION_CLOSED_FORM);
- }
+ } // END - if
// Set wether the check box is checked...
$checked = " checked=\"checked\"";
if ($fieldChecked === false) $checked = " ";
// Generate the content
- $inputContent = sprintf("<input type=\"checkbox\" name=\"%s\" class=\"checkbox\" id=\"%s\" value=\"1\"%s/>",
+ $inputContent = sprintf("<input type=\"checkbox\" name=\"%s\" class=\"checkbox\" id=\"%s_field\" value=\"1\"%s/>",
$fieldName,
$fieldName,
$checked
if ($this->formOpened === false) {
// Throw an exception
throw new FormClosedException (array($this, "reset"), self::EXCEPTION_CLOSED_FORM);
- }
+ } // END - if
// Generate the content
$inputContent = sprintf("<input type=\"reset\" class=\"reset_button\" id=\"%s_reset\" value=\"%s\" />",
if ($this->formOpened === false) {
// Throw an exception
throw new FormClosedException (array($this, "submit"), self::EXCEPTION_CLOSED_FORM);
- }
+ } // END - if
// Generate the content
$inputContent = sprintf("<input type=\"submit\" class=\"submit_button\" id=\"%s_submit\" name=\"%s_button\" value=\"%s\" />",
if ($this->formOpened === false) {
// Throw exception here
throw new FormClosedException(array($this, $groupName), self::EXCEPTION_CLOSED_FORM);
- }
+ } // END - if
// At least the group name should be set
if ((empty($groupName)) && ($this->groupOpened === false)) {
// Throw exception here
throw new EmptyVariableException(array($this, 'groupName'), self::EXCEPTION_UNEXPECTED_EMPTY_STRING);
- }
+ } // END - if
// Initialize content with closing div by default
$content = " </div>\n</div><!-- Group - CLOSE //-->";
if ($this->subGroupOpened === true) {
// Close it here
$this->addFormSubGroup("", "");
- }
+ } // END - if
// Add the content
$this->addContent($content);
// All call it again if the group name is not empty
if (!empty($groupName)) {
$this->addFormGroup($groupName, $groupText);
- }
+ } // END - if
}
}
if ($this->groupOpened === false) {
// Throw exception here
throw new FormGroupClosedException(array($this, $subGroupName), self::EXCEPTION_UNEXPECTED_CLOSED_GROUP);
- }
+ } // END - if
// At least the sub group name should be set
if ((empty($subGroupName)) && ($this->subGroupOpened === false)) {
// Throw exception here
throw new EmptyVariableException(array($this, 'groupName'), self::EXCEPTION_UNEXPECTED_EMPTY_STRING);
- }
+ } // END - if
// Initialize content with closing div by default
$content = " </div>\n</div><!-- Sub group- CLOSE //-->";
// All call it again if sub group name is not empty
if (!empty($subGroupName)) {
$this->addFormSubGroup($subGroupName, $subGroupText);
- }
+ } // END - if
}
}
if ($this->formOpened === false) {
// Throw an exception
throw new FormClosedException (array($this, $fieldName), self::EXCEPTION_CLOSED_FORM);
- }
+ } // END - if
// Set the block type
$block = "div";
if ($this->formOpened === false) {
// Throw an exception
throw new FormClosedException (array($this, "form_notes"), self::EXCEPTION_CLOSED_FORM);
- }
+ } // END - if
// Is a group open?
if ($this->groupOpened === true) {
// Then automatically close it here
$this->addFormGroup("", "");
- }
+ } // END - if
// Generate the content
$inputContent = sprintf(" <div id=\"form_note\">
return $isAllowed;
}
+ /**
+ * Checks wether the email address change must be confirmed
+ *
+ * @return $requireConfirm Wether email change must be confirmed
+ */
+ public function ifEmailChangeRequireConfirmation () {
+ $requireConfirm = ($this->getConfigInstance()->readConfig('email_change_confirmation') == "Y");
+ return $requireConfirm;
+ }
+
+ /**
+ * Checks wether the rules has been updated
+ *
+ * @return $rulesUpdated Wether rules has been updated
+ */
+ public function ifRulesHaveChanged () {
+ /* @TODO Implement check if rules have been changed */
+ return false;
+ }
+
+ /**
+ * Checks wether email change is allowed
+ *
+ * @return $emailChange Wether changing email address is allowed
+ */
+ public function ifEmailChangeAllowed () {
+ $emailChange = ($this->getConfigInstance()->readConfig('email_change_allowed') == "Y");
+ return $emailChange;
+ }
+
+ /**
+ * Checks wether the user account is unconfirmed
+ *
+ * @return $isUnconfirmed Wether the user account is unconfirmed
+ */
+ public function ifUserAccountUnconfirmed () {
+ $isUnconfirmed = ($this->getField('user_status') === $this->getConfigInstance()->readConfig('user_status_unconfirmed'));
+ return $isUnconfirmed;
+ }
+
+ /**
+ * Checks wether the user account is locked
+ *
+ * @return $isUnconfirmed Wether the user account is locked
+ */
+ public function ifUserAccountLocked () {
+ $isUnconfirmed = ($this->getField('user_status') === $this->getConfigInstance()->readConfig('user_status_locked'));
+ return $isUnconfirmed;
+ }
+
+ /**
+ * Checks wether the user account is a guest
+ *
+ * @return $isUnconfirmed Wether the user account is a guest
+ */
+ public function ifUserAccountGuest () {
+ $isUnconfirmed = ($this->getField('user_status') === $this->getConfigInstance()->readConfig('user_status_guest'));
+ return $isUnconfirmed;
+ }
+
/**
* Flushs the content out (not yet secured against open forms, etc.!) or
- * throw an exception if it is not yet closed
+ * close the form automatically
*
* @return void
* @throws FormOpenedException If the form is still open
public function flushContent () {
// Is the form still open?
if ($this->formOpened === true) {
- // Throw an exception
- throw new FormOpenedException ($this, self::EXCEPTION_OPENED_FORM);
- }
+ // Close the form automatically
+ $this->addFormTag();
+ } // END - if
// Send content to template engine
$this->getTemplateInstance()->assignVariable($this->formName, $this->getContent());
}
+
+ /**
+ * Getter for direct field values
+ *
+ * @param $fieldName Name of the field we shall fetch
+ * @return $fieldValue Value from field
+ */
+ public function getField ($fieldName) {
+ // Get the field value
+ $fieldValue = call_user_func_array(array($this->valueInstance, "getField"), array($fieldName));
+
+ // Return it
+ return $fieldValue;
+ }
}
// [EOF]