Archive

Archive for the ‘software development’ Category

2014 – FIRST PLUGIN ” WP Property Sale/Rent “

January 4, 2014 3 comments

WP Property Sale/Rent for creating and managing real estate agents and people who are willing to list their property. https://selvabalaji.wordpress.com

Great options to list properties on your own WordPress website. WP Property Sale/Rent for creating and managing highly real estate agents and people who are willing to list their property listing on their own WordPress site.

http://wordpress.org/plugins/wp-sale-property/

WP Property Sale/Rent is the WordPress plugin for creating and managing highly customization real estate, property management, and completely custom listings showcase websites. Turn your WordPress powered site into a real estate site. Create listings, upload images, display a dynamic map, slideshow, agent information,Google Maps, Send A Inquiry to agents Directly, Image slide show, and much more.

As always, integration is seamless, the system is expandable and customization, functionality is rich, and we are here to support it.

Capture

If you are looking to build a site where you can list property for sale or rent, this is the plugin you need.

Features

  1. Add Property
  2. Add multiple property photos
  3. Advanced property search
  4. jQuery slider in property detailed view
  5. property options so you can add any type of property listing
  6. multiple categories
  7. Property search widget.
  8. Advanced search widget and custom page.
  9. Custom property listing page
  10. Custom manage-able property types
  11. Manage the number of property listing per page

Advanced property search page

  1. Create a normal page in your wordpress website
  2. Editor of the page, add this short code [PROPERTY_ADVANCED_SEARCH]

screenshot-8

screenshot-9

screenshot-10

screenshot-1

screenshot-2

screenshot-3

screenshot-4

screenshot-5

screenshot-6

screenshot-7

7 Reasons Why WordPress Made PHP Popular, not PHP Frameworks – PHP Classes blog

7 Reasons Why WordPress Made PHP Popular, not PHP Frameworks

1. WordPress is the Most Popular PHP Application

Counting the number of search results on several popular search sites may seem to be a way to measure the relative popularity of a technology, language, application or a product.

However, that way does not seem to be very reliable method. When a search site changes its algorithms, you may see changes in the results that really do not have to do so much changes in the popularity of those technologies.

A more reliable way to measure the relative popularity of a technology is to resort to Google Trends. This is a site that Google provides to show the evolution of the relative number of searches done by given keywords over time.

As you may see in the following Google Trends chart, WordPress is much more popular than other PHP applications like Joomla, Drupal, Magento (which is Zend Framework based).

Google Trends: WordPress, Joomla, Drupal, Magento, Zend Framework

Google Trends - WordPress, Joomla Drupal, Magento, Zend Framework

2. WordPress alone is much more popular than any PHP framework

Using Google Trends you can also compare the popularity of different PHP frameworks. If you compare the popularity of WordPress with Zend Framework, Symfony PHP and CakePHP, as you may see in the chart below, WordPress is much more popular than all these PHP Frameworks together.

Google Trends: WordPress, Zend Framework, Symfony PHP, CakePHP

Google Trends - WordPress, Zend Framework, Symfony PHP, CakePHP

3. WordPress does not use third-party PHP frameworks

WordPress has been using some third-party components but they are not really full-stack frameworks. This implies WordPress never needed a full-stack framework to be built. The use of such frameworks would hardly make a difference to its popularity.

4. Applications make technologies popular, not components

In the chart above you may  notice that Magento is much more popular than Zend Framework. Magento is built on Zend Framework. This seems to imply that what makes applications popular is whether they solve users problems, not the components that they are built on.

WordPress is also popular because it is useful to many users. When users need to host a WordPress installation they need to seek a PHP hosting service. So they know at least superficially what is PHP and that they need PHP hosting.

This means that WordPress helped making PHP even more popular. The more installations there are of WordPress, the more PHP becomes popular.

5. The Extensible WordPress plugin ecosystem

One of the most important reasons that made WordPress popular is the myriad of plugins that were developed to provide additional features.

There are WordPress plugins for practically everything, including those that can turn it into other applications besides being a blog system. There are plugins that can turn it into forums, e-commerce sites, trouble ticket systems, etc., anything.

If WordPress as blog application was already popular, it became even more popular as a platform that can be turned into any type of application.

6. Non-Programmers develop in PHP just because of WordPress

If you need a site that requires certain features that WordPress does not have, you can develop new plugins to extend WordPress further and taylor it to your needs.

Many of the WordPress users were not really programmers. They started programming because they needed to have features in WordPress for which there was no suitable plugin providing them.

This means that many non-programmers had to learn PHP to be able to develop new WordPress plugins. That helped making PHP more popular even among non-programmers.

7. Pragmatism is better than Purism

In sum I could say that WordPress and PHP in general became popular because they can be used to address practical needs of many users.

Neither WordPress nor PHP are examples of software projects that are technically beautiful, are consistent, always follow well-thought project plans and adopt praised design patterns.

But that does not matter. They were created by people with a very pragmatic sense. They were focused on solving real world needs.

As for many of the PHP frameworks, they seem to have been developed in a totally different planet. They are often developed by purist people that seem to be more concerned with the number of design patterns they employ in the framework components than with being pragmatic and solve real PHP application needs.

To make it worse, many PHP frameworks systematically adopt practices of other frameworks developed for other languages. That raises totally unnecessary difficulties for PHP developers that try to use them.

One example of this problem is the configuration formats. In the Java world it is still usual to use XML as format for storing configuration values. XML is a portable format that can be written by humans. It was certainly a progress when compared with binary formats used to serialize data structures by C++ applications in the past.

This was a fine solution in the year 2000 but the fact is that XML is a drag. You need to keep opening and closing tags for every value. Sometimes values are stored as tag attributes, other times as tag values. It is often a pain to use.

Then Ruby On Rails came with the promise to get rid of some of the pains of the Java world habits. Instead of using XML, they decided to use YAML, which is a simplified markup language. It is simpler than XML but it is yet another format that you need to learn.

Several PHP frameworks were built copying Ruby on Rails practices, including the use of YAML as configuration format. Many years have passed and they still used YAML.

If you are a PHP developer, the format you are most familiar with is PHP. Why don’t these PHP frameworks make the lives of PHP developers better and adopt PHP scripts as configuration formats? PHP scripts can even be cached and so be loaded much faster.

In the worst case, if you need to use a more portable format, why these PHP frameworks do not use the JSON format to store configuration values? JSON is JavaScript. Every PHP developer knows JavaScript. It is only natural to adopt JSON nowadays.

Unfortunately many PHP frameworks as still stuck with formats that are not a natural choice for PHP developers, like XML, YAML or even INI (a legacy format of the Windows world).

I always get this feeling that PHP frameworks are not meant to please PHP developers. They seem to have been thought to please Java or Ruby developers. To make it worse, many of the newer PHP frameworks keep copying the same mistakes of older frameworks.

Obviously there are exceptions. There are indeed some PHP frameworks that were developed in a more pragmatic way for PHP developers. You can easily learn them without having to learn about Java or Ruby frameworks first.

Unfortunately those seem to not be the PHP frameworks that get more visibility. Maybe it is time for the PHP framework developers rethink their approach and think more about the PHP developers than about developers of other languages.

Shall I develop My Sites with WordPress or with a PHP Framework?

One frequent dilemma that PHP developers have is whether they should develop sites on top of WordPress or develop them from scratch based on a existing PHP framework?

