Dotclear

Changeset 1307


Ignore:
Timestamp:
07/09/09 12:33:39 (14 years ago)
Author:
JcDenis
Message:

rateIt 0.5:

  • fixed PostgreSQL compatibility
Location:
plugins/rateIt
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • plugins/rateIt/README.txt

    r1301 r1307  
    1 rateIt 0.4 (2009/06/27) plugin for Dotclear 2 
     1rateIt 0.5 (2009/07/09) plugin for Dotclear 2 
    22 
    33Préambule: 
     
    4141============ 
    4242 
    43 http://blog.jcdenis.com/?q=dotclear+plugin+rateIt 
     43http://dotclear.jcdenis.com/ 
    4444http://forum.dotclear.net/viewtopic.php?id=39801 
    4545http://lab.dotclear.org/wiki/plugin/rateIt 
     
    5656=================== 
    5757 
    58 Une procédure complète est disponible à partir du gestionnaire d'extension  
     58Une procédure est disponible à partir du gestionnaire d'extension  
    5959ou depuis l'onglet "désinstallation" de l'extension "RateIt". 
     60Si la désintallation est impossible par cette procédure,  
     61il faut supprimer les fichiers et la table rateit manuellement. 
    6062 
    6163 
  • plugins/rateIt/_define.php

    r1301 r1307  
    1313 
    1414if (!defined('DC_RC_PATH')) return; 
    15   
     15 
    1616$this->registerModule( 
    1717     /* Name */               "Rate it", 
    1818     /* Description*/         "Rating system for your posts", 
    1919     /* Author */             "JC Denis", 
    20      /* Version */            '0.4', 
     20     /* Version */            '0.5', 
    2121     /* Permissions */        'admin' 
    2222); 
    23      /* date */          #20090703 
     23     /* date */          #20090709 
    2424?> 
  • plugins/rateIt/_public.php

    r1301 r1307  
    9090          return ''; 
    9191     } 
    92      private static function dirname(&$f) 
    93      { 
    94           $d = array_pop(explode(PATH_SEPARATOR, DC_PLUGINS_ROOT.'/rateIt/default-templates')); 
    95           $f = $d.'/'.$f; 
    96           return dirname($f); 
     92     private static function path($f) 
     93     { 
     94          $paths = explode(PATH_SEPARATOR, DC_PLUGINS_ROOT.'/rateIt/default-templates'); 
     95          $d = array_pop($paths); 
     96          return $d.'/'.$f; 
    9797     } 
    9898 
     
    154154          } 
    155155 
    156           $path = self::dirname($f); 
     156          $f = self::path($f); 
     157          $path = dirname($f); 
    157158          if (!is_dir($path)) { 
    158159               self::p404(); 
     
    238239 
    239240          $f = 'tpl/rateit.html'; 
    240           $d = self::dirname($f); 
     241          $f = self::path($f); 
     242          $d = dirname($f); 
    241243          $core->tpl->setPath($core->tpl->getPath(),$d); 
    242244 
  • plugins/rateIt/_widgets.php

    r1301 r1307  
    136136          $w->rateitrank->setting('limit',__('Length:'),3,'combo',array( 
    137137               1=>1,2=>2,3=>3,4=>4,5=>5,10=>10,15=>15,20=>20)); 
    138           $w->rateitrank->setting('sortby',__('Order by:'),'rateit_note','combo',array( 
    139                __('Note') => 'rateit_note', 
     138          $w->rateitrank->setting('sortby',__('Order by:'),'rateit_avg','combo',array( 
     139               __('Note') => 'rateit_avg', 
    140140               __('Votes') => 'rateit_total')); 
    141141          $w->rateitrank->setting('sort',__('Sort:'),'desc','combo',array( 
     
    156156 
    157157          $p = array('from'=>'','sql'=>'','columns'=>array()); 
    158           $p['order'] = ($w->sortby && in_array($w->sortby,array('rateit_note','rateit_total'))) ?  
     158          $p['order'] = ($w->sortby && in_array($w->sortby,array('rateit_avg','rateit_total'))) ?  
    159159               $w->sortby.' ' : 'rateit_total '; 
    160160 
     
    166166 
    167167          if ($w->type == 'post') { 
    168                $p['columns'][] = "CONCAT('".$core->blog->url.$core->getPostPublicUrl('post','')."',post_url) AS url"; 
    169                $p['columns'][] = 'post_title AS title'; 
    170                $p['from'] .= ' LEFT JOIN '.$core->prefix.'post P ON P.post_id = RI.rateit_id '; 
    171                $p['sql'] .= ' AND post_status = 1 AND post_password IS NULL '; 
     168               $p['columns'][] = $core->con->concat("'".$core->blog->url.$core->getPostPublicUrl('post','')."'",'P.post_url').' AS url'; 
     169               $p['columns'][] = 'P.post_title AS title'; 
     170               $p['groups'][] = 'P.post_url'; 
     171               $p['groups'][] = 'P.post_title'; 
     172               $p['from'] .= ' INNER JOIN '.$core->prefix.'post P ON CAST(P.post_id as char)=RI.rateit_id '; 
     173               $p['sql'] .= ' AND P.post_status = 1 AND P.post_password IS NULL '; 
    172174          } 
    173175          $w->sql = $p; 
  • plugins/rateIt/inc/class.rateit.install.php

    r1301 r1307  
    3131               ->rateit_id ('varchar',255,false) 
    3232               ->rateit_type('varchar',64,false) 
    33                ->rateit_note ('integer',0,false) 
    34                ->rateit_quotient ('integer',0,false) 
     33               ->rateit_note ('float',0,false) 
     34               ->rateit_quotient ('float',0,false) 
    3535               ->rateit_ip ('varchar',64,false) 
    3636               ->rateit_time ('timestamp',0,false,'now()') 
  • plugins/rateIt/inc/class.rateit.php

    r1301 r1307  
    152152     } 
    153153 
    154      public function getPostsByRate($p=array(),$count_only=false) 
    155      { 
    156           if (!isset($p['columns'])) $p['columns'] = array(); 
    157           $p['columns'][] = 'SUM(RI.rateit_note / RI.rateit_quotient) as rateit_sum'; 
    158           $p['columns'][] = 'MAX(RI.rateit_note / RI.rateit_quotient) as rateit_max'; 
    159           $p['columns'][] = 'MIN(RI.rateit_note / RI.rateit_quotient) as rateit_min'; 
    160           $p['columns'][] = '(SUM(RI.rateit_note / RI.rateit_quotient) / COUNT(RI.rateit_note)) as rateit_avg'; 
    161           $p['columns'][] = 'COUNT(RI.rateit_note) as rateit_total'; 
    162  
    163           if (!isset($p['from'])) $p['from'] = ''; 
    164                $p['from'] .= ' LEFT OUTER JOIN '.$this->table.' RI ON P.post_id = RI.rateit_id '; 
    165  
    166           if (!isset($p['sql'])) $p['sql'] = ''; 
    167  
    168           if (!empty($p['rateit_type'])) { 
    169                $p['sql'] .= "AND RI.rateit_type = '".$this->core->con->escape($p['rateit_type'])."' "; 
    170                unset($p['rateit_type']); 
    171           } 
    172  
    173           if (!$count_only) 
    174                $p['sql'] .= 'GROUP BY RI.rateit_id '; 
    175  
    176           return $this->core->blog->getPosts($p,$count_only); 
     154     public function getPostsByRate($params=array(),$count_only=false) 
     155     { 
     156          $params['columns'][] = 'COUNT(rateit_id) as rateit_count'; 
     157      
     158          $params['from'] = 'INNER JOIN '.$this->table.' ON CAST(P.post_id as char)=rateit_id '; 
     159           
     160          if (!isset($params['sql'])) $params['sql'] = ''; 
     161 
     162          if (!empty($params['rateit_type'])) { 
     163               $params['sql'] .= "AND rateit_type = '".$this->core->con->escape($params['rateit_type'])."' "; 
     164               unset($params['rateit_type']); 
     165          } 
     166 
     167          $params['sql'] .= 'GROUP BY rateit_id, rateit_type '; 
     168          if (!$count_only) { 
     169 
     170               if (!empty($params['no_content'])) { 
     171                    $c_req = ''; 
     172               } else { 
     173                    $c_req = 
     174                    'post_excerpt, post_excerpt_xhtml, '. 
     175                    'post_content, post_content_xhtml, post_notes, '; 
     176               } 
     177 
     178               if (!empty($params['columns']) && is_array($params['columns'])) { 
     179                    $c = $params['columns']; 
     180                    $cols = array(); 
     181                    foreach($c AS $k => $v) { 
     182                         if (!preg_match('/(\sas\s)/',$v)) $cols[] = $v; 
     183                    } 
     184                    if (!empty($cols))  
     185                         $c_req .= implode(', ',$cols).', '; 
     186               } 
     187 
     188               $params['sql'] .= ', '. 
     189               'P.post_id, P.blog_id, P.user_id, P.cat_id, post_dt, '. 
     190               'post_tz, post_creadt, post_upddt, post_format, post_password, '. 
     191               'post_url, post_lang, post_title, '.$c_req. 
     192               'post_type, post_meta, post_status, post_selected, post_position, '. 
     193               'post_open_comment, post_open_tb, nb_comment, nb_trackback, '. 
     194               'U.user_name, U.user_firstname, U.user_displayname, U.user_email, '. 
     195               'U.user_url, '. 
     196               'C.cat_title, C.cat_url, C.cat_desc '; 
     197          } 
     198 
     199          return $this->core->blog->getPosts($params,$count_only); 
    177200     } 
    178201 
     
    183206          else { 
    184207               $strReq = 
    185                'SELECT '. 
     208               'SELECT DISTINCT '. 
    186209               'SUM(RI.rateit_note / RI.rateit_quotient) as rateit_sum, '. 
    187210               'MAX(RI.rateit_note / RI.rateit_quotient) as rateit_max, '. 
     
    193216 
    194217               $strReq .=  
    195                'COUNT(RI.rateit_note) as rateit_total '; 
     218               'COUNT(RI.rateit_id) as rateit_total '; 
    196219          } 
    197220 
     
    242265          if (!$count_only) { 
    243266               $strReq .= 'GROUP BY RI.rateit_id '; 
     267               if (!empty($params['groups']) && is_array($params['groups']))  
     268                    $strReq .= ', '.implode(', ',$params['groups']).' '; 
    244269 
    245270               if (!empty($params['order'])) 
  • plugins/rateIt/inc/lib.rateit.list.php

    r1301 r1307  
    4141          $this->lines = ''; 
    4242          $this->cells = ''; 
    43            
     43 
     44          $this->rateit = new rateIt($core); 
     45 
    4446          $this->init(); 
    4547     } 
     
    9193class rateItPostsList extends rateItExtList 
    9294{ 
     95     protected $core; 
     96     protected $rs; 
     97     protected $rs_count; 
     98     protected $base_url; 
     99 
    93100     public function init() 
    94101     { 
    95102          self::headline(array( 
    96103               __('Title') => 'colspan="2"', 
     104               __('Votes') => '', 
    97105               __('Note') => '', 
    98                __('Votes') => '', 
    99106               __('Higher') => '', 
    100107               __('Lower') => '', 
     
    137144          $q = $this->core->blog->settings->rateit_quotient; 
    138145          $d = $this->core->blog->settings->rateit_digit; 
     146           
     147          $r = $this->rateit->get('post',$this->rs->post_id); 
    139148 
    140149          self::line( 
     
    143152                    array(form::checkbox(array('entries[]'),$this->rs->post_id,'','','',!$this->rs->isEditable()),'class="nowrap"'), 
    144153                    array('<a href="'.$this->core->getPostAdminURL($this->rs->post_type,$this->rs->post_id).'">'.html::escapeHTML($this->rs->post_title).'</a>','class="maximal"'), 
     154                    # Votes 
     155                    array('<a title="'.__('Show rating details').'" href="plugin.php?p=rateIt&amp;t=details&amp;type=post&amp;id='.$this->rs->post_id.'">'.$r->total.'</a>','class="nowrap"'), 
    145156                    # Note 
    146                     array(round($this->rs->rateit_avg * $q,$d),'class="nowrap"'), 
    147                     # Votes 
    148                     array('<a title="'.__('Show rating details').'" href="plugin.php?p=rateIt&amp;t=details&amp;type=post&amp;id='.$this->rs->post_id.'">'.$this->rs->rateit_total.'</a>','class="nowrap"'), 
     157                    array($r->note,'class="nowrap"'), 
    149158                    # Higher 
    150                     array(round($this->rs->rateit_max * $q,$d),'class="nowrap"'), 
     159                    array($r->max,'class="nowrap"'), 
    151160                    # Lower 
    152                     array(round($this->rs->rateit_min * $q,$d),'class="nowrap"'), 
     161                    array($r->min,'class="nowrap"'), 
    153162                    # Post date 
    154163                    array(dt::dt2str(__('%Y-%m-%d %H:%M'),$this->rs->post_dt),'class="nowrap"'), 
  • plugins/rateIt/index.php

    r1301 r1307  
    9696$sortby_combo = array( 
    9797__('Date') => 'post_dt', 
    98 __('Votes') => 'rateit_total', 
    99 __('Note') => 'rateit_note', 
    100 __('Higher') => 'rateit_max', 
    101 __('Lower') => 'rateit_min', 
     98__('Votes') => 'rateit_count', 
    10299__('Title') => 'post_title', 
    103100__('Category') => 'cat_title', 
     
    118115$params['no_content'] = true; 
    119116$params['rateit_type'] = 'post'; 
    120 $params['post_type'] = ''; 
     117$params['post_type'] = 'post'; 
    121118 
    122119/** Filters **/ 
     
    533530<h3>'.__('Support:').'</h3> 
    534531<ul> 
    535 <li><a href="http://blog.jcdenis.com/?q=dotclear+plugin+rateIt">Author\'s blog</a></li> 
    536 <li><a href="http://forum.dotclear.net/index.php">Dotclear forum</a></li> 
     532<li><a href="http://dotclear.jcdenis.com">Author\'s blog</a></li> 
     533<li><a href="http://forum.dotclear.net/viewtopic.php?id=39801">Dotclear forum</a></li> 
    537534<li><a href="http://lab.dotclear.org/wiki/plugin/rateIt">Dotclear lab</a></li> 
    538535</ul> 
     
    557554<li>Packaged with Dotclear plugin Packager.</li> 
    558555<li>Used jQuery Star Rating Plugin v3.12 by <a href="http://www.fyneworks.com/jquery/star-rating/">Fyneworks</a></li> 
     556</ul> 
     557<h3>'.__('Special thanks to').'</h3> 
     558<ul> 
     559<li>BG - <a href="http://bg-web.fr/dotclear/">http://bg-web.fr/dotclear/</a></li> 
     560<li>jmh2o - <a href="http://www.levertpays.be/">http://www.levertpays.be/</a></li> 
    559561</ul> 
    560562</div> 
Note: See TracChangeset for help on using the changeset viewer.

Sites map