Dotclear

source: plugins/blogroll/class.dc.blogroll.php @ 270:48858be15bda

Revision 270:48858be15bda, 4.5 KB checked in by Franck <carnet.franck.paul@…>, 14 years ago (diff)

Changement d'année

Line 
1<?php
2# -- BEGIN LICENSE BLOCK ---------------------------------------
3#
4# This file is part of Dotclear 2.
5#
6# Copyright (c) 2003-2011 Olivier Meunier & Association Dotclear
7# Licensed under the GPL version 2.0 license.
8# See LICENSE file or
9# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
10#
11# -- END LICENSE BLOCK -----------------------------------------
12if (!defined('DC_RC_PATH')) { return; }
13
14class dcBlogroll
15{
16     private $blog;
17     private $con;
18     private $table;
19     
20     public function __construct($blog)
21     {
22          $this->blog =& $blog;
23          $this->con =& $blog->con;
24          $this->table = $this->blog->prefix.'link';
25     }
26     
27     public function getLinks($params=array())
28     {
29          $strReq = 'SELECT link_id, link_title, link_desc, link_href, '.
30                    'link_lang, link_xfn, link_position '.
31                    'FROM '.$this->table.' '.
32                    "WHERE blog_id = '".$this->con->escape($this->blog->id)."' ";
33         
34          if (isset($params['link_id'])) {
35               $strReq .= 'AND link_id = '.(integer) $params['link_id'].' ';
36          }
37         
38          $strReq .= 'ORDER BY link_position ';
39         
40          $rs = $this->con->select($strReq);
41          $rs = $rs->toStatic();
42         
43          $this->setLinksData($rs);
44         
45          return $rs;
46     }
47     
48     public function getLink($id)
49     {
50          $params['link_id'] = $id;
51         
52          $rs = $this->getLinks($params);
53         
54          return $rs;
55     }
56     
57     public function addLink($title,$href,$desc='',$lang='', $xfn='')
58     {
59          $cur = $this->con->openCursor($this->table);
60         
61          $cur->blog_id = (string) $this->blog->id;
62          $cur->link_title = (string) $title;
63          $cur->link_href = (string) $href;
64          $cur->link_desc = (string) $desc;
65          $cur->link_lang = (string) $lang;
66          $cur->link_xfn = (string) $xfn;
67         
68          if ($cur->link_title == '') {
69               throw new Exception(__('You must provide a link title'));
70          }
71         
72          if ($cur->link_href == '') {
73               throw new Exception(__('You must provide a link URL'));
74          }
75         
76          $strReq = 'SELECT MAX(link_id) FROM '.$this->table;
77          $rs = $this->con->select($strReq);
78          $cur->link_id = (integer) $rs->f(0) + 1;
79         
80          $cur->insert();
81          $this->blog->triggerBlog();
82     }
83     
84     public function updateLink($id,$title,$href,$desc='',$lang='', $xfn='')
85     {
86          $cur = $this->con->openCursor($this->table);
87         
88          $cur->link_title = (string) $title;
89          $cur->link_href = (string) $href;
90          $cur->link_desc = (string) $desc;
91          $cur->link_lang = (string) $lang;
92          $cur->link_xfn = (string) $xfn;
93         
94          if ($cur->link_title == '') {
95               throw new Exception(__('You must provide a link title'));
96          }
97         
98          if ($cur->link_href == '') {
99               throw new Exception(__('You must provide a link URL'));
100          }
101         
102          $cur->update('WHERE link_id = '.(integer) $id.
103               " AND blog_id = '".$this->con->escape($this->blog->id)."'");
104          $this->blog->triggerBlog();
105     }
106     
107     public function updateCategory($id,$desc)
108     {
109          $cur = $this->con->openCursor($this->table);
110         
111          $cur->link_desc = (string) $desc;
112         
113          if ($cur->link_desc == '') {
114               throw new Exception(__('You must provide a category title'));
115          }
116         
117          $cur->update('WHERE link_id = '.(integer) $id.
118          " AND blog_id = '".$this->con->escape($this->blog->id)."'");
119          $this->blog->triggerBlog();
120     }
121     
122     public function addCategory($title)
123     {
124          $cur = $this->con->openCursor($this->table);
125         
126          $cur->blog_id = (string) $this->blog->id;
127          $cur->link_desc = (string) $title;
128          $cur->link_href = '';
129          $cur->link_title = '';
130         
131          if ($cur->link_desc == '') {
132               throw new Exception(__('You must provide a category title'));
133          }
134         
135          $strReq = 'SELECT MAX(link_id) FROM '.$this->table;
136          $rs = $this->con->select($strReq);
137          $cur->link_id = (integer) $rs->f(0) + 1;
138         
139          $cur->insert();
140          $this->blog->triggerBlog();
141         
142          return $cur->link_id;
143     }
144     
145     public function delItem($id)
146     {
147          $id = (integer) $id;
148         
149          $strReq = 'DELETE FROM '.$this->table.' '.
150                    "WHERE blog_id = '".$this->con->escape($this->blog->id)."' ".
151                    'AND link_id = '.$id.' ';
152         
153          $this->con->execute($strReq);
154          $this->blog->triggerBlog();
155     }
156     
157     public function updateOrder($id,$position)
158     {
159          $cur = $this->con->openCursor($this->table);
160          $cur->link_position = (integer) $position;
161         
162          $cur->update('WHERE link_id = '.(integer) $id.
163               " AND blog_id = '".$this->con->escape($this->blog->id)."'");
164          $this->blog->triggerBlog();
165     }
166     
167     
168     private function setLinksData($rs)
169     {
170          $cat_title = null;
171          while ($rs->fetch()) {
172               $rs->set('is_cat',!$rs->link_title && !$rs->link_href);
173               
174               if ($rs->is_cat) {
175                    $cat_title = $rs->link_desc;
176                    $rs->set('cat_title',null);
177               } else {
178                    $rs->set('cat_title',$cat_title);
179               }
180          }
181          $rs->moveStart();
182     }
183     
184     public function getLinksHierarchy($rs)
185     {
186          $res = array();
187         
188          foreach ($rs->rows() as $k => $v)
189          {
190               if (!$v['is_cat']) {
191                    $res[$v['cat_title']][] = $v;
192               }
193          }
194         
195          return $res;
196     }
197}
198?>
Note: See TracBrowser for help on using the repository browser.

Sites map