www.gusucode.com > JTBCPHP网站内容管理系统 v3.0.1源码程序 > PHP_JTBC_CMS_v3.0.1.2/common/incfiles/lib/jtbc/auto.inc.php

    <?php
//******************************//
// JTBC Powered by jtbc.cn      //
//******************************//
namespace jtbc {
  class auto
  {
    public static function getAutoInsertSQLByVars($argTable, $argVars)
    {
      $table = $argTable;
      $vars = $argVars;
      $tmpstr = self::getAutoRequestInsertSQL($table, $vars, null, null, '', '', 1);
      return $tmpstr;
    }

    public static function getAutoRequestInsertSQL($argTable, $argVars = null, $argSpecialField = null, $argSource = null, $argNamePre = '', $argNameSuffix = '', $argMode = 0)
    {
      $tmpstr = '';
      $table = $argTable;
      $specialField = $argSpecialField;
      $namePre = $argNamePre;
      $nameSuffix = $argNameSuffix;
      $vars = $argVars;
      $source = $argSource;
      $mode = base::getNum($argMode, 0);
      $db = conn::db();
      if (!is_null($db))
      {
        $columns = $db -> showFullColumns($table);
        if (is_array($columns))
        {
          $fieldString = '';
          $fieldValues = '';
          $tmpstr = 'insert into ' . $table . ' (';
          foreach ($columns as $i => $item)
          {
            $fieldValid = false;
            $fieldName = $item['Field'];
            $fieldType = $item['Type'];
            $comment = base::getString($item['Comment']);
            $fieldTypeN = $fieldType;
            $fieldTypeL = null;
            if (is_numeric(strpos($fieldType, '(')))
            {
              $fieldTypeN = base::getLRStr($fieldType, '(', 'left');
              $fieldTypeL = base::getNum(base::getLRStr(base::getLRStr($fieldType, '(', 'right'), ')', 'left'), 0);
            }
            $requestValue = '';
            $requestName = base::getLRStr($fieldName, '_', 'rightr');
            if (!base::isEmpty($namePre)) $requestName = $namePre . $requestName;
            if (!base::isEmpty($nameSuffix)) $requestName = $requestName . $nameSuffix;
            if (is_array($vars)) $requestValue = base::getString(@$vars[$fieldName]);
            if ($mode == 0)
            {
              if (!base::checkInstr($specialField, $fieldName, ','))
              {
                $manual = false;
                if (!base::isEmpty($comment))
                {
                  $commentAry = json_decode($comment, true);
                  if (!empty($commentAry) && array_key_exists('manual', $commentAry))
                  {
                    if ($commentAry['manual'] == 'true') $manual = true;
                  }
                }
                if ($manual == false)
                {
                  $fieldValid = true;
                  if (base::isEmpty($requestValue))
                  {
                    if (is_array($source)) $requestValue = base::getString($source[$requestName]);
                    else
                    {
                      $requestValue = request::getPost($requestName);
                      if (!is_array($requestValue)) $requestValue = base::getString($requestValue);
                      else $requestValue = base::getString(implode(',', $requestValue));
                    }
                  }
                }
              }
            }
            else if ($mode == 1)
            {
              if (is_array($vars))
              {
                if (array_key_exists($fieldName, $vars)) $fieldValid = true;
              }
            }
            if ($fieldValid == true)
            {
              if ($fieldTypeN == 'int' || $fieldTypeN == 'integer' || $fieldTypeN == 'double')
              {
                $fieldString .= $fieldName . ',';
                $fieldValues .= base::getNum($requestValue, 0) . ',';
              }
              else if ($fieldTypeN == 'varchar')
              {
                $fieldString .= $fieldName . ',';
                $fieldValues .= '\'' . addslashes(base::getLeft($requestValue, $fieldTypeL)) . '\',';
              }
              else if ($fieldTypeN == 'datetime')
              {
                $fieldString .= $fieldName . ',';
                $fieldValues .= '\'' . addslashes(base::getDateTime($requestValue)) . '\',';
              }
              else if ($fieldTypeN == 'text')
              {
                $fieldString .= $fieldName . ',';
                $fieldValues .= '\'' . addslashes(base::getLeft($requestValue, 20000)) . '\',';
              }
              else if ($fieldTypeN == 'mediumtext')
              {
                $fieldString .= $fieldName . ',';
                $fieldValues .= '\'' . addslashes(base::getLeft($requestValue, 5000000)) . '\',';
              }
              else if ($fieldTypeN == 'longtext')
              {
                $fieldString .= $fieldName . ',';
                $fieldValues .= '\'' . addslashes(base::getLeft($requestValue, 1000000000)) . '\',';
              }
            }
          }
          if (!base::isEmpty($fieldString)) $fieldString = base::getLRStr($fieldString, ',', 'leftr');
          if (!base::isEmpty($fieldValues)) $fieldValues = base::getLRStr($fieldValues, ',', 'leftr');
          $tmpstr .= $fieldString;
          $tmpstr .= ') values (';
          $tmpstr .= $fieldValues;
          $tmpstr .= ')';
        }
      }
      return $tmpstr;
    }

