function getSearchvalue($field, $type, $alltidtype = false, $backtype = false) { /*获取搜索结果*/ global $db_perpage, $page, $actmid, $fid, $basename; $field = unserialize(StrCode($field, 'DECODE')); $sqladd = ''; $defaultValueTableName = getActivityValueTableNameByActmid(); $fid && ($sqladd .= " {$defaultValueTableName}.fid=" . S::sqlEscape($fid)); $fielddb = PW_PostActivity::getFieldData($actmid, $type); if ($actmid) { $userDefinedTableName = getActivityValueTableNameByActmid($actmid, 1, 1); } else { $userDefinedTableName = ''; } foreach ($field as $key => $value) { if ($value) { if ($fielddb[$key]['ifdel']) { $tableName = $userDefinedTableName . '.'; } elseif ($fielddb[$key]) { $tableName = $defaultValueTableName ? $defaultValueTableName . '.' : ''; } else { continue; } if (in_array($fielddb[$key]['type'], array('number', 'radio', 'select'))) { $sqladd .= $sqladd ? " AND " . $tableName . $fielddb[$key]['fieldname'] . "=" . S::sqlEscape($value) : $tableName . $fielddb[$key]['fieldname'] . "=" . S::sqlEscape($value); } elseif ($fielddb[$key]['type'] == 'checkbox') { $checkboxs = ''; foreach ($value as $cv) { $checkboxs .= $checkboxs ? ',' . $cv : $cv; } $value = '%,' . $checkboxs . ',%'; $sqladd .= $sqladd ? " AND " . $tableName . $fielddb[$key]['fieldname'] . " LIKE(" . S::sqlEscape($value) . ")" : $tableName . $fielddb[$key]['fieldname'] . " LIKE(" . S::sqlEscape($value) . ")"; } elseif ($fielddb[$key]['type'] == 'calendar') { $value && ($value = PwStrtoTime($value)); if (strpos($fielddb[$key]['fieldname'], 'start') !== false) { $sqladd .= $sqladd ? " AND " . $tableName . $fielddb[$key]['fieldname'] . ">=" . S::sqlEscape($value) : $tableName . $fielddb[$key]['fieldname'] . ">=" . S::sqlEscape($value); } elseif (strpos($fielddb[$key]['fieldname'], 'end') !== false) { $starttimeFlag = substr($fielddb[$key]['fieldname'], 0, -7) . 'starttime'; if ($value <= PwStrtoTime($field[$starttimeFlag]) && $field[$starttimeFlag]) { Showmsg('calendar_error'); } $sqladd .= $sqladd ? " AND " . $tableName . $starttimeFlag . "<=" . S::sqlEscape($value) : $tableName . $starttimeFlag . "<=" . S::sqlEscape($value); } else { $sqladd .= $sqladd ? " AND " . $tableName . $fielddb[$key]['fieldname'] . ">=" . S::sqlEscape($value['start']) . " AND " . $tableName . $fielddb[$key]['fieldname'] . "<=" . S::sqlEscape($value['end']) : $tableName . $fielddb[$key]['fieldname'] . ">=" . S::sqlEscape($value['start']) . " AND " . $tableName . $fielddb[$key]['fieldname'] . "<=" . S::sqlEscape($value['end']); } } elseif (in_array($fielddb[$key]['type'], array('text', 'url', 'email', 'textarea'))) { $value = '%' . $value . '%'; $sqladd .= $sqladd ? " AND " . $tableName . $fielddb[$key]['fieldname'] . " LIKE(" . S::sqlEscape($value) . ")" : $tableName . $fielddb[$key]['fieldname'] . " LIKE(" . S::sqlEscape($value) . ")"; } elseif ($fielddb[$key]['type'] == 'range' && $value['min'] && $value['max']) { $sqladd .= $sqladd ? " AND " . $tableName . $fielddb[$key]['fieldname'] . ">=" . S::sqlEscape($value['min']) . " AND " . $tableName . $fielddb[$key]['fieldname'] . "<=" . S::sqlEscape($value['max']) : $tableName . $fielddb[$key]['fieldname'] . ">=" . S::sqlEscape($value['min']) . " AND " . $tableName . $fielddb[$key]['fieldname'] . "<=" . S::sqlEscape($value['max']); } else { $sqladd .= ''; } } } if ($sqladd) { !$page && ($page = 1); $start = ($page - 1) * $db_perpage; $limit = S::sqlLimit($start, $db_perpage); $actmidSql = $actmid ? "AND actmid=" . S::sqlEscape($actmid) : ''; $sqladd .= $sqladd ? " AND {$defaultValueTableName}.ifrecycle=0 " . $actmidSql : " {$defaultValueTableName}.ifrecycle=0 " . $actmidSql; $count = $this->db->get_value("SELECT COUNT(*) as count FROM {$defaultValueTableName} " . ($userDefinedTableName ? "LEFT JOIN {$userDefinedTableName} USING (tid)" : "") . " WHERE {$sqladd}"); $query = $this->db->query("SELECT tid \n\t\t\t\t\t\t\t\t\tFROM {$defaultValueTableName} " . ($userDefinedTableName ? "LEFT JOIN {$userDefinedTableName} USING (tid)" : "") . " \n\t\t\t\t\t\t\t\t\tWHERE {$sqladd} {$limit}"); while ($rt = $this->db->fetch_array($query)) { $tiddb[] = $rt['tid']; } if ($alltidtype) { $query = $this->db->query("SELECT tid FROM {$defaultValueTableName} " . ($userDefinedTableName ? "LEFT JOIN {$userDefinedTableName} USING (tid)" : "") . " WHERE {$sqladd}"); while ($rt = $this->db->fetch_array($query)) { $alltiddb[] = $rt['tid']; } } !$count && ($count = -1); } else { if ($backtype) { adminmsg('topic_search_none', "{$basename}&action=topic&actmid={$actmid}"); } Showmsg('topic_search_none'); } return array($count, $tiddb, $alltiddb); }
} elseif ($rt['ifasearch'] == 1) { unset($rt['fieldvalue']); $asearchhtml .= getSearchHtml($rt); } } $searchhtml && ($searchhtml .= '</span>'); $asearchhtml && ($asearchhtml .= '</span>'); if (strpos($searchhtml, '</span></span>') !== false) { $searchhtml = str_replace('</span></span>', '</span>', $searchhtml); } if (strpos($asearchhtml, '</span></span>') !== false) { $asearchhtml = str_replace('</span></span>', '</span>', $asearchhtml); } if ('search' == $step) { L::loadClass('PostActivity', 'activity', false); $searchTopic = new PW_PostActivity($field); if (!$newfield) { $newfield = StrCode(serialize($field)); } list($count, $tiddb, $alltiddb) = $searchTopic->getSearchvalue($newfield, 'one', true, true); is_array($tiddb) && ($sql .= " AND tv.tid IN(" . S::sqlImplode($tiddb) . ")"); is_array($alltiddb) && ($alltids = implode(',', $alltiddb)); } if ($step != 'search' || !$count) { $alltiddb = $threadb = $newtiddb = array(); $query = $db->query("SELECT tid FROM {$tablename} WHERE ifrecycle=0"); while ($rt = $db->fetch_array($query)) { $alltiddb[] = $rt['tid']; } if ($alltiddb) { $query = $db->query("SELECT tid FROM pw_threads WHERE tid IN(" . S::sqlImplode($alltiddb) . ")");
/** * 返回活动阅读页AA活动HTML/帖子内容显示 * @param int $actmid 活动模板id * @param array $actdb 字段的值,形如array(bool [字段] => 字段值,) * @return string HTML * @access private */ function getActValue($actmid, $actdb = array()) { global $tid, $imgpath, $authorid, $subject, $paymethod; if (!isset($this->activitymodeldb[$actmid])) { return; } $activityReadFieldsHtml = "<link rel=\"stylesheet\" type=\"text/css\" href=\"{$imgpath}/activity/read.css\" />" . '<div class="cc">'; $FlashHtml = "<div id=\"pwSlidePlayer\" class=\"pwSlide fr\" style=\"margin-right:60px;\">"; $activityValue = array(); $defaultValueTableName = getActivityValueTableNameByActmid(); if (isset($actdb) && count($actdb) > 0) { $tempdb = $this->db->get_one("SELECT iscertified,iscancel,paymethod,batch_no,fees,feesdetail FROM {$defaultValueTableName} WHERE tid=" . S::sqlEscape($tid)); $activityValue = $actdb; !$activityValue['fees'] && ($activityValue['fees'] = $tempdb['fees']); !$activityValue['fees'] && ($activityValue['feesdetail'] = $tempdb['feesdetail']); $activityValue['iscertified'] = $tempdb['iscertified']; $activityValue['batch_no'] = $tempdb['batch_no']; $activityValue['paymethod'] = $tempdb['paymethod']; $activityValue['iscancel'] = $tempdb['iscancel']; } else { $userDefinedValueTableName = getActivityValueTableNameByActmid($actmid, 1, 1); $activityValue = $this->db->get_one("SELECT iscertified,iscancel,actmid,out_biz_no,batch_no,recommend,starttime,endtime,location,contact,telephone,picture1,picture2,picture3,picture4,picture5,signupstarttime,signupendtime,minparticipant,maxparticipant,userlimit,specificuserlimit,genderlimit,fees,feesdetail,paymethod,pushtime,updatetime,ut.* FROM {$defaultValueTableName} dt LEFT JOIN {$userDefinedValueTableName} ut USING(tid) WHERE dt.tid=" . S::sqlEscape($tid)); } /*数据交互*/ if ($this->timestamp - $activityValue['pushtime'] > 86400 && $activityValue['updatetime'] > $activityValue['pushtime']) { //每日更新一次\报名列表有所变动 $this->pushActivityToAppCenter($tid, $actmid); } /*数据交互*/ if (!unserialize($activityValue['feesdetail'])) { unset($activityValue['feesdetail']); } //释放费用明细变量 $activityValue['authorid'] = $authorid; //作者赋值 $paymethod = $activityValue['paymethod']; //支付方式赋值 /*活动未认证,检查是否支付宝绑定+实名认证 否则创建AA活动号*/ list($signupStaus, $isCertifiedHtml) = $this->isCertified($activityValue, $tid, $actmid); $activityReadFieldsHtml .= $isCertifiedHtml; /*活动未认证,检查是否支付宝绑定+实名认证 否则创建AA活动号*/ $tmpCount = 0; $flash = false; $activityFieldDb = $signupDb = array(); $query = $this->db->query("SELECT * FROM pw_activityfield WHERE actmid=" . S::sqlEscape($actmid) . " AND ifable=1 ORDER BY ifdel ASC, vieworder ASC, fieldid ASC"); while ($rt = $this->db->fetch_array($query)) { $activityValue && ($rt['fieldvalue'] = $activityValue[$rt['fieldname']]); $rt['name'] && (list($rt['name1'], $rt['name3'], $rt['name2']) = $this->getNamePartsByName($rt['name'])); if (($rt['type'] == 'img' || $rt['type'] == 'upload') && $rt['fieldvalue']) { $tmpCount++; $rt['type'] == 'upload' && ($rt['fieldvalue'] = PW_PostActivity::getActivityImgUrl($rt['fieldvalue'], true)); $FlashHtml .= "<div id=\"Switch_" . $rt['fieldname'] . "\" style=\"display:none;display: block;\"><img src=\"{$rt['fieldvalue']}\" width=\"240px\"/></div>"; $flash = true; } if ($rt['type'] == 'textarea') { $rt['fieldvalue'] = nl2br($rt['fieldvalue']); } if ($rt['fieldid']) { $activityFieldDb[$rt['ifdel']][$rt['vieworder']][$rt['fieldid']] = $rt; } } //显示活动类型 $activityReadFieldsHtml .= '<ul class="aa_infos"><li><em>' . getLangInfo('other', 'act_activity_type') . '</em>' . $this->activitymodeldb[$this->actmid]['name']; if ($signupStaus == true && $this->winduid) { $activityReadFieldsHtml .= " <a href=\"read.php?tid={$tid}#memberlist_show\">(" . getLangInfo('other', 'act_signuper_info') . ")</a></li>"; } else { $activityReadFieldsHtml .= '</li>'; } $activityReadFieldsHtml .= $this->getAllSectionHtml($activityFieldDb, 'read') . '<ul/>'; //字段解析 $this->isCancelled($activityValue, $tid, $actmid); //判断是否活动被取消 if ($signupStaus == true) { $signupHtml = $this->getSignupHtml($activityValue); //获取报名状态 } $FlashHtml .= "<div class=\"pwSlide-bg\"></div><ul id=\"SwitchNav\"></ul></div><script type=\"text/javascript\" src=\"js/sliderplayer.js\"></script><script>pwSliderPlayers('pwSlidePlayer');</script>"; $flash == false && ($FlashHtml = ''); $activityReadFieldsHtml = $FlashHtml . $activityReadFieldsHtml . $signupHtml . '</div>'; return array($activityReadFieldsHtml, $activityValue); }