예제 #1
0
파일: Date.php 프로젝트: kevinwan/xf
 public static function validate($var)
 {
     if (XF_Functions::isEmpty($var)) {
         return FALSE;
     }
     if (!is_scalar($var)) {
         return FALSE;
     }
     $tmp = explode('-', $var);
     if (count($tmp) != 3) {
         return FALSE;
     }
     if (!is_numeric($tmp[0]) || !is_numeric($tmp[1]) || !is_numeric($tmp[2])) {
         return FALSE;
     }
     if ($tmp[0] < 1900) {
         return false;
     }
     if ($tmp[1] < 1 || $tmp[1] > 12) {
         return false;
     }
     if ($tmp[2] < 1 || $tmp[2] > 31) {
         return false;
     }
     return TRUE;
 }
예제 #2
0
파일: Cookie.php 프로젝트: kevinwan/xf
 /**
  * session是否为空
  * @return bool
  */
 public function isEmpty()
 {
     if (!isset($_COOKIE[$this->_namespace])) {
         return true;
     }
     return XF_Functions::isEmpty($_COOKIE[$this->_namespace]);
 }
예제 #3
0
파일: Meta.php 프로젝트: kevinwan/xf
 /**
  * 获取实例
  * @access public
  * @return XF_View_Helper_Header_Meta
  */
 public static function getInstance($meta = null)
 {
     if (self::$_instance === null) {
         self::$_instance = new self();
     }
     if (XF_Functions::isEmpty($meta) === false) {
         self::$_instance->appendMeta($meta);
     }
     return self::$_instance;
 }
예제 #4
0
파일: Script.php 프로젝트: kevinwan/xf
 /**
  * 获取实例
  * @access public
  * @return XF_View_Helper_Header_Script
  */
 public static function getInstance($script = null)
 {
     if (self::$_instance === null) {
         self::$_instance = new self();
     }
     if (XF_Functions::isEmpty($script) === false) {
         self::$_instance->appendFile($script);
     }
     return self::$_instance;
 }
예제 #5
0
파일: Link.php 프로젝트: kevinwan/xf
 /**
  * 获取实例
  * @access public
  * @return XF_View_Helper_Header_Link
  */
 public static function getInstance($link = null)
 {
     if (self::$_instance === null) {
         self::$_instance = new self();
     }
     if (XF_Functions::isEmpty($link) === false) {
         self::$_instance->appendLink($link);
     }
     return self::$_instance;
 }
예제 #6
0
파일: Title.php 프로젝트: kevinwan/xf
 /**
  * 获取实例
  * @access public
  * @return XF_View_Helper_Header_Title
  */
 public static function getInstance($title = '')
 {
     if (self::$_instance === null) {
         self::$_instance = new self();
     }
     if (XF_Functions::isEmpty($title) === false) {
         self::$_instance->appendTitle($title);
     }
     return self::$_instance;
 }
예제 #7
0
파일: Rewrite.php 프로젝트: kevinwan/xf
 /**
  * 分析匹配结果
  * @param string $uri 请求的URI
  * @param string $regex 具体规则
  * @param array $tmp 匹配后的结果数组
  * @param int $regexIndex 当前是第几个规则【是指同一个名称里的规则,不是全局】
  * @return void
  */
 private function _matchAnalysis($uri, $regex, $tmp, $regexIndex)
 {
     //是否匹配成功
     if (is_array($tmp) && XF_Functions::isEmpty($tmp) === FALSE || $regex == '/' && $uri == '/') {
         //记录匹配到的规则方便调式用
         if (XF_Config::getInstance()->getSaveDebug()) {
             XF_DataPool::getInstance()->addHash('DEBUG', 'Match_Rewrite', $regex);
         }
         $this->_match_status = TRUE;
         $request = XF_Controller_Request_Http::getInstance();
         $request->setModule($this->_ma_array['module'])->setController($this->_ma_array['controller'])->setAction($this->_ma_array['action']);
         //是否存在自定义的附加参数
         if (isset($this->_ma_array['params']) && is_array($this->_ma_array['params'])) {
             foreach ($this->_ma_array['params'] as $k => $val) {
                 $request->setParam($k, $val);
             }
         }
         //设置匹配到的参数
         if (is_array($this->_params_array)) {
             foreach ($this->_params_array as $key => $val) {
                 //指定的参数是否只匹配指定位置的规则
                 $keyTmp = explode(':', $key);
                 if (!isset($keyTmp[1])) {
                     if (isset($tmp[$keyTmp[0]])) {
                         $request->setParam($val, urldecode($tmp[$keyTmp[0]]));
                     }
                 } else {
                     if ($keyTmp[0] == $regexIndex && isset($tmp[$keyTmp[1]])) {
                         //规则位置从0开始
                         $request->setParam($val, urldecode($tmp[$keyTmp[1]]));
                     }
                 }
             }
         }
         //////重写URL后,尝试获取设置的参数
         $uri = str_replace($tmp[0], '', $uri);
         $tep = explode('/', $uri);
         if (is_array($tep) && count($tep) >= 2) {
             if ($tep[0] == '') {
                 unset($tep[0]);
             }
             $tep = array_values($tep);
             foreach ($tep as $key => $val) {
                 if (isset($tep[$key + 1]) && $tep[$key + 1] != '') {
                     $request->setParam($val, urldecode($tep[$key + 1]));
                 } else {
                     break;
                 }
             }
         }
     }
 }
예제 #8
0
 /**
  * 获取品牌关键词
  */
 public function brandKeywordsAction()
 {
     $b = new Auto_Model_Brand();
     $keywords = $b->getBrandKeywords();
     if (!XF_Functions::isEmpty($keywords)) {
         $tmp = array();
         foreach ($keywords as $r) {
             $tmp[] = array('keywords' => $r->keywords, 'slug' => $r->slug, 'brand_name' => $r->brand_name, 'parent' => $r->parent, 'name' => $r->name);
         }
         $this->responseOK($tmp);
     }
     $this->responseOK();
 }