This is a tough call. If the site is a blog, it may be an obvious choice to create it based on WordPress and save lots of development time. If the site is more than a blog but there are plugins for the functionality you need, WordPress may still be the best option.

Now if your site is very different than a blog, the amount of code that you would reuse from WordPress would be much less when compared to the whole project size. In that case, it may be better to start the development of the site from scratch.

If you still need a blog, you can use WordPress in a separate domain or a separate directory of your site.

For the bulk of the functionality you need to develop, you can use a existing PHP framework to gain some development time, or use your own framework if you have a good capable framework to address your needs.

Personally I tend to go for the last option. I can have more control of my project, but I am well aware that this route can take me more time to develop and fix eventual bugs in the code.

Frameworks are good when they enforce a productive method

Despite of the problems described above that many PHP frameworks have, for some people adopting a framework is probably the best solution, especially if it is what is called a “opinionated framework”.

That is what are called frameworks that impose a certain development methodology. This means that there is only one way to develop applications with those frameworks.

The reason why this is a good solution for some developers is because they do not have a well defined development methodology. This means that they do not know how to start, how to progress and how to deploy an application, unless somebody tells them how to do it.

Since opinionated frameworks impose a certain development method, the developers learn how to develop their applications following the methodology imposed by the framework.

One example of opinionated framework is Ruby on Rails. PHP frameworks that are inspired in Ruby On Rails tend to be also opinionated.

Opinions are not Facts

Well this article is just about my opinion and my experience of as developer that has been creating software for several decades now.

But opinions are just that, points of view of specific people. Expressing an opinion does not mean it is the only way to interpret the facts.

Just like the Tiobe Index people expressed their opinion stating that PHP popularity growth was due to Zend Framework 2 release last year, other people may express a different interpretation of the facts.

What do you think? Do you have a different opinion about what was discussed in this article? Post a comment to tell what you think.

ONLINE MARKETING TIPS

June 26, 2013 13 comments

SEO-INTRODUCTION

Internet has become a powerful marketing source for the benefit of mankind. Many websites are available in the

internet, fulfilling various purposes. These websites need to be in the top rankings in the search engines to maintain

its popularity and to increase the volume of traffic to the site. Search Engine optimization (SEO) serves the above

purpose. If the pages of the website are optimized with high targeted key words, the rank of the site increases.

Higher the rank, higher is the amount of visitors to the site.

Maintenance of Ranks:

Search engine Optimization involves a number of techniques to increase the ranking and sales of the website

through search engines. Some of the points to be noted for Search engine optimization are,

Keywords: The web pages should be rich in content, communicative and item-specific. The web pages should

contain the highly specific keywords which are frequently searched by the users. This helps to increase the position

of the website in the search engine. For optimization purpose, the pages should be checked with keyword density

analyzers.

Link Popularity: The links in the website is marked factor which decides the ranking of the website. The number of

incoming links which conjoin to various files, directories, keywords and also to other sites is called as link

popularity.

Good Content: The content of the website should be periodically updated so that it becomes alive and effective. The

website should contain good content for the visitors to use it efficiently. Also, the content’s flow throughout the

page should be relevant. Thus clarity and relevancy are the key points to be noted for search engine optimization.

Pay Per Click: Another method of increasing the website’s popularity is pay per click advertisements. According to

this method, the website owner maintains an agreement with the search engine on a specific keyword. Every time

when a user clicks the keyword, the owner is supposed to pay a specific amount mentioned in the agreement. Thus

the ranking of the site is increased followed by good volume of traffic.

Accordant Title Tags: Relevant title tags and meta tags should be given to the web page for user convenience. The

title tags should be shorter in length with 6-8 words and should not be too critical to analyze. The description tag is

also required to describe briefly the content of the web page. Readability will also increase the number of visitors to

the site.

Web Design Factors: The factors involving web site design also affects the ranking of the website. Some of them are;

Frames: Certain search engines are not compatible using frames. For the website which uses frames, they should

also use NOFRAMES section in each page to avoid the above said backward compatibility of certain search

engines.

Better Indexing: Avoiding graphics in the web pages containing keywords will help in better indexing of the search

engines. If the html code is less, then the search engine can access it faster and easier. Search engines are not

comfortable with the pages which are more than 100 Kbps.

Things to be Avoided: Flash should be avoided in a web page since it takes more time to explain a single concept

and also to load. PDF s should be avoided since there is no summary of the concept in the HTML. This reduces the

ranking of the website. Frames also should be avoided.

It is better to create the website with the following guidelines rather than to alter it depending upon the

consequences. Thus, care should be taken to during creation and maintenance of the website to place it in the higher

position of the search engine.

BASIC SEO BASIC SEO STEPS

  • 1. Choose relevant keywords for your site: It must be ensured that keywords chosen reflect the site’s purpose and

    content. Keywords and phrases which your target audience searches for should be selected. There is no point in

    using keywords or key phrases which nobody searches for. Any site needs targeted traffic and thus make sure that

    only relevant audience which may benefit or buy products from your site visits. So choose your keywords wisely.

    There are various keyword research tools – both free and paid which may help you in selecting the best keywords for

    you.

  • 2. Keyword rich relevant content: A website should have excellent content reflecting the sites purpose and

    intentions. Care should be taken that keywords and phrases are not stuffed in the content. Keyword stuffing maybe

    construed as spamming by search engines.

  • 3. Proper use of Title tags: Any webpage should have title tag with the keywords that you have chosen. This is

    single most important aspect of search engine optimization.

  • 4. H1 tags with keywords for content titles: Content titles should have targeted keywords using H1 tags.
  • 5. Link optimization: Placing targeted keywords into the links is an important factor because search engine robots

    read the links as they crawl the webpage. Their algorithms understand the association between the anchor text and

    the page that has been linked.

  • 6. Image Optimization: A SEO Consultant must also ensure that images used in the website have descriptive,

    keyword-rich alternative attributes (alt) that are useful for visitors and search engines alike.

  • 7. Sitemap: Sitemap with text links to all the pages of a website is very important to ensure that search engines bots

    crawl every webpage.

  • 8. Directory structure: A SEO specialist should ensure that website should have a flat directory structure.
  • 9. A website should be listed in open directory. And as part of regular site SEO maintenance a site submitted to

    trusted, human-reviewed online directories.

  • 10. Meta tags: All the web pages in a site should have keyword-rich Meta descriptions. Though, their importance

    has decreased in last few years, using them appropriately is advisable.

BELOW, SOME HIGHLIGHTS (VIA SEARCH ENGINE LAND). BELOW, SOME HIGHLIGHTS (VIA SEARCH ENGINE LAND).

  • Rather than rankings and traffic, focus on conversions – that is, impact on revenue – as measures of success.
  • Calculate the ROI of our organic traffic as you would do for all other medium. Free organic traffic is
    possible, but investments are needed to attract masses and make changes to website, so you should invest
    resources, either with an agency or in-house people. Taking all the expenditure into account will give you
    an idea of how much profit you are getting from your organic traffic.
  • Keep in mind the possible downfalls of making your site focused on conversions. An often repeated truism
    in SEO circle is that content is all important when it comes to SEO. Yet there is a trade-off between content
    and usability or design; you should neglect neither. Including more content on the page should not hurt the
    conversions of the website.
  • Choose carefully and optimize SEO landing pages. Landing page optimization is as important in paid
    search campaigns as in organic SEO campaigns; both should be highly efficient in converting incoming
    traffic. A useful tool to test the success of SEO landing pages before you target them is Ad Words.
  • Optimize the snippet that appears on the search results page. This is the user’s first interaction with your
    website, and ultimately may determine the click through rate from visitors coming from search engines.
  • Use internal search to expand your keyword targeting on search engines and to give customers what they
    are looking for. Optimizing SEO by measuring the success of keywords bringing traffic to the website is
    great, but by doing that you lose a precious source of keywords your customers are typing in your website,
    i.e. your internal site search. This is what they are really looking for, and you should check if you are
    targeting those keywords.

