<?php
-/* This file is part of Syj, Copyright (c) 2010 Arnaud Renevier,
+/* This file is part of Syj, Copyright (c) 2010-2011 Arnaud Renevier,
and is published under the AGPL license. */
class Syj_Model_PathMapper
$db = $this->getDbTable()->getAdapter();
$expr = $db->quoteInto('seq_attained_value(?)', array('paths_id_seq', (int)$id));
$select = $db->select()->from(new Zend_Db_Expr($expr));
- print $select->assemble();
$row = $db->fetchRow($select);
return $row['t'];
}
return $this->_fetchItem($select, $path);
}
+ public function findByTitle($title, Syj_Model_Path $path) {
+ $select = $this->_select();
+ $select->where('title = ?', (string)$title);
+ return $this->_fetchItem($select, $path);
+ }
+
public function findByUrl($url, Syj_Model_Path $path) {
$select = $this->_select();
$select->where('id = ?', (int)$url)->orWhere('urlcomp = ?', (string)$url);
return $this->_fetchItem($select, $path);
}
- public function fetchAll() {
+ public function fetchByCreator(Syj_Model_User $user) {
$select = $this->_select();
+ $select->where('creator = ?', (int)$user->id)->order('id');
+ return $this->fetchAll($select);
+ }
+ public function fetchAll(Zend_Db_Table_Select $select) {
+ if (!isset($select)) {
+ $select = $this->_select();
+ }
+
+ $table = $this->getDbTable();
$resultSet = $table->fetchAll($select);
$entries = array();
public function save (Syj_Model_Path $path) {
$data = array(
'geom'=> (string)$path->geom,
- 'owner'=> $path->owner->id,
- 'title'=> $path->title
+ 'creator'=> $path->creator? $path->creator->id: null,
+ 'title'=> $path->title,
+ 'creator_ip'=> $path->creatorIp
);
if (null === ($id = $path->getId())) {
$path->id = $this->getDbTable()->insert($data);
}
}
+ public function delete (Syj_Model_Path $path) {
+ $this->getDbTable()->delete(array('id = ?' => $path->getId()));
+ }
+
protected function _itemFromRow(Syj_Model_Path $item, Zend_Db_Table_Row $row) {
$decoder = new gisconverter\WKT();
$geom = $decoder->geomFromText($row->wkt);
$item->setId($row->id)->
setGeom($geom)->
setTitle($row->title)->
- setUrlComp($row->urlcomp);
+ setUrlComp($row->urlcomp)->
+ setCreatorIp($row->creator_ip);
- if (!$item->getOwner()) {
+ if (!$item->getCreator()) {
$user = new Syj_Model_User();
$userMapper = new Syj_Model_UserMapper();
- if ($userMapper->find($row->owner, $user)) {
- $item->setOwner($user);
+ if ($userMapper->find($row->creator, $user)) {
+ $item->setCreator($user);
}
}
return $item;
protected function _select() {
$table = $this->getDbTable();
$select = $table->select();
- $select->from($table, array('id', 'ST_AsText(geom) AS wkt', 'owner', 'title', 'urlcomp'));
+ $select->from($table, array('id', 'ST_AsText(geom) AS wkt', 'creator', 'title', 'urlcomp', 'creator_ip'));
return $select;
}