'/\+([\d]+)\s([\d]+)\s([\d\s]+)/', function($m) { return sprintf('%s-%s-%s', $m[1], $m[2], preg_replace('/[^0-9]+/', '', $m[3])); }, $phoneUtil->format($No, \libphonenumber\PhoneNumberFormat::INTERNATIONAL) ); } throw new KOCommonException($Msg, 0); return false; } catch (\libphonenumber\NumberParseException $e) { throw new KOCommonException($Msg, 0); return false; } } /* validate email -- ------------------------------*/ public static function IsValidEmail($Email = ""){ global $__AdmPath; if(false === (bool)Swift_Validate::email($Email)){ throw new KOCommonException(_("E-postadressen är ogiltig."), 0); } return true; } /* email missing -- ------------------------------*/ public static function IsEmailMissing($Email = ""){ if(strlen($Email) === 0){ throw new KOCommonException(_("E-postadress saknas."), 0); } return true; } /* currency field -- ------------------------------*/ public static function CurrencyField($Params = ""){ global $__CURRENCY; $Curr = $__CURRENCY[SYSTEM_CURRENCY]; $Item = sprintf('
%s
', $Curr['Symbol']); if($Curr['SymbolBefore'] !== false) $Item = sprintf('
%s
', $Curr['Symbol']); return sprintf($Item, $Params); } /* activity state array -- ------------------------------*/ static function ArrActivityState(){ return array( 1 => _("Öppen för bokning"), 2 => _("Stängd"), 3 => _("Öppen med förtur"), 4 => _("Öppen med prova-på"), ); } static function SetGroupStatus($S){ $Status = self::ArrActivityState(); return (isset($Status[$S]) ? $Status[$S] : 'n/a'); } /* gender array -- ------------------------------*/ static function Gender(){ return array( 1 => _("Man"), 2 => _("Kvinna"), ); } /* yes/no array -- ------------------------------*/ static function ArrYesNo(){ return array( 1 => _("Nej"), 2 => _("Ja"), ); } /* weekdays array -- ------------------------------*/ static function Weekdays(){ return array( 1 => _("måndag"), 2 => _("tisdag"), 3 => _("onsdag"), 4 => _("torsdag"), 5 => _("fredag"), 6 => _("lördag"), 0 => _("söndag"), ); } /* weekdays short / sv array -- ------------------------------*/ static function WeekdaysSv(){ return array( 1 => _("mån"), 2 => _("tis"), 3 => _("ons"), 4 => _("tor"), 5 => _("fre"), 6 => _("lör"), 7 => _("sön"), ); } /* weekdays short array -- ------------------------------*/ static function WeekdaysAbbr(){ return array( _('sön'), _('mån'), _('tis'), _('ons'), _('tor'), _('fre'), _('lör'), ); } /* months array -- ------------------------------*/ static function Monthnames(){ return array( _('januari'), _('februari'), _('mars'), _('april'), _('maj'), _('juni'), _('juli'), _('augusti'), _('september'), _('oktober'), _('november'), _('december'), ); } /* occasion type array -- ------------------------------*/ static function OccasionTypes(){ return array( 1 => _("Träning"), 11 => _("Landträning"), 2 => _("Match/Tävling/Cup"), 21 => _("Hemmamatch"), 22 => _("Bortamatch"), 3 => _("Möte"), 4 => _("Utbildning"), 5 => _("Läger"), 6 => _("Övrigt"), 7 => _("Årsmöte"), 8 => _("Styrelsemöte"), 9 => _("Kommittémöte"), ); } public static function EmailTemplates(){ return [ 'ACCOUNT_ACTIVATION' => _('Kontoaktivering/glömt lösenord'), 'ACCOUNT_CREATE' => _('Välkomstmail/nytt konto'), 'ATTENDANCE_REMINDER' => _('Aktivitetstillfälle, orapporterad'), 'BLANK' => _('Tom mall'), 'COMPETITION_NOTIFY' => _('Tävlingsanmälan, bekräftelse'), 'COMPETITION_NOTIFY_CANCEL' => _('Tävlingsanmälan, avanmälan'), 'CONTACT_US' => _('Kontakta oss'), 'EMAIL_FOOTER' => _('E-postmall, fot'), 'EMAIL_HEADER' => _('E-postmall, huvud'), 'INVOICE_CREATED' => _('Fakturaavisering'), 'INVOICE_CREATED_CUSTOMFEE' => _('Fakturaavisering, enskild avgift'), 'INVOICE_PAYMENT_REGISTER' => _('Betalningsavisering'), 'NOTIFY_CHANGED' => _('Aktivitetsbokning, ändrad'), 'NOTIFY_CREATED' => _('Aktivitetsbokning, skapad'), 'GROUP_INVITATION' => _('Aktivitetsbokning, inbjudan'), 'OCCASION_INVITATION' => _('Aktivitetstillfälle, kallelse'), 'OCCASION_REMINDER' => _('Aktivitetstillfälle, kommande'), 'ORDER_CREATED' => _('Order, skapad'), 'ORDER_STATUS_CHANGED' => _('Order, ändrad'), // 'USER_ACTIVATION' => _('Kontoaktivering, användare'), ]; } /* datum -- ----------*/ public static function DateRangeDT($start, $end){ try { $Ds = new DateTime($start); $De = new DateTime($end); $Dt = false; /* inte samma -- ----------*/ if($Ds != $De){ /* samma dag -- ----------*/ if($Ds->format('Ymd') === $De->format('Ymd')){ $Dt = [ 'label' => _('Datum/tid'), 'date' => $Ds->format('l j M Y'), 'time' => sprintf('%s - %s', $Ds->format('H:i'), $De->format('H:i')) ]; if($Ds->format('Hi') == '0000'){ $Dt['time'] = null; }elseif($De->format('Hi') == '0000'){ $Dt['time'] = $Ds->format('H:i'); } /* inte samma dag -- ----------*/ }elseif($Ds->format('Ymd') !== $De->format('Ymd')){ $STime = $Ds->format('H:i'); if($Ds->format('Hi') == '0000') $STime = null; $ETime = $De->format('H:i'); if($De->format('Hi') == '0000') $ETime = null; $Dt = [ [ 'label' => _('Startar'), 'date' => $Ds->format('l j M Y'), 'time' => $STime ], [ 'label' => _('Slutar'), 'date' => $De->format('l j M Y'), 'time' => $ETime ], ]; /* $Dt['date'] = sprintf('%s - %s', $Ds->format('l j M'), $De->format('l j M Y')); $Dt['time'] = sprintf('%s - %s', $Ds->format('H:i'), $De->format('H:i')); */ /* samma månad -- ----------*/ }elseif($Ds->format('Ym') === $De->format('Ym')){ } }elseif($Ds == $De){ $Dt = [ 'label' => _('Datum/tid'), 'date' => $Ds->format('l j M Y'), 'time' => $Ds->format('H:i') ]; if($Ds->format('Hi') == '0000'){ $Dt['time'] = null; } } return $Dt; } catch(Exception $e){ return false; } } public static function DateRange($start, $end){ try { $Ds = strtotime($start); $De = strtotime($end); $Dt = false; /* inte samma -- ----------*/ if($Ds != $De){ /* samma dag -- ----------*/ if(date('Ymd', $Ds) === date('Ymd', $De)){ $Dt = [ 'label' => _('Datum/tid'), 'date' => strftime(DATE_DAY_MONTH_YEAR, $Ds), 'time' => sprintf('%s - %s', strftime(DATE_HOUR_MINUTE, $Ds), strftime(DATE_HOUR_MINUTE, $De)) ]; if(date('Hi', $Ds) === '0000'){ $Dt['time'] = null; }elseif(date('Hi', $De) === '0000'){ $Dt['time'] = strftime(DATE_HOUR_MINUTE, $Ds); } /* inte samma dag -- ----------*/ }elseif(date('Ymd', $Ds) !== date('Ymd', $De)){ $STime = strftime(DATE_HOUR_MINUTE, $Ds); if(date('Hi', $Ds) === '0000') $STime = null; $ETime = strftime(DATE_HOUR_MINUTE, $De); if(date('Hi', $De) === '0000') $ETime = null; $Dt = [ [ 'label' => _('Startar'), 'date' => strftime(DATE_DAY_MONTH_YEAR, $Ds), 'time' => $STime ], [ 'label' => _('Slutar'), 'date' => strftime(DATE_DAY_MONTH_YEAR, $De), 'time' => $ETime ], ]; /* samma månad -- ----------*/ // }elseif($Ds->format('Ym') === $De->format('Ym')){ } }elseif($Ds == $De){ $Dt = [ 'label' => _('Datum/tid'), 'date' => strftime(DATE_DAY_MONTH_YEAR, $Ds), 'time' => strftime(DATE_HOUR_MINUTE, $Ds) ]; if(date('Hi', $Ds) == '0000'){ $Dt['time'] = null; } } return $Dt; } catch(Exception $e){ return false; } } static function SetOccasionType($T){ $Types = self::OccasionTypes(); return (isset($Types[$T]) ? $Types[$T], ), 7 => array ( 'name' => 'Bowling', 'children' => array ( ), ), 15 => array ( 'name' => 'Boxning', 'children' => array ( ), ), 158 => array ( 'name' => 'Bridge', 'children' => array ( ), ), 16 => array ( 'name' => 'Brottning', 'children' => array ( ), ), 23 => array ( 'name' => 'Budo & Kampsport', 'children' => array ( 291 => 'Aikido', 414 => 'Allstyle', 388 => 'Armsport', 292 => 'Brasiliansk Jiu-Jitsu', 293 => 'Bujinkan', 294 => 'Capoeira', 413 => 'Defendo', 295 => 'Filippinska Kamparter', 296 => 'Glima', 343 => 'HEMA', 297 => 'Iaido', 298 => 'Jodo', 299 => 'Jujutsu', 421 => 'Kamponst', 396 => 'Kempo', 300 => 'Kendo', 301 => 'Kickboxning', 302 => 'Krav Maga', 303 => 'Kyokushin', 304 => 'Kyudo', 305 => 'MMA', 306 => 'Muaythai', 307 => 'Naginata', 345 => 'Sambo', 346 => 'Savate', 309 => 'Shorinjikempo', 310 => 'Submission Wrestling', 347 => 'Sumo', 344 => 'Systema', 311 => 'Taido', 312 => 'Wushu', ), ), 6 => array ( 'name' => 'Bågskytte', 'children' => array ( 321 => '3D', 367 => 'Arc-Trap', 366 => 'Beridet Bågskytte', 319 => 'Fält', 320 => 'Svensk Jakt', 317 => 'Tavla inne', 318 => 'Tavla ute', ), ), 13 => array ( 'name' => 'Casting', 'children' => array ( ), ), 422 => array ( 'name' => 'Cheerleading', 'children' => array ( ), ), 348 => array ( 'name' => 'Cricket', 'children' => array ( ), ), 11 => array ( 'name' => 'Curling', 'children' => array ( 355 => 'Rullstolscurlare', ), ), 19 => array ( 'name' => 'Cykel', 'children' => array ( 359 => 'BMX', 358 => 'Bancykel', 360 => 'Cykelcross', 361 => 'Landsväg', 362 => 'Mountainbike', 363 => 'Paracykel', 364 => 'Trial Cykel', ), ), 63 => array ( 'name' => 'Danssport', 'children' => array ( 322 => 'BRR', 397 => 'Disco', 398 => 'HipHop', 325 => 'Linedance', 323 => 'TIO', ), ), 97 => array ( 'name' => 'Dart', 'children' => array ( ), ), 67 => array ( 'name' => 'Draghundsport', 'children' => array ( ), ), 17 => array ( 'name' => 'Dragkamp', 'children' => array ( ), ), 41 => array ( 'name' => 'Dövidrott', 'children' => array ( ), ), 56 => array ( 'name' => 'Flygsport', 'children' => array ( 108 => 'Ballongflyg', 109 => 'Fallskärmshoppning', 106 => 'Hängflyg', 110 => 'Konstflyg', 85 => 'Modellflyg', 107 => 'Motorflyg', 400 => 'Multipla Flygsporter', 84 => 'Segelflyg', 88 => 'Skärmflyg', ), ), 2 => array ( 'name' => 'Fotboll', 'children' => array ( 426 => 'BeachSoccer', 425 => 'Futsal ( SvFF )', ), ), 21 => array ( 'name' => 'Friidrott', 'children' => array ( ), ), 46 => array ( 'name' => 'Frisbee', 'children' => array ( 390 => 'Allround', 393 => 'Discgolf', 394 => 'Ultimate', ), ), 24 => array ( 'name' => 'Fäktning', 'children' => array ( ), ), 18 => array ( 'name' => 'Golf', 'children' => array ( ), ), 25 => array ( 'name' => 'Gymnastik', 'children' => array ( 282 => 'Aerobic gymnastics', 406 => 'Alla kan gympa', 409 => 'Annan gymnastikverksamhet', 275 => 'Bamsegympa (licensierad)', 278 => 'Barngymnastik 7-12 år (ej tävling)', 276 => 'Barngymnastik upp till 6 år', 283 => 'Cheerleading-gy ', 357 => 'Drill', 277 => 'Familjegymnastik', 280 => 'Gruppträning/motion 21-64 år', 410 => 'Gymmixförening', 284 => 'Hopprep', 285 => 'Kvinnlig artistisk gymnastik', 286 => 'Manlig artistisk gymnastik', 405 => 'Parkour/freerunning', 287 => 'Rytmisk gymnastik', 281 => 'Seniorträning/gruppträning + 65 år', 288 => 'Trampolin', 407 => 'Tricking', 289 => 'Truppgymnastik', 279 => 'Ungdomsgymnastik 13-20 år (ej tävling)', 408 => 'Vuxenträning med gymnastikredskap', ), ), 12 => array ( 'name' => 'Gång och Vandring', 'children' => array ( ), ), 4 => array ( 'name' => 'Handboll', 'children' => array ( ), ), 61 => array ( 'name' => 'Innebandy', 'children' => array ( ), ), 416 => array ( 'name' => 'Intresseförening', 'children' => array ( ), ), 14 => array ( 'name' => 'Ishockey', 'children' => array ( ), ), 356 => array ( 'name' => 'Islandshäst', 'children' => array ( 415 => 'TREC', ), ), 38 => array ( 'name' => 'Issegling', 'children' => array ( ), ), 65 => array ( 'name' => 'Judo', 'children' => array ( ), ), 22 => array ( 'name' => 'Kanot', 'children' => array ( ), ), 89 => array ( 'name' => 'Karate', 'children' => array ( ), ), 48 => array ( 'name' => 'Klättring', 'children' => array ( ), ), 20 => array ( 'name' => 'Konståkning', 'children' => array ( ), ), 43 => array ( 'name' => 'Korpen', 'children' => array ( 238 => 'Aerobics', 239 => 'Afro', 336 => 'BMX (Korpen)', 263 => 'Badminton ( Korpen )', 352 => 'Bangolf (Korpen)', 264 => 'Basket ( Korpen )', 350 => 'Beachvolleyboll (Korpen)', 265 => 'Bordtennis ( Korpen )', 267 => 'Boule ( Korpen )', 266 => 'Bowling ( Korpen )', 240 => 'Box', 339 => 'Cirkelträning', 241 => 'Core (rygg/bål)', 330 => 'Curling (korpen)', 242 => 'Cykling', 102 => 'Five-a-side', 99 => 'Fotboll (Korpen)', 244 => 'Funktionell träning – EFIT', 101 => 'Futsal', 273 => 'Golf (Korpen)', 245 => 'Gym', 246 => 'Gympa', 104 => 'Handboll (Korpen)', 353 => 'Hockeybockey (Korpen)', 100 => 'Innebandy (Korpen)', 270 => 'Ishockey ( Korpen )', 349 => 'Kägel', 247 => 'Löpning', 329 => 'Paddling (Korpen)', 401 => 'Parkour', 248 => 'Pilates', 249 => 'Pump', 250 => 'Qi gong', 354 => 'Racketlon (Korpen)', 103 => 'Rinkbandy', 252 => 'Senioraktiviteter', 337 => 'Skateboard (Korpen)', 253 => 'Spinning', 271 => 'Squash ( Korpen )', 254 => 'Stavgång', 255 => 'Step', 256 => 'Streetdance', 389 => 'Taekwondo (Korpen)', 272 => 'Tennis ( Korpen )', 257 => 'Tipspromenad', 351 => 'Varpa (Korpen)', 258 => 'Vattenträning', 105 => 'Volleyboll (Korpen)', 259 => 'Yoga', 260 => 'Zumba / Latin moves', ), ), 3 => array ( 'name' => 'Kälksport', 'children' => array ( ), ), 62 => array ( 'name' => 'Landhockey', 'children' => array ( ), ), 159 => array ( 'name' => 'Livräddning', 'children' => array ( ), ), 28 => array ( 'name' => 'Motorcykel och Snöskoter', 'children' => array ( 450 => 'Aquabike', 118 => 'Dragracing', 117 => 'Enduro', 315 => 'Flat Track', 120 => 'Isracing', 121 => 'Minimoto', query, PDO::FETCH_ASSOC) as $res){ $Removed = 0; $RFRoleTypeCatId = $RFRoleTypeCatMapping[$res['Staff']]; if(!is_null($res['Props']) && false !== $P = @unserialize($res['Props'])){ if(isset($P['RFRoleTypeCategoryId'])) $RFRoleTypeCatId = $P['RFRoleTypeCategoryId']; if(isset($P['Removed'])) $Removed = 1; } $Data[$res['Staff']][] = [ 'id' => (int)$res['ID'], 'staff' => (int)$res['Staff'] === 1, 'rf_role_type_cat_id' => $RFRoleTypeCatId, 'name' => $res['Name'], 'memberfee' => ((int)$res['MemberFee'] === 1), 'license' => ((int)$res['License'] === 1), 'invoice' => ((int)$res['Invoice'] === 1), 'color' => $res['Color'], 'order' => (int)$res['Order'], 'Removed' => $Removed ]; } return $Data; } public static function IsSerialized($data){ // if it isn't a string, it isn't serialized if ( !is_string( $data ) ) return false; $data = trim( $data ); if ( 'N;' == $data ) return true; if ( !preg_match( '/^([adObis]):/', $data, $badions ) ) return false; switch ( $badions[1] ) { case 'a' : case 'O' : case 's' : if ( preg_match( "/^{$badions[1]}:[0-9]+:.*[;}]\$/s", $data ) ) return true; break; case 'b' : case 'i' : case 'd' : if ( preg_match( "/^{$badions[1]}:[0-9.E-]+;\$/", $data ) ) return true; break; } return false; } /* options -- ----------*/ public static function get_option($option_name){ $dbh = Database::getInstance(); $pst = $dbh->prepare("SELECT `option_value` FROM `content_options` WHERE `option_name` = ?"); $pst->execute(array($option_name)); if($pst->rowCount() !== 0){ return @unserialize($pst->fetchColumn()); } $pst = null; return false; } public static function set_option($option_name, $data){ $dbh = Database::getInstance(); if(is_array($data) || is_object($data)){ if(false === $D = @serialize($data)) return false; $option_data = $D; }elseif(is_int($data)){ $option_data = (int)$data; }elseif(is_null($data)){ $option_data = null; }else{ $option_data = (string)$data; } $pst = $dbh->prepare(" INSERT INTO `content_options` (`option_name`, `option_value`) VALUES (:name, :content) ON DUPLICATE KEY UPDATE `option_value` = :content "); $pst->execute(array(':name' => $option_name, ':content' => $option_data)); return $pst->rowCount() !== 0; $pst = null; } } Class KOCommonException extends Exception { public function __construct($Msg) { /* call the super class Exception constructor */ parent::__construct($Msg, 0); } } /* tags system -- -------------------*/ Class SectionTags { /* lista -- -------*/ public static function TagList($Selected = array()){ $dbh = Database::getInstance(); $Data = array( array( "MenuId" => 0, "Section" => 0, "Name" => _('Huvudsida'), ) ); $pst = $dbh->prepare(" SELECT `ID`, `Section`, `Name` FROM `content_menu` ORDER BY `Order` ASC "); $pst->execute(); if($pst->rowCount() === 0) return false; while($res = $pst->fetch(PDO::FETCH_ASSOC)) $Data[] = array( "MenuId" => (int)$res['ID'], "Section" => (int)$res['Section'], "Name" => $res['Name'], ); return $Data; $pst = null; } /* hämta id -- -------*/ public static function GetIds($Type = 'news', $Parent = 0){ $dbh = Database::getInstance(); $pst = $dbh->prepare(" SELECT `SectionId` FROM `content_tag` WHERE `Type` = ? AND `Parent` = ? "); $pst->execute(array($Type, $Parent)); if($pst->rowCount() === 0) array(); $Data = array(); while($res = $pst->fetch(PDO::FETCH_ASSOC)) $Data[] = (int)$res['SectionId']; return $Data; $pst = null; } /* hämta name -- -------*/ public static function GetNames($Type = 'news', $Parent = 0){ $dbh = Database::getInstance(); $pst = $dbh->prepare(" SELECT IFNULL(`section_name`, 'Huvudsida') `section_name` FROM `content_tag` LEFT JOIN `school_section` ON `SectionId` = `section_id` WHERE `Type` = ? AND `Parent` = ? ORDER BY CONVERT(`section_name` USING `latin1`) COLLATE `latin1_swedish_ci` "); $pst->execute(array($Type, $Parent)); if($pst->rowCount() === 0) return false; $Data = array(); while($res = $pst->fetch(PDO::FETCH_ASSOC)) $Data[] = $res['section_name']; return $Data; $pst = null; } /* spara -- -------*/ public static function Save($SectionIds = array(), $Type = 'news', $Parent = 0){ $dbh = Database::getInstance(); $pst = $dbh->prepare(" DELETE FROM `content_tag` WHERE `Type` = ? AND `Parent` = ? "); $pst->execute(array($Type, $Parent)); $i = 0; $pst = $dbh->prepare(" INSERT INTO `content_tag` (`SectionId`, `Type`, `Parent`) VALUES (?, ?, ?) "); foreach($SectionIds as $Id){ // if((int)$Id === 0) continue; $pst->execute(array($Id, $Type, $Parent)); $i += $pst->rowCount(); } return ($i !== 0); } } query, PDO::FETCH_ASSOC) as $res){ $Removed = 0; $RFRoleTypeCatId = $RFRoleTypeCatMapping[$res['Staff']]; if(!is_null($res['Props']) && false !== $P = @unserialize($res['Props'])){ if(isset($P['RFRoleTypeCategoryId'])) $RFRoleTypeCatId = $P['RFRoleTypeCategoryId']; if(isset($P['Removed'])) $Removed = 1; } $Data[$res['Staff']][] = [ 'id' => (int)$res['ID'], 'staff' => (int)$res['Staff'] === 1, 'rf_role_type_cat_id' => $RFRoleTypeCatId, 'name' => $res['Name'], 'memberfee' => ((int)$res['MemberFee'] === 1), 'license' => ((int)$res['License'] === 1), 'invoice' => ((int)$res['Invoice'] === 1), 'color' => $res['Color'], 'order' => (int)$res['Order'], 'Removed' => $Removed ]; } return $Data; } public static function IsSerialized($data){ // if it isn't a string, it isn't serialized if ( !is_string( $data ) ) return false; $data = trim( $data ); if ( 'N;' == $data ) return true; if ( !preg_match( '/^([adObis]):/', $data, $badions ) ) return false; switch ( $badions[1] ) { case 'a' : case 'O' : case 's' : if ( preg_match( "/^{$badions[1]}:[0-9]+:.*[;}]\$/s", $data ) ) return true; break; case 'b' : case 'i' : case 'd' : if ( preg_match( "/^{$badions[1]}:[0-9.E-]+;\$/", $data ) ) return true; break; } return false; } /* options -- ----------*/ public static function get_option($option_name){ $dbh = Database::getInstance(); $pst = $dbh->prepare("SELECT `option_value` FROM `content_options` WHERE `option_name` = ?"); $pst->execute(array($option_name)); if($pst->rowCount() !== 0){ return @unserialize($pst->fetchColumn()); } $pst = null; return false; } public static function set_option($option_name, $data){ $dbh = Database::getInstance(); if(is_array($data) || is_object($data)){ if(false === $D = @serialize($data)) return false; $option_data = $D; }elseif(is_int($data)){ $option_data = (int)$data; }elseif(is_null($data)){ $option_data = null; }else{ $option_data = (string)$data; } $pst = $dbh->prepare(" INSERT INTO `content_options` (`option_name`, `option_value`) VALUES (:name, :content) ON DUPLICATE KEY UPDATE `option_value` = :content "); $pst->execute(array(':name' => $option_name, ':content' => $option_data)); return $pst->rowCount() !== 0; $pst = null; } } Class KOCommonException extends Exception { public function __construct($Msg) { /* call the super class Exception constructor */ parent::__construct($Msg, 0); } } /* tags system -- -------------------*/ Class SectionTags { /* lista -- -------*/ public static function TagList($Selected = array()){ $dbh = Database::getInstance(); $Data = array( array( "MenuId" => 0, "Section" => 0, "Name" => _('Huvudsida'), ) ); $pst = $dbh->prepare(" SELECT `ID`, `Section`, `Name` FROM `content_menu` ORDER BY `Order` ASC "); $pst->execute(); if($pst->rowCount() === 0) return false; while($res = $pst->fetch(PDO::FETCH_ASSOC)) $Data[] = array( "MenuId" => (int)$res['ID'], "Section" => (int)$res['Section'], "Name" => $res['Name'], ); return $Data; $pst = null; } /* hämta id -- -------*/ public static function GetIds($Type = 'news', $Parent = 0){ $dbh = Database::getInstance(); $pst = $dbh->prepare(" SELECT `SectionId` FROM `content_tag` WHERE `Type` = ? AND `Parent` = ? "); $pst->execute(array($Type, $Parent)); if($pst->rowCount() === 0) array(); $Data = array(); while($res = $pst->fetch(PDO::FETCH_ASSOC)) $Data[] = (int)$res['SectionId']; return $Data; $pst = null; } /* hämta name -- -------*/ public static function GetNames($Type = 'news', $Parent = 0){ $dbh = Database::getInstance(); $pst = $dbh->prepare(" SELECT IFNULL(`section_name`, 'Huvudsida') `section_name` FROM `content_tag` LEFT JOIN `school_section` ON `SectionId` = `section_id` WHERE `Type` = ? AND `Parent` = ? ORDER BY CONVERT(`section_name` USING `latin1`) COLLATE `latin1_swedish_ci` "); $pst->execute(array($Type, $Parent)); if($pst->rowCount() === 0) return false; $Data = array(); while($res = $pst->fetch(PDO::FETCH_ASSOC)) $Data[] = $res['section_name']; return $Data; $pst = null; } /* spara -- -------*/ public static function Save($SectionIds = array(), $Type = 'news', $Parent = 0){ $dbh = Database::getInstance(); $pst = $dbh->prepare(" DELETE FROM `content_tag` WHERE `Type` = ? AND `Parent` = ? "); $pst->execute(array($Type, $Parent)); $i = 0; $pst = $dbh->prepare(" INSERT INTO `content_tag` (`SectionId`, `Type`, `Parent`) VALUES (?, ?, ?) "); foreach($SectionIds as $Id){ // if((int)$Id === 0) continue; $pst->execute(array($Id, $Type, $Parent)); $i += $pst->rowCount(); } return ($i !== 0); } } query, PDO::FETCH_ASSOC) as $res){ $Removed = 0; $RFRoleTypeCatId = $RFRoleTypeCatMapping[$res['Staff']]; if(!is_null($res['Props']) && false !== $P = @unserialize($res['Props'])){ if(isset($P['RFRoleTypeCategoryId'])) $RFRoleTypeCatId = $P['RFRoleTypeCategoryId']; if(isset($P['Removed'])) $Removed = 1; } $Data[$res['Staff']][] = [ 'id' => (int)$res['ID'], 'staff' => (int)$res['Staff'] === 1, 'rf_role_type_cat_id' => $RFRoleTypeCatId, 'name' => $res['Name'], 'memberfee' => ((int)$res['MemberFee'] === 1), 'license' => ((int)$res['License'] === 1), 'invoice' => ((int)$res['Invoice'] === 1), 'color' => $res['Color'], 'order' => (int)$res['Order'], 'Removed' => $Removed ]; } return $Data; } public static function IsSerialized($data){ // if it isn't a string, it isn't serialized if ( !is_string( $data ) ) return false; $data = trim( $data ); if ( 'N;' == $data ) return true; if ( !preg_match( '/^([adObis]):/', $data, $badions ) ) return false; switch ( $badions[1] ) { case 'a' : case 'O' : case 's' : if ( preg_match( "/^{$badions[1]}:[0-9]+:.*[;}]\$/s", $data ) ) return true; break; case 'b' : case 'i' : case 'd' : if ( preg_match( "/^{$badions[1]}:[0-9.E-]+;\$/", $data ) ) return true; break; } return false; } /* options -- ----------*/ public static function get_option($option_name){ $dbh = Database::getInstance(); $pst = $dbh->prepare("SELECT `option_value` FROM `content_options` WHERE `option_name` = ?"); $pst->execute(array($option_name)); if($pst->rowCount() !== 0){ return @unserialize($pst->fetchColumn()); } $pst = null; return false; } public static function set_option($option_name, $data){ $dbh = Database::getInstance(); if(is_array($data) || is_object($data)){ if(false === $D = @serialize($data)) return false; $option_data = $D; }elseif(is_int($data)){ $option_data = (int)$data; }elseif(is_null($data)){ $option_data = null; }else{ $option_data = (string)$data; } $pst = $dbh->prepare(" INSERT INTO `content_options` (`option_name`, `option_value`) VALUES (:name, :content) ON DUPLICATE KEY UPDATE `option_value` = :content "); $pst->execute(array(':name' => $option_name, ':content' => $option_data)); return $pst->rowCount() !== 0; $pst = null; } } Class KOCommonException extends Exception { public function __construct($Msg) { /* call the super class Exception constructor */ parent::__construct($Msg, 0); } } /* tags system -- -------------------*/ Class SectionTags { /* lista -- -------*/ public static function TagList($Selected = array()){ $dbh = Database::getInstance(); $Data = array( array( "MenuId" => 0, "Section" => 0, "Name" => _('Huvudsida'), ) ); $pst = $dbh->prepare(" SELECT `ID`, `Section`, `Name` FROM `content_menu` ORDER BY `Order` ASC "); $pst->execute(); if($pst->rowCount() === 0) return false; while($res = $pst->fetch(PDO::FETCH_ASSOC)) $Data[] = array( "MenuId" => (int)$res['ID'], "Section" => (int)$res['Section'], "Name" => $res['Name'], ); return $Data; $pst = null; } /* hämta id -- -------*/ public static function GetIds($Type = 'news', $Parent = 0){ $dbh = Database::getInstance(); $pst = $dbh->prepare(" SELECT `SectionId` FROM `content_tag` WHERE `Type` = ? AND `Parent` = ? "); $pst->execute(array($Type, $Parent)); if($pst->rowCount() === 0) array(); $Data = array(); while($res = $pst->fetch(PDO::FETCH_ASSOC)) $Data[] = (int)$res['SectionId']; return $Data; $pst = null; } /* hämta name -- -------*/ public static function GetNames($Type = 'news', $Parent = 0){ $dbh = Database::getInstance(); $pst = $dbh->prepare(" SELECT IFNULL(`section_name`, 'Huvudsida') `section_name` FROM `content_tag` LEFT JOIN `school_section` ON `SectionId` = `section_id` WHERE `Type` = ? AND `Parent` = ? ORDER BY CONVERT(`section_name` USING `latin1`) COLLATE `latin1_swedish_ci` "); $pst->execute(array($Type, $Parent)); if($pst->rowCount() === 0) return false; $Data = array(); while($res = $pst->fetch(PDO::FETCH_ASSOC)) $Data[] = $res['section_name']; return $Data; $pst = null; } /* spara -- -------*/ public static function Save($SectionIds = array(), $Type = 'news', $Parent = 0){ $dbh = Database::getInstance(); $pst = $dbh->prepare(" DELETE FROM `content_tag` WHERE `Type` = ? AND `Parent` = ? "); $pst->execute(array($Type, $Parent)); $i = 0; $pst = $dbh->prepare(" INSERT INTO `content_tag` (`SectionId`, `Type`, `Parent`) VALUES (?, ?, ?) "); foreach($SectionIds as $Id){ // if((int)$Id === 0) continue; $pst->execute(array($Id, $Type, $Parent)); $i += $pst->rowCount(); } return ($i !== 0); } } query, PDO::FETCH_ASSOC) as $res){ $Removed = 0; $RFRoleTypeCatId = $RFRoleTypeCatMapping[$res['Staff']]; if(!is_null($res['Props']) && false !== $P = @unserialize($res['Props'])){ if(isset($P['RFRoleTypeCategoryId'])) $RFRoleTypeCatId = $P['RFRoleTypeCategoryId']; if(isset($P['Removed'])) $Removed = 1; } $Data[$res['Staff']][] = [ 'id' => (int)$res['ID'], 'staff' => (int)$res['Staff'] === 1, 'rf_role_type_cat_id' => $RFRoleTypeCatId, 'name' => $res['Name'], 'memberfee' => ((int)$res['MemberFee'] === 1), 'license' => ((int)$res['License'] === 1), 'invoice' => ((int)$res['Invoice'] === 1), 'color' => $res['Color'], 'order' => (int)$res['Order'], 'Removed' => $Removed ]; } return $Data; } public static function IsSerialized($data){ // if it isn't a string, it isn't serialized if ( !is_string( $data ) ) return false; $data = trim( $data ); if ( 'N;' == $data ) return true; if ( !preg_match( '/^([adObis]):/', $data, $badions ) ) return false; switch ( $badions[1] ) { case 'a' : case 'O' : case 's' : if ( preg_match( "/^{$badions[1]}:[0-9]+:.*[;}]\$/s", $data ) ) return true; break; case 'b' : case 'i' : case 'd' : if ( preg_match( "/^{$badions[1]}:[0-9.E-]+;\$/", $data ) ) return true; break; } return false; } /* options -- ----------*/ public static function get_option($option_name){ $dbh = Database::getInstance(); $pst = $dbh->prepare("SELECT `option_value` FROM `content_options` WHERE `option_name` = ?"); $pst->execute(array($option_name)); if($pst->rowCount() !== 0){ return @unserialize($pst->fetchColumn()); } $pst = null; return false; } public static function set_option($option_name, $data){ $dbh = Database::getInstance(); if(is_array($data) || is_object($data)){ if(false === $D = @serialize($data)) return false; $option_data = $D; }elseif(is_int($data)){ $option_data = (int)$data; }elseif(is_null($data)){ $option_data = null; }else{ $option_data = (string)$data; } $pst = $dbh->prepare(" INSERT INTO `content_options` (`option_name`, `option_value`) VALUES (:name, :content) ON DUPLICATE KEY UPDATE `option_value` = :content "); $pst->execute(array(':name' => $option_name, ':content' => $option_data)); return $pst->rowCount() !== 0; $pst = null; } } Class KOCommonException extends Exception { public function __construct($Msg) { /* call the super class Exception constructor */ parent::__construct($Msg, 0); } } /* tags system -- -------------------*/ Class SectionTags { /* lista -- -------*/ public static function TagList($Selected = array()){ $dbh = Database::getInstance(); $Data = array( array( "MenuId" => 0, "Section" => 0, "Name" => _('Huvudsida'), ) ); $pst = $dbh->prepare(" SELECT `ID`, `Section`, `Name` FROM `content_menu` ORDER BY `Order` ASC "); $pst->execute(); if($pst->rowCount() === 0) return false; while($res = $pst->fetch(PDO::FETCH_ASSOC)) $Data[] = array( "MenuId" => (int)$res['ID'], "Section" => (int)$res['Section'], "Name" => $res['Name'], ); return $Data; $pst = null; } /* hämta id -- -------*/ public static function GetIds($Type = 'news', $Parent = 0){ $dbh = Database::getInstance(); $pst = $dbh->prepare(" SELECT `SectionId` FROM `content_tag` WHERE `Type` = ? AND `Parent` = ? "); $pst->execute(array($Type, $Parent)); if($pst->rowCount() === 0) array(); $Data = array(); while($res = $pst->fetch(PDO::FETCH_ASSOC)) $Data[] = (int)$res['SectionId']; return $Data; $pst = null; } /* hämta name -- -------*/ public static function GetNames($Type = 'news', $Parent = 0){ $dbh = Database::getInstance(); $pst = $dbh->prepare(" SELECT IFNULL(`section_name`, 'Huvudsida') `section_name` FROM `content_tag` LEFT JOIN `school_section` ON `SectionId` = `section_id` WHERE `Type` = ? AND `Parent` = ? ORDER BY CONVERT(`section_name` USING `latin1`) COLLATE `latin1_swedish_ci` "); $pst->execute(array($Type, $Parent)); if($pst->rowCount() === 0) return false; $Data = array(); while($res = $pst->fetch(PDO::FETCH_ASSOC)) $Data[] = $res['section_name']; return $Data; $pst = null; } /* spara -- -------*/ public static function Save($SectionIds = array(), $Type = 'news', $Parent = 0){ $dbh = Database::getInstance(); $pst = $dbh->prepare(" DELETE FROM `content_tag` WHERE `Type` = ? AND `Parent` = ? "); $pst->execute(array($Type, $Parent)); $i = 0; $pst = $dbh->prepare(" INSERT INTO `content_tag` (`SectionId`, `Type`, `Parent`) VALUES (?, ?, ?) "); foreach($SectionIds as $Id){ // if((int)$Id === 0) continue; $pst->execute(array($Id, $Type, $Parent))latin1_swedish_ci` "); $pst->execute(array($Type, $Parent)); if($pst->rowCount() === 0) return false; $Data = array(); while($res = $pst->fetch(PDO::FETCH_ASSOC)) $Data[] = $res['section_name']; return $Data; $pst = null; } /* spara -- -------*/ public static function Save($SectionIds = array(), $Type = 'news', $Parent = 0){ $dbh = Database::getInstance(); $pst = $dbh->prepare(" DELETE FROM `content_tag` WHERE `Type` = ? AND `Parent` = ? "); $pst->execute(array($Type, $Parent)); $i = 0; $pst = $dbh->prepare(" INSERT INTO `content_tag` (`SectionId`, `Type`, `Parent`) VALUES (?, ?, ?) "); foreach($SectionIds as $Id){ // if((int)$Id === 0) continue; $pst->execute(array($Id, $Type, $Parent)); $i += $pst->rowCount(); } return ($i !== 0); } } .entry-header .entry-title { color: #%s; border-color: #%s; }", $this->Data->MainHeading, $this->Data->MainHeading); if(isset($this->Data->WidgetHeading)) $this->Styles[] =.entry-header .entry-title { color: #%s; border-color: #%s; }", $this->Data->MainHeading, $this->Data->MainHeading); if(isset($this->Data->WidgetHeading)) $this->Styles[] = sprintf(".widget .widget-title { color: #%s; border-color: #%s;}", $this->Data->WidgetHeading, $this->Data->WidgetHeading); */ if( isset($this->Data->BackgroundImage) && file_exists(sprintf("%s%s%s", ROOTPATH, SKINPATH, $this->Data->BackgroundImage)) ){ $Clr = ''; if(isset($this->Data->BackgroundColor)) $Clr = sprintf(' #%s', $this->Data->BackgroundColor); $Img = sprintf("%s%s%s", ABSPATH, SKINPATH, $this->Data->BackgroundImage); $this->Styles[] = sprintf('body { background: url(%s)%s repeat fixed 0 0 / cover; }', $Img, $Clr); }elseif(isset($this->Data->BackgroundColor) && $this->Data->BackgroundColor !== false){ $this->Styles[] = sprintf("body { background: none; background-color: #%s; }", $this->Data->BackgroundColor); } $WrapBGColor = 'ffffff'; if(isset($this->Data->WrapBGColor)) $WrapBGColor = $this->Data->WrapBGColor; if($WrapBGColor !== false){ $this->Styles[] = sprintf(".main-wrapper { background-color: #%s !important }", $WrapBGColor); // $this->Styles[] = ".main-wrapper { background-color: transparent !important }"; // }else{ } // if(isset($this->Data->TxtColor)) // $Str .= sprintf("color: #%s; ", $this->Data->T