public function saveAction()
 {
     $data = $this->getRequest()->getParam($this->_table);
     $form = $this->_form;
     if (isset($data['id'])) {
         $item = AbstractDbTable::get($this->_table)->findOneById($data['id']);
         if ($item) {
             $form->set($item);
         }
     }
     $data['chave'] = ChaveBusiness::chave($data['nome']);
     if ($form->isValid($data)) {
         if (!$form->save()) {
             foreach ($form->getErrorMessages() as $message) {
                 $this->addMessage($message, 'danger');
             }
         } else {
             if ($data['id'] != '') {
                 $this->addMessage('Editado com sucesso!', 'success');
             } else {
                 $this->addMessage('Cadastrado com sucesso!', 'success');
             }
             $this->_redirect('admin/' . str_replace('_', '-', $this->_table));
             exit;
         }
     }
     $this->view->form = $form;
     $this->render('edit');
 }
示例#2
0
    /**
     * Atualiza as noticias com os RSS cadastrados
     */
    public static function updateRss()
    {
        $rssModel = new RssDbTable();
        $noticiaModel = new NoticiaDbTable();
        $mensagem = '';
        $rssArray = $rssModel->fetchAll($rssModel->select()->from('rss', array('id', 'url'))->where('ativo = ?', 1));
        for ($i = 0; $i < $rssArray->count(); $i++) {
            $rss = $rssArray->getRow($i);
            if (Zend_Uri::check($rss->url)) {
                try {
                    $feed = new Zend_Feed_Rss($rss->url);
                    foreach ($feed as $item) {
                        $data = $item->pubDate();
                        if (!empty($data)) {
                            $noticiaModel->getAdapter()->beginTransaction();
                            $data = str_replace('  ', ' ', $data);
                            if (preg_match('/^([A-Za-z]{3})\\, ([0-9]{1,2}) ([A-Za-z]{3}) ([0-9]{4}) ([0-9]{1,2})\\:([0-9]{1,2})\\:([0-9]{1,2})( \\-([0-9]{4}))?$/', $data)) {
                                $data = new Zend_Date($data, Zend_Date::RSS);
                            } else {
                                if (preg_match('/^([A-Za-z]{3})\\, ([0-9]{1,2}) ([A-Za-z]{3}) ([0-9]{4}) ([0-9]{1,2})\\:([0-9]{1,2})\\:([0-9]{1,2})( \\+([0-9]{4}))?$/', $data)) {
                                    $data = new Zend_Date(preg_replace('/^([A-Za-z]{3})\\, ([0-9]{1,2}) ([A-Za-z]{3}) ([0-9]{4}) ([0-9]{1,2})\\:([0-9]{1,2})\\:([0-9]{1,2})( \\+([0-9]{4}))?$/', '$1, $2 $3 $4 $5:$6:$7$8', $data), Zend_Date::RSS);
                                } else {
                                    if (preg_match('/^([A-Za-z]{3})\\, ([0-9]{1,2}) ([A-Za-z]{3}) ([0-9]{4}) ([0-9]{1,2})\\:([0-9]{1,2})( GMT)?$/', $data)) {
                                        $data = new Zend_Date(preg_replace('/^([A-Za-z]{3})\\, ([0-9]{1,2}) ([A-Za-z]{3}) ([0-9]{4}) ([0-9]{1,2})\\:([0-9]{1,2})( GMT)?$/', '$1, $2 $3 $4 $5:$6:00$7', $data), Zend_Date::RSS);
                                    } else {
                                        if (preg_match('/^([A-Za-z]{3})\\, ([0-9]{1,2}) ([A-Za-z]{3}) ([0-9]{4}) ([0-9]{1,2})\\:([0-9]{1,2})\\:([0-9]{1,2})( GMT)?$/', $data)) {
                                            $data = new Zend_Date(preg_replace('/^([A-Za-z]{3})\\, ([0-9]{1,2}) ([A-Za-z]{3}) ([0-9]{4}) ([0-9]{1,2})\\:([0-9]{1,2})\\:([0-9]{1,2})( GMT)?$/', '$1, $2 $3 $4 $5:$6:$7$8', $data), Zend_Date::RSS);
                                        } else {
                                            $noticiaModel->getAdapter()->rollBack();
                                            continue;
                                        }
                                    }
                                }
                            }
                            try {
                                if ($data->compareDate(new Zend_Date()) == 0) {
                                    $data = $data->toString('Y-m-d H:i:s', 'php');
                                    $noticiaModel->insert(array('data' => $data, 'chave' => ChaveBusiness::chave($item->title()), 'nome' => $item->title(), 'descricao' => strip_tags($item->description()), 'url' => $item->link(), 'rss_id' => $rss->id));
                                    $noticiaModel->getAdapter()->commit();
                                } else {
                                    $noticiaModel->getAdapter()->rollBack();
                                }
                            } catch (Exception $e) {
                                $mensagem .= 'Oops... ocorreu um erro ao atualizar RSS!<br />
			                	URL: ' . $rss->url . '<br />
			                	Data: ' . date('d/m/Y H:i:s') . '<br /><br />
								<b>' . $e->getMessage() . '</b><br />
			                	<pre>' . $e->getTraceAsString() . '</pre>';
                                $noticiaModel->getAdapter()->rollBack();
                            }
                        }
                    }
                } catch (Exception $e) {
                    $mensagem .= 'Oops... ocorreu um erro ao atualizar RSS!<br />
                	URL: ' . $rss->url . '<br />
                	Data: ' . date('d/m/Y H:i:s') . '<br /><br />
					<b>' . $e->getMessage() . '</b><br />
                	<pre>' . $e->getTraceAsString() . '</pre>';
                }
                if (!empty($mensagem)) {
                    print_r($mensagem);
                }
            }
        }
    }