function do_share() { $share_data = array_var($_POST, 'share_data'); if (is_array($share_data)) { $obj = get_object_by_manager_and_id(array_var($share_data, 'object_id'), array_var($share_data, 'object_manager')); $emails = array_var($_POST, 'emails'); $companies = array_var($_POST, 'companiesId'); if (!is_array($emails) || !count($emails)) { flash_error(lang('must specify recipients')); ajx_current("empty"); return; } $people = array(); foreach ($emails as $k => $email) { // Retrieve users to notify $lt_pos = strpos_utf($email, '<'); if ($lt_pos !== FALSE) { // only email address $email = substr_utf($email, $lt_pos + 1); $email = str_replace('>', '', $email); } if (trim($email) != '') { $user = Users::findOne(array('conditions' => "`email` = '" . $email . "'")); if (!$user instanceof User) { // User not exists -> create one with minimum permissions try { DB::beginWork(); $user = $this->createMinimumUser($email, $companies[$k]); DB::commit(); } catch (Exception $e) { DB::rollback(); } } if ($user instanceof User) { $people[] = $user; $canWrite = array_var($share_data, 'allow_edit'); if ($canWrite && !$obj->canEdit($user) || !$obj->canView($user)) { $this->setObjUserPermission($user, $obj, $canWrite); } $this->saveSharedObject($obj, $user); } } } Notifier::shareObject($obj, $people); flash_success(lang("success sharing object")); ajx_current("back"); } }