Software for a social network in a corporate intranet running on LAMP - social-networking

The company where I work for (1800+ Employees) is looking to enhance the personal relationships between its employees, allow a better collaboration and communication between departments and make it easier for the HR department to identify skills, experience and interests among the personnel (ex: we have some colleagues with deep knowledge of SAP modules and products, but during concrete projects it results very difficult to identify them and integrate them). Therefore, they want to implement a social network for our intranet.
We are just looking for the basic features such as profiles, discussion boards and so on, so nothing fancy. I proposed Community Server but my boss said .Net and java are no-gos. He wants LAMP and is not interested in a web solution like Ning, because of privacy and security concerns. It does not matter if it is Open-Source or commercial software. But it should allow a complete layout customization and must also have access from the outside world.
So my question would be, is there something like Community Server running on a LAMP stack?
Thank you very much!
UPDATE: We already have a Facebook page and a group. But my boss wants some features not included in Facebook such as a tag cloud in each profile page displaying skills and relevant proyects; and a feature like the "neighborhoods" from Last.FM, where you can group people with similar skills and interests and there is also the confidentialy issue (discussions about projects, clients, etc). So, any ideas?

You should check out StatusNet. http://status.net/

It doesn't directly answer your question, but aren't you rather trying to reinvent the wheel?
Facebook has got Social Networking down and the likely hood is 95% of your 1800 employees already use it.
Why would you go to the effort of writing and supporting a product as well as asking your employees to update information about themselves in multiple places when you could just set up a Facebook Network.
The other point I would make is, why are you limiting yourself to one way of doing things right from the off. Perhaps a detailed analysis of which technologies best serve your purpose would be more appropriate.
I appreciate this doesn't answer you question, I just feel this is a good example of Corporations unwilling to embrace tools already out there, I suspect because they are scared of them.
I'm probably right in guess that you're company heavily monitors Facebook usage, which is why this also might be hard.

Try Open Atrium, a Drupal-based team server.

Some sort of facebook application would allow you to keep the data on a server that you manage, but still use facebook's existing features. Pretty certain that facebook uses PHP for its application framework.

I agree with MrEdmundo and would upvote him if I were registered. Dont fall victim to "It wasnt invented here" syndrome. I bet your boss is like "we need something like facebook".
If it makes you feel better... here is a little story:
I was trying to implement some sort of group chat so fellow employees could ask quick questions to eachother online without having to get up or if someone was on the phone, etc. However, the service I installed (some sort of jabber daemon, i forget which one) never really got used. The solution? Just install the facebook chat client because all the co-workers are already on facebook most the day anyways!
plus, the "screen name" is appropriate because it is our real names, not stuff like "Out Into Space", "theman", or "fly-mystikal-dj-69"

You might want to consider something like Drupal. It's technically a CMS, but it's extremely customizable, and there are a lot of modules available that provide social-networking-style features.

Use Office Messenger for communication. It's basically like MSN Messenger but run on the company's servers so they can monitor all traffic. To know who has expertise in what area, it can't be too hard to build your own simple CRUD application to record profiles of employees and have each profile tagged with key skills, that the employee has and build a search function to find the people with the skills you need at any given time.

You can create an application using the Facebook SDK (PHP, java or any other language) and moderate it so that only employees can use it. That way you can use the existing Facebook features and add the tag clouds and other stuff your boss wants.

I've not used it, but Dolphin might be worth downloading to try out.

elgg.org
LAMP easy to install and setup, looks like your requirements would all be easily satisfied by the official plugins that are available.

Another option: http://buddypress.org/

Related

Can you use Microsoft Power Automate to develop a company wide workflow solution?

