function constructClasses() { App::import('Lib', 'Newsletter.NewsletterUpgrade'); if (!empty($this->params['admin']) && $this->params['controller'] != 'newsletter_upgrade' && $this->params['action'] == 'admin_index' && NewsletterUpgrade::check()) { $this->redirect(array('plugin' => 'newsletter', 'controller' => 'newsletter_upgrade', 'action' => 'upgrade', 'admin' => true)); } return parent::constructClasses(); }
function admin_upgrade() { clearCache(null, 'models'); $sErrors = NewsletterUpgrade::check(); if (!$sErrors) { $this->Session->setFlash(__d('newsletter', 'The database is valid', true)); $this->redirect(array('plugin' => 'newsletter', 'controller' => 'newsletter', 'action' => 'index')); } //debug($sErrors); if (!empty($this->params['named']['start'])) { $error = array(); $step = empty($this->params['named']['step']) ? 1 : $this->params['named']['step']; $res = NewsletterUpgrade::run($error); if ($res === 'break') { $this->redirect(array('start' => '1', 'step' => $step++)); } if ($res === true) { $this->Session->setFlash(__d('newsletter', 'The database has been fixed', true)); $this->redirect(array('plugin' => 'newsletter', 'controller' => 'newsletter', 'action' => 'index')); } else { $this->Session->setFlash(__d('newsletter', 'An error occurred', true) . ' :<ul><li>' . implode('</li><li>', $error) . '</li></ul>'); } /* App::import('Lib', 'Newsletter.QueryUtil'); if(!empty($sErrors['missing_table'])){ $this->_fix_missing_tables($sErrors,$error); }elseif(!empty($sErrors['field_mismatch'])){ if(in_array('NewsletterEmail.sendlist_id',$sErrors['field_mismatch']['fields'])){ $this->_fix_email_list_relation($sErrors,$error); } if(in_array('NewsletterSended.sendlist_id',$sErrors['field_mismatch']['fields'])){ $this->_fix_sended_tabled($sErrors,$error); } if(in_array('NewsletterSended.newsletter_variant_id',$sErrors['field_mismatch']['fields'])){ $this->_fix_sended_variant($sErrors,$error); } if(in_array('NewsletterSended.name',$sErrors['field_mismatch']['fields'])){ $this->_fix_sended_name($sErrors,$error); } clearCache(null, 'models'); } if(!empty($error)){ $this->Session->setFlash( __d('newsletter','An error occurred', true) .' :<ul><li>' .implode('</li><li>',$error) .'</li></ul>' ); }else{ $this->Session->setFlash(__d('newsletter','The database has been fixed', true)); $this->redirect(array('plugin'=>'newsletter','controller'=>'newsletter','action'=>'index')); } */ } }
function fix_htmlLongText($error, $opt, &$msg) { $_this =& NewsletterUpgrade::getInstance(); $db =& ConnectionManager::getDataSource($_this->connection); foreach ($error as $table => $field) { $query = 'ALTER TABLE `' . $table . '` CHANGE `' . $field . '` `' . $field . '` LONGTEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci NULL DEFAULT NULL;'; //debug($query); if (!$db->execute($query)) { $msg = __('Unable to execute query :', true) . ' ' . $query; return false; } } return true; }