/** * function to update parent followers when adding a comment * with this user and referenced users from comment * @return void */ protected function updateParentFollowers() { $p =& $this->data; $po = $this->getParentObject(); $posd = $po->getSysData(); $newUserIds = array(); $posd['lastComment'] = array('user_id' => User::getId(), 'date' => Util\dateMysqlToISO('now')); $wu = empty($posd['wu']) ? array() : $posd['wu']; $uid = User::getId(); if (!in_array($uid, $wu)) { $newUserIds[] = intval($uid); } //analize comment text and get referenced users $this->lastMentionedUserIds = Util\getReferencedUsers($p['data']['_title']); foreach ($this->lastMentionedUserIds as $uid) { if (!in_array($uid, $wu)) { $newUserIds[] = $uid; } } //update only if new users added if (!empty($newUserIds)) { $wu = array_merge($wu, $newUserIds); $wu = Util\toNumericArray($wu); $posd['wu'] = array_unique($wu); } //always update sys_data to change lastComment date $po->updateSysData($posd); }
/** * analize object data and set 'wu' property in sys_data * * return newly assigned ids */ protected function setFollowers() { $rez = parent::setFollowers(); $d =& $this->data; $sd =& $d['sys_data']; /** add newly assigned users to followers */ $oldAssigned = array(); if (!empty($this->oldObject)) { $oldAssigned = Util\toNumericArray(@$this->oldObject->getFieldValue('assigned', 0)['value']); } $newAssigned = Util\toNumericArray(@$this->getFieldValue('assigned', 0)['value']); $diff = array_diff($newAssigned, $oldAssigned); $wu = empty($sd['wu']) ? array() : $sd['wu']; $wu = array_merge($wu, $diff); $rez = array_merge($rez, $newAssigned); //analize referenced users from description if (!empty($d['data']['description'])) { $uids = Util\getReferencedUsers($d['data']['description']); if (!empty($uids)) { $wu = array_merge($wu, $uids); $rez = array_merge($rez, $wu); } } $sd['wu'] = array_unique($wu); $rez = array_unique($rez); return $rez; }
/** * analize object data and set 'wu' property in sys_data * * return newly assigned ids */ protected function setFollowers() { $rez = array(); $d =& $this->data; $sd =& $d['sys_data']; $tpl = $this->getTemplate(); //add creator as follower by default, but not for folder template if (empty($sd['wu'])) { $sd['wu'] = array(); } if ($d['template_id'] != Config::get('default_folder_template')) { if (!in_array($d['cid'], $sd['wu'])) { $sd['wu'][] = intval($d['cid']); $rez[] = intval($d['cid']); } } if (!empty($tpl)) { $fields = $tpl->getFields(); foreach ($fields as $f) { if (!empty($f['cfg']['mentionUsers'])) { $values = $this->getFieldValue($f['name']); foreach ($values as $v) { if (!empty($v['value'])) { $uids = Util\getReferencedUsers($v['value']); if (!empty($uids)) { $sd['wu'] = array_merge($sd['wu'], $uids); $rez = array_merge($rez, $uids); } } } } } } $sd['wu'] = array_unique($sd['wu']); $rez = array_unique($rez); return $rez; }