private static function updateProjectMembership($taskid, $projects) { // projects: task should belong to these $memberOf = Task::getMemberOfProjects($taskid); // a member of before we update foreach ($projects as $project) { if (!in_array($project, $memberOf)) { // not a member yet Project::addTask($taskid, $project); Project::updateCount($project); } } foreach ($memberOf as $memberProj) { if (!in_array($memberProj, $projects)) { // a member, but should not be anymore Project::removeTask($taskid, $memberProj); Project::updateCount($memberProj); } } }