'); define('WEB_URL', '/'); define('ALUMNI_URL', WEB_URL.'alumni/'); define('AJAX_URL',WEB_URL.'ajax/'); define('AJAX_FEEDIT_URL',AJAX_URL.'frontend_edit/'); define('CATEGORY_PREFIX_URL', WEB_URL.'category/'); define('OPENING_CLASS_CATEGORY_URL', CATEGORY_PREFIX_URL.'opening/'); if(get_first_uri()=='flyer'){ header("HTTP/1.1 301 Moved Permanently"); header("Location: https://".LIVE_DOMAIN.OPENING_CLASS_CATEGORY_URL); exit; } if(strpos($_SERVER['REQUEST_URI'],'/faq')===0){ header("HTTP/1.1 301 Moved Permanently"); header('location:'.CATEGORY_PREFIX_URL.'faq/'); exit(); } if(0){ session_start(); require_once 'keycloak_init.php'; #TODO: rename to keycloak_setup.php if(isset($KEYCLOAK_USER) and $KEYCLOAK_USER){ echo $KEYCLOAK_USER->getName(); echo'
'; echo $KEYCLOAK_USER->getEmail(); echo'
'; echo $KEYCLOAK_USER->getId(); echo'
'; } } function now($format='Y-m-d H:i:s'){ // %Y-%m-%d %H:%M:%S foreach(array('Y'=>'%Y', 'm'=>'%m', 'd'=>'%d', 'H'=>'%H', 'i'=>'%M', 's'=>'%S')as$k=>$v){ $format = str_replace($k,$v,$format); } $ret = shell_exec("date '+".$format."'"); return trim($ret); } function get_dates_diff($date1,$date2){ $datetime1 = date_create($date1); # or use new DateTime($date1); $datetime2 = date_create($date2); $interval = date_diff($datetime1, $datetime2); return $interval; } $uri = $_SERVER['REQUEST_URI']; foreach(array( '/category/for-client'=>'/category/general/', '/category/about-apply'=>'/category/admission/', '/category/about-course'=>'/category/curriculum/', '/category/others'=>'/category/misc/', )as$k=>$v){ if(strpos($uri,$k)===0){ header("HTTP/1.1 301 Moved Permanently"); header("Location: https://".LIVE_DOMAIN.$v); exit; } } function get_first_uri(){ $uri=$_SERVER['REQUEST_URI']; if(substr($uri,0,1)==='/'){ $uri = substr($uri,1); } $tmp = explode('/',$uri); $first_uri = $tmp[0]; return$first_uri; } function getHtml($url, $post = null) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); @curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); if(!empty($post)) { curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); } $result = curl_exec($ch); curl_close($ch); return $result; } if($_SERVER['SERVER_NAME']===LIVE_DOMAIN_WITH_WWW){ header("HTTP/1.1 301 Moved Permanently"); header("Location: https://".LIVE_DOMAIN.$_SERVER['REQUEST_URI']); exit; } #implement cache $IS_WordpressFlickrEmbed_plugin_request = false; foreach($_GET as $k=>$v){ if(strpos($k,'__wpfe_')===0){$IS_WordpressFlickrEmbed_plugin_request=true;break;} } # define('IS_VCACHE_READING', isset($_GET['nc_by_crontab'])); define('IS_NOT_VCACHE_READING', !IS_VCACHE_READING); define('VCACHE_FOLDER_NAME', 'Vcache-aiaaia'); define('VCACHE_SLASH_CONVERTER','---'); function get_abs_Vcache_filepath($filename){ return __DIR__.'/'.VCACHE_FOLDER_NAME.'/'.$filename; } function uri2Vcachefilename($uri, $is_need_abspath=false){ if(strpos($uri,'?')!==false){ $a = explode('?', $uri); $uri = $a[0]; } if($uri==='' || $uri==='/'){ $filename = 'index'; }else{ if(substr($uri,0,1)==='/'){$uri=substr($uri,1);} if(substr($uri,-1)==='/'){$uri=substr($uri,0,-1);} $filename = str_replace('/', VCACHE_SLASH_CONVERTER, $uri); } if($is_need_abspath){ $filename = get_abs_Vcache_filepath($filename); } return $filename; } function Vcachefilename2uri($filename){ $uri = str_replace(VCACHE_SLASH_CONVERTER, '/', $filename); return $uri; } $uri = $_SERVER['REQUEST_URI']; #$USE_CACHE = !isset($_GET['nc']) && !$IS_WordpressFlickrEmbed_plugin_request && !$IS_WP_in_SUBFOLDER; #nc means no_Vcache $USE_CACHE = $_GET && !isset($_GET['nc']) && !$IS_WordpressFlickrEmbed_plugin_request; if($USE_CACHE){ $a = explode('?', $uri); #while development $uri = $a[0]; $filename = uri2Vcachefilename($uri,false); $cache_file = get_abs_Vcache_filepath($filename); if(file_exists($cache_file)){ $html = file_get_contents($cache_file); if($html){ $html = str_replace('http://'.$_SERVER['SERVER_NAME'], '//'.$_SERVER['SERVER_NAME'], $html); die($html);#.''); } } } ####### define('LECTURER_NAME', 'lecturer'); define('LECTURER_URI_PREFIX', '/'.LECTURER_NAME.'/'); if(strpos($_SERVER['REQUEST_URI'], LECTURER_URI_PREFIX)===0 and strlen($_SERVER['REQUEST_URI'])>strlen(LECTURER_URI_PREFIX)){ $a = explode('/', $_SERVER['REQUEST_URI']); if( strpos($a[2],"swc") === 0){ header("HTTP/1.1 301 Moved Permanently"); header('Location: https://'.LIVE_DOMAIN.WEB_URL.$a[2].'/?nc'); exit; } header("HTTP/1.1 301 Moved Permanently"); header('Location: https://'.LIVE_DOMAIN.WEB_URL.$a[2].'/?nc'); exit; // $html = getHtml('https://'.LIVE_DOMAIN.WEB_URL.$a[2].'/?nc'); // die($html // .'' #debug mark // ); } /** * WordPress 基本設定檔。 * * 本檔案包含以下設定選項: MySQL 設定、資料表前綴、 * 私密金鑰、WordPress 語言設定以及 ABSPATH。如需更多資訊,請 * 前往 {@link http://codex.wordpress.org/Editing_wp-config.php 編輯 * wp-config.php} Codex 頁面。或者向您的空間提供商諮詢關於 MySQL 設定資訊。 * * 這個檔案用於安裝程式自動生成 wp-config.php 設定檔。 * 您不需要將它用於您的網站,可以手動複製這個檔案, * 並重新命名為 "wp-config.php",然後輸入相關訊息。 * * @package WordPress */ define('ROOT_PATH', dirname(__FILE__) . '/'); $DB_USER_PWD_FILE = ROOT_PATH . 'db_user_pwd.php'; if(!file_exists($DB_USER_PWD_FILE) or (isset($db_user) and !$db_user) or (isset($db_pwd) and !$db_pwd) or (isset($db_name) and !$db_name)){ // ** MySQL 設定 - 您可以從主機服務提供商獲取相關資訊。 ** // /** WordPress 的資料庫名稱,請更改 "database_name_here" */ define('DB_NAME', 'aiacademy_tw'); /** MySQL 資料庫使用者名稱,請更改 "username_here" */ define('DB_USER', 'root'); /** MySQL 資料庫密碼,請更改 "password_here" */ define('DB_PASSWORD', 'SWCDR123@Root456@PassWord789'); }else{ require_once $DB_USER_PWD_FILE; define('DB_NAME', $db_name); /** MySQL database username */ define('DB_USER', $db_user); /** MySQL database password */ define('DB_PASSWORD', $db_pwd); } /** MySQL 主機位址 */ define('DB_HOST', 'mysql8'); /** 建立資料表時預設的文字編碼 */ define('DB_CHARSET', 'utf8mb4'); /** 資料庫對照型態。如果不確定請勿更改。 */ define('DB_COLLATE', 'utf8_unicode_ci'); /**#@+ * 認證唯一金鑰設定。 * * 將這些更改為不同的唯一字串或符號。 * 您可以使用 {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org 私密金鑰服務} 來自動產生。 * 您可於任何時候修改這些字串讓 Cookies 失效。這將會強制所有使用者必須重新登入。 * * @since 2.6.0 */ /* define('AUTH_KEY', 'A%+E/S1/]p%(#tAX!mm$Nmx?; dFq|7XZ)B@nl=80b4lx$g$5n_|{CroI*u*O+jd'); define('SECURE_AUTH_KEY', 'vFTqk2t$8@q*gyfbjP&V)^j1S}&bP,_(yiO6o^y`bDOQ4Vl)yHDMR;qn[ l.PTIH'); define('LOGGED_IN_KEY', 'O]Q ud l`^&-0)tQQvDD1]JR/V=FtUXr) y5?:a;ohBb6V^Q!4 [kk`eK(ez!Bj5'); define('NONCE_KEY', 'u.(ihOLvw!yog=}5MqQ`zk6$PqAPj|r`trIpYgyXpx_m~!1:;bQE(B1vMjb9Wez$'); define('AUTH_SALT', '$,?rk8vm1GN5SA`M&anLDw8vi=yCTr-,XSvoP+5~)&0GXk9LlMIq{r=ivWI_t/>_'); define('SECURE_AUTH_SALT', 'GpOjf|!0nnjN{8PF[bl@}-x#0QqBh2cfdhq)(j9K<*vXb[@?_.(z WDd2GJr!z0m'); define('LOGGED_IN_SALT', '(CGLK!-Q7?YggmYnGC&_0`t#TArVdg[Te7`@X56m3gg2.JRPjYi8SEO_w['); define('NONCE_SALT', '~@&qrSG;8v._YnyqScHVuHTq!DOPojPFSwnceZ?j53$f3X]h[bYCc*:>ObAF |F6F4@xPKz$p9MO+Hgd7c.i$ -eYye0$~}9,1e-h|#+('); define('SECURE_AUTH_KEY', 'BW)o/AUde80-_QG7@|/*41oyJdw:[O3C_EJ@C[p4vEAq*r6OxN/G!)-kKU21iOgd'); define('LOGGED_IN_KEY', 'eEg;3;.pp$1!|~i,dD#e6EyK7S=%wE4|$?U)z5m`iLI;z~`R%zG2s?mBmNTd$+v}'); define('NONCE_KEY', ' tu3toRY-/t],?.5@!yIAmOs,R@qt`Y4<;k},RZenyU1T4fu1pVsl=22[-3%I4cbhV=Qb?7jCz,LWGq,ngY,fQRBt%'); define('SECURE_AUTH_SALT', 'q=JV3.J:3H[gIzW$g0{dTwi*(5dt{>uvL4N)j1!eVeyLc1a~}>i3ohY +kkN~D|W'); define('LOGGED_IN_SALT', 'JB%6Z;r$,uYU(X(%d|G2V0D;:KWR1{?*Uw{R:W+sr6>3}Yo=}E+.C G_z8)2&|^%'); define('NONCE_SALT', 'YP~i0m jY|[4o},Lh`sA4V$0#7}|QD_Oh{pKz>N`-EN&NGwx:jd-Q(|a@N1R0^vn'); /**#@-*/ /** * WordPress 資料表前綴。 * * 若您為每個 WordPress 設定不同的資料表前綴,則可在同個資料庫內安裝多個 WordPress。 * 前綴只能使用半型數字、字母和底線! */ $table_prefix = 'aiady_'; /** * WordPress 自動儲存間隔 * * 當您編輯文章時 WordPress 使用 Ajax 技術自動地定時幫您儲存文章草稿。 * 您可更改數值以延長或減少自動儲存的時間間隔。 * 預設儲存間隔為 60 秒。 */ //define('AUTOSAVE_INTERVAL', 60 ); // 單位:秒 /** * WordPress 文章版本設定 * * WordPress 預設會幫您儲存舊版的文章與分頁,以便您之後可以回復到先前的版本。 * 這功能可關閉,或是指定最大版本數量。 * 預設為開啟,若要關閉請將它設為 false。 * 若您想指定指定最大版本數量,請設個整數。 */ //define('WP_POST_REVISIONS', true ); /** * 快取 * * 若 WP_CACHE 值為 true,當它執行 wp-settings.php 時會把 wp-content/advanced-cache.php 一起執行。 * 許多快取外掛會要求您將這個值設為 true。 */ #define('WP_C #ACHE', true); #define('WPCA #CHEHOME',ABSPATH.'wp-content/plugins/wp-super-cache/'); /** * 啟用多網誌站台與網誌網路功能 * * 若 WP_ALLOW_MULTISITE 值為 true 可啟用多網誌站台功能。 */ //define('WP_ALLOW_MULTISITE', false); /** * 開發人員用: WordPress 偵錯模式。 * * 將此設定為 true 將可開啟開發時的通知顯示。 * 強烈建議外掛與佈景主題開發人員使用 WP_DEBUG * 於他們的開發環境中。 */ define('WP_HOME','https://'.$_SERVER['SERVER_NAME']); define('WP_SITEURL','https://'.$_SERVER['SERVER_NAME']); $ip = $_SERVER['REMOTE_ADDR']; define('IS_DEVELOPER', $ip==='140.109.22.127' || $ip==='127.0.0.1' || $ip==='140.109.22.127' || $ip==='1.164.196.154' || $ip==='110.50.144.162' || $ip===TAIPEI_HEADQUARTER_IP || $ip==='123.194.28.73' || $ip==='140.109.16.164' || $ip==='180.217.99.166'); define('IS_ME', $ip==='61.231.161.156'); define('IS_UNCOMPRESS', IS_DEV || (isset($_GET['unc'])&&IS_DEVELOPER)); define('IS_R_UNCOMPRESS', IS_UNCOMPRESS && (IS_DEV || (isset($_GET['r'])&&IS_DEVELOPER))); define('IS_V_UNCOMPRESS', IS_UNCOMPRESS && (IS_DEV || (isset($_GET['v'])&&IS_DEVELOPER))); define('FE_VER', strpos($_SERVER['REMOTE_ADDR'],'140.109.')===0||IS_UNCOMPRESS ? '?'.(IS_DEVELOPER ? date('Y-m-d_H-i-s') : date('YmdHi')) : '?5'); define('FE_SUFFIX', IS_UNCOMPRESS ? '--uncompressed' : ''); define('CSS_URL', WEB_URL . 'c/'); define('CSS_VENDORS_URL',CSS_URL.'vendors/'); define('JS_URL', WEB_URL . 'j/'); define('BACKEND_LIB_URL', WEB_URL.'lib/'); define('BACKEND_LIB_ABSPATH', __DIR__.'/lib/'); define('BACKEND_SECURIMAGE_LIB_ABSPATH', BACKEND_LIB_ABSPATH.'securimage/'); define('JS_VENDORS_URL', JS_URL.'vendors/'); define('ASSETS_URL', WEB_URL . 'assets/'); define('BOOTSTRAP_URL', ASSETS_URL . 'bootstrap/'); define('ZABUTO_URL', ASSETS_URL . 'zabuto/'); define('BS_DATERANGEPICKER_URL', JS_URL . 'bootstrap-daterangepicker/'); define('IMG_URL', WEB_URL . 'img/'); define('WEBAPI_URL', WEB_URL . 'webapi/'); define('SUBSCRIBE_URL', WEB_URL.'subscribe/'); define('LECTURER_CATEGORY_URL', CATEGORY_PREFIX_URL.'lecturers/'); define('NEWS_CATEGORY_URL', CATEGORY_PREFIX_URL.'news/'); define('PRESS_CATEGORY_URL', CATEGORY_PREFIX_URL.'press/'); define('SUCCESS_CATEGORY_URL', CATEGORY_PREFIX_URL.'success/'); define('MEETUP_CATEGORY_URL', CATEGORY_PREFIX_URL.'meetup/'); define('MEETUP_PAGE_LIST_URL', WEB_URL.'meetup/'); define('VIDEO_CATEGORY_URL', CATEGORY_PREFIX_URL.'video/'); define('DOWNLOADS_CATEGORY_URL', CATEGORY_PREFIX_URL.'downloads/'); define('FAQ_CATEGORY_URL', CATEGORY_PREFIX_URL.'faq/'); define('FAQ_INDUSTRY_COOP_CATEGORY_URL', CATEGORY_PREFIX_URL.'industry-cooperation/'); define('TAG_PREFIX_URL', WEB_URL.'tag/'); define('LECTURER_CAT_ID', 3); define('NEWS_CAT_ID', 10); define('PRESS_CAT_ID', 28); define('SUCCESS_CAT_ID', 82); define('MEETUP_CAT_ID', 88); define('TP_MEETUP_CAT_ID', 90); define('HC_MEETUP_CAT_ID', 91); define('TC_MEETUP_CAT_ID', 92); define('ST_MEETUP_CAT_ID', 93); define('VIDEO_CAT_ID', 31); define('DOWNLOADS_CAT_ID', 23); define('NEWS_TEMP_CAT_ID', 20); define('FAQ_CAT_ID', 11); define('V2_FAQ_CAT_ID', 74); define('SIGNUPMUSTKNOW_CAT_ID', 22); define('EDM_ALSO_WEBPAGE_CAT_ID',73); define('OFFSITE_SOLVING_CAT_ID',76); define('CALENDAR_CAT_ID', 81); #v2 define('OPENING_CLASS_CAT_ID', 49); define('STUDENT_WORKS_CAT_ID', 64); define('ACADEMIC_PARTNERS_CAT_ID', 72); define('NEW_CAT_SLUG', 'news'); define('FEATURES_CAT_ID', 65); define('TESTIMONIALS_CAT_ID', 63); define('VIDEO_COURSE_CAT_ID', 71); define('CLASS_INTRO_CAT_ID', 66); define('HOT_ISSUES_CAT_ID', 41); define('INDUSTRIAL_INFO_CAT_ID', 75); define('IS_TEAM_MEMBERS_IP', strpos($ip, '140.109.')===0 || in_array($ip, array())); define('IS_PRODUCTION', strpos($_SERVER['HTTP_HOST'], LIVE_DOMAIN)!==false); define('HOME_PAGE_ID', 2); define('ORG_PAGE_ID', 18); define('ABOUT_PAGE_ID', 12); define('CORPORATE_PARTNER_PAGE_ID', 50); define('FEATURES_PAGE_ID', 6320); define('CEO_SAYING_PAGE_ID', 5697); define('PRINCIPAL_SAYING_PAGE_ID', 5694); define('TEST_PRINCIPAL_SAYING_PAGE_ID', 8447); define('VISION_PAGE_ID', 15); define('OFFSITE_SOLVING_PAGE_ID',3622); define('CALENDAR_PAGE_ID',7783); define('TAG_LINK_STYLE_NO_2', 2); define('VIDEO_COURSE_YOUTUBE_DEFAULT_W', 560); define('VIDEO_COURSE_YOUTUBE_DEFAULT_H', 315); function d($s,$d=0){ if(is_object($s) or is_array($s)){echo'
';print_r($s);print'
';}else{var_dump($s);} if($d){exit;} } function dd($__FILE__){ $a = explode('/',$__FILE__); if(isset($_GET['dd']))echo'
------'.$a[count($a)-1].'
'; } function debug_phpfile($__FILE__, $__LINE__){ if(isset($_GET['unc'])){ echo''; } } function is_facebook_bot(){ return isset($_SERVER['HTTP_USER_AGENT']) && strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'facebook')!==false; } function is_twitter_bot(){ return isset($_SERVER['HTTP_USER_AGENT']) && strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'twitter')!==false; } function is_google_bot(){ return isset($_SERVER['HTTP_USER_AGENT']) && strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'google')!==false; } function is_bot(){ $b = isset($_SERVER['HTTP_USER_AGENT']) && ( strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'bot')!==false || is_google_bot() || is_facebook_bot() || is_twitter_bot() ); return $b; } function need_og_tags(){ return is_facebook_bot() || is_twitter_bot(); # https://dev.twitter.com/cards/getting-started#crawling } function need_twitter_card_tags(){ return is_twitter_bot(); } function safe_db_value($str,$is_pure_text_and_no_html=false){ $a = array('select'=>'select','drop'=>'drop', 'union'=>'union','update'=>'update', 'insert into'=>'insert into', 'delete'=>'delete','desc '=>'desc', 'replace'=>'replace','--'=>''); foreach($a as$find=>$replace){ $str = preg_replace('/'.$find.'/i',$replace,$str); } if($is_pure_text_and_no_html){ $str = str_replace('=','=',$str); $str = str_replace('<','<',$str); $str = str_replace('>','>',$str); $str = htmlspecialchars($str); } return$str; } function my_safe_html($s, $ary_allow=array()){ foreach($ary_allow as$k=>$v){ $s = str_replace($k,$v,$s); } $s = htmlspecialchars($s); foreach($ary_allow as$k=>$v){ $s = str_replace($v, $k, $s); } return $s; } function str_replace_first($from, $to, $content) { # https://stackoverflow.com/questions/1252693/using-str-replace-so-that-it-only-acts-on-the-first-match $from = '/'.preg_quote($from, '/').'/'; return preg_replace($from, $to, $content, 1); } function auto_add_target_blank($content){ preg_match_all('/]+>/i', $content, $m); foreach($m as$k=>$v){ foreach($v as$k2=>$v2){ #echo $k.'--'.$k2.'--'. htmlspecialchars($v2); if(strpos($v2, ' href="http')!==false and strpos($v2,$_SERVER['SERVER_NAME'])===false and strpos($v2,'target="_blank"')===false){ $content = str_replace($v2, substr($v2,0,strlen($v2)-1).' target="_blank">', $content); } } } return $content; } function imgsrc_rm_domain($imgsrc){ $b=false; $a = array($_SERVER['SERVER_NAME'], LIVE_DOMAIN, LIVE_DOMAIN_WITH_WWW); $a = array_unique($a); foreach($a as$domain){ if(strpos($imgsrc, $domain)!==false){ $b=$domain;break; } } if($b){ list($tmp, $imgsrc) = explode($b, $imgsrc); } return $imgsrc; } function get_attribute_value_in_one_tag($tag_html, $attr='src') { preg_match('/ '.$attr.'=".+?"/i', $tag_html, $m); return str_replace(array(' '.$attr.'="', '"'), '', $m[0]); } function get_post_meta_imgsrc($post_id, $meta_key, $size='full'){ $a = wp_get_attachment_image_src(get_post_meta($post_id, $meta_key, true), $size); return $a[0]; # src } function get_first_imgsrc($html){ $first_imgsrc = null; preg_match('/]*? src=([^>]*?)>/im',$html,$m); if($m and isset($m[1]) and $m[1]){ $first_imgsrc = $m[1]; $first_imgsrc = preg_split('/ [a-zA-Z]+=/',$first_imgsrc)[0]; if(in_array(substr($first_imgsrc,0,1), array('"',"'"))){ $first_imgsrc = substr($first_imgsrc,1); $first_imgsrc = substr($first_imgsrc,0,strlen($first_imgsrc)-1); } } return$first_imgsrc; } function get_all_imgsrc($html, $is_use_wordpress_original_size_image=false){ preg_match_all('/ src=".*?"/',$html,$m); $ret = array(); if($m){ foreach($m[0] as$v){ $v=str_replace(' src=', '', $v); $v=substr($v,1); $v=substr($v,0,strlen($v)-1); $ret[]=$v; } } if($is_use_wordpress_original_size_image){ foreach($ret as$k=>$v){ $ret[$k] = preg_replace('/-[0-9]+x[0-9]+\./', '.', $v); } } return$ret; } function display_img($imgsrc, $attr='', $need_lazy_loading = true){ if($attr and strpos($attr,' ')!==0){$attr = ' '.$attr;} $img = ''; if(!$need_lazy_loading){return$img;} return '' .implode(' data-original=', explode(' src=', $img, 2)) #https://stackoverflow.com/questions/1252693/ ; } function get_featured_imgsrc($post_id,$ary_size_conf=array(320,320)){ $imgsrc=''; $html_thumb = get_the_post_thumbnail($post_id, $ary_size_conf); $thumb = preg_match('/ src=".*?"/', $html_thumb,$m); if(isset($m[0])&&$m[0]!=''){ $imgsrc = str_replace(array('"'," src="),'',$m[0]); } return$imgsrc; } function get_web_developer_user_login(){ return array('vansindata'); } $ary_frontend_modules_config = array( // https://github.com/kazzkiq/balloon.css/blob/master/balloon.css // 'balloon'=>array('CSS'=>$IS_PC ? array(CSS_URL.'balloon.css') : array()) // using Javascript dynamic loading /* */ 'bootstrap'=>array( 'CSS'=>array(BOOTSTRAP_URL.'css/bootstrap.min.css', BOOTSTRAP_URL.'css/bootstrap-theme.min.css'), 'JS'=>array(BOOTSTRAP_URL.'js/bootstrap.min.js') ), 'bootstrap_daterangepicker'=>array( 'CSS'=>array( BS_DATERANGEPICKER_URL.'daterangepicker.css' ), 'JS'=>array( BS_DATERANGEPICKER_URL.'moment.min.js', BS_DATERANGEPICKER_URL.'daterangepicker.js', // // 'https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js', // lt IE9 // 'https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js', // lt IE9 ) ), 'base'=>array('CSS'=>array(CSS_URL.'base'.FE_SUFFIX.'.css'.FE_VER)), 'lazyload'=>array('JS'=>array(JS_URL.'lazyload.js')), 'banner'=>array('CSS'=>array(CSS_URL.'banner'.FE_SUFFIX.'.css'),'JS'=>array(JS_URL.'banner'.FE_SUFFIX.'.js')), 'fonts'=>array('CSS'=>array(CSS_URL.'fonts.css')), 'animations'=>array('CSS'=>array(CSS_URL.'animations.css')), ); array_unshift($ary_frontend_modules_config['bootstrap_daterangepicker']['CSS'], $ary_frontend_modules_config['bootstrap']['CSS'][0], $ary_frontend_modules_config['bootstrap']['CSS'][1] ); array_unshift($ary_frontend_modules_config['bootstrap_daterangepicker']['JS'], $ary_frontend_modules_config['bootstrap']['JS'][0] ); function get_frontend_by_page_id($page_id, $type){ $ary_conf = array( '439'=>array('CSS'=>CSS_URL.'articles-of-association.css', 'JS'=>JS_URL.'articles-of-association.js') ); $ret = ''; if(isset($ary_conf[$page_id]) and isset($ary_conf[$page_id][$type]) and $ary_conf[$page_id][$type]){ $asset = $ary_conf[$page_id][$type]; if($type=='JS'){ $ret.=''; }else{ $ret.=''; } } return$ret; } function collect_frontend_assets($ary_frontend_modules){ global $ary_frontend_modules_config; $ary_CSS = $ary_JS = array(); foreach($ary_frontend_modules as$module){ $assets = $ary_frontend_modules_config[$module]; foreach(array('JS','CSS')as$type){ // if(!is_array($assets[$type])){var_dump($assets[$type]);continue;} if(!isset($assets[$type]) or !is_array($assets[$type])){continue;} foreach($assets[$type] as $url){ if(!in_array($url, ${'ary_'.$type})){ array_push(${'ary_'.$type}, $url); } } } } return array('CSS'=>$ary_CSS, 'JS'=>$ary_JS); } function get_css_js_assets_handle($css_js_relative_url){ if(strpos($css_js_relative_url, '?')!==false){ list($css_js_relative_url, $_) = explode('?', $css_js_relative_url); } $css_js_relative_url = str_replace('/', '-', $css_js_relative_url); $css_js_relative_url = str_replace('.', '_', $css_js_relative_url); $handle = 'ZZZ'.$css_js_relative_url; return$handle; } function load_css_assets($ary_css, $launch_css_path=''){ if(!is_array($ary_css)){var_dump($ary_css);return;} if($launch_css_path){array_push($ary_css, $launch_css_path);} foreach($ary_css as$v){ if($v){ // echo''; wp_enqueue_style(get_css_js_assets_handle($v),$v); } } } function load_js_assets($ary_js, $launch_js_path=''){ if(!is_array($ary_js)){var_dump($ary_js);return;} if($launch_js_path){array_push($ary_js, $launch_js_path);} foreach($ary_js as$v){ if($v){ // echo''; wp_enqueue_script(get_css_js_assets_handle($v),$v); } } } function get_customize_field_post_meta($post_id,$is_force_convert_to_string){ $a = get_post_meta($post_id); $ret = array(); foreach($a as $k=>$v){ if(substr($k,0,1)==='_'){continue;} if($is_force_convert_to_string){ $ret[$k] = is_array($v) && count($v)>0 ? $v[0] : ''; }else{ $ret[$k] = $v; } } return $ret; } function get_uri_without_querystring(){ $uri = $_SERVER['REQUEST_URI']; if(strpos($uri,'?')!==false){list($uri,) = explode('?', $uri);} return $uri; } function get_sql_limit($page, $pagesize){ if($page==1){return ' LIMIT '.$pagesize;} return ' LIMIT '.(($page-1)*$pagesize).', '.$pagesize; } function display_date($date, $find='-', $to='/'){ $s = str_replace($find,$to,$date); return $s; } function convert_num2day($num){ $a = array('?','一','二','三','四','五','六','日'); return isset($a[$num]) ? $a[$num] : '---'; } function bread($uri){ $ret = '
  • 首頁
  • '; if(is_category()){ $last_cat_id = $cat_id = get_query_var('cat')+0; $middle=''; $n = 5; $cat = get_category($cat_id); while($n--){ if(!$cat->parent){break;} $parent = get_category($cat->parent); $middle='
  • '.$parent->cat_name.'
  • '.$middle; $cat_id=$parent->cat_ID; $cat = get_category($cat_id); } $ret.=$middle.'
  • '.get_cat_name($last_cat_id).'
  • '; }elseif(is_single()){ global$post; $cats = get_the_category(); $IS_LECTURER_CAT = false; $v = $cats[0]; if($v->cat_ID==LECTURER_CAT_ID){$IS_LECTURER_CAT=true;} if($IS_LECTURER_CAT){ $ret.='
  • 全部師資
  • '; }else{ $ret.='
  • '.$v->cat_name.'
  • '; } $ret.='
  • '.$post->post_title.'
  • '; }else{ // start not-single $define_names = get_post_meta(HOME_PAGE_ID, 'bread_names_by_nodejs_crontab',true); if(!$define_names){ # avoid nodejs/crontab disable $define_names = get_post_meta(HOME_PAGE_ID, 'bread_names',true); } $define_names = explode("\n",$define_names); $ary_define_names = array(); foreach($define_names as$v){ $_ = explode('=', $v); $ary_define_names[$_[0]] = isset($_[1]) ? $_[1] : ''; } # $paths = get_post_meta(HOME_PAGE_ID, 'bread_paths_by_nodejs_crontab', true); if(!$paths){ # avoid nodejs/crontab disable $paths = get_post_meta(HOME_PAGE_ID, 'bread_paths', true); } $ary_paths = explode("\n", $paths); # $slug = ''; foreach(explode('/',$uri)as$v){ if($v){$slug=$v;} #get the last one post_name } $slug = str_replace("\r",'',$slug); # foreach($ary_paths as$v){ if(strlen($v)<=1){continue;} $_= explode('<',$v); $_0=str_replace("\r",'',$_[0]); #if(isset($_GET['ee'])){echo$slug.'--'.$_0;var_dump($slug==$_0);echo'
    ';} if($slug==$_0){ $count_ = count($_); for($i=$count_-1;$i>0;$i--){ $href = str_replace("\r",'',$_[$i]); $ret.='
  • '.$ary_define_names[$href].'
  • '; } $ret.='
  • '.$ary_define_names[$slug].'
  • '; break; } } } //end not-single return'
      '.$ret.'
    '; } function is_edm_also_webpage_post($post_id){ if(!is_single()){return false;} $b=false; foreach(get_the_category($post_id) as$_cat){ if($_cat->cat_ID==EDM_ALSO_WEBPAGE_CAT_ID){ $b=true; break; } } return $b; } function display_lecture_li($post, $is_circle_img=false){ $imgsrc = get_featured_imgsrc($post->ID, array(300,300)); if(!$imgsrc){$imgsrc='http://via.placeholder.com/300x300';} $a_start_tag = ''; return'
  • '.$a_start_tag.'

    '.$a_start_tag.$post->post_title.'

  • '; } function get_browser_type(){ // https://stackoverflow.com/questions/5302302/php-if-internet-explorer-6-7-8-or-9 $browser = ''; $ua = strtolower($_SERVER['HTTP_USER_AGENT']); if (preg_match('~(?:msie ?|trident.+?; ?rv: ?)(\d+)~', $ua, $matches)) $browser = 'ie'.$matches[1]; elseif (preg_match('~(safari|chrome|firefox)~', $ua, $matches)) $browser = $matches[1]; return $browser; } function get_attr_target($href){ return $target = strpos($href,'http://')===0 || strpos($href,'https://')===0 ? ' target=_blank' : ''; } define('TBL_SUBSCRIBE', $table_prefix.'_subscribe'); define('TBL_SUBSCRI_HISTORY', $table_prefix.'_subscri_history'); define('TBL_GLOBAL_MATCH_EMAIL', 'global_match_email'); define('TBL_FULLSITE_SEARCH', $table_prefix.'fullsite_search'); define('TBL_FILE_EDITING_MONITOR', 'file_editing_monitor'); define('FILE_EDITING_MONITOR_DISALLOW_DURING_SEC', 45); function get_file_editing_monitor_msg($who){ return ''.$who. ' is editing this file within '.FILE_EDITING_MONITOR_DISALLOW_DURING_SEC.'sec, so you cannot edit it util '.$who.' stop to edit this file.'; } function is_who_editing_fileflag($fileflag, $wp_user_login=''){ if(!$wp_user_login){ $aia_user = wp_get_current_user(); $wp_user_login = $aia_user->user_login; } global$wpdb; $sql='SELECT * FROM '.TBL_FILE_EDITING_MONITOR.' WHERE fileflag="'.$fileflag.'" AND wp_user_login<>"'.$wp_user_login .'" ORDER BY last_datetime DESC LIMIT 1'; $row = $wpdb->get_row($sql); if($row){ $interval = get_dates_diff($row->last_datetime, now()); $DURING_SEC = FILE_EDITING_MONITOR_DISALLOW_DURING_SEC; if($interval->s>=$DURING_SEC or $interval->i>0 or $interval->h>0 or $interval->d>0 or $interval->m>0 or $interval->y>0){ // nothing }else{ $who = $row->wp_user_login; return$who; } } } define('MIN_PAGE',1); define('FOOTER_TOP_SPACE', 76); function v2_get_news_posts_argv(){ return array('orderby'=>'post_date'); } function v2_display_date($post_date, $use_ROC_year=false){ preg_match_all('/^([0-9]+)-([0-9]+)-([0-9]+)/', $post_date, $date); $yr = $date[1][0]; if($use_ROC_year){ $yr-=1911; } #return $yr.' 年 '.$date[2][0].' 月 '.$date[3][0].' 日'; return $yr.' / '.$date[2][0].' / '.$date[3][0].''; } /* 設定完成,請儲存檔案。然後開始 Blogging 吧! */ /** WordPress 目錄的絕對路徑。 */ if ( !defined('ABSPATH') ) define('ABSPATH', dirname(__FILE__) . '/'); define('MMR_CACHE_DIR', ABSPATH . 'fe'); # front-end define('MMR_CACHE_URL', '/fe'); if(IS_OPEN_FEEDIT_FEATURE){ function get_post_or_page_original_field_value($post_id,$field_name){ // get original value if(is_wp_field_names_which_are_in_table_posts($field_name)){ $post = get_post($post_id); $original_value = $post->{$field_name}; }else{ // in postmeta (include feature image) // if($field_name=='feature_image'){ // $field_name = '_wp_attachment_metadata'; // } $original_value = get_post_meta($post_id,$field_name,true); } /*MUST delete if(strpos($original_value,'[')!==false and strpos($original_value,']')!==false){ return do_shortcode($original_value); }*/ return$original_value; } function is_wp_field_names_which_are_in_table_posts($field_name){ $a = array('post_title','post_content','post_excerpt'); return in_array($field_name,$a); } } // end of IS_OPEN_FEEDIT_FEATURE /** 設定 WordPress 變數和包含的檔案。 */ require_once(ABSPATH . 'wp-settings.php'); $aia_user = wp_get_current_user(); #if(in_array($aia_user, array('swc','vansindata','yen','betty','rona'))){ define( 'DISALLOW_FILE_MODS', false ); define( 'DISALLOW_FILE_EDIT', false ); #}else{ # define( 'DISALLOW_FILE_MODS', true ); # define( 'DISALLOW_FILE_EDIT', true ); #} $IS_FIREFOX = strpos($_SERVER['HTTP_USER_AGENT'], 'Firefox/')!==false; // define('IS_V2', $aia_user && $IS_FIREFOX && in_array($aia_user->user_login, array('vansindata','yen','rona','betty'))); define('IS_V2', true /* $_SERVER['REMOTE_ADDR']===TAIPEI_HEADQUARTER_IP && isset($_GET['nc']) ||in_array($aia_user->user_login, array('vansindata','swc','lulu','rona', 'betty')) || ($IS_FIREFOX && in_array($aia_user->user_login,array('betty','yen','rona','vansindata'))) */ ); define('IS_V1',!IS_V2); #@file_put_contents('testtest.txt', $_SERVER['SERVER_NAME'], FILE_APPEND); function post_request($url, $ary_data, $referer='') { # http://www.jonasjohn.de/snippets/php/post-request.htm // Convert the data array into URL Parameters like a=b&foo=bar etc. $data = http_build_query($ary_data); // parse the given URL $url = parse_url($url); if ($url['scheme'] != 'http') { die('Error: Only HTTP request are supported !'); } // extract host and path: $host = $url['host']; $path = $url['path']; // open a socket connection on port 80 - timeout: 30 sec $fp = fsockopen($host, 80, $errno, $errstr, 30); if ($fp){ // send the request headers: fputs($fp, "POST $path HTTP/1.1\r\n"); fputs($fp, "Host: $host\r\n"); if ($referer != '') fputs($fp, "Referer: $referer\r\n"); fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n"); fputs($fp, "Content-length: ". strlen($data) ."\r\n"); fputs($fp, "Connection: close\r\n\r\n"); fputs($fp, $data); $result = ''; while(!feof($fp)) { // receive the results of the request $result .= fgets($fp, 128); } } else { return array( 'status' => 'err', 'error' => "$errstr ($errno)" ); } // close the socket connection: fclose($fp); // split the result header from the content $result = explode("\r\n\r\n", $result, 2); $header = isset($result[0]) ? $result[0] : ''; $content = isset($result[1]) ? $result[1] : ''; // return as structured array: return array( 'status' => 'ok', 'header' => $header, 'content' => $content ); } // define('FS_METHOD', 'direct');