I attempt to set a hit counter TV by initiate a plugin:
<?php
switch ($modx->event->name) {
case 'OnWebPageInit':
break;
case 'OnWebPagePrerender':
$tv = $modx->getObject('modTemplateVar', array('name' => 'hits'));
if ($tv->locked)
return;
$tvId = $tv->id;
$count = $tv->getValue($tvId);
$count++;
$tv->setValue($tvId, $count);
break;
default :
break;
}
return;
And it’s just not working.
Then I investigated all way down, and came up with this:
<?php
public function setValue($resourceId= 0, $value= null) {
$oldValue= '';
if (intval($resourceId)) {
$templateVarResource = $this->xpdo->getObject('modTemplateVarResource',array(
'tmplvarid' => $this->get('id'),
'contentid' => $resourceId,
),true);
if (!$templateVarResource) {
$templateVarResource= $this->xpdo->newObject('modTemplateVarResource');
}
if ($value !== $this->get('default_text')) {
if (!$templateVarResource->isNew()) {
die(__LINE__ . ' : $value = ' . $value);
$templateVarResource->set('value', $value);
} else {
die(__LINE__ . ' : $value = ' . $value);
$templateVarResource->set('contentid', $resourceId);
$templateVarResource->set('value', $value);
}
$this->addMany($templateVarResource);
} elseif (!$templateVarResource->isNew()
&& ($value === null || $value === $this->get('default_text'))) {
die(__LINE__ . ' : $value = ' . $value);
$templateVarResource->remove();
}
die(__LINE__ . ' : $value = ' . $value);
}
}
MyTV was not read as "
if (!$templateVarResource->isNew()) {".
It died as the second die().
Or, do I miss something here?