'max' => 1,
),
+ 'debug' => array(
+ 'desc' => 'Debug the database',
+ 'short' => 'D',
+ 'default' => '',
+ 'min' => 1,
+ 'max' => 1,
+
+ ),
);
static function cli_opts()
require_once $fd;
$cls = new ReflectionClass('Pman_'. $m . '_UpdateDatabase');
-
- $ret = array_merge($ret, $cls->getStaticPropertyValue('cli_opts'));
-
+ $ar = $cls->getStaticProperties();
+ if (isset($ar['cli_opts'])) {
+
+ $ret = array_merge($ret, $cls->getStaticPropertyValue('cli_opts'));
+ }
}
var $local_base_url = false;
+ var $emailTemplates = array(
+ 'EVENT_ERRORS_REPORT' => array(
+ 'bcc_group' => 'Empty Group',
+ 'test_class' => 'Pman/Admin/Report/SendEventErrors',
+ 'to_group' => 'Administrators',
+ 'active' => 1,
+ 'description' => '9. System Error Messages',
+ 'template_dir' => '/Pman/Admin/templates/mail/'
+ )
+ );
+
function getAuth() {
function get($args, $opts=array())
{
+
PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, array($this, 'onPearError'));
$this->checkSystem();
+ $this->verifyExtensions(array('curl'));
+
if (class_exists('PDO_DataObjects_Introspection')) {
PDO_DataObject_Introspection::$cache = array();
}
-
+ echo "Generate DB cache\n";
HTML_FlexyFramework::get()->generateDataobjectsCache(true);
-
+ echo "Generated DB cache\n";
$ff = HTML_FlexyFramework::get();
if(!isset($ff->Pman) || !isset($ff->Pman['local_base_url'])){
//$this->fixSequencesPgsql();exit;
$this->opts = $opts;
- // ask all the modules to verify the opts
+ if (!empty($opts['debug'])) {
+ DB_DataObject::DebugLevel($opts['debug']);
+ }
+ // ask all the modules to verify the opts
+ echo "Checi options\n";
$this->checkOpts($opts);
+
// do this first, so the innodb change + utf8 fixes column max sizes
return;
}
+
+
$this->runUpdateModulesData();
if (!empty($opts['add-company']) && !in_array('Core', $this->disabled)) {
$this->runExtensions();
- $this->generateDataobjectsCache();
+ $this->clearApacheDataobjectsCache();
-
+ $this->clearApacheAssetCache();
}
+
function output() {
+ echo "\nUpdate Completed SUCCESS\n";
return '';
}
/**
// new -- sql directory..
// new style will not support migrate ... they have to go into mysql-migrate.... directories..
// new style will not support pg.sql etc.. naming - that's what the direcotries are for..
+ $dbdir = $dbtype == 'mysqli' ? 'mysql' : $dbtype;
$this->{$dirmethod}($dburl, $this->rootDir. "/Pman/$m/sql");
- $this->{$dirmethod}($dburl, $this->rootDir. "/Pman/$m/{$dbtype}");
+ $this->{$dirmethod}($dburl, $this->rootDir. "/Pman/$m/{$dbdir}");
function updateDataEnums()
{
-
+ HTML_FlexyFramework::get()->generateDataobjectsCache(true);
+
$enum = DB_DataObject::Factory('core_enum');
//DB_DAtaObject::debugLevel(1);
$enum->initEnums(
array(
'name' => 'bcc-email', // group who are bcc'ed on all requests.
'type' => 0, // system
+ 'display_name' => 'Standard BCC Group'
),
array(
'name' => 'system-email-from',
'type' => 0, // system
+ 'display_name' => 'Standard System Email From Group'
),
array(
'name' => 'core-person-signup-bcc',
'type' => 0, // system
+ 'display_name' => 'Standard Person Signup BCC Group'
),
-
+ array(
+ 'name' => 'Empty Group', // use for no bcc emails.
+ 'type' => 0,
+ 'display_name' => 'Standard Empty Group'
+ )
));
}
+ function updateDataEmails()
+ {
+ foreach ($this->emailTemplates as $k => $mail) {
+
+ $mail_dir = "{$this->rootDir}{$mail['template_dir']}";
+
+ $this->initEmails(
+ $mail_dir,
+ array($k => $mail),
+ false
+ );
+ }
+ }
- function initEmails($templateDir, $emails)
+ function initEmails($templateDir, $emails, $mapping = false)
{
+ HTML_FlexyFramework::get()->generateDataobjectsCache(true);
+
$pg = HTML_FlexyFramework::get()->page;
foreach($emails as $name=>$data) {
$cm = DB_DataObject::factory('core_email');
$update = $cm->get('name', $name);
$old = clone($cm);
- if (empty($cm->bcc_group)) {
+ if (empty($cm->bcc_group_id)) {
if (empty($data['bcc_group'])) {
$this->jerr("missing bcc_group for template $name");
}
+
$g = DB_DataObject::Factory('core_group')->lookup('name',$data['bcc_group']);
if (empty($g->id)) {
$this->jerr("bcc_group {$data['bcc_group']} does not exist when importing template $name");
}
- if (!$g->members('email')) {
+ if (!$g->members('email') && $g->name != 'Empty Group') {
$this->jerr("bcc_group {$data['bcc_group']} does not have any members");
}
- $cm->bcc_group = $g->id;
+ $cm->bcc_group_id = $g->id;
}
// initEmails will always have the latest location of the test class - in theory the user should not be changign the value of this...
//if (empty($cm->test_class)) {
- if (empty($data['test_class'])) {
- $this->jerr("missing test_class for template $name");
- }
- $cm->test_class = $data['test_class'];
+ if (empty($data['test_class'])) {
+ $this->jerr("missing test_class for template $name");
+ }
+
+ $cm->test_class = $data['test_class'];
//}
+ if(isset($cm->to_group_id)) {
+ print_r('isset');
+ }
- if (!empty($data['to_group']) && !isset($cm->to_group)) {
-
+ if (
+ !empty($data['to_group']) &&
+ (!isset($cm->to_group_id) || !empty($cm->to_group_id))
+ ) {
$gp = DB_DataObject::Factory('core_group')->lookup('name',$data['to_group']);
if (empty($gp->id)) {
$this->jerr("to_group {$data['to_group']} does not exist when importing template $name");
}
- $cm->to_group = $gp->id;
+ $cm->to_group_id = $gp->id;
}
- if(isset($cm->to_group)) {
- if($cm->to_group > 0) {
-
- $gp = DB_DataObject::Factory('core_group')->lookup('name',$data['to_group']);
-
- if (empty($gp->id)) {
- $this->jerr("to_group {$data['to_group']} does not exist when importing template $name");
- }
-
- $cm->to_group = $gp->id;
- }
+ if(
+ isset($data['active']) && !isset($cm->active)
+ ) {
+ $cm->active = $data['active'];
}
- if(isset($data['active'])) {
- $cm->active = $data['active'];
+ /*
+ * Set description to email.
+ * However we do not update if it is been set.
+ */
+ if(empty($cm->description) && !empty($data['description'])){
+ $cm->description = $cm->escape($data['description']);
}
require_once $cm->test_class . '.php';
require_once 'Pman/Core/Import/Core_email.php';
$x = new Pman_Core_Import_Core_email();
- $x->updateOrCreateEmail('', $opts, $cm);
+ $x->updateOrCreateEmail('', $opts, $cm, $mapping);
echo "email: {$name} - CREATED\n";
}
PDO_DataObject_Introspection::$cache = array();
}
HTML_FlexyFramework::get()->generateDataobjectsCache(true);
+
+
$this->updateDataEnums();
$this->updateDataGroups();
$this->updateDataCompanies();
+ $this->updateDataEmails();
+
$c = DB_DataObject::Factory('I18n');
$c->buildDB();
}
- function generateDataobjectsCache()
+ function clearApacheDataobjectsCache()
{
- $url = "http://localhost{$this->local_base_url}/Core/RefreshDatabaseCache";
-
- $this->curl($url);
+ echo "Clearing Database Cache\n";
+ // this needs to clear it's own cache along with remote one..
+
+
+ $response = $this->curl("http://localhost{$this->local_base_url}/Core/RefreshDatabaseCache");
+
+ $json = json_decode($response, true);
+
+ if(empty($json['data']) || $json['data'] != 'DONE'){
+ echo $response. "\n";
+ echo "Clear DataObjects Cache failed\n";
+ exit;
+ }
+
+ }
+
+
+ function clearApacheAssetCache()
+ {
+ echo "Clearing Asset Cache\n";
+ $response = $this->curl(
+ "http://localhost{$this->local_base_url}/Core/Asset",
+ array( '_clear_cache' => 1 ,'returnHTML' => 'NO' ),
+ 'POST'
+ );
+ $json = json_decode($response, true);
+
+ if(empty($json['success']) || !$json['success']) {
+ echo $response. "\n";
+ echo "CURL Clear Asset cache failed\n";
+ exit;
+ }
}
+
function curl($url, $request = array(), $method = 'GET')
{
if($method == 'GET'){
curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
} else {
-
curl_setopt($ch, CURLOPT_HTTPHEADER,
array("Content-Type: application/x-www-form-urlencoded", "Content-Length: " . strlen($request)));
return $response;
}
-
+ static function verifyExtensions($extensions)
+ {
+ $error = array();
+
+ foreach ($extensions as $e){
+
+ if(extension_loaded($e)) {
+ continue;
+ }
+
+ $error[] = "Error: Please install php extension: {$e}";
+ }
+
+ if(empty($error)){
+ return true;
+ }
+ $ff = HTML_FLexyFramework::get();
+
+ $ff->page->jerr(implode('\n', $error));
+ }
}