PLEASE READ THIS CAREFULLY

  • URL Names – include relevant keywords – unique to each page.
  • Robots.txt – A file which permits or denies access to robots or crawlers to areas of your site.
  • Navigation Structure – Keep it simple.
  • Meta Tags – Title and Description. – Unique detail for each page, related to page content.
  • H1 Tags – Use for the short on page content description.
  • H2 and H3 Tags- Use for Headings for sub category’s within the Content
  • Page Content – Critical Component.
  • Keyword Visibility – Within page Content.
  • Image Alt Tags – Helps with Accessibility.
  • Privacy Policy – Assures trust and confidentiality.
  • The site should confirm to the W3C standards.
  • Create and submit sitemap’s – formatted in either .xml -.htm – .txt.
  • Create and submit RSS feeds to relevant feed directory’s
  • Create and submit Articles
  • Find relevant websites within the same market sector or niche and form a link partnership.
  • Submit your website to relevant or industry related directory’s.
  • A link exchange should be formed by utilising relevant keyword Anchor Text.
  • Utilise relevant Social Networks and Forums related to your Market Sector.
  • Utilise Blog sites relevant to your Market Sector.

SEO WORKS IN BRIEF:

  • Pre-optimization analysis of search engine readability, search engine saturation, domain name age and
    reputability

  • Keyword Effectiveness Index (KEI) research
  • Competitive analysis (includes SEO analysis of competitors’ websites and comparing their SEO features
    with yours) upon request
  • Site code enhancement (increasing keyword density, optimizing Meta tags, titles and other HTML elements
    such as alt-tags, etc)
  • URL optimization – making your urls search engine friendly
  • Manual submission to all major directories and search engines (if necessary)
  • XML and HTML sitemaps, robots.txt and robots Meta tags. Ensuring full website crawl ability and
    synchronization of website structure and content updates with major search engines upon request
  • Submission to Google Base, data feed updates, optimization upon request upon request
  • Local search marketing – submission to Google Local, Yahoo Local, Super pages, Yellow pages,
    CitySearch and more. Local search optimization. Upon request upon request upon request
  • Article submission, website reviews, blog advertising (blogvertising), and social book marking
  • Featured listings in hand-picked online directories upon request upon request upon request

ONLINE MARKETING

SEO STRATEGIES & SYSTEMATIC SEO

SEO = ON PAGE OPTIMIZATION + LINK BUILDING + QUALITY CONTENT &

SERVICES

SEO – INTRODUCTION
SEARCH ENGINE OPTIMIZATION
IMPROVES TRAFFIC / INCREASES VISITORS
OPTIMIZING OUR WEBSITE SEARCH ENGINE FRIENDLY
ZERO SEO
PRE-ANALYSIS REPORT
PROPMOTIONAL ARTICLES
PROFESSIONAL VIDEO
MAKE YOUR WEBSITE READY
KEEP YOUR KEYWORDS & TAGS READY
SEO – DAY 1
SITE SUBMISSION (Google, yahoo, bing, ask)
YMAIL & GMAIL
BLOGSPOT & WORDPRESS
TWITTER
SMS CHANNEL
GOOGLE SITE
LOCAL BUSINESS
SEO – WHILE IN PROGRESS
SEO UPDATIONS – LINK BUILDING + PROMOTIONAL EMAILS & SMS + OTHER
ONLINE CAMPAIGNS & SEO REPORT
SEO – SUCCESS SCORE
ANALYTICS
WEBMASTER
ALEXA
GRADER.COM
SEO ADD-ONS
BASIC SEO TIPS
TRY TO USE COMMON USER NAME
TRY TO USE COMMON EMAIL ADDRESS (COMPANY)
TRY TO USE COMMON PASSWORD (ALPHA-NUMERIC)
ON-PAGE OPTIMIZATION
CONTENT REVIEW
META TAG OPTIMIZATION
URL+CSS+FEED VALIDATION (w3 standards)
0FF-PAGE OPTIMIZATION
LINK BUILDING
OTHER ONLINE PROMOTIONAL CAMPAIGNS
LINK BUILDING – HAS NO LIMIT
ARTICLE SUBMISSION
POST CLASSIFIEDS
FORUM & GROUP DISCUSSION
Q & A WEBSITES
BLOGS & COMMENTS
EXCHANGE LINKS
PRESS RELEASE
SOCIAL BOOKMARKING
ADVERTISE ON ROI WEBSITES
IMPORTANT DIRECTORIES
INDEPTH SEO
RSS FEEDS
ROBOTS.TXT
WEBSITE OPTIMIZER
KEYWORD DENSITY
SEO TEAM
SEO TEAM HEAD
WEB DEVELOPER
CONTENT WRITER
SOCIAL BOOKMARKING
UPDATE WORKS
KEYWORD RESULTS
ONPAGE OPTIMIZATION
LINK BUILDING
CONTENT (KEYWORD DENSITY)
DOMAIN NAME
HITS/TRAFFIC
CONVERSION FORM
DOMAIN AGE
SEO FOOTNOTE STANDARDS
W3 STANDARDS
SEO ANGLE
STATIC & DYNAMIC SITES
CONTENT ORIENTED SITES
BUSSINESS – LEADS
APPLICATION ORIENTED
E-COMMERCE SITES
CLISSIFIEDS & REGULARLY UPDATING SITES
Back Up
Take a back up of your website.
Take a back up of your webmaster.
Take a back up of analytics.
Page Rank
Increase the number of pages.
Domain Age.
Freshness of the Content.
Inbound-Outbound Links.
Web Server & IP Address.
Speed & Load Time.
Domain Extension.

Website Visibility

On Page Optimization – SEO Basics

On page optimization is one of the very first step of SEO which every webmaster should look into.

CHAPTER: 1

OPTIMIZE THE TITLE AND META TAGS

Sample Title and Meta Tags Optimization

<title> googlecasestudy.com – get your free seo report </title>
<meta name="Description" content="get your free seo report from google case study, google case study, selvabalaji,
seo chennai" />
<meta name="Keywords" content="get your free seo report from google case study, google case study, selvabalaji,
seo chennai" />
<meta name="robots" content="index, follow" />
<meta name="revisit-after" content="7" />
<meta name="author" content="selvabalaji" />

Refer : http://www.searchenginejournal.com/on-page-optimization-a-complete-walkthrough/6746/

Facebook introduces video on Instagram

June 22, 2013 5 comments

BaltNEW YORK: Facebook is adding video to its popular photo-sharing app Instagram, following in the heels of Twitter’s growing video-sharing app, Vine.

Instagram co-founder Kevin Systrom said on Thursday that users will be able to record and share 15-second clips by tapping a video icon in the app. They can also apply filters to videos to add contrast, make them black and white or different hues.

“This is the same Instagram we all know and love but it moves,” he said at an event held at Facebook’s Menlo Park, California, headquarters.

Vine, which launched in January, has 13 million users and lets people create and share 6-second video clips. Instagram has 100 million users, up from 20 million when Facebook bought the company more than a year ago. If users like it, Facebook’s move could propel mobile video sharing into the mainstream.