I am currently investigating possible tools with which to develop a workflow solution for a company that would be used by the staff to process incoming work and ensure incoming work is routed to the correct people for evaluation and are authorised by the relevant managers before work commences, and that the work is signed off when complete.
Is Microsoft Power Automate the right tool for this kind of work, or is it [simply] a tool for automating ones own personal tasks? I'm looking for something that could be used to develop a tool that would be used by everyone in the company.
I've looked at the various videos but it looks like it might be just something for automating ones personal tasks rather than building something to be shared. Is this correct or can it be used as a software development tool for developing a custom solution for a company?
Look at Business Process Flows (BPFs).
https://learn.microsoft.com/en-us/power-automate/business-process-flows-overview
The following text is from "Why use business process flows?" on the above link:
Business process flows provide a guide for people to get work done.
They provide a streamlined user experience that leads people through
the processes their organization has defined for interactions that
need to be advanced to a conclusion of some kind. This user experience
can be tailored so that people with different security roles can have
an experience that best suits the work they do.
Use business process flows to define a set of steps for people to
follow to take them to a desired outcome. These steps provide a visual
indicator that tells people where they are in the business process.
Business process flows reduce the need for training because new users
don’t have to focus on which table they should be using. They can let
the process guide them. You can configure business process flows to
support common sales methodologies that can help your sales groups
achieve better results. For service groups, business process flows can
help new staff get up-to-speed more quickly and avoid mistakes that
could result in unsatisfied customers.
You can create broad, or detailed, BPFs, to cover company wide business processes. You can also call on separate normal flows, validations, and more. There are a lot of ways you can use a BPF to move things forward in a company.
Power Automate (aka MS Flow) is a low code/no code business workflow management or process orchestration software, getting more power with Robotic Process Automation & Virtual Agents inclusion.
The concept is having variety of connectors for all the available SaaS solutions (name anything like Dynamics, Salesforce, Oracle, SAP, Twitter, Facebook, Exchange mailbox, OneDrive, SharePoint, etc) to act as both Trigger and Action to achieve what we want. At worst case we can use REST APIs to complete the project setup.
Community demo the usefulness of it by showcasing the automation of personal stuffs but it has more. MS Flow is the alternate for Dynamics CRM 365 workflow and SharePoint workflow as well. Definitely it’s an enterprise candidate to solve company wide problems like onboarding, approvals, and many other workflow solutions.
Personally I would look at Azure Logic Apps for that level. It has just about the same connectors as MS Flow , but with the addition of better management, troubleshooting and extensibility capabilities and you get all the benefits of security in Azure and compliance good stuff that companies would need

Multi-tenancy in Google IoT core

Is there a provision to use Google IoT core in multi-tenant way so that different user can use the same project but still only see their own device registries, devices etc?
An alternative way for you to solve your problem is to partition your users by project.
Particularly if the user is an organization|customer, this would provide you and the customer with the project's security boundary too. This would also give you partitioned registries and their devices.
A downside is in having to manage more projects but this is low effort.
Beyond perhaps the additional complexity, what would you not be able to achieve using multiple projects that you'd need?
As an addendum to DazWilkin's answer, if you DON'T partition your users by Project, then billing will all be put under one umbrella, which may not be something you want to do. You can't split billing within the same project to say "This registry get billed to this account, and that registry to that account". That may not be a requirement, but it's something to think about.

Restrict administrator to one store view

I have installed and configured a Magento Community edition v1.8 according to a few requirements. Part of the requirements is the setup of a few stores.
For completion though, it is necessary to configure "administrators" per se for each of these stores. This administrator, when (s)he logs in to the admin portal, would be viewing data, configuration and settings only for their respective store, and the rest(of the stores) is not shown (As is the case when one configures an admin role via System -> Permissions -> Roles).
When the main administrator logs in to the back-end portal, they should view options for assigning these smaller (so to speak) administrators to their respective admin website sites. This list should be updated when stores are added/deleted (and hence the excellent Alan Storm's blog is not of much help)
I have been looking at various tutorials that enable and manipulate ACL, although none of them specifically tackle allowing such specific administrator access.
Can someone kindly point the right resources for achieving such a functionality? Any help is very much appreciated and will be rewarded with karma points :)
(I forgot to mention that I am not looking for a turnkey solution, but rather a direction to proceed, so that I may configure it myself. Any resource in this regard will be very helpful!)
Magento just doesn't work this way - it sounds like you are trying to create a kind of multi-vendor setup with each vendor having access just to their store/products. To achieve a robust, complete solution like this would require such widespread changes to standard functionality you would probably end up making it extremely difficult to upgrade the store, it would also take many, many hours of development time. Essentially, I wouldn't recommend going down this route.
Aitoc has made an extension for admin restrictions per strore. But Aitoc is not my favorite :). And than I'm kind in my words :) honestly we set them to our extension Blacklist
But if you want it : http://www.aitoc.com/en/magentomods_advanced_permissions.html
Note: on own risk ;)

