/class.xmodblog.inc
https://github.com/jcplat/console-seolan · PHP · 948 lines · 800 code · 63 blank · 85 comment · 80 complexity · 6bf57d70f31c3b73fadafdceb3b67eea MD5 · raw file
- <?php
- // Blog
- //
- class XModBlog extends XModTable {
- /// duree en jours pendant laquelle un event ou un commentaire sont consideres comme recents
- var $recentevents=7;
- function __construct($ar=NULL) {
- parent::__construct($ar);
- XLabels::loadLabels('xmodblog');
- }
- /// suppression du module
- function delete($ar=NULL) {
- parent::delete($ar);
- }
- /// corbeille des taches
- public function getTasklet(){
- // liste des entites en attente de validation
- $blogs = array();
- // blogs a valider
- $query=$this->xset->select_query(array("cond"=>array('PUBLISH'=>array('=',2),
- 'dtype'=>array('=','blog'))));
- $rs=selectQuery($query);
- while($rs && ($ors = $rs->fetch())){
- if (!isset($blogs[$ors['KOID']])){
- $blogs[$ors['KOID']] = array('publish'=>2,'posts'=>array());
- }
- }
- unset($rs); unset($ors);
- // posts a valider
- $query=$this->xset->select_query(array("cond"=>array('PUBLISH'=>array('=',2),
- 'dtype'=>array('=','post'))));
- $rs=selectQuery($query);
- while($rs && ($ors = $rs->fetch())){
- if (!isset($blogs[$ors['blog']])){
- $blogs[$ors['blog']] = array('publish'=>1,'posts'=>array());
- }
- $blogs[$ors['blog']]['posts'][$ors['KOID']]=array('title'=>$ors['title'], 'publish'=>2, 'comments'=>array());
- }
- unset($rs); unset($ors);
- // comptage du nombre de commentaires a valider
- $query=$this->xset->select_query(array("cond"=>array('PUBLISH'=>array('=',2),
- 'dtype'=>array('=','comment'))));
- $rs=selectQuery($query);
- while($rs && ($ors = $rs->fetch())){
- if (!isset($blogs[$ors['blog']])){
- $blogs[$ors['blog']] = array('publish'=>1, 'posts'=>array());
- }
- if (!isset($blogs[$ors['blog']]['posts'][$ors['paperup']])){
- $blogs[$ors['blog']]['posts'][$ors['paperup']] = array('publish'=>1, 'comments'=>array());
- }
- $blogs[$ors['blog']]['posts'][$ors['paperup']]['comments'][$ors['KOID']] = array('publish'=>2, 'title'=>$ors['title']);
- }
- unset($rs); unset($ors);
- $t= '';
- foreach($blogs as $oidblog=>$blog){
- $rdb = $this->xset->rdisplay($oidblog);
- $bt = XLabels::getSysLabel('xmodblog', 'modulename').' : '.$rdb['title'];
- /*
- if ($blog['publish'] == 2 && $this->secure($oidblog, ':rwv')){
- $url = $GLOBALS['TZR_SESSION_MANAGER']::complete_self(true, true).'&function=browseBlog&moid='.$this->_moid.'&oid='.$oidblog.'&template=xmodblog/browseblog.html&tplentry=br';
- $a1 = '<a href="'.$url.'">';
- $a2 = '</a>';
- $t .= '<p>'.XLabels::getSysLabel('general','view').' '.$a1.$rdb['title'].$a2.'</p>';
- }
- */
- foreach($blog['posts'] as $oidpost=>$post){
- $rdp = $this->xset->rdisplay($oidpost);
- $a1=$a2='';
- if ($post['publish'] == 2 && $this->secure($oidblog, ':rwv')){
- $url = $GLOBALS['TZR_SESSION_MANAGER']::complete_self(true, true).'&function=displayPost&moid='.$this->_moid.'&oid='.$oidblog.'&post='.$oidpost.'&template=xmodblog/displaypost.html&tplentry=br';
- $a1 = '<a href="'.$url.'">';
- $a2 = '</a>';
- $t .= '<p>'.XLabels::getSysLabel('general','view').' '.$a1.$rdp['title'].$a2.' - '.$bt.'</p>';
- }
- $pt = XLabels::getSysLabel('xmodblog', 'post').' : '.$rdp['title'].', '.$bt;
- foreach($post['comments'] as $oidcomment=>$comment){
- $b1=$b2='';
- if ($comment['publish'] == 2 && $this->secure($oidcomment, ':rwv')){
- $url = $GLOBALS['TZR_SESSION_MANAGER']::complete_self(true, true).'&function=displayPost&moid='.$this->_moid.'&oid='.$oidblog.'&post='.$oidpost.'&template=xmodblog/displaypost.html&tplentry=br&comment='.$oidcomment;
- $b1 = '<a href="'.$url.'">';
- $b2 = '</a>';
- $rdc = $this->xset->rdisplay($oidcomment);
- $t .= '<p>'.XLabels::getSysLabel('general','view').' '.$b1.$rdc['title'].$b2.' - '.$pt.'</p>';
- }
- }
- }
- }
- if (!empty($t)){
- $t = '<h2>En attente de validation</h2>'.$t;
- }
- return $t;
- }
- /// affichage dans la partie page d'accueil de la corbeille de taches
- public function getShortTasklet(){
- // posts a valider
- $urln=$GLOBALS['TZR_SESSION_MANAGER']::complete_self(true, true).'&moid='.$this->_moid.
- '&_function=browseBlogs&tplentry=br&template=xmodblog/browseblogs.html';
- $url1=$GLOBALS['TZR_SESSION_MANAGER']::complete_self(true, true).'&moid='.$this->_moid.
- '&_function=browseBlog&tplentry=br&template=xmodblog/browseblog.html';
- $query=$this->xset->select_query(array("cond"=>array('PUBLISH'=>array('=',2),
- 'dtype'=>array('=','post'))));
- $rs=selectQuery($query);
- $posts=0;
- $blogsposts=array();
- while($rs && ($ors = $rs->fetch())){
- if($this->secure($ors['blog'], ':rwv')) {
- $posts++;$blogsposts[$ors['blog']]=1;
- }
- }
- $t='';
- if($posts>0) {
- if(count($blogsposts)>1) $url=$urln;
- else {
- $tab=array_keys($blogsposts);
- $url=$url1.'&oid='.$tab[0];
- }
- if($posts==1) $t.='<p><a href="'.$url.'">Un</a> article à valider</p>';
- elseif($posts>0) $t.='<p><a href="'.$url.'">'.$posts.'</a> articles à valider</p>';
- }
- // posts a valider
- $query=$this->xset->select_query(array("cond"=>array('PUBLISH'=>array('=',2),
- 'dtype'=>array('=','comment'))));
- $rs=selectQuery($query);
- $comments=0;
- $blogscomments=array();
- while($rs && ($ors = $rs->fetch())){
- if($this->secure($ors['blog'], ':rwv')) {
- $comments++;$blogscomments[$ors['blog']]=1;
- }
- }
- if($comments>0) {
- if(count($blogscomments)>1) $url=$urln;
- else {
- $tab=array_keys($blogscomments);
- $url=$url1.'&oid='.$tab[0];
- }
- if($comments==1) $t.='<p><a href="'.$url.'">Un</a> commentaire à valider</p>';
- elseif($comments>0) $t.='<p><a href="'.$url.'">'.$comments.'</a> commentaires à valider</p>';
- }
- return $t;
- }
- /// liste des articles recents
- function &portlet2() {
- $urln=$GLOBALS['TZR_SESSION_MANAGER']::complete_self(true, true).'&moid='.$this->_moid.
- '&_function=browseBlogs&tplentry=br&template=xmodblog/browseblogs.html';
- $url1=$GLOBALS['TZR_SESSION_MANAGER']::complete_self(true, true).'&moid='.$this->_moid.
- '&_function=browseBlog&tplentry=br&template=xmodblog/browseblog.html';
- $query=$this->xset->select_query(array("cond"=>array('PUBLISH'=>array('=',1),
- 'UPD'=>array('>', '=DATE_SUB(NOW(), INTERVAL '.$this->recentevents.' DAY)'),
- 'dtype'=>array('=','post'))));
- $rs=selectQuery($query);
- $posts=0;
- $blogsposts=array();
- while($rs && ($ors = $rs->fetch())){
- if($this->secure($ors['blog'],':ro')) {
- $posts++;$blogsposts[$ors['blog']]=1;
- }
- }
- $query=$this->xset->select_query(array("cond"=>array('PUBLISH'=>array('=',1),
- 'UPD'=>array('>', '=DATE_SUB(NOW(), INTERVAL '.$this->recentevents.' DAY)'),
- 'dtype'=>array('=','comment'))));
- $rs=selectQuery($query);
- $comments=0;
- $blogscomments=array();
- while($rs && ($ors = $rs->fetch())){
- if($this->secure($ors['blog'],':ro')) {
- $comments++;$blogscomments[$ors['blog']]=1;
- }
- }
- if(($comments+$posts)>0) {
- $txt ='<h1>'.$this->modulename.'</h1>';
- if($posts>0) {
- if(count($blogsposts)>1) $url=$urln;
- else {
- $tab=array_keys($blogsposts);
- $url=$url1.'&oid='.$tab[0];
- }
- if($posts==1) $txt.='<p><a href="'.$url.'">Un</a> nouvel article</p>';
- else $txt.='<p><a href="'.$url.'">'.$posts.'</a> nouveaux articles</p>';
- }
- if($comments>0) {
- if(count($blogscomments)>1) $url=$urln;
- else {
- $tab=array_keys($blogscomments);
- $url=$url1.'&oid='.$tab[0];
- }
- if($comments==1) $txt.='<p><a href="'.$url.'">Un</a> nouveau commentaire</p>';
- else $txt.='<p><a href="'.$url.'">'.$comments.'</a> nouveaux commentaires</p>';
- }
- }
- return $txt;
- }
- /// initialisation des propriétés
- public function initOptions() {
- parent::initOptions();
- $alabel = XLabels::getSysLabel('xmodblog.modulename');
- $this->_options->setOpt('Duree en jours de la nouveauté', 'recentevents', 'text', NULL,7, $alabel);
- }
- function display($ar=NULL) {
- return $this->goto1($ar);
- }
- /// recherche des nouveautes pour abonnement
- protected function _whatsNew($ts,$user, $group=NULL, $specs=NULL, $timestamp=NULL) {
- list($koid)=explode(';',$specs);
- if(Kernel::isAKoid($koid)) $query='select * from '.$this->table.' where UPD>="'.$ts.'" and UPD<="'.$timestamp.'" and PUBLISH="1" AND blog="'.$koid.'"';
- else $query='select * from '.$this->table.' where UPD>="'.$ts.'" and UPD<="'.$timestamp.'" and PUBLISH="1"';
- $r=&$this->xset->browse(array('select'=>$query, 'selected'=>'0', 'pagesize'=>'99', 'tplentry'=>TZR_RETURN_DATA,'selectedfields'=>'all'));
- $txt='';
- foreach($r['lines_oid'] as $i => $oid) {
- $d1=&$this->xset->display(array('_lastupdate'=>true,'tplentry'=>TZR_RETURN_DATA,'oid'=>$oid,'_options'=>array('error'=>'return')));
- $url=$GLOBALS['TZR_SESSION_MANAGER']::admin_url(true,false).'&moid='.$this->_moid.'&function=goto1&oid='.$oid.'&tplentry=br&template=xmodtable/view.html&_direct=1';
- if(is_array($d1)) {
- $when=$d1['oUPD']->html;
- $who=$d1['lst_upd']['usernam'];
- $txt.='<li><a href="'.$url.'">'.$d1['oblog']->toText().' : '.getTextFromHTML($d1['link']).'</a> ('.$when.', '.$who.')</li>';
- }
- }
- return $txt;
- }
- function goto1($ar=NULL) {
- $p=new XParam($ar,array());
- $oid=$p->get('oid');
- $moid=$this->_moid;
- $right= $this->secure($oid, 'displayPost');
- if(!$right) securityWarning('XModBlog::goto1: could not access to objet '.$oid.' in module '.$moid);
- $url=$GLOBALS['TZR_SESSION_MANAGER']::admin_url(true,false);
- $disp=$this->xset->display(array('tplentry'=>TZR_RETURN_DATA, 'oid'=>$oid));
- $oidblog=$disp['oblog']->raw;
- $oidpost=$disp['opaperup']->raw;
- $oid=$disp['oid'];
- if($disp['odtype']->raw=='post')
- $durl="{$url}&moid=$moid&template=xmodblog/displaypost.html&oid={$oidblog}&post={$oid}&function=displayPost&tplentry=br&skip=1";
- if($disp['odtype']->raw=='comment')
- $durl="{$url}&moid=$moid&template=xmodblog/displaypost.html&oid={$oidblog}&post={$oidpost}&function=displayPost&tplentry=br&skip=1#{$oid}";
- header("Location: $durl");
- exit();
- }
- /// securite des fonctions accessibles par le web
- function secGroups($function, $group=NULL) {
- $g=array('addBlog'=>array('rwv','admin'),
- 'addComment'=>array('ro','rw','rwv','admin'),
- 'addPost'=>array('rw','rwv','admin'),
- 'addLink'=>array('rw','rwv','admin'),
- 'browseBlog'=>array('none','ro','rw','rwv','admin'),
- 'browseBlog2'=>array('none','ro','rw','rwv','admin'),
- 'browseBlogs'=>array('none','ro','rw','rwv','admin'),
- 'delBlog'=>array('rw','rwv','admin'),
- 'delPost'=>array('rw','rwv','admin'),
- 'delLink'=>array('rw','rwv','admin'),
- 'displayPost'=>array('none','ro','rw','rwv','admin'),
- 'displayPost2'=>array('none','ro','rw','rwv','admin'),
- 'editBlog'=>array('rwv','admin'),
- 'editComment'=>array('rw','rwv','admin'),
- 'editPost'=>array('rw','rwv','admin'),
- 'procAddBlog'=>array('rwv','admin'),
- 'procAddComment'=>array('none','ro','rw','rwv','admin'),
- 'procAddPost'=>array('rw','rwv','admin'),
- 'procAddLink'=>array('rw','rwv','admin'),
- 'procEditBlog'=>array('rwv','admin'),
- 'procEditComment'=>array('rw','rwv','admin'),
- 'procEditPost'=>array('rw','rwv','admin'),
- 'validatePost'=>array('rwv','admin'),
- 'validateBlog'=>array('rwv','admin'));
- if(isset($g[$function])) {
- if(!empty($group)) return in_array($group, $g[$function]);
- return $g[$function];
- }
- return parent::secGroups($function,$group);
- }
- /// rend vrai si $oid est l'identifiant d'un article/blog/post
- private function isA($oid, $dtype) {
- return (countSelectQuery('SELECT COUNT(KOID) FROM '.$this->table.' WHERE KOID="'.$oid.'" AND dtype="'.$dtype.'"')>0);
- }
- /// rend le nombre de blogs
- private function countBlogs() {
- return countSelectQuery('SELECT COUNT(KOID) FROM '.$this->table.' WHERE dtype="blog"');
- }
- /// rend l'oid d'un blog
- private function oneBlog() {
- $rs=selectQuery('SELECT KOID FROM '.$this->table.' WHERE dtype="blog"');
- if($rs && ($ors=$rs->fetch())) {
- return $ors['KOID'];
- }
- return NULL;
- }
-
- /// recherche de la liste des blogs disponibles
- function browseBlogs($ar=NULL) {
- $p=new XParam($ar, array('order'=>'title'));
- $tplentry=$p->get('tplentry');
- $ar['select']=$this->xset->select_query(array('order'=>'title','cond'=>
- array('dtype'=>array('=','blog'))));
- $ar['pagesize']=1000;
- $this->browse($ar);
- $br=XShell::from_screen('br');
- foreach($br['lines_oid'] as $i=>$oid) {
- // comptage du nombre de posts
- if ($this->secure($oid, ':rwv'))
- $query=$this->xset->select_query(array("cond"=>array('blog'=>array('=',$oid),
- 'dtype'=>array('=','post'))));
- else
- $query=$this->xset->select_query(array("cond"=>array('blog'=>array('=', $oid),
- 'PUBLISH'=>array('=', 1),
- 'dtype'=>array('=','post'))));
- $nbposts=countSelectQuery($query,true);
- $br['lines_posts'][$i]=$nbposts;
- $br['lines_poststopublish'][$i]=0;
- if ($this->secure($oid, ':rwv')){
- // comptage du nombre de posts a valider
- $query=$this->xset->select_query(array("cond"=>array('blog'=>array('=',$oid),
- 'PUBLISH'=>array('=',2),
- 'dtype'=>array('=','post'))));
- $nbposts=countSelectQuery($query, true);
- $br['lines_poststopublish'][$i]=$nbposts;
- }
- // comptage du nombre de commentaires
- if ($this->secure($oid, ':rwv'))
- $query=$this->xset->select_query(array("cond"=>array('blog'=>array('=',$oid),
- 'dtype'=>array('=','comment'))));
- else
- $query=$this->xset->select_query(array("cond"=>array('blog'=>array('=',$oid),
- 'PUBLISH'=>array('=', 1),
- 'dtype'=>array('=','comment'))));
-
- $nbposts=countSelectQuery($query, true);
- $br['lines_comments'][$i]=$nbposts;
- // comptage du nombre de commentaires a valider
- $br['lines_commentstopublish'][$i]=0;
- if ($this->secure($oid, ':rwv')){
- $query=$this->xset->select_query(array("cond"=>array('blog'=>array('=',$oid),
- 'PUBLISH'=>array('=',2),
- 'dtype'=>array('=','comment'))));
- $nbposts=countSelectQuery($query, true);
- $br['lines_commentstopublish'][$i]=$nbposts;
- }
- // article le plus recent
- $query=$this->xset->select_query(array("cond"=>array('blog'=>array('=',$oid),
- 'dtype'=>array('=','post'))));
- $rs=selectQueryGetOne(str_replace($this->xset->getTable().'.*', 'max(UPD) as maxupd', $query));
- $br['lines_lastpostdate'][$i]=$rs['maxupd'];
- }
- return XShell::toScreen1('br',$br);
- }
- /// affichage du contenu d'un blog
- // gestion des categorie et archive
- // affichage par défaut des 5 derniers post + list de categ
- // si on passe categ, affichage des post de la categ
- // si on passe mois = YYYYmm on affiche les post du mois
- function browseBlog2($ar=NULL) {
- $p=new XParam($ar, array());
- $tplentry=$p->get('tplentry');
- $oid=$p->get('oid');
- $categ = $p->get('categ');
- $mois = $p->get('mois');
- $right= $this->secure($oid, 'validatePost');
- //info du blog
- $r = $this->xset->display(array('tplentry'=>TZR_RETURN_DATA, 'oid'=>$oid));
- XShell::toScreen1($tplentry.'blog',$r);
- // list des posts
- $arsel =array();
- //classer par date decroissant
- $arsel['order']='datep DESC';
- //selection des post du blog voulu dans br_lines_oid
- $arsel['cond'] = array();
- $arsel['cond']['dtype'] = array('=','post');
- $arsel['cond']['blog'] = array('=',$oid);
- if(!$right) $arsel['cond']['PUBLISH'] = array('=',1);
-
- if($categ){
- $arsel['cond']['categ'] = array('=',$categ);
- $ar['pagesize'] = 9999;
- }elseif($mois){
- $arsel['cond']['datep'] = array('LIKE',"$mois%");
- $ar['pagesize'] = 9999;
- }else $ar['pagesize'] = 5;
- $ar['select']=$this->xset->select_query($arsel);
- $ar['selectedfields']='all';
- $this->xset->browse($ar);
- $br=XShell::from_screen($tplentry);
- foreach($br['lines_oid'] as $i=>$oid2) {
- if($right)
- $query=$this->xset->select_query(array('order'=>'datep ASC',
- 'cond'=>array('blog'=>array('=',$oid),
- 'paperup'=>array('=',$oid2),
- 'dtype'=>array('=','comment'))));
- else
- $query=$this->xset->select_query(array('order'=>'datep ASC',
- 'cond'=>array('blog'=>array('=',$oid),
- 'PUBLISH'=>array('=',1),
- 'paperup'=>array('=',$oid2),
- 'dtype'=>array('=','comment'))));
- // ligne un peu inutile a transformer en count pour avoir le nombre de commentaires
- $br['lines_comments'][$i]=$this->xset->browse(array('tplentry'=>TZR_RETURN_DATA,'select'=>$query,
- 'pagesize'=>100, 'selectedfields'=>'all'));
- }
- XShell::toScreen1($tplentry,$br);
- // commentaires recents
- $ar=array();
- $ar['select']=$this->xset->select_query(array('order'=>'datep DESC','cond'=>
- array('dtype'=>array('=','comment'),
- 'blog'=>array('=',$oid))));
- $ar['selectedfields']=array('datep','title','blog','paperup');
- $ar['pagesize']=10;
- $ar['tplentry']=$tplentry.'comments';
- $this->xset->browse($ar);
- // Liens
- $ar=array();
- $ar['select']=$this->xset->select_query(array('order'=>'datep DESC','cond'=>
- array('dtype'=>array('=','link'),
- 'blog'=>array('=',$oid))));
- $ar['selectedfields']=array('who','title','txt');
- $ar['pagesize']=100;
- $ar['tplentry']=$tplentry.'links';
- $this->xset->browse($ar);
-
- //liste de tous les posts
- $ar=array();
- // list des posts
- $arsel =array();
- //classer par date decroissant
- $arsel['order']='datep DESC';
- //selection detous les post brpost_lines_oid
- $arsel['cond'] = array();
- $arsel['cond']['dtype'] = array('=','post');
- $arsel['cond']['blog'] = array('=',$oid);
- $ar['select']=$this->xset->select_query(array('order'=>'datep DESC','cond'=>
- array('dtype'=>array('=','post'),
- 'blog'=>array('=',$oid))));
- $ar['selectedfields']=array('title','datep','categ');
- $ar['pagesize']=9999;
- $ar['tplentry']=$tplentry.'posts';
- $brpost = $this->xset->browse($ar);
- //construction du tableau des categ et archive
- $tbcateg = array_unique($brpost['lines_categ']);
- sort($tbcateg,SORT_STRING);
- $tb['categ'] = $tbcateg;
- $tbodatep = $brpost['lines_odatep'];
- foreach($tbodatep as $k=>$v){
- $tbdatep[$k] = date('Y-m',strtotime($v->raw));
- }
- $tbdatep = array_unique($tbdatep);
- sort($tbdatep);
- $tb['datep'] = $tbdatep;
- XShell::toScreen1($tplentry."classement",$tb);
- }
- /// rend les infos fondamentales sur le blog : titre, auteur, etc
- private function _getBlogTitle($oid) {
- return $this->xset->rDisplay($oid);
- }
- /// rend les infos fondamentales sur le post : titre, auteur, etc
- private function _getPostTitle($oid) {
- return $this->xset->rDisplay($oid);
- }
- /// rend les infos fondamentales sur le commentaire : titre, auteur, etc
- private function _getCommentTitle($oid) {
- return $this->xset->rDisplay($oid);
- }
- /// affichage du contenu d'un blog
- function browseBlog($ar=NULL) {
- $p=new XParam($ar, array());
- $tplentry=$p->get('tplentry');
- $oid=$p->get('oid');
- $right= $this->secure($oid, 'validatePost');
- $r = $this->xset->display(array('tplentry'=>TZR_RETURN_DATA, 'oid'=>$oid));
- XShell::toScreen1($tplentry.'blog',$r);
- if($right)
- $ar['select']=$this->xset->select_query(array('order'=>'datep DESC','cond'=>
- array('dtype'=>array('=','post'),
- 'blog'=>array('=',$oid))));
- else
- $ar['select']=$this->xset->select_query(array('order'=>'datep DESC','cond'=>
- array('dtype'=>array('=','post'),
- 'PUBLISH'=>array('=',1),
- 'blog'=>array('=',$oid))));
- $ar['selectedfields']='all';
- $br = $this->xset->browse($ar);
- // calcul des droits sur les objets
- if($this->object_sec){
- $lang_data = XShell::getLangData();
- $br['objects_sec']=$GLOBALS['XUSER']->getObjectsAccess($this, $lang_data, $br['lines_oid']);
- }
- foreach($br['lines_oid'] as $i=>$oid2) {
- if($right)
- $query=$this->xset->select_query(array('order'=>'datep ASC',
- 'cond'=>array('blog'=>array('=',$oid),
- 'paperup'=>array('=',$oid2),
- 'dtype'=>array('=','comment'))));
- else
- $query=$this->xset->select_query(array('order'=>'datep ASC',
- 'cond'=>array('blog'=>array('=',$oid),
- 'PUBLISH'=>array('=',1),
- 'paperup'=>array('=',$oid2),
- 'dtype'=>array('=','comment'))));
- // ligne un peu inutile a transformer en count pour avoir le nombre de commentaires
- $br['lines_comments'][$i]=$this->xset->browse(array('tplentry'=>TZR_RETURN_DATA,'select'=>$query,
- 'pagesize'=>100, 'selectedfields'=>'all'));
- }
- XShell::toScreen1($tplentry,$br);
- $ar=array();
- $ar['select']=$this->xset->select_query(array('order'=>'datep DESC','cond'=>
- array('dtype'=>array('=','post'),
- 'blog'=>array('=',$oid))));
- $ar['selectedfields']=array('datep','title');
- $ar['pagesize']=100;
- $ar['tplentry']=$tplentry.'posts';
- $this->xset->browse($ar);
- // commentaires recents
- $ar=array();
- $ar['select']=$this->xset->select_query(array('order'=>'datep DESC','cond'=>
- array('dtype'=>array('=','comment'),
- 'blog'=>array('=',$oid))));
- $ar['selectedfields']=array('datep','title','blog','paperup');
- $ar['pagesize']=100;
- $ar['tplentry']=$tplentry.'comments';
- $this->xset->browse($ar);
- // Liens
- $ar=array();
- $ar['select']=$this->xset->select_query(array('order'=>'datep DESC','cond'=>
- array('dtype'=>array('=','link'),
- 'blog'=>array('=',$oid))));
- $ar['selectedfields']=array('who','title','txt');
- $ar['pagesize']=100;
- $ar['tplentry']=$tplentry.'links';
- $this->xset->browse($ar);
- }
- /// affichage d'un article
- function displayPost2($ar=NULL) {
- $p=new XParam($ar, array());
- $tplentry=$p->get('tplentry');
- $oid=$p->get('oid');
- $post=$p->get('post');
- //display du blog
- $r = $this->xset->display(array('tplentry'=>TZR_RETURN_DATA, 'oid'=>$oid));
- XShell::toScreen1($tplentry.'blog',$r);
- //display du post
- $r = $this->xset->display(array('tplentry'=>TZR_RETURN_DATA, 'oid'=>$post));
- XShell::toScreen1($tplentry.'post',$r);
- $right= $this->secure($oid, 'validatePost');
- if($right)
- $query=$this->xset->select_query(array('order'=>'datep ASC',
- 'cond'=>array('blog'=>array('=',$oid),
- 'paperup'=>array('=',$post),
- 'dtype'=>array('=','comment'))));
- else
- $query=$this->xset->select_query(array('order'=>'datep ASC',
- 'cond'=>array('blog'=>array('=',$oid),
- 'paperup'=>array('=',$post),
- 'PUBLISH'=>array('=',1),
- 'dtype'=>array('=','comment'))));
- //commentaire du post
- $this->xset->browse(array('tplentry'=>$tplentry.'comment','select'=>$query,
- 'pagesize'=>100, 'selectedfields'=>'all'));
- $this->addComment(array('tplentry'=>$tplentry.'add'));
- // commentaires recents
- $ar=array();
- $ar['select']=$this->xset->select_query(array('order'=>'datep DESC','cond'=>
- array('dtype'=>array('=','comment'),'blog'=>array('=',$oid))));
- $ar['selectedfields']=array('datep','title','blog','paperup');
- $ar['pagesize']=10;
- $ar['tplentry']=$tplentry.'comments';
- XModTable::browse($ar);
- //liste de tous les posts
- $ar=array();
- // list des posts
- $arsel =array();
- //classer par date decroissant
- $arsel['order']='datep DESC';
- //selection de tous les posts brposts_lines_oid
- $arsel['cond'] = array();
- $arsel['cond']['dtype'] = array('=','post');
- $arsel['cond']['blog'] = array('=',$oid);
- $ar['select']=$this->xset->select_query(array('order'=>'datep DESC','cond'=>
- array('dtype'=>array('=','post'),
- 'blog'=>array('=',$oid))));
- $ar['selectedfields']=array('title','datep','categ');
- $ar['pagesize']=9999;
- $ar['tplentry']=$tplentry.'posts';
- $brpost = $this->xset->browse($ar);
- //construction du tableau des categ et archive
- $tbcateg = array_unique($brpost['lines_categ']);
- sort($tbcateg,SORT_STRING);
- $tb['categ'] = $tbcateg;
- $tbodatep = $brpost['lines_odatep'];
- foreach($tbodatep as $k=>$v){
- $tbdatep[$k] = date('Y-m',strtotime($v->raw));
- }
- $tbdatep = array_unique($tbdatep);
- sort($tbdatep);
- $tb['datep'] = $tbdatep;
- XShell::toScreen1($tplentry."classement",$tb);
- }
- /// affichage d'un article
- function displayPost($ar=NULL) {
- $p=new XParam($ar, array());
- $tplentry=$p->get('tplentry');
- $oid=$p->get('oid');
- $post=$p->get('post');
- $r = $this->xset->display(array('tplentry'=>TZR_RETURN_DATA, 'oid'=>$oid));
- XShell::toScreen1($tplentry.'blog',$r);
- $r = $this->xset->display(array('tplentry'=>TZR_RETURN_DATA, 'oid'=>$post));
- if ($this->object_sec){
- $lang_data = XShell::getLangData();
- $oids = array($post);
- list($r['object_sec']) = $GLOBALS['XUSER']->getObjectsAccess($this, $lang_data, $oids);
- }
- XShell::toScreen1($tplentry.'post',$r);
- $right= $this->secure($oid, 'validatePost');
- if($right)
- $query=$this->xset->select_query(array('order'=>'datep ASC',
- 'cond'=>array('blog'=>array('=',$oid),
- 'paperup'=>array('=',$post),
- 'dtype'=>array('=','comment'))));
- else
- $query=$this->xset->select_query(array('order'=>'datep ASC',
- 'cond'=>array('blog'=>array('=',$oid),
- 'paperup'=>array('=',$post),
- 'PUBLISH'=>array('=',1),
- 'dtype'=>array('=','comment'))));
- $this->xset->browse(array('tplentry'=>$tplentry.'comment','select'=>$query,
- 'pagesize'=>100, 'selectedfields'=>'all'));
- $this->addComment(array('tplentry'=>$tplentry.'add'));
- $ar=array();
- $ar['select']=$this->xset->select_query(array('order'=>'datep DESC','cond'=>
- array('dtype'=>array('=','post'),
- 'blog'=>array('=',$oid))));
- $ar['selectedfields']=array('datep','title');
- $ar['pagesize']=100;
- $ar['tplentry']=$tplentry.'posts';
- XModTable::browse($ar);
- // commentaires recents
- $ar=array();
- $ar['select']=$this->xset->select_query(array('order'=>'datep DESC','cond'=>
- array('dtype'=>array('=','comment'),'blog'=>array('=',$oid))));
- $ar['selectedfields']=array('datep','title','blog','paperup');
- $ar['pagesize']=10;
- $ar['tplentry']=$tplentry.'comments';
- XModTable::browse($ar);
- }
- /// suppression d'un article et tous les commentaires associes
- function delPost($ar=NULL) {
- $p=new XParam($ar, array());
- $post=$p->get('post');
- updateQuery('delete from '.$this->table.' where KOID="'.$post.'" OR paperup="'.$post.'"');
- }
- /// validation d'un blog
- function validateBlog($ar=NULL) {
- $p=new XParam($ar, array());
- $oid=$p->get('oid');
- $this->publish(array('oid'=>$oid));
- }
- /// validation d'un article ou d'un commentaire
- function validatePost($ar=NULL) {
- $p=new XParam($ar, array());
- $post=$p->get('post');
- $this->publish(array('oid'=>$post));
- }
- function addComment($ar=NULL) {
- parent::insert($ar);
- }
- /// ajout d'un commentaire sur un article.
- function procAddComment($ar=NULL) {
- $p=new XParam($ar, array());
- $ar['dtype']='comment';
- $ar['blog']=$p->get('oid');
- $ar['paperup']=$p->get('post');
- $ar['datep']=date('Y-m-d H:i:s');
- if(!XUser::isNobody()) {
- $ar['whoa'] = XUser::get_current_user_uid();
- }
- parent::procInsert($ar);
- }
- /// ajout d'un blog dans la liste des blogs
- function addBlog($ar) {
- parent::insert($ar);
- }
- /// ajout d'un blog dans la liste des blogs
- function procAddBlog($ar=NULL) {
- $p=new XParam($ar, array());
- $ar['dtype']='blog';
- $ar['datep']=date('Y-m-d H:i:s');
- parent::procInsert($ar);
- }
- /// generation de l'ecran des proproetes d'un blog
- function editBlog($ar) {
- parent::edit($ar);
- }
- /// modifications d'un blog
- function procEditBlog($ar=NULL) {
- $p=new XParam($ar, array());
- parent::procEdit($ar);
- }
- /// suppression d'un blog
- function delBlog($ar=NULL){
- $p=new XParam($ar, array());
- $oid=$p->get('oid');
- $blog=$this->xset->display(array(
- 'oid'=>$oid,
- 'tplentry'=>TZR_RETURN_DATA
- )
- );
- if($blog['odtype']->raw=='blog'){
- updateQuery('delete from '.$this->table.' where KOID="'.$oid.'" OR blog="'.$oid.'"');
- }
- }
- /// gestion des posts
- function editPost($ar=NULL) {
- $p=new XParam($ar, array());
- $ar['oid']=$p->get('post');
- $ar['options']['blog']['readonly']=2;
- parent::edit($ar);
- }
- function procEditPost($ar=NULL) {
- $p=new XParam($ar, array());
- parent::procEdit($ar);
- }
- function addPost($ar=NULL) {
- parent::insert($ar);
- }
- function procAddPost($ar=NULL) {
- $p=new XParam($ar, array());
- $ar['dtype']='post';
- $ar['blog']=$p->get('oid');
- $ar['datep']=date('Y-m-d H:i:s');
- $who = $p->get('who');
- if (!empty($who['url'])){
- $ar['who'] = array('label'=>$who['label'],
- 'url'=>'mailto:'.$who['url'],
- '_target'=>'_blank');
-
- }
- parent::procInsert($ar);
- }
- // gestion des commentaires
- //
- function editComment($ar=NULL) {
- $p=new XParam($ar, array());
- $ar['oid']=$p->get('post');
- parent::edit($ar);
- }
- function procEditComment($ar=NULL) {
- $p=new XParam($ar, array());
- parent::procEdit($ar);
- }
- /// gestion des liens
- function addLink($ar=NULL) {
- parent::insert($ar);
- }
- function procAddLink($ar=NULL) {
- $p=new XParam($ar, array());
- $ar['dtype']='link';
- $ar['blog']=$p->get('oid');
- $ar['datep']=date('Y-m-d H:i:s');
- parent::procInsert($ar);
- }
- function delLink($ar=NULL) {
- $p=new XParam($ar,NULL);
- $link=$p->get('link');
- updateQuery('delete from '.$this->table.' where KOID="'.$link.'" AND dtype="link"');
- }
- /// Action principale du menu
- public function getMainAction(){
- return $GLOBALS['TZR_SESSION_MANAGER']::complete_self().'moid='.$this->_moid.'&function=browseBlogs&tplentry=br&template=xmodblog/browseblogs.html';
- }
- /// cette fonction est appliquee pour afficher l'ensemble des methodes de ce module
- protected function _actionlist(&$my=NULL) {
- XModule::_actionlist($my);
- parent::_clearActionlist($my);
- $myclass='xmodblog';
- $moid=$this->_moid;
- $dir='xmodblog';
- $cnt=$this->countBlogs();
- $o1=new XModuleAction($this, 'browseBlogs', XLabels::getSysLabel($myclass,'browseblogs','text'),
- '&moid='.$moid.
- '&_function=browseBlogs&tplentry=br&'.
- 'template='.$dir.'/browseblogs.html');
- $o1->containerable=$o1->menuable=true;
- $o1->setToolbar('general','browse');
- $my['browse']=$o1;
- $oid=@$_REQUEST['oid'];
- $post=@$_REQUEST['post'];
- if($this->secure(NULL, ':admin')) {
- $o1=new XModuleAction($this, 'administration', XLabels::getSysLabel('general', 'administration', 'text'),
- '&moid='.$this->_moid.'&function=adminBrowseFields&template=xmodule/admin/browseFields.html');
- $o1->homepageable = false;
- $o1->menuable=true;
- $o1->quicklinkable=true;
- $o1->group='actions';
- $o1->setToolBar('general', 'administration');
- $my['administration']=$o1;
- }
- if($this->secure(NULL, 'addBlog')) {
- $o1=new XModuleAction($this, 'addblog', XLabels::getSysLabel($myclass,'addblog','text'),
- '&moid='.$moid.
- '&_function=addBlog&tplentry=br&'.
- 'template='.$dir.'/addblog.html');
- $o1->homepageable=false;
- $o1->menuable=$o1->quicklinkable=true;
- $o1->group='edit';
- $o1->setToolbar('general','new');
- $my['insert']=$o1;
- }
- if(!empty($oid)) {
- $o1=new XModuleAction($this, 'browseBlog', XLabels::getSysLabel($myclass,'browseblog','text'),
- '&moid='.$moid.
- '&_function=browseBlog&tplentry=br&oid='.$_REQUEST['oid'].'&'.
- 'template='.$dir.'/browseblog.html');
- $o1->homepageable=$o1->menuable=$o1->quicklinkable=true;
- $o1->setToolbar('general','view');
- $my['browseblog']=$o1;
- $right= $this->secure($oid, 'addPost');
- $isablog=$this->isA($oid,'blog');
- $isapost=$this->isA($post,'post');
- $isacomment=$this->isA($post,'comment');
- if($isablog && $right) {
- $o1=new XModuleAction($this, 'addpost', XLabels::getSysLabel($myclass,'addpost','text'),
- '&moid='.$moid.
- '&_function=addPost&tplentry=br&oid='.$oid.'&'.
- 'template='.$dir.'/addpost.html');
- $o1->homepageable=$o1->menuable=$o1->quicklinkable=true;
- $o1->group='edit';
- $o1->setToolbar('general','new');
- $my['insert']=$o1;
- }
- $right= $this->secure($oid, 'addComment');
- if($isapost){
- if($right) {
- $o1=new XModuleAction($this, 'addcomment', XLabels::getSysLabel($myclass,'addcomment','text'),
- '&moid='.$moid.
- '&_function=addComment&tplentry=br&oid='.$oid.'&'.
- '&post='.$post.'&template='.$dir.'/addcomment.html');
- $o1->homepageable=$o1->menuable=$o1->quicklinkable=true;
- $o1->group='edit';
- $o1->setToolbar('general','new');
- $my['insert']=$o1;
- }
- $right= $this->secure($oid, 'editPost');
- if($right) {
- $o1=new XModuleAction($this, 'edit', XLabels::getSysLabel($myclass,'editpost','text'),
- '&moid='.$moid.
- '&_function=editPost&tplentry=br&oid='.$oid.'&'.
- '&post='.$post.'&template='.$dir.'/editpost.html');
- $o1->homepageable=$o1->menuable=$o1->quicklinkable=true;
- $o1->group='edit';
- $o1->setToolbar('general','edit');
- $my['edit']=$o1;
- }
- }
- }
- unset($my['query']);
- if($this->interactive) {
- $o1=new XModuleAction($this,'browseBlogs',$this->modulename,
- '&moid='.$moid.'&_function=browseBlogs&tplentry=br&template='.$dir.'/browseblogs.html');
- $my['stack'][]=$o1;
- if(!empty($oid)) {
- $blog=$this->_getBlogTitle($oid);
- $o1=new XModuleAction($this,'browseBlog',$blog['otitle']->toText(),
- '&moid='.$moid.'&_function=browseBlog&tplentry=br&oid='.$oid.'&template='.$dir.'/browseblog.html');
- $my['stack'][]=$o1;
- if($isapost){
- $postd=$this->_getPostTitle($post);
- $o1=new XModuleAction($this,'displayPost',$postd['otitle']->toText(),
- '&moid='.$moid.'&_function=displayPost&tplentry=br&oid='.$oid.'&post='.$post.
- '&template='.$dir.'/displaypost.html');
- $my['stack'][]=$o1;
- }elseif($isacomment){
- $com=$this->_getCommentTitle($post);
- $postd=$this->_getPostTitle($com['opaperup']->raw);
- $o1=new XModuleAction($this,'displayPost',$postd['otitle']->toText(),
- '&moid='.$moid.'&_function=displayPost&tplentry=br&oid='.$oid.'&post='.$postd['oid'].
- '&template='.$dir.'/displaypost.html');
- $my['stack'][]=$o1;
- $o1=new XModuleAction($this,'editComment',$com['otitle']->toText(),
- '&moid='.$moid.'&_function=editComment&tplentry=br&oid='.$oid.'&post='.$com['oid'].
- '&template='.$dir.'/editcomment.html');
- $my['stack'][]=$o1;
- }
- }
- $modsubmoid=XModule::getMoid(XMODSUB_TOID);
- if(!empty($modsubmoid)){
- $o1=new XModuleAction($this, 'subscribe', XLabels::getSysLabel('xmodsub','subadd','text'),
- '&amoid='.$this->_moid.'&class=XModSub&moid='.$modsubmoid.
- '&_function=preSubscribe&tplentry=br&template=xmodsub/sub.html&aoid='.$oid);
- $o1->menuable=true;
- $o1->group='more';
- $my['subscribe']=$o1;
- }
- }
- }
- }
- ?>