예제 #9
0
파일: Email.php 프로젝트: kevinwan/xf
 public static function validate($var)
 {
     if (XF_Functions::isEmpty($var)) {
         return FALSE;
     }
     if (!is_scalar($var)) {
         return FALSE;
     }
     if (!preg_match("/^([a-zA-Z0-9]+[_|\\_|\\.|\\-]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\\_|\\.|\\-]?)*[a-zA-Z0-9]+\\.[a-zA-Z]{2,3}\$/", $var)) {
         return FALSE;
     }
     return TRUE;
 }
예제 #10
0
파일: Card.php 프로젝트: kevinwan/xf
 public static function validate($var)
 {
     if (XF_Functions::isEmpty($var)) {
         return FALSE;
     }
     if (!is_scalar($var)) {
         return FALSE;
     }
     if (!ereg("\\d{15}|\\d{18}", $var)) {
         return FALSE;
     }
     return TRUE;
 }
예제 #11
0
파일: Phone.php 프로젝트: kevinwan/xf
 public static function validate($var)
 {
     if (XF_Functions::isEmpty($var)) {
         return FALSE;
     }
     if (!is_scalar($var)) {
         return FALSE;
     }
     if (!preg_match("/\\d{3}-\\d{8}|\\d{4}-\\d{7}/", $var)) {
         return FALSE;
     }
     return TRUE;
 }
예제 #12
0
파일: Ip.php 프로젝트: kevinwan/xf
 public static function validate($var)
 {
     if (XF_Functions::isEmpty($var)) {
         return FALSE;
     }
     if (!is_scalar($var)) {
         return FALSE;
     }
     if (!preg_match("/\\A((([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\\.){3}(([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))\\Z/", $var)) {
         return FALSE;
     }
     return TRUE;
 }
예제 #13
0
파일: ZipCode.php 프로젝트: kevinwan/xf
 public static function validate($var)
 {
     if (XF_Functions::isEmpty($var)) {
         return FALSE;
     }
     if (!is_scalar($var)) {
         return FALSE;
     }
     if (!preg_match("/[1-9]\\d{5}(?!\\d)/", $var)) {
         return FALSE;
     }
     return TRUE;
 }
예제 #14
0
파일: Chinese.php 프로젝트: kevinwan/xf
 public static function validate($var)
 {
     if (XF_Functions::isEmpty($var)) {
         return FALSE;
     }
     if (!is_scalar($var)) {
         return FALSE;
     }
     if (preg_match("/[-�]/", $var)) {
         return TRUE;
     }
     return FALSE;
 }
예제 #15
0
파일: Mobile.php 프로젝트: kevinwan/xf
 public static function validate($var)
 {
     if (!is_numeric($var)) {
         return FALSE;
     }
     if (strlen($var) > 11) {
         return FALSE;
     }
     if (XF_Functions::isEmpty($var)) {
         return FALSE;
     }
     if (!is_scalar($var)) {
         return FALSE;
     }
     if (!preg_match("/^1(3|4|5|8|7|)\\d{10}/", $var)) {
         return FALSE;
     }
     return TRUE;
 }
예제 #16
0
파일: Time.php 프로젝트: kevinwan/xf
 public static function validate($var)
 {
     if (XF_Functions::isEmpty($var)) {
         return FALSE;
     }
     if (!is_scalar($var)) {
         return FALSE;
     }
     $tmp = explode(' ', $var);
     if (count($tmp) != 2) {
         return false;
     }
     if (XF_String_Validate_Date::validate($tmp[0]) == false) {
         return false;
     }
     $tmp = explode(':', $tmp[1]);
     if (count($tmp) != 3) {
         return false;
     }
     if ($tmp[0] > 23 || $tmp[0] < 0 || $tmp[1] > 59 || $tmp[1] < 0 || $tmp[2] > 59 || $tmp[2] < 0) {
         return false;
     }
     return TRUE;
 }
예제 #17
0
 public function getUsedListAction()
 {
     if ($this->_request->isPost() && $this->_request->isXmlHttpRequest()) {
         $page = $this->getParam("page");
         $brandId = $this->getParam("brandId");
         $brandName = $this->getParam("brandName");
         $minAge = $this->getParam("minAge");
         $maxAge = $this->getParam("maxAge");
         $minMile = $this->getParam("minMile");
         $maxMile = $this->getParam("maxMile");
         $minPrice = $this->getParam("minPrice");
         $maxPrice = $this->getParam("maxPrice");
         $classify = $this->getParam("classify");
         $control = $this->getParam("control");
         $minVolume = $this->getParam("minvolume");
         $maxVolume = $this->getParam("maxvolume");
         $order_key = $this->getParam("order_key");
         if ($minAge == 0) {
             $minAge = "";
         }
         if ($maxAge == 0) {
             $maxAge = "";
         }
         if ($minMile == 0) {
             $minMile = "";
         }
         if ($maxMile == 0) {
             $maxMile = "";
         }
         if ($minPrice == 0) {
             $minPrice = "";
         }
         if ($maxPrice == 0) {
             $maxPrice = "";
         }
         if ($minVolume == 0) {
             $minVolume = "";
         }
         if ($maxVolume == 0) {
             $maxVolume = "";
         }
         if ($order_key == "") {
             $order_key = "price";
         }
         $searchCon = array("brandId" => $brandId, "brandName" => $brandName, "minAge" => $minAge, "maxAge" => $maxAge, "minMile" => $minMile, "maxMile" => $maxMile, "minPrice" => $minPrice, "maxPrice" => $maxPrice, "classify" => $classify, "control" => $control, "minVolume" => $minVolume, "maxVolume" => $maxVolume, 'order_key' => $order_key);
         if (!isset($page) || XF_Functions::isEmpty($page) || !is_numeric($page) || $page < 2) {
             $page = 2;
         }
         $used = new Used_Model_Used();
         $usedList = $used->getUsedList($this->nowCity->id, $page, 10, $searchCon);
         foreach ($usedList->cars as $key => $val) {
             $val->mile = round($val->mile);
             if (!XF_Functions::isEmpty($val->year)) {
                 $val->car_age = date("Y") - $val->year;
             }
             if (!XF_Functions::isEmpty($val->source_type)) {
                 $val->source_val = $this->source_type[$val->source_type];
             }
             if (!XF_Functions::isEmpty($val->thumbnail)) {
                 $val->thumbnail = $val->thumbnail . "?imageView2/1/w/190/h/142";
             } else {
             }
         }
         $carJsons = json_encode($usedList->cars);
         die('{"code":"200", "cars":' . $carJsons . ' }');
     }
 }