What are the options for sharing sessions between applications?

Say that I have two or more completely separate web applications. The might even be running on a different server and use different language & framework.
What I need to do is to share state, or at least authentication. For example if the user logs in on one of the websites and goes to another one, he will be able to authenticate using his credentials from the first website.
For example, if I have one website running e-commerce and another one is a blog, I want all the e-commerce users be able to comment on the blog with the information from their profile.
What is the best way to do this? Is it even a good idea?
The only solution that comes to my mind is abstracting away the profiles and authentication and create some kind of global profile and then use that on both of those websites. But that seems like a really complex solution considering what I need to achieve.
OpenID seems like a good way.

Recommended Exchange Server API for WP7 app

I am investigating developing an app for Windows Phone 7 that requires access to email/calendar information from Exchange Server (read only).
The way I see it there are 2 options EWS or ActiveSync.
WP7 only supports Basic Authentication.
By default on Exchange server installations the EWS virtual directory has Basic Authentication disabled meaning a configuration change of Exchange Server to allow EWS to be used.
The ActiveSync protocol looks like it would take some time to get your head around and develop an implementation.
The questions are
1. How common is it for people to enable basic authentication for EWS? Is this something that most businesses are likely to not want to do?
How difficult is it to learn and use the ActiveSync protocol? Is it something that could be done in days, weeks or months?
1) To find out about the common configuration of EWS servers I'd spek to some sysadmins and ask them. Maybe try on https://serverfault.com/
1) How difficult something is to learn very much depends on the skills and experience of the person learning and the teaching resources available. This is a non-trivial protocol so I wouldn't expect learning it to take days. There will also be a licensing cost of implementing Excahange ActiveSync which I suspect would make it an expensive option.
Option 3: Create your own web service that acts as a proxy to EWS and does the authentication for you. Ugly and a bit painful, but if your app is architected well, once WP7 supports better authentication, switching to directly hit EWS should be pretty simple.
ActiveSync is painful and does not support everything that EWS supports. I would recommend going the EWS route if you have that option.
If your going to use ActiveSync, think again... it uses wbxml and you would need to create your own API for doing calls - this means crating tokenized blobs which must be 100% perfect and account for all aspects of whatever type of messaging items you are going against or will risk creating bad items or even poison ones. The devistation caused by bad EAS calls could well exceed your customer base... so, you need to be very careful. Also, while the specs are public, it needs an very expensive license. If you license, you would need to get a support contract with a specific schedule in order to get develper support. With a team of developers, it will likely take 3-5 or so years to do a full implementation client side and work out most of the bugs. So, as far as the skills in email development, you and your other developers would need to be pretty hard-core. There may be third party APIs which wrap EAS calls... however, you should be sure that they are licensed and that that the license would cover your development - so, you would need to research those on your own.
EWS has more features and is far, far easier to use and is what is suggested... further, there is no special licensing, etc.
Using a proxy web service+Exchange Managed APIs so that WP7 can go against Exchange without writting a ton of code:
http://www.telerik.com/products/windows-phone/getting-started/exchange-client.aspx
... can also use this approach to use NTLM.
Before considering EAS...
http://blogs.msdn.com/b/webdav_101/archive/2011/09/29/new-to-exchange-activesync-development.aspx

Resources