public function create(AreaModel $area, AreaModel $parentArea = null, SiteModel $site, CountryModel $country, UserAccountModel $creator = null) { global $DB; try { $DB->beginTransaction(); $stat = $DB->prepare("SELECT max(slug) AS c FROM area_information WHERE site_id=:site_id"); $stat->execute(array('site_id' => $site->getId())); $data = $stat->fetch(); $area->setSlug($data['c'] + 1); if ($parentArea) { $area->setParentAreaId($parentArea->getId()); } $stat = $DB->prepare("INSERT INTO area_information (site_id, slug, title,description,country_id,parent_area_id,created_at,approved_at,cache_area_has_parent_generated, is_deleted) " . "VALUES (:site_id, :slug, :title,:description,:country_id,:parent_area_id,:created_at,:approved_at,:cache_area_has_parent_generated, '0') RETURNING id"); $stat->execute(array('site_id' => $site->getId(), 'slug' => $area->getSlug(), 'title' => substr($area->getTitle(), 0, VARCHAR_COLUMN_LENGTH_USED), 'description' => $area->getDescription(), 'country_id' => $country->getId(), 'parent_area_id' => $parentArea ? $parentArea->getId() : null, 'created_at' => \TimeSource::getFormattedForDataBase(), 'approved_at' => \TimeSource::getFormattedForDataBase(), 'cache_area_has_parent_generated' => $parentArea ? '0' : '1')); $data = $stat->fetch(); $area->setId($data['id']); $stat = $DB->prepare("INSERT INTO area_history (area_id, title,description,country_id,parent_area_id,user_account_id , created_at, approved_at, is_new, is_deleted) VALUES " . "(:area_id, :title,:description,:country_id,:parent_area_id,:user_account_id, :created_at,:approved_at,'1','0')"); $stat->execute(array('area_id' => $area->getId(), 'title' => substr($area->getTitle(), 0, VARCHAR_COLUMN_LENGTH_USED), 'description' => $area->getDescription(), 'country_id' => $country->getId(), 'parent_area_id' => $parentArea ? $parentArea->getId() : null, 'user_account_id' => $creator ? $creator->getId() : null, 'created_at' => \TimeSource::getFormattedForDataBase(), 'approved_at' => \TimeSource::getFormattedForDataBase())); $DB->commit(); } catch (Exception $e) { $DB->rollBack(); } }