コード例 #1
0
 public function membersOperate(Model $Model, $ownerId = null)
 {
     if (isset($Model->data[$Model->alias]['user_id']) && !empty($Model->data[$Model->alias]['user_id'])) {
         $ownerId = $Model->data[$Model->alias]['user_id'];
     }
     if (empty($ownerId)) {
         return false;
     }
     $remoteModel = $this->settings[$Model->alias]['remoteModel'];
     App::import('Model', $remoteModel);
     $remoteModel = new $remoteModel();
     $limits = $remoteModel->findByOwnerId($ownerId);
     App::import('Model', 'Group');
     App::import('Model', 'GroupMember');
     $groupModel = new Group();
     $groupMemberModel = new GroupMember();
     $groupModel->recursive = -1;
     $groups = $groupModel->findAllByOwnerId($ownerId);
     if ($limits['GroupLimit']['members_limit'] == 0 && $limits['GroupLimit']['members_used'] > 0) {
         //verify all groups for limit overload
         foreach ($groups as $group) {
             $groupMemberModel->recursive = -1;
             $groupMembers = $groupMemberModel->find('all', array('conditions' => array('GroupMember.group_id' => $group['Group']['id'], 'GroupMember.approved' => true, 'GroupMember.is_deleted' => false), 'order' => array('GroupMember.approve_date' => 'ASC')));
             $groupMembers = array_slice($groupMembers, 6);
             if (count($groupMembers) > 0) {
                 foreach ($groupMembers as $key => $member) {
                     $groupMembers[$key]['GroupMember'] = Hash::merge($member['GroupMember'], array('approved' => false, 'is_invited' => false, 'approve_date' => '0000-00-00 00:00:00'));
                 }
                 $groupMemberModel->saveMany($groupMembers, array('callbacks' => true, 'counterCache' => true));
             }
         }
     } elseif ($limits['GroupLimit']['members_limit'] < $limits['GroupLimit']['members_used']) {
         //we need to decrease group members by some algorythm
     }
     //debug($groups);
 }