Netlink-Social Networking Site 1
Netlink-Social Networking Site 1
1.INTRODUCTION
Social Networking - It's the way the 21st century communicates now. Social networking
is the grouping of individuals into specific groups, like small rural communities or a
neighborhood subdivision. Although social networking is possible in person, especially in
the workplace, universities, and high schools, it is most popular online. This is because
unlike most high schools, colleges, or workplaces, the internet is filled with millions of
individuals who are looking to meet other people.
Social network is the mapping and measuring of relationships and flows between people,
groups, organizations, computers, URLs, and other connected information/knowledge
entities. The nodes in the network are the people and groups while the links show
relationships or flows between the nodes. Social network provides both a visual and a
mathematical analysis of human relationships.
Social Networking Website project itself is a huge project comprising various features
like profile updating, friends list organization and various other application to enhance
the overall look and feel of the website. However, in this project I am basically working
on two essential feature or module ( PROFILE MANAGEMENT &
FRIENDS
ORGANIZATION ).
PROFILE MANAGEMENT module maintain the profile of a user like name, like,
dislikes, hobbies, status etc.
FRIENDS ORGANIZATION module maintains the friend list, handles request and sends
request to the other user.
Profiles and Friends lists are two key features on social network sites. The third is a
public commenting feature ('Testimonials', 'Comments', 'The Wall'). This feature allows
individuals to comment on their Friends' profiles. These comments are displayed
prominently and visible for anyone who has access to that profile.
many
of
Bebo, VKontakte (Russia), Delphi (also called Delphi Forums), Draugiem.lv (mostly in
Latvia),
Hi5 (Europe),
Hyves (mostly
in
The
in
(A.Weinreich, personal communication, July 11, 2007). While people were already
ocking to the Internet, most did not have extended networks of friends who were online.
Early adopters.com explained that there was little to do after accepting Friend requests,
and most users were not interested in meeting strangers.
Classmates.com allowed people to affiliate with their high school or college and surf the
network for others who were also affiliated, but users could not create proles or list
Friends until years later.
From 1997 to 2001, a number of community tools began supporting various
combinations of proles and publicly articulated Friends. AsianAvenue, BlackPlanet, and
MiGente allowed users to create personal, professional, and dating proles users could
identify Friends on their personal profiles without seeking approval for those connections
(O. Wasow, personal communication, August 16, 2007). Likewise, shortly after its launch
in 1999, LiveJournal listed one-directional connections on user pages. LiveJournals
creator suspects that he fashioned these Friends after instant messaging buddy lists (B.
Fitzpatrick, personal communication, June 15, 2007)on LiveJournal, people mark
others as Friends to follow their journals and manage privacy settings. The Korean virtual
worlds site Cyworld was started in 1999 and added SNS features in 2001, independent of
these other sites (see Kim & Yun, this issue). Likewise, when the Swedish web
community LunarStorm refashioned itself as an SNS in 2000, it contained Friends lists,
guestbooks, and diary pages (D. Skog, personal communication, September 24, 2007).
1.4 Project Scope
This system provides users to register their various types of profile like social,
friends. User can maintain the scrap book whatever scraps he has send to users.
The system provides user to upload the photos so that user can maintain own
album.
This system provides user to join the communities according to their scenario.
This system provides the user to maintain their friend list and user can update
their friend list.
This system provides user to send invitation to another friend and can add to their
friend list for future.
1.5 Organization Profile
domain expertise can be hired for building modern web sites, web applications and
complex enterprise applications.
2. SYSTEM REQUIREMENTS
2.1 Literature Survey
The Web-based social networking services make it possible to connect people
who share interests and activities across political, economic, and geographic borders.
Through e-mail and instant messaging, online communities are created where a gift
economy and reciprocal altruism are encouraged through cooperation. Information is
suited to a gift economy, as information is a non rival good and can be gifted at
practically no cost.
Facebook and other social networking tools are increasingly the object of scholarly
research. Scholars in many fields have begun to investigate the impact of socialnetworking
sites,
investigating
how
such
sites
may
play
into
issues
Server Object
The Server class acts as a wrapper for all server functions for our social networking site.
It essentially act as a link between all of the information such as accounts, account
details, pages, notes, etc to our database. When any other model object such as a page is
pulled from the server, a temporary copy is made. If that temporary copy is changed in
any way. The new version must be sent to the server in order to update the permanent
copy. The reason behind local copies is that all the necessary information for the object is
sent over in one easy-to-use package. Then the update to the database can be done all at
once by sending back that single object. There is no need for multiple functions or a
function that takes a large number of parameters.
Account Object
Each user who wants to use the site must create an account. This is the head class that all
other objects use to determine what a user does and when the user did it. The accounts
information has four purposes: hold the login information, hold friend information, hold
prole information, and hold privacy information with such a large amount of
information to keep track of, the Account class would be very large and dicult to work
with. Therefore to ease the load, the Account class was broken up into three dierent
classes. There is the actual account class which keeps track of login information and
friend information. It also holds the other two classes within it. Prole information was
outsourced to the Account Details class, and privacy settings were outsourced to the
Privacy Settings class. The only time the Account class needs to be updated is when the
user changes his/her username and/or password. All other settings are handled by the
Account Details and Privacy Settings classes.
An Account Details object is a helper class created whenever a new Account object is
created. The object contains all the information that shows up in the users prole. The
user can edit this by modifying his/her prole. Overall, this class has no other purpose but
to be a helper class to its account object.
Department of Computer Science, Christ University
A Privacy Settings object is the other helper class created whenever a new Account object
is created. This object contains all the privacy settings that a user has, such as who can
view his/her media or custom pages. This class is called any time a user visits a prole or
content created by another user. However, it does not directly interact with the other
model classes, only the view.
Chat Session Object, Event Object, Link Object, Note Object and Page
Object
These objects contain unique information for a particular type of action a user performs.
All of these contain a reference to the account that owns them. Each object is a workingcopy of an object in the Server. Anytime one of these objects is created on the Server, an
entry of its creation is added to the news feed database.
Message Object
A Message object is created when a user composes a new message to be sent to a friend.
After it is conrmed that the friend is located in the database, the Message object adds its
information to the database. When a user checks his or her inbox, a list of messages that
were sent to the user will be shown in descending order of when they were received.
A Wall Post object works very similar to a Message object. The only dierence is that the
Wall Post objects are viewable to all friends of the user. Another dierence is that a Wall
Post object can hold comments. If a user adds a wall post to his or her own account, their
status will change to the new wall post.
Friends
10
The most important feature is being able to add and remove friends. In our Social
Networking site, making friends is a fairly straightforward process. Users can type in the
name of a friend in the search bar at the top of their home page. The database is queried
for an account that has the search term contained in the full name, any media les with
the search terms in the description, any pages with the search terms in the titles, any links
with the search terms
in the titles, and any notes with the search terms in the title. For example, User A could
search for User B in the search bar. After clicking on User Bs prole, User A will see a
button that says Send Friend Request. Clicking on it will send an alert to User B that User
A wants to be a friend. The friend request will now be in the friends list of User B, where
he/she can either accept it or ignore it, letting it sit there indenitely. If user B accepts the
request, User A will be added to User Bs friends list and vice versa. Being friends has its
advantages. For example, only friends can chat to each other. Also, friends can view any
part of a prole that is marked as friends only. Finally, for a user to view his/her friends
and incoming friend requests, he/she just clicks on the friends tab which brings up a
frame.
Account Creation
When a user accesses the site for the rst time, he/she must create an account before
using any of the site features. The account creation process is broken into three sections.
The rst section deals with the login information and is required for the user to ll out.
This includes the email, password, and password conrmation. The purpose behind the
password conrmation is to ensure that the user didnt accidentally mistype when
creating a password. The second section deals with information about who you are such
as name, location, and gender. Most of these elds are optional except for your name and
gender. It wouldnt be much of a social network if everyone was named anonymous. The
nal section deals with information about the users likes and dislikes, such as interests
and activities. Unlike the other two sections, this section is completely optional. Once the
user clicks create account, a new account, account details, and privacy settings are added
to the server, and the user is brought back to the login page
11
Privacy Options
Privacy is very important feature for some people, and social networking is no exception
to this. Our system provides three levels of privacy: open, friends only, and closed. A
feature with an open privacy level is public and may be viewed by anyone. By contrast, a
feature with a closed privacy level is completely private and can only be viewed by the
account owner. A feature with a friends only privacy level is fairly self explanatory. By
default, al privacy levels are set to open when a new account is created. To change
privacy levels, the user can click on the options tab on the top menu bar. The current
features with privacy levels are media share, account wall, user pages, notes, and the
overall prole privacy.
The implementation of privacy is a fairly straightforward process. When the user makes
changes to the privacy level, the Privacy Settings object in the account is updated with
the new privacy settings. That working copy is then passed into the update method of the
server, and that queries the database to set the record for that privacy settings object to the
new values. When a user visits another prole, the prole owner is pulled from the
database. A function called can view page() is and is passed the prole owner, the viewer
prole and the page type. In the function the privacy settings object is pulled from the
viewer prole and the page type determines which privacy setting is pulled from the
object. If the setting is open, the function automatically returns true. If the setting is
friends only, the function only returns true if the viewer prole is a friend of the page
owner or if the viewer prole and the page owner are the same. Finally, if the setting is
closed, the function only returns true if the viewer prole is the page owner. Once the
function returns its answer the page will either do one of to things. If the function returns
true, the viewer is allowed to view this page, and it will load normally. If the function
returns false, the viewer is not supposed to view the page, and it will redirect to an error
page.
Chatting
12
One of the advantages of having friends is the ability to have live communications with
them via chat. When a friend is online, he/she will appear in the chat tab as an available
friend to chat with. To start a chat session, simply click on the name of the friend which
will begin a new chat session. The little bar at the bottom will change from chat disabled
to chatting with friend name as seen in the gure below. Also, the friend receiving the
chat will get a notication that a new chat session has started. Then the two friends can
chat with each other until one or both log out.
The chat feature is a little more complex than others as it requires a combination of
JavaScript and JQuery to work. When a user clicks on a friend name to begin a chat, a
chat request is sent to the database. On every page there is a JQuery function that queries
the server for any new chat requests once a second. It needs to be JQuery, so the client
can request for the server to run a check and return any relevant information. If it was
pure PHP, the page would never load completely, because the page cannot nish loading
until the server is done all preprocessing. The JavaScript portion of JQuery allows the
client to ask the server to do more processing after the page has been loaded.[3] If there is
a new chat request, a pop under is generated, notifying the receiver of the new chat that is
starting or a new pending chat if the user is in another chat. When a user send a message,
another JQuery function is called, to alert the server that it needs to update the chat
session with a new message. At the same time, another JQuery function is running to ask
the server once a second if the chat session has been updated. Overall, it is a lot of the
client asking the server to send over any changes that exist.
Messaging
Unlike with chatting, users can send a message to any other user. For user A to send a
message to user B, he/she simply goes to the message center tab and clicks compose
message. He then lls out the form as shown in the gure below with the email of the
recipient, the message title, and the message content. The new message will then be in
User Bs inbox in the message center.
Messaging is implemented by storing a record of the message in the server. First a
message object is constructed that takes in the to and from accounts, the message body,
Department of Computer Science, Christ University
13
and the date it was sent. The message body is retrieved from a user submitted form, the
from account is retrieved from the user session, and the receiver account is retrieved from
the recipient email address. The receiver account is validated, to ensure the sender didnt
try to send a message to a non-existent receiver. Finally, the new message is stored in the
server. Retrieving messages sent to the user is a simple method of querying the server for
any messages that have been sent to the user, and this is done by checking the receiver id
of each message against the account id of the user. Any matches are returned to the inbox
of the user as shown in the gure below.
Events
In addition to messaging your friends, social networking sites are a great place to alert
your friends of important upcoming events. For example, if a user is throwing a birthday
party, he/she could create an event an invite friends he/she wants to attend or simply
make it a public for anyone. The process of creating an event is as simple as lling out a
form which looks like this.
After lling out the form, the user will be brought to the standard conrmation page.
He/she can then view the new event by clicking on the Events tab and clicking on the
new event. If the user wishes to edit some information about the event, he/she can click
on the edit link next to the event where a similar form to creating an event will be
displayed with all the elds populated with the current event information.
Storing the event is a fairly straightforward process. Once the form data is submitted, a
new Event object is created storing the Account that created the event as well as all the
information sent along with the form. That new event is then sent to the server, which
creates a database query and stores the elds of the event object into equivalent elds of
the event database table. Retrieving events is also a fairly straightforward process. A
MySQL query is called to pull the contents of the event into an array, and that array is
used to instantiate a new working copy of the event in an Event object.
14
Media Uploading
As people use their social networking account, they will want to be able to upload funny
or interesting images, video, music, etc., to share with their friends. The media upload
section will be located at the media tab, where users are able to specify a le to upload as
well as provide a short description of the le to be uploaded. In order to prevent users
from uploading potentially malicious les such as executables, only certain le
extensions are supported. These allowed extensions cover popular image extensions such
as png, jpg, gif, and bitmap, video extensions wmv and avi, audio extensions mp3, wma,
and wav, and some document les including txt, rtf, doc, and pdf.
The inner workings of this uploading process are surprisingly simple, since the HTTP
server takes care of requesting the le from the client automatically. After the user clicks
upload, the le is sent to the server and stored in a temporary location. Through PHP all
information about these temporary les can be accessed through the $ FILES variable.
The temporary location is stored in that variable and can be used to pull the le name and
le extension.[1] That extension is then checked against an array of allowed extensions.
If the extension is in the list, the le is then moved to a permanent location in the media
folder under a subfolder for the users account. If the extension is not on the list, it is left
in the temporary folder where it will be automatically deleted by the server once the php
script completes.
Other features
All the other features, such as the wall pages, and notes are fairly similar. Their main
purpose is to add additional places to have places for additional content. All are created
using similar methods, and are stored similarly but are used for dierent purposes.
1. Wall
The wall is a place where the account owner can express his current feeling or thoughts
with a wall status. Other users can add their thoughts by creating wall posts that show up
below the status. It is basically a way for many users to communicate publicly or simply
leave their thoughts about each other
Department of Computer Science, Christ University
15
2. Notes
Notes are very similar to wall posts with one major exception. Unlike wall posts which
can be created by anyone, only the account owner can create notes. Its main purpose if
for the account owner to create reminders for him/herself, or create announcements for
any other users to see.
2.3 Non-Functional Specification
Secure access of confidential data by user name and password. This application is
secure for every kind of its users, because if any user logout from any session then
nobody will be able to access his profile without knowing his confidential
password.
24 X 7 availability
The database used here is robust, reliable & fast. So users will have to wait for the
output very short time.
There is no case of redundancy in the database so it will not take extra memory
space.
Username & password are sent to the users via email after registration.
16
MySQL
MySQL is a popular choice of database for use in web applications, and is a central
component of the widely used LAMP open source web application software stack (and
other 'AMP' stacks).
LAMP
is
an
acronym
for
"Linux, Apache,
MySQL, Perl/PHP/Python." Free-software-open source projects that require a fullfeatured database management system often use MySQL.
MySQL can be built and installed manually from source code, but this can be tedious so
it is more commonly installed from a binary package unless special customizations are
required. On most Linux distributions the package management system can download
and install MySQL with minimal effort, though further configuration is often required to
adjust security and optimization settings.
Though MySQL began as a low-end alternative to more powerful proprietary databases,
it has gradually evolved to support higher-scale needs as well. It is still most commonly
used in small to medium scale single-server deployments, either as a component in
a LAMP-based web application or as a standalone database server. Much of MySQL's
appeal originates in its relative simplicity and ease of use, which is enabled by an
ecosystem of open source tools such as phpMyAdmin. In the medium range, MySQL can
be scaled by deploying it on more powerful hardware, such as a multi-processor server
with gigabytes of memory.
There are however limits to how far performance can scale on a single server ('scaling
up'), so on larger scales, multi-server MySQL ('scaling out') deployments are required to
provide improved performance and reliability. A typical high-end configuration can
include a powerful master database which handles data write operations and
is replicated to multiple slaves that handle all read operations. The master server
synchronizes continually with its slaves so in the event of failure a slave can be promoted
to become the new master, minimizing downtime. Further improvements in performance
can be achieved by caching the results from database queries in memory
using memcached, or breaking down a database into smaller chunks called shards which
can be spread across a number of distributed server clusters.
17
Language: PHP
PHP is a scripting language designed to fill the gap between SSI (Server Side Includes)
and Perl, intended for the web environment. Its principal application is the
implementation of web pages having dynamic content. PHP has gained quite a following
in recent times, and it is one of the frontrunners in the Open Source software movement.
Its popularity derives from its C-like syntax, and its simplicity. PHP is currently divided
into two major versions: PHP 4 and PHP 5, although PHP 4 is deprecated and is no longer
developed or supplied with critical bug fixes. PHP 6 is currently under development.
PHP was designed by Rasmus Lerdorf to display his resume online and to collect data
from his visitors.
PHP allows a static webpage to become dynamic. "PHP" is an acronym that stands for
"PHP: Hypertext Preprocessor". The word "Preprocessor" means that PHP makes
changes before the HTML page is created. This enables developers to create powerful
applications which can publish a blog, remotely control hardware, or run a powerful
website such as Wikipedia or Wikibooks. Of course, to accomplish something such as
this, you need a database application such as MySQL.
PHP code is interpreted by a web server with a PHP processor module, which generates
the resulting web page: PHP commands can be embedded directly into an HTML source
document rather than calling an external file to process data. It has also evolved to
include a interface capability and can be used in standalone graphical applications.
The PHP language was originally implemented as an interpreter, and this is still the most
popular implementation. Several compilers have been developed which decouple the PHP
language from the interpreter. Advantages of compilation include better execution speed,
static analysis, and improved interoperability with code written in other languages.
PHP includes free and open source libraries with the core build. PHP is a
fundamentally Internet-aware system with modules built in for accessing File Transfer
Protocol (FTP) servers, many database servers, embedded SQL libraries such as
embedded PostgreSQL, MySQL, Microsoft SQL Server and SQLite, LDAP servers, and
18
others. Many functions familiar to C programmers such as those in the studio family are
available in the standard PHP build.
Web interface
Export data to various formats: CSV, SQL, XML, PDF (via the TCPDF library),
ISO/IEC
26300
Open
Document
Text
and
Spreadsheet,
Word,
Transforming stored data into any format using a set of predefined functions, like
displaying BLOB-data as image or download-link
19
RAM
Hard disk
Monitor
Keyboard
Normal or Multimedia
Mouse
Compatible mouse
Front End
LAMP
Language
PHP
Back End
PHP MyAdmin
Operation System
Windows XP or above
Browser
3 Design Specifications
3.1 Modular Design
The application comprises the following major modules:
Register to be a member Module
Department of Computer Science, Christ University
20
This module provides functionalities for those people who wants to open an account.
Applicants can post their views with personal and professional details. They can also
update the profile as frequently as required. The member can also browse through the
friends profile available. Members can also get message alerts when their friends
message them.
Profile Module
This module provides functionalities related to members profile. Logged users can see
their details and if they wish to change any of their information they can edit it.
Admin Module
This module provides administrator related functionalities. Administrator manages entire
application and maintains the profiles of all the registered users and their activities.
21
22
payment processing, and customer relations. A use case diagram contains four
components. The boundary, which defines the system of interest in relation to the world
around it.
The actors, usually individuals involved with the system defined according to
their roles.
The use cases, which are the specific roles played by the actors within and around
the system.
The relationships between and among the actors and the use cases.
Login/Registration
<<include>>
Regester for login
<<include>>
Login
Validate user
User
<<include>>
Request for forgetted passward
<<include>>
23
Home Page
24
Wall Page
User
Reply to Message
Blog Page
25
Profile Page
Add friend
User
Write message on friends wall
26
Delete friends
Photo Page
User
27
0 Level DFD: A level 0 DFD, also called a fundamental system model or context
diagram represents the entire software element as a single bubble with input and
output data indicated by incoming and outgoing arrows, respectively.
UUuUUUUUU
USER
Response received
ADMIN
Login
Views Personal detail
Response received
Send Invitation
Views Mail Message
Detail
1 Level DFD:
Department of Computer Science, Christ University
28
This level of DFD provide more detailed structure. It provides a detailed view of
requirements and flow of data from 1 bubble to another.
29
The entity relationship model is a high level data model. It is based on a perception of
a real world that consists of a collection of basic objects, called entities, and of
relationship among these objects. It was developed to facilitate database design by
allowing specification of an enterprise schema, which represent the overall logical
structure of a database.
Entity: An entity is an object that has its existence in the real world. It includes all
those things about which data is collected. An entity may be a tangible object such as a
student, a place or a part. It may also be non-tangible such as an event, a job title or a
customer account. For example, if we say that a customer buys goods, it means customer
and goods are entities.
Diagrammatically, entities are represented in rectangles.
An Entity Set: It is a set of entities of the same type that share the same properties, or
attributes. The set of all persons who are customers at a given bank, example, can be
defined as the entity set customer.
Attributes: Attributes are units that describe the characteristics or properties of entities.
In a database, entities are represented by tables and attributes by columns. For example,
a customer entity might have numerous attributes such as code, name and addresses.
Similarly, the goods entity may have attributes like code and price. They are drawn in
elliptical shapes along with the entity rectangles.
The entity relationship diagram of mailing system is drawn on the next page:
30
3.2.4 Database
Department of Computer Science, Christ University
31
Data base is used to store the relevant information of the individuals. A database is a
collection of rows and columns in which rows indicates the tuple and column indicates
the domain of table. Database design is the process of producing a detailed data model of
a database. This logical data model contains all the needed logical and physical design
choices and physical storage parameters. Need to generate a design in a data definition
language, which can then be used to create a database. A fully attributed data model
contains detailed attributes for each entity. The term database design can be used to
describe many different parts of the design of an overall database system. Principally, and
most correctly, it can be thought of the logical design of the relation of the base data
structures used to store the data. In the relational model these are the classes and named
relationships. However, the term database design could also be used to apply to overall
process of designing, not just the base data structure, but also the forms and queries used
as part of the overall database application within the database management system
(DBMS).
32
Column
Type
Null Default
comment_i
int(11)
d
No
comment
No
text
Comments
date_create varchar(50
No
d
)
member_id
varchar(30
No
)
Keyname
Type
Uniqu Packe
e
d
PRIMAR BTRE
Yes
Y
E
No
Column
comment_i
12
d
No
Colum
n
Type
Null Default
day_id
int(11)
No
day
int(2)
No
Comments
Keyname
No
day_id
31
No
33
Table 3.5 Friends
Column
Type
Null Default
member_id int(11)
No
datetime
datetime
No
status
varchar(11
No
)
friends_wit
int(11)
h
Comments
No
Column
Type
Null Default
like_id
int(11)
No
remarks
text
No
Comments
remarksb varchar(30
No
y
)
Table 3.7 Indexes
Keyname
No
like_id
Column
Type
member_id int(11)
Null Default
No
UserName varchar(10) No
Password
varchar(80) No
FirstName varchar(30) No
Comments
No
34
LastName varchar(30) No
Address
varchar(200
No
)
ContactNo varchar(14) No
Url
varchar(100
No
)
Birthdate
varchar(20) No
Gender
varchar(6)
No
DateAdded varchar(45) No
profImage
varchar(200
No
)
curcity
varchar(50) No
NULL
Interested
varchar(30) Yes
NULL
language
varchar(30) Yes
NULL
college
varchar(100
Yes
)
NULL
highschool
varchar(200
Yes
)
NULL
experience varchar(200
Yes
s
)
NULL
arts
text
Yes
NULL
aboutme
text
Yes
NULL
month
varchar(20) Yes
NULL
35
day
varchar(2)
Yes
NULL
year
varchar(4)
Yes
NULL
Stats
varchar(30) Yes
NULL
Table 3.9 Indexes
Keyname
Uniqu Packe
e
d
Type
PRIMAR BTRE
Yes
Y
E
No
Column
member_i
13
d
No
Column
Type
message_i
int(11)
d
Null Default
Comments
No
receiver
varchar(40) No
recipient
varchar(40) No
datetime
datetime
content
varchar(100
No
)
status
varchar(6)
No
No
Table 3.11 Indexes
Keyname
Type
Uniqu Packe
e
d
PRIMAR BTRE
Yes
Y
E
No
Column
message_i
0
d
No
36
Column
Type
Null Default
month_i
int(11)
d
month
Comments
No
varchar(15
No
)
Keyname
PRIMARY
Type
Uniqu Packe
Cardinalit Collatio Nul Commen
Column
e
d
y
n
l
t
BTRE
Yes
E
No
month_i
12
d
No
Column
Type
Null Default
photo_id
int(11)
location
varchar(200
No
)
member_i
int(11)
d
Comments
No
No
Column
comment_id
Type
int(11)
Null Default
No
Comments
content
text
37
No
commentedb
varchar(30) No
y
pic
varchar(100
No
)
Id
int(40)
No
date_created varchar(50) No
4 IMPLEMENTATION DETAILS
4.1 SAMPLE SOURCE CODE
4.1.1 Homepage
if ( ! defined( 'ABSPATH' ) )
exit;
/**
* WP_Job_Manager class.
*/
class WP_Job_Manager {
/**
* Constructor - get the plugin hooked in and ready
*/
public function __construct() {
// Define constants
define( 'JOB_MANAGER_VERSION', '1.7.3' );
define( 'JOB_MANAGER_PLUGIN_DIR',
untrailingslashit( plugin_dir_path( __FILE__ ) ) );
define( 'JOB_MANAGER_PLUGIN_URL', untrailingslashit( plugins_url(
basename( plugin_dir_path( __FILE__ ) ), basename( __FILE__ ) ) ) );
// Includes
include( 'wp-job-manager-functions.php' );
include( 'wp-job-manager-template.php' );
include( 'includes/class-wp-job-manager-post-types.php' );
include( 'includes/class-wp-job-manager-ajax.php' );
Department of Computer Science, Christ University
38
include( 'includes/class-wp-job-manager-shortcodes.php' );
include( 'includes/class-wp-job-manager-api.php' );
include( 'includes/class-wp-job-manager-forms.php' );
include( 'includes/class-wp-job-manager-geocode.php' );
if ( is_admin() )
include( 'includes/admin/class-wp-job-manager-admin.php' );
// Init classes
$this->forms
= new WP_Job_Manager_Forms();
$this->post_types = new WP_Job_Manager_Post_Types();
// Activation - works with symlinks
register_activation_hook( basename( dirname( __FILE__ ) ) . '/' .
basename( __FILE__ ), array( $this->post_types, 'register_post_types' ), 10 );
register_activation_hook( basename( dirname( __FILE__ ) ) . '/' .
basename( __FILE__ ), create_function( "", "include_once( 'includes/class-wp-jobmanager-install.php' );" ), 10 );
register_activation_hook( basename( dirname( __FILE__ ) ) . '/' .
basename( __FILE__ ), 'flush_rewrite_rules', 15 );
// Actions
add_action( 'plugins_loaded', array( $this, 'load_plugin_textdomain' ) );
add_action( 'switch_theme', array( $this->post_types, 'register_post_types'
), 10 );
add_action( 'switch_theme', 'flush_rewrite_rules', 15 );
add_action( 'widgets_init', create_function( "",
"include_once( 'includes/class-wp-job-manager-widgets.php' );" ) );
add_action( 'wp_enqueue_scripts', array( $this, 'frontend_scripts' ) );
add_action( 'admin_init', array( $this, 'updater' ) );
}
/**
* Handle Updates
*/
public function updater() {
if ( version_compare( JOB_MANAGER_VERSION,
get_option( 'wp_job_manager_version' ), '>' ) )
include_once( 'includes/class-wp-job-manager-install.php' );
}
/**
* Localisation
*/
public function load_plugin_textdomain() {
39
40
41
%20(Job%20Manager)&item_number=Support%20Open
%20Source&no_shipping=0&no_note=1&tax=0¤cy_code=USD&lc=US&bn=PP
%2dDonationsBF&charset=UTF%2d8">' . __( 'Donate with PayPal', 'jobman' ) . '</a>';
}
return $links;
}
function jobman_admin_print_styles() {
global $wp_styles;
wp_enqueue_style( 'jobman-admin', JOBMAN_URL . '/css/admin.css', false,
JOBMAN_VERSION, 'all' );
wp_enqueue_style( 'jobman-admin-ie7', JOBMAN_URL . '/css/admin-ie7.css',
false, JOBMAN_VERSION, 'all' );
wp_enqueue_style( 'jobman-admin-print', JOBMAN_URL . '/css/admin-print.css',
false, JOBMAN_VERSION, 'print' );
wp_enqueue_style( 'jobman-admin-print-ie7', JOBMAN_URL . '/css/admin-printie7.css', false, JOBMAN_VERSION, 'print' );
wp_enqueue_style( 'dashboard' );
$wp_styles->add_data( 'jobman-admin-print-ie7', 'conditional', 'lte IE 7' );
$wp_styles->add_data( 'jobman-admin-ie7', 'conditional', 'lte IE 7' );
}
function jobman_admin_print_scripts() {
wp_enqueue_script( 'jobman-admin', JOBMAN_URL . '/js/admin.js', false,
JOBMAN_VERSION );
wp_deregister_script( 'jquery-ui-datepicker' );
wp_enqueue_script( 'jquery-ui' );
wp_enqueue_script( 'jquery-ui-datepicker', JOBMAN_URL . '/js/jquery-uidatepicker.js', false, JOBMAN_VERSION );
wp_enqueue_script( 'dashboard' );
}
function jobman_admin_header() {
global $wp_version;
$options = get_option( 'jobman_options' );
$textareas = array();
foreach( $options['job_fields'] as $id => $field ) {
if( 'textarea' == $field['type'] ) {
$textareas[] = $id;
}
}
?>
<script type="text/javascript">
Department of Computer Science, Christ University
42
//<![CDATA[
addLoadEvent(function() {
jQuery(".datepicker").datepicker({
dateFormat: 'yy-mm-dd',
changeMonth: true,
changeYear: true,
gotoCurrent: true,
showOn: 'button',
buttonImage: '<?php echo
JOBMAN_URL ?>/images/calendar.gif',
buttonImageOnly: true
});
jQuery(".column-cb > *").click(function() { jQuery(".check-column >
*").attr('checked', jQuery(this).is(':checked')) } );
jQuery("div.star-holder img").click(function() {
var cssclass = jQuery(this).parent().attr("class");
var count = cssclass.replace("star star", "");
jQuery(this).parent().parent().find('input[name="jobmanrating"]').attr("value", count);
jQuery(this).parent().parent().find("div.star-rating").css("width", (count *
19) + "px");
var data = jQuery(this).parent().parent().find('input[name="callbackid"]');
var func = jQuery(this).parent().parent().find('input[name="callbackfunction"]');
var callback;
if( data.length > 0 ) {
callback = {
action: func[0].value,
appid: data[0].value,
rating: count
};
jQuery.post( ajaxurl, callback );
}
});
jQuery("div.star-holder img").mouseenter(function() {
var cssclass = jQuery(this).parent().attr("class");
var count = cssclass.replace("star star", "");
jQuery(this).parent().parent().find("div.star-rating").css("width", (count *
19) + "px");
});
jQuery("div.star-holder img").mouseleave(function() {
var count = jQuery(this).parent().parent().find('input[name="jobmanrating"]').attr("value");
Department of Computer Science, Christ University
43
jQuery(this).parent().parent().find("div.star-rating").css("width", (count *
19) + "px");
});
}
<?php
}
?>
});
function jobman_reset_rating( id, func ) {
jQuery( "#jobman-rating-" + id ).attr("value", 0);
jQuery( "#jobman-star-rating-" + id ).css("width", "0px");
if( "filter" != id ) {
callback = {
action: func,
appid: id,
rating: 0
};
jQuery.post( ajaxurl, callback );
}
}
//]]>
</script>
<?php
}
function jobman_print_settings_tabs() {
$tabs = array(
'admin' => __( 'Admin Settings', 'jobman' ),
'display' => __('Display Settings', 'jobman'),
'appform' => __('App. Form Settings', 'jobman'),
'jobform' => __('Job Form Settings', 'jobman'),
);
if( ! array_key_exists( 'tab', $_REQUEST ) )
$_REQUEST['tab'] = 'admin';
?>
<h2 class="jobman-tabs">
<?php
foreach( $tabs as $key => $title ) {
$class = '';
if( $key != $_REQUEST['tab'] )
$class = ' menu-tab-inactive';
echo "<a href='" . admin_url( "admin.php?page=jobmanconf&tab=$key" ) . "' class='menu-tabs$class'>$title</a>";
Department of Computer Science, Christ University
44
}
?>
</h2>
<?php
}
function jobman_print_other_projects_box() {
?>
<a href="http://ponyedit.com/?
utm_source=jobman&utm_medium=banner&utm_campaign=Job
%2BManager"><strong>PonyEdit</strong></a>
<p><?php _e( 'If you like Job Manager and WordPress, but hate working
on remote servers, you\'ll want to check out PonyEdit - a fast new text editor that plays
nicely with the cloud!', 'jobman' ) ?></p>
<?php
}
function jobman_print_donate_box() {
?>
<p><?php _e( "If this plugin helps you find that perfect new employee, I'd
appreciate it if you shared the love, by way of my Donate or Amazon Wish List links
below.", 'jobman' ) ?></p>
<ul>
<li><a
href="http://www.amazon.com/wishlist/1ORKI9ZG875BL"><?php _e( 'My Amazon
Wish List', 'jobman' ) ?></a></li>
<li><a href="https://www.paypal.com/cgi-bin/webscr?
cmd=_donations&business=gary%40pento%2enet&item_name=WordPress%20Plugin
%20(Job%20Manager)&item_number=Support%20Open
%20Source&no_shipping=0&no_note=1&tax=0¤cy_code=USD&lc=US&bn=PP
%2dDonationsBF&charset=UTF%2d8"><?php _e( 'Donate with PayPal', 'jobman' ) ?
></a></li>
</ul>
<?php
}
function jobman_print_about_box() {
?>
<ul>
<li><a href="http://pento.net/"><?php _e( "Gary Pendergast's
Blog", 'jobman' ) ?></a></li>
<li><a href="http://twitter.com/garypendergast"><?php
_e( 'Follow me on Twitter!', 'jobman' ) ?></a></li>
<li><a href="http://pento.net/projects/wordpress-job-managerplugin/"><?php _e( 'Plugin Homepage', 'jobman' ) ?></a></li>
45
4.1.3 Registration
46
47
update_option( 'register_plus_redux_last_activated',
RPR_ACTIVATION_REQUIRED );
}
public static /*.void.*/ function rpr_uninstall() {
global $wp_roles;
remove_role( 'rpr_unverified' );
delete_option( 'register_plus_redux_last_activated' );
}
public static /*.mixed.*/ function default_options( $option = '' )
{
$blogname =
stripslashes( wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES ) );
$options = array(
'verify_user_email' => is_multisite() ? '1' : '0',
'message_verify_user_email' => is_multisite() ?
__( "<h2>%user_login% is your new
username</h2>\n<p>But, before you can start using your new username, <strong>you
must activate it</strong></p>\n<p>Check your inbox at <strong>%user_email
%</strong> and click the link given.</p>\n<p>If you do not activate your username
within two days, you will have to sign up again.</p>", 'register-plus-redux' ) :
__( 'Please verify your account using the
verification link sent to your email address.', 'register-plus-redux' ),
'verify_user_admin' => '0',
'message_verify_user_admin' => __( 'Your account will be
reviewed by an administrator and you will be notified when it is activated.', 'register-plusredux' ),
'delete_unverified_users_after' => is_multisite() ? 0 : 7,
'autologin_user' => '0',
'username_is_email' => '0',
'double_check_email' => '0',
'user_set_password' => '0',
'min_password_length' => 6,
'disable_password_confirmation' => '0',
'show_password_meter' => '0',
'message_empty_password' => 'Strength Indicator',
'message_short_password' => 'Too Short',
'message_bad_password' => 'Bad Password',
'message_good_password' => 'Good Password',
'message_strong_password' => 'Strong Password',
'message_mismatch_password' => 'Password Mismatch',
'enable_invitation_code' => '0',
'require_invitation_code' => '0',
'invitation_code_case_sensitive' => '0',
Department of Computer Science, Christ University
48
49
50
/**
* Constants
*/
define('VERSION', '1.1.2-c');
define('JP_PLUGIN_DIR', ABSPATH . 'wp-content/plugins/wpcareers');
define('JP_PLUGIN_URL', plugins_url('wpcareers'));
/**
* @brief Autoload files.
*/
require_once(dirname(__FILE__) . '/include/jp_functions.php');
require_once(dirname(__FILE__) . '/include/jp_securimage.php');
require_once(dirname(__FILE__) . '/include/jp_GADlink.php');
require_once(dirname(__FILE__) . '/admin/jp_admin_posts.php');
require_once(dirname(__FILE__) . '/admin/jp_admin.php');
Department of Computer Science, Christ University
51
require_once(dirname(__FILE__) . '/admin/jp_admin_setup.php');
require_once(dirname(__FILE__) . '/admin/jp_admin_structure.php');
require_once(dirname(__FILE__) . '/admin/jp_admin_utilities.php');
require_once(dirname(__FILE__) . '/jp_post_job.php');
require_once(dirname(__FILE__) . '/jp_post_resume.php');
require_once(dirname(__FILE__) . '/jp_list_job.php');
require_once(dirname(__FILE__) . '/jp_list_resume.php');
require_once(dirname(__FILE__) . '/jp_list_category.php');
require_once(dirname(__FILE__) . '/jp_list_resume.php');
require_once(dirname(__FILE__) . '/jp_search.php');
require_once(dirname(__FILE__) . '/jp_main.php');
require_once(dirname(__FILE__) . '/jp_view_job.php');
require_once(dirname(__FILE__) . '/jp_view_resume.php');
/**
* get_language() - Get HTTP header accept languages
*/
$locale = get_locale();
if(!empty($locale)) {
$lng = preg_split ('/_/', $locale );
$languageFile = JP_PLUGIN_DIR . '/language/lang_'. $lng[0] . '.php';
}
if (!empty($languageFile) && file_exists($languageFile)) {
require_once($languageFile);
} else {
require_once(JP_PLUGIN_DIR . '/language/lang_en.php');
}
function jp_rm_generator_filter() { return ''; }
/**
* Initialize the plugin
*/
add_action('plugins_loaded', create_function('$a', 'global $wpcareers; $wpcareers = new
WP_careers();'));
add_filter('the_content', 'wpcareers_page_handle_content');
add_filter('the_title', 'wpcareers_page_handle_title');
add_filter('wp_list_pages', 'wpcareers_page_handle_titlechange');
add_filter('single_post_title', 'wpcareers_page_handle_pagetitle');
add_filter('query_vars', 'wpcareers_query_vars');
add_filter('the_generator', 'jp_rm_generator_filter');
/**
* Assigns each respective variable.
*/
date_default_timezone_set('UTC'); // php5.1
if (!isset($_GET)) $_GET = $HTTP_GET_VARS;
Department of Computer Science, Christ University
52
4.2 SCREENSHOTS
53
fig4.2 Homepage
54
55
5. TESTING
System Testing
System testing is a critical element of quality assurance and represents the
ultimate review of analysis, design and coding. Test case design focuses on a set of
techniques for the creation of test because that meet overall testing objective. When a
system is developed it is hoped that it performs properly. The main purpose of testing an
information system is to find the errors and correct them. The scope of system testing
should include both manual and computerized operations. System testing is
comprehensive evaluation of the programs, manual procedures, computer operations and
controls.
System testing is the process of checking whether the developed system is
working according to the objective and requirement. All testing is to be conducted in
accordance to the test conditions specified earlier. This will ensure that the test coverage
meets the requirements and that testing is done in a systematic manner.
Department of Computer Science, Christ University
56
The process of analyzing the software item to detect the differences between existing or
required condition and evaluate the features of the software items. The thorough testing
of the system before release of the software needs to be done vide the various test cases
and modes so that the software becomes devoid of bugs and uses minimum space
requirements as well as minimum time to perform. The test cases were selected
beforehand with expected results defined and actual results recorded for comparison. The
selection of test cases is done vide White Box Testing technique to check the
internal programming logic and efficiency and vide Black Box Testing technique to
check software requirement fulfillment with intension of finding maximum number of
errors with minimum effort and time. Although test cases are a design by considering the
cyclomatic complexity, conditional test, still the software code is not in its optional form,
as all other possible alternative parts in the software are not considered. At the
integration level, the software will be passing to the third party tests which would further
enhance the software optimality and efficiency.
are
achieved only when the concerned software fulfils the tests as per
t h e respective testing norms predefined in them vide the various test cases
and parameters using the CASE topologies. Generally, software is tested both on
a stand-alone mode as well after integrating all the modules in the system vide
deferent available testing methods/norms.
The following Flow Graph methodology was used while testing the software:
57
58
59
Here each circle represents one or more non branching procedural language or source
code s t a t e m e n t s i n F l o w G r a p h . W h i l e p e r f o r m i n g C o n d i t i o n
T e s t i n g D o m a i n T e s t i n g methodology was selected. While performing
Loop Testing simple loops, concatenated loops, nested and unstructured loops
were tested thoroughly.
TEST CHARACTERS :
The method of Black Box Testing is used by the software engineer to derive the required
results of the test cases:
1.Black Box Testing alludes to test that are conducted at the software
interface.
2.A Black Box Test examines some fundamental aspect of a system with
little regard for the internal logic structure of the software.
3.A limited number of important logical paths can be selected and exercised.
4.Important data structure can be probed for validity.
Black box testing was performed to find errors in the following categories:
60
File error.
Pointer error.
Memory access error.
Variable error .
Performance error
WHITE BOX TESTING:
White Box Testing is somet imes called Glass Box Testing. Using Whit e Box
Testing methods the software engineer can derive the following test cases:
1.Guarantee that all independen t paths within a module have been
e x e r c i s e d a t l e a s t once.
2.Exercise all logical decisions on their true and false sides.
3.Execute all loops at their boundaries and within their operational bounds.
4.Exercise internal data structures to ensure the validity.50
61
62
In White Box Testing efforts were made to handle the following: Number of input parameters equal to number of arguments.
Parameters and arguments attributes match.
Number of arguments transmitted is called modules equal
t o a t t r i b u t e s o f parameters..
U n i t s y s t e m o f a r g u m e n t t r a n s m i t t e d i s c a l l e d m o d u l e s e q u a l u n i t
s y s t e m o f parameter.
Number of attributes and order of arguments to build in functions correct.
Any references to parameters not associated to build in functions correct.
Input only arguments altered.
Global variable definition consistent across module.
Files attributes correct.
Format specifications matches I/O specification.
Files opened before use.
File closed while working is going on.
I/O errors handled.
Any textual errors in output information.
UNIT TESTING:
The unit testing is performed to test the validity of the individual units. This is done in the
coding phase with the interactive testing. Thus it itself constitutes a majority of
functionality test for each logical unit.
INTEGRITY TESTING:
63
64
65
VALIDATIONTESTING :
T es t s w e r e p e r f o r m e d t o f i n d c o n f o r m i t y w i t h t h e r e q u i r e m e n t s .
Plans
and p r o c e d u r e s
were
designed
to
ensure
that
all
that
the
program
specifications
are
understood
c o m p l e t e l y. Secondly, the test plan is used during program testing to prove the
correctness of the program.
Input Values
Test case
Result
Empty
Successfu
l
Already
Exists or
not
Successfu
l
Password
Empty
Successfu
l
Password
If wrong
Password
Enter Password
Successfu
l
Password
Length
Successfu
l
No
66
Registration:
Sl
Test case
Result
No
Input
Values
1.
First Name
Empty
Successfu
l
Last Name
Empty
Successfu
l
Empty
Successfu
l
Password
Empty
Successfu
l
Password
Length
Minimum 8 characters
required
Successfu
l
Confirm
Password
Empty
Successfu
l
Date Of
Birth
Select
Successfu
l
Edit Profile:
Sl
Test case
Result
No
Input
Values
1.
First Name
Null
Successfu
l
Last Name
Empty
Successfu
l
67
City
Empty
Successfu
l
State
Empty
Successfu
l
Pin code
Empty
Successfu
l
Country
SELECT
Successfu
l
High School
Empty
Successfu
l
College
SELECT
Successfu
l
Course
Empty
Successfu
l
Photos:
Sl
Result
1.
Image Title
Null
Successful
Add Image
BROWSE
Successful
Delete Image
Select
Successful
No
68
6. CONCLUSION
While developing the system a conscious effort has been made to create and
develop a software package, making use of available tools, techniques and
resources that would generate a proper system for ONLINE SOCIAL
NETWORKING.
While making the system, an eye has been kept on making it as user-friendly. As
such one may hope that the system will be acceptable to any user and will
adequately meet his/her needs. As in case of any system development process
where there are a number of short comings, there have been some shortcomings
in the development of this system also.
There are some of the areas of improvement which couldnt be implemented due
to time constraints. One such feature was online chat where members can chat
with his friends through this website. I also couldn't implement the scrap book
and the selling item page for now but we still have two months of internship left
in the company so defiantly we will do it in coming months.
69
7 .REFERENCES
[1] Prof Mishra. Social networking sites effect 14 Jan.2014
<http://articles.timesofindia.indiatimes.com/2013-0623/india/40146190_1.html>
[2] Upender Singh , Popularity of SNSs among Indian Non-IT
Students.12Jan.2014. 29 Feb. 2014
< http://ijeit.com/vol%202/Issue%207/IJEIT1412201301_32.pdf>
[3] Indira Jain Social networking trends New Delhi: The Times Of India
[4] Matas, Alina, SNSs becomes an on-line opportunity for employers and
students, The Washington Post, Nov. 7, 1993, pg. H2
[5] Building a Career Path, The Washington Post, Jan. 19, 1998, pg. F05
[6] 16 Jan 2014.28 Jan.2014.
<http://en.wikipedia.org/wiki/SNSs_website>.
[7] 02 Feb.2014.21 Feb.2014.
<http://www.medianama.com/2010/07/223-SNSs-in-india-the-make-of-findinga-dream/ >.