Jump to content
Sign in to follow this  

[IPS Marketplace] Power Tools

Recommended Posts

Power Tools


Power Tools is a third party command line utility for Invision Power Suite developers. It aims to aid in development by packaging several useful command line script and applications together in one easy to use application.


If you are on Linux, there is an optional executable included in the release package which you can extract and copy to /usr/local/bin for convenience.

Otherwise, just extract the included ptools.phar file to the directory of your IPS installation. Then, from your terminal window, navigate to the applications directory and run ptools.phar as you would any other PHP script from the command line,

$ php ptools.phar 
Power Tools version 0.2

  command [options] [arguments]

  -h, --help            Display this help message
  -q, --quiet           Do not output any message
  -V, --version         Display this application version
      --ansi            Force ANSI output
      --no-ansi         Disable ANSI output
  -n, --no-interaction  Do not ask any interactive question
  -v|vv|vvv, --verbose  Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

Available commands:
  classmap                  Generate a map of error codes for classes in an IPS application
  help                      Displays help for a command
  list                      Lists commands
  tinker                    Launches an interactive shell interpreter for an IPS installation
  generate:activerecord     Generates an Active Record boilerplate class
  generate:content-comment  Generates a Content Comment boilerplate class
  generate:content-item     Generates a Content Item boilerplate class
  generate:content-node     Generates a Content Node boilerplate class
  proxy:regen               (Re)generates all proxy classes for the application



Tinker is one of Power Tools most.. well, powerful features! The name tinker was inspired by Laravel's own "tinker" command, and it essentially operates in the same manner.

Both are powered by PsySH, an application that provides an extremely powerful PHP REPL for your applications.

Stop making your life difficult by executing arbitrary code in random modules for testing, or worse yet, actually trying to use the native PHP CLI interpreter.

Need to test if your Item class is working correctly? Just pop into the REPL and give it a whirl! Tinker - Item Class

Everything in the tinker shell essentially works as your application does when run through the web browser. You can even get documentation on class methods right from within the interpreter,

Tinker - Documentation

PsySh is a truly awesome tool. To learn more about it and all the features it offers you, check it out on PsySh.org.

Proxy Classes

Due to the nature of the IPS 4.x framework, several useful features of your IDE may become non-functional (suggestions, code completion, etc). This command will generate proxy classes for IPS (including 3rd-party applications), so your IDE will know how to use IPS style classes.

Proxy Class Generator

The proxy class generator can even automagically generate property mappings to all your database columns!

Proxy Class Generator - Properties

Class Generators

Power Tools comes with several powerful and fully featured class generators for IPS Nodes, Items, Comments and generic Active Record classes. These generators take care of all the necessary boilerplate for you automatically.

For example, generating a new Content Item class is as simple as running a single command and following the on-screen input prompts: Item Class Generator


namespace IPS\induction\Test;

/* To prevent PHP errors (extending class does not exist) revealing path */
if ( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
    header( ( isset( $_SERVER[ 'SERVER_PROTOCOL' ] ) ? $_SERVER[ 'SERVER_PROTOCOL' ] : 'HTTP/1.0' ) . ' 403 Forbidden' );

class _Item extends \IPS\Content\Item
     * @brief   Application
    public static $application = 'induction';

     * @brief   Module
    public static $module = 'induction';

     * @brief   Database Table
    public static $databaseTable = 'induction_items';

     * @brief   Database Prefix
    public static $databasePrefix = '';

     * @brief   Multiton Store
    protected static $multitons;

     * @brief   [ActiveRecord] ID Database Column
    public static $databaseColumnId = 'id';

     * @brief   Default Values
    protected static $defaultValues = NULL;

     * @brief   Node Class
    public static $containerNodeClass = NULL;

     * @brief   Comment Class
    public static $commentClass = NULL;

     * @brief   Review Class
    public static $reviewClass = NULL;

     * @brief   Database Column Map
    public static $databaseColumnMap = array(
        'container'         => 'category_id',
        'author'            => 'author_id',
        'views'             => 'views',
        'title'             => 'title',
        'content'           => 'content',
        'num_comments'      => 'num_comments',
        'last_comment'      => 'last_comment',
        'last_comment_by'   => 'last_comment_by',
        'last_comment_name' => 'last_comment_name',
        'last_review'       => 'last_review',
        'date'              => 'date',
        'updated'           => 'updated',
        'approved'          => 'approved',
        'approved_by'       => 'approved_by',
        'approved_date'     => 'approved_date',
        'pinned'            => 'pinned',
        'featured'          => 'featured',
        'locked'            => 'locked',
        'ip_address'        => 'ipaddress'

     * @brief   Title
    public static $title = NULL;

     * @brief   Icon
    public static $icon = 'file';

     * @brief   [Content] Key for hide reasons
    public static $hideLogKey = NULL;

     * @brief   Form Lang Prefix
    public static $formLangPrefix = 'induction_';

     * @brief   Reputation Type
    public static $reputationType = 'id';

Class Mapping

The classmap command maps unique ID numbers to your applications class files. These ID numbers are then stored and maintained for use in error codes.

By maintaining and actively using a proper error code scheme, you can easily and transparently map the location of errors that are triggered in production.

For more information on this feature, refer to the original Classmap script.

Class Mapping

Pobierz plik

Share this post

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Create New...

Important Information

W celu świadczenie usług przez nasz Serwis na najwyższym poziomie, w ramach Serwisu wykorzystujemy pliki Cookies (tzw. ciasteczka). Korzystając ze stron Serwisu IPSBEYOND.PL bez zmiany ustawień przeglądarki będą one zapisane w pamięci urządzenia. Jeżeli nie dokonacie Państwo zmiany ustawień przeglądarki internetowej to wyrażacie zgodę na zapisywanie plików Cookies.