diff --git a/ground/classes/Model.php b/ground/classes/Model.php
index 69980f3..56683e7 100644
--- a/ground/classes/Model.php
+++ b/ground/classes/Model.php
@@ -165,7 +165,7 @@ abstract class Model
$ready[$row[$this->_primaryKey_]] = isset($params['asArray'])&&$params['asArray'] ? $row : new $calledClass($row);
}
- return $ready;
+ return (isset($params['limit'])&&$params['limit']==1) ? array_shift($ready) : $ready;
}
/**
diff --git a/ground/controllers/IndexController.php b/ground/controllers/IndexController.php
index d6799c2..1d2b9c9 100644
--- a/ground/controllers/IndexController.php
+++ b/ground/controllers/IndexController.php
@@ -45,7 +45,12 @@ class IndexController extends Controller
if (App::$user && App::$user->id)
{
$routes = Route::model()->getByAuthor(App::$user->id);
- }
+ self::addVar('user', App::$user->id);
+ }
+ else
+ {
+ self::addVar('user', '0');
+ }
self::addVar('isAdmin', (int)(App::$user && App::$user->isAdmin == 1) );
@@ -152,4 +157,10 @@ class IndexController extends Controller
print($xml->asXML());
}
+ static function actionTest()
+ {
+
+ var_dump( Favorite::model()->getAllMy() );
+ }
+
}
diff --git a/ground/controllers/JsonController.php b/ground/controllers/JsonController.php
index 3a90d73..8766489 100644
--- a/ground/controllers/JsonController.php
+++ b/ground/controllers/JsonController.php
@@ -67,6 +67,7 @@ class JsonController extends Controller
$point->categoryIcon = $categories[$point->categoryId]['icon'];
$point->categoryName = $categories[$point->categoryId]['name'];
$point->photosCount = $photosCount;
+ $point->inFavorites = Favorite::model()->checkIsMy($id);
self::renderPartial('json.php', $point->getValues());
} else
@@ -306,4 +307,15 @@ class JsonController extends Controller
self::renderPartial('json.php', $coords);
}
+ static function actionAddRemoveFavorites()
+ {
+ $id = (int) App::getParam('id');
+ if (!$id || !App::$user)
+ {
+ App::error404();
+ }
+
+ self::renderPartial('json.php', boolval(Favorite::addRemove($id)));
+ }
+
}
diff --git a/ground/models/Favorite.php b/ground/models/Favorite.php
new file mode 100644
index 0000000..49ea852
--- /dev/null
+++ b/ground/models/Favorite.php
@@ -0,0 +1,49 @@
+_tableName_ = 'favorites';
+ parent::__construct($fromArray);
+ $this->setRelation('user', 'userId', 'User', 'id', self::TO_ONE);
+ $this->setRelation('point', 'pointId', 'Point', 'id', self::TO_ONE);
+ }
+
+ static function model()
+ {
+ return new self();
+ }
+
+ public static function addRemove($pointId)
+ {
+ if (!App::$user || !App::$user->id || !$pointId)
+ return false;
+
+ $res = self::model()->getAll(array('where' => '`userId` = '.(int)App::$user->id.' AND `pointId` = '.(int)$pointId, 'limit'=>1));
+
+ if ($res)
+ {
+ return boolval(Favorite::model()->delete($res->id));
+ } else {
+ return Favorite::model()->add(array('userId'=>App::$user->id, 'pointId'=>$pointId));
+ }
+ }
+
+ public function getAllMy()
+ {
+ if (!App::$user || !App::$user->id)
+ return false;
+
+ return $this->getAll(array('where' => '`userId` = '.(int)App::$user->id));
+ }
+
+ public function checkIsMy($pointId)
+ {
+ if (!App::$user || !App::$user->id || !$pointId)
+ return false;
+
+ return boolval($this->getAll(array('where' => '`userId` = '.(int)App::$user->id.' AND `pointId` = '.(int)$pointId)));
+ }
+}
+
diff --git a/ground/views/layout.php b/ground/views/layout.php
index e3460c5..d8f8a2c 100644
--- a/ground/views/layout.php
+++ b/ground/views/layout.php
@@ -46,36 +46,6 @@
= isset($content) && !empty($content) ? $content : 'No content =(' ?>
= self::renderPartial('modals/about.php', array(), true) ?>
= self::renderPartial('modals/howToUse.php', array(), true) ?>
-
-
-
-
-
-
+ = self::renderPartial('metrika.php', array(), true) ?>