');
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');