public function init() { $this->view->pathPUBLIC = Zend_Registry::get('application')->sys->url; $this->view->canonical = $this->view->url(); $this->view->auth = $_SESSION['tw_auth']; General::cache()->clean(Zend_Cache::CLEANING_MODE_OLD); General::setLanguage(); }
public function get($param) { $this->getAdapter()->exec("set @row_num = 0"); $this->getAdapter()->exec("set @co_post = 0"); $bind = array(); $bind['dt_fuso'] = $_SESSION['tw_auth']['dt_fuso']; $bind['limit'] = $param['limit'] ? $param['limit'] : 3; $sql = "SELECT\n\t c.co_post,\n u.co_usuario,\n\t u.nu_usuario,\n\t u.no_email,\n\t u.no_usuario,\n\t i.nu_imagem,\n\t c.nu_comentario,\n\t CONVERT_TZ(c.dt_cadastro,'+00:00',:dt_fuso) dt_cadastro,\n\t c.dt_cadastro dt_cadastro_utc,\n\t c.tx_comentario\n FROM tb_comentario c\n JOIN (\n\t SELECT \n\t co_comentario\n\t FROM (\n\t\t SELECT\n\t\t co_post,\n\t\t co_comentario,\n\t\t if(@co_post <> co_post,@row_num := 0,@row_num := @row_num + 1) row_num,\n\t\t (@co_post := co_post) co_post_ctr\n\t\t FROM \n\t\t (SELECT * FROM tb_comentario ORDER BY co_comentario desc) c\n\t\t WHERE "; if ($param['co_post']) { if (!is_array($param['co_post']) || count($param['co_post']) == 1) { $sql .= " co_post = :co_post and "; $bind['co_post'] = current($param['co_post']); } else { $sql .= " co_post IN (" . implode(',', $param['co_post']) . ") and "; } } if ($param['nu_post']) { $sql .= " co_post = (SELECT co_post FROM tb_post \n WHERE nu_post = :nu_post) and "; $bind['nu_post'] = $param['nu_post']; } $sql .= " st_ativo = 1\n\t\t ORDER BY co_post\n\t ) c\n\t WHERE c.row_num < :limit\n ) tc ON tc.co_comentario = c.co_comentario\n JOIN tb_usuario u ON u.co_usuario = c.co_usuario\n LEFT JOIN tb_imagem i ON i.co_imagem = u.co_imagem\n ORDER BY c.co_post, c.dt_cadastro ASC"; $cache_id = "cmt_" . md5(serialize($param) . serialize($bind)); General::setCacheID('cmt', $cache_id); $cache = General::cache(10); $rs = $cache->load($cache_id); if (!$rs) { $rs = $this->getAdapter()->fetchAll($sql, $bind); $cache->save($rs, $cache_id); } $arReturn = array(); if (count($rs)) { foreach ($rs as $item) { $arReturn[$item['co_post']][] = $item; } return $arReturn; } else { return array(); } }
public function get($param) { $bind = array(); $bind['dt_fuso'] = $_SESSION['tw_auth']['dt_fuso']; $sql = "SELECT\n\t\t\tp.co_post,\n\t\t\tp.nu_post,\n u.co_usuario,\n\t\t\tu.nu_usuario,\n\t\t\tu.no_email,\n\t\t\tu.no_usuario,\n\t\t\tp.tx_post,\n\t\t\tCONVERT_TZ(p.dt_cadastro,'+00:00',:dt_fuso) dt_cadastro,\n\t\t\tp.dt_cadastro dt_cadastro_utc,\n\t\t\ttp.qt_comentario,\n\t\t\ti.nu_imagem\n\t\tFROM\n\t\ttb_post p\n\t\tJOIN\n\t\t( \n SELECT\n\t\t\t p.co_post,\n\t\t\t if(c.co_comentario is null,0,count(*)) qt_comentario\n\t\t FROM\n\t\t tb_post p\n\t\t JOIN tb_usuario u\n\t\t\t ON u.co_usuario = p.co_usuario "; if ($param['tipo'] == "amigo") { $sql .= " JOIN tb_seguidor s\n\t ON s.co_usuario_seguido = u.co_usuario "; } $sql .= " LEFT JOIN tb_comentario c\n\t ON c.co_post = p.co_post AND c.st_ativo = 1\n WHERE p.st_ativo = 1\n\t AND u.st_ativo = 1 "; if ($param['tipo'] == "rede") { $sql .= " AND u.co_pais = :co_pais "; $bind['co_pais'] = $_SESSION['tw_auth']['co_pais']; } if ($param['tipo'] == "amigo") { $sql .= " AND s.co_usuario_seguidor = :co_usuario_seguidor"; $bind['co_usuario_seguidor'] = $_SESSION['tw_auth']['co_usuario']; } if ($param['tipo'] == "usuario") { if ($param['nu_usuario']) { $sql .= " AND u.nu_usuario = :nu_usuario"; $bind['nu_usuario'] = $param['nu_usuario']; } else { $sql .= " AND u.co_usuario = :co_usuario"; $bind['co_usuario'] = $param['co_usuario']; } } if ($param['tipo'] == "id") { $sql .= " AND p.nu_post = :nu_post"; $bind['nu_post'] = $param['nu_post']; } if ($param['uptime']) { $sql .= " AND p.dt_cadastro < :dt_cadastro"; $bind['dt_cadastro'] = $param['uptime']; } $sql .= " GROUP BY p.co_post\n ORDER BY p.dt_cadastro desc\n LIMIT 10 ) tp ON tp.co_post = p.co_post\n JOIN tb_usuario u ON u.co_usuario = p.co_usuario\n LEFT JOIN tb_imagem i ON i.co_imagem = u.co_imagem"; $cache_id = "pst_" . md5(serialize($param) . serialize($bind)); $cache = General::cache(10); General::setCacheID('pst', $cache_id); $rs = $cache->load($cache_id); if (!$rs) { $rs = $this->getAdapter()->fetchAll($sql, $bind); $cache->save($rs, $cache_id); } unset($cache); $arIDPost = array(); $arReturn = array(); if (count($rs)) { foreach ($rs as $item) { if ($item['qt_comentario'] > 0) { $arIDPost[] = $item['co_post']; } } $arComentario = array(); if (count($arIDPost)) { $arComentario = Model_Comentario::getInstance()->get(array("co_post" => $arIDPost, "limit" => $param['tipo'] == "id" ? 100 : 3)); } foreach ($rs as $item) { $arReturn[$item['co_post']] = $item; $arReturn[$item['co_post']]['comentario'] = $arComentario[$item['co_post']]; } unset($arComentario); unset($rs); unset($arIDPost); return $arReturn; } else { return array(); } }
public function seguidor($param = array()) { $sql = "SELECT \n\t u.nu_usuario,\n\t u.no_email,\n\t u.no_usuario,\n i.nu_imagem\n FROM tb_seguidor s\n JOIN tb_usuario u "; if ($param['tipo'] == "seguidor") { $sql .= "ON u.co_usuario = s.co_usuario_seguidor"; } else { $sql .= "ON u.co_usuario = s.co_usuario_seguido"; } $sql .= " LEFT JOIN tb_imagem i ON\n i.co_imagem = u.co_imagem\n WHERE "; if ($param['tipo'] == "seguidor") { $sql .= "s.co_usuario_seguido = :co_usuario"; } else { $sql .= "s.co_usuario_seguidor = :co_usuario"; } $sql .= " AND u.st_ativo = 1\n ORDER BY u.dt_ultimo_acesso desc, i.nu_imagem DESC\n LIMIT 12"; $bind = array(); $bind['co_usuario'] = $param['co_usuario']; $cache = General::cache(60 * 10); $cache_id = "seg_" . md5(serialize($param) . serialize($bind)); General::setCacheID('seg', $cache_id); $rs = $cache->load($cache_id); if (!$rs) { $rs = $this->getAdapter()->fetchAll($sql, $bind); $cache->save($rs, $cache_id); } return $rs; }