    public static function getAutoUpdateSQLByVars($argTable, $argIdField, $argId, $argVars)
    {
      $table = $argTable;
      $vars = $argVars;
      $idField = $argIdField;
      $id = base::getNum($argId, 0);
      $tmpstr = self::getAutoRequestUpdateSQL($table, $idField, $id, $vars, null, null, '', '', 1);
      return $tmpstr;
    }

    public static function getAutoRequestUpdateSQL($argTable, $argIdField, $argId, $argVars = null, $argSpecialField = null, $argSource = null, $argNamePre = '', $argNameSuffix = '', $argMode = 0)
    {
      $tmpstr = '';
      $table = $argTable;
      $specialField = $argSpecialField;
      $idField = $argIdField;
      $id = base::getNum($argId, 0);
      $namePre = $argNamePre;
      $nameSuffix = $argNameSuffix;
      $vars = $argVars;
      $source = $argSource;
      $mode = base::getNum($argMode, 0);
      $db = conn::db();
      if (!is_null($db))
      {
        $columns = $db -> showFullColumns($table);
        if (is_array($columns))
        {
          $fieldStringValues = '';
          $tmpstr = 'update ' . $table . ' set ';
          foreach ($columns as $i => $item)
          {
            $fieldValid = false;
            $fieldName = $item['Field'];
            $fieldType = $item['Type'];
            $comment = base::getString($item['Comment']);
            $fieldTypeN = $fieldType;
            $fieldTypeL = null;
            if (is_numeric(strpos($fieldType, '(')))
            {
              $fieldTypeN = base::getLRStr($fieldType, '(', 'left');
              $fieldTypeL = base::getNum(base::getLRStr(base::getLRStr($fieldType, '(', 'right'), ')', 'left'), 0);
            }
            $requestValue = '';
            $requestName = base::getLRStr($fieldName, '_', 'rightr');
            if (!base::isEmpty($namePre)) $requestName = $namePre . $requestName;
            if (!base::isEmpty($nameSuffix)) $requestName = $requestName . $nameSuffix;
            if (is_array($vars)) $requestValue = base::getString(@$vars[$fieldName]);
            if ($mode == 0)
            {
              if (!base::checkInstr($specialField, $fieldName, ','))
              {
                $manual = false;
                if (!base::isEmpty($comment))
                {
                  $commentAry = json_decode($comment, true);
                  if (!empty($commentAry) && array_key_exists('manual', $commentAry))
                  {
                    if ($commentAry['manual'] == 'true') $manual = true;
                  }
                }
                if ($manual == false)
                {
                  $fieldValid = true;
                  if (base::isEmpty($requestValue))
                  {
                    if (is_array($source)) $requestValue = base::getString($source[$requestName]);
                    else
                    {
                      $requestValue = request::getPost($requestName);
                      if (!is_array($requestValue)) $requestValue = base::getString($requestValue);
                      else $requestValue = base::getString(implode(',', $requestValue));
                    }
                  }
                }
              }
            }
            else if ($mode == 1)
            {
              if (is_array($vars))
              {
                if (array_key_exists($fieldName, $vars)) $fieldValid = true;
              }
            }
            if ($fieldValid == true)
            {
              if ($fieldTypeN == 'int' || $fieldTypeN == 'integer' || $fieldTypeN == 'double')
              {
                $fieldStringValues .= $fieldName . '=' . base::getNum($requestValue, 0) . ',';
              }
              else if ($fieldTypeN == 'varchar')
              {
                $fieldStringValues .= $fieldName . '=\'' . addslashes(base::getLeft($requestValue, $fieldTypeL)) . '\',';
              }
              else if ($fieldTypeN == 'datetime')
              {
                $fieldStringValues .= $fieldName . '=\'' . addslashes(base::getDateTime($requestValue)) . '\',';
              }
              else if ($fieldTypeN == 'text')
              {
                $fieldStringValues .= $fieldName . '=\'' . addslashes(base::getLeft($requestValue, 20000)) . '\',';
              }
              else if ($fieldTypeN == 'mediumtext')
              {
                $fieldStringValues .= $fieldName . '=\'' . addslashes(base::getLeft($requestValue, 5000000)) . '\',';
              }
              else if ($fieldTypeN == 'longtext')
              {
                $fieldStringValues .= $fieldName . '=\'' . addslashes(base::getLeft($requestValue, 1000000000)) . '\',';
              }
            }
          }
          if (!base::isEmpty($fieldStringValues)) $fieldStringValues = base::getLRStr($fieldStringValues, ',', 'leftr');
          $tmpstr .= $fieldStringValues;
          $tmpstr .= ' where ' . $idField . '=' . $id;
        }
      }
      return $tmpstr;
    }

