/** * Query * * @param array $args * @return Doctrine_Query $q */ protected function air_query($args = array()) { $q = Doctrine_Query::create()->from('Tank t'); $q->leftJoin('t.User u'); $q->leftJoin('t.TankOrg to'); $q->leftJoin('to.Organization o'); $q->leftJoin('t.TankActivity ta'); $q->leftJoin('ta.Project p'); $q->leftJoin('ta.ActivityMaster m'); if (isset($args['type'])) { air2_query_in($q, $args['type'], 't.tank_type'); } if (isset($args['status'])) { air2_query_in($q, $args['status'], 't.tank_status'); } // add flattened and return Tank::add_counts($q, 't'); TankActivity::add_event_meta($q, 'ta'); $q->addSelect('u.user_uuid as user_uuid'); $q->addSelect('o.org_uuid as org_uuid'); //TODO: not really flat $q->addSelect('p.prj_uuid as prj_uuid'); //TODO: not really flat return $q; }
/** * Query * * @param array $args * @return Doctrine_Query $q */ protected function air_query($args = array()) { $q = Doctrine_Query::create()->from('Tank t'); $q->where('(t.tank_status = ?) or (t.tank_status = ?)', array(Tank::$STATUS_TSRC_CONFLICTS, Tank::$STATUS_TSRC_ERRORS)); $q->leftJoin('t.User u'); $q->leftJoin('t.TankOrg to'); $q->leftJoin('to.Organization o'); $defs = null; Tank::add_counts($q, 't', $defs, array(TankSource::$STATUS_CONFLICT, '*')); return $q; }
/** * Cache any manual-entry mappings found in the csv header, and make sure * we have the correct ones. * * @param Tank $tank * @param array $headers * @param array $ini */ protected function init_manual_entry($tank, $headers, $ini) { // create validator $this->tank_me_validator = new ManualEntryValidator($headers, $ini); if ($this->tank_me_validator->validate_headers() === true) { //NOTE: for now, disable any additional activities /*$actv_rec = false; $actv_prj_id = false; $actv_dtim = air2_date(); //default // make sure we have a "Manual Submission" activity foreach ($tank->TankActivity as $tact) { $actv_dtim = $tact->tact_dtim; if ($tact->tact_prj_id) $actv_prj_id = $tact->tact_prj_id; if ($tact->tact_actm_id == ActivityMaster::MANUAL_SUBM) { $actv_rec = $tact; break; } } // create if DNE if (!$actv_rec) { // get a prj_id from somewhere! if (!$actv_prj_id) { if (count($tank->TankOrg) > 0) { $actv_prj_id = $tank->TankOrg[0]->org_default_prj_id; } else { $actv_prj_id = 1; //sys default } } $actv_rec = new TankActivity(); $actv_rec->tact_tank_id = $tank->tank_id; $actv_rec->tact_type = TankActivity::$TYPE_SOURCE; $actv_rec->tact_actm_id = ActivityMaster::MANUAL_SUBM; $actv_rec->tact_prj_id = $actv_prj_id; $actv_rec->tact_dtim = $actv_dtim; $actv_rec->tact_desc = "Uploaded Submissions"; $actv_rec->tact_xid = $tank->tank_id; $actv_rec->tact_ref_type = SrcActivity::$REF_TYPE_TANK; $actv_rec->save(); }*/ // need the inq_id and ques_ids $tank->refreshRelated('TankActivity'); $actv = count($tank->TankActivity) ? $tank->TankActivity[0] : null; $prj = $actv ? $actv->Project : null; if (!$prj) { throw new Exception("No activity or project set for tank record!"); } $inq = $prj->get_manual_entry_inquiry(); $this->tank_me_inq_id = $inq->inq_id; foreach ($inq->Question as $ques) { $this->tank_me_ques_ids[] = $ques->ques_id; } } }
<?php function load($name) { require_once $name . '.php'; } spl_autoload_register('load'); $thomas = new Tank(); $thomas->setGun(new UberPotatoGun()); echo "You have " . $thomas->getAmmo() . " ammo remaining\n"; $thomas->shoot(); echo "You have " . $thomas->getAmmo() . " ammo remaining\n"; $thomas->selfDestruct(); $thomas->shoot();
/** * Update * * @param Tank $rec * @param array $data */ protected function air_update($rec, $data) { $allow_update = array(Tank::$STATUS_CSV_NEW); if (!in_array($rec->tank_status, $allow_update)) { throw new Rframe_Exception(Rframe::BAD_METHOD, 'Invalid tank status for update'); } // meta delimiters if (isset($data['csv_delim'])) { $rec->set_meta_field('csv_delim', $data['csv_delim']); } if (isset($data['csv_encl'])) { $rec->set_meta_field('csv_encl', $data['csv_encl']); } // new file if (isset($data['csvfile'])) { $file = $data['csvfile']; if ($file['name'] != $rec->tank_name) { $n = $rec->tank_name; $msg = "Error: you must upload the original file '{$n}', or start a new csv import."; throw new Rframe_Exception(Rframe::BAD_DATA, $msg); } // change files $rec->copy_file($file['tmp_name']); $size_kb = number_format($file['size'] / 1024, 1); $rec->set_meta_field('file_size', "{$size_kb} KB"); // setup submit errors and valids $rec->set_meta_field('submit_message', null); $rec->set_meta_field('submit_success', null); $rec->set_meta_field('valid_file', true); // use a CSVImporter to validate headers $imp = new CSVImporter($rec); $hdr_msg = $imp->validate_headers(); $hdr_valid = $hdr_msg === true ? true : false; $rec->set_meta_field('valid_header', $hdr_valid); } // Org if (isset($data['org_uuid'])) { $org = AIR2_Record::find('Organization', $data['org_uuid']); if (!$org) { throw new Rframe_Exception(Rframe::BAD_DATA, 'Invalid org_uuid'); } $rec->TankOrg[0]->to_org_id = $org->org_id; } // Activity $this->process_activity($rec, $data); }