joi, 7 septembrie 2017

Multiple Series Line Chart with PHPExcel

Below is a sample piece of script which creates a multiple lines (multi - series) chart with the PHPExcel library:


  $dataSeriesLabels = array();
  $xAxisTickValues = array();
  $dataSeriesValues = array();
  $series = array();
  $dataPointCount =  8 /* the count of datapoints: $by-2 to $by+5 inclusive */;
  for ($i=0; $i<=4; $i++)
  {
   $r = 35+$i;
   $dataSeriesLabels[$i] = new \PHPExcel_Chart_DataSeriesValues('String', $sheetTitle.'!$B$'.$r, NULL, 1);
   $xAxisTickValues[$i] = new \PHPExcel_Chart_DataSeriesValues('Number', $sheetTitle.'!$C$34:$J$34', NULL, $dataPointCount);
   $dataSeriesValues[$i] = new \PHPExcel_Chart_DataSeriesValues('Number', $sheetTitle.'!$C$'.$r.':$J$'.$r, NULL, $dataPointCount);
  }
  $series[0] = new \PHPExcel_Chart_DataSeries(
   \PHPExcel_Chart_DataSeries::TYPE_LINECHART,  // plotType
   \PHPExcel_Chart_DataSeries::GROUPING_STANDARD,  // plotGrouping
   range(0, count($dataSeriesValues) - 1),   // plotOrder
   $dataSeriesLabels,        // plotLabel
   $xAxisTickValues,        // plotCategory
   $dataSeriesValues         // plotValues
  );
  $series[0]->setPlotDirection(\PHPExcel_Chart_DataSeries::DIRECTION_HORIZONTAL);

  //  Set the series in the plot area
  $plotarea = new \PHPExcel_Chart_PlotArea(NULL, $series);
  //  Set the chart legend
  $legend = new \PHPExcel_Chart_Legend(\PHPExcel_Chart_Legend::POSITION_RIGHT, NULL, false);
  $title = new \PHPExcel_Chart_Title('');

  //  Create the chart
  $chart = new \PHPExcel_Chart(
    'chart1', // name
    $title, // title
    $legend, // legend
    $plotarea, // plotArea
    true, // plotVisibleOnly
    0, // displayBlanksAs
    NULL, // xAxisLabel
    NULL   // yAxisLabel
  );

  $chart->setTopLeftPosition('L31');
  $chart->setBottomRightPosition('AC43');
  $objWorksheet->addChart($chart);
  header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
  header('Content-Disposition: attachment;filename="'.$fname.'"');
  header('Cache-Control: max-age=0');

  // Do your stuff here
  $writer = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
  //PHPExcel_Writer_Excel2007
  $writer->setIncludeCharts(TRUE);


  $writer->save('php://output');

vineri, 10 martie 2017

Sample sr_feuser_register typo3 template configuration.