To use the video feature, Instagram users can tap on the same camera icon they use to snap photos. A new video camera icon will appear on the right side. Tap it and a screen with a red video button will let you record clips of sunsets, kids running in parks or co-workers staring at their computer screens.

The app will record as long as your finger is on the red button or for 15 seconds, whichever comes first. Not unlike Vine, taking your finger off the button will stop the recording, allowing you to shoot the scene from a different angle or record something else altogether. Once you have 15 seconds of footage, you can play it from the beginning and post it on Instagram to share with others.

Given Vine’s popularity, “it is perhaps more surprising that Facebook has not introduced video for Instagram sooner. There is no doubt Twitter will move quickly to up the ante on Vine and this could undercut Facebook’s efforts with video on Instagram,” said Eden Zoller, principal consumer analyst at Ovum, a technology research firm.

Step-by-Step guide to Facebook Conversion Tracking

Step 1: Once you log in to your ‘Ads Manager’ tab, click on the Conversion Tracking button on the left side bar.

FB-1

Step 2: Then click on the ‘Create Conversion Pixel’ tab to begin the process.

FB-2

Step 3: You will be directed to this pop-up, which will ask you for a:

1. Name: An appropriate name will help you remember what you are tracking. (Example: Lead Generation – GATE Ad)

2. Category: This will help you decide the type of action that you want to track on your site. You can choose from the following:

1. Checkouts

2. Registrations

3. Leads

4. Key Page Views

5. Adds to Cart

6. Other Website Conversions

(For the purpose of this example, we have selected ‘Leads’).

FB-3

Step 4: You will be able to see a pop-up window with a JavaScript code. This is the code that you will have to add to the page where the conversion will happen. This will let you track the conversions back to ads which you are running on Facebook.

FB-4

The code should be placed on the page that a user will finally see when the transaction is complete.

Here is the tricky part. The code should not go on all pages. For that matter, it should not even go to the landing page of your product. The code should be placed on the page that a user will finally see when the transaction is complete.

For Example: If you want to track when students register for your GATE coaching, paste the code on the registration confirmation page/thank you page and not on the form that they need to submit.

How do you confirm that your conversion is working properly?

1. Check that the javascript snippet has been placed on the correct conversion page. Visit the page where the pixel has been embedded, right click and go to ‘View Page Source’ to find the pixel. The code should have the tag of the HTML. See image below.

FB-5

2. Check that Facebook is receiving the conversion events from your website. Go to the conversion tracking tab in your Ads Manager account. There you will see a list of the conversion tracking pixels that you have created. If the conversion tracking pixel has been successfully implemented and a conversion event has been recorded, it will be reflected in the Pixel Status column. If the status shows active, it means that the page which contains the pixel has been viewed by users. If it shows inactive, it means that over the last 24 hours, the page with the pixel has not been viewed.

FB-6

3.Later, when you  create your Facebook ad , you need to check the track conversions box under the campaign, pricing and schedule tab to enable tracking.

FB-7

How to create Facebook Ads in 8 Steps

June 6, 2013 3 comments

Like Facebook says it, “Over 1 billion people. We’ll help you reach the right ones.”

The ultimate goal for any marketer/business owner is to convert his leads into customers. However, for leads to convert, you need to get hold of them first, right? Running ads on social media biggie, Facebook is a time tested approach to grab attention and get more leads for your business.

There are multiple ways to run ads/promoted posts on Facebook. Today, I will discuss how to create Facebook ads in 8 simple steps. Let us take the example of a GATE coaching institute trying to capture student leads through Facebook. For those of you who don’t know, GATE stands for Graduate Aptitude Test in Engineering, and is an all India examination for Engineering in MSc, MTech and PhD programmes. (This article is relevant for Facebook beginners).FB-1

Here is how to create Facebook ads

Step 1 – Logging into Facebook

Log into your Facebook account using your personal or business profile and go to the ‘Advertise’ page. You will get this in the drop down menu next to the settings button on your home page.

FB-2

Step 2 – Start Creating Your Ad

You will be led to this page as shown below. Click on the “Create an Ad” tab to begin the process of creating an ad for Facebook.
FB-3

Step 3 – Select Facebook Page/Landing Page to Promote 

The words, ‘What do you want to advertise?’ in the next section are pretty much comprehensible. This is where you choose the place, page, app or event that you would like to promote. For example: Here we are advertising a page which is dedicated toward GATE coaching.You can also add your own URL or landing page. Check out how you can create a Facebook Landing Page for lead capture.
FB-3

Step 4 – Set the Ad Objective

Your next step is named, ‘What would you like to do?’ Here you can choose to:

  1. Get more page likes: Drive more Facebook users to your ad/page.
  2. Promote page posts: Promote a particular post out of all the posts that you have made on your page, ex. a blog post, picture etc. This will not only enhance your reach, but also your chances to be placed in news feeds – the center column of your home page.
  3. See advanced options: Drive traffic to your website. You can configure your advanced creative and pricing options. This is so intricate that you can also bid for the number of clicks on a particular post. (Remember, each category is different and offers different features to help you target your audience better.)

Since our main goal here is to collect leads and get better control over our ads, we will opt for the ‘See Advanced Options’. 

FB-5

Step 5 – Create the Ad copy 

You begin designing ‘Your ad’ here. FB ads are simple, comprising 25 character headline and a 90 character description. You can also add a thumbnail photograph measuring 100 pixels x 72 pixels here. Make sure to keep it very relevant for your audience. For instance, if you are a GATE institute, this would be a good ad copy:

Looking for Best Coaching for GATE? Join Now – 1 Week Free Trial Period!

You can then set the landing page of the ad. For instance, you can choose to land the visitors on your Facebook Page’s timeline, or a lead capture page (when you are aiming at lead capture, it is recommended that you set a landing page, instead of directing people to the timeline). Here’s how you can create one and the image on your right shows how your ad will look.

*Do go through these guidelines before you create your ad copy.*

FB-6

Step 6 – Choose your Audience

Next, you narrow down your target audience under the ‘Choose your audience’ category. Before we begin, in the image shown below, see the number of people under ‘Audience’ section before the filters have been set.

FB-7

This is the most important step, as this is where you choose your perfect target.

  1. Location: You can micro target by location (state/city/zip code). Ex: Students on Facebook giving GATE ‘14 exams will be India specific only. If you are a physical institute based in Bangalore, you might want to choose by city: Bangalore, Nelamangala, Hosur etc.
  2. Age: You can also target by age. Ex: GATE will mostly include students who have completed/ pursuing their B.Tech – 22-24 years.
  3. Gender: You can also choose gender, based on the kind of ad you are advertising. Here, since we are talking about exam specific ads, gender will be categorized as ‘All’.
  4. Precise Interests: Under the ‘Precise Interests’ section, you can choose interests that you are looking for in your target audience. In this case, your interests can be Engineering, IIT, studies etc. Once you have entered precise interest, you don’t have to choose the broader interest.

FB-8

If you have opted for the ‘Advanced options’ under the ad category, you can also detail down to relationship status, languages spoken, college attended and workplace.  By the process of trial and error, you can boil down your audience from a whopping 167 million users in the US to as few as 1 lakh people in India or a particular city.

Now, take a look at the image shown below which shows the targeted audience once the filters have been set.

FB-9

Step 7 – Campaign Pricing and Schedule Options

