Example #1
0
 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;
 }