5 // 0.51 htmlspecialchars text
6 // 0.52 linkurl ready :: rename to pholiot
9 // plugin needs to work on Nucleus versions <=2.0 as well
10 if (!function_exists('sql_table')){
11 function sql_table($name) {
12 return 'nucleus_' . $name;
16 class NP_Pholiot extends NucleusPlugin {
17 function getName () {return 'Pholiot'; }
18 function getAuthor () {return 'nakahara21'; }
19 function getURL () {return 'http://xx.nakahara21.net/';}
20 function getVersion () {return '0.53';}
21 function supportsFeature($what) {
23 case 'SqlTablePrefix':
29 function getDescription () {
30 return 'Extract image in items, and embed these images into Pholiot!';
35 $this->createOption('default_catname','Default Category Name.','text','');
40 $this->fileex = array('.jpg','.swf');
43 function doSkinVar($skinType, $ss='', $amount=30, $random=0, $exmode=0) {
44 global $CONF, $blog,$manager;
47 $b =& $manager->getBlog($CONF['DefaultBlog']);
49 if($amount=='') $amount = 30;
50 if($exmode != 'all') $exmode = 0;
56 sscanf($archive,'%d-%d-%d',$year,$month,$day);
58 $timestamp_start = mktime(0,0,0,$month,1,$year);
59 $timestamp_end = mktime(0,0,0,$month+1,1,$year); // also works when $month==12
61 $timestamp_start = mktime(0,0,0,$month,$day,$year);
62 $timestamp_end = mktime(0,0,0,$month,$day+1,$year);
64 $this->exquery .= ' and itime>=' . mysqldate($timestamp_start)
65 . ' and itime<' . mysqldate($timestamp_end);
71 $this->exquery .= ' and iblog =' . intval($b->getID());
73 if($catid) $this->exquery .= ' and icat =' . intval($catid);
77 $this->imglists = array();
78 $this->imgfilename = array();
79 if(!($filelist = $this->listup())){
80 $durl = $this->getAdminURL().'pholiot.xml';
82 // print_r($filelist);
83 $amount = min($amount,count($filelist));
85 srand((float)microtime()*1000000);
91 $feed .= 'xml version="1.0" encoding="UTF-8"';
96 <customize defaultmode="slideshow" fitimagetoview="true" fitviewtoimage="true" pan="false" zoom="true" zoomrandomxy="true" zoomdepth="2" zoomrandomdepth="false" panzoomtime="5000" crossfadetime="3000" slidedelaytime="6000" motionmode="liner" playallgalleries="true" returntobrowse="false" galleries="true" thumbnail="true" xmargin="0" ymargin="0" />
97 <gallery name="pholiot" description="TEST">
99 foreach($filelist as $imglist){
100 $linkurl = $this->createGlobalItemLink($imglist[1],'');
102 $feed .= '<imageurl>'.$CONF['MediaURL'].$imglist[0].'</imageurl>';
103 $feed .= '<caption>'.$imglist[2].'</caption>';
104 $feed .= '<linkurl name="'.$imglist[3].' ID:'.$imglist[1].'">'.$linkurl.'</linkurl>';
111 $feed = mb_convert_encoding($feed, "UTF-8", _CHARSET);
113 $fp = @fopen($this->getDirectory()."feed.xml","w+");
115 $durl = $this->getAdminURL().'pholiot.xml';
119 $durl = $this->getAdminURL().'feed.xml';
124 echo '<script type="text/javascript" language="JavaScript" src="'.$this->getAdminURL().'pholiot.js"></script>';
127 $surl = $this->getAdminURL().'pholiot.swf';
129 <script type="text/javascript" language="JavaScript">
130 showPholiot({url: '{$surl}', data_url: '{$durl}', bgcolor: '#e8e9da', width: '120', height: '160', menu: 'false'});
139 global $blog,$manager,$CONF;
142 $b =& $manager->getBlog($CONF['DefaultBlog']);
144 $query = 'SELECT inumber as itemid, ititle as title, ibody as body, iauthor, itime, imore as more,' ;
145 $query .= ' icat as catid, iclosed as closed' ;
146 $query .= ' FROM '.sql_table('item');
147 $query .= ' WHERE idraft=0';
148 $query .= ' and itime <=' . mysqldate($b->getCorrectTime()); // don't show future items!
149 $query .= $this->exquery;
150 $query .= ' ORDER BY itime DESC';
153 $res = sql_query($query);
155 if(!mysql_num_rows($res)) return FALSE;
157 while ($it = mysql_fetch_object($res)){
158 $ititle = $it->title;
159 $txt = $it->body.$it->more;
160 $item_ymd = date("Y-m-d",strtotime($it->itime));
161 $capt = htmlspecialchars(shorten(strip_tags( (!$ititle)? $txt: $ititle ),30,'..'));
162 preg_match_all("/\<\%image\((.*)\)\%\>/Us",$txt,$imgpnt,PREG_PATTERN_ORDER);
163 @array_walk($imgpnt[1], array(&$this, "exarray"), array($it->itemid,$it->iauthor,$capt,$item_ymd));
164 preg_match_all("/\<\%popup\((.*)\)\%\>/Us",$txt,$imgpntp,PREG_PATTERN_ORDER);
165 @array_walk($imgpntp[1], array(&$this, "exarray"), array($it->itemid,$it->iauthor,$capt,$item_ymd));
167 return $this->imglists;
170 function exarray($imginfo,$key,$iaid){
171 list($iid, $auid, $capt,$item_ymd) = $iaid;
172 $imginfo = explode("|",$imginfo);
173 if(trim($imginfo[3])) $capt = htmlspecialchars(shorten(strip_tags($imginfo[3]),30,'..'),ENT_QUOTES);
175 if(!in_array(strtolower(strrchr($imginfo[0], "." )),$this->fileex)) return;
176 if(in_array($imginfo[0],$this->imgfilename)) return;
177 $this->imgfilename[] = $imginfo[0];
179 if (!strstr($imginfo[0],'/')) {
180 $imginfo[0] = $auid . '/' . $imginfo[0];
183 $this->imglists[] = array($imginfo[0],$iid,$capt,$item_ymd);
187 global $member, $manager;
188 if (!$member->isLoggedIn()) return 0;
189 return $member->isAdmin();
193 function createGlobalItemLink($itemid, $extra = '') {
194 global $CONF, $manager;
196 if ($CONF['URLMode'] == 'pathinfo'){
197 $link = $CONF['ItemURL'] . '/item/' . $itemid;
199 $blogid = getBlogIDFromItemID($itemid);
200 $b_tmp =& $manager->getBlog($blogid);
201 $blogurl = $b_tmp->getURL() ;
203 $blogurl = $CONF['IndexURL'];
205 if(substr($blogurl, -4) != '.php'){
206 if(substr($blogurl, -1) != '/')
208 $blogurl .= 'index.php';
210 $link = $blogurl . '?itemid=' . $itemid;
212 return addLinkParams($link, $extra);