This step is ‘Campaign, Pricing and Schedule’ for your Facebook ad.

  1. Choose the currency, country and time zone in which you are placing your ad.
  2. The ‘New Campaign Name’ should be distinct and definite.
  3. Next, choose how much you are willing to spend for your ad campaign. You can choose from a daily budget or a lump sum amount that you will spend for as long as the ad runs. (Payments on Facebook are either pay-per-click – you pay every time someone clicks your ad or per thousand impressions – you pay every time 1000 people see your ad.) We have opted for the Pay-per-click payment service.

FB-10

Step 8 – Review your Ad

Once you ‘Review your ad’, you will be able to see the details of your ads that you have fed and how your ad will look. Next, you will be prompted to make payments for your ad. You can use a credit/debit card, PayPal or Facebook ad coupon.

FB-11

Facebook will hold your ad for review for a minimum of 24 hours. Your ad will either appear in news feeds or in the right column of any page in search results.Later, you can use the ‘Ads Manager tool’ to keep track of your ads’ progress.

So, this is how to create a Facebook ad: Basic News-feed ad. Be creative, think outside the box and you are good to go. For further queries, please do visit Facebook’s Help Centre or leave us a comment and we will get back to you ASAP.

 

My Photo

April 24, 2013 Leave a comment

Balt

PHP Innovation Award Winner of 2012

Lately-In-PHP-Podcast

The PHP Programming Innovation Award Winner of 2012 was announced. An interview with the winner, Karl Holz from Canada, was one of the main topics of the episode 33 of the Lately in PHP podcast conducted by Manuel Lemos and Ernani Joppert.

They also discussed the usual batch of PHP topics of interest like Zend Optimizer+ source code that was released, the PHP 5.5 feature freeze and roadmap, as well an article that compares PHP to an Hobbit, as well other languages to Lord Of The Rings story characters.

Listen to the podcast, or watch the podcast video, or read the transcript to learn about these and other interesting PHP topics.

Upload Cover Photo to Facebook via PHP

January 4, 2013 1 comment

Here is a tutorial to upload a Cover Photo on Facebook via PHP. We will need Facebook Application ID and Secret, and Facebook files from Github.com then upload to your web space only the src  folder. Now create a file called upload.php and upload it to your web space. Open upload.php with notepad and add this code:

<?php
 
ini_set('display_errors', 1);
 error_reporting(E_ALL);

 require 'src/facebook.php';

 $facebook = new Facebook(array(
 'appId' => "xxxxxxxxxxxxxxxxxxx", //Facebook App ID
 'secret' => "xxxxxxxxxxxxxxxxxxx", // Facebook App Secret
 "cookie" => true,
 'fileUpload' => true
 ));

 $user_id = $facebook->getUser();

 if($user_id == 0 || $user_id == "")
 {
 $login_url = $facebook->getLoginUrl(array(
 'redirect_uri' => 'https://selvabalaji.wordpress.com/upload.php?cover='.$_GET['cover'].'', // Replace with your site url
 'scope' => "publish_stream,user_photos"));

 echo "<script type='text/javascript'>top.location.href = '$login_url';</script>";
 exit();
 }

 //get user album
 $albums = $facebook->api("/me/albums");
 $album_id = ""; 
 foreach($albums["data"] as $item){
 if($item["type"] == "cover_photo"){
 $album_id = $item["id"];
 break;
 }
 }

 //set timeline cover atributes 
 $full_image_path = realpath($_GET['cover']);
 $args = array('message' => 'Uploaded from hhttps://selvabalaji.wordpress.com/');
 $args['image'] = '@' . $full_image_path;

 //upload cover photo to Facebook
 $data = $facebook->api("/me/photos", 'post', $args);
 $picture = $facebook->api('/'.$data['id']);

 $fb_image_link = 'http://www.facebook.com/profile.php?preview_cover='.$data['id'].''; //redirect to uploaded facebook cover and change it
 echo "<script type='text/javascript'>top.location.href = '$fb_image_link';</script>";
?>

Now that just type in the URL of your site followed by the name of the image file and you’re done!
Example : http://yoursitename.com/upload.php?cover=selvabalaji.gif

Today – WordPress New Version 3.5 Released

December 12, 2012 1 comment

On December 11, 2012, WordPress Version 3.5, named for jazz drummer Elvin Jones, was released to the public. For more information on this enhancement and bug-fix release, read the WordPress Blog, and see the Changelog for 3.5

 

Highlights

  • New Media Manager
    • Beautiful interface: A streamlined, all-new experience
    • Create galleries faster with drag-and-drop reordering, inline caption editing, and simplified controls
    • Insert multiple images at once with Shift/Ctrl+click
  • New Default Theme – Twenty Twelve
    • Simple, flexible, elegant
    • Mobile-first, responsive design
    • Gorgeous Open Sans typeface
    • Uses the latest Theme Features
  • Admin Enhancements
    • New Welcome Screen
    • Retina-Ready (HiDPI) Admin
    • Hide Link Manager for new installs
    • Better accessibility for screenreaders, touch devices, and keyboard users
    • More polish on admin screens, including a new color picker
  • For Developers
    • WP_Comment_Query and WP_User_Query accept now meta queries just like WP_Query
    • Meta queries now support querying for objects without a particular meta key
    • Post objects are now instances of a WP_Post class, which improves performance and caching
    • Multisite’s switch_to_blog() is now significantly faster and more reliable
    • WordPress has added the Underscore and Backbone JavaScript libraries
    • TinyMCE, jQuery, jQuery UI, and SimplePie have all been updated to the latest versions
    • Image Editing API for cropping, scaling, etc., that uses ImageMagick as well as GD
    • XML-RPC: Now always enabled and supports fetching users, managing post revisions, searching
    • New “show_admin_column” parameter for register_taxonomy() allows automatic creation of taxonomy columns on associated post-types.

What’s New

Dashboard

  • Switch to prompt text in QuickPress to accommodate longer translated input labels
  • Button styles updated throughout Dashboard to more modern, rectangular shape
  • Help Text improvements throughout

Posts

  • Rename the “HTML” editor tab to “Text”
  • Prevent child categories from being visually promoted to the top level after Quick Edit

Media

  • Add oEmbed suport for SoundCloud.com, SlideShare.net, and Instagram.com
  • New Media Manager: Insert multiple galleries per post and independently order images

Accessibility

  • Add visible focus within admin screens for better accessibility.
  • Add “Skip to content” link to all screens in the admin.
  • Add “Skip to toolbar” accessibility shortcut in the admin.
  • Add ability to log out of user account without mouse input.
  • Add “tab out” of the plugins and themes editors textareas.

Links

  • Link Manager is hidden for new installs and for any existing installs that have no links (all sites with existing links are left as is). This can be restored with Link Manager Plugin
  • Display links in widget if no link categories

Appearance

  • Widgets menu is hidden if your theme hasn’t defined any sidebars
  • Improve display of available custom headers with jQuery Masonry

Plugins

Users

  • Display name defaults to first name and last name for new users
  • Force the user to explicitly choose between content deletion and reassignment when deleting users

Settings

Multisite

  • Multisite installs now work with WordPress in a subdirectory
  • Turn off ms-files.php by default
  • File quotas disabled by default on new installs 

 

Today RAJINI’S BIRTHDAY 12-12-12

December 12, 2012 2 comments
English: Rajinikanth at the audio release of E...

English: Rajinikanth at the audio release of Enthiran (Photo credit: Wikipedia)

