inputChajian.php 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466
  1. <?php
  2. /**
  3. * 系统表单插件
  4. */
  5. class inputChajian extends Chajian
  6. {
  7. public $fieldarr = array();
  8. public $flow = null;
  9. public $ismobile = 0;
  10. public $urs = array();
  11. public $mid = 0;
  12. public $date,$now,$option;
  13. protected function initChajian()
  14. {
  15. $this->date = $this->rock->date;
  16. $this->now = $this->rock->now;
  17. $this->option = m('option');
  18. }
  19. public function initUser($uid)
  20. {
  21. $this->adminid = $uid;
  22. $this->urs = m('admin')->getone($uid, '`name`,`deptname`');
  23. $this->adminname= $this->urs['name'];
  24. }
  25. public function initFields($stwhe='')
  26. {
  27. $fieldarr = m('flow_element')->getrows($stwhe,'*','`sort`');
  28. foreach($fieldarr as $k=>$rs){
  29. $this->fieldarr[$rs['fields']] = $rs;
  30. }
  31. return $fieldarr;
  32. }
  33. /**
  34. * 读取表单样式(有默认值的)
  35. */
  36. public function getfieldcontval($fid, $val=false, $objs=null)
  37. {
  38. return $this->getfieldcont($fid, $objs,'',0, $val);
  39. }
  40. /**
  41. * 读取表单样式
  42. */
  43. public function getfieldcont($fid, $objs=null, $leox='', $iszb=0, $deval=false)
  44. {
  45. $fida= explode(',', $fid);$xu0='0';
  46. $ism = $this->ismobile;
  47. $fid = $fida[0];
  48. $str = $val ='';
  49. if(isset($fida[1]))$xu0=$fida[1];
  50. if($fid=='base_name'){
  51. $str = '<input class="inputs" style="border:none;background:none" name="base_name" value="'.$this->adminname.'" readonly>';
  52. }
  53. if($fid=='base_deptname'){
  54. $str = '<input class="inputs" style="border:none;background:none" name="base_deptname" value="'.$this->urs['deptname'].'" readonly>';
  55. }
  56. if($fid=='base_sericnum'){
  57. $str = '<input class="inputs" style="border:none;background:none" name="base_sericnum" value="'.$this->flow->createnum().'" readonly>';
  58. }
  59. if($fid=='file_content'){
  60. $str = '<input name="fileid" type="hidden" id="fileidview-inputEl"><div id="view_fileidview" style="width:98%;height:auto;min-height:60px;border:1px #cccccc solid; background:white;overflow:auto"></div><div id="fileupaddbtn"><a href="javascript:;" class="blue" onclick="c.upload()"><u>+添加文件</u></a></div>';
  61. }
  62. if($fid=='删'){
  63. $str='<a href="javascript:;" onclick="c.delrow(this,'.$xu0.')">删</a>';
  64. }
  65. if($fid=='新增'){
  66. $str='<a href="javascript:;" onclick="c.addrow(this,'.$xu0.')">+新增</a>';
  67. }
  68. if($str!='')return $str;
  69. if(!isset($this->fieldarr[$fid]))return '';
  70. $isasm = 1;
  71. $a = $this->fieldarr[$fid];
  72. $fname = $fid.$leox;
  73. $type = $a['fieldstype'];
  74. $placeholder = arrvalue($a, 'placeholder');
  75. $isbt = arrvalue($a, 'isbt');
  76. $zdsm = arrvalue($a, 'zdsm');
  77. $data = $a['data'];
  78. $val = $a['dev'];
  79. if(isset($a['value']))$val=$a['value'];
  80. $attr = $a['attr'];
  81. $lens = (int)arrvalue($a, 'lens','0');
  82. $styles = '';
  83. $style = '';
  84. if(contain($attr,',')){
  85. $attra = explode(',', $a['attr']);
  86. $style = $attra[1];
  87. $attr = $attra[0];
  88. }
  89. if(!isempt($style))$styles=' style="'.$style.'"';
  90. $fnams = $this->rock->arrvalue($a,'name');$fieldname = $fnams;
  91. if($isbt==1)$fnams='*'.$fnams.'';
  92. $val = $this->rock->get('def_'.$fname.'', $val);
  93. if(isempt($val))$val='';
  94. if($deval !== false)$val = $deval; //设置默认值
  95. if(isempt($attr))$attr='';
  96. if($val!='' && contain($val,'{')){
  97. $val = m('base')->strreplace($val, $this->adminid, 1);
  98. if($val=='{sericnum}' && $this->flow!=null)$val = $this->flow->createnum();
  99. }
  100. if($type=='num'){
  101. if($this->flow != null){
  102. $val = $this->flow->createinputnum($data, $fid);
  103. }
  104. }
  105. //读默认值
  106. if($objs != null && method_exists($objs, 'inputfieldsval')){
  107. $_vals = $objs->inputfieldsval($fname, $a);
  108. if(!isempt($_vals))$val = $_vals;
  109. }
  110. if(!isempt($placeholder))$attr.=' placeholder="'.$placeholder.'"';
  111. if($type=='email' || $type=='tel' || $type=='mobile' || $type=='url'){
  112. $attr.=' inputtype="'.$type.'"';
  113. }
  114. $lenstr = '';
  115. if($lens>0)$lenstr=' maxlength="'.$lens.'"';
  116. $onblue = ' onblur="c.inputblur(this, '.$iszb.')"';
  117. $iszhang= false;
  118. if($type=='text' && !isempt($data)){
  119. $attr.=' onkeyup="c.autocomplete(this,\''.$data.'\','.$a['id'].', '.$iszb.',event)" onclick="this.onkeyup()"';
  120. }
  121. $str = '<input class="inputs" type="text" value="'.$val.'" '.$attr.''.$onblue.''.$styles.''.$lenstr.' name="'.$fname.'">';
  122. if($type=='fixed'||$type=='hidden'){
  123. $str = '<input value="'.$val.'" '.$attr.' type="hidden" name="'.$fname.'">';
  124. $isasm=0;
  125. }
  126. if($type=='textarea'){
  127. $iszhang= false;
  128. $str = '<textarea class="textarea" onblur="js.changdu(this)" style="height:80px;'.$style.'" '.$attr.''.$lenstr.' name="'.$fname.'">'.$val.'</textarea>';
  129. }
  130. if($type=='rockcombo' || $type=='select' || $type=='checkboxall' || $type=='radio'){
  131. $attr.=' onchange="c.inputblur(this, '.$iszb.')"';
  132. $str ='<select style="width:99%;'.$style.'" '.$attr.' name="'.$fname.'" class="inputs">';
  133. $str.='<option value="">-请选择-</option>';
  134. $str1= '';
  135. $str2= '';
  136. $datanum = $data;
  137. $fopt = $this->getdatastore($type, $objs, $datanum, $fid);
  138. $optgroup = '';
  139. if($fopt)foreach($fopt as $k=>$rs){
  140. $_val= arrvalue($rs,'value', $rs['name']);
  141. $sel = ($_val==$val)?'selected':'';
  142. $sel2 = ($_val==$val)?'checked':'';
  143. $ocn = '';
  144. if($type=='select')foreach($rs as $k1=>$v1)if($k1!='id'&&$k1!='value'&&$k1!='name')$ocn.=' '.$k1.'="'.$v1.'"';
  145. if($type=='select' && isset($rs['optgroup']) && !isempt($rs['optgroup'])){
  146. if($optgroup!=$rs['optgroup']){
  147. if($optgroup!='')$str.='</optgroup>';
  148. $str.='<optgroup label="'.$rs['optgroup'].'">';
  149. }
  150. $optgroup = $rs['optgroup'];
  151. }
  152. $str.='<option'.$ocn.' value="'.$_val.'" '.$sel.'>'.$rs['name'].'</option>';
  153. $str1.='<label><input name="'.$fname.'[]" value="'.$_val.'" type="checkbox">'.$rs['name'].'</label>&nbsp;&nbsp;';
  154. $str2.='<label><input'.$ocn.' name="'.$fname.'" '.$sel2.' value="'.$_val.'" type="radio">'.$rs['name'].'</label>&nbsp;&nbsp;';
  155. }
  156. if($type=='select' && $optgroup!='')$str.='</optgroup>';
  157. $str.='</select>';
  158. if($type=='checkboxall')$str = $str1;
  159. if($type=='radio')$str = $str2;
  160. }
  161. if($type=='datetime'||$type=='date'||$type=='time'||$type=='month'){
  162. $str = '<input onclick="js.datechange(this,\''.$type.'\')" value="'.$val.'" '.$attr.''.$onblue.''.$styles.' class="inputs" inputtype="'.$type.'" readonly name="'.$fname.'">';
  163. }
  164. //数字类型
  165. if($type=='number'){
  166. $xiaoshu= arrvalue($a,'xiaoshu','0');
  167. $str = '<input class="inputs" xiaoshu="'.$xiaoshu.'" '.$attr.''.$styles.' value="'.$val.'" type="number" onfocus="js.focusval=this.value" '.$lenstr.' onblur="js.number(this);c.inputblur(this,'.$iszb.')" name="'.$fname.'">';
  168. }
  169. if($type=='xuhao'){
  170. $str = '<input class="inputs xuhao" '.$attr.' type="text" value="'.$val.'" name="'.$fname.'">';
  171. $str.= '<input value="0" type="hidden" name="'.$a['fieldss'].$leox.'">';
  172. }
  173. if($type=='changeusercheck'||$type=='changeuser'||$type=='changedept'||$type=='changedeptcheck'||$type=='changedeptusercheck'){
  174. $zbnae = $data;
  175. if($iszb>0)$zbnae = $data.''.($iszb-1).''.$leox.'';
  176. $str = $this->inputchangeuser(array(
  177. 'name' => $fname,
  178. 'id' => $zbnae,
  179. 'value' => $val,
  180. 'type' => $type,
  181. 'title' => $fieldname,
  182. 'changerange' => arrvalue($a, 'gongsi'),
  183. 'placeholder' => $placeholder,
  184. 'attr' => $onblue,
  185. 'style' => '',
  186. ));
  187. }
  188. if($type=='selectdatafalse' || $type=='selectdatatrue'){
  189. if ($ism) {
  190. $str = '<input '.$attr.''.$onblue.''.$styles.' class="inputs" style="width:99%" value="'.$val.'" readonly type="text" name="'.$fname.'" onclick="c.selectdata(\''.$data.'\','.substr($type,10).',\''.$fname.'\',\''.$fieldname.'\','.$iszb.')">';
  191. } else {
  192. $str = '<table width="98%" cellpadding="0" border="0"><tr><td width="100%"><input '.$attr.''.$onblue.''.$styles.' class="inputs" style="width:99%" value="'.$val.'" readonly type="text" name="'.$fname.'"></td>';
  193. $str .= '<td nowrap>';
  194. if($isbt=='0')$str .= '<button onclick="c.selectdataclear(\''.$fname.'\',\''.$data.'\','.$iszb.')" class="webbtn" type="button">x</button>';
  195. $str .= '<button type="button" onclick="c.selectdata(\''.$data.'\','.substr($type,10).',\''.$fname.'\',\''.$fieldname.'\','.$iszb.')" class="webbtn">选</button></td></tr></table>';
  196. }
  197. }
  198. if($type=='ditumap'){
  199. $zbnae = $data;
  200. if($iszb>0)$zbnae = ''.($iszb-1).''.$leox.'';
  201. $str = '<table width="99%" cellpadding="0" border="0"><tr><td width="100%"><input '.$attr.''.$onblue.''.$styles.''.$lenstr.' class="inputs" style="width:99%" value="'.$val.'" type="text" name="'.$fname.'"></td>';
  202. $str .= '<td nowrap>';
  203. if($isbt=='0')$str .= '<button onclick="c.selectmapclear(\''.$fname.'\',\''.$zbnae.'\','.$iszb.')" class="webbtn" type="button">x</button>';
  204. $str .= '<button type="button" onclick="c.selectmap(\''.$fname.'\',\''.$zbnae.'\',\''.$fieldname.'\','.$iszb.')" class="webbtn">选</button></td></tr></table>';
  205. }
  206. if($type=='htmlediter'){
  207. $iszhang= false;
  208. $str = '<textarea class="textarea" style="height:130px;'.$style.'" '.$attr.' name="'.$fname.'">'.$val.'</textarea>';
  209. }
  210. if($type=='checkbox'){
  211. $chk = '';
  212. if($val=='1'||$val=='true')$chk='checked';
  213. $str = '<label><input name="'.$fname.'" '.$chk.' '.$attr.''.$styles.' type="checkbox" value="1">'.$placeholder.'</label> ';
  214. }
  215. if($type=='uploadimg'){
  216. $str1= '<a href="javascript:;" onclick="c.uploadfileis(\''.$fname.'\',1)">库中选</a>&nbsp;';
  217. if(M=='login' || $this->adminid==0 || $a['attr']=='onlychange')$str1='';
  218. $str = '<input name="'.$fname.'" value="'.$val.'" type="hidden">';
  219. $str.= '<img src="images/noimg.jpg" onclick="c.showviews(this)" id="imgview_'.$fname.'" height="100">';
  220. $str.= '<div style="display:" tsye="img" tnam="'.$fname.'" id="filed_'.$fname.'"><a href="javascript:;" onclick="c.uploadimgclear(\''.$fname.'\')">删</a>&nbsp;'.$str1.'<input onclick="c.initupss(\''.$fname.'\');" type="file" style="width:120px" accept="image/jpg,image/jpeg,image/png" id="filed_'.$fname.'_inp"></div>';
  221. }
  222. if($type=='uploadfile'){
  223. $str = '<input name="'.$fname.'" value="'.$val.'" type="hidden">';
  224. $str.= '<div style="display:inline-block" id="fileview_'.$fname.'"><div onclick="c.uploadfilei(\''.$fname.'\',\''.$a['attr'].'\')" style="display:;border:dashed 1px #cccccc" id="'.$fname.'_divadd" class="upload_items"><img class="imgs" src="images/jia.png"></div></div>';
  225. $str.= '<div style="display:none" tsye="file" tnam="'.$fname.'" tdata="'.$data.'" id="filed_'.$fname.'"><input type="file" style="width:120px" multiple="multiple" id="filed_'.$fname.'_inp"></div>';
  226. }
  227. if($type=='graph'){
  228. $str = '<input name="'.$fname.'" value="'.$val.'" type="hidden">';
  229. $str.= '<div id="graphview_'.$fname.'" >';
  230. $str.= '<button type="button" onclick="c.autograph(\''.$fname.'\',0)" class="webbtn">手写</button><button type="button" onclick="c.autograph(\''.$fname.'\',1)" class="webbtn">引入</button><button onclick="c.autograph(\''.$fname.'\',2)" class="webbtn" type="button">x</button></div>';
  231. }
  232. if($type=='auto'){
  233. $datanum = $data;
  234. if(!isempt($datanum)){
  235. if($objs!=null && method_exists($objs, $datanum)){
  236. $str = $objs->$datanum($this->mid, $this->flow);
  237. }
  238. }
  239. }
  240. if(!isempt($zdsm))$str.='<br><font color="#888888">'.$zdsm.'</font>';
  241. if($iszb>0)return $str;
  242. if($isasm==1){
  243. $lx = 'span';if($ism==1)$lx='div';
  244. $str = '<'.$lx.' id="div_'.$fname.'" class="divinput">'.$str.'</'.$lx.'>';
  245. if($ism==1 && $iszb==0){
  246. if($iszhang){
  247. // $str = '<tr class="lumtr"><td colspan="2"><div style="padding-left:10px;padding-top:10px">'.$fnams.'</div>'.$str.'</td></tr>';
  248. $str = '<tr class="lumtr">
  249. <div class="lurim_c">'.str_replace(' ','<br>', $fnams).'</div>
  250. <div class="divinput_c">'.$str.'</div>
  251. </tr>';
  252. }else{
  253. // $str = '<tr class="lumtr"><td class="lurim" nowrap>'.str_replace(' ','<br>', $fnams).'</td><td width="90%">'.$str.'</td></tr>';
  254. $str = '<tr class="lumtr">
  255. <div class="lurim_c">'.str_replace(' ','<br>', $fnams).'</div>
  256. <div class="divinput_c">'.$str.'</div>
  257. </tr>';
  258. }
  259. }
  260. }
  261. return $str;
  262. }
  263. /**
  264. * 输出选择人员html
  265. */
  266. public function inputchangeuser($arr=array())
  267. {
  268. $oarr = array(
  269. 'name'=>'',
  270. 'id'=>'',
  271. 'type'=>'changeuser',
  272. 'value'=> '',
  273. 'valueid'=> '',
  274. 'title' => '',
  275. 'changerange' => '',
  276. 'placeholder' => '',
  277. 'attr' => '',
  278. );
  279. foreach($arr as $k=>$v)$oarr[$k]=$v;
  280. $fname = $oarr['name'];
  281. $zbnae = $oarr['id'];
  282. $type = $oarr['type'];
  283. $valea = explode('|', $oarr['value']);
  284. $_vals0 = $valea[0];
  285. $_vals1 = arrvalue($valea,1, $oarr['valueid']);
  286. // $str = '<table width="99%" cellpadding="0" border="0"><tr><td width="100%"><input class="inputs" style="width:99%" '.$oarr['attr'].' placeholder="'.$oarr['placeholder'].'" id="change'.$fname.'" value="'.$_vals0.'" readonly type="text" name="'.$fname.'"><input name="'.$zbnae.'" value="'.$_vals1.'" id="change'.$fname.'_id" type="hidden"></td>';
  287. $str = '<input class="inputs" style="width:99%" '.$oarr['attr'].' placeholder="'.$oarr['placeholder'].'" id="change'.$fname.'" value="'.$_vals0.'" readonly type="text" name="'.$fname.'" id="btnchange_'.$fname.'" onclick="js.changeuser(\'change'.$fname.'\',\''.$type.'\',\''.$oarr['title'].'\' ,{changerange:\''.$oarr['changerange'].'\'})"><input name="'.$zbnae.'" value="'.$_vals1.'" id="change'.$fname.'_id" type="hidden">';
  288. // $str .= '<td nowrap><button onclick="js.changeclear(\'change'.$fname.'\')" class="webbtn" type="button">x</button><button id="btnchange_'.$fname.'" onclick="js.changeuser(\'change'.$fname.'\',\''.$type.'\',\''.$oarr['title'].'\' ,{changerange:\''.$oarr['changerange'].'\'})" type="button" class="webbtn">选</button></td></tr></table>';
  289. return $str;
  290. }
  291. private function issql($str)
  292. {
  293. $bo = false;
  294. $str = strtoupper($str);
  295. if(contain($str,' FROM '))$bo=true;
  296. return $bo;
  297. }
  298. public function getdatastore($type, $objs, $datanum, $fid='')
  299. {
  300. $fopt = array();
  301. $tyepa = explode(',','rockcombo,select,checkboxall,radio');
  302. if(!in_array($type, $tyepa) || isempt($datanum))return $fopt;
  303. //判断是不是SQL([SQL] name,value from [Q]abc)
  304. if($this->issql($datanum)){
  305. $sql = str_replace('[SQL]','select ', $datanum);
  306. $sql = m('base')->strreplace($sql);
  307. $rows = $this->db->getall($sql);
  308. if($rows)foreach($rows as $k=>$rs){
  309. $nam = arrvalue($rs,'name');
  310. $val = $nam;
  311. if(isset($rs['id']))$val = $rs['id'];
  312. if(isset($rs['value']))$val = $rs['value'];
  313. $fopt[] = array(
  314. 'name' => $nam,
  315. 'value' => $val,
  316. );
  317. }
  318. }
  319. //2021-02-26新增新的数据源,开头
  320. if(substr($datanum,0,1)==','){
  321. return $this->sqlstore($datanum);
  322. }
  323. //用:读取model上的数据
  324. if(!$fopt && !isempt($datanum) && contain($datanum,':')){
  325. $tata = explode(',', $datanum);
  326. $acta = explode(':', $tata[0]);
  327. $objs = m($acta[0]);
  328. $tacs = $acta[1];
  329. $cshu1= arrvalue($tata, 1);
  330. if(method_exists($objs, $tacs)){
  331. $fopt = $objs->$tacs($cshu1);
  332. if(is_array($fopt)){
  333. return $fopt;
  334. }
  335. }
  336. }
  337. //自定义方法读取数据源
  338. if(!$fopt && $objs!=null && method_exists($objs, $datanum)){
  339. $fopt = $objs->$datanum($fid,$this->mid);
  340. if(is_array($fopt)){
  341. return $fopt;
  342. }
  343. }
  344. //从flow上读取
  345. if(!$fopt && $this->flow!=null && method_exists($this->flow, $datanum)){
  346. $fopt = $this->flow->$datanum($fid,$this->mid);
  347. if(is_array($fopt)){
  348. return $fopt;
  349. }
  350. }
  351. if(!$fopt && ($type=='rockcombo' || $type=='checkboxall' || $type=='radio')){
  352. $_ars = explode(',', $datanum);
  353. $fopt = $this->option->getselectdata($_ars[0], isset($_ars[2]));
  354. $fvad = 'nameo';
  355. if(isset($_ars[1])&&($_ars[1]=='value'||$_ars[1]=='id'||$_ars[1]=='num'))$fvad=$_ars[1];
  356. if($fopt){
  357. foreach($fopt as $k=>$rs){
  358. $fopt[$k]['value'] = $rs[$fvad];
  359. }
  360. if($type=='rockcombo' && $fvad=='name' && M=='input'){
  361. //$fopt[] = array('name' => '其它..','value' => $_ars[0],);
  362. }
  363. }
  364. }
  365. if(!$fopt && ($type=='select' || $type=='checkboxall' || $type=='radio')){
  366. $fopt = c('array')->strtoarray($datanum);
  367. $barr = array();
  368. foreach($fopt as $k=>$rs){
  369. $barr[] = array(
  370. 'name' => $rs[1],
  371. 'value' => $rs[0],
  372. );
  373. }
  374. $fopt = $barr;
  375. }
  376. return $fopt;
  377. }
  378. /**
  379. * 新的获取数据源方法
  380. */
  381. public function sqlstore($actstr1)
  382. {
  383. $rows = array();
  384. $acta = explode(',', $actstr1);
  385. if(count($acta)>=3){
  386. if($acta[1]){
  387. $cats = explode(','.$acta[1].',', $actstr1);
  388. $sqlw = $cats[1];
  389. }else{
  390. $sqlw = substr($actstr1,2);
  391. }
  392. $sqla = explode('|', $sqlw);
  393. $wher = arrvalue($sqla,2,'1=1');
  394. if(contain($wher,'{'))$wher = m('where')->getstrwhere($wher,$this->adminid);
  395. $wher = str_replace('$','"', $wher);
  396. $rowa = m($sqla[0])->getall($wher,$sqla[1]);
  397. $ndf = 'name';
  398. $vdf = 'id';
  399. if($rowa)foreach($rowa as $k=>$rs1){
  400. if($k==0){
  401. if(!isset($rs1[$ndf])){
  402. foreach($rs1 as $k1=>$v1){$ndf = $k1;break;}
  403. }
  404. if(!isset($rs1[$vdf])){
  405. $xus = 0;
  406. foreach($rs1 as $k1=>$v1){
  407. $xus++;
  408. $vdf = $k1;
  409. if($xus>=2)break;
  410. }
  411. }
  412. }
  413. $rs1['name'] = $rs1[$ndf];
  414. $rs1['value'] = $rs1[$vdf];
  415. $rows[] = $rs1;
  416. }
  417. }
  418. return $rows;
  419. }
  420. /**
  421. * 创建签名图片生成的
  422. */
  423. public function createqianming($_val)
  424. {
  425. if(isempt($_val))return '';
  426. if(substr($_val,0,10)=='data:image'){
  427. $_vlu = ''.UPDIR.'/'.date('Y-m').'/qmimg'.time().''.rand(10,99).'.png';
  428. $bar= explode(',', $_val);
  429. $bo = $this->rock->createtxt($_vlu, base64_decode($bar[1]));
  430. if($bo)$_val = $_vlu;
  431. }
  432. return $_val;
  433. }
  434. }