    public static function getAutoFieldFormatByTable($argTable, $argMode = 0, $argVars = null, $argTplPath = '::console')
    {
      $tmpstr = '';
      $table = $argTable;
      $mode = $argMode;
      $vars = $argVars;
      $tplPath = $argTplPath;
      $db = conn::db();
      $filename = route::getCurrentFilename();
      $filePrefix = base::getLRStr($filename, '.', 'left');
      if (!is_null($db))
      {
        $columns = $db -> showFullColumns($table);
        foreach ($columns as $i => $item)
        {
          $fieldName = $item['Field'];
          $fieldDefault = $item['Default'];
          $comment = base::getString($item['Comment']);
          $simplifiedFieldName = base::getLRStr($fieldName, '_', 'rightr');
          if (!base::isEmpty($comment))
          {
            $commentAry = json_decode($comment, true);
            if (!empty($commentAry) && array_key_exists('fieldType', $commentAry))
            {
              $currentFieldRequired = '';
              if (array_key_exists('autoRequestFormat', $commentAry)) $currentFieldRequired = tpl::take($tplPath . '.required', 'tpl');
              $currentFieldType = base::getString($commentAry['fieldType']);
              if (strpos($currentFieldType, '.')) $fieldFormatLine = tpl::take($currentFieldType, 'tpl');
              else $fieldFormatLine = tpl::take($tplPath . '.fieldformat-' . $currentFieldType, 'tpl');
              $fieldFormatLine = str_replace('{$-required}', $currentFieldRequired, $fieldFormatLine);
              $fieldFormatLine = str_replace('{$fieldname}', base::htmlEncode($simplifiedFieldName), $fieldFormatLine);
              if ($currentFieldType == 'att')
              {
                $fieldRelatedEditor = base::getString(@$commentAry['fieldRelatedEditor']);
                if (!base::isEmpty($fieldRelatedEditor)) $fieldRelatedEditor = 'textarea.' . $fieldRelatedEditor;
                $fieldFormatLine = str_replace('{$-fieldRelatedEditor}', $fieldRelatedEditor, $fieldFormatLine);
              }
              else if ($currentFieldType == 'checkbox' || $currentFieldType == 'radio' || $currentFieldType == 'select')
              {
                $fieldRelatedFile = base::getString(@$commentAry['fieldRelatedFile']);
                $fieldFormatLine = str_replace('{$-fieldRelatedFile}', $fieldRelatedFile, $fieldFormatLine);
              }
              if (array_key_exists('fieldHasTips', $commentAry))
              {
                $fieldTipsKey = $simplifiedFieldName;
                $fieldHasTips = base::getString($commentAry['fieldHasTips']);
                $fieldFormatLineTips = tpl::take($tplPath . '.field-tips', 'tpl');
                if ($fieldHasTips != 'auto') $fieldTipsKey = $simplifiedFieldName;
                $currentFieldTips = @tpl::take($filePrefix . '.text-tips-field-' . $fieldTipsKey, 'lng');
                if (base::isEmpty($currentFieldTips)) $currentFieldTips = tpl::take($tplPath . '.text-tips-field-' . $fieldTipsKey, 'lng');
                $fieldFormatLineTips = str_replace('{$tips}', base::htmlEncode($currentFieldTips), $fieldFormatLineTips);
                $fieldFormatLine .= $fieldFormatLineTips;
              }
              if ($mode == 0)
              {
                $bindDefault = true;
                if (base::isEmpty($fieldDefault))
                {
                  if (array_key_exists('fieldDefault', $commentAry))
                  {
                    $fieldDefault = base::getString($commentAry['fieldDefault']);
                    if (base::isEmpty($fieldDefault)) $bindDefault = false;
                  }
                }
                else
                {
                  if (array_key_exists('fieldBindDefault', $commentAry))
                  {
                    $fieldBindDefault = base::getString($commentAry['fieldBindDefault']);
                    if ($fieldBindDefault == 'false') $bindDefault = false;
                  }
                }
                if ($bindDefault == false)
                {
                  $fieldFormatLine = str_replace('{$' . $simplifiedFieldName . '}', '', $fieldFormatLine);
                }
                else
                {
                  if ($fieldDefault == '$NOW') $fieldDefault = base::getDateTime();
                  else if ($fieldDefault == '$CURRENT_TIMESTAMP') $fieldDefault = strtotime(base::getDateTime());
                  else if ($fieldDefault == '$REMOTE_IP') $fieldDefault = request::getRemortIP();
                  else if ($fieldDefault == '$RANDOM_STRING') $fieldDefault = base::getRandomString();
                  else if ($fieldDefault == '$RANDOM_STRING_8') $fieldDefault = base::getRandomString(8);
                  else if ($fieldDefault == '$RANDOM_STRING_16') $fieldDefault = base::getRandomString(16);
                  else if ($fieldDefault == '$RANDOM_STRING_32') $fieldDefault = base::getRandomString(32);
                  else if ($fieldDefault == '$RANDOM_STRING_N4') $fieldDefault = base::getRandomString(4, 'number');
                  else if ($fieldDefault == '$RANDOM_STRING_N6') $fieldDefault = base::getRandomString(6, 'number');
                  else if ($fieldDefault == '$RANDOM_STRING_N8') $fieldDefault = base::getRandomString(8, 'number');
                  $fieldFormatLine = str_replace('{$' . $simplifiedFieldName . '}', base::htmlEncode($fieldDefault), $fieldFormatLine);
                }
              }
              $currentFieldHideMode = base::getNum(@$commentAry['fieldHideMode'], -1);
              if ($currentFieldHideMode != $mode) $tmpstr .= $fieldFormatLine;
            }
          }
        }
        if (is_array($vars))
        {
          foreach ($vars as $key => $val)
          {
            $tmpstr = str_replace('{$' . $key . '}', $val, $tmpstr) . $key;
          }
        }
      }
      return $tmpstr;
    }

