public static function getPins($data = array(), &$pin_ids = array()) { $db = JO_Db::getDefaultAdapter(); $cache_live = (int) JO_Registry::get('config_cache_live'); if ($cache_live && isset($data['filter_rand']) && $data['filter_rand'] == true && isset($data['start']) && isset($data['limit'])) { $check = $db->select()->from('cache_index')->where('start_limit = ?', $data['start'] . '.' . $data['limit'])->where('`date` >= ?', time())->limit(1); $cache = $db->fetchRow($check); if ($cache) { $results = JO_Json::decode($cache['data'], true); if ($results && is_array($results)) { $return = array(); foreach ($results as $result) { if (self::pinIsExist($result['pin_id'])) { $return[] = $result; } } return $return; } } } elseif ($cache_live && isset($data['filter_like_repin_comment']) && $data['filter_like_repin_comment'] == true && isset($data['start']) && isset($data['limit'])) { $check = $db->select()->from('cache_popular')->where('start_limit = ?', $data['start'] . '.' . $data['limit'])->where('`date` >= ?', time())->limit(1); $cache = $db->fetchRow($check); if ($cache) { $results = JO_Json::decode($cache['data'], true); if ($results && is_array($results)) { $return = array(); foreach ($results as $result) { if (self::pinIsExist($result['pin_id'])) { $return[] = $result; } } return $return; } } } if (isset($data['filter_likes']) && $data['filter_likes']) { $query = $db->select()->from('pins', array('pins.*', 'gift' => new JO_Db_Expr('pins.price > 0.0000')))->where('pins.pin_id IN (SELECT pins_likes.pin_id FROM pins_likes WHERE user_id = ?)', $data['filter_likes']); } else { $query = $db->select()->from('pins', array('pins.*', 'gift' => new JO_Db_Expr('pins.price > 0.0000'))); } $query = self::FilterBuilder($query, $data); if (isset($data['start']) && isset($data['limit'])) { if ($data['start'] < 0) { $data['start'] = 0; } $query->limit($data['limit'], $data['start']); } if (isset($data['sort']) && strtolower($data['sort']) == 'asc') { $sort = ' ASC'; } else { $sort = ' DESC'; } $allow_sort = array('pins.pin_id', 'pins.views'); if (isset($data['order']) && in_array($data['order'], $allow_sort)) { $query->order($data['order'] . $sort); } elseif (isset($data['order']) && $data['order'] instanceof JO_Db_Expr) { $query->order($data['order']); } else { $query->order('pins.pin_id' . $sort); } $start = microtime(true); //echo $query.'<hr />'; $results = $db->fetchAll($query); $results_array = array(); if ($results) { foreach ($results as $result) { $userinfo = Model_Users::getUser($result['user_id'], false, Model_Users::$allowed_fields); if ($userinfo) { $result['user_via'] = $result['via'] ? Model_Users::getUser($result['via'], false, Model_Users::$allowed_fields) : false; $result['user'] = $userinfo; $result['board'] = Model_Boards::getBoardTitle($result['board_id']); $result['latest_comments'] = $result['comments'] ? Model_Comments::getLatestComments($result['latest_comments']) : array(); $result['liked'] = $result['likes'] ? self::pinIsLiked($result['pin_id']) : 0; $results_array[] = $result; // array_push($pin_ids, $result['pin_id']); } } } // var_dump( microtime(true)-JO_Registry::get('start_microtime') ); exit; return $results_array; }