Superstar Rajinikanth celebrates his 60th birthday today and he will be spending the day with his family. Rajini’s birthday is no less than a festival for his fans the world over.

It is reported that his family and close friends have organized a Shashitabadapoorthi puja (60th birthday celebrations) at the famous Tirukkadiyur temple near Tiruchi. However, it should come to no one’s surprise that Rajini’s fans will be lining up for special poojas and welfare activities for their favourite idol.

Shivaji Rao Gaekwad was on December 12, 1949 and had very humble beginnings. He served as a ticket collector in a local shuttle bus in Bangalore when he was discovered by the legendary K. Balachander who renamed him Rajinikanth.

The year has been exceptional for Rajini. Breaking all box office records Endhiran has emerged as the biggest hit ever. There have also been two new additions to his family. Daughter Aishwarya Rajinikanth, who is married to actor Dhanush gave birth to a baby boy and his other daughter Soundarya Rajinikanth got married to industrialist Ashwin Kumar.

selvabalaji.wordpress.com  wishes Rajinikanth a very happy birthday!

 

Thupakki Songs

October 30, 2012 Leave a comment

 Thupakki Tamil Movie

01.Kutti Puli Koottam
Artist(s): Hariharan, Tippu, Narayana, Satyan, Ranina Reddy
Lyricist: Viveka

02.Antarctica
Artist(s): Vijay Prakash, Krish, Rajeev, Devan
Lyricist: Karky

03.Poi Varavaa
Artist(s): Karthik, Chinmayee
Lyricist: Pa. Vijay

04.Google Google
Artist(s): Vijay, Andrea Jeremiah, Joe, Krishna Iyer
Lyricist: Karky

05.Vennilave
Artist(s): Hariharan, Bombay Jayashri
Lyricist: Na. Muthukumar

06.Alaikaa Laikaa
Artist(s): Javed Ali, Sayanora Philip, Sharmila
Lyricist: Pa. Vijay

07. jagadish On Mission (Theme)

October 26, 2012 Leave a comment
MySQL

MySQL (Photo credit: Wikipedia)

This article teaches you how to create pagination like twitter using jquery, PHP and MySQL. The content can be loaded at the end of old content when we scroll the page. Your can create your own pagination after completing this article. It is very easy to implement, you can just copy and paste the code. Please follow the steps given below to create your won pagination style.

1. Create table in MySQL using following query statement

CREATE TABLE IF NOT EXISTS `job`  (  `job_id` INT(11) NOT 
 NULL AUTO_INCREMENT,    `job_name` INT(11) NOT NULL, 
 PRIMARY KEY (`job_id`)  )
 ENGINE=MYISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

2. Create database connection file ie connection.php