    public static function pushAutoRequestErrorByTable(&$error, $argTable, $argTplPath = '::console')
    {
      $table = $argTable;
      $tplPath = $argTplPath;
      $db = conn::db();
      $filename = route::getCurrentFilename();
      $filePrefix = base::getLRStr($filename, '.', 'left');
      if (!is_null($db))
      {
        $columns = $db -> showFullColumns($table);
        foreach ($columns as $i => $item)
        {
          $fieldName = $item['Field'];
          $comment = base::getString($item['Comment']);
          $requestName = base::getLRStr($fieldName, '_', 'rightr');
          if (!base::isEmpty($comment))
          {
            $commentAry = json_decode($comment, true);
            if (!empty($commentAry) && array_key_exists('autoRequestFormat', $commentAry))
            {
              $errorBool = false;
              $requestValue = request::getPost($requestName);
              $format = base::getString($commentAry['autoRequestFormat']);
              if ($format == 'notEmpty')
              {
                if (base::isEmpty($requestValue)) $errorBool = true;
              }
              else if ($format == 'email')
              {
                if (!verify::isEmail($requestValue)) $errorBool = true;
              }
              else if ($format == 'mobile')
              {
                if (!verify::isMobile($requestValue)) $errorBool = true;
              }
              if ($errorBool == true)
              {
                $errorMsg = @tpl::take($filePrefix . '.text-auto-request-error-' . $requestName, 'lng');
                if (base::isEmpty($errorMsg)) $errorMsg = tpl::take($tplPath . '.text-auto-request-error-' . $requestName, 'lng');
                array_push($error, $errorMsg);
              }
            }
          }
        }
      }
      else array_push($error, tpl::take($tplPath . '.text-error-db-102', 'lng'));
    }
  }
}
//******************************//
// JTBC Powered by jtbc.cn      //
//******************************//
?>