} catch (Exception $e) { // Yeah... I probably don't care at this stage... but maybe I do... \Core\ErrorManagement\exception_handler($e); } } if(!defined('CDN_TYPE')){ define('CDN_TYPE', 'local'); } if(!defined('CDN_LOCAL_ASSETDIR')){ define('CDN_LOCAL_ASSETDIR', 'files/assets/'); } if(!defined('CDN_LOCAL_PUBLICDIR')){ define('CDN_LOCAL_PUBLICDIR', 'files/public/'); } require_once(ROOT_PDIR . 'core/libs/core/Core.class.php'); require_once(ROOT_PDIR . 'core/libs/core/ComponentHandler.class.php'); require_once(ROOT_PDIR . 'core/helpers/UpdaterHelper.class.php'); require_once(ROOT_PDIR . 'core/libs/core/datamodel/Dataset.php'); $db = DMI::GetSystemDMI(); $ds = new \Core\Datamodel\Dataset(); $ds->delete()->table('component')->execute($db); // And now execute reinstall. exec('"' . ROOT_PDIR . '../utilities/reinstall.php' . '"');
/** * Method to purge the user activity cron. * * This is useful because on an extremely busy site, this table can grow to several gigs within not much time. */ public static function PurgeUserActivityCron() { $opt = \ConfigHandler::Get('/user/activity/keephistory'); if($opt == 'all' || !$opt){ echo 'Not purging any user activity.' . "\n"; return true; } // Convert the key to a datestring value. $date = new \CoreDateTime(); switch($opt){ case '1-week': $date->modify('-1 week'); break; case '1-month': $date->modify('-1 month'); break; case '2-months': $date->modify('-2 month'); break; case '3-months': $date->modify('-3 month'); break; case '6-months': $date->modify('-6 month'); break; case '12-months': $date->modify('-12 month'); break; case '24-months': $date->modify('-24 month'); break; case '36-months': $date->modify('-36 month'); break; default: echo 'Invalid value for /user/activity/keephistory: [' . $opt . ']'; return false; } // And delete any activity older than this date. echo 'Purging user activity older than ' . $date->getFormatted('r') . "...\n"; $ds = new \Core\Datamodel\Dataset(); $ds->delete()->table('user_activity')->where('datetime < ' . $date->getFormatted('U', \TIME::TIMEZONE_GMT))->execute(); echo 'Removed ' . $ds->num_rows . ' record(s).' . "\n"; return true; }
/** * Internal function to parse and handle the dataset in the <upgrade> and <install> tasks. * This is used for installations and upgrades. * * Unlike the other parse functions, this handles a single node at a time. * * @param $node DOMElement * @param $verbose bool * * @throws InstallerException */ private function _parseDatasetNode(DOMElement $node, $verbose = false){ $action = $node->getAttribute('action'); $table = $node->getAttribute('table'); $haswhere = false; $sets = array(); $renames = array(); $ds = new Core\Datamodel\Dataset(); $ds->table($table); foreach($node->getElementsByTagName('datasetset') as $el){ $sets[$el->getAttribute('key')] = $el->nodeValue; } foreach($node->getElementsByTagName('datasetrenamecolumn') as $el){ // <datasetrenamecolumn oldname="ID" newname="id"/> $renames[$el->getAttribute('oldname')] = $el->getAttribute('newname'); } foreach($node->getElementsByTagName('datasetwhere') as $el){ $haswhere = true; $ds->where(trim($el->nodeValue)); } switch($action){ case 'alter': if(sizeof($sets)) throw new InstallerException('Invalid mix of arguments on ' . $action . ' dataset request, datasetset is not supported!'); if($haswhere) throw new InstallerException('Invalid mix of arguments on ' . $action . ' dataset request, datasetwhere is not supported!'); foreach($renames as $k => $v){ // ALTER TABLE `controllers` CHANGE `ID` `id` INT( 11 ) NOT NULL AUTO_INCREMENT $ds->renameColumn($k, $v); } break; case 'update': foreach($sets as $k => $v){ $ds->update($k, $v); } break; case 'insert': foreach($sets as $k => $v){ $ds->insert($k, $v); } break; case 'delete': if(sizeof($sets)) throw new InstallerException('Invalid mix of arguments on ' . $action . ' dataset request'); if(!$haswhere) throw new InstallerException('Cowardly refusing to delete with no where statement'); $ds->delete(); break; default: throw new InstallerException('Invalid action type, '. $action); } // and GO! if($verbose){ CLI::PrintActionStart('Executing dataset ' . $action . ' command on ' . $table); } $ds->execute(); if($ds->num_rows){ CLI::PrintActionStatus(true); return array($action . ' on table ' . $table . ' affected ' . $ds->num_rows . ' records.'); } else{ CLI::PrintActionStatus(false); return false; } }