Work on Email and other major consistency work
This commit is contained in:
@@ -15,7 +15,7 @@ class Model_Email_Log extends ORM_OSB {
|
||||
|
||||
protected $_belongs_to = array(
|
||||
'account'=>array('far_key'=>'id'),
|
||||
'email_template_translate'=>array('far_key'=>'id'),
|
||||
'translate'=>array('model'=>'Email_Template_Translate','foreign_key'=>'email_template_translate_id'),
|
||||
);
|
||||
|
||||
protected $_sorting = array(
|
||||
@@ -28,11 +28,11 @@ class Model_Email_Log extends ORM_OSB {
|
||||
),
|
||||
);
|
||||
|
||||
public function translate_resolve($column) {
|
||||
if (! $this->data OR ! ($this->email_template_translate->variables($column)))
|
||||
return $this->email_template_translate->display($column);
|
||||
else
|
||||
return $this->email_template_translate->rresolve($this->data,$column);
|
||||
/**
|
||||
* Resolve a data variable into
|
||||
*/
|
||||
public function resolve($column) {
|
||||
return (! $this->data OR ! $this->translate->variables($column)) ? $this->translate->display($column) : $this->translate->complete($this->data,$column);
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
@@ -10,7 +10,7 @@
|
||||
*/
|
||||
class Model_Email_Template extends ORM_OSB {
|
||||
protected $_has_many = array(
|
||||
'email_template_translate'=>array('foreign_key'=>'email_template_id','far_key'=>'id'),
|
||||
'translate'=>array('model'=>'Email_Template_Translate','foreign_key'=>'email_template_id','far_key'=>'id'),
|
||||
);
|
||||
|
||||
// This module doesnt keep track of column updates automatically
|
||||
@@ -27,8 +27,29 @@ class Model_Email_Template extends ORM_OSB {
|
||||
),
|
||||
);
|
||||
|
||||
protected $_save_message = TRUE;
|
||||
|
||||
public function name() {
|
||||
return ! is_null($this->description) ? $this->description : $this->name;
|
||||
}
|
||||
|
||||
public function save(Validation $validation=NULL) {
|
||||
parent::save();
|
||||
|
||||
// Save our Translated Message
|
||||
if ($x = array_diff_key($_POST,$this->_object) AND ! empty($_POST['language_id']) AND ! empty($_POST['translate']) AND is_array($_POST['translate'])) {
|
||||
$to = $this->translate->where('language_id','=',$_POST['language_id'])->find();
|
||||
|
||||
// For a new entry, we need to set the product_id
|
||||
if (! $to->loaded()) {
|
||||
$to->product_id = $this->id;
|
||||
$to->language_id = $_POST['language_id'];
|
||||
}
|
||||
|
||||
$to->values($x['translate'])->save();
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
@@ -13,11 +13,26 @@ class Model_Email_Template_Translate extends ORM_OSB {
|
||||
protected $_created_column = FALSE;
|
||||
protected $_updated_column = FALSE;
|
||||
|
||||
protected $_belongs_to = array(
|
||||
'template'=>array('model'=>'Email_Template','foreign_key'=>'email_template_id'),
|
||||
);
|
||||
|
||||
protected $_save_message = TRUE;
|
||||
|
||||
public function complete($data,$column) {
|
||||
$output = $this->display($column);
|
||||
|
||||
foreach ($this->variables($column) as $k => $v)
|
||||
$output = str_replace('$'.$v.'$',$data[$v],$output);
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
public function variables($field) {
|
||||
$results = array();
|
||||
$matches = array();
|
||||
|
||||
preg_match_all('/%([A-Z0-9_]+)%/U',$this->$field,$matches,PREG_OFFSET_CAPTURE);
|
||||
preg_match_all('/\$([A-Z0-9_]+)\$/U',$this->$field,$matches,PREG_OFFSET_CAPTURE);
|
||||
|
||||
foreach ($matches[1] as $k => $v)
|
||||
$results[$v[1]] = $v[0];
|
||||
@@ -27,14 +42,5 @@ class Model_Email_Template_Translate extends ORM_OSB {
|
||||
|
||||
return $results;
|
||||
}
|
||||
|
||||
public function rresolve($data,$column) {
|
||||
$output = $this->display($column);
|
||||
|
||||
foreach ($this->variables($column) as $k => $v)
|
||||
$output = str_replace('%'.$v.'%',$data[$v],$output);
|
||||
|
||||
return $output;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
Reference in New Issue
Block a user