<?php
/** * @author Prakash Khanchandani * @copyright 2013 * @program mnuItm.php * @description menu Items table maintenance * @specialities - enum values picked up from schema and validated * - form labels customised through properties */
session_start(); require_once ("classes.php");
function createTableObject() { $obj = new mnuItmTbl; if ($obj->getListAndColumns() === false) return false; else return $obj; }
class mnuItmTbl extends mstrTable { function getListAndColumns() { $this->tableName = 'menuItem';
$this->orderByClause = 'item';
$result = parent::getListAndColumns('item', 'isParent', 'URL'); return $result; }
protected function validateInput() { /* check internal consistency. If the item is NOT a parent menu record, it should have a valid executable. */ $isParent = $this->getColDefsVal('isParent'); $URL = $this->getColDefsVal('URL'); if ($isParent === false or $URL === false) { addToErrorMsg('could not get value of isParent/URL'); return false; } if ($isParent == 'N') { if ($URL == '' or strpos(strtolower($URL), '.php') === false) { addToErrorMsg('invalid value for URL considering that isParent=N'); return false; } } return true; }
protected function defaultRecordAlreadyExists() { /* override the func in mstrTable.php. The parent func cannot work in this case since there is no index col with which the query can be formed; remember that the index column is an auto_increment one and therefore not really a part of the record. Check the item description and the URL independently. */ $item = $this->getColDefsVal('item'); $URL = $this->getColDefsVal('URL'); if ($item === false or $URL === false) { addToErrorMsg('could not get value of item/URL'); return false; } $script = new mstrScripts; $result = $script->readMasterRecord('menuItem', "lower(item)=lower('$item')", "limit 1"); if ($result === false) { addToErrorMsg($script->getErrorMsg()); return false; } else { if (count($result) > 0) { return 1; } else { /* if the item is a parent, its URL need not be given. Check if a record with the same URL exists only if the URL is non blank. The check that URL cannot be blank for non-parents will be performed elsewhere in the flow. The check that item itself cannot be blank will also be performed elsewhere. */ if (trim($URL) <> '') { $result = $script->readMasterRecord('menuItem', "lower(url)=lower('$URL')", "limit 1"); if ($result === false) { addToErrorMsg($script->getErrorMsg()); return false; } else { if (count($result) > 0) { return 1; } } } } } return - 1; // for record not already present }
function canDelete() { /** * THERE IS NO TABLE IN THIS DEMO SET WHICH WILL ALLOW US TO DETERMINE WHETHER A * RECORD CAN BE DELETED. THEREFORE THIS FUNC ARBITRARILY RETURNS A YES. THE SAME * EFFECT WOULD BE ACHIEVED IF THIS FUNCTION WAS LEFT OUT ALTOGETHER. */ return "yes"; } }
if (!isset($_REQUEST['actn'])) { $obj = createTableObject(); } else { /* if the user has taken some action, handle it. */ $obj = handleRequestOption(); }
$form = new mstrFH($obj, 'b'); $form->setDemoNotes(mnuItmNotes()); $form->displayForm(); ?>
|