本文整理汇总了PHP中Node::onSave方法的典型用法代码示例。如果您正苦于以下问题:PHP Node::onSave方法的具体用法?PHP Node::onSave怎么用?PHP Node::onSave使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Node
的用法示例。
在下文中一共展示了Node::onSave方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: hookNodeUpdate
/**
* @mcms_message ru.molinos.cms.hook.node
*/
public static function hookNodeUpdate(Context $ctx, Node $node, $op)
{
switch ($op) {
case 'delete':
$node->onSave("UPDATE `node` SET `deleted` = 1 WHERE `class` = 'comment' AND `id` IN (SELECT `nid` FROM `node__rel` WHERE `tid` = %ID%");
break;
case 'erase':
$node->onSave("DELETE FROM `node` WHERE `class` = 'comment' AND `id` IN (SELECT `nid` FROM `node__rel` WHERE `tid` = %ID%)");
break;
case 'create':
if (!empty($node->doc) and is_numeric($nid = Node::_id($node->doc))) {
// Собираем прикреплённых пользователей.
$l1 = $node->getDB()->getResultsV("nid", "SELECT `nid` " . "FROM `node__rel` WHERE `tid` = ? AND `nid` IN (SELECT `id` " . "FROM `node` WHERE `class` = 'user')", array($nid));
// Собираем пользователей, комментировавших ранее
$l2 = $node->getDB()->getResultsV("uid", "SELECT `n`.`uid` " . "FROM `node` `n` " . "INNER JOIN `node__rel` `r` ON `r`.`nid` = `n`.`id` " . "WHERE `r`.`tid` = ? AND `n`.`class` = 'comment'", array($nid));
$uids = array_diff(array_unique(array_merge($l1, $l2)), array($ctx->user->id));
$body = mcms::render(__CLASS__, array('mode' => 'new', 'comment' => $node->getRaw()));
if (!empty($body) and !empty($uids)) {
foreach ($uids as $uid) {
if (empty($node->doc)) {
$subject = t('Новый комментарий');
} else {
$subject = t('Новый комментарий [%id]', array('%id' => Node::_id($node->doc)));
}
mcms::mail(null, $uid, $subject, $body);
}
}
}
}
}
示例2: hookNodeUpdate
/**
* @mcms_message ru.molinos.cms.hook.node
*/
public static function hookNodeUpdate(Context $ctx, Node $node, $op)
{
$config = $ctx->config->get('modules/moderator');
if (!empty($config['skip_types']) and in_array($node->class, $config['skip_types'])) {
return;
}
// Некоторые известные типы не модерируем.
if (in_array($node->class, array('domain', 'widget', 'user', 'group', 'field', 'cronstats'))) {
return;
}
// Пользователь сам себе публикатор.
if ($ctx->user->hasAccess(ACL::PUBLISH, $node->class)) {
return;
}
switch ($op) {
case 'update':
$prepend = 'Пользователь %user <strong>изменил</strong> документ типа «%type»:';
break;
case 'create':
$prepend = 'Пользователь %user <strong>создал</strong> документ типа «%type»:';
break;
case 'delete':
$prepend = 'Пользователь %user <strong>удалил</strong> (в корзину) документ типа «%type»:';
break;
case 'restore':
$prepend = 'Пользователь %user <strong>восстановил из корзины</strong> документ типа «%type»:';
break;
case 'publish':
$prepend = 'Пользователь %user просит <strong>опубликовать</strong> документ типа «%type»:';
$node->onSave("UPDATE `node` SET `published` = 0 WHERE `id` = %ID%");
break;
case 'unpublish':
$prepend = 'Пользователь %user просит <strong>скрыть</strong> документ типа «%type»:';
$node->onSave("UPDATE `node` SET `published` = 1 WHERE `id` = %ID%");
break;
default:
return;
}
$user = $ctx->user->getNode();
$body = '<p>' . t($prepend, array('%user' => $user ? $user->getName() : null, '%type' => isset($schema['title']) ? $schema['title'] : $node->class)) . '</p>' . self::getNodeBody($node);
if (count($to = self::getRecipients($ctx))) {
$rc = BebopMimeMail::send(null, $to, t('Редакторская активность на сайте %site', array('%site' => MCMS_HOST_NAME)), $body);
}
}
示例3: update_other
private static function update_other(Context $ctx, Node $node, $op)
{
if ($op == 'create' or $op == 'update') {
$schema = $node->getSchema();
foreach ($schema->getIndexes() as $fieldName) {
$sql = "REPLACE INTO `node__idx_{$fieldName}` (`id`, `value`) VALUES (%ID%, ?)";
$value = $schema[$fieldName]->getIndexValue($node->{$fieldName});
$node->onSave($sql, array($value));
}
}
}
示例4: on_clone
/**
* Клонирование прав при клонировании объекта.
* @mcms_message ru.molinos.cms.node.clone
*/
public static function on_clone(Node $node)
{
$node->onSave("REPLACE INTO `node__access` (`nid`, `uid`, `c`, `r`, `u`, `d`, `p`)" . "SELECT %ID%, `uid`, `c`, `r`, `u`, `d`, `p` FROM `node__access` WHERE `nid` = ?", array($node->id));
}
示例5: setChildren
private function setChildren(Node &$node, array $value)
{
$node->onSave("DELETE FROM `node__rel` WHERE `tid` = %ID% AND `key` IS NULL AND `nid` IN (SELECT `id` FROM `node` WHERE `class` = ?)", array($this->dictionary));
$params = array();
$node->onSave("INSERT INTO `node__rel` (`tid`, `nid`) SELECT %ID%, `id` FROM `node` WHERE `id` " . sql::in($value, $params), $params);
}