예제 #18
0
파일: Tool.php 프로젝트: kevinwan/xf
 /**
  * 查询指定的字段格式化
  * @access public
  * @param mixed $var 字符串或数组 
  * @return string
  */
 public static function findFormat($var)
 {
     if (XF_Functions::isEmpty($var)) {
         return '*';
     }
     if (!is_array($var)) {
         return $var;
     } else {
         $string = '';
         for ($i = 0; $i < count($var); $i++) {
             if ($i == 0) {
                 $string = '`' . $var[$i] . '`';
             } else {
                 $string .= ',`' . $var[$i] . '`';
             }
         }
         return $string;
     }
 }
예제 #19
0
        ?>
 万</div>
		                                    <div class="usedr fr">
			                                    <div class="carage"><?php 
        echo $used->car_age;
        ?>
年</div>
			                                    <div class="mileage"><?php 
        echo $used->mile;
        ?>
万公里</div>
		                                    </div>
	                                    </div>
	                                    <div class="tags">
		                                    <?php 
        if (!XF_Functions::isEmpty($used->source_type)) {
            ?>
                                            <span
                                                class="tag <?php 
            echo $used->source_val["bg"];
            ?>
"><?php 
            echo $used->source_val["name"];
            ?>
</span>
                                        <?php 
        }
        ?>
                                    </div>
                                </div>
	                            </a>
