X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=DataObjects%2FCore_project.php;h=92c202ebee15fbfc64b2614845b0966b0cc3ccd7;hb=b645e610393300d301015f6adcfe78001a43389c;hp=5193f1c9d8342c01bba6bf5b91c6f2b9ff25a30f;hpb=2d960d4268aa9d56528c220a15c966923feda107;p=Pman.Core diff --git a/DataObjects/Core_project.php b/DataObjects/Core_project.php index 5193f1c9..92c202eb 100644 --- a/DataObjects/Core_project.php +++ b/DataObjects/Core_project.php @@ -2,7 +2,7 @@ /** * Table Definition for Projects */ -require_once 'DB/DataObject.php'; +class_exists('DB_DataObject') ? '' : require_once 'DB/DataObject.php'; class Pman_Core_DataObjects_Core_project extends DB_DataObject { @@ -33,7 +33,7 @@ class Pman_Core_DataObjects_Core_project extends DB_DataObject ###END_AUTOCODE function getProjectManagers() { - $c = DB_DataObject::factory('Companies'); + $c = DB_DataObject::factory('core_company'); $c->isOwner = 1; if (!$c->find(true)) { return array(); @@ -57,7 +57,7 @@ class Pman_Core_DataObjects_Core_project extends DB_DataObject } $ret = array(); - $p = DB_DataObject::factory('Person'); + $p = DB_DataObject::factory('core_person'); $p->whereAdd('id IN ('. implode(',', $pmids) .')'); $p->find(); while ($p->fetch()) { @@ -69,7 +69,7 @@ class Pman_Core_DataObjects_Core_project extends DB_DataObject function toEventString() { $c = $this->client(); - return ($c->id ? $c->toEventString() : '??'). ':' . $this->name; + return ($c && $c->id ? $c->toEventString() : '??'). ':' . $this->name; } /** @@ -87,12 +87,18 @@ class Pman_Core_DataObjects_Core_project extends DB_DataObject * */ - function applyFilters($q, $au) + function applyFilters($q, $au, $roo) { + $tn = $this->tableName(); if (!empty($q['query']['project_search'])) { $s = $this->escape($q['query']['project_search']); - $this->whereAdd(" (Projects.code LIKE '$s%') OR (Projects.name LIKE '%$s%')"); + $this->whereAdd(" ({$tn}.code LIKE '$s%') + OR + ({$tn}.name LIKE '%$s%') + OR + join_client_id_id.name LIKE '%$s%' + "); } // types of project to list ... - default is only the open ones... if (!empty($q['query']['project_indaterange'])) { @@ -100,22 +106,24 @@ class Pman_Core_DataObjects_Core_project extends DB_DataObject case 'A': // all break; case 'C': // current - $this->whereAdd('Projects.close_date >= NOW()'); + $this->whereAdd("{$tn}.close_date >= NOW()"); break; case 'O': // old - $this->whereAdd('Projects.close_date < NOW()'); + $this->whereAdd("{$tn}.close_date < NOW()"); break; } } - if (empty($q['query']['project_filter']) || $q['query']['project_filter'] != 'ALL') { + if (empty($q['_is_update_request']) && + + (empty($q['query']['project_filter']) || $q['query']['project_filter'] != 'ALL')) { $pf = empty($q['query']['project_filter']) ? 'P,N,U' : $q['query']['project_filter']; - $this->whereAddIn("Projects.type", explode(',', $pf), 'string'); + $this->whereAddIn("{$tn}.type", explode(',', $pf), 'string'); } // user projects!!!! - make sure they can only see project they are suppsed to.. // only applies to document stuff.. @@ -126,20 +134,20 @@ class Pman_Core_DataObjects_Core_project extends DB_DataObject - $pr = DB_DataObject::factory('Projects'); - $pr->whereAdd("Projects.type IN ('N','X')"); + $pr = DB_DataObject::factory($tn); + $pr->whereAdd("{$tn}.type IN ('N','X')"); $prjs = $pr->fetchAll('id'); //DB_DataObject::debugLevel(1); $pd = DB_DataObject::factory('ProjectDirectory'); - $pd->joinAdd(DB_DataObject::factory('Projects'), 'LEFT'); - $pd->whereAdd("Projects.type NOT IN ('N','X')"); + $pd->joinAdd(DB_DataObject::factory($tn), 'LEFT'); + $pd->whereAdd("{$tn}.type NOT IN ('N','X')"); $pd->person_id = $au->id; $prjs = array_merge($prjs, $pd->fetchAll('project_id')); if (count($prjs)) { $this->whereAdd(" - (Projects.id IN (".implode(',', $prjs).")) + ({$tn}.id IN (".implode(',', $prjs).")) "); } else { $this->whereAdd("1=0"); // can see nothing!!! @@ -150,7 +158,7 @@ class Pman_Core_DataObjects_Core_project extends DB_DataObject // DB_DataObjecT::debuglevel(1); $this->selectAdd(); $this->selectAdd('distinct(client_id)'); - $this->selectAs(DB_DataObject::factory('Companies'), 'client_id_%s','join_client_id_id'); + $this->selectAs(DB_DataObject::factory('core_company'), 'client_id_%s','join_client_id_id'); $this->groupBy('client_id'); } @@ -167,7 +175,7 @@ class Pman_Core_DataObjects_Core_project extends DB_DataObject } - function onInsert() + function onInsert($request,$roo) { $oo = clone($this); if (empty($this->code)) { @@ -178,7 +186,7 @@ class Pman_Core_DataObjects_Core_project extends DB_DataObject } } - function onUpdate($old) + function onUpdate($old, $request, $roo) { $oo = clone($this); if (empty($this->code)) { @@ -272,6 +280,29 @@ class Pman_Core_DataObjects_Core_project extends DB_DataObject } + + + function client() + { + if (!$this->client_id) { + return false; + } + $c = DB_DataObject::factory('core_company'); + $c->get($this->client_id); + return $c; + } + + + + function team() + { + $c = DB_DataObject::factory('core_group'); + $c->get($this->team_id); + return $c; + } + + + // DEPRICATED - use userProjects function getUserProjects($au, $data='id') // COMPANY BASED!!!! @@ -282,13 +313,6 @@ class Pman_Core_DataObjects_Core_project extends DB_DataObject } - function client() - { - $c = DB_DataObject::factory('Companies'); - $c->get($this->client_id); - return $c; - } - /** * check who is trying to access this. false == access denied.. */