From http://lists.typo3.org/pipermail/typo3-english/2006-September/030773.html A sample good configuration of sr_feuser_register : # ---------- front-end user registration CONSTANTS ----------- # --- folder where FE users are contained --- plugin.tx_srfeuserregister_pi1.pid = 1826 # --- different groups: unprivilaged users --- plugin.tx_srfeuserregister_pi1.userGroupUponRegistration = 1 # --- different groups: privilaged users --- plugin.tx_srfeuserregister_pi1.userGroupAfterConfirmation = 2 # --- page ID of page with login box and FE registration (Login) -- plugin.tx_srfeuserregister_pi1.loginPID = 1822 # --- page ID of second page with FE registration (Second Page) -- plugin.tx_srfeuserregister_pi1.registerPID = 1825 # --- page ID of third page with FE registration (Third Page) -- plugin.tx_srfeuserregister_pi1.editPID = 1828 # --- page ID of fourth page with FE registration (Fourth Page) -- plugin.tx_srfeuserregister_pi1.confirmPID = 1829 plugin.tx_srfeuserregister_pi1.formFields = username, password, gender, first_name,last_name, email, address, city, zip, telephone, fax, title, company, www,module_sys_dmail_html, image, disable, comments plugin.tx_srfeuserregister_pi1.requiredFields = username,password,first_name,last_name,email,comments # ---------- front-end user registration SETUP ----------- # -------------- sr_feuser_register (start) -------------- plugin.tx_srfeuserregister_pi1 { templateFile = {$plugin.tx_srfeuserregister_pi1.file.templateFile} wrap1.wrap = {$plugin.tx_srfeuserregister_pi1.wrap1} wrap2.wrap = {$plugin.tx_srfeuserregister_pi1.wrap2} wrap3.wrap = {$plugin.tx_srfeuserregister_pi1.wrap3} color1.wrap = {$plugin.tx_srfeuserregister_pi1.color1} color2.wrap = {$plugin.tx_srfeuserregister_pi1.color2} color3.wrap = {$plugin.tx_srfeuserregister_pi1.color3} icon_delete = {$plugin.tx_srfeuserregister_pi1.file.icon_delete} pid = {$plugin.tx_srfeuserregister_pi1.pid} registerPID = {$plugin.tx_srfeuserregister_pi1.registerPID} editPID = {$plugin.tx_srfeuserregister_pi1.editPID} confirmPID = {$plugin.tx_srfeuserregister_pi1.confirmPID} confirmType = {$plugin.tx_srfeuserregister_pi1.confirmType} loginPID = {$plugin.tx_srfeuserregister_pi1.loginPID} defaultCODE = {$plugin.tx_srfeuserregister_pi1.defaultCODE} formName = {$plugin.tx_srfeuserregister_pi1.formName} onChangeCountryAttribute = {$plugin.tx_srfeuserregister_pi1.onChangeCountryAttribute} # you may modify here the conditions under which an attachment file will be added to the email addAttachment = {$plugin.tx_srfeuserregister_pi1.enableEmailAttachment} addAttachment.cmd = setfixed addAttachment.sFK = APPROVE addAttachment.file = {$plugin.tx_srfeuserregister_pi1.file.attachmentFile} create = 1 create { preview = {$plugin.tx_srfeuserregister_pi1.enablePreviewRegister} fields = {$plugin.tx_srfeuserregister_pi1.formFields} required = {$plugin.tx_srfeuserregister_pi1.requiredFields} defaultValues { redemptionCode = module_sys_dmail_html = 1 disable = {$plugin.tx_srfeuserregister_pi1.enableEmailConfirmation} } overrideValues { # usergroup = {$plugin.tx_srfeuserregister_pi1.userGroupUponRegistration} disable = {$plugin.tx_srfeuserregister_pi1.enableEmailConfirmation} processed = 0 paid = 0 } evalValues { password = twice, atLeast[{$plugin.tx_srfeuserregister_pi1.passwordAtLeast}], atMost[{$plugin.tx_srfeuserregister_pi1.passwordAtMost}] username = uniqueLocal, atLeast[{$plugin.tx_srfeuserregister_pi1.usernameAtLeast}], atMost[{$plugin.tx_srfeuserregister_pi1.usernameAtMost}] usergroup = # email = email,atMost[255],uniqueLocal email = email,atMost[255] name = atMost[{$plugin.tx_srfeuserregister_pi1.nameAtMost}] first_name = atMost[50] last_name = atMost[50] date_of_birth = date company = atMost[50] city = atMost[40] zip = atMost[20] telephone = atMost[25] fax = atMost[25] image = upload title = address = www = wwwURL payment_method = zone = pco cc_number = creditcard,atMost[20] cc_expiry = expiry,atMost[7] cc_name = atMost[255],trim cc_type = atMost[20] ach_routing = routing,atMost[9] ach_account = int,atMost[17] join_agree = referrer_uri = starttime = endtime = redemptionCode = redemptionCode tt_products = tx_securityquestion_question = int tx_securityquestion_answer = atMost[255],trim } } setfixed = {$plugin.tx_srfeuserregister_pi1.enableEmailConfirmation} setfixed.APPROVE { _FIELDLIST = uid,pid,usergroup # usergroup = {$plugin.tx_srfeuserregister_pi1.userGroupAfterConfirmation} disable = 0 } enableAutoLoginOnConfirmation = {$plugin.tx_srfeuserregister_pi1.enableAutoLoginOnConfirmation} autoLoginRedirect_url = {$plugin.tx_srfeuserregister_pi1.autoLoginRedirect_url} setfixed.DELETE { _FIELDLIST = uid,pid } authcodeFields = {$plugin.tx_srfeuserregister_pi1.authcodeFields} authcodeFields.codeLength = {$plugin.tx_srfeuserregister_pi1.codeLength} invite < .create edit < .create edit { preview = {$plugin.tx_srfeuserregister_pi1.enablePreviewEdit} defaultValues { disable = 0 module_sys_dmail_html > } overrideValues { usergroup > disable = 0 } evalValues { usergroup = unsetEmpty } } infomail = 0 forceFileDelete = {$plugin.tx_srfeuserregister_pi1.forceFileDelete} parseValues { username = nospace,trim usergroup = trim email = lower,nospace,trim password = trim,nospace name = trim first_name = trim last_name = trim date_of_birth = date title = trim company = trim city = trim zip = image = files module_sys_dmail_html = setEmptyIfAbsent www = wwwURL zone = cc_number = trim cc_expiry = cc_name = trim cc_type = trim payment_method = trim ach_routing = trim ach_account = trim join_agree = trim referrer_uri = trim starttime = trim endtime = trim redemptionCode = tt_products = tx_securityquestion_question = tx_securityquestion_answer = trim } parseFromDBValues { date_of_birth = adodb_date } parseToDBValues { date_of_birth = adodb_date } email.from = {$plugin.tx_srfeuserregister_pi1.email} email.fromName = {$plugin.tx_srfeuserregister_pi1.siteName} email.admin = {$plugin.tx_srfeuserregister_pi1.email} email.field = email email.HTMLMail = {$plugin.tx_srfeuserregister_pi1.enableHTMLMail} email.HTMLMailCSS = {$plugin.tx_srfeuserregister_pi1.HTMLMailCSS} email.CREATE_SAVED = {$plugin.tx_srfeuserregister_pi1.enableEmailOnRegister} email.EDIT_SAVED = {$plugin.tx_srfeuserregister_pi1.enableEmailOnUpdate} email.DELETE_SAVED = {$plugin.tx_srfeuserregister_pi1.enableEmailOnDelete} email.SETFIXED_APPROVE = {$plugin.tx_srfeuserregister_pi1.enableEmailOnApprove} email.SETFIXED_DELETE = {$plugin.tx_srfeuserregister_pi1.enableEmailOnRefuse} notify.CREATE_SAVED = {$plugin.tx_srfeuserregister_pi1.enableAdminNotifyOnRegister} notify.EDIT_SAVED = {$plugin.tx_srfeuserregister_pi1.enableAdminNotifyOnUpdate} notify.DELETE_SAVED = {$plugin.tx_srfeuserregister_pi1.enableAdminNotifyOnDelete} notify.SETFIXED_CREATE = {$plugin.tx_srfeuserregister_pi1.enableAdminNotifyConfirmation} notify.SETFIXED_INVITE = {$plugin.tx_srfeuserregister_pi1.enableAdminNotifyConfirmation} notify.SETFIXED_APPROVE = {$plugin.tx_srfeuserregister_pi1.enableAdminNotifyOnApprove} notify.SETFIXED_DELETE = {$plugin.tx_srfeuserregister_pi1.enableAdminNotifyOnRefuse} ccAllowedTypes = {$plugin.tx_srfeuserregister_pi1.ccAllowedTypes} tempuserTimelimit = {$plugin.tx_srfeuserregister_pi1.tempuserTimelimit} timelimit = {$plugin.tx_srfeuserregister_pi1.timelimit} enableAutoLoginTempuser = {$plugin.tx_srfeuserregister_pi1.enableAutoLoginTempuser} enableAutoLogin = {$plugin.tx_srfeuserregister_pi1.enableAutoLogin} enableCreditcardSave = {$plugin.tx_srfeuserregister_pi1.enableCreditcardSave} userGroupUponRegistration = {$plugin.tx_srfeuserregister_pi1.userGroupUponRegistration} dropFields = {$plugin.tx_srfeuserregister_pi1.dropFields} corporateGroup = 16 professionalGroup = 2 complimentaryGroup = 4 memberGroup = 1 corporateMembershipCharge = 2000 professionalMembershipCharge = 249 corporateMembershipProductID = 8 professionalMembershipProductID = 13 _CSS_DEFAULT_STYLE ( .tx-srfeuserregister-pi1 P { font-family:Verdana, sans-serif; font-size:12px; line-height:125%; color:#35006d; margin-top:8px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; padding-right:3px; padding-left:3px; text-indent:0px; } .tx-srfeuserregister-pi1 A:link { background-color:transparent; color:navy; text-decoration:none; font-weight:bold;} .tx-srfeuserregister-pi1 A:visited { background-color:transparent; color:navy; font-weight:bold; text-decoration:none; } .tx-srfeuserregister-pi1 A:hover { background-color:transparent; color:#333333; text-decoration:none; } .tx-srfeuserregister-pi1 A:active { background-color:transparent; color:navy; font-weight:bold; text-decoration:none; } .tx-srfeuserregister-pi1 TD { vertical-align:top; font-family:Verdana, sans-serif; font-size:12px; line-height:125%; color:#35006d; margin-top:8px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; padding-right:3px; padding-left:3px; text-indent:0px;} .tx-srfeuserregister-pi1 INPUT { font-size:10px; font-family:Verdana; background-color:#35006d; color:#ffffff; font-weight:bold; } .tx-srfeuserregister-pi1 INPUT.tx-srfeuserregister-pi1-submit { font-size:10px; font-family:Verdana; background-color:#35006d; color:#ffffff; font-weight:bold; } .tx-srfeuserregister-pi1 INPUT.tx-srfeuserregister-pi1-uploader { font-size:10px; font-family:Verdana; background-color:#35006d; color:#ffffff; font-weight:bold; } .tx-srfeuserregister-pi1 INPUT.tx-srfeuserregister-pi1-icon { font-size:10px; font-family:Verdana; background-color:transparent;} .tx-srfeuserregister-pi1 SELECT { font-size:10px; font-family:Verdana; background-color:#35006d; color:#ffffff; font-weight:bold; } .tx-srfeuserregister-pi1 TEXTAREA { font-size:10px; font-family:Verdana; background-color:#35006d; color:#ffffff; font-weight:bold; } .tx-srfeuserregister-pi1 .tx-srfeuserregister-pi1-radio INPUT { font-size:10px; font-family:Verdana; background-color:transparent; color:#35006d; font-weight:bold; vertical-align:middle; } .tx-srfeuserregister-pi1 .tx-srfeuserregister-pi1-checkbox INPUT { font-size:10px; font-family:Verdana; background-color:transparent; color:#35006d; font-weight:bold; vertical-align:middle; } ) _DEFAULT_PI_VARS { } enableCanspamLogging = {$plugin.tx_srfeuserregister_pi1.enableCanspamLogging} } # -------------- sr_feuser_register (end) --------------

marți, 7 martie 2017

Typo3 hook when user logs in

best is to have your own extension under a folder like vendor_name (notice the underscore and the camelcasing below). in your extensions ext_localconf.php, configure your hook like: // hooks when logging in $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_userauth.php']['postUserLookUp'][] = 'VendorName\Classes\Hooks\AfterRegistrationHook->postLogin'; and our file vendor_name/Classes/Hooks/AfterRegistrationHook.php should look like:
function postLogin(&$params, &$pObj) {
  if ($pObj->loginType === 'FE' &&
            $pObj->loginFailure === false &&
            is_array($pObj->user) &&
            $pObj->loginSessionStarted === true
        ) {
   print_r($params);
   die("here we are just after the user has logged in");


        }

 }