function manager()
 {
     if (!$this->manager instanceof SharingTableFlags) {
         $this->manager = SharingTableFlags::instance();
     }
     return $this->manager;
 }
 /**
  * This function will return paginated result. Result is an array where first element is 
  * array of returned object and second populated pagination object that can be used for 
  * obtaining and rendering pagination data using various helpers.
  * 
  * Items and pagination array vars are indexed with 0 for items and 1 for pagination
  * because you can't use associative indexing with list() construct
  *
  * @access public
  * @param array $arguments Query argumens (@see find()) Limit and offset are ignored!
  * @param integer $items_per_page Number of items per page
  * @param integer $current_page Current page number
  * @return array
  */
 function paginate($arguments = null, $items_per_page = 10, $current_page = 1)
 {
     if (isset($this) && instance_of($this, 'SharingTableFlags')) {
         return parent::paginate($arguments, $items_per_page, $current_page);
     } else {
         return SharingTableFlags::instance()->paginate($arguments, $items_per_page, $current_page);
     }
     // if
 }
        DB::beginWork();
        $contactMemberCacheController = new ContactMemberCacheController();
        $contactMemberCacheController->afterMemberPermissionChanged($result);
        DB::commit();
    } catch (Exception $e) {
        DB::rollback();
        Logger::log("Error saving permissions (3): " . $e->getMessage() . "\n" . $e->getTraceAsString());
    }
    // transaction for the hooks
    try {
        DB::beginWork();
        Hook::fire('after_save_member_permissions', array('member' => array_var($result, 'member'), 'user_id' => $user_id), array_var($result, 'member'));
        DB::commit();
    } catch (Exception $e) {
        DB::rollback();
        Logger::log("Error saving permissions (4): " . $e->getMessage() . "\n" . $e->getTraceAsString());
    }
    // delete processed flags
    if (count($flags_to_delete) > 0) {
        try {
            DB::beginWork();
            // delete flags
            SharingTableFlags::delete("member_id={$member_id} AND permission_group_id IN (" . implode(',', $flags_to_delete) . ")");
            DB::commit();
        } catch (Exception $e) {
            DB::rollback();
            Logger::log("Error saving permissions (5 - failed to delete processed flags [" . implode(',', $flags_to_delete) . "]): " . $e->getMessage() . "\n" . $e->getTraceAsString());
        }
    }
}
@unlink($permissions_filename);
Ejemplo n.º 4
0
function check_sharing_table_flags()
{
    _log("Checking for sharing table pending updates...");
    $date = DateTimeValueLib::now();
    $date->add('m', -10);
    $flags = SharingTableFlags::instance()->getFlags($date);
    if (is_array($flags) && count($flags) > 0) {
        _log("  " . count($flags) . " permission groups needs to be recalculated...");
        foreach ($flags as $flag) {
            $ok = SharingTableFlags::instance()->healPermissionGroup($flag);
            $info = $flag->getObjectId() > 0 ? "object " . $flag->getObjectId() : "permission_group_id " . $flag->getPermissionGroupId() . ($flag->getMemberId() > 0 ? " and member_id=" . $flag->getMemberId() : "");
            if ($ok) {
                _log("    Sharing table updated successfully for {$info}");
            } else {
                _log("    Failed to update sharing table for {$info}");
            }
        }
        _log("  Sharing table update finished.");
    } else {
        _log("No permission groups need to be updated.");
    }
}