$DB_Username = "root";
  $DB_Password = "";
 $DB_DATABASE = "database_name";
 $DB_HOST     = "localhost";
  $Connect = @mysql_connect($DB_HOST, $DB_Username, $DB_Password)
 or die("Couldn't connect to MySQL:
" . mysql_error() . "
" . mysql_errno());
//select database 
$Db = @mysql_select_db($DB_DATABASE, $Connect)
 or die("Couldn't select database:
" . mysql_error(). "
" . mysql_errno());

3. Create index.php where you can write following codes

<?php
/*
Author: selvaBalaji
Email:selvabalaji@gmail.com
Date: oct 26 2012
*/
include(“connection.php”);
if(isset($_GET[‘lastID’]) && is_numeric($_GET[‘lastID’]))
$lastID =intval($_GET[‘lastID’]);
if(!isset($_GET[‘lastID’]))
{
?>
<!DOCTYPE html>
<html xmlns=”http://www.w3.org/1999/xhtml”&gt;
<head>
<script type=”text/javascript”
src=”http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js”&gt;
</script>
<style>
#loader {
border:1px solid #ccc;
padding:10px;
margin:10px 0 0 0;
text-align:center;
}
.contentpane{}
.rowHolder{
border:1px solid #ccc;
padding:10px;
margin:10px 0 0 0;
}
</style>
<script type=”text/javascript”>
$(document).ready(function(){
function lastRecord()
{
$(‘div#loader’).html(‘<img src=”loader.gif” alt=”Loading…”>’);
$.post(“index.php?lastID=”+$(“.contentpane table tr:last”).attr(“id”),
function(data){
if (data != “”) {
$(“.contentpane table tr:last”).after(data);
}
$(‘div#loader’).empty();
});
};
$(window).scroll(function(){
if ($(window).scrollTop() == $(document).height() – $(window).height()){
lastRecord();
}
});

});
</script>
</head>
<body>
<h1>Pagination </h1>
<p class=”hr” style=”padding:2px 0 2px 0;”></p>
<div class=”contentpane”>
<table width=”100%” border=”0″ cellpadding=”0″ cellspacing=”0″>
<?php
$sql=”SELECT * FROM job ORDER BY job_id DESC limit 30″;
$result = mysql_query($sql);
while($record = mysql_fetch_array($result))
{
$lastID = $record[‘job_id’];
?>
<tr id=”<?php echo $record[‘job_id’];?>”>
<td><div class=”rowHolder”><?php echo $record[‘job_name’];?></div></td>
</tr>
<?php
}
?>
</table>
</div>
<div id=”loader”></div>
</body>
</html>
<?php
}
else
{
$sql=”SELECT * FROM job WHERE job_id < $lastID
ORDER BY job_id DESC LIMIT 3″;
$result = mysql_query($sql);
while($record = mysql_fetch_array($result))
{
?>
<tr id=”<?php echo $record[‘job_id’];?>”>
<td><div class=”rowHolder”><?php echo $record[‘job_name’];?></div></td>
</tr>
<?php
}
}
?>

 

Unzip a Zip File in php

<!--?php

    function unzip($location,$newLocation){
        if(exec("unzip $location",$arr)){
            mkdir($newLocation);
            for($i = 1;$icount($arr);$i++){
                $file = trim(preg_replace("~inflating: ~","",$arr[$i]));
                copy($location.'/'.$file,$newLocation.'/'.$file);
                unlink($location.'/'.$file);
            }
            return TRUE;
        }else{
            return FALSE;
        }
    }
?>
//Use the code as following:
<!--?php
include 'functions.php';
if(unzip('zipedfiles/selvabalaji.zip','unziped/myNewZip'))
    echo 'Success!';
else
    echo 'Error';
?>

10 More Useful WordPress Code Snippets For Your Blog

July 6, 2012 1 comment

WordPress is the best open source sofware which is completely free to use.The advantage of being open source for a software is that developers can see its codes an write plugins to make it more functional.And also developers add or change small piece of codes especially in functions.php file to unleash the power of your favorite blogging engine.

In today’s post we are again sharing wordpress code snippets.I think you will find a useful wordpress code snippet for your wordpress blog.

You may also take a look at our past wordpress theme collections;

htaccess Gzip Compression

Add the following code in your .htaccess file.Gzip will drastically reduce HTTP response time.

# BEGIN GZIP

AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript

# END GZIP

Instructions:
Just add this to your .htaccess file. Gzip will drastically reduce HTTP response time.

How to Remove the Width and Height Attributes From WP Image Uploader

add_filter( ‘post_thumbnail_html’, ‘remove_width_attribute’, 10 );
add_filter( ‘image_send_to_editor’, ‘remove_width_attribute’, 10 );

function remove_width_attribute( $html ) {
$html = preg_replace( ‘/(width|height)=\”\d*\”\s/’, “”, $html );
return $html;
}

If you upload images via the WordPress image uploader and insert it into your post, it will include the image width and height attribute in the html tag. Here’s what it will look like.

In most cases, this is absolutely alright. However, if you are using a responsive theme or are dealing with responsive web design, the “width” and “height” attribute will be a major roadblock that you need to get rid of.

Here’s how you can do it.

1. Open your theme’s functions.php file.

2. Copy and paste the following code:
add_filter( ‘post_thumbnail_html’, ‘remove_width_attribute’, 10 );
add_filter( ‘image_send_to_editor’, ‘remove_width_attribute’, 10 );

function remove_width_attribute( $html ) {
$html = preg_replace( ‘/(width|height)=\”\d*\”\s/’, “”, $html );
return $html;
}

3. Save the changes.

That’s it. Next time when you insert image into the post via the WP image uploader, the width and height attribute will no longer be there.

How to Change the Font in HTML Editor In WordPress 3.3

add_action( ‘admin_head-post.php’, ‘wpdb_fix_html_editor_font’ );
add_action( ‘admin_head-post-new.php’, ‘wpdb_fix_html_editor_font’ );

function wpdb_fix_html_editor_font() { ?>

<!–?php }

Add/remove Contact Info Fields

To add or remove fields from this section, just add the following to your functions.php.

Login with Username or Email Address

Adding this snippet to the functions.php of your wordpress theme will let users login using an email address or a username. The second snippet will change the text on the login page from “username” to “username / email” but feel free to change the login text to anything you would like.

function login_with_email_address($username) {
$user = get_user_by(’email’,$username);
if(!empty($user->user_login))
$username = $user->user_login;
return $username;
}
add_action(‘wp_authenticate’,’login_with_email_address’);
function change_username_wps_text($text){
if(in_array($GLOBALS[‘pagenow’], array(‘wp-login.php’))){
if ($text == ‘Username’){$text = ‘Username / Email’;}
}
return $text;
}
add_filter( ‘gettext’, ‘change_username_wps_text’ );

Add PayPal Donate Button

Add this snippet to the functions.php to add ‘Donate’ Button on your WordPress Website

// paypal donate button
function cwc_donate_shortcode( $atts ) {
extract(shortcode_atts(array(
‘text’ => ‘Make a donation’,
‘account’ => ‘REPLACE ME’,
‘for’ => ”,
), $atts));
global $post;
if (!$for) $for = str_replace(” “,”+”,$post->post_title);
return ‘‘.$text.’‘;
}
add_shortcode(‘donate’, ‘cwc_donate_shortcode’);

India soon to be the biggest source of PHP developers?

English: India. Area controlled by India in da...

The number of Indian PHP developers has been growing at a large pace in the last few years, when compared to other countries. A few years ago, India was just one of the top ten countries with more PHP developers. Now India is number 2 and is almost surpassing United States, which is still number 1.

While it is difficult to take such broad conclusions seriously based on member statistics of a single community, PHPClasses does have a large user base and can arguably be considered representative. Any article tagged India and software these days attract the usual crap about how Indian developers are the worst and how everybody who outsources to India never does it again. So I was surprised when some of the usually ‘silent’ majority of the client base who continue outsourcing development to India came out to defend their decision.

I did come away with a very interesting statistic; Indian developers have won most awards this year for their contribution against sizable competition. Most Indian developers I meet have difficulty understanding the concept of giving back to the community, so it’s always refreshing to see a number of people doing exactly that.

Import Yahoo contact to website / download CSV

June 28, 2012 1 comment

Image representing OAuth as depicted in CrunchBase

Written in PHP and using cURL, this script imports the names and email addresses from your yahoo account (yahoo id and password needed to login to yahoo from the script and retreive the address book).

<!–?php–>
ob_start();
session_start();
require ‘globals.php’;
require ‘oauth_helper.php’;
require ‘yahoo_function.php’;

// Callback can either be ‘oob’ or a url whose domain must match
// the domain that you entered when registering your application

$callback='<your call back URL>’;

if($_REQUEST[‘oauth_verifier’] != ”) {
$request_token = $_REQUEST[‘oauth_token’];
$oauth_verifier = $_REQUEST[‘oauth_verifier’];
$request_token_secret = $_SESSION[‘request_token_secret’];

$accessToken = get_access_token(OAUTH_CONSUMER_KEY, OAUTH_CONSUMER_SECRET,$request_token, $request_token_secret,$oauth_verifier, false, true, true);

$access_token = urldecode($accessToken[3][‘oauth_token’]);
$access_token_secret = urldecode($accessToken[3][‘oauth_token_secret’]);
$guid = $accessToken[3][‘xoauth_yahoo_guid’];

$callcont = callcontact(OAUTH_CONSUMER_KEY, OAUTH_CONSUMER_SECRET, $guid, $access_token, $access_token_secret, false, true);
print ‘Total Email COntact :’ .$callcont[‘contacts’][‘total’];
print ‘<br/><br/>’;

print ‘asda’.($callcont[‘contacts’][‘total’]);
for($i=0; $i<=$callcont[‘contacts’][‘total’];$i++) {
print ‘<br/><br/>’;
print $callcont[‘contacts’][‘contact’][$i][‘fields’][0][‘value’];
print ‘<br/><br/>’;
}

}else{

$retarr = get_request_token(OAUTH_CONSUMER_KEY, OAUTH_CONSUMER_SECRET,$callback, false, true, true);

if (! empty($retarr)){
$request_token = $retarr[3][‘oauth_token’];
$request_token_secret = $retarr[3][‘oauth_token_secret’];
$request_url = urldecode($retarr[3][‘xoauth_request_auth_url’]);
$_SESSION[‘request_token_secret’] = $request_token_secret;
header(“location:https://api.login.yahoo.com/oauth/v2/request_auth?oauth_token=&#8221;.$request_token);
}
exit(0);
}
?>

Yahoo_function.php

<?php

function get_request_token($consumer_key, $consumer_secret, $callback, $usePost=false, $useHmacSha1Sig=true, $passOAuthInHeader=false)
{
$retarr = array(); // return value
$response = array();

$url = ‘https://api.login.yahoo.com/oauth/v2/get_request_token&#8217;;
$params[‘oauth_version’] = ‘1.0’;
$params[‘oauth_nonce’] = mt_rand();
$params[‘oauth_timestamp’] = time();
$params[‘oauth_consumer_key’] = $consumer_key;
$params[‘oauth_callback’] = $callback;

// compute signature and add it to the params list
if ($useHmacSha1Sig) {
$params[‘oauth_signature_method’] = ‘HMAC-SHA1‘;
$params[‘oauth_signature’] =
oauth_compute_hmac_sig($usePost? ‘POST‘ : ‘GET’, $url, $params,
$consumer_secret, null);
} else {
$params[‘oauth_signature_method’] = ‘PLAINTEXT‘;
$params[‘oauth_signature’] =
oauth_compute_plaintext_sig($consumer_secret, null);
}

// Pass OAuth credentials in a separate header or in the query string
if ($passOAuthInHeader) {

$query_parameter_string = oauth_http_build_query($params, FALSE);

$header = build_oauth_header($params, “yahooapis.com”);
$headers[] = $header;
} else {
$query_parameter_string = oauth_http_build_query($params);
}

// POST or GET the request
if ($usePost) {
$request_url = $url;
logit(“getreqtok:INFO:request_url:$request_url”);
logit(“getreqtok:INFO:post_body:$query_parameter_string”);
$headers[] = ‘Content-Type: application/x-www-form-urlencoded‘;
$response = do_post($request_url, $query_parameter_string, 443, $headers);
} else {
$request_url = $url . ($query_parameter_string ?
(‘?’ . $query_parameter_string) : ” );

logit(“getreqtok:INFO:request_url:$request_url”);

$response = do_get($request_url, 443, $headers);

}

// extract successful response
if (! empty($response)) {
list($info, $header, $body) = $response;
$body_parsed = oauth_parse_str($body);
if (! empty($body_parsed)) {
logit(“getreqtok:INFO:response_body_parsed:”);

}
$retarr = $response;
$retarr[] = $body_parsed;
}

return $retarr;
}
function get_access_token($consumer_key, $consumer_secret, $request_token, $request_token_secret, $oauth_verifier, $usePost=false, $useHmacSha1Sig=true, $passOAuthInHeader=true)
{
$retarr = array(); // return value
$response = array();

$url = ‘https://api.login.yahoo.com/oauth/v2/get_token&#8217;;
$params[‘oauth_version’] = ‘1.0’;
$params[‘oauth_nonce’] = mt_rand();
$params[‘oauth_timestamp’] = time();
$params[‘oauth_consumer_key’] = $consumer_key;
$params[‘oauth_token’]= $request_token;
$params[‘oauth_verifier’] = $oauth_verifier;

// compute signature and add it to the params list
if ($useHmacSha1Sig) {
$params[‘oauth_signature_method’] = ‘HMAC-SHA1’;
$params[‘oauth_signature’] =
oauth_compute_hmac_sig($usePost? ‘POST’ : ‘GET’, $url, $params,
$consumer_secret, $request_token_secret);
} else {
$params[‘oauth_signature_method’] = ‘PLAINTEXT’;
$params[‘oauth_signature’] =
oauth_compute_plaintext_sig($consumer_secret, $request_token_secret);
}

// Pass OAuth credentials in a separate header or in the query string
if ($passOAuthInHeader) {
$query_parameter_string = oauth_http_build_query($params, false);
$header = build_oauth_header($params, “yahooapis.com”);
$headers[] = $header;
} else {
$query_parameter_string = oauth_http_build_query($params);
}

// POST or GET the request
if ($usePost) {
$request_url = $url;
logit(“getacctok:INFO:request_url:$request_url”);
logit(“getacctok:INFO:post_body:$query_parameter_string”);
$headers[] = ‘Content-Type: application/x-www-form-urlencoded’;
$response = do_post($request_url, $query_parameter_string, 443, $headers);
} else {
$request_url = $url . ($query_parameter_string ?
(‘?’ . $query_parameter_string) : ” );
logit(“getacctok:INFO:request_url:$request_url”);
$response = do_get($request_url, 443, $headers);
}

// extract successful response
if (! empty($response)) {
list($info, $header, $body) = $response;
$body_parsed = oauth_parse_str($body);
if (! empty($body_parsed)) {
logit(“getacctok:INFO:response_body_parsed:”);
//print_r($body_parsed);
}
$retarr = $response;
$retarr[] = $body_parsed;
}
return $retarr;
}
function callcontact($consumer_key, $consumer_secret, $guid, $access_token, $access_token_secret, $usePost=false, $passOAuthInHeader=true)
{
$retarr = array(); // return value
$response = array();

$url = ‘http://social.yahooapis.com/v1/user/&#8217; . $guid . ‘/contacts’;

$params[‘format’] = ‘json’;
$params[‘view’] = ‘compact’;
$params[‘oauth_version’] = ‘1.0’;
$params[‘oauth_nonce’] = mt_rand();
$params[‘oauth_timestamp’] = time();
$params[‘oauth_consumer_key’] = $consumer_key;
$params[‘oauth_token’] = $access_token;

// compute hmac-sha1 signature and add it to the params list
$params[‘oauth_signature_method’] = ‘HMAC-SHA1’;
$params[‘oauth_signature’] =
oauth_compute_hmac_sig($usePost? ‘POST’ : ‘GET’, $url, $params,
$consumer_secret, $access_token_secret);

// Pass OAuth credentials in a separate header or in the query string
if ($passOAuthInHeader) {
$query_parameter_string = oauth_http_build_query($params, true);
$header = build_oauth_header($params, “yahooapis.com”);
$headers[] = $header;
} else {
$query_parameter_string = oauth_http_build_query($params);
}

// POST or GET the request
if ($usePost) {
$request_url = $url;
logit(“callcontact:INFO:request_url:$request_url”);
logit(“callcontact:INFO:post_body:$query_parameter_string”);
$headers[] = ‘Content-Type: application/x-www-form-urlencoded’;
$response = do_post($request_url, $query_parameter_string, 80, $headers);
} else {
$request_url = $url . ($query_parameter_string ?
(‘?’ . $query_parameter_string) : ” );
logit(“callcontact:INFO:request_url:$request_url”);
$response = do_get($request_url, 80, $headers);
}

// extract successful response
if (! empty($response)) {
list($info, $header, $body) = $response;
if ($body) {
logit(“callcontact:INFO:response:”);

json_pretty_print($body);

}
$retarr = $response;
}
$contactsRes = json_decode($retarr[2],true);
return $contactsRes;
}
?>

Microsoft‘s tablet no threat to iPad: analysts

Image representing iPad as depicted in CrunchBase

Image via CrunchBase

Microsoft Corp‘s new tablet computers are no threat to Apple Inc‘s iPad, given the lack of enthusiasm among developers to create applications that run on the new Windows operating system, analysts said.

Microsoft introduced its own “Surface” line of tablets on Monday, taking on Apple as well as its own hardware partners including Samsung Electronics Co Ltd and Hewlett-Packard Co.

“Though pricing details are unclear … Microsoft will need to significantly undercut the iPad to be competitive,” Jefferies analyst Peter Misek said.

The Surface tablet will come in two versions, one running Windows RT, based on the same chip designs that power most tablets, and a higher-performance version running Windows 8 Pro.

“The most important factor in the success of a tablet is its ecosystem. Based on our discussions with developers, we find the lack of enthusiasm concerning,” Misek said.

Misek said he expects Windows 8 tablets to struggle to compete with the iPad, which offers over 225,000 apps, and to a lesser extent with Google Inc‘s Android-based tablets, such as the Galaxy Tab.

Microsoft’s lighter, thinner version of the Surface tablet would compete directly with the iPad, while the second, heavier tablet, aimed at the new generation of lightweight laptops, would compete with larger PC makers.

But selling two versions of the tablet in the same retail channels will confuse consumers, said analysts at Jefferies, Forrester Research and ThinkEquity.

“Choice is a key tenet of Windows, but too much choice is overwhelming for consumers,” Forrester Research said. “Apple gets this, and limits iPad options to connectivity, storage, and black … or white.”

However, a keyboard that doubles up as the tablet cover and aggressive pricing could help Microsoft gain market share, some analysts said.

“The keyboard, a simple accessory, is what makes the device most compelling, as it preserves traditional interface that we believe many users appreciate (and will demand) with the subtlety of a cover, something most users will want anyway,” said Citi analyst Walter Pritchard.

Morgan Stanley’s Adam Holt said the cover keyboard, compatibility with Microsoft Office, integrated USB ports and features optimized for Skype would help Microsoft differentiate itself from other tablet makers.

Microsoft shares edged up 19 cents to $30.03 on Tuesday before the bell. They closed at $29.84 on Monday on the Nasdaq.