예제 #20
0
파일: Abstract.php 프로젝트: kevinwan/xf
 /**
  * 自动查询关联的资料
  * @param mixed 封装好的查询结果
  * @return mixed
  */
 private function _autoSelectFieldAssociated($info)
 {
     $tableName = null;
     //一条资料
     if ($info instanceof XF_Db_Table_Abstract) {
         $tep = $this->_readAutoSelectFieldAssociated($info);
         if (XF_Functions::isEmpty($tep)) {
             return $info;
         }
         foreach ($tep as $key => $val) {
             $assName = array_keys($val);
             $tmp = $info->selectAssociated($assName[0]);
             if ($val[$assName[0]]['oneToMany'] == true) {
                 if (is_array($tmp)) {
                     foreach ($tmp as $t) {
                         $fields = explode(',', $val[$assName[0]]['field']);
                         if (count($fields) > 1) {
                             foreach ($fields as $f) {
                                 if (strpos($f, ':') === 0) {
                                     $f = str_replace(':', '', $f);
                                     $fvs = explode(',', $info->{$f});
                                     foreach ($fvs as $_fvs) {
                                         if ($_fvs == $t->{$val[$assName[0]]['associateField']}) {
                                             $info->{$assName[0] . '_' . $f . '_all_data_count'} += 1;
                                             $count = is_array($info->{$assName[0] . '_' . $f}) ? count($info->{$assName[0] . '_' . $f}) : 0;
                                             if ($count < $val[$assName[0]]['size']) {
                                                 $info->{$assName[0] . '_' . $f . '[]'} = $t;
                                             }
                                         }
                                     }
                                 } else {
                                     if ($info->{$f} == $t->{$val[$assName[0]]['associateField']}) {
                                         $info->{$assName[0] . '_' . $f . '_all_data_count'} += 1;
                                         $count = is_array($info->{$assName[0] . '_' . $f}) ? count($info->{$assName[0] . '_' . $f}) : 0;
                                         if ($count < $val[$assName[0]]['size']) {
                                             $info->{$assName[0] . '_' . $f . '[]'} = $t;
                                         }
                                     }
                                 }
                             }
                         } else {
                             $info->{$assName[0] . '_all_data_count'} += 1;
                             $count = is_array($info->{$assName[0]}) ? count($info->{$assName[0]}) : 0;
                             if ($count < $val[$assName[0]]['size']) {
                                 $info->{$assName[0] . '[]'} = $t;
                             }
                         }
                     }
                 }
             }
             if (strpos($val[$assName[0]]['field'], ',') !== false) {
                 $fields = explode(',', $val[$assName[0]]['field']);
                 if (is_array($tmp)) {
                     foreach ($tmp as $t) {
                         foreach ($fields as $f) {
                             if (strpos($f, ':') === 0) {
                                 $f = str_replace(':', '', $f);
                                 $fvs = explode(',', $info->{$f});
                                 foreach ($fvs as $_fvs) {
                                     if ($_fvs == $t->{$val[$assName[0]]['associateField']}) {
                                         $info->{$assName[0] . '_' . $f . '[]'} = $t;
                                     }
                                 }
                             } else {
                                 if ($info->{$f} == $t->{$val[$assName[0]]['associateField']}) {
                                     $info->{$assName[0] . '_' . $f} = $t;
                                 }
                             }
                         }
                     }
                 }
             } else {
                 $info->{$assName[0]} = $tmp;
             }
         }
     } elseif (is_array($info)) {
         $fieldValues = array();
         $allSelectFieldAssociate = array();
         //按关联的表名组合将要查询的条件值
         foreach ($info as $k => $v) {
             $tep = $this->_readAutoSelectFieldAssociated($v);
             if (XF_Functions::isEmpty($tep)) {
                 return $info;
             }
             $allSelectFieldAssociate[$k] = $tep;
             //分析要查询关联值
             foreach ($tep as $kk => $vv) {
                 $assName = array_keys($vv);
                 //去重复的值
                 $values = @$fieldValues[$vv[$assName[0]]['table']][$assName[0]][$vv[$assName[0]]['associateField']]['data'];
                 $tmpFields = explode(',', $vv[$assName[0]]['field']);
                 foreach ($tmpFields as $field) {
                     //字段第一位字符是否为':'符号,该符号表示当前这个字段值是一个"数组"。例:34,531,98,1,409
                     if (strpos($field, ':') === 0) {
                         $field = str_replace(':', '', $field);
                         $infoValues = explode(',', $v->{$field});
                         foreach ($infoValues as $infoValue) {
                             if ($infoValue != '' || $infoValue == '0') {
                                 $values[$infoValue] = $infoValue;
                             }
                         }
                     } else {
                         $infoValue = $v->{$field};
                         if ($infoValue != '' || $infoValue == '0') {
                             $values[$infoValue] = $infoValue;
                         }
                     }
                 }
                 if ($values != null) {
                     $fieldValues[$vv[$assName[0]]['table']][$assName[0]][$vv[$assName[0]]['associateField']]['data'] = $values;
                     $fieldValues[$vv[$assName[0]]['table']][$assName[0]][$vv[$assName[0]]['associateField']]['_other'] = array('size' => isset($vv[$assName[0]]['size']) ? $vv[$assName[0]]['size'] : null, 'where' => isset($vv[$assName[0]]['where']) ? $vv[$assName[0]]['where'] : null, 'order' => isset($vv[$assName[0]]['order']) ? $vv[$assName[0]]['order'] : null, '_field' => isset($vv[$assName[0]]['_field']) && $vv[$assName[0]]['_field'] != '*' ? $vv[$assName[0]]['associateField'] . ',' . $vv[$assName[0]]['_field'] : '*', 'oneToMany' => $vv[$assName[0]]['oneToMany'], 'autoinit' => $this->_db_table->getInitAutoExecuteMethodFromAssociate($assName[0]));
                 }
             }
         }
         $allAssociateInfos = array();
         foreach ($fieldValues as $fk => $fv) {
             $table = new $fk();
             /////检测是否需要设置当前关联对象自己的关联状态
             $objectAssting = $this->_db_table->getFieldAssociateObjectAssSetting();
             $_ass = $this->_db_table->getFieldAssociated();
             if (is_array($_ass) && count($_ass) > 0) {
                 foreach ($_ass as $_k => $_val) {
                     if (isset($objectAssting[$_k])) {
                         $matchAssting = $objectAssting[$_k];
                         foreach ($matchAssting as $mk => $mval) {
                             if (get_class($table) == $mval['assObjectName']) {
                                 if ($mval['autoAssociated'] == true) {
                                     if (!empty($mval['where'])) {
                                         $table->setAssociatedAuto($mk, $mval['size'], $mval['where'], $mval['order'], $mval['_field']);
                                     } else {
                                         $table->setAssociatedAutoOnly($mk, $mval['size'], $mval['_field']);
                                     }
                                 } elseif (!empty($mval['where'])) {
                                     $table->setAssociatedManual($mk, $mval['size'], $mval['where'], $mval['order'], $mval['_field']);
                                 } else {
                                     $table->setAssociatedManualOnly($mk, $mval['size'], $mval['_field']);
                                 }
                             }
                         }
                     }
                 }
             }
             foreach ($fv as $assName => $rule) {
                 foreach ($rule as $field => $v) {
                     ///设置关联对象的init
                     if (is_array($v['_other']['autoinit'])) {
                         foreach ($v['_other']['autoinit'] as $m) {
                             if ($m['params'] !== NULL) {
                                 array_unshift($m['params'], $m['method'], NULL);
                                 call_user_func_array(array($table, 'addInitAutoExecuteMethod'), $m['params']);
                             } else {
                                 $table->addInitAutoExecuteMethod($m['method']);
                             }
                         }
                     }
                     $select = $table->getTableSelect();
                     $select->setFindField($v['_other']['_field'])->setWhere($v['_other']['where'])->setWhereIn($field, array_values($v['data']))->setOrder($v['_other']['order'])->setLimit(false);
                     $sql = $select->getSql();
                     //是否为一对一查询 IN条件查询的每个值对应的查询结果可能是多条,所以需要再次分组
                     if ($v['_other']['oneToMany'] !== true) {
                         $sql = "SELECT * FROM({$sql}) AS XF_NewTable GROUP BY {$field}";
                     }
                     //主查询是否已缓存
                     if ($this->_data_cache_time > 0 && $this->_cache_class instanceof XF_Cache_Interface) {
                         $select->setCacheClass($this->_cache_class)->setCacheTime($this->_data_cache_time);
                     }
                     $rs = $select->execute($sql, true);
                     $allAssociateInfos[$fk . '=>' . $assName . '=>' . $field . ''] = $rs;
                 }
             }
         }
         //组合资料
         foreach ($info as $info_k => $info_v) {
             foreach ($allAssociateInfos as $assInfo_k => $assInfo_v) {
                 $assInfo_ks = explode('=>', $assInfo_k);
                 if (is_array($assInfo_v)) {
                     ////获取当前表对象所有的关联设置
                     $associateAllConfig = $info_v->getFieldAssociated();
                     foreach ($associateAllConfig as $assConfig_k => $assConfig_v) {
                         if ($assConfig_v['table'] . '=>' . $assConfig_v['associateField'] == $assInfo_ks[0] . '=>' . $assInfo_ks[2] && $assConfig_k == $assInfo_ks[1]) {
                             //字段列表
                             $fields = explode(',', $assConfig_v['field']);
                             foreach ($assInfo_v as $assInfo_vv) {
                                 foreach ($fields as $field) {
                                     //该字段值是否为一个"数组"。例:34,531,98,1,409
                                     if (strpos($field, ':') === 0) {
                                         $field = substr($field, 1);
                                         $fieldValues = explode(',', $info_v->{$field});
                                         foreach ($fieldValues as $fieldValue) {
                                             if ($fieldValue == $assInfo_vv->{$assConfig_v['associateField']}) {
                                                 if (count($fields) > 1) {
                                                     if ($assConfig_v['oneToMany'] == true) {
                                                         //一对多时,记录总数
                                                         $info[$info_k]->{$assConfig_k . '_all_data_count'} += 1;
                                                         $_count = is_array($info[$info_k]->{$assConfig_k . '_' . $field}) ? count($info[$info_k]->{$assConfig_k . '_' . $field}) : 0;
                                                         if ($_count < $assConfig_v['size'] || $assConfig_v['size'] == FALSE) {
                                                             $info[$info_k]->{$assConfig_k . '_' . $field . '[]'} = $assInfo_vv;
                                                         }
                                                     } else {
                                                         $info[$info_k]->{$assConfig_k . '_' . $field} = $assInfo_vv;
                                                     }
                                                 } else {
                                                     if ($assConfig_v['oneToMany'] == true) {
                                                         //一对多时,记录总数
                                                         $info[$info_k]->{$assConfig_k . '_all_data_count'} += 1;
                                                         $_count = is_array($info[$info_k]->{$assConfig_k}) ? count($info[$info_k]->{$assConfig_k}) : 0;
                                                         if ($_count < $assConfig_v['size'] || $assConfig_v['size'] == FALSE) {
                                                             $info[$info_k]->{$assConfig_k . '[]'} = $assInfo_vv;
                                                         }
                                                     } else {
                                                         $info[$info_k]->{$assConfig_k} = $assInfo_vv;
                                                     }
                                                 }
                                             }
                                         }
                                     } elseif ($info_v->{$field} == $assInfo_vv->{$assConfig_v['associateField']}) {
                                         if (count($fields) > 1) {
                                             if ($assConfig_v['oneToMany'] == true) {
                                                 //一对多时,记录总数
                                                 $info[$info_k]->{$assConfig_k . '_all_data_count'} += 1;
                                                 $_count = is_array($info[$info_k]->{$assConfig_k . '_' . $field}) ? count($info[$info_k]->{$assConfig_k . '_' . $field}) : 0;
                                                 if ($_count < $assConfig_v['size'] || $assConfig_v['size'] == FALSE) {
                                                     $info[$info_k]->{$assConfig_k . '_' . $field . '[]'} = $assInfo_vv;
                                                 }
                                             } else {
                                                 $info[$info_k]->{$assConfig_k . '_' . $field} = $assInfo_vv;
                                             }
                                         } else {
                                             if ($assConfig_v['oneToMany'] == true) {
                                                 //一对多时,记录总数
                                                 $info[$info_k]->{$assConfig_k . '_all_data_count'} += 1;
                                                 $_count = is_array($info[$info_k]->{$assConfig_k}) ? count($info[$info_k]->{$assConfig_k}) : 0;
                                                 if ($_count < $assConfig_v['size'] || $assConfig_v['size'] == FALSE) {
                                                     $info[$info_k]->{$assConfig_k . '[]'} = $assInfo_vv;
                                                 }
                                             } else {
                                                 $info[$info_k]->{$assConfig_k} = $assInfo_vv;
                                             }
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     return $info;
 }
예제 #21
0
 public function goodinfoAction()
 {
     $submit_statue = $this->getParam('statue');
     $gpj_session = new XF_Session("gpj_session");
     $session_ary = $gpj_session->read();
     if (!$gpj_session->hasContent("userId")) {
         throw new XF_Exception('补充商品信息:用户没有登录');
     }
     if (isset($submit_statue) && !XF_Functions::isEmpty($submit_statue)) {
         if ($submit_statue == "submit") {
             $car_parts = $this->getParam("car_parts");
             $car_color = $this->getParam("car_color");
             $period_insurance = $this->getParam("period_insurance");
             $car_maintain = $this->getParam("car_maintain");
             $max_cost = $this->getParam("max_cost");
             $transfer_num = $this->getParam("transfer_num");
             $sellObj = new Sell_Model_Sellinfo();
             $last_id = $sellObj->addSellInfo($session_ary["userId"], $session_ary["modelId"], $session_ary["changeId"], $session_ary["dataFrom"], $session_ary["infoId"], implode(",", $car_parts), $car_color, $period_insurance, $car_maintain, $max_cost, $transfer_num, $this->nowCity->id);
             if ($last_id) {
                 $session_ary["sellInfoId"] = $last_id;
                 $gpj_session->write($session_ary);
                 XF_Functions::go("/sell/index/upload/");
             }
         }
     } else {
         $submit_statue = "submit";
     }
     $this->setLayout(new Layout_Default());
     $this->_view->headStylesheet('/css/sell/goodinfo.css');
     $this->_view->headStylesheet('/css/common.css');
     $this->_view->headScript('/js/pagejs/goodinfo.js');
     XF_View::getInstance()->assign('statue', $submit_statue);
     $this->_view->detailModel = $session_ary["detail_model"];
     $this->_view->detailYear = $session_ary["detail_year"];
     $this->_view->detailMile = $session_ary["detail_mile"];
     $this->_view->detailPrice = $session_ary["detail_price"];
 }
예제 #22
0
 public function buyReportAction()
 {
     $serialId = $this->getParam('serialId');
     $cityid = $this->getParam('city');
     $year = $this->getParam('year');
     $typeId = $this->getParam('typeId');
     $mileage = $this->getParam('mileage');
     if (!isset($serialId) || XF_Functions::isEmpty($serialId)) {
         throw new XF_Exception('车系参数不正确');
     }
     // 当前地区名称
     $name = $this->nowCity->name;
     $this->_view->serialId = $serialId;
     // 获取车型列表
     $mod = new Auto_Model_Type();
     $types = $mod->getsBySerialId($serialId);
     // print_r($types);
     $this->_view->types = $types;
     if ((!isset($serialId) || XF_Functions::isEmpty($typeId)) && !XF_Functions::isEmpty($types)) {
         $typeId = $types[0][1][0]->id;
         $type = $mod->getsByTypeId($typeId);
     } else {
         $type = $mod->getsByTypeId($typeId);
     }
     //        获得session,存车型id
     $gpj_session = new XF_Session("gpj_session");
     $sessionAry = array();
     $sessionAry["modelId"] = $typeId;
     $sessionAry["detail_model"] = $type->detail_model;
     $sessionAry["detail_price"] = $type->price_bn;
     $this->_view->type = $type;
     //        获取评估报告投票
     $vote = new Report_Model_Vote();
     $reportVote = $vote->getVoteByTypeId($typeId);
     if ($reportVote) {
         $this->_view->goodNum = $reportVote->right_vote;
         $this->_view->noGoodNum = $reportVote->noright_vote;
         $this->_view->totalNum = $reportVote->right_vote + $reportVote->noright_vote;
     } else {
         $this->_view->goodNum = 0;
         $this->_view->noGoodNum = 0;
         $this->_view->totalNum = 0;
     }
     $cityModel = new Application_Model_City();
     $cities = $cityModel->getsByCity($this->nowCity->id);
     if (!isset($cityid) || XF_Functions::isEmpty($cityid) || !is_numeric($cityid) || $cityid <= 0) {
         $cityid = $this->nowCity->id;
     }
     $cityObj = $cityModel->get($cityid);
     $this->_view->cities = $cities;
     $this->_view->cityName = $cityObj->name;
     $this->_view->cityId = $cityid;
     $this->_view->cityPinYin = $cityObj->pinyin;
     $sessionAry["province"] = $cityid;
     $d_model = $type->id;
     $year = $year > 0 ? $year : $type->listed_year;
     $mile = floatval($mileage) > 0 ? floatval($mileage) : date("Y") - $type->listed_year;
     $intent = 'buy';
     $this->_view->mileage = $mile;
     $this->_view->year = $year;
     $mod = new Report_Model_Valuation();
     $V = $mod->getValuation($cityid, $d_model, $year, '', $mile, $intent);
     $this->_view->V = $V;
     $sessionAry["detail_year"] = $year;
     $sessionAry["detail_mile"] = $mile;
     $sessionAry["serialId"] = $serialId;
     $gpj_session->write($sessionAry);
     // 随机抽取6辆车型
     $carTypeModel = new Auto_Model_Type();
     $serialCars = $carTypeModel->getsByCityAndSerialId($cityid, $typeId);
     foreach ($serialCars as $key => $val) {
         $val->mile = round($val->mile);
         if (!XF_Functions::isEmpty($val->year)) {
             $val->car_age = date("Y") - $val->year;
         }
         if (!XF_Functions::isEmpty($val->source_type)) {
             $val->source_val = $this->source_type[$val->source_type];
         }
         if (!XF_Functions::isEmpty($val->thumbnail)) {
             $val->thumbnail = $val->thumbnail . "?imageView2/1/w/296/h/193";
         } else {
         }
     }
     $this->_view->serialCars = $serialCars;
     $this->setLayout(new Layout_Default());
     $this->_view->headTitle("买二手车价格评估-买二手车估价-买二手车技巧流程-公平价");
     $this->_view->headMeta("买二手车车评估,买二手车估价,买二手车流程,买二手车技巧");
     $this->_view->headMeta("公平价-买车评估频道为您提供:二手车买车估值、二手车买车估价、二手车买车估价计算器,给您所选爱车一个精准、公平、公道的价格。二手车买车服务就上公平价!");
     // 设置页面资源
     $this->_view->headStylesheet('/css/report/report.css');
     $this->_view->headStylesheet('/css/valid.css');
     $this->_view->headScript('/js/pagejs/buyreport.js');
 }
예제 #23
0
파일: Abstract.php 프로젝트: kevinwan/xf
 /**
  * 查询关联的数据
  * @access public
  * @param string $name 自定义关联名称
  * @param mixed $size 关联数量。默认为20,如果为false将关联所有数据[该设置仅在关联类型(oneToMany)为一对多时有效]
  * @param mixed $where 关联额外的字段查询条件。默认为NULL,可以是字符串或数组。
  * @param mixed $order 关联的数据的排序设置,默认为NULL,或例如:'id DESC'
  * @param string $field 关联的数据要查询的字段,默认为“*”,或例如:'id,name'
  * @return mixed
  */
 public function selectAssociated($name, $size = 20, $where = null, $order = null, $field = '*')
 {
     if (empty($this->_field_associateds[$name])) {
         return false;
     }
     ///////////兼容额外的设置 /////////////////
     if ($where == null && isset($this->_field_associateds[$name]['where'])) {
         $where = $this->_field_associateds[$name]['where'];
         //还原设置
         unset($this->_field_associateds[$name]['where']);
     }
     if ($order == null && isset($this->_field_associateds[$name]['order'])) {
         $order = $this->_field_associateds[$name]['order'];
         //还原设置
         unset($this->_field_associateds[$name]['order']);
     }
     if (isset($this->_field_associateds[$name]['size'])) {
         $size = $this->_field_associateds[$name]['size'];
         //还原设置
         unset($this->_field_associateds[$name]['size']);
     }
     if (isset($this->_field_associateds[$name]['_field'])) {
         $field = $this->_field_associateds[$name]['_field'];
         //还原设置
         unset($this->_field_associateds[$name]['_field']);
     }
     $tableName = $this->_field_associateds[$name]['table'];
     $table = new $tableName();
     /////检测是否需要设置当前关联对象自己的关联状态
     //if (is_array($this->_field_associateds) && count($this->_field_associateds) > 0)
     //{
     foreach ($this->_field_associateds as $_k => $_val) {
         if (isset($this->_field_associate_object_asssetting[$_k])) {
             $matchAssting = $this->_field_associate_object_asssetting[$_k];
             foreach ($matchAssting as $mk => $mval) {
                 if (get_class($table) == $mval['assObjectName']) {
                     if ($mval['autoAssociated'] == true) {
                         if (!empty($mval['where'])) {
                             $table->setAssociatedAuto($mk, $mval['size'], $mval['where'], $mval['order'], $mval['_field']);
                         } else {
                             $table->setAssociatedAutoOnly($mk, $mval['size'], $mval['_field']);
                         }
                     } elseif (!empty($mval['where'])) {
                         $table->setAssociatedManual($mk, $mval['size'], $mval['where'], $mval['order'], $mval['_field']);
                     } else {
                         $table->setAssociatedManualOnly($mk, $mval['size'], $mval['_field']);
                     }
                 }
             }
         }
     }
     //}
     /////2013-4-9 是否设置了当前关联对象自动执行方法
     $methods = $this->getInitAutoExecuteMethodFromAssociate($name);
     if (is_array($methods)) {
         foreach ($methods as $m) {
             if ($m['params'] !== NULL) {
                 array_unshift($m['params'], $m['method'], NULL);
                 call_user_func_array(array($table, 'addInitAutoExecuteMethod'), $m['params']);
             } else {
                 $table->addInitAutoExecuteMethod($m['method']);
             }
         }
     }
     //2013-1-9 实现一条关联可以设置多个字段,例如同时关联省份和城市,我们一般省份和城市记录都是在一个表里,结构都一样
     $fieldValues = null;
     $fieldNames = explode(',', $this->_field_associateds[$name]['field']);
     foreach ($fieldNames as $fieldName) {
         if (strpos($fieldName, ':') === 0) {
             $fieldName = substr($fieldName, 1);
         }
         $value = $this->{$fieldName};
         if (XF_Functions::isEmpty($value)) {
             continue;
         }
         $value = explode(',', $value);
         foreach ($value as $v) {
             if ($v != '' || $v == '0') {
                 $fieldValues[$v] = $v;
             }
         }
     }
     if (!is_array($fieldValues)) {
         return false;
     }
     $fieldValues = array_values($fieldValues);
     $select = $table->getTableSelect()->setFindField($field)->setWhereIn($this->_field_associateds[$name]['associateField'], $fieldValues);
     $select->appendWhere($where)->setOrder($order);
     //如果是一对多的查询
     if ($this->_field_associateds[$name]['oneToMany'] === true) {
         return $select->setLimit($size)->fetchAll();
     } elseif (count($fieldNames) > 1) {
         return $select->setLimit(count($fieldNames))->fetchAll();
     }
     return $select->fetchRow();
 }
예제 #24
0
?>
万公里</span>|<span>上牌城市:<?php 
echo $this->nowCity->name;
?>
</span></p>
                <p>新车指导价:<?php 
echo $this->detailPrice;
?>
万</p>
            </div>
		</div>

	</div>
	<div class="content">
        <?php 
if (!XF_Functions::isEmpty($this->changeModel)) {
    ?>
		<div class="selcar">已选择新车 “<?php 
    echo $this->changeModel;
    ?>
”</div>
        <?php 
}
?>
		<div class="boxtitle">请选择 4S店</div>
		<div class="fourshops clearfix">
            <?php 
$isClose = false;
foreach ($this->fourshop as $key => $dealer) {
    if ($key == "4") {
        $isClose = true;
예제 #25
0
파일: Mysql.php 프로젝트: kevinwan/xf
 /**
  * 设置分组
  * @access public
  * @param unknown_type $var
  * @return XF_Db_Table_Select_Mysql
  */
 public function setGroup($var)
 {
     if (XF_Functions::isEmpty($var) == false) {
         //是否存在排序
         if (XF_Functions::isEmpty($this->_adv_order) == false) {
             $this->_adv_group = ' #GROUP BY ' . $var;
         } else {
             $this->_adv_group = ' GROUP BY ' . $var;
         }
     }
     return $this;
 }
예제 #26
0
파일: Validate.php 프로젝트: kevinwan/xf
 /**
  * 验证表单 分析规则 Validate
  * @access private
  * @param array $data 将要验证的数组资料
  * @param string $key	当前需要验证的字段[key]
  * @param string $rules_name	规则名称
  * @param mixed $rules_value	规则值
  * @param array	 $message	自定义错误信息
  * @param XF_Db_Table_Abstract $db_table 主要支持unique的验证,默认为null
  * @param bool $is_insert 是否为添加数据操作?如果不是,则不强制执行required
  * @return bool
  */
 private function _switchValidateFormData($data, $key, $rules_name, $rules_value, $message, XF_Db_Table_Abstract $db_table = NULL, $is_insert = TRUE)
 {
     $this->_validate_count++;
     //判断规则,分析结果
     $validateOk = true;
     switch ($rules_name) {
         //验证 必填
         case 'required':
             if ($rules_value == 'true') {
                 if (isset($data[$key])) {
                     if (XF_Functions::isEmpty($data[$key])) {
                         $validateOk = false;
                     }
                 } elseif ($is_insert == true) {
                     $validateOk = false;
                 }
             }
             break;
             //验证 数字
         //验证 数字
         case 'number':
             if (isset($data[$key])) {
                 if ($rules_value == 'true') {
                     if (!is_numeric($data[$key])) {
                         $validateOk = false;
                     }
                 }
             }
             break;
             //数字小于
         //数字小于
         case 'lt':
             if (isset($data[$key])) {
                 if (!is_numeric($data[$key]) || !is_numeric($rules_value)) {
                     $validateOk = false;
                 } elseif ($data[$key] >= $rules_value) {
                     $validateOk = false;
                 }
             }
             break;
             //数字大于
         //数字大于
         case 'gt':
             if (isset($data[$key])) {
                 if (!is_numeric($data[$key]) || !is_numeric($rules_value)) {
                     $validateOk = false;
                 } elseif ($data[$key] <= $rules_value) {
                     $validateOk = false;
                 }
             }
             break;
             //等于
         //等于
         case 'equal':
             if (isset($data[$key])) {
                 if ($data[$key] !== $rules_value) {
                     $validateOk = false;
                 }
             }
             break;
             //不等于
         //不等于
         case 'unequal':
             if (isset($data[$key])) {
                 if ($data[$key] === $rules_value) {
                     $validateOk = false;
                 }
             }
             break;
             //验证 是否为正确的email
         //验证 是否为正确的email
         case 'email':
             if (!empty($data[$key]) && $rules_value == 'true') {
                 $validateOk = XF_String_Validate_Email::validate($data[$key]);
             }
             break;
             //验证 是否为正确的电话号码
         //验证 是否为正确的电话号码
         case 'tel':
             if (!empty($data[$key]) && $rules_value == 'true') {
                 $validateOk = XF_String_Validate_Phone::validate($data[$key]);
             }
             break;
             //验证 是否为正确的手机号码
         //验证 是否为正确的手机号码
         case 'mobile':
             if (!empty($data[$key]) && $rules_value == 'true') {
                 $validateOk = XF_String_Validate_Mobile::validate($data[$key]);
             }
             break;
             //验证 是否为正确的身份证号码
         //验证 是否为正确的身份证号码
         case 'card':
             if (!empty($data[$key]) && $rules_value == 'true') {
                 $validateOk = XF_String_Validate_Card::validate($data[$key]);
             }
             break;
             //验证 是否为正确邮政编码
         //验证 是否为正确邮政编码
         case 'zip':
             if (!empty($data[$key]) && $rules_value == 'true') {
                 $validateOk = XF_String_Validate_ZipCode::validate($data[$key]);
             }
             break;
             //验证 最小长度
         //验证 最小长度
         case 'minlen':
             if (!empty($data[$key])) {
                 if (mb_strlen($data[$key], 'utf8') < $rules_value) {
                     $validateOk = false;
                 }
             }
             break;
             //验证 最大长度
         //验证 最大长度
         case 'maxlen':
             if (!empty($data[$key])) {
                 if (mb_strlen($data[$key], 'utf8') > $rules_value) {
                     $validateOk = false;
                 }
             }
             break;
             //验证 ip地址
         //验证 ip地址
         case 'ip':
             if (!empty($data[$key]) && $rules_value == 'true') {
                 $validateOk = XF_String_Validate_Ip::validate($data[$key]);
             }
             break;
             /**
              *  验证 取值范围在列表中
              *  例如:in:2|23|9|0
              *
              */
         /**
          *  验证 取值范围在列表中
          *  例如:in:2|23|9|0
          *
          */
         case 'in':
             if (XF_Functions::isEmpty($data[$key]) == FALSE) {
                 if (!in_array($data[$key], explode('|', $rules_value))) {
                     $validateOk = false;
                 }
             }
             break;
             /**
              *  验证 取值范围必需不在列表中
              *  例如:not_in:2|23|9|0
              *
              */
         /**
          *  验证 取值范围必需不在列表中
          *  例如:not_in:2|23|9|0
          *
          */
         case 'not_in':
             if (XF_Functions::isEmpty($data[$key]) == FALSE) {
                 if (!in_array($data[$key], explode('|', $rules_value))) {
                     $validateOk = false;
                 }
             }
             break;
             //验证与指定的字段值是否相同
         //验证与指定的字段值是否相同
         case 'confirm':
             if (isset($data[$key])) {
                 if ($data[$key] != $data[$rules_value]) {
                     $validateOk = false;
                 }
             }
             break;
         case 'date':
             if (isset($data[$key]) && $rules_value == 'true') {
                 if (!XF_String_Validate_Date::validate($data[$key])) {
                     $validateOk = false;
                 }
             }
             break;
         case 'time':
             if (isset($data[$key]) && $rules_value == 'true') {
                 if (!XF_String_Validate_Time::validate($data[$key])) {
                     $validateOk = false;
                 }
             }
             break;
         case 'unique':
             if (isset($data[$key]) && $rules_value == 'true') {
                 if ($db_table == NULL) {
                     $validateOk = false;
                 } elseif (!XF_Db_Table_Validate_Unique::validate($data[$key], $key, $db_table, $is_insert)) {
                     $validateOk = false;
                 }
             }
             break;
     }
     //字段值为 '$NULL' 时直接通过验证 2014-09-3
     if (isset($data[$key]) && $data[$key] == '$NULL') {
         $validateOk = true;
     }
     //没有错误
     if ($validateOk) {
         $this->_validate_success_count++;
         return true;
     } else {
         //记录错误
         $errorMessage = $key . '=>' . $rules_name . ':' . $rules_value;
         if (isset($message[$key]) && is_array($message[$key]) && isset($message[$key][$rules_name])) {
             $errorMessage = $message[$key][$rules_name];
         } elseif (isset($message[$key])) {
             $errorMessage = (string) $message[$key];
         }
         XF_DataPool::getInstance()->replace('TableFieldDataValidateError', $errorMessage);
         return false;
     }
 }
예제 #27
0
 /**
  * 认证
  * @return XF_Auth_Result
  */
 public function authenticate()
 {
     if ($this->_dbTable == NULL || !$this->_dbTable instanceof XF_Db_Table_Abstract) {
         throw new XF_Auth_Adapter_Exception('Lack of effective XF_Db_Table_Abstract authentication adapter !');
     }
     if (XF_Functions::isEmpty($this->_identity_column)) {
         throw new XF_Auth_Adapter_Exception('Certified identity column name and credential column name can not be empty!');
     }
     if (XF_Functions::isEmpty($this->_identity)) {
         return new XF_Auth_Result(-1, NULL);
     }
     $row = $this->_dbTable->getTableSelect()->setWhere(array($this->_identity_column => $this->_identity))->fetchRow();
     if ($row instanceof XF_Db_Table_Abstract) {
         $tmp = array();
         $array = $row->toArray();
         foreach ($array as $key => $val) {
             if (is_array($this->_storage_column)) {
                 if (in_array($key, $this->_storage_column)) {
                     $tmp[$key] = $val;
                 }
             } else {
                 $tmp[$key] = $val;
             }
         }
         return new XF_Auth_Result(9, (object) $tmp);
     }
     return new XF_Auth_Result(-1, NULL);
 }