/**
  * 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;
         }
     }
 }
Example #4
0
<?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);
 }