diff --git a/application/modules/backend/views/scripts/store/index.phtml b/application/modules/backend/views/scripts/store/index.phtml
index 275010b54..6dab1c157 100644
--- a/application/modules/backend/views/scripts/store/index.phtml
+++ b/application/modules/backend/views/scripts/store/index.phtml
@@ -1,639 +1,639 @@
.
**/
?>
getCurrentMessages() as $message) : ?>
escape($message); ?>
diff --git a/application/modules/default/controllers/FundingController.php b/application/modules/default/controllers/FundingController.php
new file mode 100644
index 000000000..6e7bc80c6
--- /dev/null
+++ b/application/modules/default/controllers/FundingController.php
@@ -0,0 +1,48 @@
+.
+ **/
+class FundingController extends Local_Controller_Action_DomainSwitch
+{
+
+ /**
+ * Zend_Controller_Request_Abstract object wrapping the request environment
+ *
+ * @var Zend_Controller_Request_Http
+ */
+ protected $_request = null;
+ /** @var int */
+ /** @var Zend_Auth */
+ protected $_auth;
+
+ public function init()
+ {
+ parent::init();
+ $this->_auth = Zend_Auth::getInstance();
+ }
+
+ public function indexAction()
+ {
+ $this->view->authMember = $this->_authMember;
+ $this->view->headTitle('Funding - ' . $this->getHeadTitle(), 'SET');
+ }
+
+}
diff --git a/application/modules/default/models/Info.php b/application/modules/default/models/Info.php
index ac4e88a37..466835d91 100644
--- a/application/modules/default/models/Info.php
+++ b/application/modules/default/models/Info.php
@@ -1,1818 +1,1840 @@
.
**/
class Default_Model_Info
{
const WALLPAPERCATEGORYID = '295';
const TAG_ISORIGINAL = 'original-product';
public function getLast200ImgsProductsForAllStores($limit = 200)
{
/** @var Zend_Cache_Core $cache */
$cache = Zend_Registry::get('cache');
$cacheName = __FUNCTION__ . md5('getLast200ImgsProductsForAllStores' . $limit);
if ($resultSet = $cache->load($cacheName)) {
return $resultSet;
} else {
$activeCategories = $this->getActiveCategoriesForAllStores();
$sql = '
SELECT
`image_small`
,`project_id`
,`title`
FROM
`project`
WHERE
`project`.`image_small` IS NOT NULL
AND `project`.`status` = 100
AND `project`.`project_category_id` IN (' . implode(',', $activeCategories) . ')
ORDER BY ifnull(`project`.`changed_at`, `project`.`created_at`) DESC
';
if (isset($limit)) {
$sql .= ' limit ' . (int)$limit;
}
$resultSet = Zend_Db_Table::getDefaultAdapter()->fetchAll($sql);
if (count($resultSet) > 0) {
$cache->save($resultSet, $cacheName, array(), 14400);
return $resultSet;
} else {
return array();
}
}
}
public function getActiveCategoriesForAllStores($limit = null)
{
$sql = '
SELECT DISTINCT
`config_store_category`.`project_category_id`
FROM
`config_store`
JOIN
`config_store_category` ON `config_store`.`store_id` = `config_store_category`.`store_id`
JOIN
`project_category` ON `config_store_category`.`project_category_id` = `project_category`.`project_category_id`
WHERE `project_category`.`is_active` = 1
ORDER BY `config_store_category`.`order`;
';
if (isset($limit)) {
$sql .= ' limit ' . (int)$limit;
}
$resultSet = Zend_Db_Table::getDefaultAdapter()->fetchAll($sql);
if (count($resultSet) > 0) {
$values = array_map(function ($row) {
return $row['project_category_id'];
}, $resultSet);
return $values;
} else {
return array();
}
}
public function getActiveStoresForCrossDomainLogin($limit = null)
{
$sql = '
SELECT DISTINCT
`config_store`.`host`
FROM
`config_store`
WHERE `config_store`.`cross_domain_login` = 1
ORDER BY `config_store`.`order`;
';
if (isset($limit)) {
$sql .= ' limit ' . (int)$limit;
}
$resultSet = Zend_Db_Table::getDefaultAdapter()->fetchAll($sql);
if (count($resultSet) > 0) {
$values = array_map(function ($row) {
return $row['host'];
}, $resultSet);
return $values;
} else {
return array();
}
}
public function countTotalActiveMembers()
{
$cacheName = __FUNCTION__ . md5('countTotalActiveMembers');
$cache = Zend_Registry::get('cache');
$result = $cache->load($cacheName);
if ($result) {
return (int)$result['count_active_members'];
}
$sql = "SELECT count(1) AS `count_active_members` FROM (
SELECT count(1) AS `count_active_projects` FROM `project` `p`
WHERE `p`.`status` = 100
AND `p`.`type_id` = 1
GROUP BY `p`.`member_id`
) AS `A`;";
$result = $resultSet = Zend_Db_Table::getDefaultAdapter()->fetchRow($sql);
$cache->save($result, $cacheName);
return (int)$result['count_active_members'];
}
/**
* if category id not set the latest comments for all categories on the current host wil be returned.
*
* @param int $limit
* @param int|null $project_category_id
* @param array $tags
*
* @return array
* @throws Zend_Cache_Exception
* @throws Zend_Exception
*/
public function getLatestComments($limit = 5, $project_category_id = null, $tags = null)
{
/** @var Zend_Cache_Core $cache */
$cache = Zend_Registry::get('cache');
$cacheNameTags = is_array($tags) ? implode('_', $tags) : '';
$cacheName =
__FUNCTION__ . '_new_' . md5(Zend_Registry::get('store_host') . (int)$limit . (int)$project_category_id . $cacheNameTags);
if (($latestComments = $cache->load($cacheName))) {
return $latestComments;
}
if (empty($project_category_id)) {
$activeCategories = $this->getActiveCategoriesForCurrentHost();
} else {
$activeCategories = $this->getActiveCategoriesForCatId($project_category_id);
}
if (count($activeCategories) == 0) {
return array();
}
$sql = '
SELECT
`comment_id`
,`comment_text`
,`member`.`member_id`
,`member`.`profile_image_url`
,`comment_created_at`
,`member`.`username`
,`comment_target_id`
,`title`
,`stat_projects`.`project_id`
,`cat_title` AS `catTitle`
FROM `comments`
STRAIGHT_JOIN `member` ON `comments`.`comment_member_id` = `member`.`member_id`
INNER JOIN `stat_projects` ON `comments`.`comment_target_id` = `stat_projects`.`project_id` ';
/*
if (isset($tags)) {
$sql .= ' JOIN (SELECT DISTINCT project_id FROM stat_project_tagids WHERE tag_id in (' . implode(',', $tags)
. ')) AS store_tags ON stat_projects.project_id = store_tags.project_id';
}
*/
$sql .= ' WHERE comments.comment_active = 1
AND stat_projects.status = 100
AND stat_projects.type_id in (1,3)
AND comments.comment_type = 0
AND stat_projects.project_category_id IN (' . implode(',', $activeCategories) . ')
';
//Store Tag Filter
if (isset($tags)) {
$tagList = $tags;
//build where statement für projects
$sql .= " AND (";
if(!is_array($tagList)) {
$tagList = array($tagList);
}
foreach($tagList as $item) {
#and
$sql .= ' find_in_set('.$item.', tag_ids) AND ';
}
$sql .= ' 1=1)';;
}
$sql .= ' ORDER BY comments.comment_created_at DESC ';
if (isset($limit)) {
$sql .= ' limit ' . (int)$limit;
}
$resultSet = Zend_Db_Table::getDefaultAdapter()->fetchAll($sql);
if (count($resultSet) > 0) {
$cache->save($resultSet, $cacheName, array(), 300);
return $resultSet;
} else {
$cache->save(array(), $cacheName, array(), 300);
return array();
}
}
/**
* @param int $omitCategoryId
*
* @return array
* @TODO: check all occurrences of this function
*/
public function getActiveCategoriesForCurrentHost($omitCategoryId = null)
{
$currentHostMainCategories = Zend_Registry::get('store_category_list');
$modelCategory = new Default_Model_DbTable_ProjectCategory();
$activeChildren = $modelCategory->fetchChildIds($currentHostMainCategories);
$activeCategories = array_unique(array_merge($currentHostMainCategories, $activeChildren));
if (empty($omitCategoryId)) {
return $activeCategories;
}
$omitChildren = $modelCategory->fetchChildIds($omitCategoryId);
return array_diff($activeCategories, $omitChildren);
}
/**
* @param int $project_category_id
* @param int|null $omitCategoryId
*
* @return array
*/
public function getActiveCategoriesForCatId($project_category_id, $omitCategoryId = null)
{
$modelCategory = new Default_Model_DbTable_ProjectCategory();
$activeChildren = $modelCategory->fetchChildIds($project_category_id);
$activeCategories = array_unique(array_merge(array($project_category_id), $activeChildren));
if (empty($omitCategoryId)) {
return $activeCategories;
}
$omitChildren = $modelCategory->fetchChildIds($omitCategoryId);
return array_diff($activeCategories, $omitChildren);
}
/**
* if category id not set the most downloaded products for all categories on the current host wil be returned.
*
* @param int $limit
* @param null $project_category_id
* @param array $tags
*
* @return array|false|mixed
* @throws Zend_Cache_Exception
* @throws Zend_Exception
*/
public function getMostDownloaded($limit = 100, $project_category_id = null, $tags = null)
{
/** @var Zend_Cache_Core $cache */
$cache = Zend_Registry::get('cache');
$cacheNameTags = is_array($tags) ? implode('_', $tags) : '';
$cacheName =
__FUNCTION__ . '_new_' . md5(Zend_Registry::get('store_host') . (int)$limit . (int)$project_category_id . $cacheNameTags);
if (($mostDownloaded = $cache->load($cacheName))) {
return $mostDownloaded;
}
if (empty($project_category_id)) {
$activeCategories = $this->getActiveCategoriesForCurrentHost();
} else {
$activeCategories = $this->getActiveCategoriesForCatId($project_category_id);
}
if (count($activeCategories) == 0) {
return array();
}
$sql = '
SELECT
`p`.`project_id`
,`p`.`title`
,`p`.`image_small`
,`s`.`amount`
,`s`.`category_title`
,`p`.`package_types`
,`p`.`tag_ids`
FROM `stat_downloads_quarter_year` `s`
INNER JOIN `stat_projects` `p` ON `s`.`project_id` = `p`.`project_id`';
/*
if (isset($tags)) {
$sql .= ' JOIN (SELECT DISTINCT project_id FROM stat_project_tagids WHERE tag_id in (' . implode(',', $tags)
. ')) AS store_tags ON p.project_id = store_tags.project_id';
}
*
*/
$sql .= ' WHERE
p.status=100
and
p.project_category_id IN (' . implode(',', $activeCategories) . ')
';
//Store Tag Filter
if (isset($tags)) {
$tagList = $tags;
//build where statement für projects
$sql .= " AND (";
if(!is_array($tagList)) {
$tagList = array($tagList);
}
foreach($tagList as $item) {
#and
$sql .= ' find_in_set('.$item.', tag_ids) AND ';
}
$sql .= ' 1=1)';;
}
$sql .= ' ORDER BY s.amount DESC ';
if (isset($limit)) {
$sql .= ' limit ' . (int)$limit;
}
$resultSet = Zend_Db_Table::getDefaultAdapter()->fetchAll($sql);
if (count($resultSet) > 0) {
$cache->save($resultSet, $cacheName, array(), 300);
return $resultSet;
} else {
$cache->save($resultSet, $cacheName, array(), 300);
return array();
}
}
/**
* @param int $limit
* @param int|null $project_category_id
* @param array|null $tags
* @param string|null $tag_isoriginal
*
* @return array|false
* @throws Zend_Cache_Exception
* @throws Zend_Exception
*/
public function getLastProductsForHostStores($limit = 10, $project_category_id = null, $tags = null, $tag_isoriginal = null)
{
$catids = "";
if ($project_category_id) {
$catids = str_replace(',', '', (string)$project_category_id);
}
/** @var Zend_Cache_Core $cache */
$cache = Zend_Registry::get('cache');
$cacheNameTags = is_array($tags) ? implode('_', $tags) : '';
$cacheName =
__FUNCTION__ . '_' . md5(Zend_Registry::get('store_host') . (int)$limit . $catids . $cacheNameTags . $tag_isoriginal);
if (($resultSet = $cache->load($cacheName))) {
return $resultSet;
}
$activeCategories = array();
if (empty($project_category_id)) {
$activeCategories = $this->getActiveCategoriesForCurrentHost();
} else {
$cats = explode(",", $project_category_id);
if (count($cats) == 1) {
$activeCategories = $this->getActiveCategoriesForCatId($project_category_id);
} else {
foreach ($cats as $cat) {
$tmp = $this->getActiveCategoriesForCatId($cat);
$activeCategories = array_merge($tmp, $activeCategories);
}
}
}
if (count($activeCategories) == 0) {
return array();
}
$sql = '
SELECT
`p`.*
FROM
`stat_projects` AS `p`
';
/*
if (isset($tags)) {
$sql .= ' JOIN (SELECT DISTINCT project_id FROM stat_project_tagids WHERE tag_id in (' . implode(',', $tags)
. ')) AS store_tags ON p.project_id = store_tags.project_id ';
}
*
*/
$sql .= '
WHERE
`p`.`status` = 100
AND `p`.`project_category_id` IN (' . implode(',', $activeCategories) . ')
AND `p`.`amount_reports` IS NULL';
//Store Tag Filter
if (isset($tags)) {
$tagList = $tags;
//build where statement für projects
$sql .= " AND (";
if(!is_array($tagList)) {
$tagList = array($tagList);
}
foreach($tagList as $item) {
#and
$sql .= ' find_in_set('.$item.', tag_ids) AND ';
}
$sql .= ' 1=1)';;
}
if (isset($tag_isoriginal)) {
if ($tag_isoriginal) {
$sql .= ' AND find_in_set("' . self::TAG_ISORIGINAL . '", tags)';
} else {
$sql .= ' AND NOT find_in_set("' . self::TAG_ISORIGINAL . '", tags)';
}
}
//$sql .= ' ORDER BY IFNULL(p.changed_at,p.created_at) DESC';
$sql .= ' ORDER BY p.major_updated_at DESC';
if (isset($limit)) {
$sql .= ' limit ' . (int)$limit;
}
$resultSet = Zend_Db_Table::getDefaultAdapter()->fetchAll($sql);
$cache->save($resultSet, $cacheName, array(), 300);
if (count($resultSet) > 0) {
return $resultSet;
}
return array();
}
/**
* @param int $limit
* @param string|null $project_category_id
* @param array|null $tags
* @param string|null $tag_isoriginal
* @param int $offset
*
* @return string
* @throws Zend_Cache_Exception
* @throws Zend_Exception
*/
public function getJsonLastProductsForHostStores(
$limit = 10,
$project_category_id = null,
$tags = null,
$tag_isoriginal = null,
$offset = 0
) {
$store_id = null;
if (empty($store_id)) {
$store_config = Zend_Registry::get('store_config');
$store_id = $store_config->store_id;
$store_tags = Zend_Registry::isRegistered('config_store_tags') ? Zend_Registry::get('config_store_tags') : array();
if(empty($tags)) {
$tags = $store_tags;
} else {
$tags = array_merge($tags, $store_tags);
}
}
$cat_ids = "";
if ($project_category_id) {
$cat_ids = str_replace(',', '_', (string)$project_category_id);
}
/** @var Zend_Cache_Core $cache */
$cache = Zend_Registry::get('cache');
$cacheNameTags = is_array($tags) ? implode('_', $tags) : '';
$cacheName =
__FUNCTION__ . '_' . md5(Zend_Registry::get('store_host') . (int)$limit . $cat_ids . $cacheNameTags . $tag_isoriginal
. $offset);
if (($resultSet = $cache->load($cacheName))) {
return $resultSet;
}
$activeCategories = array();
if (empty($project_category_id)) {
$activeCategories = $this->getActiveCategoriesForCurrentHost();
} else {
$cats = explode(",", $project_category_id);
if (count($cats) == 1) {
$activeCategories = $this->getActiveCategoriesForCatId($project_category_id);
} else {
foreach ($cats as $cat) {
$tmp = $this->getActiveCategoriesForCatId($cat);
$activeCategories = array_merge($tmp, $activeCategories);
}
}
}
if (count($activeCategories) == 0) {
return array();
}
$sql = '
SELECT
`project_id`,
`member_id`,
`image_small`,
`title`,
`version`,
`cat_title`,
`count_comments`,
`package_names`,
`tag_ids`,
`laplace_score`,
`count_likes`,
`count_dislikes`,
`changed_at`,
`created_at`
FROM
`stat_projects` AS `p`';
/*
if (isset($tags)) {
$sql .= ' JOIN (SELECT DISTINCT project_id FROM stat_project_tagids WHERE tag_id in (' . implode(',', $tags)
. ')) AS store_tags ON p.project_id = store_tags.project_id';
}
*
*/
$sql .= '
WHERE
`p`.`status` = 100
AND `p`.`project_category_id` IN (' . implode(',', $activeCategories) . ')
AND `p`.`amount_reports` IS NULL';
//Store Tag Filter
if (isset($tags)) {
$tagList = $tags;
//build where statement für projects
$sql .= " AND (";
if(!is_array($tagList)) {
$tagList = array($tagList);
}
foreach($tagList as $item) {
#and
$sql .= ' find_in_set('.$item.', tag_ids) AND ';
}
$sql .= ' 1=1)';;
}
if (isset($tag_isoriginal)) {
if ($tag_isoriginal) {
$sql .= ' AND find_in_set("' . self::TAG_ISORIGINAL . '", tags)';
} else {
$sql .= ' AND NOT find_in_set("' . self::TAG_ISORIGINAL . '", tags)';
}
}
$sql .= ' ORDER BY IFNULL(p.changed_at,p.created_at) DESC';
if (isset($limit)) {
$sql .= ' limit ' . (int)$limit;
}
if (isset($offset)) {
$sql .= ' offset ' . (int)$offset;
}
$resultSet = Zend_Db_Table::getDefaultAdapter()->fetchAll($sql);
$imagehelper = new Default_View_Helper_Image();
foreach ($resultSet as &$value) {
$value['image_small'] = $imagehelper->Image($value['image_small'], array('width' => 200, 'height' => 200));
}
if (count($resultSet) > 0) {
$result = Zend_Json::encode($resultSet);
$cache->save($result, $cacheName, array(), 300);
return $result;
}
return Zend_Json::encode('');
}
/**
* @param int $limit
* @param string|null $project_category_id
* @param array|null $tags
*
* @return array|false
* @throws Zend_Cache_Exception
* @throws Zend_Exception
*/
public function getTopProductsForHostStores($limit = 10, $project_category_id = null, $tags = null)
{
$catids = "";
if ($project_category_id) {
$catids = str_replace(',', '', (string)$project_category_id);
}
/** @var Zend_Cache_Core $cache */
$cache = Zend_Registry::get('cache');
$cacheNameTags = is_array($tags) ? implode('_', $tags) : '';
$cacheName = __FUNCTION__ . '_' . md5(Zend_Registry::get('store_host') . (int)$limit . $catids . $cacheNameTags);
if (($resultSet = $cache->load($cacheName))) {
return $resultSet;
}
$activeCategories = array();
if (empty($project_category_id)) {
$activeCategories = $this->getActiveCategoriesForCurrentHost();
} else {
$cats = explode(",", $project_category_id);
if (count($cats) == 1) {
$activeCategories = $this->getActiveCategoriesForCatId($project_category_id);
} else {
foreach ($cats as $cat) {
$tmp = $this->getActiveCategoriesForCatId($cat);
$activeCategories = array_merge($tmp, $activeCategories);
}
}
}
if (count($activeCategories) == 0) {
return array();
}
$sql = '
SELECT
`p`.*
FROM
`stat_projects` AS `p`';
/*
if (isset($tags)) {
$sql .= ' JOIN (SELECT DISTINCT project_id FROM stat_project_tagids WHERE tag_id in (' . implode(',', $tags)
. ')) AS store_tags ON p.project_id = store_tags.project_id';
}
*
*/
$sql .= '
WHERE
`p`.`status` = 100
AND `p`.`project_category_id` IN (' . implode(',', $activeCategories) . ')
AND `p`.`amount_reports` IS NULL';
//Store Tag Filter
if (isset($tags)) {
$tagList = $tags;
//build where statement für projects
$sql .= " AND (";
if(!is_array($tagList)) {
$tagList = array($tagList);
}
foreach($tagList as $item) {
#and
$sql .= ' find_in_set('.$item.', tag_ids) AND ';
}
$sql .= ' 1=1)';;
}
$sql .= ' ORDER BY (round(((count_likes + 6) / ((count_likes + count_dislikes) + 12)),2) * 100) DESC, created_at DESC
';
if (isset($limit)) {
$sql .= ' limit ' . (int)$limit;
}
$resultSet = Zend_Db_Table::getDefaultAdapter()->fetchAll($sql);
$cache->save($resultSet, $cacheName, array(), 300);
if (count($resultSet) > 0) {
return $resultSet;
}
return array();
}
public function getRandProduct()
{
$pid = $this->getRandomStoreProjectIds();
$project_id = $pid['project_id'];
$sql="SELECT
p.project_id
,p.title
,p.description
,p.image_small
,p.count_comments
,p.changed_at
,pr.likes as count_likes
,pr.dislikes as count_dislikes
,IFNULL(pr.score_with_pling, 500) AS laplace_score
,m.profile_image_url
,m.username
FROM
project as p
JOIN member AS m ON m.member_id = p.member_id
LEFT join stat_rating_project AS pr ON p.project_id = pr.project_id
WHERE
p.project_id = :project_id";
/*$sql = '
SELECT
`p`.*
,laplace_score(`p`.`count_likes`, `p`.`count_dislikes`) AS `laplace_score`
,`m`.`profile_image_url`
,`m`.`username`
FROM
`project` AS `p`
JOIN
`member` AS `m` ON `m`.`member_id` = `p`.`member_id`
WHERE
`p`.`project_id` = :project_id
';*/
$resultSet = Zend_Db_Table::getDefaultAdapter()->fetchRow($sql, array('project_id' => $project_id));
return $resultSet;
}
public function getRandPlingedProduct()
{
$pid = $this->getRandomPlingedProjectIds();
$project_id = $pid['project_id'];
$sql = "SELECT
p.project_id
,p.title
,p.description
,p.image_small
,p.count_comments
,p.changed_at
,pr.likes as count_likes
,pr.dislikes as count_dislikes
,IFNULL(pr.score_with_pling, 500) AS laplace_score
,m.profile_image_url
,m.username
,(select count(1) from project_plings pp where pp.project_id = p.project_id and pp.is_deleted = 0) as sum_plings
FROM
project as p
JOIN member AS m ON m.member_id = p.member_id
LEFT join stat_rating_project AS pr ON p.project_id = pr.project_id
WHERE
p.project_id = :project_id";
/*$sql = '
SELECT
`p`.*
,laplace_score(`p`.`count_likes`, `p`.`count_dislikes`) AS `laplace_score`
,`m`.`profile_image_url`
,`m`.`username`
,(select count(1) from project_plings pp where pp.project_id = p.project_id and pp.is_deleted = 0) as sum_plings
FROM
`project` AS `p`
JOIN
`member` AS `m` ON `m`.`member_id` = `p`.`member_id`
WHERE
`p`.`project_id` = :project_id
';*/
$resultSet = Zend_Db_Table::getDefaultAdapter()->fetchRow($sql, array('project_id' => $project_id));
return $resultSet;
/*$resultSet = Zend_Db_Table::getDefaultAdapter()->fetchAll($sql, array('project_id' => $project_id));
if (count($resultSet) > 0) {
return new Zend_Paginator(new Zend_Paginator_Adapter_Array($resultSet));
}
return new Zend_Paginator(new Zend_Paginator_Adapter_Array(array()));*/
}
public function getRandFeaturedProduct()
{
$pid = $this->getRandomFeaturedProjectIds();
$project_id = $pid['project_id'];
$sql="SELECT
p.project_id
,p.title
,p.description
,p.image_small
,p.count_comments
,p.changed_at
,pr.likes as count_likes
,pr.dislikes as count_dislikes
,IFNULL(pr.score_with_pling, 500) AS laplace_score
,m.profile_image_url
,m.username
FROM
project as p
JOIN member AS m ON m.member_id = p.member_id
LEFT join stat_rating_project AS pr ON p.project_id = pr.project_id
WHERE
p.project_id = :project_id";
/*$sql = '
SELECT
`p`.project_id
,IFNULL(`pr`.`score_with_pling`, 500) AS `laplace_score`
,`m`.`profile_image_url`
,`m`.`username`
FROM
`project` AS `p`
JOIN
`member` AS `m` ON `m`.`member_id` = `p`.`member_id`
LEFT join `stat_rating_project` AS `pr` ON `p`.`project_id` = `pr`.`project_id`
WHERE
`p`.`project_id` = :project_id
';*/
$resultSet = Zend_Db_Table::getDefaultAdapter()->fetchRow($sql, array('project_id' => $project_id));
return $resultSet;
}
public function getRandomStoreProjectIds()
{
/** @var Zend_Cache_Core $cache */
$cache = Zend_Registry::get('cache');
$cacheName = __FUNCTION__ . '_' . md5(Zend_Registry::get('store_host'));
$resultSet = $cache->load($cacheName);
if (false == $resultSet) {
$activeCategories = $this->getActiveCategoriesForCurrentHost();
if (count($activeCategories) == 0) {
return array();
}
$sql = '
SELECT
`p`.`project_id`
FROM
`project` AS `p`
WHERE
`p`.`status` = 100
AND `p`.`type_id` = 1
AND `p`.`project_category_id` IN (' . implode(',', $activeCategories) . ')
';
$resultSet = Zend_Db_Table::getDefaultAdapter()->fetchAll($sql);
$cache->save($resultSet, $cacheName, array(), 3600 * 24);
}
$irandom = rand(0, sizeof($resultSet)-1);
return $resultSet[$irandom];
}
public function getRandomPlingedProjectIds()
{
/** @var Zend_Cache_Core $cache */
$cache = Zend_Registry::get('cache');
$cacheName = __FUNCTION__ ;
$resultSet = $cache->load($cacheName);
if (false == $resultSet) {
$sql=" select
p.project_id
from project_plings pl
inner join stat_projects p on pl.project_id = p.project_id
where pl.is_deleted = 0 and pl.is_active = 1 ";
$resultSet = Zend_Db_Table::getDefaultAdapter()->fetchAll($sql);
$cache->save($resultSet, $cacheName, array(), 3600 * 24); //cache is cleaned once a day
}
$irandom = rand(0, sizeof($resultSet)-1);
return $resultSet[$irandom];
}
public function getRandomFeaturedProjectIds()
{
/** @var Zend_Cache_Core $cache */
$cache = Zend_Registry::get('cache');
$cacheName = __FUNCTION__ ;
$resultSet = $cache->load($cacheName);
if (false == $resultSet) {
$sql="select project_id from project p where p.status = 100 and p.featured = 1 ";
$resultSet = Zend_Db_Table::getDefaultAdapter()->fetchAll($sql);
$cache->save($resultSet, $cacheName, array(), 3600 * 24); //cache is cleaned once a day
}
$irandom = rand(0, sizeof($resultSet)-1);
return $resultSet[$irandom];
}
/**
* @param int $limit
* @param null $project_category_id
*
* @return array|Zend_Paginator
*/
public function getFeaturedProductsForHostStores($limit = 10, $project_category_id = null)
{
/** @var Zend_Cache_Core $cache */
$cache = Zend_Registry::get('cache');
$cacheName = __FUNCTION__ . '_' . md5(Zend_Registry::get('store_host') . (int)$limit . (int)$project_category_id);
if (false !== ($resultSet = $cache->load($cacheName))) {
return new Zend_Paginator(new Zend_Paginator_Adapter_Array($resultSet));
}
if (empty($project_category_id)) {
$activeCategories = $this->getActiveCategoriesForCurrentHost();
} else {
$activeCategories = $this->getActiveCategoriesForCatId($project_category_id);
}
if (count($activeCategories) == 0) {
return array();
}
$sql = '
SELECT
`p`.*
,`m`.`profile_image_url`
,`m`.`username`
FROM
`stat_projects` AS `p`
JOIN
`member` AS `m` ON `m`.`member_id` = `p`.`member_id`
WHERE
`p`.`status` = 100
AND `p`.`type_id` = 1
AND `p`.`featured` = 1
AND `p`.`project_category_id` IN (' . implode(',', $activeCategories) . ')
';
if (isset($limit)) {
$sql .= ' limit ' . (int)$limit;
}
$resultSet = Zend_Db_Table::getDefaultAdapter()->fetchAll($sql);
$cache->save($resultSet, $cacheName, array(), 60);
if (count($resultSet) > 0) {
return new Zend_Paginator(new Zend_Paginator_Adapter_Array($resultSet));
} else {
return new Zend_Paginator(new Zend_Paginator_Adapter_Array(array()));
}
}
public function getLastCommentsForUsersProjects($member_id, $limit = 10)
{
/** @var Zend_Cache_Core $cache */
$cache = Zend_Registry::get('cache');
$cacheName = __FUNCTION__ . '_' . md5(Zend_Registry::get('store_host') . (int)$member_id . (int)$limit);
if (false !== ($resultSet = $cache->load($cacheName))) {
return $resultSet;
}
$sql = '
SELECT
comment_id
,comment_text
, member.member_id
,comment_created_at
,username
,title
,project_id
FROM comments
JOIN project ON comments.comment_target_id = project.project_id AND comments.comment_type = 0
STRAIGHT_JOIN member ON comments.comment_member_id = member.member_id
WHERE comments.comment_active = 1
AND project.status = 100
AND project.member_id =:member_id
ORDER BY comments.comment_created_at DESC
';
if (isset($limit)) {
$sql .= ' limit ' . (int)$limit;
}
$resultSet = Zend_Db_Table::getDefaultAdapter()->fetchAll($sql, array('member_id' => $member_id));
if (count($resultSet) > 0) {
$cache->save($resultSet, $cacheName, array(), 300);
return $resultSet;
} else {
$cache->save(array(), $cacheName, array(), 300);
return array();
}
}
public function getLastVotesForUsersProjects($member_id, $limit = 10)
{
/** @var Zend_Cache_Core $cache */
$cache = Zend_Registry::get('cache');
$cacheName = __FUNCTION__ . '_' . md5(Zend_Registry::get('store_host') . (int)$member_id . (int)$limit);
if (false !== ($resultSet = $cache->load($cacheName))) {
return $resultSet;
}
$sql = '
SELECT
`rating_id`
, `member`.`member_id`
,`username`
,`user_like`
,`user_dislike`
,`project_rating`.`project_id`
,`project_rating`.`created_at`
,`project`.`title`
FROM `project_rating`
JOIN `project` ON `project_rating`.`project_id` = `project`.`project_id`
STRAIGHT_JOIN `member` ON `project_rating`.`member_id` = `member`.`member_id`
WHERE `project`.`status` = 100
AND `project`.`member_id` = :member_id
ORDER BY `rating_id` DESC
';
if (isset($limit)) {
$sql .= ' limit ' . (int)$limit;
}
$resultSet = Zend_Db_Table::getDefaultAdapter()->fetchAll($sql, array('member_id' => $member_id));
if (count($resultSet) > 0) {
$cache->save($resultSet, $cacheName, array(), 300);
return $resultSet;
} else {
$cache->save(array(), $cacheName, array(), 300);
return array();
}
}
public function getLastDonationsForUsersProjects($member_id, $limit = 10)
{
/** @var Zend_Cache_Core $cache */
$cache = Zend_Registry::get('cache');
$cacheName = __FUNCTION__ . '_' . md5(Zend_Registry::get('store_host') . (int)$member_id . (int)$limit);
if (false !== ($resultSet = $cache->load($cacheName))) {
return $resultSet;
}
$sql = '
SELECT
plings.project_id,
plings.id
,member.member_id
,profile_image_url
,plings.create_time
,username
,plings.amount
,comment
,project.title
FROM plings
JOIN project ON project.project_id = plings.project_id
STRAIGHT_JOIN member ON plings.member_id = member.member_id
WHERE
plings.status_id = 2
AND project.status=100
AND project.member_id = :member_id
ORDER BY create_time DESC
';
if (isset($limit)) {
$sql .= ' limit ' . (int)$limit;
}
$resultSet = Zend_Db_Table::getDefaultAdapter()->fetchAll($sql, array('member_id' => $member_id));
if (count($resultSet) > 0) {
$cache->save($resultSet, $cacheName, array(), 300);
return $resultSet;
} else {
$cache->save(array(), $cacheName, array(), 300);
return array();
}
}
/**
* @param int $limit
*
* @return array|false|mixed
*/
public function getNewActiveMembers($limit = 20)
{
/** @var Zend_Cache_Core $cache */
$cache = Zend_Registry::get('cache');
$cacheName = __FUNCTION__ . '_' . md5((int)$limit);
if (false !== ($newMembers = $cache->load($cacheName))) {
return $newMembers;
}
$sql = '
SELECT
member_id,
profile_image_url,
username,
created_at
FROM member
WHERE `is_active` = :activeVal
AND `type` = :typeVal
ORDER BY created_at DESC
';
if (isset($limit)) {
$sql .= ' limit ' . (int)$limit;
}
$resultMembers = Zend_Db_Table::getDefaultAdapter()->query($sql, array(
'activeVal' => Default_Model_Member::MEMBER_ACTIVE,
'typeVal' => Default_Model_Member::MEMBER_TYPE_PERSON
))->fetchAll()
;
$cache->save($resultMembers, $cacheName, array(), 300);
return $resultMembers;
}
public function getSupporters($limit = 20)
{
/** @var Zend_Cache_Core $cache */
$cache = Zend_Registry::get('cache');
$cacheName = __FUNCTION__ . '_' . md5((int)$limit);
if (false !== ($newSupporters = $cache->load($cacheName))) {
return $newSupporters;
}
$sql = '
select
s.member_id as supporter_id
,s.member_id
,(select username from member m where m.member_id = s.member_id) as username
,(select profile_image_url from member m where m.member_id = s.member_id) as profile_image_url
,max(s.active_time_max) as created_at
from v_support s
group by member_id
order by active_time_max desc
';
if (isset($limit)) {
$sql .= ' limit ' . (int)$limit;
}
$result = Zend_Db_Table::getDefaultAdapter()->query($sql, array())->fetchAll();
$cache->save($result, $cacheName, array(), 300);
return $result;
}
public function getNewActiveSupporters($limit = 20)
{
/** @var Zend_Cache_Core $cache */
$cache = Zend_Registry::get('cache');
$cacheName = __FUNCTION__ . '_' . md5((int)$limit);
if (false !== ($newSupporters = $cache->load($cacheName))) {
return $newSupporters;
}
/*$sql = '
SELECT
s.member_id as supporter_id
,s.member_id
,(select username from member m where m.member_id = s.member_id) as username
,(select profile_image_url from member m where m.member_id = s.member_id) as profile_image_url
,min(s.active_time) as created_at
from support s
where s.status_id = 2
and (DATE_ADD((s.active_time), INTERVAL 1 YEAR) > now())
group by member_id
order by s.active_time desc
';*/
$sql = '
select
s.member_id as supporter_id
,s.member_id
,(select username from member m where m.member_id = s.member_id) as username
,(select profile_image_url from member m where m.member_id = s.member_id) as profile_image_url
,max(s.active_time_max) as created_at
from v_support s
group by member_id
order by active_time_max desc
';
if (isset($limit)) {
$sql .= ' limit ' . (int)$limit;
}
$result = Zend_Db_Table::getDefaultAdapter()->query($sql, array())->fetchAll();
$cache->save($result, $cacheName, array(), 300);
return $result;
}
public function getNewActivePlingProduct($limit = 20)
{
/** @var Zend_Cache_Core $cache */
$cache = Zend_Registry::get('cache');
$cacheName = __FUNCTION__ . '_' . md5((int)$limit);
if (false !== ($newSupporters = $cache->load($cacheName))) {
return $newSupporters;
}
$sql = '
select
pl.member_id as pling_member_id
,pl.project_id
,p.title
,p.image_small
,p.laplace_score
,p.count_likes
,p.count_dislikes
,p.member_id
,p.profile_image_url
,p.username
,p.cat_title as catTitle
,(
select max(created_at) from project_plings pt where pt.member_id = pl.member_id and pt.project_id=pl.project_id
) as created_at
,(select count(1) from project_plings pl2 where pl2.project_id = p.project_id and pl2.is_active = 1 and pl2.is_deleted = 0 ) as sum_plings
from project_plings pl
inner join stat_projects p on pl.project_id = p.project_id and p.status=100
where pl.is_deleted = 0 and pl.is_active = 1
order by created_at desc
';
if (isset($limit)) {
$sql .= ' limit ' . (int)$limit;
}
$result = Zend_Db_Table::getDefaultAdapter()->query($sql, array())->fetchAll();
$cache->save($result, $cacheName, array(), 300);
return $result;
}
public function getJsonNewActivePlingProduct($limit = 20,$offset=null)
{
/** @var Zend_Cache_Core $cache */
$cache = Zend_Registry::get('cache');
$cacheName = __FUNCTION__ . '_' . md5((int)$limit).md5((int)$offset);;
if (false !== ($newSupporters = $cache->load($cacheName))) {
return $newSupporters;
}
$sql = '
select
pl.member_id as pling_member_id
,pl.project_id
,p.title
,p.image_small
,p.laplace_score
,p.count_likes
,p.count_dislikes
,p.member_id
,p.description
,p.profile_image_url
,p.username
,p.cat_title
,p.count_comments
,(
select max(created_at) from project_plings pt where pt.member_id = pl.member_id and pt.project_id=pl.project_id
) as pling_created_at
,(select count(1) from project_plings pl2 where pl2.project_id = p.project_id and pl2.is_active = 1 and pl2.is_deleted = 0 ) as sum_plings
,p.project_changed_at as changed_at
,p.project_created_at as created_at
from project_plings pl
inner join stat_projects p on pl.project_id = p.project_id and p.status > 30
where pl.is_deleted = 0 and pl.is_active = 1
order by pling_created_at desc
';
if (isset($limit)) {
$sql .= ' limit ' . (int)$limit;
}
if (isset($offset)) {
$sql .= ' offset ' . (int)$offset;
}
$resultSet = Zend_Db_Table::getDefaultAdapter()->query($sql, array())->fetchAll();
$imagehelper = new Default_View_Helper_Image();
foreach ($resultSet as &$value) {
$value['image_small'] = $imagehelper->Image($value['image_small'], array('width' => 200, 'height' => 200));
}
$result = Zend_Json::encode($resultSet);
$cache->save($result, $cacheName, array(), 300);
return $result;
}
/**
* @param int $limit
*
* @return array|false|mixed
*/
public function getTopScoreUsers($limit = 120,$offset=null)
{
/** @var Zend_Cache_Core $cache */
$cache = Zend_Registry::get('cache');
$cacheName = __FUNCTION__ . '_' . md5((int)$limit).md5((int)$offset);;
if (false !== ($resultMembers = $cache->load($cacheName))) {
return $resultMembers;
}
$sql = '
select
s.*
,m.profile_image_url
,m.username
from member_score s
inner join member m on s.member_id = m.member_id
order by s.score desc
';
if (isset($limit)) {
$sql .= ' limit ' . (int)$limit;
}
if (isset($offset)) {
$sql .= ' offset ' . (int)$offset;
}
$resultMembers = Zend_Db_Table::getDefaultAdapter()->query($sql, array())->fetchAll();
$cache->save($resultMembers, $cacheName, array(), 300);
return $resultMembers;
}
public function getMostPlingedProductsTotalCnt(){
$sql = '
select count(1) as total_count
from
(
select distinct pl.project_id
from project_plings pl
inner join stat_projects p on pl.project_id = p.project_id and p.status = 100
where pl.is_deleted = 0 and pl.is_active = 1
) t
';
$result = Zend_Db_Table::getDefaultAdapter()->query($sql, array())->fetchAll();
$totalcnt = $result[0]['total_count'];
return $totalcnt;
}
public function getMostPlingedProducts($limit = 20,$offset = null)
{
/** @var Zend_Cache_Core $cache */
$cache = Zend_Registry::get('cache');
$cacheName = __FUNCTION__ . '_' . md5((int)$limit).md5((int)$offset);
if (false !== ($newSupporters = $cache->load($cacheName))) {
return $newSupporters;
}
$sql = '
select pl.project_id
,count(1) as sum_plings
,p.title
,p.image_small
,p.laplace_score
,p.count_likes
,p.count_dislikes
,p.member_id
,p.profile_image_url
,p.username
,p.cat_title as catTitle
,p.project_changed_at
,p.version
,p.description
,p.package_names
,p.count_comments
from project_plings pl
inner join stat_projects p on pl.project_id = p.project_id and p.status = 100
where pl.is_deleted = 0 and pl.is_active = 1
group by pl.project_id
order by sum_plings desc
';
if (isset($limit)) {
$sql .= ' limit ' . (int)$limit;
}
if (isset($offset)) {
$sql .= ' offset ' . (int)$offset;
}
$result = Zend_Db_Table::getDefaultAdapter()->query($sql, array())->fetchAll();
$cache->save($result, $cacheName, array(), 300);
return $result;
}
public function getMostPlingedProductsForUser($member_id, $limit = 20,$offset = null)
{
/** @var Zend_Cache_Core $cache */
$cache = Zend_Registry::get('cache');
$cacheName = __FUNCTION__ . '_' .md5($member_id).md5((int)$limit).md5((int)$offset);
if (false !== ($newSupporters = $cache->load($cacheName))) {
return $newSupporters;
}
$sql = '
select pl.project_id
,count(1) as sum_plings
,p.title
,p.image_small
,p.cat_title as catTitle
,p.project_changed_at
from project_plings pl
inner join stat_projects p on pl.project_id = p.project_id and p.status = 100
where pl.is_deleted = 0 and pl.is_active = 1 and p.member_id = :member_id
group by pl.project_id
order by sum_plings desc
';
if (isset($limit)) {
$sql .= ' limit ' . (int)$limit;
}
if (isset($offset)) {
$sql .= ' offset ' . (int)$offset;
}
$result = Zend_Db_Table::getDefaultAdapter()->query($sql, array('member_id' => $member_id))->fetchAll();
$cache->save($result, $cacheName, array(), 300);
return $result;
}
public function getMostPlingedCreatorsTotalCnt(){
$sql = '
select count(1) as total_count
from
(
select distinct p.member_id
from stat_projects p
join project_plings pl on p.project_id = pl.project_id
where p.status = 100 and pl.is_deleted = 0 and pl.is_active = 1
) t
';
$result = Zend_Db_Table::getDefaultAdapter()->query($sql, array())->fetchAll();
$totalcnt = $result[0]['total_count'];
return $totalcnt;
}
public function getMostPlingedCreators($limit = 20,$offset = null)
{
/** @var Zend_Cache_Core $cache */
$cache = Zend_Registry::get('cache');
$cacheName = __FUNCTION__ . '_' . md5((int)$limit).md5((int)$offset);
if (false !== ($newSupporters = $cache->load($cacheName))) {
return $newSupporters;
}
$sql = '
select p.member_id,
count(1) as cnt,
m.username,
m.profile_image_url,
m.created_at
from stat_projects p
join project_plings pl on p.project_id = pl.project_id
join member m on p.member_id = m.member_id
where p.status = 100
and pl.is_deleted = 0 and pl.is_active = 1
group by p.member_id
order by cnt desc
';
if (isset($limit)) {
$sql .= ' limit ' . (int)$limit;
}
if (isset($offset)) {
$sql .= ' offset ' . (int)$offset;
}
$result = Zend_Db_Table::getDefaultAdapter()->query($sql, array())->fetchAll();
$cache->save($result, $cacheName, array(), 300);
return $result;
}
public function getCountActiveSupporters()
{
/** @var Zend_Cache_Core $cache */
$cache = Zend_Registry::get('cache');
$cacheName = __FUNCTION__;
if (false !== ($totalcnt = $cache->load($cacheName))) {
return $totalcnt;
}
/*$sql = '
SELECT
count( distinct s.member_id) as total_count
from support s
where s.status_id = 2
and (DATE_ADD((s.active_time), INTERVAL 1 YEAR) > now())
';*/
$sql = '
SELECT
count( distinct s.member_id) as total_count
from v_support s
where is_valid = 1
';
$result = Zend_Db_Table::getDefaultAdapter()->query($sql, array())->fetchAll();
$totalcnt = $result[0]['total_count'];
$cache->save($totalcnt, $cacheName, array(), 300);
return $totalcnt;
}
public function getCountAllSupporters()
{
/** @var Zend_Cache_Core $cache */
$cache = Zend_Registry::get('cache');
$cacheName = __FUNCTION__;
if (false !== ($totalcnt = $cache->load($cacheName))) {
return $totalcnt;
}
$sql = '
SELECT
count( distinct s.member_id) as total_count
from v_support s
';
$result = Zend_Db_Table::getDefaultAdapter()->query($sql, array())->fetchAll();
$totalcnt = $result[0]['total_count'];
$cache->save($totalcnt, $cacheName, array(), 300);
return $totalcnt;
}
public function getCountTierSupporters($tier)
{
$sql = "
select count(1) as cnt from
(
select
member_id,
max(amount),
tier
from support
where status_id = 2
group by member_id
) t where tier = :tier
";
$result = Zend_Db_Table::getDefaultAdapter()->query($sql, array('tier' =>$tier))->fetchAll();
return $result[0]['cnt'];
}
+
+ public function getSumSupporting()
+ {
+ $sql = "
+ SELECT SUM(s.tier) as sum_tier FROM v_support v
+ JOIN support s ON s.member_id = v.member_id AND s.active_time = v.active_time_max
+ WHERE v.is_valid = 1
+ ";
+ $result = Zend_Db_Table::getDefaultAdapter()->query($sql)->fetchAll();
+ return $result[0]['sum_tier'];
+ }
+
+ public function getSumPayoutForMonth($yearmonth)
+ {
+ $sql = "
+ SELECT SUM(p.probably_payout_amount) AS sum_payout FROM member_dl_plings p
+ WHERE p.yearmonth = :yearmonth
+ AND p.paypal_mail IS NOT null
+ ";
+ $result = Zend_Db_Table::getDefaultAdapter()->query($sql, array('yearmonth' => $yearmonth))->fetchAll();
+ return $result[0]['sum_tier'];
+ }
public function getModeratorsList()
{
/** @var Zend_Cache_Core $cache */
$cache = Zend_Registry::get('cache');
$cacheName = __FUNCTION__;
if (false !== ($newMembers = $cache->load($cacheName))) {
return $newMembers;
}
$sql = '
SELECT
member_id,
profile_image_url,
username,
created_at
FROM member
WHERE `is_active` = :activeVal
AND `type` = :typeVal
and `roleid` = :roleid
ORDER BY created_at DESC
';
if (isset($limit)) {
$sql .= ' limit ' . (int)$limit;
}
$resultMembers = Zend_Db_Table::getDefaultAdapter()->query($sql, array(
'activeVal' => Default_Model_Member::MEMBER_ACTIVE,
'typeVal' => Default_Model_Member::MEMBER_TYPE_PERSON,
'roleid' => Default_Model_DbTable_Member::ROLE_ID_MODERATOR
))->fetchAll()
;
$cache->save($resultMembers, $cacheName, array(), 300);
return $resultMembers;
}
public function getCountMembers()
{
/** @var Zend_Cache_Core $cache */
$cache = Zend_Registry::get('cache');
$cacheName = __FUNCTION__;
if (false !== ($totalcnt = $cache->load($cacheName))) {
return $totalcnt;
}
$sql = "
SELECT
count(1) AS total_count
FROM
member
WHERE
is_active=1 AND is_deleted=0
";
$result = Zend_Db_Table::getDefaultAdapter()->query($sql, array())->fetchAll();
$totalcnt = $result[0]['total_count'];
$cache->save($totalcnt, $cacheName, array(), 300);
return $totalcnt;
}
public function getTooptipForMember($member_id)
{
/** @var Zend_Cache_Core $cache */
$cache = Zend_Registry::get('cache');
$cacheName = __FUNCTION__ . '_' . md5($member_id);
if (false !== ($tooptip = $cache->load($cacheName))) {
return $tooptip;
}
$modelMember = new Default_Model_Member();
$tblFollower = new Default_Model_DbTable_ProjectFollower();
$modelProject = new Default_Model_Project();
$printDate = new Default_View_Helper_PrintDate();
$printDateSince = new Default_View_Helper_PrintDateSince();
$cnt = $modelMember->fetchCommentsCount($member_id);
$cntLikesGave = $tblFollower->countLikesHeGave($member_id);
$cntLikesGot = $tblFollower->countLikesHeGot($member_id);
$donationinfo = $modelMember->fetchSupporterDonationInfo($member_id);
$lastactive = $modelMember->fetchLastActiveTime($member_id);
$cntprojects = $modelProject->countAllProjectsForMember($member_id, true);
$member = $modelMember->find($member_id)->current();
$textCountryCity = $member->city;
$textCountryCity .= $member->country ? ', ' . $member->country : '';
$data = array(
'totalComments' => $cnt,
'created_at' => $printDateSince->printDateSince($member->created_at),
'username' => $member->username,
'countrycity' => $textCountryCity,
'lastactive_at' => $printDateSince->printDateSince($lastactive),
'cntProjects' => $cntprojects,
'issupporter' => $donationinfo['issupporter'],
'supportMax' => $donationinfo['active_time_max'],
'supportMin' => $donationinfo['active_time_min'],
'supportCnt' => $donationinfo['cnt'],
'cntLikesGave' => $cntLikesGave,
'cntLikesGot' => $cntLikesGot
);
$cache->save($data, $cacheName, array(), 3600);
return $data;
}
public function getProbablyPayoutPlingsCurrentmonth($project_id)
{
$sql =
" select FORMAT(probably_payout_amount, 2) as amount from member_dl_plings where project_id = :project_id and yearmonth=(DATE_FORMAT(NOW(),'%Y%m'))";
$result = Zend_Db_Table::getDefaultAdapter()->fetchRow($sql, array('project_id' => $project_id));
return $result['amount'];
}
public function getOCSInstallInstruction()
{
/** @var Zend_Cache_Core $cache */
$cache = Zend_Registry::get('cache');
$cacheName = __FUNCTION__;
if (false !== ($instruction = $cache->load($cacheName))) {
return $instruction;
}
$config = Zend_Registry::get('config')->settings->server->opencode;
$readme = 'https://opencode.net/OCS/ocs-url/raw/master/docs/How-to-install.md?inline=false';
$httpClient = new Zend_Http_Client($readme, array('keepalive' => true, 'strictredirects' => true));
$httpClient->resetParameters();
$httpClient->setUri($readme);
$httpClient->setHeaders('Private-Token', $config->private_token);
$httpClient->setHeaders('Sudo', $config->user_sudo);
$httpClient->setHeaders('User-Agent', $config->user_agent);
$httpClient->setMethod(Zend_Http_Client::GET);
$response = $httpClient->request();
$body = $response->getRawBody();
if (count($body) == 0) {
return array();
}
include_once('Parsedown.php');
$Parsedown = new Parsedown();
$readmetext = $Parsedown->text($body);
$cache->save($readmetext, $cacheName, array(), 3600);
return $readmetext;
}
public function getDiscussionOpendeskop($member_id)
{
$sql = "
select
c.comment_id
,c.comment_text
,c.comment_member_id
,c.comment_created_at
,m.username
,p.project_id
,p.title
,cp.comment_member_id p_comment_member_id
,(select username from member m where m.member_id = cp.comment_member_id) p_username
from comments c
inner join project p on c.comment_target_id = p.project_id and p.status = 100
inner join member m ON c.comment_member_id = m.member_id
left join comments cp on c.comment_parent_id = cp.comment_id
where c.comment_type = 0 and c.comment_active = 1
and c.comment_member_id = :member_id
ORDER BY c.comment_created_at DESC
limit 10
";
$result = Zend_Db_Table::getDefaultAdapter()->query($sql, array('member_id' => $member_id))->fetchAll();
return $result;
}
}
\ No newline at end of file
diff --git a/application/modules/default/views/scripts/funding/index.phtml b/application/modules/default/views/scripts/funding/index.phtml
new file mode 100644
index 000000000..5d973b01c
--- /dev/null
+++ b/application/modules/default/views/scripts/funding/index.phtml
@@ -0,0 +1,44 @@
+.
+ *
+ * Created: 31.05.2017
+ */
+$modelInfo = new Default_Model_Info();
+?>
+
+
+
+
+
+
Income
+ = $modelInfo->getSumSupporting() ?>
+
+
+
Payout
+ = $modelInfo->getSumSupporting() ?>
+
+
+
Payout
+
+
+
+
+
\ No newline at end of file
diff --git a/sql_code/20190607_add_fields_to_config_store.sql b/sql_code/20190607_add_fields_to_config_store.sql
new file mode 100644
index 000000000..ddc65f35f
--- /dev/null
+++ b/sql_code/20190607_add_fields_to_config_store.sql
@@ -0,0 +1,6 @@
+ALTER TABLE `config_store`
+ ADD COLUMN `is_show_in_menu` INT(1) NULL DEFAULT '0' AFTER `is_show_forum_news`;
+
+ALTER TABLE `config_store`
+ ADD COLUMN `is_show_real_domain_as_url` INT(1) NULL DEFAULT '0' AFTER `is_show_in_menu`;
+