Beispiel #1
0
 /**
  * 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);
 }
Beispiel #2
0
 /**
  * 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;
 }
Beispiel #3
0
 /**
  * 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;
 }