/**
  * Validates district is in the correct province.  If false, returns province_name (validateDistrict !== true)
  */
 public static function validateDistrict($district_id, $province_id)
 {
     $tableObj = new LocationDistrict();
     $select = $tableObj->select()->from(array('d' => 'location_district'), array())->setIntegrityCheck(false)->join(array('p' => 'location_province'), "d.parent_province_id = p.id", array('id', 'province_name'))->where("d.id = {$district_id}");
     try {
         $row = $tableObj->fetchRow($select);
     } catch (Zend_Exception $e) {
         error_log($e);
     }
     if ($row->id == $province_id) {
         return true;
     } else {
         return $row->province_name;
     }
 }
 /**
  * Insert city if not found and has correct district, otherwise return id.  Return -1 for incorrect district
  */
 public static function insertIfNotFound($cityName, $province_id, $district_id = null)
 {
     if (!$cityName) {
         return false;
     }
     if ($district_id) {
         // verify district is in correct province
         require_once 'models/table/LocationDistrict.php';
         if (LocationDistrict::validateDistrict($district_id, $province_id) !== true) {
             return -1;
         }
     }
     $cityTable = new LocationCity();
     $select = $cityTable->select()->from($cityTable->_name, "id")->where("city_name = '{$cityName}' AND parent_province_id = {$province_id}");
     if ($district_id) {
         $select->where("parent_district_id = {$district_id}");
     }
     $row = $cityTable->fetchRow($select);
     if ($row) {
         return $row->id;
     } else {
         // insert
         $data = array();
         $data['city_name'] = $cityName;
         $data['parent_district_id'] = $district_id;
         $data['parent_province_id'] = $province_id;
         return $cityTable->insert($data);
     }
 }