123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986 |
- <?php
-
-
- namespace app\common\model;
-
- use think\Db;
- use think\Model;
-
-
- class Language extends Model
- {
-
- protected function initialize()
- {
-
- parent::initialize();
- }
-
-
-
- public function afterAdd($insertId = '', $post = [])
- {
- $mark = trim($post['mark']);
-
-
- if (1 == intval($post['is_home_default'])) {
- $this->where('id','NEQ',$insertId)->update([
- 'is_home_default' => 0,
- 'update_time' => getTime(),
- ]);
-
- if (is_language()) {
- $langRow = \think\Db::name('language')->order('id asc')
- ->cache(true, EYOUCMS_CACHE_TIME, 'language')
- ->select();
- foreach ($langRow as $key => $val) {
- tpCache('system', ['system_home_default_lang'=>$mark], $val['mark']);
- }
- } else {
- tpCache('system', ['system_home_default_lang'=>$mark]);
- }
-
- }
-
-
-
- $config_db = Db::name('config');
- $configCount = $config_db->where('lang',$mark)->count();
- if (empty($configCount)) {
- $configRow = $config_db->field('id,lang',true)
- ->where('lang', $post['copy_lang'])
- ->order('id asc')
- ->select();
- if (!empty($configRow)) {
-
- $seo_pseudo = tpCache('seo.seo_pseudo');
- if (2 == $seo_pseudo) {
- $markArr = Db::name('language')->field('mark')->order('id asc')->limit('1,1')->select();
- $seo_pseudo_lang = tpCache('seo.seo_pseudo', [], $markArr[0]['mark']);
- $seo_dynamic_format_lang = tpCache('seo.seo_dynamic_format', [], $markArr[0]['mark']);
- $seo_rewrite_format_lang = tpCache('seo.seo_rewrite_format', [], $markArr[0]['mark']);
- } else {
- $seo_pseudo_lang = tpCache('seo.seo_pseudo', [], $post['copy_lang']);
- $seo_dynamic_format_lang = tpCache('seo.seo_dynamic_format', [], $post['copy_lang']);
- $seo_rewrite_format_lang = tpCache('seo.seo_rewrite_format', [], $post['copy_lang']);
- }
- $seo_pseudo_lang = !empty($seo_pseudo_lang) ? $seo_pseudo_lang : 1;
- $seo_dynamic_format_lang = !empty($seo_dynamic_format_lang) ? $seo_dynamic_format_lang : 1;
- $seo_rewrite_format_lang = !empty($seo_rewrite_format_lang) ? $seo_rewrite_format_lang : 1;
-
- foreach ($configRow as $key => $val) {
- $configRow[$key]['lang'] = $mark;
-
- if ('web_name' == $val['name']) {
- $configRow[$key]['value'] = $mark.$val['value'];
- }
-
-
-
-
- if ('seo_pseudo' == $val['name']) {
- $configRow[$key]['value'] = $seo_pseudo_lang;
- } else if ('seo_dynamic_format' == $val['name']) {
- $configRow[$key]['value'] = $seo_dynamic_format_lang;
- } else if ('seo_rewrite_format' == $val['name']) {
- $configRow[$key]['value'] = $seo_rewrite_format_lang;
- }
-
- }
- $insertObject = model('Config')->saveAll($configRow);
- $insertNum = count($insertObject);
- if ($insertNum != count($configRow)) {
- return false;
- }
- }
- }
-
-
-
- $configattribute_db = Db::name('config_attribute');
- $configattributeCount = $configattribute_db->where('lang',$mark)->count();
- if (empty($configattributeCount)) {
- $configAttrRow = $configattribute_db->field('attr_id,lang',true)
- ->where('lang', $post['copy_lang'])
- ->order('attr_id asc')
- ->select();
- if (!empty($configAttrRow)) {
- foreach ($configAttrRow as $key => $val) {
- $configAttrRow[$key]['lang'] = $mark;
- }
- $insertObject = model('ConfigAttribute')->saveAll($configAttrRow);
- $insertNum = count($insertObject);
- if ($insertNum != count($configAttrRow)) {
- return false;
- }
- }
- }
-
-
-
- $syn_status = $this->syn_arctype($mark, $post['copy_lang']);
- if (false === $syn_status) {
- return $syn_status;
- }
-
-
-
- $arcrank_db = Db::name('arcrank');
- $arcrankCount = $arcrank_db->where('lang',$mark)->count();
- if (empty($arcrankCount)) {
- $arcrankRow = $arcrank_db->field('id,lang',true)
- ->where('lang', $post['copy_lang'])
- ->order('id asc')
- ->select();
- if (!empty($arcrankRow)) {
- foreach ($arcrankRow as $key => $val) {
- $arcrankRow[$key]['lang'] = $mark;
- }
- $insertNum = $arcrank_db->insertAll($arcrankRow);
- if ($insertNum != count($arcrankRow)) {
- return false;
- }
- }
- }
-
-
-
- $syn_status = $this->syn_ad_position($mark, $post['copy_lang']);
- if (false === $syn_status) {
- return $syn_status;
- }
-
-
-
- $syn_status = $this->syn_shop_product_attrlist($mark, $post['copy_lang']);
- if (false === $syn_status) {
- return $syn_status;
- }
-
-
-
- $syn_status = $this->syn_form($mark, $post['copy_lang']);
- if (false === $syn_status) {
- return $syn_status;
- }
-
-
-
- $syn_status = $this->syn_links_group($mark, $post['copy_lang']);
- if (false === $syn_status) {
- return $syn_status;
- }
-
-
-
-
-
-
-
-
- $smtp_tpl_db = Db::name('smtp_tpl');
- $smtptplCount = $smtp_tpl_db->where('lang',$mark)->count();
- if (empty($smtptplCount)) {
- $smtptplRow = $smtp_tpl_db->field('tpl_id,lang',true)
- ->where('lang', $post['copy_lang'])
- ->order('tpl_id asc')
- ->select();
- if (!empty($smtptplRow)) {
- foreach ($smtptplRow as $key => $val) {
- $smtptplRow[$key]['lang'] = $mark;
- }
- $insertObject = model('SmtpTpl')->saveAll($smtptplRow);
- $insertNum = count($insertObject);
- if ($insertNum != count($smtptplRow)) {
- return false;
- }
- }
- }
-
-
-
- $sms_tpl_db = Db::name('sms_template');
- $smstplCount = $sms_tpl_db->where('lang',$mark)->count();
- if (empty($smstplCount)) {
- $smstplRow = $sms_tpl_db->field('tpl_id,lang',true)
- ->where('lang', $post['copy_lang'])
- ->order('tpl_id asc')
- ->select();
- if (!empty($smstplRow)) {
- foreach ($smstplRow as $key => $val) {
- $smstplRow[$key]['lang'] = $mark;
- }
- $insertObject = model('SmsTemplate')->saveAll($smstplRow);
- $insertNum = count($insertObject);
- if ($insertNum != count($smstplRow)) {
- return false;
- }
- }
- }
-
-
-
- $langpack_db = Db::name('language_pack');
- $langpackCount = $langpack_db->where('lang',$mark)->count();
- if (empty($langpackCount)) {
- $langpackRow = $langpack_db->field('id,lang',true)
- ->where([
- 'lang' => $post['copy_lang'],
- 'is_syn' => 0,
- ])
- ->order('id asc')
- ->select();
- if (!empty($langpackRow)) {
- foreach ($langpackRow as $key => $val) {
- $langpackRow[$key]['lang'] = $mark;
- }
- $insertObject = model('LanguagePack')->saveAll($langpackRow);
- $insertNum = count($insertObject);
- if ($insertNum != count($langpackRow)) {
- return false;
- }
- }
- }
-
-
-
- $this->setLangNum();
-
-
- \think\Cache::clear('language');
- delFile(CACHE_PATH.$mark);
-
- return true;
- }
-
-
-
- public function setLangNum()
- {
- \think\Cache::clear('system_langnum');
- $languageRow = Db::name('language')->field('mark')->select();
- $system_langnum = count($languageRow);
- foreach ($languageRow as $key => $val) {
- tpCache('system', ['system_langnum'=>$system_langnum], $val['mark']);
- }
-
-
- $system_langnum = 1;
- $web_language_switch = tpCache('web.web_language_switch');
- if (!empty($web_language_switch)) {
- $system_langnum = Db::name('language')->where(['status'=>1])->count();
- }
- $tfile = DATA_PATH.'conf'.DS.'lang_enable_num.txt';
- $fp = @fopen($tfile,'w');
- if(!$fp) {
- @file_put_contents($tfile, $system_langnum);
- }
- else {
- fwrite($fp, $system_langnum);
- fclose($fp);
- }
- }
-
-
-
- public function afterDel($id_arr = [], $lang_list = [])
- {
- if (!empty($id_arr) && !empty($lang_list)) {
-
- $row = Db::name('language')->where(['status'=>1])->select();
- if (empty($row)) {
- Db::name('language')->where(['is_home_default'=>1])->update(['status'=>1,'update_time'=>getTime()]);
- }
-
- \think\Cache::clear('language');
- foreach ($lang_list as $key => $lang) {
- delFile(CACHE_PATH.$lang, true);
- @unlink(APP_PATH."lang/{$lang}.php");
- }
-
- $this->setLangNum();
-
- $this->delLangData($lang_list);
- }
- }
-
-
-
- public function delLangData($lang_list)
- {
- if (!empty($lang_list)) {
-
- Db::name('language_attr')->where("lang",'IN',$lang_list)->delete();
-
- Db::name('language_pack')->where("lang",'IN',$lang_list)->delete();
-
- Db::name('arcrank')->where("lang",'IN',$lang_list)->delete();
-
- Db::name('config')->where("lang",'IN',$lang_list)->delete();
-
- Db::name('setting')->where("lang",'IN',$lang_list)->delete();
-
- Db::name('config_attribute')->where("lang",'IN',$lang_list)->delete();
-
- $typeids = Db::name('arctype')->where("lang",'IN',$lang_list)->column('id');
-
- Db::name('arctype')->where("lang",'IN',$lang_list)->delete();
- Db::name('channelfield_bind')->where("typeid",'IN',$typeids)->delete();
- $aids = Db::name('archives')->where("typeid",'IN',$typeids)->column('aid');
-
- Db::name('archives')->where("aid",'IN',$aids)->delete();
- Db::name('article_content')->where("aid",'IN',$aids)->delete();
- Db::name('download_content')->where("aid",'IN',$aids)->delete();
- Db::name('download_file')->where("aid",'IN',$aids)->delete();
- Db::name('guestbook')->where("aid",'IN',$aids)->delete();
- Db::name('guestbook_attr')->where("aid",'IN',$aids)->delete();
- Db::name('images_content')->where("aid",'IN',$aids)->delete();
- Db::name('images_upload')->where("aid",'IN',$aids)->delete();
- Db::name('product_content')->where("aid",'IN',$aids)->delete();
- Db::name('product_img')->where("aid",'IN',$aids)->delete();
- Db::name('single_content')->where("aid",'IN',$aids)->delete();
-
- Db::name('form')->where("lang",'IN',$lang_list)->delete();
-
- Db::name('product_attribute')->where("lang",'IN',$lang_list)->delete();
-
- Db::name('shop_product_attrlist')->where("lang",'IN',$lang_list)->delete();
-
- Db::name('shop_product_attribute')->where("lang",'IN',$lang_list)->delete();
-
- Db::name('guestbook_attribute')->where("lang",'IN',$lang_list)->delete();
-
- Db::name('ad')->where("lang",'IN',$lang_list)->delete();
-
- Db::name('ad_position')->where("lang",'IN',$lang_list)->delete();
-
- Db::name('links')->where("lang",'IN',$lang_list)->delete();
-
- Db::name('links_group')->where("lang",'IN',$lang_list)->delete();
-
- Db::name('ui_config')->where("lang",'IN',$lang_list)->delete();
-
- Db::name('taglist')->where("lang",'IN',$lang_list)->delete();
-
- Db::name('tagindex')->where("lang",'IN',$lang_list)->delete();
-
- Db::name('smtp_tpl')->where("lang",'IN',$lang_list)->delete();
-
- Db::name('smtp_record')->where("lang",'IN',$lang_list)->delete();
-
- Db::name('sms_template')->where("lang",'IN',$lang_list)->delete();
-
- Db::name('sms_log')->where("lang",'IN',$lang_list)->delete();
-
- Db::name('users_notice_tpl')->where("lang",'IN',$lang_list)->delete();
-
- Db::name('users_notice_tpl_content')->where("lang",'IN',$lang_list)->delete();
-
- Db::name('users_bottom_menu')->where("lang",'IN',$lang_list)->delete();
- \think\Cache::clear();
- }
- }
-
-
-
- private function syn_arctype($mark = '', $copy_lang = 'cn')
- {
- $arctype_db = Db::name('arctype');
-
-
- $count = $arctype_db->where('lang',$mark)->count();
- if (!empty($count)) {
- $arctype_db->where("lang",$mark)->delete();
- }
-
-
- $bindArctypeArr = [];
- $arctypeLogic = new \app\common\logic\ArctypeLogic;
- $arctypeList = $arctypeLogic->arctype_list(0, 0, false, 0, ['lang'=>$copy_lang]);
-
- if (empty($mark) || empty($arctypeList)) {
- return -1;
- }
-
-
- $bindProductAttributeArr = [];
- $product_attribute_db = Db::name('product_attribute');
- $productAttributeRow = $product_attribute_db->where('lang',$copy_lang)
- ->order('attr_id asc')
- ->select();
- $productAttributeRow = group_same_key($productAttributeRow, 'typeid');
-
-
-
- $bindgbookAttributeArr = [];
- $guestbook_attribute_db = Db::name('guestbook_attribute');
- $gbookAttributeRow = $guestbook_attribute_db->where([
- 'form_type' => 0,
- 'lang' => $copy_lang,
- ])
- ->order('attr_id asc')
- ->select();
- $gbookAttributeRow = group_same_key($gbookAttributeRow, 'typeid');
-
-
-
- $arctype_M = model('Arctype');
- foreach ($arctypeList as $key => $val) {
- $data = $val;
- $typeid_old = $data['id'];
- unset($data['id']);
- $data['lang'] = $mark;
- $data['typename'] = $mark.$data['typename'];
- $data['parent_id'] = !empty($bindArctypeArr[$val['parent_id']]) ? $bindArctypeArr[$val['parent_id']] : 0;
- $typeid = $arctype_M->addData($data);
- if (empty($typeid)) {
- return false;
- }
-
- $channelfield_bind_list = Db::name('channelfield_bind')->where('typeid',$typeid_old)->select();
- if (!empty($channelfield_bind_list)){
- $channelfield_bind_insert = [];
- foreach ($channelfield_bind_list as $k => $v) {
- $channelfield_bind_insert[] = [
- 'typeid' => $typeid,
- 'field_id' => $v['field_id'],
- 'add_time' => getTime(),
- 'update_time' => getTime()
- ];
- }
-
- Db::name('channelfield_bind')->insertAll($channelfield_bind_insert);
- }
-
- $bindArctypeArr[$val['id']] = $typeid;
-
- if (!empty($productAttributeRow[$val['id']])) {
- foreach ($productAttributeRow[$val['id']] as $k2 => $v2) {
- $proArr = $v2;
- $proArr['typeid'] = $typeid;
- $proArr['lang'] = $mark;
- unset($proArr['attr_id']);
- $proArr['attr_name'] = $mark.$proArr['attr_name'];
- $new_attr_id = $product_attribute_db->insertGetId($proArr);
- if (empty($new_attr_id)) {
- return false;
- }
- $bindProductAttributeArr[$v2['attr_id']] = $new_attr_id;
- }
- }
-
-
- if (!empty($gbookAttributeRow[$val['id']])) {
- foreach ($gbookAttributeRow[$val['id']] as $k2 => $v2) {
- $gbArr = $v2;
- $gbArr['typeid'] = $typeid;
- $gbArr['lang'] = $mark;
- unset($gbArr['attr_id']);
- $gbArr['attr_name'] = $mark.$gbArr['attr_name'];
- $new_attr_id = $guestbook_attribute_db->insertGetId($gbArr);
- if (empty($new_attr_id)) {
- return false;
- }
- $bindgbookAttributeArr[$v2['attr_id']] = $new_attr_id;
- }
- }
-
- }
-
-
- $langAttrData = [];
-
-
- foreach ($bindArctypeArr as $key => $val) {
- $langAttrData[] = [
- 'attr_name' => 'tid'.$key,
- 'attr_value' => $val,
- 'lang' => $mark,
- 'attr_group' => 'arctype',
- 'add_time' => getTime(),
- 'update_time' => getTime(),
- ];
- }
-
-
- foreach ($bindProductAttributeArr as $key => $val) {
- $langAttrData[] = [
- 'attr_name' => 'attr_'.$key,
- 'attr_value' => $val,
- 'lang' => $mark,
- 'attr_group' => 'product_attribute',
- 'add_time' => getTime(),
- 'update_time' => getTime(),
- ];
- }
-
-
- foreach ($bindgbookAttributeArr as $key => $val) {
- $langAttrData[] = [
- 'attr_name' => 'attr_'.$key,
- 'attr_value' => $val,
- 'lang' => $mark,
- 'attr_group' => 'guestbook_attribute',
- 'add_time' => getTime(),
- 'update_time' => getTime(),
- ];
- }
-
-
-
- if (!empty($langAttrData)) {
- $insertObject = model('LanguageAttr')->saveAll($langAttrData);
- $insertNum = count($insertObject);
- if ($insertNum != count($langAttrData)) {
- return false;
- }
- }
-
- return true;
- }
-
-
-
- private function syn_ad_position($mark = '', $copy_lang = 'cn')
- {
- $ad_position_db = Db::name('ad_position');
-
-
- $count = $ad_position_db->where('lang',$mark)->count();
- if (!empty($count)) {
- $ad_position_db->where("lang",$mark)->delete();
- }
-
-
-
- $bindAdpositionArr = [];
- $adpositionList = $ad_position_db->where([
- 'lang'=>$copy_lang
- ])->order('id asc')
- ->select();
-
- if (empty($mark) || empty($adpositionList)) {
- return -1;
- }
-
-
- $bindAdArr = [];
- $ad_db = Db::name('ad');
- $adRow = $ad_db->where('lang',$copy_lang)
- ->order('id asc')
- ->select();
- $adRow = group_same_key($adRow, 'pid');
-
-
-
- foreach ($adpositionList as $key => $val) {
- $data = $val;
- unset($data['id']);
- $data['lang'] = $mark;
- $data['title'] = $mark.$data['title'];
- $pid = $ad_position_db->insertGetId($data);
- if (empty($pid)) {
- return false;
- }
- $bindAdpositionArr[$val['id']] = $pid;
-
- if (!empty($adRow[$val['id']])) {
- foreach ($adRow[$val['id']] as $k2 => $v2) {
- $adArr = $v2;
- $adArr['pid'] = $pid;
- $adArr['lang'] = $mark;
- unset($adArr['id']);
- $adArr['title'] = $mark.$adArr['title'];
- $new_ad_id = $ad_db->insertGetId($adArr);
- if (empty($new_ad_id)) {
- return false;
- }
- $bindAdArr[$v2['id']] = $new_ad_id;
- }
- }
-
- }
-
-
- $langAttrData = [];
-
-
- foreach ($bindAdpositionArr as $key => $val) {
- $langAttrData[] = [
- 'attr_name' => 'adp'.$key,
- 'attr_value' => $val,
- 'lang' => $mark,
- 'attr_group' => 'ad_position',
- 'add_time' => getTime(),
- 'update_time' => getTime(),
- ];
- }
-
-
- foreach ($bindAdArr as $key => $val) {
- $langAttrData[] = [
- 'attr_name' => 'ad'.$key,
- 'attr_value' => $val,
- 'lang' => $mark,
- 'attr_group' => 'ad',
- 'add_time' => getTime(),
- 'update_time' => getTime(),
- ];
- }
-
-
-
- if (!empty($langAttrData)) {
- $insertObject = model('LanguageAttr')->saveAll($langAttrData);
- $insertNum = count($insertObject);
- if ($insertNum != count($langAttrData)) {
- return false;
- }
- }
-
- return true;
- }
-
-
-
- private function syn_shop_product_attrlist($mark = '', $copy_lang = 'cn')
- {
- $attrlist_db = Db::name('shop_product_attrlist');
-
-
- $count = $attrlist_db->where('lang',$mark)->count();
- if (!empty($count)) {
- $attrlist_db->where("lang",$mark)->delete();
- }
-
-
-
- $bindAttrlistArr = [];
- $attrlistRow = $attrlist_db->where([
- 'lang'=>$copy_lang
- ])->order('list_id asc')
- ->select();
-
- if (empty($mark) || empty($attrlistRow)) {
- return -1;
- }
-
-
- $bindAttributeArr = [];
- $attribute_db = Db::name('shop_product_attribute');
- $attributeRow = $attribute_db->where('lang',$copy_lang)
- ->order('attr_id asc')
- ->select();
- $attributeRow = group_same_key($attributeRow, 'list_id');
-
-
-
- foreach ($attrlistRow as $key => $val) {
- $data = $val;
- unset($data['list_id']);
- $data['lang'] = $mark;
-
- $list_id = $attrlist_db->insertGetId($data);
- if (empty($list_id)) {
- return false;
- }
- $bindAttrlistArr[$val['list_id']] = $list_id;
-
- if (!empty($attributeRow[$val['list_id']])) {
- foreach ($attributeRow[$val['list_id']] as $k2 => $v2) {
- $attributeArr = $v2;
- $attributeArr['list_id'] = $list_id;
- $attributeArr['lang'] = $mark;
- unset($attributeArr['attr_id']);
-
- $new_attr_id = $attribute_db->insertGetId($attributeArr);
- if (empty($new_attr_id)) {
- return false;
- }
- $bindAttributeArr[$v2['attr_id']] = $new_attr_id;
- }
- }
-
- }
-
-
- return true;
- }
-
-
-
- private function syn_links_group($mark = '', $copy_lang = 'cn')
- {
- $links_group_db = Db::name('links_group');
-
-
- $count = $links_group_db->where('lang',$mark)->count();
- if (!empty($count)) {
- $links_group_db->where("lang",$mark)->delete();
- }
-
-
-
- $bindLinksGroupArr = [];
- $linksGroupList = $links_group_db->where([
- 'lang'=>$copy_lang
- ])->order('id asc')
- ->select();
-
- if (empty($mark) || empty($linksGroupList)) {
- return -1;
- }
-
-
- $links_db = Db::name('links');
- $linksRow = $links_db->where('lang',$copy_lang)
- ->order('id asc')
- ->select();
- $linksRow = group_same_key($linksRow, 'groupid');
-
-
-
- foreach ($linksGroupList as $key => $val) {
- $data = $val;
- unset($data['id']);
- $data['lang'] = $mark;
- $data['group_name'] = $mark.$data['group_name'];
- $groupid = $links_group_db->insertGetId($data);
- if (empty($groupid)) {
- return false;
- }
- $bindLinksGroupArr[$val['id']] = $groupid;
-
- if (!empty($linksRow[$val['id']])) {
- foreach ($linksRow[$val['id']] as $k2 => $v2) {
- $linksArr = $v2;
- $linksArr['groupid'] = $groupid;
- $linksArr['lang'] = $mark;
- unset($linksArr['id']);
- $linksArr['title'] = $mark.$linksArr['title'];
- $new_links_id = $links_db->insertGetId($linksArr);
- if (empty($new_links_id)) {
- return false;
- }
- }
- }
-
- }
-
-
- $langAttrData = [];
-
-
- foreach ($bindLinksGroupArr as $key => $val) {
- $langAttrData[] = [
- 'attr_name' => 'linksgroup'.$key,
- 'attr_value' => $val,
- 'lang' => $mark,
- 'attr_group' => 'links_group',
- 'add_time' => getTime(),
- 'update_time' => getTime(),
- ];
- }
-
-
-
- if (!empty($langAttrData)) {
- $insertObject = model('LanguageAttr')->saveAll($langAttrData);
- $insertNum = count($insertObject);
- if ($insertNum != count($langAttrData)) {
- return false;
- }
- }
-
- return true;
- }
-
- public function isValidateStatus($field = '', $value = '')
- {
- $return = true;
-
- $value = trim($value);
- if ($value == 0 && $field == 'status') {
- $count = Db::name('language')->where(['status'=>1])->count();
- if ($count <= 1) {
- $return = [
- 'time' => 2,
- 'msg' => '至少要开启一个语言',
- ];
- }
- }
-
- return $return;
- }
-
-
-
- private function syn_form($mark = '', $copy_lang = 'cn')
- {
- $form_db = Db::name('form');
-
-
- $count = $form_db->where('lang',$mark)->count();
- if (!empty($count)) {
- $form_db->where("lang",$mark)->delete();
- }
-
-
-
- $bindFormArr = [];
- $formList = $form_db->where([
- 'lang'=>$copy_lang
- ])->order('form_id asc')
- ->select();
-
- if (empty($mark) || empty($formList)) {
- return -1;
- }
-
-
- $bindformAttributeArr = [];
- $guestbook_attribute_db = Db::name('guestbook_attribute');
- $formAttributeRow = $guestbook_attribute_db->where([
- 'form_type' => 1,
- 'lang' => $copy_lang,
- ])
- ->order('attr_id asc')
- ->select();
- $formAttributeRow = group_same_key($formAttributeRow, 'typeid');
-
-
-
- foreach ($formList as $key => $val) {
- $data = $val;
- unset($data['form_id']);
- $data['lang'] = $mark;
- $data['form_name'] = $mark.$data['form_name'];
- $form_id = $form_db->insertGetId($data);
- if (empty($form_id)) {
- return false;
- }
- $bindFormArr[$val['form_id']] = $form_id;
-
-
- if (!empty($formAttributeRow[$val['form_id']])) {
- foreach ($formAttributeRow[$val['form_id']] as $_k => $_v) {
- $formArr = $_v;
- $formArr['typeid'] = $form_id;
- $formArr['lang'] = $mark;
- unset($formArr['attr_id']);
- $formArr['attr_name'] = $mark.$formArr['attr_name'];
- $new_attr_id = $guestbook_attribute_db->insertGetId($formArr);
- if (empty($new_attr_id)) {
- return false;
- }
- $bindformAttributeArr[$_v['attr_id']] = $new_attr_id;
- }
- }
- }
-
-
- $langAttrData = [];
-
-
- foreach ($bindFormArr as $key => $val) {
- $langAttrData[] = [
- 'attr_name' => 'form'.$key,
- 'attr_value' => $val,
- 'lang' => $mark,
- 'attr_group' => 'form',
- 'add_time' => getTime(),
- 'update_time' => getTime(),
- ];
- }
-
-
- foreach ($bindformAttributeArr as $key => $val) {
- $langAttrData[] = [
- 'attr_name' => 'attr_'.$key,
- 'attr_value' => $val,
- 'lang' => $mark,
- 'attr_group' => 'form_attribute',
- 'add_time' => getTime(),
- 'update_time' => getTime(),
- ];
- }
-
-
-
- if (!empty($langAttrData)) {
- $insertObject = model('LanguageAttr')->saveAll($langAttrData);
- $insertNum = count($insertObject);
- if ($insertNum != count($langAttrData)) {
- return false;
- }
- }
-
- return true;
- }
- }
|