* - postListExtra - add extra column data on the results (like new messages etc.)
* -postListFilter($data, $authUser, $request) return $data - add extra data to an object
*
- * - toRooSingleArray() // single fetch, add data..
+ * - toRooSingleArray($authUser) // single fetch, add data..
* - toRooArray($request) /// toArray if you need to return different data.. for a list fetch.
*
*
* - beforeDelete() -- return false for fail and set DO->err;
- * - onUpdate($old, $request,$roo) - after update
+ * - onUpdate($old, $request,$roo) - after update // return value ignored
* - onInsert($request,$roo) - after insert
* - onUpload($roo)
* - setFromRoo($ar) - values from post (deal with dates etc.) - return true|error string.
* -- defaults to listing data. with args.
*
* !colname=.... => colname != ....
- * colname[0]=... colname[1]=... => colname IN (.....)
+ * colname[0]=... colname[1]=... => colname IN (.....) ** only supports main table at present..
*
* other opts:
* _post = simulate a post with debuggin on.
*
* csvTitles = return data as csv
*
- * sort = sort column
- * dir = sort direction
+ * sort = sort column (',' comma delimited)
+ * dir = sort direction ?? in future comma delimited...
* start = limit start
* limit = limit number
*
function get($tab)
{
// $this->jerr("Not authenticated", array('authFailure' => true));
- //DB_DataObject::debuglevel(1);
+ // DB_DataObject::debuglevel(1);
// debugging...
if (!empty($_GET['_post'])) {
function applySort($x)
{
- Db_DataObject::debugLevel(1);
+ // Db_DataObject::debugLevel(1);
$sort = empty($_REQUEST['sort']) ? '' : $_REQUEST['sort'];
$dir = (empty($_REQUEST['dir']) || strtoupper($_REQUEST['dir']) == 'ASC' ? 'ASC' : 'DESC');
$cols = $x->table();
$sort_ar = explode(',', $sort);
$sort_str = array();
+
foreach($sort_ar as $sort) {
if (strlen($sort) && isset($cols[$sort]) ) {
$sort_str[] = $sort . ' ' . $dir ;
}
}
+
if ($sort_str) {
- $x->orderBy(implode(', ', $sort_str );
+ $x->orderBy(implode(', ', $sort_str ));
}
}
}
if (!empty($_REQUEST['_get'])) {
return $this->get($tab);
}
+
$_columns = !empty($_REQUEST['_columns']) ? explode(',', $_REQUEST['_columns']) : false;
$tab = str_replace('/', '',$tab); // basic protection??
if (empty($keys) ) {
$this->jerr('no key');
}
+
+ // delete should be here...
+ if (isset($_REQUEST['_delete'])) {
+ // do we really delete stuff!?!?!?
+ return $this->delete($x,$_REQUEST);
+ }
+
+
$old = false;
if (!empty($_REQUEST['_ids'])) {
}
$this->jok($this->update($x, $_REQUEST));
} else {
+
+ if (empty($_POST)) {
+ $this->jerr("No data recieved for inserting");
+ }
+
$this->jok($this->insert($x, $_REQUEST));
}
}
$r = DB_DataObject::factory($x->tableName());
- $r->id = $x->id;
+ $pk = $x->keys();
+ // let's assume it has a key!!!
+ $pk = $pk[0];
+ $r->$pk = $x->$pk;
$this->loadMap($r, $_columns);
$r->limit(1);
$r->find(true);
$rooar = method_exists($r, 'toRooArray');
//print_r(var_dump($rooar)); exit;
- return $rooar ? $r->toRooArray() : $r->toArray();
+ return $rooar ? $r->toRooArray($_REQUEST) : $r->toArray();
}
}
$r = DB_DataObject::factory($x->tableName());
- $r->id = $x->id;
+ $pk = $x->keys();
+ // let's assume it has a key!!!
+ $pk = $pk[0];
+ $r->$pk = $x->$pk;
$this->loadMap($r, $_columns);
$r->limit(1);
$r->find(true);
$rooar = method_exists($r, 'toRooArray');
//print_r(var_dump($rooar)); exit;
- return $rooar ? $r->toRooArray() : $r->toArray();
+ return $rooar ? $r->toRooArray($_REQUEST) : $r->toArray();
}
function delete($x, $req)
{
// do we really delete stuff!?!?!?
-
-
+ if (empty($req['_delete'])) {
+ $this->jerr("Delete Requested with no value");
+
+ }
// build a list of tables to queriy for dependant data..
$map = $x->links();
// collect tables
// echo '<PRE>';print_r($affects);exit;
- //DB_Dataobject::debugLevel(1);
+ //DB_Dataobject::debugLevel(1);
$clean = create_function('$v', 'return (int)$v;');
$bits = array_map($clean, explode(',', $req['_delete']));
// print_r($bits);exit;
+ $pk = $x->keys();
+ // let's assume it has a key!!!
+ $pk = $pk[0];
- $x->whereAdd('id IN ('. implode(',', $bits) .')');
- $x->find();
+ $x->whereAdd($pk .' IN ('. implode(',', $bits) .')');
+ if (!$x->find()) {
+ $this->jerr("Nothing found to delete");
+ }
$errs = array();
while ($x->fetch()) {
$xx = clone($x);
foreach($affects as $k=> $true) {
$ka = explode('.', $k);
$chk = DB_DataObject::factory($ka[0]);
- $chk->{$ka[1]} = $xx->id;
+ if (!is_a($chk,'DB_DataObject')) {
+ $this->jerr('Unable to load referenced table, check the links config: ' .$ka[0]);
+ }
+ $chk->{$ka[1]} = $xx->$pk;
if ($chk->count()) {
- $this->jerr('Delete Dependant records first');
+ $this->jerr('Delete Dependant records first ('. $ka[0]. ':' . $ka[1] .'='.$xx->$pk.')');
}
}
}
if (count($ar)) {
- $x->whereAddIn($key,$ar, $quote ? 'string' : 'int');
+ $x->whereAddIn($x->tableName(). '.'.$key,$ar, $quote ? 'string' : 'int');
}
continue;